/*==============================================================*/
/* DBMS name:      ORACLE Version 9i                            */
/* Created on:     30/01/2008 11:56:29 a.m.                     */
/*==============================================================*/


/*==============================================================*/
/* Table: ASIENTOCAJA                                           */
/*==============================================================*/
CREATE TABLE ASIENTOCAJA  (
   CIA                  CHAR(3)                         NOT NULL,
   CUENTA               VARCHAR2(25)                    NOT NULL,
   CCOSTO               VARCHAR2(7)                     NOT NULL,
   DIA                  DATE                            NOT NULL,
   ESDEBITOCREDITO      CHAR(1)                         NOT NULL
      CONSTRAINT ASIENTOCAJA_ESDEBITOCR_CK CHECK (ESDEBITOCREDITO IN ('D','C','N')),
   MONTO                NUMBER(14,2)                    NOT NULL
      CONSTRAINT ASIENTOCAJA_MONTO_CK CHECK (MONTO >= 0),
   TIPOCAMBIO           NUMBER(14,4)                    NOT NULL,
   CAMBIOBASE           NUMBER(14,4)                    NOT NULL,
   MONEDA               VARCHAR2(3)                     NOT NULL,
   NUM_ASIENTO          VARCHAR2(15),
   CUENTA_PUENTE        VARCHAR2(25),
   CONSTRAINT ASIENTOCAJA_UQ UNIQUE (CIA, CUENTA, CCOSTO, DIA, MONEDA, TIPOCAMBIO, CAMBIOBASE, ESDEBITOCREDITO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Table: BALANCECAJA                                           */
/*==============================================================*/
CREATE TABLE BALANCECAJA  (
   CIA                  CHAR(3)                         NOT NULL,
   CAJERO               VARCHAR2(10)                    NOT NULL,
   ANO_FISCAL           NUMBER(4)                       NOT NULL,
   PER_PROCESO          NUMBER(2)                       NOT NULL,
   FALTANTECAJA         NUMBER(14,2)                    NOT NULL
      CONSTRAINT BALANCECAJA_FALTANTECA_CK CHECK (FALTANTECAJA >= 0),
   SOBRACOMPENSA        NUMBER(14,2)                    NOT NULL
      CONSTRAINT BALANCECAJA_SOBRACOMPE_CK CHECK (SOBRACOMPENSA >= 0),
   SOBRANTECAJA         NUMBER(14,2)                    NOT NULL
      CONSTRAINT BALANCECAJA_SOBRANTECA_CK CHECK (SOBRANTECAJA >= 0),
   SOBRANOCOMPENSA      NUMBER(14,2)                    NOT NULL
      CONSTRAINT BALANCECAJA_SOBRANOCOM_CK CHECK (SOBRANOCOMPENSA >= 0),
   DIASLABORADOS        NUMBER(3)                       NOT NULL
      CONSTRAINT BALANCECAJA_DIASLABORA_CK CHECK (DIASLABORADOS > 0),
   FONDOCAJA            NUMBER(14,2)                    NOT NULL,
   OBSERVACION          VARCHAR2(240),
   INCENTIVO            NUMBER(14,2)                    NOT NULL,
   ESTADO               CHAR(1)                         NOT NULL
      CONSTRAINT BALANCECAJA_ESTADO_CK CHECK (ESTADO IN ('P','A','C')),
   CONSTRAINT BALANCECAJA_PK PRIMARY KEY (CIA, CAJERO, ANO_FISCAL, PER_PROCESO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Table: CAJPARAMETRO                                          */
/*==============================================================*/
CREATE TABLE CAJPARAMETRO  (
   CIA                  CHAR(3)                         NOT NULL,
   CONFALTANTE          VARCHAR2(15)                    NOT NULL,
   CONSOBRANTE          VARCHAR2(15)                    NOT NULL,
   TRASLADO             CHAR(1)                         NOT NULL
      CONSTRAINT CAJPARAMETRO_TRASLADO_CK CHECK (TRASLADO IN ('D','B')),
   COD_CTA_LIQUIDA      VARCHAR2(15),
   CONSTRAINT CAJPARAMETRO_PK PRIMARY KEY (CIA)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Table: CAJA                                                  */
/*==============================================================*/
CREATE TABLE CAJA  (
   CIA                  CHAR(3)                         NOT NULL,
   CAJA                 CHAR(3)                         NOT NULL,
   DESCRIPCION          VARCHAR2(30)                    NOT NULL,
   DEPARTAMENTO         VARCHAR2(3),
   CAJERO               VARCHAR2(10)                    NOT NULL,
   UBICACION            VARCHAR2(30)                    NOT NULL,
   SUCURSAL             CHAR(3)                         NOT NULL,
   CONSTRAINT CAJA_PK PRIMARY KEY (CIA, CAJA)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Index: CAJEROCAJA_FK3                                        */
/*==============================================================*/
CREATE INDEX CAJEROCAJA_FK3 ON CAJA (
   CIA ASC,
   CAJERO ASC
);

/*==============================================================*/
/* Table: CAJERO                                                */
/*==============================================================*/
CREATE TABLE CAJERO  (
   CIA                  CHAR(3)                         NOT NULL,
   CAJERO               VARCHAR2(10)                    NOT NULL,
   TIPO                 CHAR(2)                         NOT NULL,
   USUARIO              VARCHAR2(30)                    NOT NULL,
   NOMBRE               VARCHAR2(40)                    NOT NULL,
   EMPLEADO             VARCHAR2(15),
   ESTADO               CHAR(1)                         NOT NULL
      CONSTRAINT CAJERO_ESTADO_CK CHECK (ESTADO IN ('A','I')),
   CONSTRAINT CAJERO_PK PRIMARY KEY (CIA, CAJERO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Index: TIPOCAJERO_CAJERO_FK1                                 */
/*==============================================================*/
CREATE INDEX TIPOCAJERO_CAJERO_FK1 ON CAJERO (
   CIA ASC,
   TIPO ASC
);

/*==============================================================*/
/* Table: CONCEPTO                                              */
/*==============================================================*/
CREATE TABLE CONCEPTO  (
   CIA                  CHAR(3)                         NOT NULL,
   CONCEPTO             VARCHAR2(15)                    NOT NULL,
   DESCRIPCION          VARCHAR2(50)                    NOT NULL,
   GRUPO                CHAR(3)                         NOT NULL,
   CUENTA               VARCHAR2(25),
   ESDEBITOCREDITO      CHAR(1)                         NOT NULL
      CONSTRAINT CONCEPTO_ESDEBITOCR_CK CHECK (ESDEBITOCREDITO IN ('D','C','N')),
   CUENTAPUENTE         VARCHAR2(25),
   BANCO                VARCHAR2(25),
   EFECTO               CHAR(1)                         NOT NULL
      CONSTRAINT CONCEPTO_EFECTO_CK CHECK (EFECTO IN ('S','N','R')),
   FORMULA              VARCHAR2(300),
   MONEDA               VARCHAR2(3)                     NOT NULL,
   PRIORIDAD            NUMBER(1),
   TIPO_MOVBAN          CHAR(3),
   REPORTA              CHAR(1)                        DEFAULT 'S' NOT NULL
      CONSTRAINT CONCEPTO_REPORTA_CK CHECK (REPORTA IN ('S','N')),
   ORDENIMP             NUMBER(3)                      DEFAULT 0 NOT NULL,
   CONSTRAINT CONCEPTO_PK PRIMARY KEY (CIA, CONCEPTO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Index: GRUPOCONCEPTO_CONCEPTO_FK1                            */
/*==============================================================*/
CREATE INDEX GRUPOCONCEPTO_CONCEPTO_FK1 ON CONCEPTO (
   CIA ASC,
   GRUPO ASC
);

/*==============================================================*/
/* Table: CONCEPTONOCAJA                                        */
/*==============================================================*/
CREATE TABLE CONCEPTONOCAJA  (
   CIA                  CHAR(3)                         NOT NULL,
   CAJA                 CHAR(3)                         NOT NULL,
   CONCEPTO             VARCHAR2(15)                    NOT NULL,
   CONSTRAINT CONCEPTONOCAJA_PK PRIMARY KEY (CIA, CAJA, CONCEPTO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Index: CONCEPTO_CONCEPTONOCAJA_FK1                           */
/*==============================================================*/
CREATE INDEX CONCEPTO_CONCEPTONOCAJA_FK1 ON CONCEPTONOCAJA (
   CIA ASC,
   CONCEPTO ASC
);

/*==============================================================*/
/* Table: CONCEPTOVENTA                                         */
/*==============================================================*/
CREATE TABLE CONCEPTOVENTA  (
   CIA                  CHAR(3)                         NOT NULL,
   CONCEPTO             VARCHAR2(15)                    NOT NULL,
   SUFIJO               VARCHAR2(20),
   CUENTACOSTO          VARCHAR2(25),
   GRAVADO              CHAR(1)                         NOT NULL
      CONSTRAINT CONCEPTOVENTA_GRAVADO_CK CHECK (GRAVADO IN ('S','N')),
   TIPO                 CHAR(1)                        DEFAULT 'V' NOT NULL
      CONSTRAINT CONCEPTOVENTA_TIPO_CK CHECK (TIPO IN ('V','D')),
   CONSTRAINT CONCEPTOVENTA_PK PRIMARY KEY (CIA, CONCEPTO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Table: GRUPOCONCEPTO                                         */
/*==============================================================*/
CREATE TABLE GRUPOCONCEPTO  (
   CIA                  CHAR(3)                         NOT NULL,
   GRUPO                CHAR(3)                         NOT NULL,
   DESCRIPCION          VARCHAR2(30),
   CONSTRAINT GRUPOCONCEPTO_PK PRIMARY KEY (CIA, GRUPO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Table: LIQCDETALLE                                           */
/*==============================================================*/
CREATE TABLE LIQCDETALLE  (
   CIA                  CHAR(3)                         NOT NULL,
   REPORTE              VARCHAR(15)                     NOT NULL,
   SECCION              NUMBER(2)                       NOT NULL,
   CONCEPTO             VARCHAR2(15)                    NOT NULL,
   SUMARESTA            NUMBER(1)                       NOT NULL
      CONSTRAINT LIQCDETALLE_SUMARESTA_CK CHECK (SUMARESTA IN (1,-1)),
   MONTO                NUMBER(14,2),
   CONSTRAINT LIQDETALLE_PK PRIMARY KEY (CIA, REPORTE, SECCION, CONCEPTO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Index: CONCEPTO_LIQCDETALLE_FK2                              */
/*==============================================================*/
CREATE INDEX CONCEPTO_LIQCDETALLE_FK2 ON LIQCDETALLE (
   CIA ASC,
   CONCEPTO ASC
);

/*==============================================================*/
/* Table: LIQCREPORTE                                           */
/*==============================================================*/
CREATE TABLE LIQCREPORTE  (
   CIA                  CHAR(3)                         NOT NULL,
   REPORTE              VARCHAR(15)                     NOT NULL,
   DESCRIPCION          VARCHAR(50)                     NOT NULL,
   CONSTRAINT LIQCREPORTE_PK PRIMARY KEY (CIA, REPORTE)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Table: LIQCSECCION                                           */
/*==============================================================*/
CREATE TABLE LIQCSECCION  (
   CIA                  CHAR(3)                         NOT NULL,
   REPORTE              VARCHAR(15)                     NOT NULL,
   SECCION              NUMBER(2)                       NOT NULL,
   SECCIONPADRE         NUMBER(2),
   ROTULO               VARCHAR2(30),
   UBICACION            CHAR(1)                         NOT NULL
      CONSTRAINT LIQCSECCION_UBICACION_CK CHECK (UBICACION IN ('M','S','D')),
   SUMA                 CHAR(1)                        DEFAULT 'S' NOT NULL
      CONSTRAINT LIQCSECCION_SUMA_CK CHECK (SUMA IN ('S','N')),
   CONSTRAINT LIQSECCION_PK PRIMARY KEY (CIA, REPORTE, SECCION)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Index: LIQCSECCION_SECPADRE_FK1                              */
/*==============================================================*/
CREATE INDEX LIQCSECCION_SECPADRE_FK1 ON LIQCSECCION (
   CIA ASC,
   REPORTE ASC,
   SECCIONPADRE ASC
);

/*==============================================================*/
/* Table: MOVIMIENTOCAJA                                        */
/*==============================================================*/
CREATE TABLE MOVIMIENTOCAJA  (
   CIA                  CHAR(3)                         NOT NULL,
   CAJA                 CHAR(3)                         NOT NULL,
   DIA                  DATE                            NOT NULL,
   CONCEPTO             VARCHAR2(15)                    NOT NULL,
   REFERENCIA           VARCHAR2(20)                    NOT NULL,
   ANO_FISCAL           NUMBER(4)                       NOT NULL,
   PER_PROCESO          NUMBER(2)                       NOT NULL,
   OBSERVACION          VARCHAR2(60),
   MONTO                NUMBER(14,2)                    NOT NULL,
   NUM_ASIENTO          VARCHAR2(15),
   TIPOCAMBIO           NUMBER(14,4)                   DEFAULT 1 NOT NULL
      CONSTRAINT MOVIMIENTOCAJA_TIPOCAMBIO_CK CHECK (TIPOCAMBIO >= 1),
   CAMBIOBASE           NUMBER(14,4)                   DEFAULT 1 NOT NULL
      CONSTRAINT MOVIMIENTOCAJA_CAMBIOBASE_CK CHECK (CAMBIOBASE >= 1),
   DOCUMENTO            NUMBER(10),
   CONSTRAINT MOVIMIENTOCAJA_PK PRIMARY KEY (CIA, CAJA, DIA, CONCEPTO, REFERENCIA)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Index: CONCEPTO_MOVTOCAJA_FK2                                */
/*==============================================================*/
CREATE INDEX CONCEPTO_MOVTOCAJA_FK2 ON MOVIMIENTOCAJA (
   CIA ASC,
   CONCEPTO ASC
);

/*==============================================================*/
/* Table: MOVIMIENTOCAJAHIST                                    */
/*==============================================================*/
CREATE TABLE MOVIMIENTOCAJAHIST  (
   CIA                  CHAR(3)                         NOT NULL,
   CAJA                 CHAR(3)                         NOT NULL,
   DIA                  DATE                            NOT NULL,
   CONCEPTO             VARCHAR2(15)                    NOT NULL,
   REFERENCIA           VARCHAR2(20)                    NOT NULL,
   ANO_FISCAL           NUMBER(4)                       NOT NULL,
   PER_PROCESO          NUMBER(2)                       NOT NULL,
   OBSERVACION          VARCHAR2(60),
   MONTO                NUMBER(14,2)                    NOT NULL,
   NUM_ASIENTO          VARCHAR2(15),
   TIPOCAMBIO           NUMBER(14,4)                    NOT NULL,
   CAMBIOBASE           NUMBER(14,4)                    NOT NULL,
   DOCUMENTO            NUMBER(10),
   CONSTRAINT MOVIMIENTOCAJAHIST_PK PRIMARY KEY (CIA, CAJA, DIA, CONCEPTO, REFERENCIA)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Table: MOVIMIENTOCAJATMP                                     */
/*==============================================================*/
CREATE TABLE MOVIMIENTOCAJATMP  (
   CIA                  CHAR(3)                         NOT NULL,
   CAJA                 CHAR(3)                         NOT NULL,
   DIA                  DATE                            NOT NULL,
   CONCEPTO             VARCHAR2(15)                    NOT NULL,
   REFERENCIA           VARCHAR2(20)                    NOT NULL,
   ANO_FISCAL           NUMBER(4)                       NOT NULL,
   PER_PROCESO          NUMBER(2)                       NOT NULL,
   OBSERVACION          VARCHAR2(60),
   MONTO                NUMBER(14,2)                    NOT NULL,
   NUM_ASIENTO          VARCHAR2(15),
   TIPOCAMBIO           NUMBER(14,4)                   DEFAULT 1 NOT NULL,
   CAMBIOBASE           NUMBER(14,4)                   DEFAULT 1 NOT NULL,
   DOCUMENTO            NUMBER(10),
   CONSTRAINT MOVIMIENTOCAJATMP_PK PRIMARY KEY (CIA, CAJA, DIA, CONCEPTO, REFERENCIA)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Index: CONCEPTO_MOVTOCAJA_FK3                                */
/*==============================================================*/
CREATE INDEX CONCEPTO_MOVTOCAJA_FK3 ON MOVIMIENTOCAJATMP (
   CIA ASC,
   CONCEPTO ASC
);

/*==============================================================*/
/* Table: MOVIMIENTOVENTA                                       */
/*==============================================================*/
CREATE TABLE MOVIMIENTOVENTA  (
   CIA                  CHAR(3)                         NOT NULL,
   CAJA                 CHAR(3)                         NOT NULL,
   DIA                  DATE                            NOT NULL,
   DEPARTAMENTO         VARCHAR2(3)                     NOT NULL,
   CONCEPTO             VARCHAR2(15)                    NOT NULL,
   ANO_FISCAL           NUMBER(4)                       NOT NULL,
   PER_PROCESO          NUMBER(2)                       NOT NULL,
   COSTO                NUMBER(14,2)                    NOT NULL,
   MONTO                NUMBER(14,2)                    NOT NULL
      CONSTRAINT MOVIMIENTOVENTA_MONTO_CK CHECK (MONTO >= 0),
   IMPUESTO             NUMBER(14,2)                    NOT NULL
      CONSTRAINT MOVIMIENTOVENTA_IMPUESTO_CK CHECK (IMPUESTO >= 0),
   TIPOCAMBIO           NUMBER(14,4)                   DEFAULT 1 NOT NULL
      CONSTRAINT MOVIMIENTOVENTA_TIPOCAMBIO_CK CHECK (TIPOCAMBIO >= 1),
   CAMBIOBASE           NUMBER(14,4)                   DEFAULT 1 NOT NULL
      CONSTRAINT MOVIMIENTOVENTA_CAMBIOBASE_CK CHECK (CAMBIOBASE >= 1),
   NUM_ASIENTO          VARCHAR(15),
   CONSTRAINT MOVIMIENTOVENTA_PK PRIMARY KEY (CIA, CAJA, DIA, DEPARTAMENTO, CONCEPTO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Index: MOVIMIENTOVENTA_DEPTO_FK                              */
/*==============================================================*/
CREATE INDEX MOVIMIENTOVENTA_DEPTO_FK ON MOVIMIENTOVENTA (
   DEPARTAMENTO ASC,
   CIA ASC
);

/*==============================================================*/
/* Index: CONCEPTOVENTA_MOVTOVTA_FK1                            */
/*==============================================================*/
CREATE INDEX CONCEPTOVENTA_MOVTOVTA_FK1 ON MOVIMIENTOVENTA (
   CIA ASC,
   CONCEPTO ASC
);

/*==============================================================*/
/* Table: MOVIMIENTOVENTAHIST                                   */
/*==============================================================*/
CREATE TABLE MOVIMIENTOVENTAHIST  (
   CIA                  CHAR(3)                         NOT NULL,
   CAJA                 CHAR(3)                         NOT NULL,
   DIA                  DATE                            NOT NULL,
   DEPARTAMENTO         VARCHAR2(3)                     NOT NULL,
   CONCEPTO             VARCHAR2(15)                    NOT NULL,
   ANO_FISCAL           NUMBER(4)                       NOT NULL,
   PER_PROCESO          NUMBER(2)                       NOT NULL,
   COSTO                NUMBER(14,2)                    NOT NULL,
   MONTO                NUMBER(14,2)                    NOT NULL
      CONSTRAINT MOVIMIENTOVENTAH_MONTO_CK CHECK (MONTO >= 0),
   IMPUESTO             NUMBER(14,2)                    NOT NULL
      CONSTRAINT MOVIMIENTOVENTAH_IMPUESTO_CK CHECK (IMPUESTO >= 0),
   TIPOCAMBIO           NUMBER(14,4)                    NOT NULL,
   CAMBIOBASE           NUMBER(14,4)                    NOT NULL,
   NUM_ASIENTO          VARCHAR2(15),
   CONSTRAINT MOVIMIENTOVENTAHIST_PK PRIMARY KEY (CIA, CAJA, DIA, DEPARTAMENTO, CONCEPTO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Table: MOVIMIENTOVENTATMP                                    */
/*==============================================================*/
CREATE TABLE MOVIMIENTOVENTATMP  (
   CIA                  CHAR(3)                         NOT NULL,
   CAJA                 CHAR(3)                         NOT NULL,
   DIA                  DATE                            NOT NULL,
   DEPARTAMENTO         VARCHAR2(3)                     NOT NULL,
   CONCEPTO             VARCHAR2(15)                    NOT NULL,
   ANO_FISCAL           NUMBER(4)                       NOT NULL,
   PER_PROCESO          NUMBER(2)                       NOT NULL,
   COSTO                NUMBER(14,2)                    NOT NULL,
   MONTO                NUMBER(14,2)                    NOT NULL,
   IMPUESTO             NUMBER(14,2)                    NOT NULL,
   TIPOCAMBIO           NUMBER(14,4)                   DEFAULT 1 NOT NULL,
   CAMBIOBASE           NUMBER(14,4)                   DEFAULT 1 NOT NULL,
   NUM_ASIENTO          VARCHAR(15),
   CONSTRAINT MOVIMIENTOVENTATMP_PK PRIMARY KEY (CIA, CAJA, DIA, DEPARTAMENTO, CONCEPTO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Index: MOVIMIENTOVENTA_DEPTO_FK2                             */
/*==============================================================*/
CREATE INDEX MOVIMIENTOVENTA_DEPTO_FK2 ON MOVIMIENTOVENTATMP (
   DEPARTAMENTO ASC,
   CIA ASC
);

/*==============================================================*/
/* Index: CONCEPTOVENTA_MOVTOVTA_FK2                            */
/*==============================================================*/
CREATE INDEX CONCEPTOVENTA_MOVTOVTA_FK2 ON MOVIMIENTOVENTATMP (
   CIA ASC,
   CONCEPTO ASC
);

/*==============================================================*/
/* Table: OPERACIONCAJA                                         */
/*==============================================================*/
CREATE TABLE OPERACIONCAJA  (
   CIA                  CHAR(3)                         NOT NULL,
   CAJA                 CHAR(3)                         NOT NULL,
   DIA                  DATE                            NOT NULL,
   CAJERO               VARCHAR2(10),
   ANO_FISCAL           NUMBER(4)                       NOT NULL,
   PER_PROCESO          NUMBER(2)                       NOT NULL,
   TIPO                 CHAR(2)                         NOT NULL,
   SALDOINICIO          NUMBER(14,2)                    NOT NULL
      CONSTRAINT OPERACIONCAJA_SALDOINICI_CK CHECK (SALDOINICIO >= 0),
   BALANCECAJA          NUMBER(14,2)                    NOT NULL,
   SOBRACOMPENSA        NUMBER(14,2)                    NOT NULL
      CONSTRAINT OPERACIONCAJA_SOBRACOMPE_CK CHECK (SOBRACOMPENSA >= 0),
   ESTADO               CHAR(1)                         NOT NULL
      CONSTRAINT OPERACIONCAJA_ESTADO_CK CHECK (ESTADO IN ('L','A','C')),
   CONSTRAINT OPERACIONCAJA_PK PRIMARY KEY (CIA, CAJA, DIA)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Index: OPERACIONCAJA_CAJERO_FK                               */
/*==============================================================*/
CREATE INDEX OPERACIONCAJA_CAJERO_FK ON OPERACIONCAJA (
   CAJERO ASC,
   CIA ASC
);

/*==============================================================*/
/* Index: OPERACIONCAJA_TIPOCAJA_FK                             */
/*==============================================================*/
CREATE INDEX OPERACIONCAJA_TIPOCAJA_FK ON OPERACIONCAJA (
   TIPO ASC,
   CIA ASC
);

/*==============================================================*/
/* Index: TIPOCAJERO_OPERACIONCAJA_FK1                          */
/*==============================================================*/
CREATE INDEX TIPOCAJERO_OPERACIONCAJA_FK1 ON OPERACIONCAJA (
   CIA ASC,
   TIPO ASC
);

/*==============================================================*/
/* Index: CAJERO_OPERACIONCAJA_FK2                              */
/*==============================================================*/
CREATE INDEX CAJERO_OPERACIONCAJA_FK2 ON OPERACIONCAJA (
   CIA ASC,
   CAJERO ASC
);

/*==============================================================*/
/* Table: OPERACIONCAJAHIST                                     */
/*==============================================================*/
CREATE TABLE OPERACIONCAJAHIST  (
   CIA                  CHAR(3)                         NOT NULL,
   CAJA                 CHAR(3)                         NOT NULL,
   DIA                  DATE                            NOT NULL,
   CAJERO               VARCHAR2(10),
   ANO_FISCAL           NUMBER(4)                       NOT NULL,
   PER_PROCESO          NUMBER(2)                       NOT NULL,
   TIPO                 CHAR(2)                         NOT NULL,
   SALDOINICIO          NUMBER(14,2)                    NOT NULL
      CONSTRAINT OPERACIONCAJAHIS_SALDOINICI_CK CHECK (SALDOINICIO >= 0),
   BALANCECAJA          NUMBER(14,2)                    NOT NULL,
   SOBRACOMPENSA        NUMBER(14,2)                    NOT NULL
      CONSTRAINT OPERACIONCAJAHIS_SOBRACOMPE_CK CHECK (SOBRACOMPENSA >= 0),
   ESTADO               CHAR(1)                         NOT NULL
      CONSTRAINT OPERACIONCAJAHIS_ESTADO_CK CHECK (ESTADO IN ('P','A','C')),
   CONSTRAINT OPERACIONCAJAHIST_PK PRIMARY KEY (CIA, CAJA, DIA)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Table: OPERACIONCAJATMP                                      */
/*==============================================================*/
CREATE TABLE OPERACIONCAJATMP  (
   CIA                  CHAR(3)                         NOT NULL,
   CAJA                 CHAR(3)                         NOT NULL,
   DIA                  DATE                            NOT NULL,
   CAJERO               VARCHAR2(10),
   ANO_FISCAL           NUMBER(4)                       NOT NULL,
   PER_PROCESO          NUMBER(2)                       NOT NULL,
   TIPO                 CHAR(2)                         NOT NULL,
   SALDOINICIO          NUMBER(14,2)                    NOT NULL,
   BALANCECAJA          NUMBER(14,2)                    NOT NULL,
   SOBRACOMPENSA        NUMBER(14,2)                    NOT NULL,
   ESTADO               CHAR(1)                         NOT NULL,
   CONSTRAINT OPERACIONCAJATMP_PK PRIMARY KEY (CIA, CAJA, DIA)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Index: OPERACIONCAJA_CAJERO_FK2                              */
/*==============================================================*/
CREATE INDEX OPERACIONCAJA_CAJERO_FK2 ON OPERACIONCAJATMP (
   CAJERO ASC,
   CIA ASC
);

/*==============================================================*/
/* Index: OPERACIONCAJA_TIPOCAJA_FK2                            */
/*==============================================================*/
CREATE INDEX OPERACIONCAJA_TIPOCAJA_FK2 ON OPERACIONCAJATMP (
   TIPO ASC,
   CIA ASC
);

/*==============================================================*/
/* Index: TIPOCAJERO_OPERACIONCAJA_FK2                          */
/*==============================================================*/
CREATE INDEX TIPOCAJERO_OPERACIONCAJA_FK2 ON OPERACIONCAJATMP (
   CIA ASC,
   TIPO ASC
);

/*==============================================================*/
/* Index: CAJERO_OPERACIONCAJA_FK3                              */
/*==============================================================*/
CREATE INDEX CAJERO_OPERACIONCAJA_FK3 ON OPERACIONCAJATMP (
   CIA ASC,
   CAJERO ASC
);

/*==============================================================*/
/* Table: TIPOCAJERO                                            */
/*==============================================================*/
CREATE TABLE TIPOCAJERO  (
   CIA                  CHAR(3)                         NOT NULL,
   TIPO                 CHAR(2)                         NOT NULL,
   DESCRIPCION          VARCHAR2(30)                    NOT NULL,
   INCENTIVO            NUMBER(14,2)                    NOT NULL
      CONSTRAINT TIPOCAJERO_INCENTIVO_CK CHECK (INCENTIVO >= 0),
   FONDO                NUMBER(14,2)                    NOT NULL
      CONSTRAINT TIPOCAJERO_FONDO_CK CHECK (FONDO >= 0),
   CONSTRAINT TIPOCAJERO_PK PRIMARY KEY (CIA, TIPO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* View: VENTASXDEPTO                                           */
/*==============================================================*/
CREATE OR REPLACE VIEW VENTASXDEPTO AS
SELECT CIA, DIA, DEPARTAMENTO, CONCEPTO, SUM(MONTO) MONTO, SUM(IMPUESTO) IMPUESTO
FROM MOVIMIENTOVENTA 
GROUP BY CIA, DIA, DEPARTAMENTO, CONCEPTO;

ALTER TABLE BALANCECAJA
   ADD CONSTRAINT CAJERO_BALANCECAJA_FK FOREIGN KEY (CIA, CAJERO)
      REFERENCES CAJERO (CIA, CAJERO);

ALTER TABLE CAJA
   ADD CONSTRAINT CAJEROCAJA_FK FOREIGN KEY (CIA, CAJERO)
      REFERENCES CAJERO (CIA, CAJERO);

ALTER TABLE CAJA
   ADD CONSTRAINT CAJPARAMETRO_CAJA_FK FOREIGN KEY (CIA)
      REFERENCES CAJPARAMETRO (CIA);

ALTER TABLE CAJERO
   ADD CONSTRAINT TIPOCAJERO_CAJERO_FK FOREIGN KEY (CIA, TIPO)
      REFERENCES TIPOCAJERO (CIA, TIPO);

ALTER TABLE CONCEPTO
   ADD CONSTRAINT GRUPOCONCEPTO_CONCEPTO_FK FOREIGN KEY (CIA, GRUPO)
      REFERENCES GRUPOCONCEPTO (CIA, GRUPO);

ALTER TABLE CONCEPTONOCAJA
   ADD CONSTRAINT CAJA_CONCEPTONOCAJA_FK FOREIGN KEY (CIA, CAJA)
      REFERENCES CAJA (CIA, CAJA);

ALTER TABLE CONCEPTONOCAJA
   ADD CONSTRAINT CONCEPTO_CONCEPTONOCAJA_FK FOREIGN KEY (CIA, CONCEPTO)
      REFERENCES CONCEPTO (CIA, CONCEPTO);

ALTER TABLE CONCEPTOVENTA
   ADD CONSTRAINT CONCEPTO_CONCVTA_FK FOREIGN KEY (CIA, CONCEPTO)
      REFERENCES CONCEPTO (CIA, CONCEPTO);

ALTER TABLE LIQCDETALLE
   ADD CONSTRAINT CONCEPTO_LIQCDETALLE_FK FOREIGN KEY (CIA, CONCEPTO)
      REFERENCES CONCEPTO (CIA, CONCEPTO);

ALTER TABLE LIQCDETALLE
   ADD CONSTRAINT LIQCSECCION_DETALLE_FK FOREIGN KEY (CIA, REPORTE, SECCION)
      REFERENCES LIQCSECCION (CIA, REPORTE, SECCION);

ALTER TABLE LIQCREPORTE
   ADD CONSTRAINT CAJPARAMETRO_LIQCREP_FK FOREIGN KEY (CIA)
      REFERENCES CAJPARAMETRO (CIA);

ALTER TABLE LIQCSECCION
   ADD CONSTRAINT LIQCSECCION_SECPADRE_FK FOREIGN KEY (CIA, REPORTE, SECCIONPADRE)
      REFERENCES LIQCSECCION (CIA, REPORTE, SECCION);

ALTER TABLE LIQCSECCION
   ADD CONSTRAINT LIQCREPORTE_LIQSECCION_FK FOREIGN KEY (CIA, REPORTE)
      REFERENCES LIQCREPORTE (CIA, REPORTE);

ALTER TABLE MOVIMIENTOCAJA
   ADD CONSTRAINT CONCEPTO_MOVTOCAJA_FK FOREIGN KEY (CIA, CONCEPTO)
      REFERENCES CONCEPTO (CIA, CONCEPTO);

ALTER TABLE MOVIMIENTOCAJA
   ADD CONSTRAINT OPERACIONCAJA_MOVTOCAJA_FK FOREIGN KEY (CIA, CAJA, DIA)
      REFERENCES OPERACIONCAJA (CIA, CAJA, DIA);

ALTER TABLE MOVIMIENTOCAJAHIST
   ADD CONSTRAINT OPERACIONCAJAH_MOVTOCAJAH_FK FOREIGN KEY (CIA, CAJA, DIA)
      REFERENCES OPERACIONCAJAHIST (CIA, CAJA, DIA);

ALTER TABLE MOVIMIENTOVENTA
   ADD CONSTRAINT CONCEPTOVENTA_MOVTOVTA_FK FOREIGN KEY (CIA, CONCEPTO)
      REFERENCES CONCEPTOVENTA (CIA, CONCEPTO);

ALTER TABLE MOVIMIENTOVENTA
   ADD CONSTRAINT OPERACIONCAJA_MOVTOVTA_FK FOREIGN KEY (CIA, CAJA, DIA)
      REFERENCES OPERACIONCAJA (CIA, CAJA, DIA);

ALTER TABLE MOVIMIENTOVENTAHIST
   ADD CONSTRAINT OPERACIONCAJAH_MOVTOVENTAH_FK FOREIGN KEY (CIA, CAJA, DIA)
      REFERENCES OPERACIONCAJAHIST (CIA, CAJA, DIA);

ALTER TABLE OPERACIONCAJA
   ADD CONSTRAINT CAJA_OPERACIONCAJA_FK FOREIGN KEY (CIA, CAJA)
      REFERENCES CAJA (CIA, CAJA);

ALTER TABLE OPERACIONCAJA
   ADD CONSTRAINT CAJERO_OPERACIONCAJA_FK FOREIGN KEY (CIA, CAJERO)
      REFERENCES CAJERO (CIA, CAJERO);

ALTER TABLE OPERACIONCAJA
   ADD CONSTRAINT TIPOCAJERO_OPERACIONCAJA_FK FOREIGN KEY (CIA, TIPO)
      REFERENCES TIPOCAJERO (CIA, TIPO);

