Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Modelo Relacional
clientes ( rut, verificador, codigo, nombres, apellido_paterno, apellido_materno)
empresa ( id_empresa, nombre)
vendedores ( id_vendedor, nombres, apellidos, id_empresa)
productos ( id_producto, nombre_producto, descripcion, fecha_compra, precio, interes, rut,
id_vendedor)
cuotas ( id_cuota)
detalle_cuota ( id_producto, id_cuota, total_por_cuota, fecha_vencimiento, numero_cuota, estado)
Script de la base datos creada en postgres
create table clientes ( rut int primary key not null,
verificador char not null,
codigo int ,
nombres varchar(50) ,
apellido_paterno varchar(50) ,
apellido_materno varchar(50)
);
create table empresa ( id_empresa int primary key not null,
nombre varchar(50)
);
create table vendedores ( id_vendedor int primary key not null,
nombres varchar(50),
apellidos varchar(50),
id_empresa int references empresa
)
);
create table productos( id_producto serial primary key not null,
nombre_producto varchar(50) ,
descripcion varchar(50) ,
fecha_compra date ,
precio int,
interes float default 0,
r
rut int references clientes,
id_vendedor int references vendedores
);
create table cuotas ( id_cuota serial primary key not null
i
);
create table detalle_cuota ( id_producto serial references productos,
id_cuota serial references cuotas,
total_por_cuota int,
fecha_vencimiento date,
numero_cuota int,
estado boolean default false
Procedimientos almacenados
Funcion donde se hara el ingreso de los productos adquiridos por el cliente:
CREATE OR REPLACE FUNCTION ingresar_deuda (nom_pro varchar, descr varchar, prec int4,
inte int4, rut_c int4, vendedor int4, numero int4) RETURNS bool AS
$BODY$
d
declare
total_pago int =0;
id_pro int;
cuota int;
inter float = inte/100;
b
begin
total_pago = total_pago + prec/numero + (prec*inte);
select into id_pro count(*) from productos;
id_pro = id_pro +1;
insert into productos
(id_producto,nombre_producto,descripcion,fecha_compra,precio,interes,rut,id_vendedor)
values (id_pro,nom_pro,descr,current_date,prec,inter,rut_c,vendedor);
select into cuota count(*) from cuotas;
cuota = cuota +1;
insert into cuotas (id_cuota)
values (cuota);
F
FOR inc IN 1..numero LOOP
insert into detalle_cuota (id_producto, id_cuota, total_por_cuota, fecha_vencimiento,
numero_cuota, estado)
values (id_pro, cuota, total_pago, current_date, inc, false);
end loop;
return true;
end;
$BODY$
LANGUAGE 'plpgsql'
Funcion para cancelar una deuda:
create or replace function cancelar_deuda (rut_c int, id_pro int) returns bool as
$BODY$
begin
UPDATE detalle_cuota
SET estado = true
where numero_cuota in (select numero_cuota from detalle_cuota natural join productos
natural join clientes
where id_producto = id_pro and estado = false and rut = rut_c
order by numero_cuota
limit(1));
return true;
end;
$BODY$
language 'plpgsql'