/*==============================================================*/
/* Database name:  Libro Precios                                */
/* DBMS name:      ORACLE Version 7                             */
/* Created on:     3/17/03 3:23:33 PM                           */
/*==============================================================*/


/*==============================================================*/
/* Table: fac_autorizados                                       */
/*==============================================================*/

create table fac_autorizados (
   cod_cia              CHAR(3)                         not null,
   sucursal             CHAR(3)                         not null,
   cod_usuario          VARCHAR2(30)                    not null,
   porcentaje           NUMBER(7,4),
   cod_lista_precio     CHAR(3)                         not null,
   constraint FAC_AUTORIZADOS_PK primary key (cod_cia, sucursal, cod_usuario)
)
initrans 1
storage (initial 10K next 10K)
/


/*==============================================================*/
/* Index: facparametro_autorizados_FK1                          */
/*==============================================================*/
create  index facparametro_autorizados_FK1
on fac_autorizados (
   cod_cia ASC
)
/


/*==============================================================*/
/* Table: fac_desc_cliente                                      */
/*==============================================================*/

create table fac_desc_cliente (
   cod_cia              CHAR(3)                         not null,
   cod_clase            VARCHAR2(5)                     not null,
   cod_linea            VARCHAR2(5),
   cod_marca            VARCHAR2(5),
   cod_articulo         VARCHAR2(25),
   detalle              VARCHAR2(40)                    not null,
   tipo                 CHAR(1)                         not null
         constraint FAC_DESC_CLIENTE_TIPO_CK check (tipo in ('P','M')),
   valor                NUMBER(14,4)                    not null
         constraint FAC_DESC_CLIENTE_VALOR_CK check (valor >= 0),
   cod_usuario          VARCHAR2(30)                    not null,
   constraint FAC_DESC_CLIENTE_AK unique (cod_cia, cod_clase, cod_linea, cod_marca, cod_articulo)
)
initrans 1
storage
(
    initial 10K
    next 10K
)
/


/*==============================================================*/
/* Index: facparametro_desccliente_FK1                          */
/*==============================================================*/
create  index facparametro_desccliente_FK1
on fac_desc_cliente (
   cod_cia ASC
)
/


/*==============================================================*/
/* Table: fac_det_precios                                       */
/*==============================================================*/

create table fac_det_precios (
   cod_cia              CHAR(3)                         not null,
   cod_lista_precio     CHAR(3)                         not null,
   cod_moneda           VARCHAR2(3)                     not null,
   cod_articulo         VARCHAR2(25)                    not null,
   costo                NUMBER(14,4)                    not null
         constraint FAC_DET_PRECIOS_COSTO_CK check (costo >= 0),
   precio_unitario      NUMBER(14,4)                    not null
         constraint precio_unitario_fac_det_chk check (precio_unitario >= 0),
   porc_utilidad        NUMBER(7,4)                     not null,
   descuento            NUMBER(7,4)                     not null,
   documento            NUMBER(10),
   constraint FAC_DET_PRECIOS_PK primary key (cod_cia, cod_lista_precio, cod_moneda, cod_articulo)
)
initrans 1
storage (initial 10K next 10K)
/


/*==============================================================*/
/* Index: facmasprecio_detprecios_FK1                           */
/*==============================================================*/
create  index facmasprecio_detprecios_FK1
on fac_det_precios (
   cod_cia ASC,
   cod_lista_precio ASC
)
/


/*==============================================================*/
/* Table: fac_detpromocion                                      */
/*==============================================================*/

create table fac_detpromocion (
   cod_cia              CHAR(3)                         not null,
   cod_promocion        VARCHAR2(10)                    not null,
   cod_articulo         VARCHAR2(25)                    not null,
   porc_descuento       NUMBER(7,4)                     not null,
   constraint FAC_DETPROMOCION_PK primary key (cod_cia, cod_promocion, cod_articulo)
)
initrans 1
storage (initial 10K next 10K)
/


/*==============================================================*/
/* Index: facpromocion_detpromo_FK1                             */
/*==============================================================*/
create  index facpromocion_detpromo_FK1
on fac_detpromocion (
   cod_cia ASC,
   cod_promocion ASC
)
/


/*==============================================================*/
/* Table: fac_hdet_precios                                      */
/*==============================================================*/

create table fac_hdet_precios (
   cod_cia              CHAR(3)                         not null,
   cod_lista_precio     CHAR(3)                         not null,
   cod_moneda           VARCHAR2(3)                     not null,
   cod_articulo         VARCHAR2(25)                    not null,
   fec_final            DATE                            not null,
   costo                NUMBER(14,4)                    not null
         constraint FAC_HDET_PRECIOS_COSTO_CK check (costo >= 0),
   precio_unitario      NUMBER(14,4)                    not null
         constraint gen_pr_chk check (precio_unitario >= 0),
   porc_utilidad        NUMBER(7,4)                     not null,
   descuento            NUMBER(7,4)                     not null,
   documento            NUMBER(10),
   usuario              VARCHAR2(30),
   constraint FAC_HDET_PRECIOS_PK primary key (cod_cia, cod_lista_precio, cod_moneda, cod_articulo, fec_final)
)
initrans 1
storage (initial 10K next 10K)
/


/*==============================================================*/
/* Index: facmasprecio_hdetprecio_FK1                           */
/*==============================================================*/
create  index facmasprecio_hdetprecio_FK1
on fac_hdet_precios (
   cod_cia ASC,
   cod_lista_precio ASC
)
/


/*==============================================================*/
/* Table: fac_mas_precios                                       */
/*==============================================================*/

create table fac_mas_precios (
   cod_cia              CHAR(3)                         not null,
   cod_lista_precio     CHAR(3)                         not null,
   des_lista            VARCHAR2(40)                    not null,
   lista_madre          CHAR(3),
   porcentaje           NUMBER(7,4),
   constraint FAC_MAS_PRECIOS_PK primary key (cod_cia, cod_lista_precio)
)
initrans 1
storage 
(initial 10K next 10K)
/


/*==============================================================*/
/* Index: facmasprecios_listamadre_FK1                          */
/*==============================================================*/
create  index facmasprecios_listamadre_FK1
on fac_mas_precios (
   cod_cia ASC,
   lista_madre ASC
)
/


/*==============================================================*/
/* Table: fac_parametro                                         */
/*==============================================================*/

create table fac_parametro (
   cod_cia              CHAR(3)                         not null,
   metodo_calculo       CHAR(1)                        default 'M' not null
         constraint FAC_PARAMETRO_METODO_CAL_CK check (metodo_calculo in ('M','P')),
   complemento_redondeo NUMBER(5,2)                     not null,
   multiplo_redondeo    NUMBER(5,2)                     not null,
   con_precio           NUMBER(10)                      not null,
   reqautoriza          CHAR(1)                         not null
         constraint FAC_PARAMETRO_REQAUTORIZ_CK check (reqautoriza in ('S','N')),
   tomamargen           CHAR(1)                        default 'P' not null
         constraint FAC_PARAMETRO_TOMAMARGEN_CK check (tomamargen in ('P','L')),
   constraint FAC_PARAMETRO_PK primary key (cod_cia)
)
initrans 1
storage
    (
      initial 10K
      next 10K
    )
/


/*==============================================================*/
/* Table: fac_precio_pro                                        */
/*==============================================================*/

create table fac_precio_pro (
   cod_cia              CHAR(3)                         not null,
   cod_articulo         VARCHAR2(25)                    not null,
   cod_promocion        VARCHAR2(10)                    not null,
   porc_descuento       NUMBER(7,4)                     not null,
   constraint FAC_PRECIO_PRO_PK primary key (cod_cia, cod_articulo)
)
initrans 1
storage (initial 10K next 10K)
/


/*==============================================================*/
/* Index: facpromocion_preciopro_FK1                            */
/*==============================================================*/
create  index facpromocion_preciopro_FK1
on fac_precio_pro (
   cod_cia ASC,
   cod_promocion ASC
)
/


/*==============================================================*/
/* Table: fac_precios_esp                                       */
/*==============================================================*/

create table fac_precios_esp (
   cod_cia              CHAR(3)                         not null,
   cod_cliente          VARCHAR2(25)                    not null,
   clave                NUMBER(5)                       not null,
   fecha_mov            DATE                            not null,
   des_precio           VARCHAR2(40),
   sucursal             CHAR(3)                         not null,
   cod_moneda           VARCHAR2(3)                     not null,
   cod_linea            VARCHAR2(5),
   cod_lista_precio     CHAR(3)                         not null,
   porcentaje           NUMBER(7,4)                     not null,
   cod_articulo         VARCHAR2(25),
   cod_usuario          VARCHAR2(30)                    not null,
   documento            VARCHAR2(20),
   constraint FAC_PRECIOS_ESP_PK primary key (cod_cia, cod_cliente, clave)
)
initrans 1
storage
(
    initial 10K
    next 10K)
/


/*==============================================================*/
/* Index: facmasprecio_precioesp_FK1                            */
/*==============================================================*/
create  index facmasprecio_precioesp_FK1
on fac_precios_esp (
   cod_cia ASC,
   cod_lista_precio ASC
)
/


/*==============================================================*/
/* Table: fac_promocion                                         */
/*==============================================================*/

create table fac_promocion (
   cod_cia              CHAR(3)                         not null,
   cod_promocion        VARCHAR2(10)                    not null,
   cod_usuario          VARCHAR2(30)                    not null,
   fecha_ini            DATE                            not null,
   fecha_fin            DATE                            not null,
   descripcion          VARCHAR2(40)                    not null,
   sucursal             CHAR(3)                         not null,
   estado               CHAR(1)                         not null
         constraint ckc_estado_fac_prom check (estado in ('A','C','P')),
   constraint FAC_PROMOCION_PK primary key (cod_cia, cod_promocion)
)
initrans 1
storage
(initial 10K next 10K)
/


/*==============================================================*/
/* Table: gen_camb_precio                                       */
/*==============================================================*/

create table gen_camb_precio (
   cod_cia              CHAR(3)                         not null,
   documento            NUMBER(10)                      not null,
   cod_articulo         VARCHAR2(25)                    not null,
   costo                NUMBER(14,4)                    not null
         constraint GEN_CAMB_PRECIO_COSTO_CK check (costo >= 0),
   precio_unitario      NUMBER(14,4)                    not null
         constraint gen_precio_chk check (precio_unitario >= 0),
   porc_utilidad        NUMBER(7,4)                     not null,
   desc_fijo            NUMBER(7,4)                     not null,
   desc_promocion       NUMBER(7,4),
   observacion          VARCHAR2(100),
   dif_margen           NUMBER(7,4),
   constraint GEN_CAMB_PRECIO_PK primary key (cod_cia, documento, cod_articulo)
)
initrans 1
storage (initial 10K next 10K)
/


/*==============================================================*/
/* Index: genencprecio_camb_FK1                                 */
/*==============================================================*/
create  index genencprecio_camb_FK1
on gen_camb_precio (
   cod_cia ASC,
   documento ASC
)
/


/*==============================================================*/
/* Table: gen_enc_precio                                        */
/*==============================================================*/

create table gen_enc_precio (
   cod_cia              CHAR(3)                         not null,
   documento            NUMBER(10)                      not null,
   cod_proveedor        VARCHAR2(25),
   cod_lista_precio     CHAR(3)                         not null,
   cod_moneda           VARCHAR2(3)                     not null,
   fecha                DATE                            not null,
   fec_inicio           DATE                            not null,
   fec_final            DATE,
   tipo_transaccion     CHAR(2)                         not null
         constraint GEN_ENC_PRECIO_TIPO_TRANS_CK check (tipo_transaccion in ('AN','DA','CC','DP','DF','UP','IV','PA','PT','SC')),
   observaciones        VARCHAR2(100),
   usuario              VARCHAR2(30)                    not null,
   usuario_autoriza     VARCHAR2(30),
   origen               CHAR(1)                         not null
         constraint GEN_ENC_PRECIO_ORIGEN_CK check (origen in ('F','N','R','S')),
   doc_ref              VARCHAR2(10),
   estado               CHAR(1)                         not null
         constraint GEN_ENC_PRECIO_ESTADO_CK check (estado in ('A','P','N')),
   constraint GEN_ENC_PRECIO_PK primary key (cod_cia, documento)
)
initrans 1
storage
    (
      initial 10K
      next 10K
    )
/


/*==============================================================*/
/* Index: facmasprecios_encprecio_FK1                           */
/*==============================================================*/
create  index facmasprecios_encprecio_FK1
on gen_enc_precio (
   cod_cia ASC,
   cod_lista_precio ASC
)
/


/*==============================================================*/
/* Table: gen_incon_campre                                      */
/*==============================================================*/

create table gen_incon_campre (
   cod_cia              CHAR(3)                         not null,
   documento            NUMBER(10)                      not null,
   cod_articulo         VARCHAR2(25)                    not null,
   costo                NUMBER(14,4)                    not null
         constraint GEN_INCON_CAMPRE_COSTO_CK check (costo >= 0),
   precio_unitario      NUMBER(14,4)                    not null
         constraint gen_precio_chk2 check (precio_unitario >= 0),
   porc_utilidad        NUMBER(7,4)                     not null,
   desc_fijo            NUMBER(7,4)                     not null,
   desc_promocion       NUMBER(7,4),
   observacion          VARCHAR2(100),
   dif_margen           NUMBER(7,4),
   constraint GEN_INCON_CAMPRE_PK primary key (cod_cia, documento, cod_articulo)
)
initrans 1
storage
    (
      initial 10K
      next 10K
    )
/


/*==============================================================*/
/* Index: genencprecio_incon_FK1                                */
/*==============================================================*/
create  index genencprecio_incon_FK1
on gen_incon_campre (
   cod_cia ASC,
   documento ASC
)
/


/*==============================================================*/
/* Table: prec_autoriza                                         */
/*==============================================================*/

create table prec_autoriza (
   cod_cia              CHAR(3)                         not null,
   usuario              VARCHAR2(30)                    not null,
   constraint PREC_AUTORIZA_PK primary key (cod_cia, usuario)
)
initrans 1
storage
    (
      initial 10K
      next 10K
    )
/


/*==============================================================*/
/* Index: fac_parametro_FK1                                     */
/*==============================================================*/
create  index fac_parametro_FK1
on prec_autoriza (
   cod_cia ASC
)
/


/*==============================================================*/
/* Table: prec_proveedor                                        */
/*==============================================================*/

create table prec_proveedor (
   cod_cia              CHAR(3)                         not null,
   proveedor            VARCHAR2(25)                    not null,
   cod_lista_precio     CHAR(3)                         not null,
   margen_sug           NUMBER(7,4)                     not null,
   constraint PREC_PROVEEDOR_PK primary key (cod_cia, proveedor, cod_lista_precio)
)
initrans 1
 storage
 (
  initial 10K
  next 10K
 )
/


/*==============================================================*/
/* Index: Facmasprecios_precprov_FK1                            */
/*==============================================================*/
create  index Facmasprecios_precprov_FK1
on prec_proveedor (
   cod_cia ASC,
   cod_lista_precio ASC
)
/


/*==============================================================*/
/* View: Camb_precio_act                                        */
/*==============================================================*/
create or replace view Camb_precio_act  as
select a.cod_lista_precio,a.documento,a.cod_articulo,
      b.cod_proveedor,a.costo,c.imptocons,a.descuento,a.porc_utilidad,
      a.precio_unitario,b.fec_inicio,a.cod_cia,a.cod_moneda,c.imptovtas,
      c.cod_depto,c.cod_linea,c.cod_clase,c.cod_marca,c.des_articulo
from fac_det_precios a,gen_enc_precio b,inv_articulo c
where a.cod_cia = b.cod_cia
  and a.documento=b.documento
  and a.cod_cia  = c.cod_cia
  and a.cod_articulo = c.cod_articulo
/


/*==============================================================*/
/* View: Camb_precio_pen                                        */
/*==============================================================*/
create or replace view Camb_precio_pen  as
select b.cod_lista_precio,a.documento,a.cod_articulo,
   b.cod_proveedor,a.costo,c.imptocons,a.desc_promocion,a.desc_fijo,a.porc_utilidad,
   a.precio_unitario,b.fecha,b.fec_inicio,b.fec_final,a.cod_cia,b.cod_moneda,c.imptovtas,
   c.cod_depto,c.cod_linea,c.cod_clase,c.cod_marca,c.des_articulo,b.tipo_transaccion,
   a.observacion
from gen_camb_precio a,gen_enc_precio b,inv_articulo c
where a.cod_cia = b.cod_cia
  and a.documento=b.documento
  and a.cod_cia  = c.cod_cia
  and a.cod_articulo = c.cod_articulo
  and b.estado='P'
/


alter table fac_autorizados
   add constraint facparametro_autorizados_FK foreign key (cod_cia)
      references fac_parametro (cod_cia)
/


alter table fac_desc_cliente
   add constraint facparametro_desccliente_FK foreign key (cod_cia)
      references fac_parametro (cod_cia)
/


alter table fac_det_precios
   add constraint facmasprecio_detprecios_FK foreign key (cod_cia, cod_lista_precio)
      references fac_mas_precios (cod_cia, cod_lista_precio)
/


alter table fac_detpromocion
   add constraint facpromocion_detpromo_FK foreign key (cod_cia, cod_promocion)
      references fac_promocion (cod_cia, cod_promocion)
/


alter table fac_hdet_precios
   add constraint facmasprecio_hdetprecio_FK foreign key (cod_cia, cod_lista_precio)
      references fac_mas_precios (cod_cia, cod_lista_precio)
/


alter table fac_mas_precios
   add constraint facmasprecios_listamadre_FK foreign key (cod_cia, lista_madre)
      references fac_mas_precios (cod_cia, cod_lista_precio)
/


alter table fac_precio_pro
   add constraint facpromocion_preciopro_FK foreign key (cod_cia, cod_promocion)
      references fac_promocion (cod_cia, cod_promocion)
/


alter table fac_precios_esp
   add constraint facmasprecio_precioesp_FK foreign key (cod_cia, cod_lista_precio)
      references fac_mas_precios (cod_cia, cod_lista_precio)
/


alter table gen_camb_precio
   add constraint genencprecio_camb_FK foreign key (cod_cia, documento)
      references gen_enc_precio (cod_cia, documento)
/


alter table gen_enc_precio
   add constraint facmasprecios_encprecio_FK foreign key (cod_cia, cod_lista_precio)
      references fac_mas_precios (cod_cia, cod_lista_precio)
/


alter table gen_incon_campre
   add constraint genencprecio_incon_FK foreign key (cod_cia, documento)
      references gen_enc_precio (cod_cia, documento)
/


alter table prec_autoriza
   add constraint fac_parametro_FK foreign key (cod_cia)
      references fac_parametro (cod_cia)
/


alter table prec_proveedor
   add constraint Facmasprecios_precprov_FK foreign key (cod_cia, cod_lista_precio)
      references fac_mas_precios (cod_cia, cod_lista_precio)
/


