/*==============================================================*/
/* DBMS name:      ORACLE Version 9i                            */
/* Created on:     31/01/2008 09:53:15 a.m.                     */
/*==============================================================*/


CREATE SEQUENCE SEQ_TOMAFIS;

/*==============================================================*/
/* Table: ARTICULOSVTMP                                         */
/*==============================================================*/
CREATE TABLE ARTICULOSVTMP  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_BODEGA           CHAR(3)                         NOT NULL,
   COD_ARTICULO         VARCHAR2(25)                    NOT NULL,
   DES_ARTICULO         VARCHAR2(50)                    NOT NULL,
   CAN_EXISTE           NUMBER(14,4)                    NOT NULL,
   COSTO                NUMBER(14,4)                    NOT NULL,
   FEC_ULT_COMPRA       DATE,
   CAN_ULT_COMPRA       NUMBER(14,4),
   FEC_PEN_COMPRA       DATE,
   CAN_PEN_COMPRA       NUMBER(14,4),
   CAN_VENTA            NUMBER(14,4),
   COD_PROVEEDOR        VARCHAR2(25),
   CONSTRAINT ARTICULOSVTMP_PK PRIMARY KEY (COD_CIA, COD_BODEGA, COD_ARTICULO)
);

/*==============================================================*/
/* Table: INVETIQCAMPO                                          */
/*==============================================================*/
CREATE TABLE INVETIQCAMPO  (
   COD_CIA              CHAR(3)                         NOT NULL,
   ETIQUETA             VARCHAR2(15)                    NOT NULL,
   SECUENCIA            NUMBER(2)                       NOT NULL,
   NOMBRE               VARCHAR2(15)                    NOT NULL,
   ALTO                 NUMBER(5,2)                     NOT NULL,
   ANCHO                NUMBER(5,2)                     NOT NULL,
   POSX                 NUMBER(5,2)                     NOT NULL,
   POSY                 NUMBER(5,2)                     NOT NULL,
   JUSTIFICACION        VARCHAR2(10)                    NOT NULL,
   TIPO                 VARCHAR2(10),
   FORMATO              VARCHAR2(16),
   FUENTE               VARCHAR2(50),
   VALOR                VARCHAR2(50),
   CONSTRAINT INVETIQCAMPO_PK PRIMARY KEY (COD_CIA, ETIQUETA, SECUENCIA)
);

/*==============================================================*/
/* Table: INVETIQUETA                                           */
/*==============================================================*/
CREATE TABLE INVETIQUETA  (
   COD_CIA              CHAR(3)                         NOT NULL,
   ETIQUETA             VARCHAR2(15)                    NOT NULL,
   MEDIDA               VARCHAR2(12)                    NOT NULL,
   ANCHO                NUMBER(5,2)                     NOT NULL,
   LARGO                NUMBER(5,2)                     NOT NULL,
   COLUMNAS             NUMBER(2)                       NOT NULL,
   FUENTE               VARCHAR2(50)                    NOT NULL,
   MARGEN               VARCHAR2(50)                    NOT NULL,
   TITULO               VARCHAR2(50)                    NOT NULL,
   IMPRESORA            VARCHAR2(50)                    NOT NULL,
   CONSTRAINT INVETIQUETA_PK PRIMARY KEY (COD_CIA, ETIQUETA)
);

/*==============================================================*/
/* Table: INVLOGX                                               */
/*==============================================================*/
CREATE TABLE INVLOGX  (
   CIA                  VARCHAR2(3),
   TIPOINV              VARCHAR2(3),
   ARTICULO             VARCHAR2(25),
   LOTE                 VARCHAR2(15),
   BODEGA               VARCHAR2(3),
   DOCREF               VARCHAR2(10),
   USUARIO              VARCHAR2(30),
   FECHA                DATE,
   OBSERVS              VARCHAR2(80),
   DESPACHO             NUMBER(14,4),
   RESERVA              NUMBER(14,4)
);

/*==============================================================*/
/* Table: INV_ARTABC_TMP                                        */
/*==============================================================*/
CREATE TABLE INV_ARTABC_TMP  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_BODEGA           CHAR(3)                         NOT NULL,
   COD_ARTICULO         VARCHAR2(25)                    NOT NULL,
   MONTO                NUMBER(14,4)                    NOT NULL,
   ABC                  CHAR(1)                         NOT NULL,
   CONSTRAINT INV_ARTABC_TMP_PK PRIMARY KEY (COD_CIA, COD_BODEGA, COD_ARTICULO)
);

/*==============================================================*/
/* Table: INV_CONTEO                                            */
/*==============================================================*/
CREATE TABLE INV_CONTEO  (
   SECUENCIA            NUMBER(10)                      NOT NULL,
   COD_LOTE             VARCHAR2(15)                    NOT NULL,
   COD_ARTICULO         VARCHAR2(25)                    NOT NULL,
   LOCALIZA             VARCHAR2(8)                     NOT NULL,
   CONTEO               NUMBER(1)                       NOT NULL
      CONSTRAINT INV_CONTEO_CONTEO_CK CHECK (CONTEO >= 0),
   CANTIDAD             NUMBER(14,4)                    NOT NULL
      CONSTRAINT INV_CONTEO_CANTIDAD_CK CHECK (CANTIDAD >= 0),
   CONSTRAINT INV_CONTEO_PK PRIMARY KEY (SECUENCIA, COD_LOTE, COD_ARTICULO, LOCALIZA, CONTEO)
);

/*==============================================================*/
/* Table: INV_MENSUALTMP                                        */
/*==============================================================*/
CREATE TABLE INV_MENSUALTMP  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_BODEGA           CHAR(3)                         NOT NULL,
   CLASIFICA            VARCHAR2(5)                     NOT NULL,
   MON_INICIAL          NUMBER(14)                      NOT NULL,
   MON_COMPRA           NUMBER(14)                      NOT NULL,
   MON_VENTA            NUMBER(14)                      NOT NULL,
   MON_DEVCLI           NUMBER(14)                      NOT NULL,
   MON_DEVPROV          NUMBER(14)                      NOT NULL,
   MON_OTRENT           NUMBER(14)                      NOT NULL,
   MON_ENTRANS          NUMBER(14)                      NOT NULL,
   MON_SATRANS          NUMBER(14)                      NOT NULL,
   MON_OTRSAL           NUMBER(14)                      NOT NULL,
   VENTAS               NUMBER(14)                      NOT NULL,
   DEVOLUCION           NUMBER(14)                      NOT NULL,
   CONSTRAINT INV_MENSUALTMP_PK PRIMARY KEY (COD_CIA, COD_BODEGA, CLASIFICA)
);

/*==============================================================*/
/* Table: INV_PENMOVIMIENTO                                     */
/*==============================================================*/
CREATE TABLE INV_PENMOVIMIENTO  (
   COD_CIA              CHAR(3)                         NOT NULL,
   SUCURSAL             CHAR(3)                         NOT NULL,
   TIP_MOVTO            CHAR(1)                         NOT NULL,
   COD_MOVTO            CHAR(2)                         NOT NULL,
   NUM_DOCTO            VARCHAR2(10)                    NOT NULL,
   SECUENCIA            NUMBER(4)                       NOT NULL,
   COD_BODEGA           CHAR(3)                         NOT NULL,
   COD_LOTE             VARCHAR2(15),
   COD_ARTICULO         VARCHAR2(25)                    NOT NULL,
   MEDIDA               VARCHAR2(5)                     NOT NULL,
   DOC_REFEREN          VARCHAR2(10),
   CAN_ARTICULO         NUMBER(14,4)                    NOT NULL,
   CAN_BONIFICADA       NUMBER(14,4)                    NOT NULL,
   CCOSTO               VARCHAR2(7),
   CONSTRAINT INV_PENMOVIMIENTO_PK PRIMARY KEY (COD_CIA, SUCURSAL, TIP_MOVTO, COD_MOVTO, NUM_DOCTO, SECUENCIA)
);

/*==============================================================*/
/* Table: INV_TABLADESC                                         */
/*==============================================================*/
CREATE TABLE INV_TABLADESC  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_ARTICULO         VARCHAR2(25)                    NOT NULL,
   UND_VENDE            NUMBER(12)                      NOT NULL,
   PORCENTAJE           NUMBER(5,2)                     NOT NULL
      CONSTRAINT INV_TABLADESC_PORCENTAJE_CK CHECK (PORCENTAJE >= 0),
   CONSTRAINT INV_TABLADESC_PK PRIMARY KEY (COD_CIA, COD_ARTICULO, UND_VENDE)
);

/*==============================================================*/
/* Table: INV_DETALLES                                          */
/*==============================================================*/
CREATE TABLE INV_DETALLES  (
   COD_CIA              CHAR(3)                         NOT NULL,
   TIPO                 CHAR(3)                         NOT NULL,
   COD_ARTICULO         VARCHAR2(25)                    NOT NULL,
   VALOR                VARCHAR2(250)                   NOT NULL,
   CONSTRAINT INV_DETALLES_PK PRIMARY KEY (COD_CIA, TIPO, COD_ARTICULO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Index: INVARTICULO_DETALLES_FK                               */
/*==============================================================*/
CREATE INDEX INVARTICULO_DETALLES_FK ON INV_DETALLES (
   COD_CIA ASC,
   COD_ARTICULO ASC
);

/*==============================================================*/
/* Index: INVATRIBUTOS_DETALLES_FK                              */
/*==============================================================*/
CREATE INDEX INVATRIBUTOS_DETALLES_FK ON INV_DETALLES (
   TIPO ASC
);

/*==============================================================*/
/* Table: INV_DETTABLACOMSN                                     */
/*==============================================================*/
CREATE TABLE INV_DETTABLACOMSN  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_TABLA            VARCHAR2(2)                     NOT NULL,
   MON_VENDE            NUMBER(14,4)                    NOT NULL,
   POR_COMSN            NUMBER(5,2)                     NOT NULL
      CONSTRAINT INV_DETTABLACOMSN_POR_COMSN_CK CHECK (POR_COMSN BETWEEN 0 AND 100),
   POR_EXTRA            NUMBER(5,2)                     NOT NULL
      CONSTRAINT INV_DETTABLACOMS_POR_EXTRA_CK CHECK (POR_EXTRA BETWEEN 0 AND 100),
   CONSTRAINT INV_DETTABLACOMSN_PK PRIMARY KEY (COD_CIA, COD_TABLA, MON_VENDE)
);

/*==============================================================*/
/* Table: INV_ACUM_PERIODO                                      */
/*==============================================================*/
CREATE TABLE INV_ACUM_PERIODO  (
   COD_CIA              CHAR(3)                         NOT NULL,
   SUCURSAL             CHAR(3)                         NOT NULL,
   COD_BODEGA           CHAR(3)                         NOT NULL,
   COD_ARTICULO         VARCHAR2(25)                    NOT NULL,
   ANO_FISCAL           NUMBER(4)                       NOT NULL,
   PER_PROCESO          NUMBER(2)                       NOT NULL,
   CLASE_MOVTO          CHAR(2)                         NOT NULL
      CONSTRAINT INV_ACUM_PERIODO_CLASE_MOVT_CK CHECK (CLASE_MOVTO IN ('EI','EC','ED','EA','ET','EO','SV','ST','SD','SA','SR')),
   CANTIDAD             NUMBER(14,4)                    NOT NULL
      CONSTRAINT INV_ACUM_PERIODO_CANTIDAD_CK CHECK (CANTIDAD >= 0),
   MONTO                NUMBER(14,4)                    NOT NULL,
   CONSTRAINT INV_ACUM_PERIODO_PK PRIMARY KEY (COD_CIA, SUCURSAL, COD_BODEGA, COD_ARTICULO, ANO_FISCAL, PER_PROCESO, CLASE_MOVTO)
);

/*==============================================================*/
/* Index: INVARTICBODEGA_ACUM_FK                                */
/*==============================================================*/
CREATE INDEX INVARTICBODEGA_ACUM_FK ON INV_ACUM_PERIODO (
   COD_CIA ASC,
   COD_BODEGA ASC,
   COD_ARTICULO ASC
);

/*==============================================================*/
/* Index: INVARTICULO_ACUMMES_FK                                */
/*==============================================================*/
CREATE INDEX INVARTICULO_ACUMMES_FK ON INV_ACUM_PERIODO (
   COD_CIA ASC,
   COD_ARTICULO ASC
);

/*==============================================================*/
/* Table: INV_ARTIC_CODBAR                                      */
/*==============================================================*/
CREATE TABLE INV_ARTIC_CODBAR  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_ARTICULO         VARCHAR2(25)                    NOT NULL,
   COD_BARRAS           VARCHAR2(25)                    NOT NULL,
   TITULAR              CHAR(1)                         NOT NULL
      CONSTRAINT INV_ARTIC_CODBAR_TITULAR_CK CHECK (TITULAR IN ('S','N')),
   CONSTRAINT INV_ARTIC_CODBAR_PK PRIMARY KEY (COD_CIA, COD_ARTICULO, COD_BARRAS),
   CONSTRAINT INV_ARTIC_CODBAR_UQ UNIQUE (COD_CIA, COD_BARRAS)
);

/*==============================================================*/
/* Table: INV_ARTIC_LOCBOD                                      */
/*==============================================================*/
CREATE TABLE INV_ARTIC_LOCBOD  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_BODEGA           CHAR(3)                         NOT NULL,
   COD_ARTICULO         VARCHAR2(25)                    NOT NULL,
   LOCALIZA             VARCHAR2(8)                     NOT NULL,
   CONSTRAINT INV_ARTIC_LOCBOD_PK PRIMARY KEY (COD_CIA, COD_BODEGA, COD_ARTICULO, LOCALIZA)
);

/*==============================================================*/
/* Index: INVLOC_ARTICLOCBOD_FK                                 */
/*==============================================================*/
CREATE INDEX INVLOC_ARTICLOCBOD_FK ON INV_ARTIC_LOCBOD (
   COD_CIA ASC,
   COD_BODEGA ASC,
   LOCALIZA ASC
);

/*==============================================================*/
/* Table: INV_ARTIC_MEDIDA                                      */
/*==============================================================*/
CREATE TABLE INV_ARTIC_MEDIDA  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_ARTICULO         VARCHAR2(25)                    NOT NULL,
   MEDIDA               VARCHAR2(5)                     NOT NULL,
   CONSTRAINT INV_ARTIC_MEDIDA_PK PRIMARY KEY (COD_CIA, COD_ARTICULO, MEDIDA)
);

/*==============================================================*/
/* Index: INVMEDIDA_ARTICMED_FK                                 */
/*==============================================================*/
CREATE INDEX INVMEDIDA_ARTICMED_FK ON INV_ARTIC_MEDIDA (
   MEDIDA ASC
);

/*==============================================================*/
/* Table: INV_ARTIC_PROV                                        */
/*==============================================================*/
CREATE TABLE INV_ARTIC_PROV  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_PROVEEDOR        VARCHAR2(25)                    NOT NULL,
   COD_ARTICULO         VARCHAR2(25)                    NOT NULL,
   COD_ARTIC_PROV       VARCHAR2(25)                    NOT NULL,
   CODIGO_BARRAS        VARCHAR2(25),
   MEDIDA               VARCHAR2(5)                     NOT NULL,
   MINIMO_DESPACHO      NUMBER(12)                      NOT NULL,
   DIAS_TRANSITO        NUMBER(3)                       NOT NULL,
   COD_MONEDA           VARCHAR2(3)                     NOT NULL,
   COSTO_ULT_COMPRA     NUMBER(14,4)                    NOT NULL,
   IND_DESCONTINUADO    CHAR(1)                        DEFAULT 'N' NOT NULL
      CONSTRAINT INV_ARTICPROV_IND_DESCONTDO_CK CHECK (IND_DESCONTINUADO IN ('S','N')),
   FECHA_ULT_COMPRA     DATE                            NOT NULL,
   DESC_FIJO            NUMBER(5,2)                     NOT NULL,
   FEC_ULTMOVTO         DATE,
   BONIFICA             CHAR(1)                        DEFAULT 'S' NOT NULL
      CONSTRAINT INV_ARTIC_PROV_BONIFICA_CK CHECK (BONIFICA IN ('S','N')),
   CONSTRAINT INV_ARTIC_PROV_PK PRIMARY KEY (COD_CIA, COD_PROVEEDOR, COD_ARTICULO)
);

/*==============================================================*/
/* Index: INVARTICULO_ARTICPROV_FK                              */
/*==============================================================*/
CREATE INDEX INVARTICULO_ARTICPROV_FK ON INV_ARTIC_PROV (
   COD_CIA ASC,
   COD_ARTICULO ASC
);

/*==============================================================*/
/* Table: INV_ARTICULO                                          */
/*==============================================================*/
CREATE TABLE INV_ARTICULO  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_ARTICULO         VARCHAR2(25)                    NOT NULL,
   TIPO_INV             VARCHAR2(3)                     NOT NULL,
   COD_LINEA            VARCHAR2(5)                     NOT NULL,
   COD_CLASE            VARCHAR2(5)                     NOT NULL,
   COD_MARCA            VARCHAR2(5)                     NOT NULL,
   DES_ARTICULO         VARCHAR2(50)                    NOT NULL,
   IND_BLOQUEADO        CHAR(1)                        DEFAULT 'N' NOT NULL,
   MEDIDA               VARCHAR2(5)                     NOT NULL,
   COD_MONEDA           VARCHAR2(3)                     NOT NULL,
   MIN_VENTA            NUMBER(8,4)                     NOT NULL
      CONSTRAINT INV_ARTICULO_MIN_VENTA_CK CHECK (MIN_VENTA >= 0),
   CLASE_ABC            CHAR(1)                         NOT NULL
      CONSTRAINT INV_ARTICULO_CLASE_ABC_CK CHECK (CLASE_ABC IN ('A','B','C')),
   FRACCION             CHAR(1)                        DEFAULT 'N' NOT NULL
      CONSTRAINT INV_ARTICULO_FRACCION_CK CHECK (FRACCION IN ('S','N')),
   FEC_ULTMOD           DATE                            NOT NULL,
   COD_DEPTO            VARCHAR2(3)                     NOT NULL,
   MAXDESCUENTO         NUMBER(5,2)                    
      CONSTRAINT INV_ARTICULO_MAXDESCUEN_CK CHECK (MAXDESCUENTO IS NULL OR (MAXDESCUENTO >= 0 )),
   DES_BLOQUEADO        VARCHAR2(30),
   COD_TABCOMSN         VARCHAR2(2),
   IMPTOCONS            VARCHAR2(5),
   IMPTOVTAS            VARCHAR2(5),
   PESO                 NUMBER(8,2),
   COD_PARTIDA          VARCHAR2(10),
   PROVEEDOR_TITULAR    VARCHAR2(25),
   EMBALAJE             VARCHAR2(30),
   DESC_CORTA           VARCHAR2(20),
   CONSTRAINT INV_ARTICULO_PK PRIMARY KEY (COD_CIA, COD_ARTICULO)
);

/*==============================================================*/
/* Index: INVTIPINV_ARTICULO_FK                                 */
/*==============================================================*/
CREATE INDEX INVTIPINV_ARTICULO_FK ON INV_ARTICULO (
   TIPO_INV ASC
);

/*==============================================================*/
/* Index: INVCOMBLCM_ARTICULO_FK                                */
/*==============================================================*/
CREATE INDEX INVCOMBLCM_ARTICULO_FK ON INV_ARTICULO (
   COD_CIA ASC,
   COD_LINEA ASC,
   COD_CLASE ASC,
   COD_MARCA ASC
);

/*==============================================================*/
/* Index: INVMEDIDA_ARTICULO_FK                                 */
/*==============================================================*/
CREATE INDEX INVMEDIDA_ARTICULO_FK ON INV_ARTICULO (
   MEDIDA ASC
);

/*==============================================================*/
/* Index: INVDEPTOS_ARTICULO_FK                                 */
/*==============================================================*/
CREATE INDEX INVDEPTOS_ARTICULO_FK ON INV_ARTICULO (
   COD_CIA ASC,
   COD_DEPTO ASC
);

/*==============================================================*/
/* Table: INV_ARTICULO_CON_LOTE                                 */
/*==============================================================*/
CREATE TABLE INV_ARTICULO_CON_LOTE  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_ARTICULO         VARCHAR2(25)                    NOT NULL,
   FOR_LOTE             VARCHAR2(3)                     NOT NULL,
   CON_LOTE             NUMBER(9)                       NOT NULL,
   CONSTRAINT INV_ARTICULO_CON_LOTE_PK PRIMARY KEY (COD_CIA, COD_ARTICULO)
);

/*==============================================================*/
/* Table: INV_ARTICULOBOD                                       */
/*==============================================================*/
CREATE TABLE INV_ARTICULOBOD  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_BODEGA           CHAR(3)                         NOT NULL,
   COD_ARTICULO         VARCHAR2(25)                    NOT NULL,
   COS_ULTIMO           NUMBER(14,4)                    NOT NULL
      CONSTRAINT INV_ARTICULOBOD_COS_ULTIMO_CK CHECK (COS_ULTIMO >= 0),
   COS_MAYOR            NUMBER(14,4)                    NOT NULL
      CONSTRAINT INV_ARTICULOBOD_COS_MAYOR_CK CHECK (COS_MAYOR >= 0),
   FEC_ULTCOSTO         DATE                            NOT NULL,
   MIN_EXIST            NUMBER(12,4)                    NOT NULL
      CONSTRAINT INV_ARTICULOBOD_MIN_EXIST_CK CHECK (MIN_EXIST >= 0),
   MAX_EXIST            NUMBER(12,4)                    NOT NULL
      CONSTRAINT INV_ARTICULOBOD_MAX_EXIST_CK CHECK (MAX_EXIST >= 0),
   PUNTO_REORDEN        NUMBER(12,4)                    NOT NULL
      CONSTRAINT INV_ARTICULOBOD_PUNTO_REOR_CK CHECK (PUNTO_REORDEN >= 0),
   PORC_UTILIDAD        NUMBER(5,2)                    
      CONSTRAINT INV_ARTICULOBOD_PORC_UTILI_CK CHECK (PORC_UTILIDAD IS NULL OR (PORC_UTILIDAD >= 0 )),
   FEC_ULTMOVTO         DATE                            NOT NULL,
   CONSTRAINT INV_ARTICULOBOD_PK PRIMARY KEY (COD_CIA, COD_BODEGA, COD_ARTICULO)
);

/*==============================================================*/
/* Index: INVARTICULO_ARTICBOD_FK                               */
/*==============================================================*/
CREATE INDEX INVARTICULO_ARTICBOD_FK ON INV_ARTICULOBOD (
   COD_CIA ASC,
   COD_ARTICULO ASC
);

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

/*==============================================================*/
/* Table: INV_BODEGA                                            */
/*==============================================================*/
CREATE TABLE INV_BODEGA  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_BODEGA           CHAR(3)                         NOT NULL,
   SUCURSAL             CHAR(3)                         NOT NULL,
   DES_BODEGA           VARCHAR2(30)                    NOT NULL,
   IND_VENTA            CHAR(1)                         NOT NULL
      CONSTRAINT INV_BODEGA_IND_VENTA_CK CHECK (IND_VENTA IN ('S','N')),
   COD_CTA              VARCHAR2(25),
   IMPRESORA            VARCHAR2(12),
   CCOSTO               VARCHAR2(7),
   CONSTRAINT INV_BODEGA_PK PRIMARY KEY (COD_CIA, COD_BODEGA)
);

/*==============================================================*/
/* Table: INV_CLASE                                             */
/*==============================================================*/
CREATE TABLE INV_CLASE  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_CLASE            VARCHAR2(5)                     NOT NULL,
   DES_CLASE            VARCHAR2(30)                    NOT NULL,
   PORC_UTILIDAD        NUMBER(5,2),
   CONSTRAINT INV_CLASE_PK PRIMARY KEY (COD_CLASE, COD_CIA)
);

/*==============================================================*/
/* Table: INV_COMB_LCM                                          */
/*==============================================================*/
CREATE TABLE INV_COMB_LCM  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_LINEA            VARCHAR2(5)                     NOT NULL,
   COD_CLASE            VARCHAR2(5)                     NOT NULL,
   COD_MARCA            VARCHAR2(5)                     NOT NULL,
   PORC_UTILIDAD        NUMBER(5,2)                     NOT NULL,
   CONSTRAINT INV_COMB_LCM_PK PRIMARY KEY (COD_CIA, COD_LINEA, COD_CLASE, COD_MARCA)
);

/*==============================================================*/
/* Index: INVLINEA_COMBLCM_FK                                   */
/*==============================================================*/
CREATE INDEX INVLINEA_COMBLCM_FK ON INV_COMB_LCM (
   COD_LINEA ASC,
   COD_CIA ASC
);

/*==============================================================*/
/* Index: INVCLASE_COMBLCM_FK                                   */
/*==============================================================*/
CREATE INDEX INVCLASE_COMBLCM_FK ON INV_COMB_LCM (
   COD_CLASE ASC,
   COD_CIA ASC
);

/*==============================================================*/
/* Index: INVMARCA_COMBLCM_FK                                   */
/*==============================================================*/
CREATE INDEX INVMARCA_COMBLCM_FK ON INV_COMB_LCM (
   COD_MARCA ASC,
   COD_CIA ASC
);

/*==============================================================*/
/* Table: INV_CONCEPMOVTO                                       */
/*==============================================================*/
CREATE TABLE INV_CONCEPMOVTO  (
   COD_CIA              CHAR(3)                         NOT NULL,
   TIP_MOVTO            CHAR(1)                         NOT NULL,
   COD_MOVTO            CHAR(2)                         NOT NULL,
   DES_MOVTO            VARCHAR2(30)                    NOT NULL,
   COD_CTA              VARCHAR2(25),
   CLASE_MOVTO          CHAR(2)                         NOT NULL
      CONSTRAINT INV_CONCEPMOVTO_CLASE_MOVTO_CK CHECK (CLASE_MOVTO IN ('EI','EC','ED','EA','ET','EO','SV','SD','SA','SR','ST')),
   IND_IMP_VTA          CHAR(1)                        DEFAULT 'N' NOT NULL
      CONSTRAINT INV_CONCEPTO_IND_IMP_VTA_CK CHECK (IND_IMP_VTA IN ('S','N')),
   CONSTRAINT INV_CONCEPMOVTO_PK PRIMARY KEY (COD_CIA, TIP_MOVTO, COD_MOVTO)
);

/*==============================================================*/
/* Table: INV_CONSEC_MOVTOS                                     */
/*==============================================================*/
CREATE TABLE INV_CONSEC_MOVTOS  (
   COD_CIA              CHAR(3)                         NOT NULL,
   SUCURSAL             CHAR(3)                         NOT NULL,
   TIP_MOVTO            CHAR(1)                         NOT NULL,
   COD_MOVTO            CHAR(2)                         NOT NULL,
   NUM_MOVTO            NUMBER(10)                      NOT NULL,
   CONSTRAINT INV_CONSEC_MOVTOS_PK PRIMARY KEY (COD_CIA, SUCURSAL, TIP_MOVTO, COD_MOVTO)
);

/*==============================================================*/
/* Index: INVCONCEPMOTO_CONSECMOV_FK                            */
/*==============================================================*/
CREATE INDEX INVCONCEPMOTO_CONSECMOV_FK ON INV_CONSEC_MOVTOS (
   COD_CIA ASC,
   TIP_MOVTO ASC,
   COD_MOVTO ASC
);

/*==============================================================*/
/* Table: INV_DEPTOS                                            */
/*==============================================================*/
CREATE TABLE INV_DEPTOS  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_DEPTO            VARCHAR2(3)                     NOT NULL,
   DESCRIPCION          VARCHAR2(50)                    NOT NULL,
   BLQPRECIOS           CHAR(1)                         NOT NULL
      CONSTRAINT INV_DEPTOS_BLQPRECIOS_CK CHECK (BLQPRECIOS IN ('S','N')),
   BODEGA               CHAR(3),
   SUFIJOCONTABLE       VARCHAR2(10),
   CCOSTO               VARCHAR2(7),
   CONSTRAINT INV_DEPTOS_PK PRIMARY KEY (COD_CIA, COD_DEPTO)
);

/*==============================================================*/
/* Table: INV_DETMOVDESP                                        */
/*==============================================================*/
CREATE TABLE INV_DETMOVDESP  (
   COD_CIA              CHAR(3)                         NOT NULL,
   SUCURSAL             CHAR(3)                         NOT NULL,
   TIP_MOVTO            CHAR(1)                         NOT NULL,
   COD_MOVTO            CHAR(2)                         NOT NULL,
   NUM_DOCTO            NUMBER(10)                      NOT NULL,
   NUM_DESPACHO         NUMBER(10)                      NOT NULL,
   COD_LOTE             VARCHAR2(15)                    NOT NULL,
   COD_ARTICULO         VARCHAR2(25)                    NOT NULL,
   COD_BODEGA           CHAR(3)                         NOT NULL,
   MEDIDA               VARCHAR2(5)                     NOT NULL,
   CAN_ARTICULO         NUMBER(14,4)                    NOT NULL
      CONSTRAINT INV_DETMOVDESP_CAN_ARTICULO_CK CHECK (CAN_ARTICULO >= 0),
   CONSTRAINT INV_DETMOVDESP_PK PRIMARY KEY (COD_CIA, SUCURSAL, TIP_MOVTO, COD_MOVTO, NUM_DOCTO, NUM_DESPACHO, COD_LOTE, COD_ARTICULO, COD_BODEGA)
);

/*==============================================================*/
/* Index: INVDETMOVIMIENTO_DETDESP_FK                           */
/*==============================================================*/
CREATE INDEX INVDETMOVIMIENTO_DETDESP_FK ON INV_DETMOVDESP (
   COD_CIA ASC,
   SUCURSAL ASC,
   TIP_MOVTO ASC,
   COD_MOVTO ASC,
   NUM_DOCTO ASC,
   COD_BODEGA ASC,
   COD_LOTE ASC,
   COD_ARTICULO ASC,
   MEDIDA ASC
);

/*==============================================================*/
/* Table: INV_DETMOVIMIENTO                                     */
/*==============================================================*/
CREATE TABLE INV_DETMOVIMIENTO  (
   COD_CIA              CHAR(3)                         NOT NULL,
   SUCURSAL             CHAR(3)                         NOT NULL,
   TIP_MOVTO            CHAR(1)                         NOT NULL,
   COD_MOVTO            CHAR(2)                         NOT NULL,
   NUM_DOCTO            NUMBER(10)                      NOT NULL,
   COD_BODEGA           CHAR(3)                         NOT NULL,
   COD_LOTE             VARCHAR2(15)                    NOT NULL,
   COD_ARTICULO         VARCHAR2(25)                    NOT NULL,
   MEDIDA               VARCHAR2(5)                     NOT NULL,
   DOC_REFEREN          VARCHAR2(10),
   CAN_ARTICULO         NUMBER(14,4)                    NOT NULL
      CONSTRAINT INV_DETMOVTO_CAN_ARTICULO_CK CHECK (CAN_ARTICULO >= 0),
   CAN_DESPACHADA       NUMBER(14,4)                    NOT NULL
      CONSTRAINT INV_DETMOVIMIENT_CAN_DESPAC_CK CHECK (CAN_DESPACHADA >= 0),
   CAN_BONIFICADA       NUMBER(14,4)                    NOT NULL
      CONSTRAINT INV_DETMOVTO_CAN_BONIF_CK CHECK (CAN_BONIFICADA >= 0),
   LOCALIZA             VARCHAR2(8),
   CCOSTO               VARCHAR2(7),
   IMPUESTO_VTAS        NUMBER(14,4)                    NOT NULL,
   SUB_TOTAL            NUMBER(14,4)                    NOT NULL
      CONSTRAINT INV_DETMOVTO_SUB_TOTAL_CK CHECK (SUB_TOTAL >= 0),
   CODMOVTO_REF         CHAR(2),
   CONSTRAINT INV_DETMOVIMIENTO_PK PRIMARY KEY (COD_CIA, SUCURSAL, TIP_MOVTO, COD_MOVTO, NUM_DOCTO, COD_BODEGA, COD_LOTE, COD_ARTICULO, MEDIDA)
);

/*==============================================================*/
/* Index: INVARTICULO_DETMOV_FK                                 */
/*==============================================================*/
CREATE INDEX INVARTICULO_DETMOV_FK ON INV_DETMOVIMIENTO (
   COD_CIA ASC,
   COD_ARTICULO ASC
);

/*==============================================================*/
/* Table: INV_DETSOLTRASLADO                                    */
/*==============================================================*/
CREATE TABLE INV_DETSOLTRASLADO  (
   COD_CIA              CHAR(3)                         NOT NULL,
   SUCURSAL             CHAR(3)                         NOT NULL,
   TIP_MOVTO            CHAR(1)                         NOT NULL,
   COD_MOVTO            CHAR(2)                         NOT NULL,
   NUM_DOCTO            NUMBER(10)                      NOT NULL,
   COD_BODEGA           CHAR(3)                         NOT NULL,
   COD_LOTE             VARCHAR2(15)                    NOT NULL,
   COD_ARTICULO         VARCHAR2(25)                    NOT NULL,
   CAN_ARTICULO         NUMBER(14,4)                    NOT NULL
      CONSTRAINT INV_DETSOLTRASLA_CAN_ARTICU_CK CHECK (CAN_ARTICULO >= 0),
   CAN_DESPACHADA       NUMBER(14,4)                    NOT NULL
      CONSTRAINT INV_DETSOLTRASLA_CAN_DESPAC_CK CHECK (CAN_DESPACHADA >= 0),
   LOCALIZA             VARCHAR2(8),
   MEDIDA               VARCHAR2(5)                     NOT NULL,
   CONSTRAINT INV_DETSOLTRASLADO_PK PRIMARY KEY (COD_CIA, SUCURSAL, TIP_MOVTO, COD_MOVTO, NUM_DOCTO, COD_BODEGA, COD_LOTE, COD_ARTICULO)
);

/*==============================================================*/
/* Table: INV_DETTOMAFIS                                        */
/*==============================================================*/
CREATE TABLE INV_DETTOMAFIS  (
   SECUENCIA            NUMBER(10)                      NOT NULL,
   COD_LOTE             VARCHAR2(15)                    NOT NULL,
   COD_ARTICULO         VARCHAR2(25)                    NOT NULL,
   LOCALIZA             VARCHAR2(8)                     NOT NULL,
   CAN_EXISTE           NUMBER(14,4)                    NOT NULL
      CONSTRAINT INV_DETTOMAFIS_CAN_EXISTE_CK CHECK (CAN_EXISTE >= 0),
   CONTEO1              NUMBER(14,4)                   
      CONSTRAINT INV_DETTOMAFIS_CONTEO1_CK CHECK (CONTEO1 IS NULL OR (CONTEO1 >= 0 )),
   CONTEO2              NUMBER(14,4)                   
      CONSTRAINT INV_DETTOMAFIS_CONTEO2_CK CHECK (CONTEO2 IS NULL OR (CONTEO2 >= 0 )),
   CONTEO3              NUMBER(14,4)                   
      CONSTRAINT INV_DETTOMAFIS_CONTEO3_CK CHECK (CONTEO3 IS NULL OR (CONTEO3 >= 0 )),
   COSTO                NUMBER(14,4)                    NOT NULL
      CONSTRAINT INV_DETTOMAFIS_COSTO_CK CHECK (COSTO >= 0),
   CONSTRAINT INV_DETTOMAFIS_PK PRIMARY KEY (SECUENCIA, COD_LOTE, COD_ARTICULO, LOCALIZA)
);

/*==============================================================*/
/* Table: INV_DIFTOMAFIS                                        */
/*==============================================================*/
CREATE TABLE INV_DIFTOMAFIS  (
   SECUENCIA            NUMBER(10)                      NOT NULL,
   COD_LOTE             VARCHAR2(15)                    NOT NULL,
   COD_ARTICULO         VARCHAR2(25)                    NOT NULL,
   CAN_EXISTE           NUMBER(14,4)                    NOT NULL
      CONSTRAINT INV_DIFTOMAFIS_CAN_EXISTE_CK CHECK (CAN_EXISTE >= 0),
   CAN_FISICO           NUMBER(14,4)                    NOT NULL
      CONSTRAINT INV_DIFTOMAFIS_CAN_FISICO_CK CHECK (CAN_FISICO >= 0),
   COSTO                NUMBER(14,4)                    NOT NULL,
   CONSTRAINT INV_DIFTOMAFIS_PK PRIMARY KEY (SECUENCIA, COD_LOTE, COD_ARTICULO)
);

/*==============================================================*/
/* Table: INV_DINTOMAFIS                                        */
/*==============================================================*/
CREATE TABLE INV_DINTOMAFIS  (
   SECUENCIA            NUMBER(10)                      NOT NULL,
   COD_LOTE             VARCHAR2(15)                    NOT NULL,
   LOCALIZA             VARCHAR2(8)                     NOT NULL,
   COD_ARTICULO         VARCHAR2(25)                    NOT NULL,
   FECHA                DATE                            NOT NULL,
   CANTIDADENT          NUMBER(14,4)                    NOT NULL
      CONSTRAINT INV_DINTOMAFIS_CANTIDADEN_CK CHECK (CANTIDADENT >= 0),
   PESOENT              NUMBER(14,4)                    NOT NULL
      CONSTRAINT INV_DINTOMAFIS_PESOENT_CK CHECK (PESOENT >= 0),
   CAN_EXISTE           NUMBER(14,4)                    NOT NULL
      CONSTRAINT INV_DINTOMAFIS_CAN_EXISTE_CK CHECK (CAN_EXISTE >= 0),
   CAN_FISICO           NUMBER(14,4)                    NOT NULL
      CONSTRAINT INV_DINTOMAFIS_CAN_FISICO_CK CHECK (CAN_FISICO >= 0),
   COSTO                NUMBER(14,4)                    NOT NULL,
   CONSTRAINT INV_DINTOMAFIS_PK PRIMARY KEY (SECUENCIA, COD_LOTE, LOCALIZA, COD_ARTICULO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Table: INV_ENCABMOVIMIENTO                                   */
/*==============================================================*/
CREATE TABLE INV_ENCABMOVIMIENTO  (
   COD_CIA              CHAR(3)                         NOT NULL,
   SUCURSAL             CHAR(3)                         NOT NULL,
   TIP_MOVTO            CHAR(1)                         NOT NULL,
   COD_MOVTO            CHAR(2)                         NOT NULL,
   NUM_DOCTO            NUMBER(10)                      NOT NULL,
   FEC_MOVTO            DATE                            NOT NULL,
   COD_PROVEEDOR        VARCHAR2(25),
   COD_MONEDA           VARCHAR2(3)                     NOT NULL,
   TIP_CAMBIO           NUMBER(14,2)                    NOT NULL,
   DOC_REFEREN          VARCHAR2(10),
   ANO_FISCAL           NUMBER(4)                       NOT NULL,
   PER_PROCESO          NUMBER(2)                       NOT NULL,
   NUM_ASIENTO          VARCHAR2(15),
   DOC_TRASLADO         VARCHAR2(10),
   IND_EXTERNO          CHAR(4),
   DES_OBSERVACION      VARCHAR2(300),
   CCOSTO               VARCHAR2(7),
   COD_USUARIO          VARCHAR2(30)                    NOT NULL,
   ESTADO               CHAR(1)                         NOT NULL
      CONSTRAINT INV_ENCABMOVIMIE_ESTADO_CK CHECK (ESTADO IN ('P','C','D','A')),
   CONSTRAINT INV_ENCABMOVIMIENTO_PK PRIMARY KEY (COD_CIA, SUCURSAL, TIP_MOVTO, COD_MOVTO, NUM_DOCTO)
);

/*==============================================================*/
/* Index: INV_ENCABMOVTO_IDX_REF                                */
/*==============================================================*/
CREATE UNIQUE INDEX INV_ENCABMOVTO_IDX_REF ON INV_ENCABMOVIMIENTO (
   COD_CIA ASC,
   SUCURSAL ASC,
   TIP_MOVTO ASC,
   COD_MOVTO ASC,
   COD_PROVEEDOR ASC,
   DOC_REFEREN ASC,
   IND_EXTERNO ASC
);

/*==============================================================*/
/* Table: INV_ENCABTABLACOMSN                                   */
/*==============================================================*/
CREATE TABLE INV_ENCABTABLACOMSN  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_TABLA            VARCHAR2(2)                     NOT NULL,
   DES_TABLA            VARCHAR2(30)                    NOT NULL,
   CONSTRAINT INV_ENCABTABLACOMSN_PK PRIMARY KEY (COD_CIA, COD_TABLA)
);

/*==============================================================*/
/* Table: INV_ENCABTRASLADO                                     */
/*==============================================================*/
CREATE TABLE INV_ENCABTRASLADO  (
   COD_CIA              CHAR(3)                         NOT NULL,
   SUCURSAL             CHAR(3)                         NOT NULL,
   TIP_MOVTO            CHAR(1)                         NOT NULL,
   COD_MOVTO            CHAR(2)                         NOT NULL,
   NUM_DOCTO            NUMBER(10)                      NOT NULL,
   COD_CIADESTINO       CHAR(3)                         NOT NULL,
   SUCURSAL_DESTINO     CHAR(3)                         NOT NULL,
   BODEGA_DESTINO       CHAR(3)                         NOT NULL,
   TIP_MOVTOENT         CHAR(1),
   COD_MOVTOENT         CHAR(2),
   NUM_DOCTOENT         NUMBER(10),
   ESTADO               CHAR(1)                         NOT NULL
      CONSTRAINT INV_ENCABTRASL_ESTADO_CK CHECK (ESTADO IN ('P','E','R','A')),
   CONSTRAINT INV_ENCABTRASLADO_PK PRIMARY KEY (COD_CIA, SUCURSAL, TIP_MOVTO, COD_MOVTO, NUM_DOCTO)
);

/*==============================================================*/
/* Table: INV_ENCMOVDESP                                        */
/*==============================================================*/
CREATE TABLE INV_ENCMOVDESP  (
   COD_CIA              CHAR(3)                         NOT NULL,
   SUCURSAL             CHAR(3)                         NOT NULL,
   TIP_MOVTO            CHAR(1)                         NOT NULL,
   COD_MOVTO            CHAR(2)                         NOT NULL,
   NUM_DOCTO            NUMBER(10)                      NOT NULL,
   NUM_DESPACHO         NUMBER(10)                      NOT NULL,
   FEC_MOVTO            DATE                            NOT NULL,
   ESTADO               CHAR(1)                        DEFAULT 'P' NOT NULL
      CONSTRAINT INV_ENCMOVDESP_ESTADO_CK CHECK (ESTADO IN ('P','D','A')),
   CONSTRAINT INV_ENCMOVDESP_PK PRIMARY KEY (COD_CIA, SUCURSAL, TIP_MOVTO, COD_MOVTO, NUM_DOCTO, NUM_DESPACHO)
);

/*==============================================================*/
/* Table: INV_ENCSOLTRASLADO                                    */
/*==============================================================*/
CREATE TABLE INV_ENCSOLTRASLADO  (
   COD_CIA              CHAR(3)                         NOT NULL,
   SUCURSAL             CHAR(3)                         NOT NULL,
   TIP_MOVTO            CHAR(1)                         NOT NULL,
   COD_MOVTO            CHAR(2)                         NOT NULL,
   NUM_DOCTO            NUMBER(10)                      NOT NULL,
   FEC_MOVTO            DATE                            NOT NULL,
   DOC_REFEREN          VARCHAR2(10),
   COD_CIASAL           CHAR(3)                         NOT NULL,
   SUCURSAL_SAL         CHAR(3)                         NOT NULL,
   BODEGA_RECIBE        CHAR(3)                         NOT NULL,
   TIP_MOVTOSAL         CHAR(1),
   COD_MOVTOSAL         CHAR(2),
   NUM_DOCTOSAL         NUMBER(10),
   COD_USUARIO          VARCHAR2(30)                    NOT NULL,
   DES_OBSERVACION      VARCHAR2(300),
   ESTADO               CHAR(1)                         NOT NULL,
   CONSTRAINT INV_ENCSOLTRASLADO_PK PRIMARY KEY (COD_CIA, SUCURSAL, TIP_MOVTO, COD_MOVTO, NUM_DOCTO)
);

/*==============================================================*/
/* Table: INV_GRUPO                                             */
/*==============================================================*/
CREATE TABLE INV_GRUPO  (
   COD_CIA              CHAR(3)                         NOT NULL,
   GRUPO                VARCHAR2(25)                    NOT NULL,
   CANTIDAD             NUMBER(14,4)                    NOT NULL
      CONSTRAINT INV_GRUPO_CANTIDAD_CK CHECK (CANTIDAD >= 0),
   TIPO                 CHAR(1)                         NOT NULL
      CONSTRAINT INV_GRUPO_TIPO_CK CHECK (TIPO IN ('E','P')),
   FECHA                DATE                            NOT NULL,
   DESCRIPCION          VARCHAR2(50)                    NOT NULL,
   CONSTRAINT INV_GRUPO_PK PRIMARY KEY (COD_CIA, GRUPO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Table: INV_GRUPODET                                          */
/*==============================================================*/
CREATE TABLE INV_GRUPODET  (
   COD_CIA              CHAR(3)                         NOT NULL,
   GRUPO                VARCHAR2(25)                    NOT NULL,
   COD_ARTICULO         VARCHAR2(25)                    NOT NULL,
   MEDIDA               VARCHAR2(5)                     NOT NULL,
   CANTIDAD             NUMBER(14,4)                    NOT NULL
      CONSTRAINT INV_GRUPODET_CANTIDAD_CK CHECK (CANTIDAD >= 0),
   COD_BODEGA           CHAR(3),
   CONSTRAINT INV_GRUPODET_PK PRIMARY KEY (COD_CIA, GRUPO, COD_ARTICULO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Index: INVMEDIDA_GRUPODET_FK                                 */
/*==============================================================*/
CREATE INDEX INVMEDIDA_GRUPODET_FK ON INV_GRUPODET (
   MEDIDA ASC
);

/*==============================================================*/
/* Index: INVARTICULO_GRUPODET_FK                               */
/*==============================================================*/
CREATE INDEX INVARTICULO_GRUPODET_FK ON INV_GRUPODET (
   COD_CIA ASC,
   COD_ARTICULO ASC
);

/*==============================================================*/
/* Table: INV_HIST_DET_MOVTO                                    */
/*==============================================================*/
CREATE TABLE INV_HIST_DET_MOVTO  (
   COD_CIA              CHAR(3)                         NOT NULL,
   SUCURSAL             CHAR(3)                         NOT NULL,
   TIP_MOVTO            CHAR(1)                         NOT NULL,
   COD_MOVTO            CHAR(2)                         NOT NULL,
   NUM_DOCTO            NUMBER(10)                      NOT NULL,
   COD_BODEGA           CHAR(3)                         NOT NULL,
   COD_LOTE             VARCHAR2(15)                    NOT NULL,
   COD_ARTICULO         VARCHAR2(25)                    NOT NULL,
   MEDIDA               VARCHAR2(5)                     NOT NULL,
   DOC_REFEREN          VARCHAR2(10),
   CAN_ARTICULO         NUMBER(14,4)                    NOT NULL
      CONSTRAINT INV_HDETMOVTO_CAN_ARTICULO_CK CHECK (CAN_ARTICULO >= 0),
   CAN_DESPACHADA       NUMBER(14,4)                    NOT NULL
      CONSTRAINT INV_HIST_DET_MOV_CAN_DESPAC_CK CHECK (CAN_DESPACHADA >= 0),
   CAN_BONIFICADA       NUMBER(14,4)                    NOT NULL
      CONSTRAINT INV_HDETMOVTO_CAN_BONIF_CK CHECK (CAN_BONIFICADA >= 0),
   LOCALIZA             VARCHAR2(8),
   CCOSTO               VARCHAR2(7),
   IMPUESTO_VTAS        NUMBER(14,4)                    NOT NULL,
   SUB_TOTAL            NUMBER(14,4)                    NOT NULL,
   CODMOVTO_REF         CHAR(2),
   CONSTRAINT INV_HIST_DET_MOVTO_PK PRIMARY KEY (COD_CIA, SUCURSAL, TIP_MOVTO, COD_MOVTO, NUM_DOCTO, COD_BODEGA, COD_LOTE, COD_ARTICULO, MEDIDA)
);

/*==============================================================*/
/* Table: INV_HIST_ENC_MOVTO                                    */
/*==============================================================*/
CREATE TABLE INV_HIST_ENC_MOVTO  (
   COD_CIA              CHAR(3)                         NOT NULL,
   SUCURSAL             CHAR(3)                         NOT NULL,
   TIP_MOVTO            CHAR(1)                         NOT NULL,
   COD_MOVTO            CHAR(2)                         NOT NULL,
   NUM_DOCTO            NUMBER(10)                      NOT NULL,
   FEC_MOVTO            DATE                            NOT NULL,
   COD_PROVEEDOR        VARCHAR2(25),
   COD_MONEDA           VARCHAR2(3)                     NOT NULL,
   TIP_CAMBIO           NUMBER(14,2)                    NOT NULL,
   DOC_REFEREN          VARCHAR2(10),
   ANO_FISCAL           NUMBER(4)                       NOT NULL,
   PER_PROCESO          NUMBER(2)                       NOT NULL,
   NUM_ASIENTO          VARCHAR2(15),
   DOC_TRASLADO         VARCHAR2(10),
   IND_EXTERNO          CHAR(4),
   DES_OBSERVACION      VARCHAR2(300),
   CCOSTO               VARCHAR2(7),
   COD_USUARIO          VARCHAR2(30)                    NOT NULL,
   ESTADO               CHAR(1)                         NOT NULL,
   CONSTRAINT INV_HIST_ENC_MOVTO_PK PRIMARY KEY (COD_CIA, SUCURSAL, TIP_MOVTO, COD_MOVTO, NUM_DOCTO)
);

/*==============================================================*/
/* Index: INVCONCEPMOVTO_HENCMOV_FK                             */
/*==============================================================*/
CREATE INDEX INVCONCEPMOVTO_HENCMOV_FK ON INV_HIST_ENC_MOVTO (
   COD_CIA ASC,
   TIP_MOVTO ASC,
   COD_MOVTO ASC
);

/*==============================================================*/
/* Table: INV_HIST_LOTE                                         */
/*==============================================================*/
CREATE TABLE INV_HIST_LOTE  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_LOTE             VARCHAR2(15)                    NOT NULL,
   COD_ARTICULO         VARCHAR2(25)                    NOT NULL,
   COD_LOTEPROV         VARCHAR2(15),
   COD_PROVEEDOR        VARCHAR2(25),
   FEC_INGRESO          DATE                            NOT NULL,
   FEC_VENCE            DATE,
   COS_UNIDAD           NUMBER(14,4)                    NOT NULL,
   COS_COMPRA           NUMBER(14,4)                    NOT NULL,
   CONSTRAINT INV_HIST_LOTE_PK PRIMARY KEY (COD_CIA, COD_LOTE, COD_ARTICULO)
);

/*==============================================================*/
/* Table: INV_LINEA                                             */
/*==============================================================*/
CREATE TABLE INV_LINEA  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_LINEA            VARCHAR2(5)                     NOT NULL,
   DES_LINEA            VARCHAR2(30)                    NOT NULL,
   PRECIO_REGULADO      CHAR(1)                        DEFAULT 'N' NOT NULL
      CONSTRAINT INV_LINEA_PRECIOREG_CK CHECK (PRECIO_REGULADO IN ('S','N')),
   PORC_FINANCIERO      NUMBER(5,2)                    
      CONSTRAINT INV_LINEA_PORCFINAN_CK CHECK (PORC_FINANCIERO IS NULL OR (PORC_FINANCIERO >= 0 )),
   PORC_MAYORISTA       NUMBER(5,2)                    
      CONSTRAINT INV_LINEA_PORCMAY_CK CHECK (PORC_MAYORISTA IS NULL OR (PORC_MAYORISTA >= 0 )),
   PORC_DETALLISTA      NUMBER(5,2)                    
      CONSTRAINT INV_LINEA_PORCDET_CK CHECK (PORC_DETALLISTA IS NULL OR (PORC_DETALLISTA >= 0 )),
   CONSTRAINT INV_LINEA_PK PRIMARY KEY (COD_LINEA, COD_CIA)
);

/*==============================================================*/
/* Table: INV_LOC                                               */
/*==============================================================*/
CREATE TABLE INV_LOC  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_BODEGA           CHAR(3)                         NOT NULL,
   LOCALIZA             VARCHAR2(8)                     NOT NULL,
   DES_LOCALIZA         VARCHAR2(50)                    NOT NULL,
   CONSTRAINT INV_LOC_PK PRIMARY KEY (COD_CIA, COD_BODEGA, LOCALIZA)
);

/*==============================================================*/
/* Table: INV_LOTE                                              */
/*==============================================================*/
CREATE TABLE INV_LOTE  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_LOTE             VARCHAR2(15)                    NOT NULL,
   COD_ARTICULO         VARCHAR2(25)                    NOT NULL,
   COD_LOTEPROV         VARCHAR2(15),
   COD_PROVEEDOR        VARCHAR2(25),
   FEC_INGRESO          DATE                            NOT NULL,
   FEC_VENCE            DATE,
   COS_UNIDAD           NUMBER(14,4)                    NOT NULL
      CONSTRAINT INV_LOTE_COS_UNIDAD_CK CHECK (COS_UNIDAD >= 0),
   COS_COMPRA           NUMBER(14,4)                    NOT NULL
      CONSTRAINT INV_LOTE_COS_COMPRA_CK CHECK (COS_COMPRA >= 0),
   DESCRIPCION          VARCHAR2(40),
   CONSTRAINT INV_LOTE_PK PRIMARY KEY (COD_CIA, COD_LOTE, COD_ARTICULO)
);

/*==============================================================*/
/* Index: INVARTICULO_LOTE_FK                                   */
/*==============================================================*/
CREATE INDEX INVARTICULO_LOTE_FK ON INV_LOTE (
   COD_CIA ASC,
   COD_ARTICULO ASC
);

/*==============================================================*/
/* Table: INV_LOTE_ARTIC_BODEGA                                 */
/*==============================================================*/
CREATE TABLE INV_LOTE_ARTIC_BODEGA  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_BODEGA           CHAR(3)                         NOT NULL,
   COD_ARTICULO         VARCHAR2(25)                    NOT NULL,
   COD_LOTE             VARCHAR2(15)                    NOT NULL,
   LOCALIZA             VARCHAR2(8),
   CAN_EXISTE           NUMBER(14,4)                    NOT NULL
      CONSTRAINT INV_LOTARTBOD_CAN_EXISTE_CK CHECK (CAN_EXISTE >= 0),
   CAN_APARTADO         NUMBER(14,4)                    NOT NULL
      CONSTRAINT INV_LOTE_ARTIC_B_CAN_APARTA_CK CHECK (CAN_APARTADO >= 0),
   COS_TOTAL            NUMBER(14,4)                   DEFAULT 0 NOT NULL
      CONSTRAINT INV_LOTE_ARTIC_B_COS_TOTAL_CK CHECK (COS_TOTAL >= 0),
   CONSTRAINT INV_LOTE_ARTIC_BODEGA_PK PRIMARY KEY (COD_CIA, COD_BODEGA, COD_ARTICULO, COD_LOTE),
   CONSTRAINT INV_LOTE_ARTIC_BODEGA_COSTO_CK CHECK ((CAN_EXISTE>0 AND COS_TOTAL>=0) OR (ABS(COS_TOTAL)<0.5 AND CAN_EXISTE=0))
);

/*==============================================================*/
/* Index: INVLOTE_LOTEARTBOD_FK                                 */
/*==============================================================*/
CREATE INDEX INVLOTE_LOTEARTBOD_FK ON INV_LOTE_ARTIC_BODEGA (
   COD_CIA ASC,
   COD_LOTE ASC,
   COD_ARTICULO ASC
);

/*==============================================================*/
/* Index: INVLOC_LOTEARTBOD_FK                                  */
/*==============================================================*/
CREATE INDEX INVLOC_LOTEARTBOD_FK ON INV_LOTE_ARTIC_BODEGA (
   COD_CIA ASC,
   COD_BODEGA ASC,
   LOCALIZA ASC
);

/*==============================================================*/
/* Table: INV_MARCA                                             */
/*==============================================================*/
CREATE TABLE INV_MARCA  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_MARCA            VARCHAR2(5)                     NOT NULL,
   DES_MARCA            VARCHAR2(30)                    NOT NULL,
   PORC_UTILIDAD        NUMBER(5,2),
   CONSTRAINT INV_MARCA_PK PRIMARY KEY (COD_MARCA, COD_CIA)
);

/*==============================================================*/
/* Table: INV_MEDIDA                                            */
/*==============================================================*/
CREATE TABLE INV_MEDIDA  (
   MEDIDA               VARCHAR2(5)                     NOT NULL,
   MEDIDA_BASE          VARCHAR2(5)                     NOT NULL,
   DES_MEDIDA           VARCHAR2(30)                    NOT NULL,
   FACTOR               NUMBER(16,10)                   NOT NULL,
   EXPONENTE            NUMBER(4,2)                     NOT NULL,
   MEDIDA_CAN           VARCHAR2(5)                     NOT NULL,
   EXPONENTE_CAN        NUMBER(4,2)                     NOT NULL,
   FORMULA_CAN          VARCHAR2(60)                    NOT NULL,
   CONSTRAINT INV_MEDIDA_PK PRIMARY KEY (MEDIDA)
);

/*==============================================================*/
/* Table: INV_MOVGRUPO                                          */
/*==============================================================*/
CREATE TABLE INV_MOVGRUPO  (
   COD_CIA              CHAR(3)                         NOT NULL,
   SUCURSAL             CHAR(3)                         NOT NULL,
   TIP_MOVTO            CHAR(1)                         NOT NULL,
   CONSECUTIVO          NUMBER(10)                      NOT NULL,
   COD_MOVTO            CHAR(2)                         NOT NULL,
   NUM_DOCTO            NUMBER(10),
   COD_MOVTOGRP         CHAR(2)                         NOT NULL,
   NUM_DOCTOGRP         NUMBER(10),
   FECHA                DATE                            NOT NULL,
   COD_BODEGA           CHAR(3)                         NOT NULL,
   REFERENCIA           VARCHAR2(10),
   USUARIO              VARCHAR2(30)                    NOT NULL,
   ESTADO               CHAR(1)                         NOT NULL
      CONSTRAINT INV_MOVGRUPO_ESTADO_CK CHECK (ESTADO IN ('A','P','N')),
   CONSTRAINT INV_MOVGRUPO_PK PRIMARY KEY (COD_CIA, SUCURSAL, TIP_MOVTO, CONSECUTIVO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Table: INV_MOVGRUPODET                                       */
/*==============================================================*/
CREATE TABLE INV_MOVGRUPODET  (
   COD_CIA              CHAR(3)                         NOT NULL,
   SUCURSAL             CHAR(3)                         NOT NULL,
   TIP_MOVTO            CHAR(1)                         NOT NULL,
   CONSECUTIVO          NUMBER(10)                      NOT NULL,
   GRUPO                VARCHAR2(25)                    NOT NULL,
   LOTE                 VARCHAR2(15),
   CANTIDAD             NUMBER(14,4)                    NOT NULL
      CONSTRAINT INV_MOVGRUPODET_CANTIDAD_CK CHECK (CANTIDAD >= 0),
   CONSTRAINT INV_MOVGRUPODET_PK PRIMARY KEY (COD_CIA, SUCURSAL, TIP_MOVTO, CONSECUTIVO, GRUPO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Index: INVGRUPO_MOVDET_FK                                    */
/*==============================================================*/
CREATE INDEX INVGRUPO_MOVDET_FK ON INV_MOVGRUPODET (
   COD_CIA ASC,
   GRUPO ASC
);

/*==============================================================*/
/* Table: INV_NIVLOC                                            */
/*==============================================================*/
CREATE TABLE INV_NIVLOC  (
   COD_CIA              CHAR(3)                         NOT NULL,
   ORDINAL              NUMBER(1)                       NOT NULL,
   LONGITUD             NUMBER(1)                       NOT NULL
      CONSTRAINT INV_NIVLOC_LONGITUD_CK CHECK (LONGITUD BETWEEN 1 AND 3),
   DESCRIPCION          VARCHAR2(30)                    NOT NULL,
   CONSTRAINT INV_NIVLOC_PK PRIMARY KEY (COD_CIA, ORDINAL)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Table: INV_NOMLOC                                            */
/*==============================================================*/
CREATE TABLE INV_NOMLOC  (
   COD_CIA              CHAR(3)                         NOT NULL,
   ORDINAL              NUMBER(1)                       NOT NULL,
   COD_BODEGA           CHAR(3)                         NOT NULL,
   CODIGO               VARCHAR2(3)                     NOT NULL,
   DESCRIPCION          VARCHAR2(30)                    NOT NULL,
   CONSTRAINT INV_NOMLOC_PK PRIMARY KEY (COD_CIA, ORDINAL, COD_BODEGA, CODIGO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Index: INVBODEGA_NOMLOC_FK                                   */
/*==============================================================*/
CREATE INDEX INVBODEGA_NOMLOC_FK ON INV_NOMLOC (
   COD_CIA ASC,
   COD_BODEGA ASC
);

/*==============================================================*/
/* Table: INV_PARAMETRO                                         */
/*==============================================================*/
CREATE TABLE INV_PARAMETRO  (
   COD_CIA              CHAR(3)                         NOT NULL,
   TIP_VALUAC           VARCHAR2(10)                    NOT NULL
      CONSTRAINT INV_PARAMETRO_TIP_VALUAC_CK CHECK (TIP_VALUAC IN ('PEPS','UEPS','PROMEDIO','REPOSICION')),
   FOR_ARTICULO         VARCHAR2(25)                    NOT NULL,
   FOR_LINEA            VARCHAR2(5)                     NOT NULL,
   IND_INTCONTA         CHAR(1)                         NOT NULL
      CONSTRAINT INV_PARAMETRO_IND_INTCONTA_CK CHECK (IND_INTCONTA IN ('S','N')),
   COD_CTAINVENT        VARCHAR2(25),
   COD_CTAENTRADA       VARCHAR2(25),
   COD_CTASALIDA        VARCHAR2(25),
   IND_CTLLOTE          CHAR(1)                         NOT NULL
      CONSTRAINT INV_PARAMETRO_IND_CTLLOTE_CK CHECK (IND_CTLLOTE IN ('S','N','M')),
   IND_CTLDESP          CHAR(1)                         NOT NULL
      CONSTRAINT INV_PARAMETRO_IND_CTLDESP_CK CHECK (IND_CTLDESP IN ('S','N')),
   IND_RECTRAS_AUTO     CHAR(1)                         NOT NULL
      CONSTRAINT INV_PARAMETRO_IND_RECTRAS_CK CHECK (IND_RECTRAS_AUTO IN ('S','N')),
   IND_COSPRO_GLO       CHAR(1)                         NOT NULL
      CONSTRAINT INV_PARAMETRO_IND_COSPROGLO_CK CHECK (IND_COSPRO_GLO IN ('S','N')),
   PRE_ARTEMP           VARCHAR2(5),
   CON_ARTEMP           NUMBER(6),
   LOTEUNICO            VARCHAR2(15),
   FACSINMER            CHAR(1)                        DEFAULT 'N' NOT NULL,
   CONSTRAINT INV_PARAMETRO_PK PRIMARY KEY (COD_CIA)
);

/*==============================================================*/
/* Table: INV_SUSTITUTO                                         */
/*==============================================================*/
CREATE TABLE INV_SUSTITUTO  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_ARTICULO         VARCHAR2(25)                    NOT NULL,
   COD_ARTICULOS        VARCHAR2(25)                    NOT NULL,
   CONSTRAINT INV_SUSTITUTO_PK PRIMARY KEY (COD_CIA, COD_ARTICULO, COD_ARTICULOS)
);

/*==============================================================*/
/* Table: INV_TABLABONIFIC                                      */
/*==============================================================*/
CREATE TABLE INV_TABLABONIFIC  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_ARTICULO         VARCHAR2(25)                    NOT NULL,
   UND_VENDE            NUMBER(12)                      NOT NULL,
   UND_BONIFICAP        NUMBER(5)                       NOT NULL
      CONSTRAINT INV_TABBONIFIC_BONIFICAP_CK CHECK (UND_BONIFICAP >= 0),
   UND_BONIFICAE        NUMBER(5)                       NOT NULL
      CONSTRAINT INV_TABBONIFIC_BONIFICAE_CK CHECK (UND_BONIFICAE >= 0),
   FONDO_BONIFICACION   CHAR(1)                        DEFAULT 'N' NOT NULL
      CONSTRAINT INV_TABBONIFIC_FONDO_CK CHECK (FONDO_BONIFICACION IN ('S','N')),
   CONSTRAINT INV_TABLABONIFIC_PK PRIMARY KEY (COD_CIA, COD_ARTICULO, UND_VENDE)
);

/*==============================================================*/
/* Table: INV_TIPINV                                            */
/*==============================================================*/
CREATE TABLE INV_TIPINV  (
   TIPO_INV             VARCHAR2(3)                     NOT NULL,
   DES_TIPINV           VARCHAR2(30)                    NOT NULL,
   CTLEXISTENCIA        CHAR(1)                        DEFAULT 'S' NOT NULL
      CONSTRAINT INV_TIPINV_CTLEXISTEN_CK CHECK (CTLEXISTENCIA IN ('S','N')),
   CONSTRAINT INV_TIPINV_PK PRIMARY KEY (TIPO_INV)
);

/*==============================================================*/
/* Table: INV_TMP_CRITERIOS                                     */
/*==============================================================*/
CREATE TABLE INV_TMP_CRITERIOS  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_BODEGA           CHAR(3)                         NOT NULL,
   COD_ARTICULO         VARCHAR2(25)                    NOT NULL,
   MONTO                NUMBER(14,4)                    NOT NULL,
   CONSTRAINT INV_TMP_CRITERIOS_PK PRIMARY KEY (COD_CIA, COD_BODEGA, COD_ARTICULO)
);

/*==============================================================*/
/* Table: INV_TOMAFIS                                           */
/*==============================================================*/
CREATE TABLE INV_TOMAFIS  (
   SECUENCIA            NUMBER(10)                      NOT NULL,
   COD_CIA              CHAR(3)                         NOT NULL,
   TIPO                 CHAR(1)                        DEFAULT '1' NOT NULL
      CONSTRAINT INV_TOMAFIS_TIPO_CK CHECK (TIPO IN ('1','2','3','D')),
   TIPO_INV             VARCHAR2(3)                     NOT NULL,
   COD_BODEGA           CHAR(3)                         NOT NULL,
   OBSERVACION          VARCHAR2(100),
   FEC_MOVTO            DATE                            NOT NULL,
   FEC_APLICA           DATE,
   USUARIO              VARCHAR2(30)                    NOT NULL,
   ESTADO               CHAR(1)                        DEFAULT 'P' NOT NULL
      CONSTRAINT INV_ENCABEXISFIS_ESTADO_CK CHECK (ESTADO IN ('P','A','L')),
   CONSTRAINT INV_TOMAFIS_PK PRIMARY KEY (SECUENCIA)
);

/*==============================================================*/
/* View: INV_EXIST_BODEGA                                       */
/*==============================================================*/
CREATE OR REPLACE VIEW INV_EXIST_BODEGA AS
SELECT COD_CIA, COD_BODEGA, COD_ARTICULO,
       SUM(CAN_EXISTE) CAN_EXISTE, SUM(CAN_APARTADO) CAN_APARTADO,
       SUM(COS_TOTAL) COS_TOTAL,
       DECODE(SUM(CAN_EXISTE), 0, 0, SUM(COS_TOTAL)/SUM(CAN_EXISTE)) COS_PROMEDIO
FROM INV_LOTE_ARTIC_BODEGA
GROUP BY COD_CIA, COD_BODEGA, COD_ARTICULO;

/*==============================================================*/
/* View: INV_VISTRASLADO                                        */
/*==============================================================*/
CREATE OR REPLACE VIEW INV_VISTRASLADO AS
SELECT M.COD_CIA, M.TIP_MOVTO, M.SUCURSAL, M.NUM_DOCTO, M.COD_MOVTO, M.FEC_MOVTO,
       M.COD_PROVEEDOR, M.COD_MONEDA, M.TIP_CAMBIO, M.DOC_REFEREN, M.ANO_FISCAL,
       M.PER_PROCESO, M.NUM_ASIENTO, M.IND_EXTERNO, M.DES_OBSERVACION, M.CCOSTO,
       T.COD_CIADESTINO, T.SUCURSAL_DESTINO, T.TIP_MOVTOENT, T.COD_MOVTOENT,
       T.NUM_DOCTOENT, T.ESTADO, M.COD_USUARIO, T.BODEGA_DESTINO
FROM INV_ENCABMOVIMIENTO M, INV_ENCABTRASLADO T
WHERE M.COD_CIA = T.COD_CIA
  AND M.SUCURSAL = T.SUCURSAL 
  AND M.TIP_MOVTO = T.TIP_MOVTO
  AND M.COD_MOVTO = T.COD_MOVTO
  AND M.NUM_DOCTO = T.NUM_DOCTO;

/*==============================================================*/
/* View: V_INVMOV                                               */
/*==============================================================*/
CREATE OR REPLACE VIEW V_INVMOV AS
SELECT  A.COD_CIA,A.SUCURSAL,B.TIP_MOVTO,B.COD_MOVTO,A.NUM_DOCTO,B.DOC_REFEREN,B.FEC_MOVTO,
A.COD_LOTE,B.COD_PROVEEDOR,A.COD_BODEGA,A.COD_ARTICULO,
DECODE(A.TIP_MOVTO,'E',A.CAN_ARTICULO,-A.CAN_ARTICULO) CANTIDAD,
DECODE(A.TIP_MOVTO,'E',A.SUB_TOTAL,-A.SUB_TOTAL) MONTO
FROM INV_DETMOVIMIENTO A,INV_ENCABMOVIMIENTO B
WHERE A.COD_CIA=B.COD_CIA
AND   A.SUCURSAL=B.SUCURSAL
AND   A.TIP_MOVTO=B.TIP_MOVTO
AND   A.COD_MOVTO=B.COD_MOVTO
AND   A.NUM_DOCTO=B.NUM_DOCTO
AND   B.ESTADO='D';

ALTER TABLE INV_CONTEO
   ADD CONSTRAINT INVTOMAFIS_CONTEO_FK FOREIGN KEY (SECUENCIA)
      REFERENCES INV_TOMAFIS (SECUENCIA);

ALTER TABLE INV_TABLADESC
   ADD CONSTRAINT INVARTICULO_TABLADESC_FK FOREIGN KEY (COD_CIA, COD_ARTICULO)
      REFERENCES INV_ARTICULO (COD_CIA, COD_ARTICULO);

ALTER TABLE INV_DETALLES
   ADD CONSTRAINT INVARTICULO_DETALLES_FK FOREIGN KEY (COD_CIA, COD_ARTICULO)
      REFERENCES INV_ARTICULO (COD_CIA, COD_ARTICULO);

ALTER TABLE INV_DETALLES
   ADD CONSTRAINT INVATRIBUTOS_DETALLES_FK FOREIGN KEY (TIPO)
      REFERENCES INV_ATRIBUTOS (TIPO);

ALTER TABLE INV_DETTABLACOMSN
   ADD CONSTRAINT INVENCABTABCOM_DETTABCOM_FK FOREIGN KEY (COD_CIA, COD_TABLA)
      REFERENCES INV_ENCABTABLACOMSN (COD_CIA, COD_TABLA);

ALTER TABLE INV_ACUM_PERIODO
   ADD CONSTRAINT INVARTICBODEGA_ACUM_FK FOREIGN KEY (COD_CIA, COD_BODEGA, COD_ARTICULO)
      REFERENCES INV_ARTICULOBOD (COD_CIA, COD_BODEGA, COD_ARTICULO);

ALTER TABLE INV_ACUM_PERIODO
   ADD CONSTRAINT INVARTICULO_ACUMMES_FK FOREIGN KEY (COD_CIA, COD_ARTICULO)
      REFERENCES INV_ARTICULO (COD_CIA, COD_ARTICULO);

ALTER TABLE INV_ARTIC_CODBAR
   ADD CONSTRAINT INVARTICULO_ARTICCODBAR_FK FOREIGN KEY (COD_CIA, COD_ARTICULO)
      REFERENCES INV_ARTICULO (COD_CIA, COD_ARTICULO);

ALTER TABLE INV_ARTIC_LOCBOD
   ADD CONSTRAINT INVLOC_ARTICLOCBOD_FK FOREIGN KEY (COD_CIA, COD_BODEGA, LOCALIZA)
      REFERENCES INV_LOC (COD_CIA, COD_BODEGA, LOCALIZA);

ALTER TABLE INV_ARTIC_MEDIDA
   ADD CONSTRAINT INVARTICULO_ARTICMEDIDA_FK FOREIGN KEY (COD_CIA, COD_ARTICULO)
      REFERENCES INV_ARTICULO (COD_CIA, COD_ARTICULO);

ALTER TABLE INV_ARTIC_MEDIDA
   ADD CONSTRAINT INVMEDIDA_ARTICMED_FK FOREIGN KEY (MEDIDA)
      REFERENCES INV_MEDIDA (MEDIDA);

ALTER TABLE INV_ARTIC_PROV
   ADD CONSTRAINT INVARTICULO_ARTICPROV_FK FOREIGN KEY (COD_CIA, COD_ARTICULO)
      REFERENCES INV_ARTICULO (COD_CIA, COD_ARTICULO);

ALTER TABLE INV_ARTICULO
   ADD CONSTRAINT INVCOMBLCM_ARTICULO_FK FOREIGN KEY (COD_CIA, COD_LINEA, COD_CLASE, COD_MARCA)
      REFERENCES INV_COMB_LCM (COD_CIA, COD_LINEA, COD_CLASE, COD_MARCA);

ALTER TABLE INV_ARTICULO
   ADD CONSTRAINT INVDEPTOS_ARTICULO_FK FOREIGN KEY (COD_CIA, COD_DEPTO)
      REFERENCES INV_DEPTOS (COD_CIA, COD_DEPTO);

ALTER TABLE INV_ARTICULO
   ADD CONSTRAINT INVMEDIDA_ARTICULO_FK FOREIGN KEY (MEDIDA)
      REFERENCES INV_MEDIDA (MEDIDA);

ALTER TABLE INV_ARTICULO
   ADD CONSTRAINT INVTIPINV_ARTICULO_FK FOREIGN KEY (TIPO_INV)
      REFERENCES INV_TIPINV (TIPO_INV);

ALTER TABLE INV_ARTICULO_CON_LOTE
   ADD CONSTRAINT INVARTICULO_CONLOTE_FK FOREIGN KEY (COD_CIA, COD_ARTICULO)
      REFERENCES INV_ARTICULO (COD_CIA, COD_ARTICULO);

ALTER TABLE INV_ARTICULOBOD
   ADD CONSTRAINT INVARTICULO_ARTICBOD_FK FOREIGN KEY (COD_CIA, COD_ARTICULO)
      REFERENCES INV_ARTICULO (COD_CIA, COD_ARTICULO);

ALTER TABLE INV_ARTICULOBOD
   ADD CONSTRAINT INVBODEGA_ARTICBOD_FK FOREIGN KEY (COD_CIA, COD_BODEGA)
      REFERENCES INV_BODEGA (COD_CIA, COD_BODEGA);

ALTER TABLE INV_COMB_LCM
   ADD CONSTRAINT INVCLASE_COMBLCM_FK FOREIGN KEY (COD_CLASE, COD_CIA)
      REFERENCES INV_CLASE (COD_CLASE, COD_CIA);

ALTER TABLE INV_COMB_LCM
   ADD CONSTRAINT INVLINEA_COMBLCM_FK FOREIGN KEY (COD_LINEA, COD_CIA)
      REFERENCES INV_LINEA (COD_LINEA, COD_CIA);

ALTER TABLE INV_COMB_LCM
   ADD CONSTRAINT INVMARCA_COMBLCM_FK FOREIGN KEY (COD_MARCA, COD_CIA)
      REFERENCES INV_MARCA (COD_MARCA, COD_CIA);

ALTER TABLE INV_CONCEPMOVTO
   ADD CONSTRAINT INVPARAMETRO_CONCEPMOV_FK FOREIGN KEY (COD_CIA)
      REFERENCES INV_PARAMETRO (COD_CIA);

ALTER TABLE INV_CONSEC_MOVTOS
   ADD CONSTRAINT INVCONCEPMOTO_CONSECMOV_FK FOREIGN KEY (COD_CIA, TIP_MOVTO, COD_MOVTO)
      REFERENCES INV_CONCEPMOVTO (COD_CIA, TIP_MOVTO, COD_MOVTO);

ALTER TABLE INV_DETMOVDESP
   ADD CONSTRAINT INVDETMOVIMIENTO_DETMOVD_FK FOREIGN KEY (COD_CIA, SUCURSAL, TIP_MOVTO, COD_MOVTO, NUM_DOCTO, COD_BODEGA, COD_LOTE, COD_ARTICULO, MEDIDA)
      REFERENCES INV_DETMOVIMIENTO (COD_CIA, SUCURSAL, TIP_MOVTO, COD_MOVTO, NUM_DOCTO, COD_BODEGA, COD_LOTE, COD_ARTICULO, MEDIDA);

ALTER TABLE INV_DETMOVDESP
   ADD CONSTRAINT INVENCMOVDESP_DETMOVD_FK FOREIGN KEY (COD_CIA, SUCURSAL, TIP_MOVTO, COD_MOVTO, NUM_DOCTO, NUM_DESPACHO)
      REFERENCES INV_ENCMOVDESP (COD_CIA, SUCURSAL, TIP_MOVTO, COD_MOVTO, NUM_DOCTO, NUM_DESPACHO);

ALTER TABLE INV_DETMOVIMIENTO
   ADD CONSTRAINT INVARTICULO_DETMOV_FK FOREIGN KEY (COD_CIA, COD_ARTICULO)
      REFERENCES INV_ARTICULO (COD_CIA, COD_ARTICULO);

ALTER TABLE INV_DETMOVIMIENTO
   ADD CONSTRAINT INVENCABMOVTO_DETMOV_FK FOREIGN KEY (COD_CIA, SUCURSAL, TIP_MOVTO, COD_MOVTO, NUM_DOCTO)
      REFERENCES INV_ENCABMOVIMIENTO (COD_CIA, SUCURSAL, TIP_MOVTO, COD_MOVTO, NUM_DOCTO);

ALTER TABLE INV_DETSOLTRASLADO
   ADD CONSTRAINT INVENCSOLTRAS_DETSOLTRAS_FK FOREIGN KEY (COD_CIA, SUCURSAL, TIP_MOVTO, COD_MOVTO, NUM_DOCTO)
      REFERENCES INV_ENCSOLTRASLADO (COD_CIA, SUCURSAL, TIP_MOVTO, COD_MOVTO, NUM_DOCTO);

ALTER TABLE INV_DETTOMAFIS
   ADD CONSTRAINT INVTOMAFIS_DET_FK FOREIGN KEY (SECUENCIA)
      REFERENCES INV_TOMAFIS (SECUENCIA);

ALTER TABLE INV_DIFTOMAFIS
   ADD CONSTRAINT INVTOMAFIS_DIF_FK FOREIGN KEY (SECUENCIA)
      REFERENCES INV_TOMAFIS (SECUENCIA);

ALTER TABLE INV_DINTOMAFIS
   ADD CONSTRAINT INVTOMAFIS_DINTOMA_FK FOREIGN KEY (SECUENCIA)
      REFERENCES INV_TOMAFIS (SECUENCIA);

ALTER TABLE INV_ENCABMOVIMIENTO
   ADD CONSTRAINT INVCONSECMOVTOS_ENCABMOV_FK FOREIGN KEY (COD_CIA, SUCURSAL, TIP_MOVTO, COD_MOVTO)
      REFERENCES INV_CONSEC_MOVTOS (COD_CIA, SUCURSAL, TIP_MOVTO, COD_MOVTO);

ALTER TABLE INV_ENCABTRASLADO
   ADD CONSTRAINT INVENCABMOVTO_ENCABTRAS_FK FOREIGN KEY (COD_CIA, SUCURSAL, TIP_MOVTO, COD_MOVTO, NUM_DOCTO)
      REFERENCES INV_ENCABMOVIMIENTO (COD_CIA, SUCURSAL, TIP_MOVTO, COD_MOVTO, NUM_DOCTO);

ALTER TABLE INV_GRUPO
   ADD CONSTRAINT INVARTICULO_GRUPO_FK FOREIGN KEY (COD_CIA, GRUPO)
      REFERENCES INV_ARTICULO (COD_CIA, COD_ARTICULO);

ALTER TABLE INV_GRUPODET
   ADD CONSTRAINT INVARTICULO_GRUPODET_FK FOREIGN KEY (COD_CIA, COD_ARTICULO)
      REFERENCES INV_ARTICULO (COD_CIA, COD_ARTICULO);

ALTER TABLE INV_GRUPODET
   ADD CONSTRAINT INVGRUPO_DETALLE_FK FOREIGN KEY (COD_CIA, GRUPO)
      REFERENCES INV_GRUPO (COD_CIA, GRUPO);

ALTER TABLE INV_GRUPODET
   ADD CONSTRAINT INVMEDIDA_GRUPODET_FK FOREIGN KEY (MEDIDA)
      REFERENCES INV_MEDIDA (MEDIDA);

ALTER TABLE INV_HIST_DET_MOVTO
   ADD CONSTRAINT INVHISTENCMOVTO_HISDETMOV_FK FOREIGN KEY (COD_CIA, SUCURSAL, TIP_MOVTO, COD_MOVTO, NUM_DOCTO)
      REFERENCES INV_HIST_ENC_MOVTO (COD_CIA, SUCURSAL, TIP_MOVTO, COD_MOVTO, NUM_DOCTO);

ALTER TABLE INV_HIST_ENC_MOVTO
   ADD CONSTRAINT INVCONCEPMOVTO_HENCMOV_FK FOREIGN KEY (COD_CIA, TIP_MOVTO, COD_MOVTO)
      REFERENCES INV_CONCEPMOVTO (COD_CIA, TIP_MOVTO, COD_MOVTO);

ALTER TABLE INV_LOC
   ADD CONSTRAINT INVBODEGA_LOC_FK FOREIGN KEY (COD_CIA, COD_BODEGA)
      REFERENCES INV_BODEGA (COD_CIA, COD_BODEGA);

ALTER TABLE INV_LOTE
   ADD CONSTRAINT INVARTICULO_LOTE_FK FOREIGN KEY (COD_CIA, COD_ARTICULO)
      REFERENCES INV_ARTICULO (COD_CIA, COD_ARTICULO);

ALTER TABLE INV_LOTE_ARTIC_BODEGA
   ADD CONSTRAINT INVLOC_LOTEARTBOD_FK FOREIGN KEY (COD_CIA, COD_BODEGA, LOCALIZA)
      REFERENCES INV_LOC (COD_CIA, COD_BODEGA, LOCALIZA);

ALTER TABLE INV_LOTE_ARTIC_BODEGA
   ADD CONSTRAINT INVLOTE_LOTEARTBOD_FK FOREIGN KEY (COD_CIA, COD_LOTE, COD_ARTICULO)
      REFERENCES INV_LOTE (COD_CIA, COD_LOTE, COD_ARTICULO);

ALTER TABLE INV_MOVGRUPODET
   ADD CONSTRAINT INVGRUPO_MOVDET_FK FOREIGN KEY (COD_CIA, GRUPO)
      REFERENCES INV_GRUPO (COD_CIA, GRUPO);

ALTER TABLE INV_MOVGRUPODET
   ADD CONSTRAINT INVMOVGRUPO_MOVDET_FK FOREIGN KEY (COD_CIA, SUCURSAL, TIP_MOVTO, CONSECUTIVO)
      REFERENCES INV_MOVGRUPO (COD_CIA, SUCURSAL, TIP_MOVTO, CONSECUTIVO);

ALTER TABLE INV_NOMLOC
   ADD CONSTRAINT INVBODEGA_NOMLOC_FK FOREIGN KEY (COD_CIA, COD_BODEGA)
      REFERENCES INV_BODEGA (COD_CIA, COD_BODEGA);

ALTER TABLE INV_NOMLOC
   ADD CONSTRAINT INVNIVLOC_NOMLOC_FK FOREIGN KEY (COD_CIA, ORDINAL)
      REFERENCES INV_NIVLOC (COD_CIA, ORDINAL);

ALTER TABLE INV_SUSTITUTO
   ADD CONSTRAINT INVARTICULO_SUSTITUTO_FK FOREIGN KEY (COD_CIA, COD_ARTICULO)
      REFERENCES INV_ARTICULO (COD_CIA, COD_ARTICULO);

ALTER TABLE INV_TABLABONIFIC
   ADD CONSTRAINT INVARTICULO_TABBONIF_FK FOREIGN KEY (COD_CIA, COD_ARTICULO)
      REFERENCES INV_ARTICULO (COD_CIA, COD_ARTICULO);

