Está en la página 1de 4

Modelo Entidad Relacion

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'