/*==============================================================*/
/* DBMS name:      ORACLE Version 9i                            */
/* Created on:     30/01/2008 04:16:47 p.m.                     */
/*==============================================================*/


/*==============================================================*/
/* Table: GENPREFSCLA                                           */
/*==============================================================*/
CREATE TABLE GENPREFSCLA  (
   MODULO               VARCHAR2(10)                    NOT NULL,
   OBJETO               VARCHAR2(20)                    NOT NULL,
   CLAVE                VARCHAR2(20)                    NOT NULL,
   DESCRIPCION          VARCHAR2(256)                   NOT NULL,
   CONSTRAINT GENPREFSCLA_PK PRIMARY KEY (MODULO, OBJETO, CLAVE)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Table: GENPREFSOBJ                                           */
/*==============================================================*/
CREATE TABLE GENPREFSOBJ  (
   MODULO               VARCHAR2(10)                    NOT NULL,
   OBJETO               VARCHAR2(20)                    NOT NULL,
   DESCRIPCION          VARCHAR2(256)                   NOT NULL,
   CONSTRAINT GENPREFSOBJ_PK PRIMARY KEY (MODULO, OBJETO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Table: GENPREFSVAL                                           */
/*==============================================================*/
CREATE TABLE GENPREFSVAL  (
   CIA                  CHAR(3)                         NOT NULL,
   MODULO               VARCHAR2(10)                    NOT NULL,
   INSTANCIA            VARCHAR2(20)                    NOT NULL,
   OBJETO               VARCHAR2(20)                    NOT NULL,
   CLAVE                VARCHAR2(20)                    NOT NULL,
   VALOR                VARCHAR2(256),
   CONSTRAINT GENPREFSVAL_PK PRIMARY KEY (CIA, MODULO, OBJETO, CLAVE, INSTANCIA)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Index: GENPREFSCLA_PREFSVAL_FK                               */
/*==============================================================*/
CREATE INDEX GENPREFSCLA_PREFSVAL_FK ON GENPREFSVAL (
   MODULO ASC,
   OBJETO ASC,
   CLAVE ASC
);

/*==============================================================*/
/* Table: GENTIPOBITACORA                                       */
/*==============================================================*/
CREATE TABLE GENTIPOBITACORA  (
   COD_CIA              CHAR(3)                         NOT NULL,
   TIPO                 VARCHAR2(5)                     NOT NULL,
   DESCRIPCION          VARCHAR2(30)                    NOT NULL,
   CONSTRAINT GENTIPOBITACORA_PK PRIMARY KEY (COD_CIA, TIPO)
);

COMMENT ON COLUMN GENTIPOBITACORA.TIPO IS
'Tipo de Bitacora';

/*==============================================================*/
/* Table: GEN_REGION                                            */
/*==============================================================*/
CREATE TABLE GEN_REGION  (
   COD_CIA              CHAR(3)                         NOT NULL,
   REGION               VARCHAR2(2)                     NOT NULL,
   NOMBRE               VARCHAR2(30)                    NOT NULL,
   CONSTRAINT GEN_REGION_PK PRIMARY KEY (COD_CIA, REGION)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

COMMENT ON TABLE GEN_REGION IS
'Maestro de regiones';

COMMENT ON COLUMN GEN_REGION.COD_CIA IS
'Compania';

COMMENT ON COLUMN GEN_REGION.REGION IS
'Codigo de region';

COMMENT ON COLUMN GEN_REGION.NOMBRE IS
'Nombre de la region ';

/*==============================================================*/
/* Table: GEN_CLIENTE_CLASIF                                    */
/*==============================================================*/
CREATE TABLE GEN_CLIENTE_CLASIF  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_CLIENTE          VARCHAR2(25)                    NOT NULL,
   CLASIFICACION        CHAR(3)                         NOT NULL,
   FECHA                DATE                            NOT NULL,
   OBSERVACIONES        VARCHAR2(200),
   USUARIO              VARCHAR2(30)                    NOT NULL,
   CONSTRAINT GEN_CLIENTE_CLASIF_PK PRIMARY KEY (COD_CIA, COD_CLIENTE, CLASIFICACION)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Index: GEN_CLASIFICACION_CLIECLAS_FK                         */
/*==============================================================*/
CREATE INDEX GEN_CLASIFICACION_CLIECLAS_FK ON GEN_CLIENTE_CLASIF (
   CLASIFICACION ASC
);

/*==============================================================*/
/* Table: GEN_AGENTE                                            */
/*==============================================================*/
CREATE TABLE GEN_AGENTE  (
   COD_CIA              CHAR(3)                         NOT NULL,
   SUCURSAL             CHAR(3)                         NOT NULL,
   COD_AGENTE           VARCHAR2(3)                     NOT NULL,
   NOM_AGENTE           VARCHAR2(35)                    NOT NULL,
   DIRECCION            VARCHAR2(40)                    NOT NULL,
   USUARIO              VARCHAR2(30),
   NUM_TELEFONO         VARCHAR2(12),
   NUM_CEDULA           VARCHAR2(15),
   DES_RAZONSOC         VARCHAR2(30),
   BODEGA               CHAR(3),
   CONSTRAINT GEN_AGENTE_PK PRIMARY KEY (COD_CIA, SUCURSAL, COD_AGENTE)
);

/*==============================================================*/
/* Table: GEN_AGENTEAUT                                         */
/*==============================================================*/
CREATE TABLE GEN_AGENTEAUT  (
   COD_CIA              CHAR(3)                         NOT NULL,
   SUCURSAL             CHAR(3)                         NOT NULL,
   COD_AGENTE           VARCHAR2(3)                     NOT NULL,
   USUARIO              VARCHAR2(30)                    NOT NULL,
   CONSTRAINT GEN_AGENTEAUT_PK PRIMARY KEY (COD_CIA, SUCURSAL, COD_AGENTE, USUARIO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Table: GEN_CANTON                                            */
/*==============================================================*/
CREATE TABLE GEN_CANTON  (
   COD_PROVINCIA        VARCHAR2(2)                     NOT NULL,
   COD_CANTON           VARCHAR2(3)                     NOT NULL,
   NOM_CANTON           VARCHAR2(30)                    NOT NULL,
   CONSTRAINT GEN_CANTON_PK PRIMARY KEY (COD_PROVINCIA, COD_CANTON)
);

/*==============================================================*/
/* Table: GEN_CLASE_CLIE_MONEDA                                 */
/*==============================================================*/
CREATE TABLE GEN_CLASE_CLIE_MONEDA  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_CLASE            VARCHAR2(3)                     NOT NULL,
   COD_MONEDA           VARCHAR2(3)                     NOT NULL,
   COD_CTA              VARCHAR2(25),
   COD_CTA_DIF_CAM      VARCHAR2(25),
   CONSTRAINT GEN_CLASE_CLIE_MONEDA_PK PRIMARY KEY (COD_CIA, COD_CLASE, COD_MONEDA)
);

/*==============================================================*/
/* Table: GEN_CLASE_CLIENTE                                     */
/*==============================================================*/
CREATE TABLE GEN_CLASE_CLIENTE  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_CLASE            VARCHAR2(3)                     NOT NULL,
   DES_CLASE            VARCHAR2(40)                    NOT NULL,
   LISTA_PRECIO         CHAR(3),
   CCOSTO               VARCHAR2(7)                    DEFAULT '0' NOT NULL,
   PORC_RETIR           NUMBER(5,2)                     NOT NULL
      CONSTRAINT GEN_CLASE_CLIENT_PORC_RETIR_CK CHECK (PORC_RETIR >= 0),
   CONSTRAINT GEN_CLASE_CLIENTE_PK PRIMARY KEY (COD_CIA, COD_CLASE)
);

/*==============================================================*/
/* Table: GEN_CLASE_PROV                                        */
/*==============================================================*/
CREATE TABLE GEN_CLASE_PROV  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_CLASE            VARCHAR2(3)                     NOT NULL,
   DES_CLASE            VARCHAR2(40)                    NOT NULL,
   CCOSTO               VARCHAR2(7)                    DEFAULT '0' NOT NULL,
   CONSTRAINT GEN_CLASE_PROV_PK PRIMARY KEY (COD_CIA, COD_CLASE)
);

/*==============================================================*/
/* Table: GEN_CLASE_PROV_MONEDA                                 */
/*==============================================================*/
CREATE TABLE GEN_CLASE_PROV_MONEDA  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_CLASE            VARCHAR2(3)                     NOT NULL,
   COD_MONEDA           VARCHAR2(3)                     NOT NULL,
   COD_CTA              VARCHAR2(25),
   COD_CTA_DIF_CAM      VARCHAR2(25),
   CONSTRAINT GEN_CLASE_PROV_MONEDA_PK PRIMARY KEY (COD_CIA, COD_CLASE, COD_MONEDA)
);

/*==============================================================*/
/* Table: GEN_CLASIFICACION                                     */
/*==============================================================*/
CREATE TABLE GEN_CLASIFICACION  (
   CLASIFICACION        CHAR(3)                         NOT NULL,
   DESCRIPCION          VARCHAR2(30),
   CLASE                CHAR(1)                        DEFAULT 'O' NOT NULL
      CONSTRAINT GEN_CLASIFICACIO_CLASE_CK CHECK (CLASE IN ('O','M','C','A','T','V')),
   CONSTRAINT GEN_CLASIFICACION_PK PRIMARY KEY (CLASIFICACION)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Table: GEN_CLIE_AGENTE                                       */
/*==============================================================*/
CREATE TABLE GEN_CLIE_AGENTE  (
   COD_CIA              CHAR(3)                         NOT NULL,
   SUCURSAL             CHAR(3)                         NOT NULL,
   COD_CLIENTE          VARCHAR2(25)                    NOT NULL,
   TIPO_AGENTE          CHAR(2)                         NOT NULL,
   COD_DEPTO            VARCHAR2(3),
   COD_AGENTE           VARCHAR2(3)                     NOT NULL,
   CONSTRAINT GEN_CLIE_AGENTE_PK PRIMARY KEY (COD_CIA, SUCURSAL, COD_AGENTE, TIPO_AGENTE, COD_CLIENTE),
   CONSTRAINT GEN_CLIE_AGENTE_UQ_AK UNIQUE (COD_CIA, SUCURSAL, COD_CLIENTE, TIPO_AGENTE, COD_DEPTO)
);

/*==============================================================*/
/* Index: GENFUNCIONES_CLIEAGENTE_FK                            */
/*==============================================================*/
CREATE INDEX GENFUNCIONES_CLIEAGENTE_FK ON GEN_CLIE_AGENTE (
   COD_CIA ASC,
   SUCURSAL ASC,
   COD_AGENTE ASC,
   TIPO_AGENTE ASC
);

/*==============================================================*/
/* Index: GENCLIENTE_CLIEAGENTE_FK                              */
/*==============================================================*/
CREATE INDEX GENCLIENTE_CLIEAGENTE_FK ON GEN_CLIE_AGENTE (
   COD_CIA ASC,
   COD_CLIENTE ASC
);

/*==============================================================*/
/* Table: GEN_CLIENTE                                           */
/*==============================================================*/
CREATE TABLE GEN_CLIENTE  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_CLIENTE          VARCHAR2(25)                    NOT NULL,
   COD_CLASE            VARCHAR2(3)                     NOT NULL,
   TIP_CLIENTE          VARCHAR2(1)                     NOT NULL
      CONSTRAINT GEN_CLIENTE_TIPCLIENTE_CK CHECK (TIP_CLIENTE IN ('J','j','F','f','O')),
   SUCURSAL             CHAR(3)                         NOT NULL,
   COD_CIACLIENTE       CHAR(3),
   CEDULA               VARCHAR2(20)                    NOT NULL,
   NOM_CLIENTE          VARCHAR2(50)                    NOT NULL,
   DES_DIRECCION        VARCHAR2(200)                   NOT NULL,
   CONTACTO             VARCHAR2(35),
   NUM_APARTADO         VARCHAR2(20),
   NUM_TELEFONO1        VARCHAR2(16),
   NUM_TELEFONO2        VARCHAR2(16),
   NUM_FAX              VARCHAR2(16),
   DES_RAZSOCIAL        VARCHAR2(50),
   NOM_RESPONSABLE      VARCHAR2(30),
   COD_PROVINCIA        VARCHAR2(2)                     NOT NULL,
   COD_CANTON           VARCHAR2(3)                     NOT NULL,
   COD_DISTRITO         VARCHAR2(3)                     NOT NULL,
   IND_PAGACONSM        CHAR(1)                        DEFAULT 'S' NOT NULL
      CONSTRAINT GEN_CLIENTE_PAGACONSM_CK CHECK (IND_PAGACONSM IN ('S','N')),
   IND_MOROSO           CHAR(1)                        DEFAULT 'S' NOT NULL
      CONSTRAINT GEN_CLIENTE_MOROSO_CK CHECK (IND_MOROSO IN ('S','N')),
   POR_EXOVENTA         NUMBER(5,2)                    DEFAULT 0 NOT NULL
      CONSTRAINT GEN_CLIENTE_POR_EXOVEN_CK CHECK (POR_EXOVENTA BETWEEN 0 AND 100),
   POR_MAXDESCUE        NUMBER(5,2)                    
      CONSTRAINT GEN_CLIENTE_POR_MAXDES_CK CHECK (POR_MAXDESCUE IS NULL OR (POR_MAXDESCUE BETWEEN 0 AND 100 )),
   IND_CREDITCER        CHAR(1)                        DEFAULT 'S' NOT NULL
      CONSTRAINT GEN_CLIENTE_CREDITCER_CK CHECK (IND_CREDITCER IN ('S','N')),
   DES_RECIBOFAC        VARCHAR2(10),
   DES_PAGOFACTR        VARCHAR2(10),
   IND_RECIBCORR        CHAR(1)                        DEFAULT 'N' NOT NULL
      CONSTRAINT GEN_CLIENTE_CORREO_CK CHECK (IND_RECIBCORR IN ('S','N')),
   COD_ZONA             VARCHAR2(2)                     NOT NULL,
   COD_SUBZONA          VARCHAR2(2)                     NOT NULL,
   LISTA_PRECIO         CHAR(3),
   LISTA_DESCUENTO      CHAR(3),
   DIRECCION_ENVIO      VARCHAR2(200),
   CONSIGNATARIO        VARCHAR2(10),
   CLASE_CATALOGO       CHAR(3),
   ESTADO               CHAR(2)                        DEFAULT 'AC' NOT NULL
      CONSTRAINT GEN_CLIENTE_ESTADO_CK CHECK (ESTADO IN ('AC','CS','DJ','CC')),
   CONSTRAINT GEN_CLIENTE_PK PRIMARY KEY (COD_CIA, COD_CLIENTE)
);

/*==============================================================*/
/* Index: GENCLASECLIENTE_CLIENTE_FK                            */
/*==============================================================*/
CREATE INDEX GENCLASECLIENTE_CLIENTE_FK ON GEN_CLIENTE (
   COD_CIA ASC,
   COD_CLASE ASC
);

/*==============================================================*/
/* Index: GENDISTRITO_CLIENTE_FK                                */
/*==============================================================*/
CREATE INDEX GENDISTRITO_CLIENTE_FK ON GEN_CLIENTE (
   COD_PROVINCIA ASC,
   COD_CANTON ASC,
   COD_DISTRITO ASC
);

/*==============================================================*/
/* Index: GENSUBZONA_CLIENTE_FK                                 */
/*==============================================================*/
CREATE INDEX GENSUBZONA_CLIENTE_FK ON GEN_CLIENTE (
   COD_CIA ASC,
   COD_ZONA ASC,
   COD_SUBZONA ASC
);

/*==============================================================*/
/* Index: GENSUCURSAL_CLIENTE_FK                                */
/*==============================================================*/
CREATE INDEX GENSUCURSAL_CLIENTE_FK ON GEN_CLIENTE (
   COD_CIA ASC,
   SUCURSAL ASC
);

/*==============================================================*/
/* Table: GEN_CLIENTE_ACCION                                    */
/*==============================================================*/
CREATE TABLE GEN_CLIENTE_ACCION  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_CLIENTE          VARCHAR2(25)                    NOT NULL,
   ACCION               NUMBER(10)                      NOT NULL,
   FECHA_COMPRA         DATE                            NOT NULL,
   FECHA_VENTA          DATE,
   OBSERVACION          VARCHAR2(500)                   NOT NULL,
   MONTO_COMPRA         NUMBER(14,2),
   CONSTRAINT GEN_CLIENTE_ACCION_PK PRIMARY KEY (COD_CIA, COD_CLIENTE, ACCION)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Table: GEN_CLIENTE_BITACORA                                  */
/*==============================================================*/
CREATE TABLE GEN_CLIENTE_BITACORA  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_CLIENTE          VARCHAR2(25)                    NOT NULL,
   FECHA                DATE                            NOT NULL,
   TIPO                 VARCHAR2(5)                     NOT NULL,
   OBSERVACION          VARCHAR2(500)                   NOT NULL,
   USUARIO              VARCHAR2(30)                    NOT NULL,
   CONSTRAINT GEN_CLIENTE_BITACORA_PK PRIMARY KEY (COD_CIA, COD_CLIENTE, FECHA)
);

COMMENT ON COLUMN GEN_CLIENTE_BITACORA.TIPO IS
'Tipo de Bitacora';

/*==============================================================*/
/* Table: GEN_CLIENTE_REFERENCIA                                */
/*==============================================================*/
CREATE TABLE GEN_CLIENTE_REFERENCIA  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_CLIENTE          VARCHAR2(25)                    NOT NULL,
   REFERENCIA           VARCHAR2(25)                    NOT NULL,
   DESCRIPCION          VARCHAR2(50)                    NOT NULL,
   TELEFONO1            VARCHAR2(15),
   TELEFONO2            VARCHAR2(15),
   OBSERVACION          VARCHAR2(500)                   NOT NULL,
   CONSTRAINT GEN_CLIENTE_REFERENCIA_PK PRIMARY KEY (COD_CIA, COD_CLIENTE, REFERENCIA)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Table: GEN_COM_AGENTE                                        */
/*==============================================================*/
CREATE TABLE GEN_COM_AGENTE  (
   COD_CIA              CHAR(3)                         NOT NULL,
   SUCURSAL             CHAR(3)                         NOT NULL,
   COD_AGENTE           VARCHAR2(3)                     NOT NULL,
   COD_COMISION         VARCHAR2(3)                     NOT NULL,
   CONSTRAINT GEN_COM_AGENTE_PK PRIMARY KEY (COD_CIA, SUCURSAL, COD_AGENTE, COD_COMISION)
);

/*==============================================================*/
/* Index: GENMASCOMISION_COMAGE_FK                              */
/*==============================================================*/
CREATE INDEX GENMASCOMISION_COMAGE_FK ON GEN_COM_AGENTE (
   COD_CIA ASC,
   COD_COMISION ASC
);

/*==============================================================*/
/* Table: GEN_COMPANIA                                          */
/*==============================================================*/
CREATE TABLE GEN_COMPANIA  (
   COD_CIA              CHAR(3)                         NOT NULL,
   DES_CIA              VARCHAR2(30)                    NOT NULL,
   DES_RAZONSOC         VARCHAR2(30),
   COD_PAIS             VARCHAR2(3)                     NOT NULL,
   DES_PROVINCIA        VARCHAR2(20),
   DES_CANTON           VARCHAR2(20),
   DIR_CIA              VARCHAR2(50),
   COD_POSTAL           VARCHAR2(20),
   NUM_TELEFONO1        VARCHAR2(15),
   NUM_TELEFONO2        VARCHAR2(15),
   NUM_FAX              VARCHAR2(15),
   CIACONSOLIDADA       CHAR(3),
   CONSTRAINT GEN_COMPANIA_PK PRIMARY KEY (COD_CIA)
);

/*==============================================================*/
/* Index: GENPAIS_COMPANIA_FK                                   */
/*==============================================================*/
CREATE INDEX GENPAIS_COMPANIA_FK ON GEN_COMPANIA (
   COD_PAIS ASC
);

/*==============================================================*/
/* Table: GEN_CONSTANTES                                        */
/*==============================================================*/
CREATE TABLE GEN_CONSTANTES  (
   CODIGO               VARCHAR2(10)                    NOT NULL,
   DESCRIPCION          VARCHAR2(60)                    NOT NULL,
   VALOR                NUMBER(14,6)                    NOT NULL,
   CONSTRAINT GEN_CONSTANTES_PK PRIMARY KEY (CODIGO)
);

COMMENT ON TABLE GEN_CONSTANTES IS
'CONSTANTES';

/*==============================================================*/
/* Table: GEN_CONTCLIE                                          */
/*==============================================================*/
CREATE TABLE GEN_CONTCLIE  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_CLIENTE          VARCHAR2(25)                    NOT NULL,
   TIPO                 CHAR(3)                         NOT NULL,
   IDENTIFICACION       VARCHAR2(25)                    NOT NULL,
   NOMBRE               VARCHAR2(40)                    NOT NULL,
   DIRECCION            VARCHAR2(200),
   OBSERVACIONES        VARCHAR2(200),
   CONSTRAINT GEN_CONTCLIE_PK PRIMARY KEY (COD_CIA, COD_CLIENTE, TIPO, IDENTIFICACION)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Index: GEN_TIPCONTACTO_CLIE_FK                               */
/*==============================================================*/
CREATE INDEX GEN_TIPCONTACTO_CLIE_FK ON GEN_CONTCLIE (
   COD_CIA ASC,
   TIPO ASC
);

/*==============================================================*/
/* Table: GEN_CONTPROV                                          */
/*==============================================================*/
CREATE TABLE GEN_CONTPROV  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_PROVEEDOR        VARCHAR2(25)                    NOT NULL,
   TIPO                 CHAR(3)                         NOT NULL,
   IDENTIFICACION       VARCHAR2(25)                    NOT NULL,
   NOMBRE               VARCHAR2(40)                    NOT NULL,
   DIRECCION            VARCHAR2(200),
   OBSERVACIONES        VARCHAR2(200),
   CONSTRAINT GEN_CONTPROV_PK PRIMARY KEY (COD_CIA, COD_PROVEEDOR, TIPO, IDENTIFICACION)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Index: GEN_TIPCONTACTO_PROV_FK                               */
/*==============================================================*/
CREATE INDEX GEN_TIPCONTACTO_PROV_FK ON GEN_CONTPROV (
   COD_CIA ASC,
   TIPO ASC
);

/*==============================================================*/
/* Table: GEN_DENOMINACIONES                                    */
/*==============================================================*/
CREATE TABLE GEN_DENOMINACIONES  (
   COD_MONEDA           VARCHAR2(3)                     NOT NULL,
   VALOR                NUMBER(14,2)                    NOT NULL,
   DESCRIPCION          VARCHAR2(30),
   CONSTRAINT GEN_DENOMINACIONES_PK PRIMARY KEY (COD_MONEDA, VALOR)
);

/*==============================================================*/
/* Table: GEN_DISTRITO                                          */
/*==============================================================*/
CREATE TABLE GEN_DISTRITO  (
   COD_PROVINCIA        VARCHAR2(2)                     NOT NULL,
   COD_CANTON           VARCHAR2(3)                     NOT NULL,
   COD_DISTRITO         VARCHAR2(3)                     NOT NULL,
   NOM_DISTRITO         VARCHAR2(40)                    NOT NULL,
   CONSTRAINT GEN_DISTRITO_PK PRIMARY KEY (COD_PROVINCIA, COD_CANTON, COD_DISTRITO)
);

/*==============================================================*/
/* Table: GEN_FUNCIONES                                         */
/*==============================================================*/
CREATE TABLE GEN_FUNCIONES  (
   COD_CIA              CHAR(3)                         NOT NULL,
   SUCURSAL             CHAR(3)                         NOT NULL,
   COD_AGENTE           VARCHAR2(3)                     NOT NULL,
   TIPO_AGENTE          CHAR(2)                         NOT NULL,
   CONSTRAINT GEN_FUNCIONES_PK PRIMARY KEY (COD_CIA, SUCURSAL, COD_AGENTE, TIPO_AGENTE)
);

/*==============================================================*/
/* Index: GENTIPOAGENTE_FUNCION_FK                              */
/*==============================================================*/
CREATE INDEX GENTIPOAGENTE_FUNCION_FK ON GEN_FUNCIONES (
   COD_CIA ASC,
   TIPO_AGENTE ASC
);

/*==============================================================*/
/* Table: GEN_IMP_BARRAS                                        */
/*==============================================================*/
CREATE TABLE GEN_IMP_BARRAS  (
   COD_CIA              CHAR(3)                         NOT NULL,
   SESION               NUMBER(10)                      NOT NULL,
   COD_ARTICULO         VARCHAR2(25)                    NOT NULL,
   CATEGORIA            CHAR(1)                        DEFAULT 'A' NOT NULL,
   COD_BODEGA           CHAR(3),
   CANTIDAD             NUMBER(5)                       NOT NULL
      CONSTRAINT GEN_IMP_BARRAS_CANTIDAD_CK CHECK (CANTIDAD >= 0),
   CANMTS               NUMBER(5,2),
   CONSTRAINT GEN_IMP_BARRAS_PK PRIMARY KEY (COD_CIA, SESION, COD_ARTICULO, CATEGORIA)
);

/*==============================================================*/
/* Table: GEN_IMPUESTO                                          */
/*==============================================================*/
CREATE TABLE GEN_IMPUESTO  (
   COD_CIA              CHAR(3)                         NOT NULL,
   IMPUESTO             VARCHAR2(5)                     NOT NULL,
   PORCENTAJE           NUMBER(5,2)                     NOT NULL,
   DESCRIPCION          VARCHAR2(30)                    NOT NULL,
   CUENTA               VARCHAR2(25),
   CONSTRAINT GEN_IMPUESTO_PK PRIMARY KEY (COD_CIA, IMPUESTO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Table: GEN_MAS_COMISION                                      */
/*==============================================================*/
CREATE TABLE GEN_MAS_COMISION  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_COMISION         VARCHAR2(3)                     NOT NULL,
   TIPO_COMISION        CHAR(1)                         NOT NULL
      CONSTRAINT GEN_MASCOMISION_TIPO_CK CHECK (TIPO_COMISION IN ('T','I','L','P','C')),
   VALOR                CHAR(1)                         NOT NULL
      CONSTRAINT GEN_MASCOMISION_VALOR_CK CHECK (VALOR IN ('P','M')),
   TIPO_CALCULO         CHAR(1)                         NOT NULL
      CONSTRAINT GEN_MASCOMISION_CALC_CK CHECK (TIPO_CALCULO IN ('E','D')),
   PROPORCIONAL         CHAR(1)                         NOT NULL
      CONSTRAINT GEN_MASCOMISION_PROP_CK CHECK (PROPORCIONAL IN ('S','N')),
   DES_COMISION         VARCHAR2(40)                    NOT NULL,
   COD_MONEDA           VARCHAR2(3)                     NOT NULL,
   CONSTRAINT GEN_MAS_COMISION_PK PRIMARY KEY (COD_CIA, COD_COMISION)
);

/*==============================================================*/
/* Index: GENMONEDA_MASCOMIS_FK                                 */
/*==============================================================*/
CREATE INDEX GENMONEDA_MASCOMIS_FK ON GEN_MAS_COMISION (
   COD_MONEDA ASC
);

/*==============================================================*/
/* Table: GEN_MONEDA                                            */
/*==============================================================*/
CREATE TABLE GEN_MONEDA  (
   COD_MONEDA           VARCHAR2(3)                     NOT NULL,
   DES_MONEDA           VARCHAR2(25)                    NOT NULL,
   SIM_MONEDA           VARCHAR2(3),
   MON_REDONDEO         NUMBER(3,2),
   CONSTRAINT GEN_MONEDA_PK PRIMARY KEY (COD_MONEDA)
);

/*==============================================================*/
/* Table: GEN_OFICINA                                           */
/*==============================================================*/
CREATE TABLE GEN_OFICINA  (
   COD_CIA              CHAR(3)                         NOT NULL,
   SUCURSAL             CHAR(3)                         NOT NULL,
   OFICINA              CHAR(2)                         NOT NULL,
   DESCRIPCION          VARCHAR2(60),
   CONSTRAINT GEN_OFICINA_PK PRIMARY KEY (COD_CIA, SUCURSAL, OFICINA)
);

/*==============================================================*/
/* Table: GEN_PAIS                                              */
/*==============================================================*/
CREATE TABLE GEN_PAIS  (
   COD_PAIS             VARCHAR2(3)                     NOT NULL,
   NOM_PAIS             VARCHAR2(25)                    NOT NULL,
   CONSTRAINT GEN_PAIS_PK PRIMARY KEY (COD_PAIS)
);

/*==============================================================*/
/* Table: GEN_PARAMETRO                                         */
/*==============================================================*/
CREATE TABLE GEN_PARAMETRO  (
   COD_CIA              CHAR(3)                         NOT NULL,
   FOR_FECHA            VARCHAR2(10)                    NOT NULL,
   FOR_CLIENTE          VARCHAR2(25)                    NOT NULL,
   FOR_PROVEEDOR        VARCHAR2(25)                    NOT NULL,
   FOR_IMP_CONSUMO      VARCHAR2(10)                    NOT NULL,
   FOR_IMP_VENTA        VARCHAR2(10)                    NOT NULL,
   IND_IMP_VTA_CONS     CHAR(1)                         NOT NULL
      CONSTRAINT GEN_PARAMETRO_IMP_VTACONS_CK CHECK (IND_IMP_VTA_CONS IN ('S','N')),
   IND_CONTA_LINEA      CHAR(1)                         NOT NULL
      CONSTRAINT GEN_PARAMETRO_CONTALINEA_CK CHECK (IND_CONTA_LINEA IN ('S','N')),
   COD_MONEDA_BASE      VARCHAR2(3)                     NOT NULL,
   CONSTRAINT GEN_PARAMETRO_PK PRIMARY KEY (COD_CIA)
);

/*==============================================================*/
/* Index: GENMONEDA_PARAM_FK                                    */
/*==============================================================*/
CREATE INDEX GENMONEDA_PARAM_FK ON GEN_PARAMETRO (
   COD_MONEDA_BASE ASC
);

/*==============================================================*/
/* Table: GEN_PERIODO                                           */
/*==============================================================*/
CREATE TABLE GEN_PERIODO  (
   COD_CIA              CHAR(3)                         NOT NULL,
   ANO_FISCAL           NUMBER(4)                       NOT NULL,
   PER_ANO_FISCAL       NUMBER(2)                       NOT NULL,
   PER_PROCESO          NUMBER(2)                       NOT NULL
      CONSTRAINT GEN_PERIODO_PERIODO_CK CHECK (PER_PROCESO BETWEEN 1 AND 13),
   EST_ACTUAL           CHAR(1)                        DEFAULT 'A'
      CONSTRAINT GEN_PERIODO_ESTADO_CK CHECK (EST_ACTUAL IS NULL OR ( EST_ACTUAL IN ('A','C') )),
   CONSTRAINT GEN_PERIODO_PK PRIMARY KEY (COD_CIA, ANO_FISCAL)
);

/*==============================================================*/
/* Table: GEN_PERIODO_RANGO                                     */
/*==============================================================*/
CREATE TABLE GEN_PERIODO_RANGO  (
   COD_CIA              CHAR(3)                         NOT NULL,
   ANO_FISCAL           NUMBER(4)                       NOT NULL,
   PER_PROCESO          NUMBER(2)                       NOT NULL
      CONSTRAINT GEN_PERIODO_RANGO_PERIODO_CK CHECK (PER_PROCESO BETWEEN 1 AND 13),
   FEC_INICIO           DATE                            NOT NULL,
   FEC_FINAL            DATE                            NOT NULL,
   EST_ACTUAL           CHAR(1)                        DEFAULT 'A'
      CONSTRAINT GEN_PERIODO_RANGO_ESTADO_CK CHECK (EST_ACTUAL IS NULL OR ( EST_ACTUAL IN ('A','C') )),
   CONSTRAINT GEN_PERIODO_RANGO_PK PRIMARY KEY (COD_CIA, ANO_FISCAL, PER_PROCESO)
);

/*==============================================================*/
/* Table: GEN_PERSONA                                           */
/*==============================================================*/
CREATE TABLE GEN_PERSONA  (
   COD_CIA              CHAR(3)                         NOT NULL,
   PERSONA              VARCHAR(25)                     NOT NULL,
   NOMBRE               VARCHAR2(50)                    NOT NULL,
   CEDULA               VARCHAR2(25)                    NOT NULL,
   DIRECCION            VARCHAR2(120)                   NOT NULL,
   TELEFONO1            VARCHAR2(15),
   TELEFONO2            VARCHAR2(15),
   FAX                  VARCHAR2(15),
   EMAIL                VARCHAR2(50),
   CONSTRAINT GEN_PERSONA_PK PRIMARY KEY (COD_CIA, PERSONA)
);

/*==============================================================*/
/* Table: GEN_PROV_COMISION                                     */
/*==============================================================*/
CREATE TABLE GEN_PROV_COMISION  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_PROVEEDOR        VARCHAR2(25)                    NOT NULL,
   COD_COMISION         VARCHAR2(3)                     NOT NULL,
   CONSTRAINT GEN_PROV_COMISION_PK PRIMARY KEY (COD_CIA, COD_PROVEEDOR, COD_COMISION)
);

/*==============================================================*/
/* Index: GENMASCOMISION_PROVCOMI_FK                            */
/*==============================================================*/
CREATE INDEX GENMASCOMISION_PROVCOMI_FK ON GEN_PROV_COMISION (
   COD_CIA ASC,
   COD_COMISION ASC
);

/*==============================================================*/
/* Table: GEN_PROVEEDOR                                         */
/*==============================================================*/
CREATE TABLE GEN_PROVEEDOR  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_PROVEEDOR        VARCHAR2(25)                    NOT NULL,
   COD_CLASE            VARCHAR2(3)                     NOT NULL,
   TIPO_PROVEEDOR       CHAR(1)                        DEFAULT 'M' NOT NULL
      CONSTRAINT GEN_PROVEEDOR_TIPO_CK CHECK (TIPO_PROVEEDOR IN ('M','P','B','S')),
   CEDULA               VARCHAR2(20)                    NOT NULL,
   DES_PROVEEDOR        VARCHAR2(50)                    NOT NULL,
   DES_DIRECCION        VARCHAR2(200)                   NOT NULL,
   CONTACTO             VARCHAR2(35),
   NUM_APARTADO         VARCHAR2(20),
   NUM_TELEFONO1        VARCHAR2(16),
   NUM_TELEFONO2        VARCHAR2(16),
   NUM_FAX              VARCHAR2(16),
   DES_RAZSOCIAL        VARCHAR2(60),
   NOM_RESPONSABLE      VARCHAR2(40),
   COD_PROVINCIA        VARCHAR2(2),
   COD_CANTON           VARCHAR2(3),
   COD_DISTRITO         VARCHAR2(3),
   ESTADO_COBRO         VARCHAR2(3),
   COD_PAIS             VARCHAR2(3)                     NOT NULL,
   COD_PAIS_DESPACHO    VARCHAR2(3),
   DIR_DESPACHO         VARCHAR2(200),
   ENCARGADO_DESPACHO   VARCHAR2(40),
   ENCARGADO_PAGO       VARCHAR2(40),
   IND_INHABILITADO     CHAR(1)                        DEFAULT 'N' NOT NULL
      CONSTRAINT GEN_PROVEEDOR_INHABILITADO_CK CHECK (IND_INHABILITADO IN ('N','S')),
   EMAIL                VARCHAR2(30),
   FEC_ULTMOVTO         DATE,
   CONSTRAINT GEN_PROVEEDOR_PK PRIMARY KEY (COD_CIA, COD_PROVEEDOR)
);

/*==============================================================*/
/* Index: GENCLASEPROV_PROV_FK                                  */
/*==============================================================*/
CREATE INDEX GENCLASEPROV_PROV_FK ON GEN_PROVEEDOR (
   COD_CIA ASC,
   COD_CLASE ASC
);

/*==============================================================*/
/* Index: GENDISTRITO_PROV_FK                                   */
/*==============================================================*/
CREATE INDEX GENDISTRITO_PROV_FK ON GEN_PROVEEDOR (
   COD_PROVINCIA ASC,
   COD_CANTON ASC,
   COD_DISTRITO ASC
);

/*==============================================================*/
/* Index: GENPAIS_PROVEEDOR_FK                                  */
/*==============================================================*/
CREATE INDEX GENPAIS_PROVEEDOR_FK ON GEN_PROVEEDOR (
   COD_PAIS ASC
);

/*==============================================================*/
/* Table: GEN_PROVINCIA                                         */
/*==============================================================*/
CREATE TABLE GEN_PROVINCIA  (
   COD_PROVINCIA        VARCHAR2(2)                     NOT NULL,
   NOM_PROVINCIA        VARCHAR2(30)                    NOT NULL,
   CONSTRAINT GEN_PROVINCIA_PK PRIMARY KEY (COD_PROVINCIA)
);

/*==============================================================*/
/* Table: GEN_SOBREG_CLIENTE                                    */
/*==============================================================*/
CREATE TABLE GEN_SOBREG_CLIENTE  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_CLIENTE          VARCHAR2(25)                    NOT NULL,
   COD_LINEA            VARCHAR2(5)                     NOT NULL,
   SOBREGIRO            NUMBER(14,2)                    NOT NULL,
   FECHA_VIGENCIA       DATE                            NOT NULL,
   DIAS_VIGENCIA        NUMBER(3)                       NOT NULL
      CONSTRAINT GEN_SOBREG_CLIENTE_DIASV_CK CHECK (DIAS_VIGENCIA >= 0),
   AUTORIZADO_POR       VARCHAR2(30)                    NOT NULL,
   CONSTRAINT GEN_SOBREG_CLIENTE_PK PRIMARY KEY (COD_CIA, COD_CLIENTE, COD_LINEA)
);

/*==============================================================*/
/* Table: GEN_SOBREG_PROVEEDOR                                  */
/*==============================================================*/
CREATE TABLE GEN_SOBREG_PROVEEDOR  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_PROVEEDOR        VARCHAR2(25)                    NOT NULL,
   COD_MONEDA           VARCHAR2(3)                     NOT NULL,
   SOBREGIRO            NUMBER(14,2)                    NOT NULL,
   FECHA_VIGENCIA       DATE                            NOT NULL,
   DIAS_VIGENCIA        NUMBER(3)                       NOT NULL
      CONSTRAINT GEN_SOBREG_PROVEEDOR_DIASV_CK CHECK (DIAS_VIGENCIA >= 0),
   AUTORIZADO_POR       VARCHAR2(30)                    NOT NULL,
   CONSTRAINT GEN_SOBREG_PROVEEDOR_PK PRIMARY KEY (COD_CIA, COD_PROVEEDOR, COD_MONEDA)
);

/*==============================================================*/
/* Index: GENMONEDA_SOBREGPROV_FK                               */
/*==============================================================*/
CREATE INDEX GENMONEDA_SOBREGPROV_FK ON GEN_SOBREG_PROVEEDOR (
   COD_MONEDA ASC
);

/*==============================================================*/
/* Table: GEN_SUBZONA                                           */
/*==============================================================*/
CREATE TABLE GEN_SUBZONA  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_ZONA             VARCHAR2(2)                     NOT NULL,
   COD_SUBZONA          VARCHAR2(2)                     NOT NULL,
   NOM_SUBZONA          VARCHAR2(30),
   CONSTRAINT GEN_SUBZONA_PK PRIMARY KEY (COD_CIA, COD_ZONA, COD_SUBZONA)
);

/*==============================================================*/
/* Table: GEN_SUCURSAL                                          */
/*==============================================================*/
CREATE TABLE GEN_SUCURSAL  (
   COD_CIA              CHAR(3)                         NOT NULL,
   SUCURSAL             CHAR(3)                         NOT NULL,
   DESCRIPCION          VARCHAR2(60)                    NOT NULL,
   DES_DIRECCION        VARCHAR2(50),
   NUM_TELEFONO1        VARCHAR2(16),
   NUM_TELEFONO2        VARCHAR2(16),
   EMAIL                VARCHAR2(30),
   AREA                 NUMBER(12,2),
   MTS_EXHIBE           NUMBER(12,2),
   CARACTERISTICAS      VARCHAR2(256),
   CONSTRAINT GEN_SUCURSAL_PK PRIMARY KEY (COD_CIA, SUCURSAL)
);

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

/*==============================================================*/
/* Table: GEN_TIPO_AGENTE                                       */
/*==============================================================*/
CREATE TABLE GEN_TIPO_AGENTE  (
   COD_CIA              CHAR(3)                         NOT NULL,
   TIPO_AGENTE          CHAR(2)                         NOT NULL,
   DESCRIPCION          VARCHAR2(40)                    NOT NULL,
   CONSTRAINT GEN_TIPO_AGENTE_PK PRIMARY KEY (COD_CIA, TIPO_AGENTE)
);

/*==============================================================*/
/* Table: GEN_TIPO_CAMBIO                                       */
/*==============================================================*/
CREATE TABLE GEN_TIPO_CAMBIO  (
   COD_MONEDA           VARCHAR2(3)                     NOT NULL,
   FEC_PROCESO          DATE                            NOT NULL,
   MON_TIP_CAM          NUMBER(14,4)                    NOT NULL,
   CONSTRAINT GEN_TIPO_CAMBIO_PK PRIMARY KEY (COD_MONEDA, FEC_PROCESO)
);

/*==============================================================*/
/* Table: GEN_ZONA                                              */
/*==============================================================*/
CREATE TABLE GEN_ZONA  (
   COD_CIA              CHAR(3)                         NOT NULL,
   COD_ZONA             VARCHAR2(2)                     NOT NULL,
   REGION               VARCHAR2(2)                     NOT NULL,
   NOM_ZONA             VARCHAR2(30)                    NOT NULL,
   CONSTRAINT GEN_ZONA_PK PRIMARY KEY (COD_CIA, COD_ZONA)
);

COMMENT ON COLUMN GEN_ZONA.REGION IS
'Codigo de region';

/*==============================================================*/
/* Table: GENHISTIMP                                            */
/*==============================================================*/
CREATE TABLE GENHISTIMP  (
   COD_CIA              CHAR(3)                         NOT NULL,
   IMPUESTO             VARCHAR2(5)                     NOT NULL,
   FECHA                DATE                            NOT NULL,
   PORCENTAJE           NUMBER(5,2)                     NOT NULL,
   DESCRIPCION          VARCHAR2(30)                    NOT NULL,
   CUENTA               VARCHAR2(25),
   USUARIO              VARCHAR2(30)                    NOT NULL,
   CONSTRAINT GENHISTIMP_PK PRIMARY KEY (COD_CIA, IMPUESTO, FECHA)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

/*==============================================================*/
/* Table: IMPRESORAS                                            */
/*==============================================================*/
CREATE TABLE IMPRESORAS  (
   IMPRESORA            VARCHAR2(12)                    NOT NULL,
   DESCRIPCION          VARCHAR2(30)                    NOT NULL,
   TIPO                 VARCHAR2(8)                     NOT NULL
      CONSTRAINT IMPRESORAS_TIPO_CK CHECK (TIPO IN ('PREVIEW','SCREEN','PRINTER','FILE','MAIL')),
   NOMBRE               VARCHAR2(60)                    NOT NULL,
   FORMATO              VARCHAR2(12),
   CONSTRAINT IMPRESORAS_PK PRIMARY KEY (IMPRESORA)
);

ALTER TABLE GENPREFSCLA
   ADD CONSTRAINT GENPREFSOBJ_PREFSCLA_FK FOREIGN KEY (MODULO, OBJETO)
      REFERENCES GENPREFSOBJ (MODULO, OBJETO);

ALTER TABLE GENPREFSVAL
   ADD CONSTRAINT GENPREFSCLA_PREFSVAL_FK FOREIGN KEY (MODULO, OBJETO, CLAVE)
      REFERENCES GENPREFSCLA (MODULO, OBJETO, CLAVE);

ALTER TABLE GEN_CLIENTE_CLASIF
   ADD CONSTRAINT GEN_CLIENTE_CLIECLAS_FK FOREIGN KEY (COD_CIA, COD_CLIENTE)
      REFERENCES GEN_CLIENTE (COD_CIA, COD_CLIENTE);

ALTER TABLE GEN_CLIENTE_CLASIF
   ADD CONSTRAINT GEN_CLASIFICACION_CLIECLAS_FK FOREIGN KEY (CLASIFICACION)
      REFERENCES GEN_CLASIFICACION (CLASIFICACION);

ALTER TABLE GEN_AGENTE
   ADD CONSTRAINT GENSUCURSAL_AGENTE_FK FOREIGN KEY (COD_CIA, SUCURSAL)
      REFERENCES GEN_SUCURSAL (COD_CIA, SUCURSAL);

ALTER TABLE GEN_AGENTEAUT
   ADD CONSTRAINT GENAGENTE_AUTORIZADOS_FK FOREIGN KEY (COD_CIA, SUCURSAL, COD_AGENTE)
      REFERENCES GEN_AGENTE (COD_CIA, SUCURSAL, COD_AGENTE);

ALTER TABLE GEN_CANTON
   ADD CONSTRAINT GENPROVINCIA_CANTON_FK FOREIGN KEY (COD_PROVINCIA)
      REFERENCES GEN_PROVINCIA (COD_PROVINCIA);

ALTER TABLE GEN_CLASE_CLIE_MONEDA
   ADD CONSTRAINT GENCLACLIENTE_CLAMON_FK FOREIGN KEY (COD_CIA, COD_CLASE)
      REFERENCES GEN_CLASE_CLIENTE (COD_CIA, COD_CLASE);

ALTER TABLE GEN_CLASE_PROV_MONEDA
   ADD CONSTRAINT GENCLAPROV_CLAMON_FK FOREIGN KEY (COD_CIA, COD_CLASE)
      REFERENCES GEN_CLASE_PROV (COD_CIA, COD_CLASE);

ALTER TABLE GEN_CLIE_AGENTE
   ADD CONSTRAINT GENCLIENTE_CLIEAGENTE_FK FOREIGN KEY (COD_CIA, COD_CLIENTE)
      REFERENCES GEN_CLIENTE (COD_CIA, COD_CLIENTE);

ALTER TABLE GEN_CLIE_AGENTE
   ADD CONSTRAINT GENFUNCIONES_CLIEAGENTE_FK FOREIGN KEY (COD_CIA, SUCURSAL, COD_AGENTE, TIPO_AGENTE)
      REFERENCES GEN_FUNCIONES (COD_CIA, SUCURSAL, COD_AGENTE, TIPO_AGENTE);

ALTER TABLE GEN_CLIENTE
   ADD CONSTRAINT GENCLASECLIENTE_CLIENTE_FK FOREIGN KEY (COD_CIA, COD_CLASE)
      REFERENCES GEN_CLASE_CLIENTE (COD_CIA, COD_CLASE);

ALTER TABLE GEN_CLIENTE
   ADD CONSTRAINT GENDISTRITO_CLIENTE_FK FOREIGN KEY (COD_PROVINCIA, COD_CANTON, COD_DISTRITO)
      REFERENCES GEN_DISTRITO (COD_PROVINCIA, COD_CANTON, COD_DISTRITO);

ALTER TABLE GEN_CLIENTE
   ADD CONSTRAINT GENSUBZONA_CLIENTE_FK FOREIGN KEY (COD_CIA, COD_ZONA, COD_SUBZONA)
      REFERENCES GEN_SUBZONA (COD_CIA, COD_ZONA, COD_SUBZONA);

ALTER TABLE GEN_CLIENTE
   ADD CONSTRAINT GENSUCURSAL_CLIENTE_FK FOREIGN KEY (COD_CIA, SUCURSAL)
      REFERENCES GEN_SUCURSAL (COD_CIA, SUCURSAL);

ALTER TABLE GEN_CLIENTE_ACCION
   ADD CONSTRAINT GENCLIENTE_ACCION_FK FOREIGN KEY (COD_CIA, COD_CLIENTE)
      REFERENCES GEN_CLIENTE (COD_CIA, COD_CLIENTE);

ALTER TABLE GEN_CLIENTE_BITACORA
   ADD CONSTRAINT GENTIPOBITACORA_CLIENTEBITA_FK FOREIGN KEY (COD_CIA, TIPO)
      REFERENCES GENTIPOBITACORA (COD_CIA, TIPO);

ALTER TABLE GEN_CLIENTE_BITACORA
   ADD CONSTRAINT GENCLIENTE_BITACORA_FK FOREIGN KEY (COD_CIA, COD_CLIENTE)
      REFERENCES GEN_CLIENTE (COD_CIA, COD_CLIENTE);

ALTER TABLE GEN_CLIENTE_REFERENCIA
   ADD CONSTRAINT GENCLIENTE_REFERENCIA_FK FOREIGN KEY (COD_CIA, COD_CLIENTE)
      REFERENCES GEN_CLIENTE (COD_CIA, COD_CLIENTE);

ALTER TABLE GEN_COM_AGENTE
   ADD CONSTRAINT GENAGENTE_COMAGENTE_FK FOREIGN KEY (COD_CIA, SUCURSAL, COD_AGENTE)
      REFERENCES GEN_AGENTE (COD_CIA, SUCURSAL, COD_AGENTE);

ALTER TABLE GEN_COM_AGENTE
   ADD CONSTRAINT GENMASCOMISION_COMAGE_FK FOREIGN KEY (COD_CIA, COD_COMISION)
      REFERENCES GEN_MAS_COMISION (COD_CIA, COD_COMISION);

ALTER TABLE GEN_COMPANIA
   ADD CONSTRAINT GENPAIS_COMPANIA_FK FOREIGN KEY (COD_PAIS)
      REFERENCES GEN_PAIS (COD_PAIS);

ALTER TABLE GEN_CONTCLIE
   ADD CONSTRAINT GEN_CLIENTE_CONTCLIE_FK FOREIGN KEY (COD_CIA, COD_CLIENTE)
      REFERENCES GEN_CLIENTE (COD_CIA, COD_CLIENTE);

ALTER TABLE GEN_CONTCLIE
   ADD CONSTRAINT GEN_TIPCONTACTO_CLIE_FK FOREIGN KEY (COD_CIA, TIPO)
      REFERENCES GEN_TIPCONTACTO (COD_CIA, TIPO);

ALTER TABLE GEN_CONTPROV
   ADD CONSTRAINT GEN_PROVEEDRO_CONTPROV_FK FOREIGN KEY (COD_CIA, COD_PROVEEDOR)
      REFERENCES GEN_PROVEEDOR (COD_CIA, COD_PROVEEDOR);

ALTER TABLE GEN_CONTPROV
   ADD CONSTRAINT GEN_TIPCONTACTO_PROV_FK FOREIGN KEY (COD_CIA, TIPO)
      REFERENCES GEN_TIPCONTACTO (COD_CIA, TIPO);

ALTER TABLE GEN_DENOMINACIONES
   ADD CONSTRAINT GENMONEDA_DENOMIN_FK FOREIGN KEY (COD_MONEDA)
      REFERENCES GEN_MONEDA (COD_MONEDA);

ALTER TABLE GEN_DISTRITO
   ADD CONSTRAINT GENCANTON_DISTRITO_FK FOREIGN KEY (COD_PROVINCIA, COD_CANTON)
      REFERENCES GEN_CANTON (COD_PROVINCIA, COD_CANTON);

ALTER TABLE GEN_FUNCIONES
   ADD CONSTRAINT GENAGENTE_FUNCIONES_FK FOREIGN KEY (COD_CIA, SUCURSAL, COD_AGENTE)
      REFERENCES GEN_AGENTE (COD_CIA, SUCURSAL, COD_AGENTE);

ALTER TABLE GEN_FUNCIONES
   ADD CONSTRAINT GENTIPOAGENTE_FUNCION_FK FOREIGN KEY (COD_CIA, TIPO_AGENTE)
      REFERENCES GEN_TIPO_AGENTE (COD_CIA, TIPO_AGENTE);

ALTER TABLE GEN_IMPUESTO
   ADD CONSTRAINT GENPARAMETRO_IMPUESTO_FK FOREIGN KEY (COD_CIA)
      REFERENCES GEN_PARAMETRO (COD_CIA);

ALTER TABLE GEN_MAS_COMISION
   ADD CONSTRAINT GENMONEDA_MASCOMIS_FK FOREIGN KEY (COD_MONEDA)
      REFERENCES GEN_MONEDA (COD_MONEDA);

ALTER TABLE GEN_OFICINA
   ADD CONSTRAINT GENSUCURSAL_OFICINA_FK FOREIGN KEY (COD_CIA, SUCURSAL)
      REFERENCES GEN_SUCURSAL (COD_CIA, SUCURSAL);

ALTER TABLE GEN_PARAMETRO
   ADD CONSTRAINT GENCOMPANIA_PARAM_FK FOREIGN KEY (COD_CIA)
      REFERENCES GEN_COMPANIA (COD_CIA);

ALTER TABLE GEN_PARAMETRO
   ADD CONSTRAINT GENMONEDA_PARAM_FK FOREIGN KEY (COD_MONEDA_BASE)
      REFERENCES GEN_MONEDA (COD_MONEDA);

ALTER TABLE GEN_PERIODO
   ADD CONSTRAINT GENPARAMETRO_PERIODO_FK FOREIGN KEY (COD_CIA)
      REFERENCES GEN_PARAMETRO (COD_CIA);

ALTER TABLE GEN_PERIODO_RANGO
   ADD CONSTRAINT GENPERIODO_PERIODORANGO_FK FOREIGN KEY (COD_CIA, ANO_FISCAL)
      REFERENCES GEN_PERIODO (COD_CIA, ANO_FISCAL);

ALTER TABLE GEN_PERSONA
   ADD CONSTRAINT GENCOMPANIA_PERSONA_FK FOREIGN KEY (COD_CIA)
      REFERENCES GEN_COMPANIA (COD_CIA);

ALTER TABLE GEN_PROV_COMISION
   ADD CONSTRAINT GENMASCOMISION_PROVCOMI_FK FOREIGN KEY (COD_CIA, COD_COMISION)
      REFERENCES GEN_MAS_COMISION (COD_CIA, COD_COMISION);

ALTER TABLE GEN_PROV_COMISION
   ADD CONSTRAINT GENPROVEEDOR_PROVCOM_FK FOREIGN KEY (COD_CIA, COD_PROVEEDOR)
      REFERENCES GEN_PROVEEDOR (COD_CIA, COD_PROVEEDOR);

ALTER TABLE GEN_PROVEEDOR
   ADD CONSTRAINT GENCLASEPROV_PROV_FK FOREIGN KEY (COD_CIA, COD_CLASE)
      REFERENCES GEN_CLASE_PROV (COD_CIA, COD_CLASE);

ALTER TABLE GEN_PROVEEDOR
   ADD CONSTRAINT GENDISTRITO_PROV_FK FOREIGN KEY (COD_PROVINCIA, COD_CANTON, COD_DISTRITO)
      REFERENCES GEN_DISTRITO (COD_PROVINCIA, COD_CANTON, COD_DISTRITO);

ALTER TABLE GEN_PROVEEDOR
   ADD CONSTRAINT GENPAIS_PROVEEDOR_FK FOREIGN KEY (COD_PAIS)
      REFERENCES GEN_PAIS (COD_PAIS);

ALTER TABLE GEN_SOBREG_CLIENTE
   ADD CONSTRAINT GENCLIENTE_SOBREGIRO_FK FOREIGN KEY (COD_CIA, COD_CLIENTE)
      REFERENCES GEN_CLIENTE (COD_CIA, COD_CLIENTE);

ALTER TABLE GEN_SOBREG_PROVEEDOR
   ADD CONSTRAINT GENMONEDA_SOBREGPROV_FK FOREIGN KEY (COD_MONEDA)
      REFERENCES GEN_MONEDA (COD_MONEDA);

ALTER TABLE GEN_SOBREG_PROVEEDOR
   ADD CONSTRAINT GENPROVEEDOR_SOBREGPROV_FK FOREIGN KEY (COD_CIA, COD_PROVEEDOR)
      REFERENCES GEN_PROVEEDOR (COD_CIA, COD_PROVEEDOR);

ALTER TABLE GEN_SUBZONA
   ADD CONSTRAINT GENZONA_SUBZONA_FK FOREIGN KEY (COD_CIA, COD_ZONA)
      REFERENCES GEN_ZONA (COD_CIA, COD_ZONA);

ALTER TABLE GEN_SUCURSAL
   ADD CONSTRAINT GENCOMPANIA_SUCURSAL_FK FOREIGN KEY (COD_CIA)
      REFERENCES GEN_COMPANIA (COD_CIA);

ALTER TABLE GEN_TIPO_AGENTE
   ADD CONSTRAINT GENCOMPANIA_TIPOAGE_FK FOREIGN KEY (COD_CIA)
      REFERENCES GEN_COMPANIA (COD_CIA);

ALTER TABLE GEN_TIPO_CAMBIO
   ADD CONSTRAINT GENMONEDA_TIPCAMBIO_FK FOREIGN KEY (COD_MONEDA)
      REFERENCES GEN_MONEDA (COD_MONEDA);

ALTER TABLE GEN_ZONA
   ADD CONSTRAINT GENREGION_ZONA_FK FOREIGN KEY (COD_CIA, REGION)
      REFERENCES GEN_REGION (COD_CIA, REGION);

ALTER TABLE GEN_ZONA
   ADD CONSTRAINT GENCOMPANIA_ZONA_FK FOREIGN KEY (COD_CIA)
      REFERENCES GEN_COMPANIA (COD_CIA);

