/*==============================================================*/
/* Table: VENDETCATALOGO                                       */
/*==============================================================*/
CREATE TABLE VENDETCATALOGO  (
   CIA                CHAR(3)                         NOT NULL,
   CATALOGO           VARCHAR2(25)                    NOT NULL,
   ARTICULO           VARCHAR2(25)                    NOT NULL,
   AGOTADO            CHAR(1)                         NOT NULL,
      CONSTRAINT VENDETCATALOGO_AGOTADO_CK CHECK (AGOTADO IN ('S','N')),
   CONSTRAINT VENDETCATALOGO_PK PRIMARY KEY (CIA, CATALOGO, ARTICULO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);


ALTER TABLE VENDETCATALOGO
   ADD CONSTRAINT VENCATALOGO_DET_FK FOREIGN KEY (CIA,CATALOGO)
      REFERENCES VENCATALOGO (CIA,CATALOGO);


/*==============================================================*/
/* Table: VENPROMOCION                                          */
/*==============================================================*/
DROP TABLE VENPROMOCION;
CREATE TABLE VENPROMOCION(
   CIA                CHAR(3)                         NOT NULL,
   PROMOCION          VARCHAR2(10)                    NOT NULL,
   RIGEDESDE          DATE                            NOT NULL,
   RIGEHASTA          DATE                            NOT NULL,
   CATALOGO           VARCHAR2(25),
   TIPO               CHAR(2)                         NOT NULL
      CONSTRAINT VENPROMOCION_TIPO_CK CHECK (TIPO IN ('AV','MM','CN','PG','CG','CM','CD')),
   ESTADO             CHAR(1)                         NOT NULL
      CONSTRAINT VENPROMOCION_ESTADO_CK CHECK (ESTADO IN ('A','P','N')),
   CONSTRAINT VENPROMOCION_PK PRIMARY KEY (CIA, PROMOCION)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);


ALTER TABLE VENPROMOCION
   ADD CONSTRAINT VENPROMOCION_CATALOGO_FK FOREIGN KEY (CIA,CATALOGO)
      REFERENCES VENCATALOGO (CIA,CATALOGO);


-- Un requisito se compone de grupos que deben sastifacer al menos uno de sus codigos.
-- O sea dentro de un mismo grupo son ors pero los grupos diferentes son ands.
-- La cantidad requerida no es necesaria si quiere la deja oculta fija en 1.
DROP TABLE VENREQPROMOCION;
CREATE TABLE VENREQPROMOCION  (
   CIA                CHAR(3)                         NOT NULL,
   PROMOCION          VARCHAR2(10)                    NOT NULL,
   REQUISITO          NUMBER(4)                       NOT NULL,
   GRUPO              NUMBER(2)                       NOT NULL,
   CODIGO             VARCHAR2(25)                    NOT NULL,
   CANTIDAD           NUMBER(6,2)  DEFAULT 1          NOT NULL,
   CONSTRAINT VENREQPROMOCION_PK PRIMARY KEY (CIA, PROMOCION, REQUISITO, GRUPO, CODIGO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

ALTER TABLE VENREQPROMOCION
   ADD CONSTRAINT VENPROMOCION_REQ_FK FOREIGN KEY (CIA,PROMOCION)
      REFERENCES VENPROMOCION (CIA,PROMOCION);


-- Un articulo adicional es un regalo o una autorizacion a comprar.
-- Esto se las trae porque implica que mas bien se debe verificar al reves.
-- O sea en AV los adicionales no pueden estar en el pedido a menos que se cumpla requisito.
-- El requisito en ADI debe cumplirse en REQ para PG y CG y cumplirse en PRE para MM, CM y CD.
-- En el caso de CN no debe haber requisito y en el caso de AV la verificacion es a la inversa.
-- Note que el GRUPO en ADI no tiene nada que ver con el grupo en REQ (requisito = 0?)
-- Si se pone todo al mismo grupo son opciones de lo contrario se suman (son ands)
DROP TABLE VENADIPROMOCION;
CREATE TABLE VENADIPROMOCION  (
   CIA                CHAR(3)                         NOT NULL,
   PROMOCION          VARCHAR2(10)                    NOT NULL,
   REQUISITO          NUMBER(4)                       NOT NULL,
   GRUPO              NUMBER(2)                       NOT NULL,
   CODIGO             VARCHAR2(25)                    NOT NULL,
   CANTIDAD           NUMBER(6,2)                     NOT NULL,
   CONSTRAINT VENADIPROMOCION_PK PRIMARY KEY (CIA, PROMOCION, REQUISITO, GRUPO, CODIGO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);


ALTER TABLE VENADIPROMOCION
   ADD CONSTRAINT VENPROMOCION_ADI_FK FOREIGN KEY (CIA,PROMOCION)
      REFERENCES VENPROMOCION (CIA,PROMOCION);

-- El requisito en PRE debe ligarse hacia atras en REQ y hacia adelante en ADI.
DROP TABLE VENPREPROMOCION;
CREATE TABLE VENPREPROMOCION  (
   CIA                CHAR(3)                         NOT NULL,
   PROMOCION          VARCHAR2(10)                    NOT NULL,
   REQUISITO          NUMBER(4)                       NOT NULL,
   VALOR              NUMBER(12)                      NOT NULL,
   LISTA_PRECIO       VARCHAR2(3),
   CONSTRAINT VENPREPROMOCION_PK PRIMARY KEY (CIA, PROMOCION, REQUISITO, VALOR)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);


ALTER TABLE VENPREPROMOCION
   ADD CONSTRAINT VENPROMOCION_PRE_FK FOREIGN KEY (CIA,PROMOCION)
      REFERENCES VENPROMOCION (CIA,PROMOCION);

ALTER TABLE VENPROMOCION DROP
CONSTRAINT VENPROMOCION_TIPO_CK;

ALTER TABLE VENPROMOCION ADD
CONSTRAINT VENPROMOCION_TIPO_CK CHECK (TIPO IN ('AV','MM','CN','PG','CG','CM','CD','CA','MA'));

alter table VENCATALOGO
   add tipo char(1) default 'C' not null;
alter table vencatalogo  
   add CONSTRAINT VENCATALOGO_TIPO_CK CHECK (tipo IN ('C','M','R'));


alter table vencatalogo
add fecharige date;

alter table vencatalogo
modify fecharige date not null;



   
/*==============================================================*/
/* Table: VENBITPEDIDO                                          */
/*==============================================================*/
CREATE TABLE VENBITPEDIDO  (
   CIA                  CHAR(3)                         NOT NULL,
   SUCURSAL             CHAR(3)                         NOT NULL,
   DOCUMENTO            NUMBER(10)                      NOT NULL,
   PROMOCION            VARCHAR2(10)                    NOT NULL,
   REQUISITO            NUMBER(4)                       NOT NULL,
   GRUPO                NUMBER(2)                       NOT NULL,
   RAZON                NUMBER(6,2)                     NOT NULL,
   CONSTRAINT VENBITPEDIDO_PK PRIMARY KEY (CIA, SUCURSAL, DOCUMENTO, PROMOCION,REQUISITO,GRUPO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

ALTER TABLE VENBITPEDIDO
   ADD CONSTRAINT VENBITPEDIDO_PEDIDO_FK FOREIGN KEY (CIA, SUCURSAL, DOCUMENTO)
      REFERENCES VENPEDIDO (CIA, SUCURSAL, DOCUMENTO);


ALTER TABLE VENALISTO
DROP CONSTRAINT VENALISTO_TIPO_CK;

ALTER TABLE VENALISTO
ADD CONSTRAINT VENALISTO_TIPO_CK CHECK (TIPO IN ('P','D','F'));

   -- Incluir en plaempleado un empleado='001'

   Insert Into GenPrefsCla(Modulo, Objeto, Clave, Descripcion)
                    Values('POS', 'INICIO', 'EMPLEADOCOMODIN', 'Empleado Comodin para el Evento Alisto Mercaderia.');

   Insert Into GenPrefsVal(Cia, Modulo, Objeto, Clave, Instancia, Valor)
                    Values('001', 'POS', 'INICIO', 'EMPLEADOCOMODIN', 'INICIO', '001');
   
   COMMIT;

   Insert Into GenPrefsCla(Modulo, Objeto, Clave, Descripcion)
                    Values('SGE', 'LEVPED', 'MONTOMINIMO', 'Monto Minimo para que el pedido sea autorizado');

   Insert Into GenPrefsVal(Cia, Modulo, Objeto, Clave, Instancia, Valor)
                    Values('001', 'SGE', 'LEVPED', 'MONTOMINIMO', 'LEVPED', 18000);

   Insert Into GenPrefsCla(Modulo, Objeto, Clave, Descripcion)
                    Values('SGE', 'LEVPED', 'CANFACTURAIMP', 'Cantidad a facturar a imprimir por Bloque');

   Insert Into GenPrefsVal(Cia, Modulo, Objeto, Clave, Instancia, Valor)
                    Values('001', 'SGE', 'LEVPED', 'CANFACTURAIMP', 'LEVPED', 20);


   Insert Into GenPrefsCla(Modulo, Objeto, Clave, Descripcion)
                    Values('POS', 'PTOVENTAS', 'FAC.SALVAR', 'Factura permite salvar (SI): SI o NO.');

   Insert Into GenPrefsVal(Cia, Modulo, Objeto, Clave, Instancia, Valor)
                    Values('001', 'POS', 'PTOVENTAS', 'FAC.SALVAR', 'PTOVENTAS', 'SI');

   
   COMMIT;

-- Los valores de agotado son : S-i,N-o,T-ransito.

ALTER TABLE VENDETCATALOGO DROP CONSTRAINT VENDETCATALOGO_AGOTADO_CK;

ALTER TABLE VENDETCATALOGO ADD
CONSTRAINT VENDETCATALOGO_AGOTADO_CK CHECK (AGOTADO IN ('S','N','T'));


drop table venretpedido;
/*==============================================================*/
/* Table: VENRETPEDIDO                                          */
/*==============================================================*/
CREATE TABLE VENRETPEDIDO  (
   CIA                  CHAR(3)                         NOT NULL,
   SUCURSAL             CHAR(3)                         NOT NULL,
   DOCUMENTO            NUMBER(10)                      NOT NULL,
   MOTIVO               CHAR(2)                         NOT NULL
     CONSTRAINT VENRETPEDIDO_MOTIVO_CK CHECK (MOTIVO IN ('PI','MM','CR','AT')),   
 CONSTRAINT VENRETPEDIDO_PK PRIMARY KEY (CIA, SUCURSAL, DOCUMENTO, MOTIVO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

ALTER TABLE VENRETPEDIDO
   ADD CONSTRAINT VENRETPEDIDO_PEDIDO_FK FOREIGN KEY (CIA, SUCURSAL, DOCUMENTO)
      REFERENCES VENPEDIDO (CIA, SUCURSAL, DOCUMENTO);


-- De aqui en adelante es necesario enviarlo para actualizacion en Oficina
  
-- Preferencia para indicar el codigo de articulo para manejo de saldos de combos

   Insert Into GenPrefsobj(Modulo, Objeto, Descripcion)
                    Values('SGE', 'LEVPED','Levantamiento de Pedidos Estilos');


   Insert Into GenPrefsCla(Modulo, Objeto, Clave, Descripcion)
                    Values('SGE', 'LEVPED', 'ARTSALCOMBO', 'Codigo de articulo para manejo de saldos de combos');

   Insert Into GenPrefsVal(Cia, Modulo, Objeto, Clave, Instancia, Valor)
                    Values('001', 'SGE', 'LEVPED', 'ARTSALCOMBO', 'LEVPED', 31000);


   Insert Into GenPrefsCla(Modulo, Objeto, Clave, Descripcion)
                    Values('SGE', 'LEVPED', 'ARTSALCOMBOGM', 'Codigo de articulo para manejo de Combo Super Ganancia');

   Insert Into GenPrefsVal(Cia, Modulo, Objeto, Clave, Instancia, Valor)
                    Values('001', 'SGE', 'LEVPED', 'ARTSALCOMBOGM', 'LEVPED', 22000);

   -- Hacer Apertura de Cliente nuevo 16/09/2008 --  Es importante pensa en pasar las preferencias a una especial de LEVPED (Levantar pedidos).

   Insert Into GenPrefsCla(Modulo, Objeto, Clave, Descripcion)
                    Values('SGE', 'LEVPED', 'PERFILCLINU', 'Perfil para apertura de credito');

   Insert Into GenPrefsVal(Cia, Modulo, Objeto, Clave, Instancia, Valor)
                    Values('001', 'SGE', 'LEVPED', 'PERFILCLINU', 'LEVPED', '003');


   Insert Into GenPrefsCla(Modulo, Objeto, Clave, Descripcion)
                    Values('SGE', 'LEVPED', 'CLASECLIAFIL', 'Clase de Cliente en Estado Afiliada');

   Insert Into GenPrefsVal(Cia, Modulo, Objeto, Clave, Instancia, Valor)
                    Values('001', 'SGE', 'LEVPED', 'CLASECLIAFIL', 'LEVPED', '080');


   Insert Into GenPrefsCla(Modulo, Objeto, Clave, Descripcion)
                    Values('SGE', 'LEVPED', 'CLASECLICON', 'Clase de Cliente en Estado Contado');

   Insert Into GenPrefsVal(Cia, Modulo, Objeto, Clave, Instancia, Valor)
                    Values('001', 'SGE', 'LEVPED', 'CLASECLICON', 'LEVPED', '010');


   Insert Into GenPrefsCla(Modulo, Objeto, Clave, Descripcion)
                    Values('SGE', 'LEVPED', 'CLASIAPERTURA', 'Clasificacion que indica Apertura de Clientes');

   Insert Into GenPrefsVal(Cia, Modulo, Objeto, Clave, Instancia, Valor)
                    Values('001', 'SGE', 'LEVPED', 'CLASIAPERTURA', 'LEVPED', '008');

   Insert Into GenPrefsCla(Modulo, Objeto, Clave, Descripcion)
                    Values('SGE', 'LEVPED', 'CLASICATALOGO', 'Clasificacion utilizada para la Cantidad de Catalogo');

   Insert Into GenPrefsVal(Cia, Modulo, Objeto, Clave, Instancia, Valor)
                    Values('001', 'SGE', 'LEVPED', 'CLASICATALOGO', 'LEVPED', 'C02');

   commit;

-- 12/09/2008 mejorar rendimiento reporte de empaque

/*==============================================================*/
/* Index: VENFACTURA_REF_IDX                                    */
/*==============================================================*/
CREATE INDEX VENFACTURA_REF_IDX ON VENFACTURA (
   CIA ASC,
   SUCURSAL ASC,
   REFERENCIA ASC
);


CREATE INDEX VENPEDIDO_CLIE_IDX ON VENPEDIDO (
   CIA ASC,
   SUCURSAL ASC,
   CLIENTE ASC,
   ESTADO
);


-- 23/09/2008

DROP TABLE VENZONACATALOGO;
/*==============================================================*/
/* Table: VENZONACATALOGO                                       */
/*==============================================================*/
CREATE TABLE VENZONACATALOGO  (
   CIA                CHAR(3)                        NOT NULL,
   ZONA               VARCHAR2(5)                    NOT NULL,
   CATALOGO           VARCHAR2(25)                   NOT NULL,
   CONSTRAINT VENZONACATALOGO_PK PRIMARY KEY (CIA, ZONA)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

ALTER TABLE VENZONACATALOGO
   ADD CONSTRAINT VENCATALOGO_ZONA_FK FOREIGN KEY (CIA,CATALOGO)
      REFERENCES VENCATALOGO (CIA,CATALOGO);

ALTER TABLE VENZONACATALOGO
   ADD CONSTRAINT GENZONA_ZONACATALOGO_FK FOREIGN KEY (CIA,ZONA)
      REFERENCES GEN_ZONA (COD_CIA,COD_ZONA);


DROP TABLE VENZONACATIMP;
/*==============================================================*/
/* Table: VENZONACATIMP                                         */
/*==============================================================*/
CREATE TABLE VENZONACATIMP  (
   CIA                CHAR(3)                        NOT NULL,
   CATALOGO           VARCHAR2(25)                   NOT NULL,
   ZONA               VARCHAR2(5)                    NOT NULL,
   INVALIDO           CHAR(1)   DEFAULT 'N'          NOT NULL,
   AGOTADO	      CHAR(1)   DEFAULT 'N'	     NOT NULL,
   CONSTRAINT VENZONACATIMP_PK PRIMARY KEY (CIA, CATALOGO, ZONA)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

ALTER TABLE VENZONACATIMP
   ADD CONSTRAINT VENCATALOGO_ZONACATIMP_FK FOREIGN KEY (CIA,CATALOGO)
      REFERENCES VENCATALOGO (CIA,CATALOGO);

ALTER TABLE VENZONACATIMP
   ADD CONSTRAINT GENZONA_ZONACATIMP_FK FOREIGN KEY (CIA,ZONA)
      REFERENCES GEN_ZONA (COD_CIA,COD_ZONA);


/*==============================================================*/
/* Table: VENCLAVECATALOGO                                       */
/*==============================================================*/
CREATE TABLE VENCLAVECATALOGO  (
   CIA                CHAR(3)                        NOT NULL,
   CATALOGO           VARCHAR2(25)                   NOT NULL,
   CLAVE              VARCHAR2(4)                    NOT NULL,
   ORDEN              NUMBER(2)                      NOT NULL,
   CONSTRAINT VENCLAVECATALOGO_PK PRIMARY KEY (CIA, CATALOGO, CLAVE)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);


ALTER TABLE VENCLAVECATALOGO
   ADD CONSTRAINT VENCATALOGO_CLAVE_FK FOREIGN KEY (CIA,CATALOGO)
      REFERENCES VENCATALOGO (CIA,CATALOGO);


ALTER TABLE VENDETCATALOGO ADD
CLAVE VARCHAR2(4) DEFAULT 'X' NOT NULL;


ALTER TABLE VENCARGO
 ADD (PROVINCIA  VARCHAR2(3 BYTE))
/
 
ALTER TABLE VENCARGO
 ADD (CANTON  VARCHAR2(3 BYTE))
/
 
ALTER TABLE VENCARGO
 ADD (DISTRITO  VARCHAR2(3 BYTE))
/
 
ALTER TABLE VENCARGO
 DROP PRIMARY KEY CASCADE
/
 
ALTER TABLE VENCARGO
 ADD CONSTRAINT VENCARGO_UK
 UNIQUE (CIA, ZONA, CANTON, DISTRITO)
/
 

alter table vencatalogo
add COD_LISTA_PRECIO   CHAR(3) DEFAULT '001' NOT NULL
/


 alter table venfacturaimp
 add caja char(3)
 /

 alter table venfacturaimp
 add cajero varchar2(10)
 /


drop table veninvpedido;
/*==============================================================*/
/* Table: VENINVPEDIDO                                          */
/*==============================================================*/
CREATE TABLE VENINVPEDIDO  (
   CIA                  CHAR(3)                         NOT NULL,
   CAJA                 CHAR(3) DEFAULT '001' NOT NULL,
   ESCANID              VARCHAR2(25),
   SUCURSAL             CHAR(3)                         ,
   DOCUMENTO            NUMBER(10)                      ,
   LINEA                NUMBER(2)			NOT NULL,
   ARTICULO             VARCHAR2(25)			NOT NULL,
   CANTIDAD		NUMBER(2)			NOT NULL,
   CONSTRAINT VENINVPEDIDO_PK PRIMARY KEY (CIA, CAJA, ESCANID, LINEA, ARTICULO )
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);

ALTER TABLE VENINVPEDIDO
 ADD CONSTRAINT VENINVPEDIDO_UK
 UNIQUE (CIA, SUCURSAL, DOCUMENTO, LINEA, ARTICULO)
/
 
ALTER TABLE VENINVPEDIDO
   ADD CONSTRAINT VENESCANORDECOM_INVPEDIDO_FK FOREIGN KEY (CAJA, ESCANID)
      REFERENCES VEN_ESCAN_ORDENCOM (CAJA, ESCANID);


-- Tabla temporal de Greivin para catalogos que faltan de cobrar
CREATE TABLE catfaltantes_tmp  (
   CIA                CHAR(3)                         NOT NULL,
   CLIENTE            VARCHAR2(25)                    NOT NULL,
   CATALOGO           VARCHAR2(25)                    NOT NULL,
   CANTIDAD           NUMBER(10)		      NOT NULL,
   TIPO               CHAR(1)                         NOT NULL,
   CONSTRAINT catfaltantes_tmp_PK PRIMARY KEY (CIA,  CLIENTE, CATALOGO)
)
INITRANS 1
STORAGE
(
    INITIAL 10K
    NEXT 10K
);