Informe Final Seminario PLSQL Cuentas Por Cobrar Revisado
Informe Final Seminario PLSQL Cuentas Por Cobrar Revisado
Informe Final Seminario PLSQL Cuentas Por Cobrar Revisado
EDER LARA
CRISTOBAL TAVERA
WOLFANG FRANK ESQUIVEL CORTES
SEMINARIO DE PROFUNDIZACION
GESTIN DE BASES DE DATOS
CON PLSQL Y SQL DEVELOPER
BASE DE DATOS PARA LA GESTION DE CUENTAS POR COBRAR DE UNA
TIENDA
EDER LARA
CRSITOVAL TAVERA
WOLFANG FRANK ESQUIVEL CORTES
Trabajo presentado como requisito parcial para optar al ttulo de Ingeniero de
Sistemas
JORGE PACHECO CASADIEGO
Ing. De Sistemas
CONTENIDO
Pg.
INTRODUCCIN
1. OBJETIVOS
1.1 OBJETIVO GENERAL
1.2 OBJETIVOS ESPECFICOS
2. METODOLOGA
3. REQUISITOS
3.1 ALCANCE
3.2 MODELO DE CASOS DE USO
3.2.1 Diagramas Caso de Uso
3.2.2 Descripcin Caso de Uso
3.3 MODELO LGICO DE DATOS
3.3.1 Diagrama Entidad relacin E / R
3.3.2 Descripcin de Entidades, Atributos y Relaciones
4. DISEO
4.1 MODELO FSICO DE DATOS
4.1.1 Diagrama Relacional
4.1.2 Descripcin Tablas, ndices, secuenciadores, Vistas
4.2. ARQUITECTURA MODULAR
4.2.1 Diagrama Jerarqua de Mdulos
4.2.2
Descripcin de Mdulos
5. CONSTRUCCIN
5.1 CAPA DE ALMACENAMIENTO
5.1.1 Script de la Base de Datos
5.2 CAPA LGICA
5.2.1 Procedimientos
5.2.1.1 Edicin(Insercin, Actualizacin, Eliminacin)
5.2.1.2 Consultas
5.2.1.3 Procesos De Actualizacin De Datos En Lote
6. PRUEBAS
4
5
5
5
6
7
7
10
11
11
13
13
13
14
14
14
15
18
18
18
20
20
20
35
35
37
40
43
45
INTRODUCCION
El desarrollo de este proyecto tiene como propsito evidenciar la apropiacin de
los temas vistos en el seminario de PL/SQL con Oracle a travs de la elaboracin
de un sistema de informacin que permite la gestin de cuentas por cobrar de una
tienda actualizando el saldo anterior con el actual y consultar las deudas de los
clientes. Tambin se pretende mostrar la aplicacin de la metodologa utilizada y
las actividades realizadas en las distintas sesiones de trabajo.
Este sistema se cre con el fin de implementar todos los conocimientos adquiridos
y efectuar distintas operaciones a nivel de la capa de almacenamiento y la capa
lgica del mismo usando procedimientos de
consultas e informes que permiten la facilidad para gestionar los saldos de los
clientes y manejar la informacin como los datos de los clientes con sus
respectivos identificadores, codificacin de departamentos y ciudades, entre otras
bondades del lenguaje pl/sql.
Adems se logra por medio de este ejercicio pedaggico el conocimiento de los
diversos comandos y formas de utilizarlos para posibilitar el dinamismo de la base
de datos en la captura de datos y la generacin de reportes.
1. OBJETIVOS
1.1 GENERAL
Disear e Implementar una aplicacin con Base de Datos para la gestin de
una tiendan con el fin de llevar un registro de los clientes deudores utilizando
Oracle.
1.2 ESPECFICOS
2. METODOLOGA
En cada tutoria de trabajaron actividades utilizando el ejercicio tienda con las
herramientas CASE y Oracle developer para diseo de la base de datos, ejecucin
de comandos bsicos y creacin de procedimientos y otras sentencias en el
lenguaje PL/SQL.
A continuacin se describen de forma detallada las actividades realizadas teniendo
en cuenta el modelo clsico secuencial y un enfoque estructurado.
ACTIVIDAD
Definicin alcance
TCNICA O
PRCTICA
Entrevistas a
alto nivel
HERRAMIENTAS
Definicin de
requisitos
Entrevistas
detalladas
Elaboracin
Modelo de
comportamiento
Modelo de
Casos de
Uso
Elaboracin del
Modelo de datos
Modelo
relacional
Formato de
requisitos
Herramienta
CASE
Formato de
requisitos
Herramienta
CASE
PRODUCTOS
Catlogo de requisitos
a alto nivel
Catlogo de requisitos
a nivel de detalle
Herramienta
CASE
Herramienta
CASE
Diagrama
Notacin
detallada
Diagrama E/R
Descripcin del
modelo
3. REQUISITOS
3.1 ALCANCE
Ante el volumen de transacciones diarias a procesar con el fin de actualizar el
inventario, el dueo de la tienda est interesado en modernizar su negocio con
cambios estructurales en su modelo de negocio y en la tecnologa de soporte a
sus procesos crticos. A continuacin se expone la estructura funcional y los
requerimientos de tecnologa de la informacin definidos por el dueo:
Se implementar una oficina de atencin al cliente
seccin ser atendida por tres funcionarios que contarn con tres
estaciones de trabajo conectadas al servidor principal de la tienda.
La Seccin de Contabilidad deber generar cada da la informacin relativa
al estado de la cartera de los clientes o cuentas por cobrar y el de cuentas
por pagar a proveedores.
Para efecto de control de los puntos de ventas, se realizarn aperturas de
caja, entregas parciales de dinero y cierres de caja con participacin del
supervisor de turno y el cajero responsable. Estos procesos se registrarn
en el terminal de venta.
CUENTAS POR COBRAR
Consulta de ventas adeudadas por un cliente
El sistema permitir la consulta de la relacin de ventas pendientes de pago
por el cliente. Con base en el nmero de identificacin del cliente, el sistema
desplegar las ventas a cargo del cliente, indicando fecha, valor adeudado por
cada una y el valor total adeudado por el cliente.
Abonos de los clientes
Los clientes con ventas pendientes de pago, realizarn sus abonos en los
terminales de punto de ventas o cajas. El abono lo registrar el cajero
indicndole al sistema el nmero de identificacin del cliente el valor del
abono y la forma de pago (efectivo, tarjeta o cheque). El sistema validar
que el abono sea suficiente para pagar una o ms de una de las ventas
pendientes de pago.
Como poltica del negocio se aceptan abonos completos por ventas. No se
aceptan abonos parciales a una venta. En un abono se puede abonar a una
o ms ventas. El abono se puede detallar de acuerdo con la forma de pago
indicando el monto de pago por cada detalle, ej: abon un milln de pesos y
los montos son quinientos mil en efectivo, cuatrocientos mil en tarjeta
crdito y cien mil en cheque.
cliente.
El sistema generar un informe diario de los abonos recibidos, relacionando el
nmero del abono, el valor y la forma de pago. Al final deber informar el
DESCRIPCION
CASO DE USO: CONSULTAR ABONOS A LA FECHA
ACTOR (ES): Administrador
PROPOSITO: Realizar y consultar abonos de clientes
CASO DE XITO:
PASO
1.
2.
4.
5.
ACTIVIDAD
El Administrador solicita informe de abonos
El sistema genera el reporte a travs del programa parametrizado
El sistema verifica existencia de los abonos.
El sistema genera un reporte de los abonos identificando el cliente y el
monto del abono
EXTENSIONES:
6.1
6.1.1
No existen abonos
El sistema muestra mensaje indicando que no hay abonos a la fecha
10
DESCRIPCION
CASO DE USO: REGISTRAR ABONO
ACTOR (ES): Funcionario
PROPOSITO: Ingresar el abono del cliente.
CASO DE XITO:
PASO
1.
2.
3.
4.
5.
ACTIVIDAD
El Funcionario solicita el nmero de cdula del cliente.
El funcionario ingresa el nmero de la cdula del cliente.
El funcionario ingresa el valor del abono.
El sistema almacena el registro del abono del cliente.
El sistema indica con un mensaje que el abono se ha registrado
correctamente.
EXTENSIONES:
3.1
3.1.1
3.3
3.3.1
11
DESCRIPCION
CASO DE USO: GENERAR INFORME DIARIO DE ABONOS
ACTOR (ES): Usuario del sistema
PROPOSITO: Solicitar el conteo de los abonos diarios agrupndolos segn
el nmero del registro y mostrar el valor de cada abono.
CASO DE XITO:
PASO
1.
2.
3.
4.
ACTIVIDAD
Seleccionar fecha actual.
Conteo de abonos
Asociar los abonos con la fecha a consultar
Mostrar resultado de la consulta y el valor de cada abono.
12
ACTIVIDAD
Seleccionar saldos con valores mayores a 0.
Conteo de saldos.
Agrupar conteo de saldos por nombre del cliente.
Mostrar Resultados.
13
3.2
4 DISEO
4.1 MODELO FSICO DE DATOS
4.1.1 Diagrama Relacional
14
15
4.1.2
TABLA CLIENTE
En esta tabla se almacenan los datos correspondientes al Cliente
CLIENTE
Atributo
Descripcin
Tipo
Longitud
Permite
Nulos
ID_CLIENTE
Documento de
identidad
Number
38
No
TIPODOC
U
Tipo de
Documento
No
NOMBRE
Nombre de
Cliente
50
No
GENERO
Genero de
Cliente (M / F)
No
DIRECCI
ON
MUNICIPI
O
Direccion de
localizacin de
Cliente
Municipio de
localizacin de
Cliente
Numero
Telefonico de
localizacin de
Cliente
50
No
50
Si
Number
38
Si
Variable
charact
ers (2)
No
TELEFON
O
APLICAC
RE
Aplica Credito
(S / N)
Variable
charact
ers (2)
Variable
charact
ers (2)
Variable
charact
ers (2)
Variable
charact
ers (2)
Variable
charact
ers (2)
Llave
Principal
X
Llave
Forn
ea
Tabla
Llave
Forne
a
Observacion
es
TABLA VENTA
Aqu se registran las ventas efectuadas a los clientes, se incluye el campo
saldo para determinar las deudas de cada uno de los clientes
VENTA
Atributo
Descripcin
Tipo
Longitud
Permite
Nulos
Llave
Principal
ID_VENTA
Codigo de
venta
Number
38
No
ID_CLIENTE
Documento
de identidad
Number
38
No
FEVEN
TIPOVEN
Fecha de
efectuada la
compra
Forma de
venta
(Credito /
Contado)
Date
Varchar2
No
No
16
Llave
Fornea
Tabla
Llave
Fornea
CLENTE
Observaciones
Estado de
venta
(Pendiente /
Pagada)
Total de
Venta
Saldo
despus de
Aplicar
Abonos
ESTADOV
TOTALVEN
SALDO
Varchar2
No
Float
No
Float
Si
TABLA ABONO
Aqu se almacenan los registros de los abonos relacionados a cada venta
ABONO
Atributo
ID_ABONO
ID_VENTA
FECHA
ESTADOA
Descripcin
Cdigo del
Abono
Codigo de
venta
Fecha de
Realizacin
De Abono
Indica si el
abono se ah
aplicado para
la
actualizacin
del saldo en
la venta
Tipo
Longitud
Permite
Nulos
Llave
Principal
Number
38
No
Number
38
No
Date
Llave
Fornea
Tabla
Llave
Fornea
VENTA
Observaciones
No
Number
38
Se actualiza al
generar una
consulta
(Procedimiento)
No
Tabla
Llave
Forne
a
No
ABONO
No
MEDIO
DE
PAGO
Atributo
Descripcin
Tipo
Longit
ud
Permit
e
Nulos
Llave
Principa
l
ID_DET_ABONO
Cdigo de
detalle de
Abono
Number
38
No
ID_ABONO
Cdigo de
Abono
Number
38
Number
38
ID_MEDIO_DE_PAG
O
VALOR_ABONO
Codigo
Medio de
Pago
Valor
Abonado
No
17
Observacione
s
Atributo
Descripcin
Tipo
ID_MEDIO_DE_PA
GO
Codigo de
Medio de
Pago
Descripcion
de Forma De
Pago
Number
38
No
Varchar
2
30
No
MEDIO__PAGO
18
Llave
Principa
l
X
Llave
Forne
a
Tabla
Llave
Forn
ea
Observaciones
4.1.3
ARQUITECTURA MODULAR
ARQUITECTURA DE INSERCION
ARQUITECTURA DE CONSULTA
19
20
CONSTRUCCIN
21
22
23
24
25
26
27
28
29
30
31
32
33
34
end;
/
--------------------------------------------------------- DDL for Procedure LISTARABONOS
-------------------------------------------------------set define off;
CREATE OR REPLACE PROCEDURE "EDER"."LISTARABONOS" is
begin
DBMS_OUTPUT.PUT_LINE('************************************ LISTADO ABONOS A LA FECHA
*************************************');
dbms_output.put_line(rpad('Id_Abono',10)||' ' ||rpad('Numero_Venta',10)||rpad(' Cliente ',38)||' ' ||
rpad('Fecha ',10)||' ' ||lpad('Estado Abono (A/P)',10));
DBMS_OUTPUT.PUT_LINE('********************************************************************************
********************');
For v_regabo in
(select a.ID_ABONO,a.ID_VENTA, c.NOMBRE, a.FECHA, a.ESTADOA from ABONO a
INNER JOIN VENTA v
ON (a.ID_VENTA= v.ID_VENTA)
INNER JOIN CLIENTE c
ON (c.ID_CLIENTE = v.ID_CLIENTE)
order by a.ID_VENTA )
LOOP
dbms_output.put_line(rpad( to_char(v_regabo.ID_ABONO),10) ||' ' ||
rpad( to_char(v_regabo.ID_VENTA),10) ||' ' ||rpad(v_regabo.NOMBRE,38)||' '||
rpad(v_regabo.FECHA,10)||' ' ||rpad( to_char(v_regabo.ESTADOA),10));
DBMS_OUTPUT.PUT_LINE('--------------------------------------------------------------------------------------------------');
END LOOP;
END;
/
--------------------------------------------------------- DDL for Procedure VALIDAABONO
-------------------------------------------------------set define off;
CREATE OR REPLACE PROCEDURE "EDER"."VALIDAABONO" (IA NUMBER, res out boolean)
IS
v_abono ABONO%rowtype;
BEGIN
SELECT * INTO v_abono
FROM ABONO
WHERE ID_ABONO = IA;
res:= true;
35
exception
when No_data_found then
res:=FALSE;
END VALIDAABONO;
/
--------------------------------------------------------- DDL for Procedure VALIDACLIENTE
-------------------------------------------------------set define off;
CREATE OR REPLACE PROCEDURE "EDER"."VALIDACLIENTE" (cc in number, res out
boolean)
is
v_cliente CLIENTE%rowtype;
begin
select * into v_cliente
from CLIENTE
where ID_CLIENTE = cc;
res:= TRUE;
exception
when No_data_found then
res:=FALSE;
end validacliente;
/
--------------------------------------------------------- DDL for Procedure VALIDARINSERCIONABONO
-------------------------------------------------------set define off;
CREATE OR REPLACE PROCEDURE "EDER"."VALIDARINSERCIONABONO" (IA NUMBER,IV
NUMBER,FECH DATE, IDA NUMBER, IP NUMBER, VA FLOAT)
IS
res boolean;
yaexiste exception;
BEGIN
VALIDAABONO(IA,res);
if res = true then
raise yaexiste;
ELSE INSERTARABONO (IA, IV, FECH, IDA, IP, VA);
dbms_output.put_line(' Abono adicionado ');
end if;
exception
WHEN yaexiste THEN
36
37
38
39
ABONO
INSERTAR
ABONO
En este procedimiento se registra el abono,
paralelamente con el detalle del abono como si
fuere una sola tabla, el usuario digitar el id de
venta el valor del abono la forma de pago y el
monto, si existe se hace una validacin y se enva
un mensaje diciendo que ya existe, de lo contrario
se procede a Insertar el cliente en la tabla
Procediemientos que
1. Bloque Annimo que ejecuta el
Intervienen
procedimiento validarinsercionabono,
2. Procedimiento Almacenado
validaabono
3. Procedimiento Almacenado
insertarabono
40
5.2.1.2
CONSULTAS
Consultas a Tablas
Listado de Abonos
OPERARIO
LISTAR
Este informe lista los abonos realizados
a la fecha tan solo debemos escribir y
ejecutar en el prompt:
Execute listarabonos;.
43
REPORTE
Este informe lista los Clientes que estn
a paz y salvo en sus ventas (saldo =0),
a la fecha tan solo debemos escribir y
ejecutar en el prompt:
Execute inforsaldocliente;.
44
end loop;
dbms_output.put_line('...NMERO REGISTROS AFECTADOS...'||' '||v_confilas);
end;
Listado de Cartera al dia
OPERARIO
LISTAR
Este informe lista los Clientes que estn
en cartera o mora (saldo >0), a la fecha
tan solo debemos escribir y ejecutar en
el prompt:
Execute carteraclientes;.
45
DBMS_OUTPUT.PUT_LINE('--------------------------------------------------------------------------------------------------');
end loop;
dbms_output.put_line('...NMERO REGISTROS AFECTADOS...'||' '||v_confilas);
end;
5.2.1.3
is
v_total float;
v_confilas number :=0;
Cursor selecabono is
select * from ABONO
where ESTADOA ='P';
begin
dbms_output.put_line('$$$$$$$$$$$$$$ ABONOS ACTUALIZADOS $$$$$$$$$
$$$$$');
dbms_output.put_line(rpad('ABONO',6)||' ' ||rpad('VENTA',6)||rpad('ESTADO',10));
For v_regabo in selecabono
LOOP
SELECT SUM(VALOR_ABONO) INTO v_total
from DETALLE_DE_ABONO
WHERE ID_ABONO = v_regabo.ID_ABONO;
46
UPDATE VENTA v
SET v.SALDO = v.SALDO - v_total
WHERE v.ID_VENTA = v_regabo.ID_VENTA;
UPDATE VENTA
SET ESTADOV = 'PA'
WHERE ID_VENTA = v_regabo.ID_VENTA AND SALDO = 0;
UPDATE ABONO
SET ESTADOA = 'A'
WHERE ID_ABONO = v_regabo.ID_ABONO;
v_confilas := selecabono%rowcount;
dbms_output.put_line(rpad(v_regabo.ID_ABONO,8)||' '||
rpad(v_regabo.ID_VENTA,8)||' '||lpad(v_regabo.ESTADOA,10));
END LOOP;
dbms_output.put_line('...NMERO REGISTROS AFECTADOS...'||' ' ||v_confilas);
end;
47
6. PRUEBAS
Prueba de Actualizacion de estados y saldo
Estado previo:
Select a.*, v.ESTADOV, v.SALDO
from ABONO a, VENTA v
WHERE a.ID_VENTA=v.ID_VENTA;
1
4
2
3
5
6
7
8
9
10
100
101
102
103
104
105
107
108
109
110
01/01/15
02/03/15
18/03/15
03/12/14
02/11/14
20/01/14
19/03/15
19/03/15
20/03/15
12/03/15
P
P
P
P
P
P
P
P
P
P
PP
PP
PP
PA
PP
PP
PP
PP
PP
PP
50000
40000
220000
50000
170000
10000
90000
80000
100000
310000
Ejecucin APLICAESTADO
Conectando a la base de datos Semi.
$$$$$$$$$$$$$$ ABONOS ACTUALIZADOS $$$$$$$$$$$$$$
ABONO VENTA ESTADO
1
100
P
3
103
P
4
101
P
5
104
P
6
105
P
7
107
P
8
108
P
9
109
P
10
110
P
2
102
P
...NMERO REGISTROS AFECTADOS... 10
El proceso ha terminado.
Desconectando de la base de datos Semi.
48
100
101
102
103
104
105
107
108
109
110
01/01/15
02/03/15
18/03/15
03/12/14
02/11/14
20/01/14
19/03/15
19/03/15
20/03/15
12/03/15
A
A
A
A
A
A
A
A
A
A
PP
PP
PA
PA
PP
PP
PA
PA
PA
PP
50000
40000
0
0
170000
-210000
0
0
0
310000
49
50
51