/*==============================================================*/
/* DBMS name:      ORACLE Version 9i                            */
/* Created on:     03/01/2008 04:43:10 p.m.                     */
/*==============================================================*/


/*==============================================================*/
/* Table: PPLDETDEVOLUCIONES                                    */
/*==============================================================*/
CREATE TABLE PPLDETDEVOLUCIONES  (
   CIA                  CHAR(3)                         NOT NULL,
   PAGO                 NUMBER(6)                       NOT NULL,
   PROVEEDOR            VARCHAR2(25)                    NOT NULL,
   NUM_FACTURA          VARCHAR2(10)                    NOT NULL,
   ARTICULO             VARCHAR2(25)                    NOT NULL,
   FECHA                DATE                            NOT NULL,
   CANTIDAD             NUMBER(14,4)                    NOT NULL,
   VALOR                NUMBER(14,2)                    NOT NULL,
   DESCUENTO            NUMBER(14,2)                   DEFAULT 0 NOT NULL,
   CONSTRAINT PPLDETDEVOLUCIONES_PK PRIMARY KEY (CIA, PAGO, PROVEEDOR, NUM_FACTURA, ARTICULO, FECHA)
);

/*==============================================================*/
/* Index: PPLDETFACTURA_DETDEVOL_FK                             */
/*==============================================================*/
CREATE INDEX PPLDETFACTURA_DETDEVOL_FK ON PPLDETDEVOLUCIONES (
   CIA ASC,
   PROVEEDOR ASC,
   NUM_FACTURA ASC,
   ARTICULO ASC
);

/*==============================================================*/
/* Table: PPLDETFACTURAS                                        */
/*==============================================================*/
CREATE TABLE PPLDETFACTURAS  (
   CIA                  CHAR(3)                         NOT NULL,
   PROVEEDOR            VARCHAR2(25)                    NOT NULL,
   NUM_FACTURA          VARCHAR2(10)                    NOT NULL,
   ARTICULO             VARCHAR2(25)                    NOT NULL,
   CANTCOMPRA           NUMBER(14,4)                    NOT NULL,
   CANTRECLAMO          NUMBER(14,4)                   DEFAULT 0 NOT NULL,
   CANTVENDIDO          NUMBER(14,4)                   DEFAULT 0 NOT NULL,
   VALORCOMPRA          NUMBER(14,2)                    NOT NULL,
   CONSTRAINT PPLDETFACTURAS_PK PRIMARY KEY (CIA, PROVEEDOR, NUM_FACTURA, ARTICULO)
);

/*==============================================================*/
/* Index: PPLFACTURAS_DET_FK                                    */
/*==============================================================*/
CREATE INDEX PPLFACTURAS_DET_FK ON PPLDETFACTURAS (
   CIA ASC,
   PROVEEDOR ASC,
   NUM_FACTURA ASC
);

/*==============================================================*/
/* Table: PPLDETVENTAS                                          */
/*==============================================================*/
CREATE TABLE PPLDETVENTAS  (
   CIA                  CHAR(3)                         NOT NULL,
   PAGO                 NUMBER(6)                       NOT NULL,
   PROVEEDOR            VARCHAR2(25)                    NOT NULL,
   NUM_FACTURA          VARCHAR2(10)                    NOT NULL,
   ARTICULO             VARCHAR2(25)                    NOT NULL,
   FECHA                DATE                            NOT NULL,
   CANTIDAD             NUMBER(14,4)                    NOT NULL,
   DEVUELTO             NUMBER(14,4)                   DEFAULT 0 NOT NULL,
   VALOR                NUMBER(14,2)                    NOT NULL,
   DESCUENTO            NUMBER(14,2)                   DEFAULT 0 NOT NULL,
   CONSTRAINT PPLDETVENTAS_PK PRIMARY KEY (CIA, PAGO, PROVEEDOR, NUM_FACTURA, ARTICULO, FECHA)
);

/*==============================================================*/
/* Index: PPLPAGO_DETVENTAS_FK                                  */
/*==============================================================*/
CREATE INDEX PPLPAGO_DETVENTAS_FK ON PPLDETVENTAS (
   CIA ASC,
   PAGO ASC
);

/*==============================================================*/
/* Table: PPLEXISTE                                             */
/*==============================================================*/
CREATE TABLE PPLEXISTE  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_ARTICULO         VARCHAR2(25)                    NOT NULL,
   EXISTE               NUMBER(14,4)                    NOT NULL,
   ASIGNADO             NUMBER(14,4)                    NOT NULL,
   CONSTRAINT PPLEXISTE_PK PRIMARY KEY (COD_CIA, COD_ARTICULO),
   CONSTRAINT PPLEXISTE_ASIGNADO_CK CHECK (ASIGNADO <= EXISTE)
);

/*==============================================================*/
/* Table: PPLFACTURAS                                           */
/*==============================================================*/
CREATE TABLE PPLFACTURAS  (
   CIA                  CHAR(3)                         NOT NULL,
   PROVEEDOR            VARCHAR2(25)                    NOT NULL,
   NUM_FACTURA          VARCHAR2(10)                    NOT NULL,
   FECHA                DATE                            NOT NULL,
   ESTADO               CHAR(1)                         NOT NULL
      CONSTRAINT PPLFACTURAS_ESTADO_CK CHECK (ESTADO IN ('P','A','N')),
   CONSTRAINT PPLFACTURAS_PK PRIMARY KEY (CIA, PROVEEDOR, NUM_FACTURA)
);

/*==============================================================*/
/* Index: PPLPROVEEDORES_FACTURA_FK                             */
/*==============================================================*/
CREATE INDEX PPLPROVEEDORES_FACTURA_FK ON PPLFACTURAS (
   CIA ASC,
   PROVEEDOR ASC
);

/*==============================================================*/
/* Table: PPLMAPEO                                              */
/*==============================================================*/
CREATE TABLE PPLMAPEO  (
   CIA                  CHAR(3)                         NOT NULL,
   ARTICULO             VARCHAR2(25)                    NOT NULL,
   ARTPLA               VARCHAR2(25)                    NOT NULL,
   CONSTRAINT PPLMAPEO_PK PRIMARY KEY (CIA, ARTICULO)
);

/*==============================================================*/
/* Table: PPLPAGO                                               */
/*==============================================================*/
CREATE TABLE PPLPAGO  (
   CIA                  CHAR(3)                         NOT NULL,
   PAGO                 NUMBER(6)                       NOT NULL,
   FECHAREG             DATE                            NOT NULL,
   FECHACORTE           DATE                            NOT NULL,
   GRUPOPAGO            NUMBER(1)                       NOT NULL,
   DESCRIPCION          VARCHAR2(100)                   NOT NULL,
   USUARIO              VARCHAR2(30)                    NOT NULL,
   ESTADO               CHAR(1)                         NOT NULL
      CONSTRAINT PPLPAGO_ESTADO_CK CHECK (ESTADO IN ('P','A','N')),
   CONSTRAINT PPLPAGO_PK PRIMARY KEY (CIA, PAGO)
);

/*==============================================================*/
/* Index: PPLPARAMETROS_PAGO_FK                                 */
/*==============================================================*/
CREATE INDEX PPLPARAMETROS_PAGO_FK ON PPLPAGO (
   CIA ASC
);

/*==============================================================*/
/* Table: PPLPARAMETROS                                         */
/*==============================================================*/
CREATE TABLE PPLPARAMETROS  (
   CIA                  CHAR(3)                         NOT NULL,
   SUCURSAL             CHAR(3)                         NOT NULL,
   TIP_DOC_INV          CHAR(2)                         NOT NULL,
   TIP_DOC_CXP          CHAR(3)                         NOT NULL,
   MONEDA               VARCHAR2(3)                     NOT NULL,
   CONSPAGO             NUMBER(6)                       NOT NULL,
   CONSTRAINT PPLPARAMETROS_PK PRIMARY KEY (CIA)
);

/*==============================================================*/
/* Table: PPLPROVEEDORES                                        */
/*==============================================================*/
CREATE TABLE PPLPROVEEDORES  (
   CIA                  CHAR(3)                         NOT NULL,
   PROVEEDOR            VARCHAR2(25)                    NOT NULL,
   FECHAINICIO          DATE                            NOT NULL,
   FECHAACT             DATE                            NOT NULL,
   GRUPOPAGO            NUMBER(1),
   OBSERVACIONES        VARCHAR2(200),
   PORCREC              NUMBER(5,2)                     NOT NULL,
   ESTADO               CHAR(1)                         NOT NULL
      CONSTRAINT PPLPROVEEDORES_ESTADO_CK CHECK (ESTADO IN ('A','I')),
   CONSTRAINT PPLPROVEEDORES_PK PRIMARY KEY (CIA, PROVEEDOR)
);

/*==============================================================*/
/* Index: PPLPARAMETROS_PROV_FK                                 */
/*==============================================================*/
CREATE INDEX PPLPARAMETROS_PROV_FK ON PPLPROVEEDORES (
   CIA ASC
);

/*==============================================================*/
/* Table: PPLRESPAGO                                            */
/*==============================================================*/
CREATE TABLE PPLRESPAGO  (
   CIA                  CHAR(3)                         NOT NULL,
   PAGO                 NUMBER(6)                       NOT NULL,
   PROVEEDOR            VARCHAR2(25)                    NOT NULL,
   NUM_FACTURA          VARCHAR2(10)                    NOT NULL,
   VENDIDO              NUMBER(14,2)                    NOT NULL,
   DEVUELTO             NUMBER(14,2)                    NOT NULL,
   AJUSTE               NUMBER(14,2)                    NOT NULL,
   DESCRIPCION          VARCHAR2(200),
   TIP_DOC_CXP          CHAR(3),
   NUM_DOC_CXP          NUMBER(10),
   CONSTRAINT PPLRESPAGO_PK PRIMARY KEY (CIA, PAGO, PROVEEDOR, NUM_FACTURA)
);

/*==============================================================*/
/* Index: PPLPAGO_RES_FK                                        */
/*==============================================================*/
CREATE INDEX PPLPAGO_RES_FK ON PPLRESPAGO (
   CIA ASC,
   PAGO ASC
);

/*==============================================================*/
/* Index: PPLPROVEEDORES_FK                                     */
/*==============================================================*/
CREATE INDEX PPLPROVEEDORES_FK ON PPLRESPAGO (
   CIA ASC,
   PROVEEDOR ASC
);

/*==============================================================*/
/* Table: PPLTEMPRECLA                                          */
/*==============================================================*/
CREATE TABLE PPLTEMPRECLA  (
   COD_ARTICULO         VARCHAR2(25)                    NOT NULL,
   CANTIDAD             NUMBER(14,4)                    NOT NULL,
   SUBTOTAL             NUMBER(14,2)                    NOT NULL,
   CONSTRAINT PPLTEMPRECLA_PK PRIMARY KEY (COD_ARTICULO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* View: PPLVDETFACTURAS                                        */
/*==============================================================*/
CREATE OR REPLACE VIEW PPLVDETFACTURAS AS
 SELECT D.CIA,D.PROVEEDOR,D.NUM_FACTURA,F.FECHA,
        D.ARTICULO,D.CANTCOMPRA,D.CANTRECLAMO,D.CANTVENDIDO,
        D.VALORCOMPRA,F.ESTADO
 FROM PPLFACTURAS F,PPLDETFACTURAS D
 WHERE F.CIA=D.CIA
 AND   F.PROVEEDOR=D.PROVEEDOR
 AND   F.NUM_FACTURA=D.NUM_FACTURA;

/*==============================================================*/
/* View: PPLVRESUMEN                                            */
/*==============================================================*/
CREATE OR REPLACE VIEW PPLVRESUMEN AS
SELECT CIA, PAGO, PROVEEDOR, TIP_DOC_CXP, NUM_DOC_CXP,
        SUM(VENDIDO) VENDIDO,
        SUM(DEVUELTO) DEVUELTO, 
        SUM(AJUSTE) AJUSTE
FROM    PPLRESPAGO
GROUP BY CIA, PAGO, PROVEEDOR, TIP_DOC_CXP, NUM_DOC_CXP;

ALTER TABLE PPLDETDEVOLUCIONES
   ADD CONSTRAINT PPLPAGO_DETDEVOL_FK FOREIGN KEY (CIA, PAGO)
      REFERENCES PPLPAGO (CIA, PAGO);

ALTER TABLE PPLDETFACTURAS
   ADD CONSTRAINT PPLFACTURAS_DETFACTURAS_FK FOREIGN KEY (CIA, PROVEEDOR, NUM_FACTURA)
      REFERENCES PPLFACTURAS (CIA, PROVEEDOR, NUM_FACTURA);

ALTER TABLE PPLDETVENTAS
   ADD CONSTRAINT PPLPAGO_DETVENTAS_FK FOREIGN KEY (CIA, PAGO)
      REFERENCES PPLPAGO (CIA, PAGO);

ALTER TABLE PPLFACTURAS
   ADD CONSTRAINT PPLPROVEEDORES_FACTURAS_FK FOREIGN KEY (CIA, PROVEEDOR)
      REFERENCES PPLPROVEEDORES (CIA, PROVEEDOR);

ALTER TABLE PPLMAPEO
   ADD CONSTRAINT PPLPARAMETROS_MAPEO_FK FOREIGN KEY (CIA)
      REFERENCES PPLPARAMETROS (CIA);

ALTER TABLE PPLPAGO
   ADD CONSTRAINT PPLPARAMETROS_PAGO_FK FOREIGN KEY (CIA)
      REFERENCES PPLPARAMETROS (CIA);

ALTER TABLE PPLPROVEEDORES
   ADD CONSTRAINT PPLPARAMETROS_PROVEEDORES_FK FOREIGN KEY (CIA)
      REFERENCES PPLPARAMETROS (CIA);

ALTER TABLE PPLRESPAGO
   ADD CONSTRAINT PPLPAGO_RESPAGO_FK FOREIGN KEY (CIA, PAGO)
      REFERENCES PPLPAGO (CIA, PAGO);

ALTER TABLE PPLRESPAGO
   ADD CONSTRAINT PPLPROVEEDORES_RESPAGO_FK FOREIGN KEY (CIA, PROVEEDOR)
      REFERENCES PPLPROVEEDORES (CIA, PROVEEDOR);

