Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

64
SEMINARIO DE PROFUNDIZACION SEMINARIO DE PROFUNDIZACION PL/SQL CON ORACLE PL/SQL CON ORACLE “BASE DE DATOS PARA LA GESTION DE CUENTAS POR COBRAR DE UNA “BASE DE DATOS PARA LA GESTION DE CUENTAS POR COBRAR DE UNA TIENDA” TIENDA” EDER LARA EDER LARA CRISTOBAL TAVERA CRISTOBAL TAVERA WOLFANG FRANK ESQUIVEL CORTES WOLFANG FRANK ESQUIVEL CORTES UNIVERSIDAD DEL TOLIMA UNIVERSIDAD DEL TOLIMA IDEAD IDEAD 1

description

Informe presentado en UT por Diego Doris y Eliana

Transcript of Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

Page 1: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

SEMINARIO DE PROFUNDIZACIONSEMINARIO DE PROFUNDIZACIONPL/SQL CON ORACLE PL/SQL CON ORACLE

“BASE DE DATOS PARA LA GESTION DE CUENTAS POR COBRAR DE“BASE DE DATOS PARA LA GESTION DE CUENTAS POR COBRAR DE UNA TIENDA”UNA TIENDA”

EDER LARAEDER LARACRISTOBAL TAVERACRISTOBAL TAVERA

WOLFANG FRANK ESQUIVEL CORTESWOLFANG FRANK ESQUIVEL CORTES

UNIVERSIDAD DEL TOLIMAUNIVERSIDAD DEL TOLIMAIDEADIDEAD

INGENIERIA DE SISTEMASINGENIERIA DE SISTEMASIBAGUÉ - TOLIMAIBAGUÉ - TOLIMA

2015

1

Page 2: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

2

SEMINARIO DE PROFUNDIZACIONSEMINARIO DE PROFUNDIZACION GESTIÓN DE BASES DE DATOSGESTIÓN DE BASES DE DATOS CON PLSQL Y SQL DEVELOPERCON PLSQL Y SQL DEVELOPER

“BASE DE DATOS PARA LA GESTION DE CUENTAS POR COBRAR DE“BASE DE DATOS PARA LA GESTION DE CUENTAS POR COBRAR DE UNA TIENDA”UNA TIENDA”

EDER LARAEDER LARACRSITOVAL TAVERACRSITOVAL TAVERA

WOLFANG FRANK ESQUIVEL CORTESWOLFANG FRANK ESQUIVEL CORTES

Trabajo presentado como requisito parcial para optar al título de Ingeniero deTrabajo presentado como requisito parcial para optar al título de Ingeniero de SistemasSistemas

JORGE PACHECO CASADIEGOJORGE PACHECO CASADIEGOIng. De SistemasIng. De Sistemas

UNIVERSIDAD DEL TOLIMAUNIVERSIDAD DEL TOLIMAIDEADIDEAD

INGENIERIA DE SISTEMASINGENIERIA DE SISTEMASIBAGUÉ - TOLIMAIBAGUÉ - TOLIMA

20152015

Page 3: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

CONTENIDO

Pág.

INTRODUCCIÓN 41. OBJETIVOS 51.1 OBJETIVO GENERAL 51.2 OBJETIVOS ESPECÍFICOS 52. METODOLOGÍA 63. REQUISITOS 73.1 ALCANCE 73.2 MODELO DE CASOS DE USO 103.2.1 Diagramas Caso de Uso 113.2.2 Descripción Caso de Uso 113.3 MODELO LÓGICO DE DATOS 133.3.1 Diagrama Entidad relación E / R 133.3.2 Descripción de Entidades, Atributos y Relaciones 134. DISEÑO 144.1 MODELO FÍSICO DE DATOS 144.1.1 Diagrama Relacional 144.1.2 Descripción Tablas, Índices, secuenciadores, Vistas 154.2. ARQUITECTURA MODULAR 184.2.1 Diagrama Jerarquía de Módulos 184.2.2 Descripción de Módulos 185. CONSTRUCCIÓN 205.1 CAPA DE ALMACENAMIENTO 205.1.1 Script de la Base de Datos 205.2 CAPA LÓGICA 355.2.1 Procedimientos 355.2.1.1 Edición(Inserción, Actualización, Eliminación) 375.2.1.2 Consultas 405.2.1.3 Procesos De Actualización De Datos En Lote 436. PRUEBAS 45

3

Page 4: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

INTRODUCCION

El desarrollo de este proyecto tiene como propósito evidenciar la apropiación de

los temas vistos en el seminario de PL/SQL con Oracle a través de la elaboración

de un sistema de información que permite la gestión de cuentas por cobrar de una

tienda actualizando el saldo anterior con el actual y consultar las deudas de los

clientes. También se pretende mostrar la aplicación de la metodología 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

lógica del mismo usando procedimientos de edición, aplicación transaccional,

consultas e informes que permiten la facilidad para gestionar los saldos de los

clientes y manejar la información como los datos de los clientes con sus

respectivos identificadores, codificación de departamentos y ciudades, entre otras

bondades del lenguaje pl/sql.

Además se logra por medio de este ejercicio pedagógico 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 generación de reportes.

4

Page 5: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

1. OBJETIVOS

1.1 GENERAL

Diseñar e Implementar una aplicación con Base de Datos para la gestión de

una tiendan con el fin de llevar un registro de los clientes deudores utilizando

Oracle.

1.2 ESPECÍFICOS

Diseñar el modelo de datos del subsistema( entre ellos modelo conceptual,

físico y generación de script)

Elaborar los procesos de edición, consulta y aplicación de transacciones del

subsistema de cuentas por cobrar.

Dar a conocer la jerarquía de dos de los módulos de cuentas por cobrar

para las transacciones necesarias

Mostrar el funcionamiento de el software oracle y el sql developer para

consultas con PL/SQL

Utilizar PL/ SQL para la creación de Informes.

Utilizar el PL/SQL para insertar, modificar y actualizar registros de los

clientes pendientes por pagar.

5

Page 6: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

2. METODOLOGÍA

En cada tutoria de trabajaron actividades utilizando el ejercicio tienda con las

herramientas CASE y Oracle developer para diseño de la base de datos, ejecución

de comandos básicos y creación de procedimientos y otras sentencias en el

lenguaje PL/SQL.

A continuación se describen de forma detallada las actividades realizadas

teniendo en cuenta el modelo clásico secuencial y un enfoque estructurado.

ACTIVIDAD TÉCNICA O PRÁCTICA

HERRAMIENTAS PRODUCTOS

Definición alcance Entrevistas a alto nivel

Formato de requisitos

Herramienta CASE

Catálogo de requisitos a alto nivel

Definición de requisitos

Entrevistas detalladas

Formato de requisitos

Herramienta CASE

Catálogo de requisitos a nivel de detalle

Elaboración Modelo de comportamiento

Modelo de Casos de Uso

Herramienta CASE

Diagrama Notación

detalladaElaboración del Modelo de datos

Modelo relacional

Herramienta CASE

Diagrama E/R Descripción del

modelo

6

Page 7: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

3. REQUISITOS

3.1ALCANCE

Ante el volumen de transacciones diarias a procesar con el fin de actualizar el

inventario, el dueño de la tienda está interesado en modernizar su negocio con

cambios estructurales en su modelo de negocio y en la tecnología de soporte a

sus procesos críticos. A continuación se expone la estructura funcional y los

requerimientos de tecnología de la información definidos por el dueño:

Se implementará una oficina de atención al cliente que tendrá como

funciones principales el registrar y actualizar la información de los clientes;

comunicar a los clientes, las promociones y eventos de la tienda; atender

las solicitudes de los clientes en cuanto a peticiones, quejas, reclamos y

devoluciones; administrar los procesos de catálogo de puntos y redención

de puntos. Esta sección será atendida por cuatro funcionarias encargadas

de afiliación de clientes, promociones, PQR y puntos, que contarán con

cuatro estaciones de trabajo conectadas al servidor principal de la tienda.

Para la aplicación de las transacciones diarias de inventario, el registro de

productos y la generación de los informes resúmenes de venta y saldos de

almacén, se dispondrá de una estación de trabajo operada por un

funcionario de la oficina de Bodega.

Se implementará una oficina de atención al proveedor que tendrá como

funciones principales el registrar y actualizar la información de los

proveedores; desarrollar la gestión de reposición de los artículos; registrar

las compras a los proveedores; registrar las devoluciones; registrar los

pagos a los proveedores y generar los listados resúmenes de compra. Esta

7

Page 8: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

sección será atendida por tres funcionarios que contarán con tres

estaciones de trabajo conectadas al servidor principal de la tienda.

La Sección de Contabilidad deberá generar cada día la información 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 realizarán aperturas de

caja, entregas parciales de dinero y cierres de caja con participación del

supervisor de turno y el cajero responsable. Estos procesos se registrarán

en el terminal de venta.

CUENTAS POR COBRAR

Consulta de ventas adeudadas por un cliente

El sistema permitirá la consulta de la relación de ventas pendientes de pago

por el cliente. Con base en el número de identificación 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, realizarán sus abonos en los

terminales de punto de ventas o cajas. El abono lo registrará el cajero

indicándole al sistema el número de identificación 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 más de una de las ventas

pendientes de pago.

Como política 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 más ventas. El abono se puede detallar de acuerdo con la forma de pago

indicando el monto de pago por cada detalle, ej: abonó un millón de pesos y

los montos son quinientos mil en efectivo, cuatrocientos mil en tarjeta

crédito y cien mil en cheque.

8

Page 9: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

El sistema generará un comprobante de abono indicando fecha, hora, caja

física, nombre cajero, número y valor de cada venta abonada, total del

abono y forma de pago detallada.

Aplicar abonos de los clientes

El sistema facilitará la aplicación de los abonos de forma que actualice el saldo

del cliente a través del descuento del valor del abono y actualice el estado del

abono cambiándolo de P= Pendiente de aplicar a A= Aplicado y el estado de

la venta pasando de PP= Pendiente de pago a PA= Pagada.

Generar informes de cuentas por cobrar

El sistema generará un informe diario de los saldos a cargo de los clientes

indicando fecha de corte, nombre del cliente y valor del saldo a cargo del

cliente.

El sistema generará un informe diario de los abonos recibidos, relacionando el

número del abono, el valor y la forma de pago. Al final deberá informar el

número de abonos y el total del monto abonado

El sistema generará un informe resumen indicando el valor de la cartera a la

fecha

9

Page 10: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

3.2 MODELO DE CASOS DE USO

3.2.1 DIAGRAMAS CASO DE USO

CASO DE USO: CONSULTA ABONO A LA FECHA

DESCRIPCIONCASO DE USO: CONSULTAR ABONOS A LA FECHAACTOR (ES): AdministradorPROPOSITO: Realizar y consultar abonos de clientes

CASO DE ÉXITO:

PASO ACTIVIDAD1. El Administrador solicita informe de abonos2. El sistema genera el reporte a través del programa parametrizado4. El sistema verifica existencia de los abonos.5. El sistema genera un reporte de los abonos identificando el cliente y el

monto del abono

EXTENSIONES:

6.1 No existen abonos6.1.1 El sistema muestra mensaje indicando que no hay abonos a la fecha

10

Page 11: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

CASO DE USO: REGISTRAR ABONO

DESCRIPCIONCASO DE USO: REGISTRAR ABONOACTOR (ES): FuncionarioPROPOSITO: Ingresar el abono del cliente.

CASO DE ÉXITO:

PASO ACTIVIDAD1. El Funcionario solicita el número de cédula del cliente.2. El funcionario ingresa el número de la cédula del cliente.3. El funcionario ingresa el valor del abono.4. El sistema almacena el registro del abono del cliente.5. El sistema indica con un mensaje que el abono se ha registrado

correctamente. EXTENSIONES:

3.1 No se ingresó la cédula del cliente.3.1.1 El sistema solicita el ingreso de la cedula.3.3 No se ingresó el valor del abono.3.3.1 Mensaje del Sistema solicitando el valor del abono.

11

Page 12: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

CASO DE USO: GENERAR INFORMES

DESCRIPCIONCASO DE USO: GENERAR INFORME DIARIO DE ABONOSACTOR (ES): Usuario del sistemaPROPOSITO: Solicitar el conteo de los abonos diarios agrupándolos según el número del registro y mostrar el valor de cada abono.

CASO DE ÉXITO:

PASO ACTIVIDAD1. Seleccionar fecha actual.2. Conteo de abonos3. Asociar los abonos con la fecha a consultar4. Mostrar resultado de la consulta y el valor de cada abono.

CASO DE USO: GENERAR INFORME DE CARTERA. ACTOR (ES): Subsistema.

12

Page 13: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

PROPOSITO: Solicitar el conteo de las ventas con saldos.

CASO DE ÉXITO:

PASO ACTIVIDAD1. Seleccionar saldos con valores mayores a 0.2. Conteo de saldos.3. Agrupar conteo de saldos por nombre del cliente.4. Mostrar Resultados.

13

Page 14: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

3.2 MODELO LÓGICO DE DATOS

3.3.1 Diagrama Entidad relación E / R3.3.2 Descripción de Entidades, Atributos y Relaciones

4 DISEÑO4.1MODELO FÍSICO DE DATOS4.1.1 Diagrama Relacional

14

Page 15: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

15

Page 16: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

4.1.2 DESCRIPCIÓN TABLAS, ÍNDICES, SECUENCIADORES, VISTAS

TABLA CLIENTE

En esta tabla se almacenan los datos correspondientes al Cliente

CLIENTE

Atributo Descripción Tipo LongitudPermite Nulos

Llave Principal

Llave Forán

ea

Tabla Llave

Foránea

Observaciones

ID_CLIENTEDocumento de

identidadNumber 38 No X

TIPODOCU Tipo de Documento

Variable characters (2)

2 No

NOMBRE Nombre de Cliente

Variable characters (2)

50 No

GENERO Genero de Cliente (M / F)

Variable characters (2)

1 No

DIRECCIONDireccion de

localización de Cliente

Variable characters (2)

50 No

MUNICIPIOMunicipio de

localización de Cliente

Variable characters (2)

50 Si

TELEFONONumero

Telefonico de localización de

Cliente

Number 38 Si

APLICACRE Aplica Credito (S / N)

Variable characters (2)

2 No

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 Descripción Tipo LongitudPermite Nulos

Llave Principal

Llave Foránea

Tabla Llave

ForáneaObservaciones

ID_VENTA Codigo de venta

Number 38 No X

ID_CLIENTE Documento de identidad

Number 38 No X CLENTE

FEVENFecha de

efectuada la compra

Date No

TIPOVENForma de

venta (Credito / Contado)

Varchar2 2 No

16

Page 17: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

ESTADOVEstado de

venta (Pendiente /

Pagada)

Varchar2 2 No

TOTALVEN Total de Venta

Float No

SALDO

Saldo después de

Aplicar Abonos

Float Si

TABLA ABONO

Aquí se almacenan los registros de los abonos relacionados a cada venta

ABONO

Atributo Descripción Tipo LongitudPermite Nulos

Llave Principal

Llave Foránea

Tabla Llave

ForáneaObservaciones

ID_ABONOCódigo del

AbonoNumber 38 No X

ID_VENTACodigo de

ventaNumber 38 No X VENTA

FECHAFecha de

Realización De Abono

Date No

ESTADOA

Indica si el abono se ah aplicado para

la actualización del saldo en

la venta

Number 38 No

Se actualiza al generar una

consulta (Procedimiento)

TABLA DETALLE DE ABONO

Aquí se almacenan los detalles del abono en si

DETALLE DE ABONO

Atributo Descripción TipoLongit

ud

Permite

Nulos

Llave Princip

al

Llave Foráne

a

Tabla Llave

Foránea

Observaciones

ID_DET_ABONOCódigo de detalle de

AbonoNumber 38 No X

ID_ABONOCódigo de

AbonoNumber 38 No X

ABONO

ID_MEDIO_DE_PAGO

Codigo Medio de

PagoNumber 38 No X

MEDIO DE

PAGO

VALOR_ABONOValor

AbonadoNo

17

Page 18: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

TABLA FORMA DE PAGO

Tabla para almacenar los diferentes tipos de pago.

CONSULTORIOAtributo Descripción Tipo Longitu

dPermit

e Nulos

Llave Principa

l

Llave Foráne

a

Tabla Llave Forán

ea

Observaciones

ID_MEDIO_DE_PAGO

Codigo de Medio de

Pago

Number 38 No X

MEDIO__PAGO Descripcion de Forma De

Pago

Varchar2

30 No

18

Page 19: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

4.1.3 ARQUITECTURA MODULAR

ARQUITECTURA DE INSERCION

ARQUITECTURA DE CONSULTA

19

Page 20: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

ARQUITECTURA DE CONSULTA A UN ABONO PERSPECTIVA DE CAPAS

20

Page 21: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

5 CONSTRUCCIÓN

5.1CAPA DE ALMACENAMIENTO

5.1.1 Script de la Base de Datos

/*Este script fue generado desde la herramienta case Sybase PowerDesigner 16.1 a partir del modelo físico de datos.Autores:

EDER LARA TRUJILLOCRISTOVAL TAVERA PARRAWOLFANG FRANK ESQUIVEL CORTES.

---------------------------------------------------------- Archivo creado - domingo-abril-05-2015 ------------------------------------------------------------------------------------------------------------------ DDL for Table ABONO--------------------------------------------------------

CREATE TABLE "EDER"."ABONO" ( "ID_ABONO" NUMBER(*,0),

"ID_VENTA" NUMBER(*,0), "FECHA" DATE, "ESTADOA" CHAR(2 BYTE)

) SEGMENT CREATION IMMEDIATE PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "SYSTEM" ;---------------------------------------------------------- DDL for Table CLIENTE--------------------------------------------------------

CREATE TABLE "EDER"."CLIENTE" ( "ID_CLIENTE" NUMBER(*,0),

"TIPODOCU" VARCHAR2(2 BYTE), "NOMBRE" VARCHAR2(50 BYTE), "GENERO" CHAR(1 BYTE), "DIRECCION" VARCHAR2(50 BYTE), "MUNICIPIO" VARCHAR2(50 BYTE), "TELEFONO" NUMBER, "APLICACRED" VARCHAR2(2 BYTE)

) SEGMENT CREATION IMMEDIATE PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "SYSTEM" ;---------------------------------------------------------- DDL for Table DETALLE_DE_ABONO

21

Page 22: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

--------------------------------------------------------

CREATE TABLE "EDER"."DETALLE_DE_ABONO" ( "ID_DET_ABONO" NUMBER(*,0),

"ID_ABONO" NUMBER(*,0), "ID_MEDIO_DE_PAGO" NUMBER(*,0), "VALOR_ABONO" FLOAT(126)

) SEGMENT CREATION IMMEDIATE PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "SYSTEM" ;---------------------------------------------------------- DDL for Table FORMA_DE_PAGO--------------------------------------------------------

CREATE TABLE "EDER"."FORMA_DE_PAGO" ( "ID_MEDIO_DE_PAGO" NUMBER(*,0),

"MEDIO__PAGO" VARCHAR2(30 BYTE) ) SEGMENT CREATION IMMEDIATE PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "SYSTEM" ;---------------------------------------------------------- DDL for Table VENTA--------------------------------------------------------

CREATE TABLE "EDER"."VENTA" ( "ID_VENTA" NUMBER(*,0),

"ID_CLIENTE" NUMBER(*,0), "FEVEN" DATE, "TIPOVEN" VARCHAR2(30 BYTE), "ESTADOV" CHAR(2 BYTE), "TOTALVEN" FLOAT(126), "SALDO" FLOAT(126)

) SEGMENT CREATION IMMEDIATE PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "SYSTEM" ;REM INSERTING into EDER.ABONOSET DEFINE OFF;Insert into EDER.ABONO (ID_ABONO,ID_VENTA,FECHA,ESTADOA) values ('1','100',to_date('01/01/15','DD/MM/RR'),'P');Insert into EDER.ABONO (ID_ABONO,ID_VENTA,FECHA,ESTADOA) values ('3','103',to_date('03/12/14','DD/MM/RR'),'P');Insert into EDER.ABONO (ID_ABONO,ID_VENTA,FECHA,ESTADOA) values ('4','101',to_date('02/03/15','DD/MM/RR'),'P');Insert into EDER.ABONO (ID_ABONO,ID_VENTA,FECHA,ESTADOA) values ('5','104',to_date('02/11/14','DD/MM/RR'),'P');

22

Page 23: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

Insert into EDER.ABONO (ID_ABONO,ID_VENTA,FECHA,ESTADOA) values ('6','105',to_date('20/01/14','DD/MM/RR'),'P');Insert into EDER.ABONO (ID_ABONO,ID_VENTA,FECHA,ESTADOA) values ('7','107',to_date('19/03/15','DD/MM/RR'),'P');Insert into EDER.ABONO (ID_ABONO,ID_VENTA,FECHA,ESTADOA) values ('8','108',to_date('19/03/15','DD/MM/RR'),'P');Insert into EDER.ABONO (ID_ABONO,ID_VENTA,FECHA,ESTADOA) values ('9','109',to_date('20/03/15','DD/MM/RR'),'P');Insert into EDER.ABONO (ID_ABONO,ID_VENTA,FECHA,ESTADOA) values ('10','110',to_date('12/03/15','DD/MM/RR'),'P');Insert into EDER.ABONO (ID_ABONO,ID_VENTA,FECHA,ESTADOA) values ('2','102',to_date('18/03/15','DD/MM/RR'),'P');REM INSERTING into EDER.CLIENTESET DEFINE OFF;Insert into EDER.CLIENTE (ID_CLIENTE,TIPODOCU,NOMBRE,GENERO,DIRECCION,MUNICIPIO,TELEFONO,APLICACRED) values ('28542662','CC','ADRIANA MARIA GALINDO HERRERA','F','COMUNA 7 BARRIO SALADO','IBAGUE','3164331089','SI');Insert into EDER.CLIENTE (ID_CLIENTE,TIPODOCU,NOMBRE,GENERO,DIRECCION,MUNICIPIO,TELEFONO,APLICACRED) values ('52266270','CC','AMPARO ARISTIZABAL SUAZA','F','COMUNA 7 BARRIO SALADO','IBAGUE','3122882773','SI');Insert into EDER.CLIENTE (ID_CLIENTE,TIPODOCU,NOMBRE,GENERO,DIRECCION,MUNICIPIO,TELEFONO,APLICACRED) values ('38203593','CC','AMPARO DUCUARA YATE','F','COMUNA 7 BARRIO SALADO','IBAGUE','3205659547','SI');Insert into EDER.CLIENTE (ID_CLIENTE,TIPODOCU,NOMBRE,GENERO,DIRECCION,MUNICIPIO,TELEFONO,APLICACRED) values ('28548500','CC','ANA DELIA BAUTISTA VARGAS','F','COMUNA 7 BARRIO SALADO','IBAGUE','3123263566','SI');Insert into EDER.CLIENTE (ID_CLIENTE,TIPODOCU,NOMBRE,GENERO,DIRECCION,MUNICIPIO,TELEFONO,APLICACRED) values ('28540834','CC','ANA ELVIA OTALORA CALDERON','F','COMUNA 7 BARRIO SALADO','IBAGUE','3105887307','SI');Insert into EDER.CLIENTE (ID_CLIENTE,TIPODOCU,NOMBRE,GENERO,DIRECCION,MUNICIPIO,TELEFONO,APLICACRED) values ('65750304','CC','ANA MARIA OSPINA GUTIERREZ','F','COMUNA 7 BARRIO SALADO','IBAGUE','3167936599','SI');Insert into EDER.CLIENTE (ID_CLIENTE,TIPODOCU,NOMBRE,GENERO,DIRECCION,MUNICIPIO,TELEFONO,APLICACRED) values ('65766127','CC','ANA MILENA VARGAS RODRIGUEZ','F','COMUNA 7 BARRIO SALADO','IBAGUE','3175058757','SI');Insert into EDER.CLIENTE (ID_CLIENTE,TIPODOCU,NOMBRE,GENERO,DIRECCION,MUNICIPIO,TELEFONO,APLICACRED) values ('1110482939','CC','ANDREA JOHANA LASSO CASAS','F','COMUNA 7 BARRIO SALADO','IBAGUE','3107537245','SI');Insert into EDER.CLIENTE (ID_CLIENTE,TIPODOCU,NOMBRE,GENERO,DIRECCION,MUNICIPIO,TELEFONO,APLICACRED) values ('1005716577','CC','ANDREA KATHERINE BARAJAS ORTIZ','F','COMUNA 7 BARRIO SALADO','IBAGUE','3185508557','SI');Insert into EDER.CLIENTE (ID_CLIENTE,TIPODOCU,NOMBRE,GENERO,DIRECCION,MUNICIPIO,TELEFONO,APLICACRED) values ('65632335','CC','ANGELA GEOVANNA CRUZ VILLARREAL','F','COMUNA 7 BARRIO SALADO','IBAGUE','3107599964','SI');

23

Page 24: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

Insert into EDER.CLIENTE (ID_CLIENTE,TIPODOCU,NOMBRE,GENERO,DIRECCION,MUNICIPIO,TELEFONO,APLICACRED) values ('65785280','CC','ÁNGELA LUCERO GUZMÁN ÁVILA','F','COMUNA 7 BARRIO SALADO','IBAGUE','2645280','SI');Insert into EDER.CLIENTE (ID_CLIENTE,TIPODOCU,NOMBRE,GENERO,DIRECCION,MUNICIPIO,TELEFONO,APLICACRED) values ('1110454894','CC','ANGELICA LOPEZ YAZO','F','COMUNA 7 BARRIO SALADO','IBAGUE','3112465478','SI');Insert into EDER.CLIENTE (ID_CLIENTE,TIPODOCU,NOMBRE,GENERO,DIRECCION,MUNICIPIO,TELEFONO,APLICACRED) values ('65745454','CC','ARGENIS NARANJO MAYORGA','F','COMUNA 7 BARRIO SALADO','IBAGUE','3107564847','SI');Insert into EDER.CLIENTE (ID_CLIENTE,TIPODOCU,NOMBRE,GENERO,DIRECCION,MUNICIPIO,TELEFONO,APLICACRED) values ('5853663','CC','ARNULFO MATOMA TOVAR','M','COMUNA 7 BARRIO SALADO','IBAGUE','3178499778','SI');Insert into EDER.CLIENTE (ID_CLIENTE,TIPODOCU,NOMBRE,GENERO,DIRECCION,MUNICIPIO,TELEFONO,APLICACRED) values ('65738252','CC','BALBINA CALDERÓN','F','COMUNA 7 BARRIO SALADO','IBAGUE','3123902136','SI');Insert into EDER.CLIENTE (ID_CLIENTE,TIPODOCU,NOMBRE,GENERO,DIRECCION,MUNICIPIO,TELEFONO,APLICACRED) values ('57140150','CC','BEATRIZ ELENA MERCADO BUSTAMANTE','F','COMUNA 7 BARRIO SALADO','IBAGUE','3214211732','SI');Insert into EDER.CLIENTE (ID_CLIENTE,TIPODOCU,NOMBRE,GENERO,DIRECCION,MUNICIPIO,TELEFONO,APLICACRED) values ('65767685','CC','BENERANDA MORALES PATIÑO','F','COMUNA 7 BARRIO SALADO','IBAGUE','3102044319','SI');Insert into EDER.CLIENTE (ID_CLIENTE,TIPODOCU,NOMBRE,GENERO,DIRECCION,MUNICIPIO,TELEFONO,APLICACRED) values ('2285283','CC','BENJAMIN TAPIERO POVEDA','M','COMUNA 7 BARRIO SALADO','IBAGUE','3156025917','SI');Insert into EDER.CLIENTE (ID_CLIENTE,TIPODOCU,NOMBRE,GENERO,DIRECCION,MUNICIPIO,TELEFONO,APLICACRED) values ('14201118','CC','BENJAMIN URRUTIA GARCIA','M','COMUNA 7 BARRIO SALADO','IBAGUE','3108822100','SI');Insert into EDER.CLIENTE (ID_CLIENTE,TIPODOCU,NOMBRE,GENERO,DIRECCION,MUNICIPIO,TELEFONO,APLICACRED) values ('13053032','CC','BERNARDINO GRUESO','M','COMUNA 7 BARRIO SALADO','IBAGUE','3185508557','SI');Insert into EDER.CLIENTE (ID_CLIENTE,TIPODOCU,NOMBRE,GENERO,DIRECCION,MUNICIPIO,TELEFONO,APLICACRED) values ('65744973','CC','BETTY BRICEÑO CABRERA','F','COMUNA 7 BARRIO SALADO','IBAGUE','3107599964','SI');Insert into EDER.CLIENTE (ID_CLIENTE,TIPODOCU,NOMBRE,GENERO,DIRECCION,MUNICIPIO,TELEFONO,APLICACRED) values ('65779371','CC','BLANCA LUCIA BARRAGAN ARCE','F','COMUNA 7 BARRIO SALADO','IBAGUE','2645280','SI');Insert into EDER.CLIENTE (ID_CLIENTE,TIPODOCU,NOMBRE,GENERO,DIRECCION,MUNICIPIO,TELEFONO,APLICACRED) values ('65760687','CC','BLANCA NUBIA RENGIFO SANABRIA','F','COMUNA 7 BARRIO SALADO','IBAGUE','3112465478','SI');Insert into EDER.CLIENTE (ID_CLIENTE,TIPODOCU,NOMBRE,GENERO,DIRECCION,MUNICIPIO,TELEFONO,APLICACRE

24

Page 25: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

D) values ('1110508734','CC','BRILLIT GARDEL MARTINEZ CAMACHO','F','COMUNA 7 BARRIO SALADO','IBAGUE','3107564847','SI');Insert into EDER.CLIENTE (ID_CLIENTE,TIPODOCU,NOMBRE,GENERO,DIRECCION,MUNICIPIO,TELEFONO,APLICACRED) values ('93364814','CC','CARLOS IVAN ANACONA HERRERA','M','COMUNA 7 BARRIO SALADO','IBAGUE','3178499778','SI');Insert into EDER.CLIENTE (ID_CLIENTE,TIPODOCU,NOMBRE,GENERO,DIRECCION,MUNICIPIO,TELEFONO,APLICACRED) values ('93390994','CC','CARLOS JULIO DIAZ ROZO','M','COMUNA 7 BARRIO SALADO','IBAGUE','3123902136','SI');Insert into EDER.CLIENTE (ID_CLIENTE,TIPODOCU,NOMBRE,GENERO,DIRECCION,MUNICIPIO,TELEFONO,APLICACRED) values ('38247509','CC','CARLOTA MARSIGLIA BARRETO','F','COMUNA 7 BARRIO SALADO','IBAGUE','3214211732','SI');Insert into EDER.CLIENTE (ID_CLIENTE,TIPODOCU,NOMBRE,GENERO,DIRECCION,MUNICIPIO,TELEFONO,APLICACRED) values ('65742895','CC','CARMENZA GUZMAN SUAREZ','F','COMUNA 7 BARRIO SALADO','IBAGUE','3102044319','SI');Insert into EDER.CLIENTE (ID_CLIENTE,TIPODOCU,NOMBRE,GENERO,DIRECCION,MUNICIPIO,TELEFONO,APLICACRED) values ('28555320','CC','CARMENZA PEREA IBARRA','F','COMUNA 7 BARRIO SALADO','IBAGUE','3156025917','SI');REM INSERTING into EDER.DETALLE_DE_ABONOSET DEFINE OFF;Insert into EDER.DETALLE_DE_ABONO (ID_DET_ABONO,ID_ABONO,ID_MEDIO_DE_PAGO,VALOR_ABONO) values ('1','1','2','200000');Insert into EDER.DETALLE_DE_ABONO (ID_DET_ABONO,ID_ABONO,ID_MEDIO_DE_PAGO,VALOR_ABONO) values ('2','2','3','270000');Insert into EDER.DETALLE_DE_ABONO (ID_DET_ABONO,ID_ABONO,ID_MEDIO_DE_PAGO,VALOR_ABONO) values ('3','3','1','290000');Insert into EDER.DETALLE_DE_ABONO (ID_DET_ABONO,ID_ABONO,ID_MEDIO_DE_PAGO,VALOR_ABONO) values ('4','4','4','150000');Insert into EDER.DETALLE_DE_ABONO (ID_DET_ABONO,ID_ABONO,ID_MEDIO_DE_PAGO,VALOR_ABONO) values ('5','5','1','260000');Insert into EDER.DETALLE_DE_ABONO (ID_DET_ABONO,ID_ABONO,ID_MEDIO_DE_PAGO,VALOR_ABONO) values ('6','6','2','260000');Insert into EDER.DETALLE_DE_ABONO (ID_DET_ABONO,ID_ABONO,ID_MEDIO_DE_PAGO,VALOR_ABONO) values ('7','7','1','180000');Insert into EDER.DETALLE_DE_ABONO (ID_DET_ABONO,ID_ABONO,ID_MEDIO_DE_PAGO,VALOR_ABONO) values ('8','8','2','320000');Insert into EDER.DETALLE_DE_ABONO (ID_DET_ABONO,ID_ABONO,ID_MEDIO_DE_PAGO,VALOR_ABONO) values ('9','9','1','390000');Insert into EDER.DETALLE_DE_ABONO (ID_DET_ABONO,ID_ABONO,ID_MEDIO_DE_PAGO,VALOR_ABONO) values ('10','10','1','20000');REM INSERTING into EDER.FORMA_DE_PAGOSET DEFINE OFF;Insert into EDER.FORMA_DE_PAGO (ID_MEDIO_DE_PAGO,MEDIO__PAGO) values ('1','EFECTIVO');Insert into EDER.FORMA_DE_PAGO (ID_MEDIO_DE_PAGO,MEDIO__PAGO) values ('2','TARJETA D/C');Insert into EDER.FORMA_DE_PAGO (ID_MEDIO_DE_PAGO,MEDIO__PAGO) values ('3','CHEQUE');

25

Page 26: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

Insert into EDER.FORMA_DE_PAGO (ID_MEDIO_DE_PAGO,MEDIO__PAGO) values ('4','CONSIGNACION');Insert into EDER.FORMA_DE_PAGO (ID_MEDIO_DE_PAGO,MEDIO__PAGO) values ('5','BONOS');REM INSERTING into EDER.VENTASET DEFINE OFF;Insert into EDER.VENTA (ID_VENTA,ID_CLIENTE,FEVEN,TIPOVEN,ESTADOV,TOTALVEN,SALDO) values ('100','28542662',to_date('30/11/14','DD/MM/RR'),'CREDITO','PP','450000','450000');Insert into EDER.VENTA (ID_VENTA,ID_CLIENTE,FEVEN,TIPOVEN,ESTADOV,TOTALVEN,SALDO) values ('101','52266270',to_date('13/08/14','DD/MM/RR'),'CREDITO','PP','190000','190000');Insert into EDER.VENTA (ID_VENTA,ID_CLIENTE,FEVEN,TIPOVEN,ESTADOV,TOTALVEN,SALDO) values ('102','38203593',to_date('31/12/14','DD/MM/RR'),'CREDITO','PP','270000','270000');Insert into EDER.VENTA (ID_VENTA,ID_CLIENTE,FEVEN,TIPOVEN,ESTADOV,TOTALVEN,SALDO) values ('103','28548500',to_date('03/02/14','DD/MM/RR'),'CREDITO','PP','290000','290000');Insert into EDER.VENTA (ID_VENTA,ID_CLIENTE,FEVEN,TIPOVEN,ESTADOV,TOTALVEN,SALDO) values ('104','28540834',to_date('02/11/14','DD/MM/RR'),'CREDITO','PP','430000','430000');Insert into EDER.VENTA (ID_VENTA,ID_CLIENTE,FEVEN,TIPOVEN,ESTADOV,TOTALVEN,SALDO) values ('105','65750304',to_date('20/01/14','DD/MM/RR'),'CREDITO','PP','260000','260000');Insert into EDER.VENTA (ID_VENTA,ID_CLIENTE,FEVEN,TIPOVEN,ESTADOV,TOTALVEN,SALDO) values ('106','65766127',to_date('02/03/15','DD/MM/RR'),'CREDITO','PP','470000','470000');Insert into EDER.VENTA (ID_VENTA,ID_CLIENTE,FEVEN,TIPOVEN,ESTADOV,TOTALVEN,SALDO) values ('107','1110482939',to_date('15/10/14','DD/MM/RR'),'CREDITO','PP','180000','180000');Insert into EDER.VENTA (ID_VENTA,ID_CLIENTE,FEVEN,TIPOVEN,ESTADOV,TOTALVEN,SALDO) values ('108','1005716577',to_date('20/01/14','DD/MM/RR'),'CREDITO','PP','320000','320000');Insert into EDER.VENTA (ID_VENTA,ID_CLIENTE,FEVEN,TIPOVEN,ESTADOV,TOTALVEN,SALDO) values ('109','65632335',to_date('08/02/14','DD/MM/RR'),'CREDITO','PP','390000','390000');Insert into EDER.VENTA (ID_VENTA,ID_CLIENTE,FEVEN,TIPOVEN,ESTADOV,TOTALVEN,SALDO) values ('110','65785280',to_date('03/05/14','DD/MM/RR'),'CREDITO','PP','310000','310000');Insert into EDER.VENTA (ID_VENTA,ID_CLIENTE,FEVEN,TIPOVEN,ESTADOV,TOTALVEN,SALDO) values ('111','1110454894',to_date('06/07/14','DD/MM/RR'),'CREDITO','PP','430000','430000');Insert into EDER.VENTA (ID_VENTA,ID_CLIENTE,FEVEN,TIPOVEN,ESTADOV,TOTALVEN,SALDO) values ('112','65745454',to_date('01/12/14','DD/MM/RR'),'CREDITO','PP','390000','390000');Insert into EDER.VENTA (ID_VENTA,ID_CLIENTE,FEVEN,TIPOVEN,ESTADOV,TOTALVEN,SALDO) values ('113','5853663',to_date('06/04/14','DD/MM/RR'),'CREDITO','PP','160000','160000');Insert into EDER.VENTA (ID_VENTA,ID_CLIENTE,FEVEN,TIPOVEN,ESTADOV,TOTALVEN,SALDO) values ('114','65738252',to_date('07/10/14','DD/MM/RR'),'CREDITO','PP','300000','300000');Insert into EDER.VENTA (ID_VENTA,ID_CLIENTE,FEVEN,TIPOVEN,ESTADOV,TOTALVEN,SALDO) values ('115','57140150',to_date('12/11/14','DD/MM/RR'),'CREDITO','PP','330000','330000');

26

Page 27: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

Insert into EDER.VENTA (ID_VENTA,ID_CLIENTE,FEVEN,TIPOVEN,ESTADOV,TOTALVEN,SALDO) values ('116','65767685',to_date('28/02/15','DD/MM/RR'),'CREDITO','PP','420000','420000');Insert into EDER.VENTA (ID_VENTA,ID_CLIENTE,FEVEN,TIPOVEN,ESTADOV,TOTALVEN,SALDO) values ('117','2285283',to_date('19/03/14','DD/MM/RR'),'CREDITO','PP','190000','190000');Insert into EDER.VENTA (ID_VENTA,ID_CLIENTE,FEVEN,TIPOVEN,ESTADOV,TOTALVEN,SALDO) values ('118','14201118',to_date('05/08/14','DD/MM/RR'),'CREDITO','PP','480000','480000');Insert into EDER.VENTA (ID_VENTA,ID_CLIENTE,FEVEN,TIPOVEN,ESTADOV,TOTALVEN,SALDO) values ('119','13053032',to_date('11/04/14','DD/MM/RR'),'CREDITO','PP','130000','130000');Insert into EDER.VENTA (ID_VENTA,ID_CLIENTE,FEVEN,TIPOVEN,ESTADOV,TOTALVEN,SALDO) values ('120','65744973',to_date('19/06/14','DD/MM/RR'),'CREDITO','PP','110000','110000');Insert into EDER.VENTA (ID_VENTA,ID_CLIENTE,FEVEN,TIPOVEN,ESTADOV,TOTALVEN,SALDO) values ('121','65779371',to_date('12/09/14','DD/MM/RR'),'CREDITO','PP','390000','390000');Insert into EDER.VENTA (ID_VENTA,ID_CLIENTE,FEVEN,TIPOVEN,ESTADOV,TOTALVEN,SALDO) values ('122','65760687',to_date('09/10/14','DD/MM/RR'),'CREDITO','PP','200000','200000');Insert into EDER.VENTA (ID_VENTA,ID_CLIENTE,FEVEN,TIPOVEN,ESTADOV,TOTALVEN,SALDO) values ('123','1110508734',to_date('23/05/14','DD/MM/RR'),'CREDITO','PP','120000','120000');Insert into EDER.VENTA (ID_VENTA,ID_CLIENTE,FEVEN,TIPOVEN,ESTADOV,TOTALVEN,SALDO) values ('124','93364814',to_date('08/03/15','DD/MM/RR'),'CREDITO','PP','340000','340000');Insert into EDER.VENTA (ID_VENTA,ID_CLIENTE,FEVEN,TIPOVEN,ESTADOV,TOTALVEN,SALDO) values ('125','93390994',to_date('13/07/14','DD/MM/RR'),'CREDITO','PP','380000','380000');Insert into EDER.VENTA (ID_VENTA,ID_CLIENTE,FEVEN,TIPOVEN,ESTADOV,TOTALVEN,SALDO) values ('126','38247509',to_date('23/07/14','DD/MM/RR'),'CREDITO','PP','190000','190000');Insert into EDER.VENTA (ID_VENTA,ID_CLIENTE,FEVEN,TIPOVEN,ESTADOV,TOTALVEN,SALDO) values ('127','65742895',to_date('03/08/14','DD/MM/RR'),'CREDITO','PP','370000','370000');Insert into EDER.VENTA (ID_VENTA,ID_CLIENTE,FEVEN,TIPOVEN,ESTADOV,TOTALVEN,SALDO) values ('128','28555320',to_date('27/01/14','DD/MM/RR'),'CREDITO','PP','490000','490000');---------------------------------------------------------- DDL for Index EFECTUAR_FK--------------------------------------------------------

CREATE INDEX "EDER"."EFECTUAR_FK" ON "EDER"."VENTA" ("ID_CLIENTE") PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "SYSTEM" ;---------------------------------------------------------- DDL for Index PK_DETALLE_DE_ABONO--------------------------------------------------------

27

Page 28: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

CREATE UNIQUE INDEX "EDER"."PK_DETALLE_DE_ABONO" ON "EDER"."DETALLE_DE_ABONO" ("ID_DET_ABONO") PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "SYSTEM" ;---------------------------------------------------------- DDL for Index PK_ABONO--------------------------------------------------------

CREATE UNIQUE INDEX "EDER"."PK_ABONO" ON "EDER"."ABONO" ("ID_ABONO") PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "SYSTEM" ;---------------------------------------------------------- DDL for Index ESCOGE_FK--------------------------------------------------------

CREATE INDEX "EDER"."ESCOGE_FK" ON "EDER"."DETALLE_DE_ABONO" ("ID_MEDIO_DE_PAGO") PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "SYSTEM" ;---------------------------------------------------------- DDL for Index PK_VENTA--------------------------------------------------------

CREATE UNIQUE INDEX "EDER"."PK_VENTA" ON "EDER"."VENTA" ("ID_VENTA") PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "SYSTEM" ;---------------------------------------------------------- DDL for Index GENERA_FK--------------------------------------------------------

CREATE INDEX "EDER"."GENERA_FK" ON "EDER"."DETALLE_DE_ABONO" ("ID_ABONO") PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "SYSTEM" ;---------------------------------------------------------- DDL for Index PK_FORMA_DE_PAGO--------------------------------------------------------

CREATE UNIQUE INDEX "EDER"."PK_FORMA_DE_PAGO" ON "EDER"."FORMA_DE_PAGO" ("ID_MEDIO_DE_PAGO")

28

Page 29: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "SYSTEM" ;---------------------------------------------------------- DDL for Index PK_CLIENTE--------------------------------------------------------

CREATE UNIQUE INDEX "EDER"."PK_CLIENTE" ON "EDER"."CLIENTE" ("ID_CLIENTE") PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "SYSTEM" ;---------------------------------------------------------- DDL for Index PUEDE_SER_CANCELADA_FK--------------------------------------------------------

CREATE INDEX "EDER"."PUEDE_SER_CANCELADA_FK" ON "EDER"."ABONO" ("ID_VENTA") PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "SYSTEM" ;---------------------------------------------------------- Constraints for Table ABONO--------------------------------------------------------

ALTER TABLE "EDER"."ABONO" MODIFY ("ID_ABONO" NOT NULL ENABLE); ALTER TABLE "EDER"."ABONO" MODIFY ("ID_VENTA" NOT NULL ENABLE); ALTER TABLE "EDER"."ABONO" MODIFY ("FECHA" NOT NULL ENABLE); ALTER TABLE "EDER"."ABONO" ADD CONSTRAINT "PK_ABONO" PRIMARY KEY ("ID_ABONO") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "SYSTEM" ENABLE;---------------------------------------------------------- Constraints for Table DETALLE_DE_ABONO--------------------------------------------------------

ALTER TABLE "EDER"."DETALLE_DE_ABONO" MODIFY ("ID_DET_ABONO" NOT NULL ENABLE); ALTER TABLE "EDER"."DETALLE_DE_ABONO" MODIFY ("ID_MEDIO_DE_PAGO" NOT NULL ENABLE); ALTER TABLE "EDER"."DETALLE_DE_ABONO" MODIFY ("VALOR_ABONO" NOT NULL ENABLE); ALTER TABLE "EDER"."DETALLE_DE_ABONO" ADD CONSTRAINT "PK_DETALLE_DE_ABONO" PRIMARY KEY ("ID_DET_ABONO") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645

29

Page 30: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "SYSTEM" ENABLE;---------------------------------------------------------- Constraints for Table FORMA_DE_PAGO--------------------------------------------------------

ALTER TABLE "EDER"."FORMA_DE_PAGO" MODIFY ("ID_MEDIO_DE_PAGO" NOT NULL ENABLE); ALTER TABLE "EDER"."FORMA_DE_PAGO" MODIFY ("MEDIO__PAGO" NOT NULL ENABLE); ALTER TABLE "EDER"."FORMA_DE_PAGO" ADD CONSTRAINT "PK_FORMA_DE_PAGO" PRIMARY KEY ("ID_MEDIO_DE_PAGO") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "SYSTEM" ENABLE;---------------------------------------------------------- Constraints for Table VENTA--------------------------------------------------------

ALTER TABLE "EDER"."VENTA" MODIFY ("ID_VENTA" NOT NULL ENABLE); ALTER TABLE "EDER"."VENTA" MODIFY ("ID_CLIENTE" NOT NULL ENABLE); ALTER TABLE "EDER"."VENTA" MODIFY ("FEVEN" NOT NULL ENABLE); ALTER TABLE "EDER"."VENTA" MODIFY ("TIPOVEN" NOT NULL ENABLE); ALTER TABLE "EDER"."VENTA" MODIFY ("TOTALVEN" NOT NULL ENABLE); ALTER TABLE "EDER"."VENTA" ADD CONSTRAINT "PK_VENTA" PRIMARY KEY ("ID_VENTA") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "SYSTEM" ENABLE;---------------------------------------------------------- Constraints for Table CLIENTE--------------------------------------------------------

ALTER TABLE "EDER"."CLIENTE" MODIFY ("ID_CLIENTE" NOT NULL ENABLE); ALTER TABLE "EDER"."CLIENTE" MODIFY ("TIPODOCU" NOT NULL ENABLE); ALTER TABLE "EDER"."CLIENTE" MODIFY ("NOMBRE" NOT NULL ENABLE); ALTER TABLE "EDER"."CLIENTE" MODIFY ("GENERO" NOT NULL ENABLE); ALTER TABLE "EDER"."CLIENTE" MODIFY ("DIRECCION" NOT NULL ENABLE); ALTER TABLE "EDER"."CLIENTE" MODIFY ("MUNICIPIO" NOT NULL ENABLE); ALTER TABLE "EDER"."CLIENTE" MODIFY ("TELEFONO" NOT NULL ENABLE); ALTER TABLE "EDER"."CLIENTE" MODIFY ("APLICACRED" NOT NULL ENABLE); ALTER TABLE "EDER"."CLIENTE" ADD CONSTRAINT "PK_CLIENTE" PRIMARY KEY ("ID_CLIENTE") USING INDEX PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645 PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) TABLESPACE "SYSTEM" ENABLE;---------------------------------------------------------- Ref Constraints for Table ABONO

30

Page 31: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

--------------------------------------------------------

ALTER TABLE "EDER"."ABONO" ADD CONSTRAINT "FK_ABONO_PUEDE_SER_VENTA" FOREIGN KEY ("ID_VENTA")

REFERENCES "EDER"."VENTA" ("ID_VENTA") ENABLE;

---------------------------------------------------------- Ref Constraints for Table DETALLE_DE_ABONO--------------------------------------------------------

ALTER TABLE "EDER"."DETALLE_DE_ABONO" ADD CONSTRAINT "FK_DETALLE__ESCOGE_FORMA_DE" FOREIGN KEY ("ID_MEDIO_DE_PAGO")

REFERENCES "EDER"."FORMA_DE_PAGO" ("ID_MEDIO_DE_PAGO") ENABLE; ALTER TABLE "EDER"."DETALLE_DE_ABONO" ADD CONSTRAINT "FK_DETALLE__GENERA_ABONO" FOREIGN KEY ("ID_ABONO")

REFERENCES "EDER"."ABONO" ("ID_ABONO") ENABLE;

---------------------------------------------------------- Ref Constraints for Table VENTA--------------------------------------------------------

ALTER TABLE "EDER"."VENTA" ADD CONSTRAINT "FK_VENTA_EFECTUAR_CLIENTE" FOREIGN KEY ("ID_CLIENTE")

REFERENCES "EDER"."CLIENTE" ("ID_CLIENTE") ENABLE;---------------------------------------------------------- DDL for Procedure APLICAESTADO--------------------------------------------------------set define off;

CREATE OR REPLACE PROCEDURE "EDER"."APLICAESTADO"

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;

31

Page 32: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

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('...NÚMERO REGISTROS AFECTADOS...'||' ' ||v_confilas);

end;

/---------------------------------------------------------- DDL for Procedure CARTERACLIENTES--------------------------------------------------------set define off;

CREATE OR REPLACE PROCEDURE "EDER"."CARTERACLIENTES"

is

v_confilas number :=0;

Cursor saldcliente is select c.NOMBRE, v.ID_VENTA, SUM(v.SALDO) AS SALDOTOTAL from VENTA v, CLIENTE c where c.ID_CLIENTE = v.ID_CLIENTE AND v.SALDO > 0 group by c.NOMBRE, v.ID_VENTA order by c.NOMBRE;

begin DBMS_OUTPUT.PUT_LINE('************************************ LISTADO CARTERA AL DIA *************************************');dbms_output.put_line(rpad('Nombres y Apellidos Cliente',48)||' ' ||rpad('Venta',6)||rpad(' Saldo ',10)); DBMS_OUTPUT.PUT_LINE('--------------------------------------------------------------------------------------------------');

32

Page 33: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

For v_reg in saldcliente LOOPv_confilas := saldcliente%rowcount; DBMS_OUTPUT.PUT_LINE (rpad(v_reg.NOMBRE,50) ||' '||rpad(v_reg.ID_VENTA,6)||' '||rpad(v_reg.SALDOTOTAL,10)); DBMS_OUTPUT.PUT_LINE('---------------------------------------------------------------------------------------------------'); end loop; dbms_output.put_line('...NÚMERO REGISTROS AFECTADOS...'||' '||v_confilas); end;

/---------------------------------------------------------- DDL for Procedure CONSULTASALDO--------------------------------------------------------set define off;

CREATE OR REPLACE PROCEDURE "EDER"."CONSULTASALDO" (idabono in number,exis out number)is begin select VALOR_ABONO into exis from DETALLE_DE_ABONO where ID_ABONO = idabono;end;

/---------------------------------------------------------- DDL for Procedure INFORSALDOCLIENTE--------------------------------------------------------set define off;

CREATE OR REPLACE PROCEDURE "EDER"."INFORSALDOCLIENTE"

is

v_confilas number :=0;

Cursor saldcliente is select c.NOMBRE, v.ID_VENTA, SUM(v.SALDO) AS SALDOTOTAL from VENTA v, CLIENTE c where c.ID_CLIENTE = v.ID_CLIENTE AND v.SALDO = 0 group by c.NOMBRE, v.ID_VENTA order by c.NOMBRE;

begin DBMS_OUTPUT.PUT_LINE('************************************ LISTADO CARTERA SALDADA *************************************');

33

Page 34: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

dbms_output.put_line(rpad('Nombres y Apellidos Cliente',48)||' ' ||rpad('Venta',6)||rpad(' Saldo ',10)); DBMS_OUTPUT.PUT_LINE('--------------------------------------------------------------------------------------------------'); For v_reg in saldcliente LOOPv_confilas := saldcliente%rowcount; DBMS_OUTPUT.PUT_LINE (rpad(v_reg.NOMBRE,50) ||' '||rpad(v_reg.ID_VENTA,6)||' '||rpad(v_reg.SALDOTOTAL,10)); DBMS_OUTPUT.PUT_LINE('---------------------------------------------------------------------------------------------------'); end loop; dbms_output.put_line('...NÚMERO REGISTROS AFECTADOS...'||' '||v_confilas); end;

/---------------------------------------------------------- DDL for Procedure INSERTARABONO--------------------------------------------------------set define off;

CREATE OR REPLACE PROCEDURE "EDER"."INSERTARABONO" (IA NUMBER,IV NUMBER,FECH DATE, IDA NUMBER, IP NUMBER, VA FLOAT) IS

BEGIN

INSERT INTO ABONO VALUES (IA,IV,FECH,'P');INSERT INTO DETALLE_DE_ABONO VALUES (IDA, IA, IP, VA);

COMMIT;END INSERTARABONO;

/---------------------------------------------------------- DDL for Procedure INSERTARCLIENTE--------------------------------------------------------set define off;

CREATE OR REPLACE PROCEDURE "EDER"."INSERTARCLIENTE" (cc number,td CHAR,nom VARCHAR2,gen CHAR, dir varchar2,mun VARCHAR2,tel number,ac VARCHAR2)is

begin

insert into CLIENTE values(cc ,td, nom ,gen, dir,mun ,tel ,ac);commit;

34

Page 35: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

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 )

LOOPdbms_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;

BEGINSELECT * INTO v_abonoFROM ABONO WHERE ID_ABONO = IA;res:= true;

exception

35

Page 36: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

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 dbms_output.put_line(' Abono ya existe ');

36

Page 37: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

end;

/---------------------------------------------------------- DDL for Procedure VALIDARINSERCIONCLIENTE--------------------------------------------------------set define off;

CREATE OR REPLACE PROCEDURE "EDER"."VALIDARINSERCIONCLIENTE" (cc number,td CHAR,nom VARCHAR2,gen CHAR, dir varchar2,mun VARCHAR2,tel number,ac VARCHAR2)isres boolean;yaexiste exception;

begin VALIDACLIENTE(cc, res); if res = true then

raise yaexiste; else insertarcliente(cc ,td, nom ,gen, dir,mun ,tel ,ac); dbms_output. put_line(' Cliente adicionado '); end if;

exception

WHEN yaexiste THEN dbms_output.put_line(' Cliente ya existe ');end;

/---------------------------------------------------------- DDL for Procedure VALIDAVENTA--------------------------------------------------------set define off;

CREATE OR REPLACE PROCEDURE "EDER"."VALIDAVENTA" (IV NUMBER, res out boolean) IS

v_venta VENTA%rowtype;

BEGINSELECT * INTO v_ventaFROM VENTA WHERE ID_VENTA = IV;res:= true;

exception when No_data_found then res:=FALSE;

END VALIDAventa;

/

37

Page 38: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

5.2 CAPA LÓGICA

5.2.1 PROCEDIMIENTOS5.2.1.1 PROCEDIMIENTOS DE EDICIÓN TABLAS BÁSICAS

INSERCIÓN DE DATOS TABLAS BÁSICAS

CLIENTE

Procedimiento Almacenado insertarcliente

create or replace procedure insertarcliente(cc number,td CHAR,nom VARCHAR2,gen CHAR, dir varchar2,mun VARCHAR2,tel number,ac VARCHAR2)is

begin

insert into CLIENTE values(cc ,td, nom ,gen, dir,mun ,tel ,ac);commit;

end; /

38

INSERTARCLIENTE En este procedimiento el usuario deberá solicitar

los datos básicos para el registro en la base de datos, tales como, Numero de identificación, nombre, genero, dirección, telefono el sistema verifica la existencia o no del cliente, si existe se hace una validación y se envía un mensaje diciendo que ya existe, de lo contrario se procede a Insertar el cliente en la tabla

Procediemientos que Intervienen

1. Bloque Anónimo que ejecuta el procedimiento validarinsercioncliente,

2. Procedimiento Almacenado validacliente

3. Procedimiento Almacenado insertarcliente

Page 39: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

Procedimiento Almacenado validacliente

create or replace procedure 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;

Procedimiento Almacenado validarinsercioncliente

create or replace procedure validarinsercioncliente (cc number,td CHAR,nom VARCHAR2,gen CHAR, dir varchar2,mun VARCHAR2,tel number,ac VARCHAR2)isres boolean;yaexiste exception;

begin VALIDACLIENTE(cc, res); if res = true then

raise yaexiste; else insertarcliente(cc ,td, nom ,gen, dir,mun ,tel ,ac); dbms_output. put_line(' Cliente adicionado '); end if;

exception

WHEN yaexiste THEN dbms_output.put_line(' Cliente ya existe ');end;

39

Page 40: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

Bloque Anónimo que ejecuta el procedimiento validarinsercioncliente

set serveroutput on;set verify off;

Declare

v_CC number(38,0) := &Cédula_cliente;v_TD (38,0) varchar2(2):= &Tipo_Docv_NOMB varchar2(50):= &Nombres;v_GEN varchar2(2):=&Genero;v_DIR varchar2(50) :=&Direccion;v_MUNI number(38,0) :=&Municipio;v_TEL number (38,0) :=&Telefono ;v_APLCR varchar2(2) :=&Aplica_credito?;

begin validarinsercioncliente (v_ CC, v_ TD, v_ NOMB, v_ GEN, v_ DIR, v_ MUNI, v_ TEL, v_ APLCR);end; end;/

ABONO

40

INSERTARABONO 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 validación y se envía un mensaje diciendo que ya existe, de lo contrario se procede a Insertar el cliente en la tabla

Procediemientos que Intervienen

1. Bloque Anónimo que ejecuta el procedimiento validarinsercionabono,

2. Procedimiento Almacenado validaabono

3. Procedimiento Almacenado insertarabono

Page 41: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

Procedimiento Almacenado insertarabono

create or replace PROCEDURE INSERTARABONO (IA NUMBER,IV NUMBER,FECH DATE, IDA NUMBER, IP NUMBER, VA FLOAT) IS

BEGIN

INSERT INTO ABONO VALUES (IA,IV,FECH,'P');INSERT INTO DETALLE_DE_ABONO VALUES (IDA, IA, IP, VA);

COMMIT;END INSERTARABONO;

Procedimiento Almacenado validaabono

create or replace PROCEDURE VALIDAABONO (IA NUMBER, res out boolean) IS

v_abono ABONO%rowtype;

BEGIN

SELECT * INTO v_abonoFROM ABONO WHERE ID_ABONO = IA;res:= true;

exception when No_data_found then res:=FALSE;

END VALIDAABONO;

Procedimiento Almacenado validarinsercionabono

create or replace procedure VALIDARINSERCIONABONO (IA NUMBER,IV NUMBER,FECH DATE, IDA NUMBER, IP NUMBER, VA FLOAT) IS res boolean;yaexiste exception;

BEGIN VALIDAABONO(IA,res);

41

Page 42: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

if res = true thenraise yaexiste;

ELSE INSERTARABONO (IA, IV, FECH, IDA, IP, VA); dbms_output.put_line(' Abono adicionado '); end if;

exception

WHEN yaexiste THEN dbms_output.put_line(' Abono ya existe ');end;

Procedimiento Que Evalua La Existencia De La Venta

create or replace PROCEDURE VALIDAventa (IV NUMBER, res out boolean) IS

v_venta VENTA%rowtype;

BEGINSELECT * INTO v_ventaFROM VENTA WHERE ID_VENTA = IV;res:= true;

exception when No_data_found then res:=FALSE;

END VALIDAventa;

Bloque Anónimo que ejecuta el procedimiento validarinsercionabono

set serveroutput on;set verify off;Declarev_IA number(38,0) := &Id_Abono;v_IV number(38,0) := &Id_venta;v_FECH date :='&Fecha';v_IDA number(38,0) :=&Id_detalle_abono;v_IP number (38,0) :=&Medio_pago;v_VA float :=&Valor_abono; begin validarinsercionabono(v_IA, v_IV, v_FECH ,v_IDA, v_IP, v_VA);end;

42

Page 43: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

5.2.1.2 CONSULTAS

Consultas a Tablas

Listado de Abonos

LISTAROPERARIO Este informe lista los abonos realizados

a la fecha tan solo debemos escribir y ejecutar en el prompt:Execute listarabonos;.

create or replace procedure 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 )

LOOPdbms_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;

43

Page 44: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

Listado de Cartera Saldada

REPORTEOPERARIO Este informe lista los Clientes que están

a paz y salvo en sus ventas (saldo =0), a la fecha tan solo debemos escribir y ejecutar en el prompt:Execute inforsaldocliente;.

create or replace procedure inforsaldocliente

is

v_confilas number :=0;

Cursor saldcliente is select c.NOMBRE, v.ID_VENTA, SUM(v.SALDO) AS SALDOTOTAL from VENTA v, CLIENTE c where c.ID_CLIENTE = v.ID_CLIENTE AND v.SALDO = 0 group by c.NOMBRE, v.ID_VENTA order by c.NOMBRE;

begin DBMS_OUTPUT.PUT_LINE('************************************ LISTADO CARTERA SALDADA *************************************');dbms_output.put_line(rpad('Nombres y Apellidos Cliente',48)||' ' ||rpad('Venta',6)||rpad(' Saldo ',10)); DBMS_OUTPUT.PUT_LINE('--------------------------------------------------------------------------------------------------'); For v_reg in saldcliente LOOPv_confilas := saldcliente%rowcount; DBMS_OUTPUT.PUT_LINE (rpad(v_reg.NOMBRE,50) ||' '||rpad(v_reg.ID_VENTA,6)||' '||rpad(v_reg.SALDOTOTAL,10)); DBMS_OUTPUT.PUT_LINE('---------------------------------------------------------------------------------------------------');

44

Page 45: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

end loop; dbms_output.put_line('...NÚMERO REGISTROS AFECTADOS...'||' '||v_confilas); end;Listado de Cartera al dia

LISTAROPERARIO Este informe lista los Clientes que están

en cartera o mora (saldo >0), a la fecha tan solo debemos escribir y ejecutar en el prompt:Execute carteraclientes;.

create or replace procedure carteraclientes

is

v_confilas number :=0;

Cursor saldcliente is select c.NOMBRE, v.ID_VENTA, SUM(v.SALDO) AS SALDOTOTAL from VENTA v, CLIENTE c where c.ID_CLIENTE = v.ID_CLIENTE AND v.SALDO > 0 group by c.NOMBRE, v.ID_VENTA order by c.NOMBRE;

begin DBMS_OUTPUT.PUT_LINE('************************************ LISTADO CARTERA AL DIA *************************************');dbms_output.put_line(rpad('Nombres y Apellidos Cliente',48)||' ' ||rpad('Venta',6)||rpad(' Saldo ',10)); DBMS_OUTPUT.PUT_LINE('--------------------------------------------------------------------------------------------------'); For v_reg in saldcliente LOOPv_confilas := saldcliente%rowcount; DBMS_OUTPUT.PUT_LINE (rpad(v_reg.NOMBRE,50) ||' '||rpad(v_reg.ID_VENTA,6)||' '||rpad(v_reg.SALDOTOTAL,10));

45

Page 46: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

DBMS_OUTPUT.PUT_LINE('---------------------------------------------------------------------------------------------------'); end loop; dbms_output.put_line('...NÚMERO REGISTROS AFECTADOS...'||' '||v_confilas); end;

5.2.1.3 PROCESOS DE ACTUALIZACIÓN DE DATOS EN LOTE

Actualizar Campos de tablas ABONO Y VENTA

ACTUALIZAROPERARIO Este Procedimiento es un cursor que

lista los abonos realizados y aplica estos abonos al saldo de la venta y me cambia los estados de la tabla venta y Abono. Solo debemos escribir y ejecutar en el prompt:Execute APLICAESTADO;.

create or replace procedure APLICAESTADO

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

Page 47: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

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('...NÚMERO REGISTROS AFECTADOS...'||' ' ||v_confilas);

end;

47

Page 48: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

6. PRUEBAS

Prueba de Actualizacion de estados y saldo

Estado previo:

Select a.*, v.ESTADOV, v.SALDOfrom ABONO a, VENTA v WHERE a.ID_VENTA=v.ID_VENTA;

1 100 01/01/15 P PP 500004 101 02/03/15 P PP 400002 102 18/03/15 P PP 2200003 103 03/12/14 P PA 500005 104 02/11/14 P PP 1700006 105 20/01/14 P PP 100007 107 19/03/15 P PP 900008 108 19/03/15 P PP 800009 109 20/03/15 P PP 10000010 110 12/03/15 P PP 310000

Ejecución 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 ...NÚMERO REGISTROS AFECTADOS... 10El proceso ha terminado.Desconectando de la base de datos Semi.

48

Page 49: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

Corriendo de nuevo la consulta (Select a.*, v.ESTADOV, v.SALDO from ABONO a, VENTA v WHERE a.ID_VENTA=v.ID_VENTA;), vemos que el estado de Abono cambio a ‘A’ y el estado de Venta cambia a ‘PA’ cuando el saldo es = 0

1 100 01/01/15 A PP 500004 101 02/03/15 A PP 400002 102 18/03/15 A PA 03 103 03/12/14 A PA 05 104 02/11/14 A PP 1700006 105 20/01/14 A PP -2100007 107 19/03/15 A PA 08 108 19/03/15 A PA 09 109 20/03/15 A PA 010 110 12/03/15 A PP 310000

Consulta para verificar cartera al dia

BEGIN CARTERACLIENTES();--rollback; END;

Conectando a la base de datos Semi.************************************ LISTADO CARTERA AL DIA *************************************Nombres y Apellidos Cliente Venta Saldo --------------------------------------------------------------------------------------------------ADRIANA MARIA GALINDO HERRERA 100 50000 ---------------------------------------------------------------------------------------------------AMPARO ARISTIZABAL SUAZA 101 40000 ---------------------------------------------------------------------------------------------------ANA ELVIA OTALORA CALDERON 104 170000 ---------------------------------------------------------------------------------------------------ANA MILENA VARGAS RODRIGUEZ 106 470000 ---------------------------------------------------------------------------------------------------ÁNGELA LUCERO GUZMÁN ÁVILA 110 310000 ---------------------------------------------------------------------------------------------------ANGELICA LOPEZ YAZO 111 430000 ---------------------------------------------------------------------------------------------------ARGENIS NARANJO MAYORGA 112 390000 ---------------------------------------------------------------------------------------------------ARNULFO MATOMA TOVAR 113 160000 ---------------------------------------------------------------------------------------------------BALBINA CALDERÓN 114 300000 ---------------------------------------------------------------------------------------------------BEATRIZ ELENA MERCADO BUSTAMANTE 115 330000 ---------------------------------------------------------------------------------------------------

49

Page 50: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

BENERANDA MORALES PATIÑO 116 420000 ---------------------------------------------------------------------------------------------------BENJAMIN TAPIERO POVEDA 117 190000 ---------------------------------------------------------------------------------------------------BENJAMIN URRUTIA GARCIA 118 480000 ---------------------------------------------------------------------------------------------------BERNARDINO GRUESO 119 130000 ---------------------------------------------------------------------------------------------------BETTY BRICEÑO CABRERA 120 110000 ---------------------------------------------------------------------------------------------------BLANCA LUCIA BARRAGAN ARCE 121 390000 ---------------------------------------------------------------------------------------------------BLANCA NUBIA RENGIFO SANABRIA 122 200000 ---------------------------------------------------------------------------------------------------BRILLIT GARDEL MARTINEZ CAMACHO 123 120000 ---------------------------------------------------------------------------------------------------CARLOS IVAN ANACONA HERRERA 124 340000 ---------------------------------------------------------------------------------------------------CARLOS JULIO DIAZ ROZO 125 380000 ---------------------------------------------------------------------------------------------------CARLOTA MARSIGLIA BARRETO 126 190000 ---------------------------------------------------------------------------------------------------CARMENZA GUZMAN SUAREZ 127 370000 ---------------------------------------------------------------------------------------------------CARMENZA PEREA IBARRA 128 490000 ---------------------------------------------------------------------------------------------------...NÚMERO REGISTROS AFECTADOS... 23El proceso ha terminado.Desconectando de la base de datos Semi.

Consulta Clientes en paz y salvo (saldo=0)

BEGIN INFORSALDOCLIENTE();--rollback; END;

Conectando a la base de datos Semi.************************************ LISTADO CARTERA SALDADA *************************************Nombres y Apellidos Cliente Venta Saldo --------------------------------------------------------------------------------------------------AMPARO DUCUARA YATE 102 0 ---------------------------------------------------------------------------------------------------ANA DELIA BAUTISTA VARGAS 103 0 ---------------------------------------------------------------------------------------------------ANDREA JOHANA LASSO CASAS 107 0 ---------------------------------------------------------------------------------------------------

50

Page 51: Informe Final Seminario Plsql Cuentas Por Cobrar Revisado

ANDREA KATHERINE BARAJAS ORTIZ 108 0 ---------------------------------------------------------------------------------------------------ANGELA GEOVANNA CRUZ VILLARREAL 109 0 ---------------------------------------------------------------------------------------------------...NÚMERO REGISTROS AFECTADOS... 5El proceso ha terminado.Desconectando de la base de datos Semi.

HAY DEFICIENCIA DE DETALLES EN LOS CASOS DE USOFALTAN PRUEBAS DESDE SQLDEVELOPERFALTA ANEXAR ARCHIVOS DE DIAGRAMAS Y CODIGO DE PROCEDIMIENTOS PLSQL

51