create table pensionado
(cod_cia char(3) not null,
 cod_cliente varchar2(25) not null,
 constraint pensionado_pk primary key(cod_cia,cod_cliente)
);

create table cambiocliente
( cod_cia   char(3) not null,
  cod_cliente varchar2(25) not null,
  cod_nuevo   varchar2(25) not null,
  constraint cambiocliente_pk primary key (cod_cia,cod_cliente)
);

create table CXC_CLICOM_COBRO (
   COD_CIA              CHAR(3)                         not null,
   sucursal             CHAR(3)                         not null,
   COD_AGENTE           VARCHAR2(3)                     not null,
   COD_CLIENTE          VARCHAR2(25)                    not null,
   ANO_FISCAL           NUMBER(4)                       not null,
   PER_PROCESO          NUMBER(2)                       not null,
   cod_comision         VARCHAR2(3)                     not null,
   MON_COBRADO          NUMBER(14,2)                    not null,
   MON_COMISION         NUMBER(14,2)                    not null,
   constraint CXC_CLICOM_COBRO_PK primary key (COD_CIA, COD_AGENTE, COD_CLIENTE, ANO_FISCAL, PER_PROCESO, sucursal, cod_comision)
);


create table CXC_CLICOMISION (
   COD_CIA              CHAR(3)                         not null,
   COD_CLIENTE          VARCHAR2(25)                    not null,
   cod_comision         VARCHAR2(3)                     not null,
   constraint CXC_CLICOMISION_PK primary key (COD_CIA, COD_CLIENTE)
);


alter table cxc_clicomision
add constraint gencliente_clicomision_fk
foreign key (cod_cia,cod_cliente)
references gen_cliente(cod_cia,cod_cliente);

alter table cxc_clicomision
add constraint gencomision_clicomision_fk
foreign key (cod_cia,cod_comision)
references gen_mas_comision(cod_cia,cod_comision);


create table CXC_DOCUMENTO_CLIENTE (
   COD_CIA              CHAR(3)                         not null,
   LINEA                CHAR(3)                         not null,
   TIP_DOC              CHAR(3)                         not null,
   COD_CLIENTE          VARCHAR2(25)                    not null,
   MONTO                NUMBER(14,2)                    not null,
   constraint CXC_DOCUMENTO_CLIENTE_PK primary key (COD_CIA, LINEA, tip_doc, COD_CLIENTE)
);


alter table CXC_DOCUMENTO_CLIENTE
   add constraint cxcdocumento_doctocliente_FK foreign key (tip_doc)
      references CXC_DOCUMENTO(tip_doc);


drop table cxc_movimientotmp;
create table CXC_MOVIMIENTOTMP (
   cod_cia              CHAR(3)                         not null,
   sucursal             CHAR(3)                         not null,
   TIP_DOC              CHAR(3)                         not null,
   num_doc              NUMBER(10)                      not null,
   FEC_DOC              DATE                            not null,
   FEC_VENCE            DATE                            not null,
   COD_CLIENTE          VARCHAR2(25)                    not null,
   LINEA                CHAR(3)                         not null,
   PERSONA              VARCHAR2(25),
   MON_DOCTO            NUMBER(14,2)                    not null,
   TIP_CAMBIO           NUMBER(14,4)                    not null,
   MON_SALDO            NUMBER(14,2)                    not null,
   MON_INTERES          NUMBER(14,2)                    not null,
   MON_INT_MORA         NUMBER(14,2)                    not null,
   DOC_REF              VARCHAR2(10),
   RANGO1               NUMBER(14,2),
   RANGO2               NUMBER(14,2),
   RANGO3               NUMBER(14,2),
   RANGO4               NUMBER(14,2),
   RANGO5               NUMBER(14,2),
   RANGO6               NUMBER(14,2),
   RANGO7               NUMBER(14,2),
   COD_AGENTE           varchar2(3),
   FEC_REG              DATE        not null,
   constraint CXC_MOVIMIENTOTMP_PK primary key (cod_cia, sucursal, TIP_DOC, num_doc)
);


drop table cxc_pago_ccss;
create table CXC_PAGO_CCSS (
   cod_cia              CHAR(3)                         not null,
   sucursal             CHAR(3)                         not null,
   tip_doc              CHAR(3)                         not null,
   cod_cliente          VARCHAR2(25)                    not null,
   linea                CHAR(3)                         not null,
   fec_doc              DATE                            not null,
   ano_fiscal           NUMBER(4)                       not null,
   per_proceso          NUMBER(2)                       not null,
   cod_moneda           VARCHAR2(3)                     not null,
   mon_pago             NUMBER(14,2)                    not null,
   ind_proceso          CHAR(1)                         not null,
   primary key (cod_cia,sucursal,cod_cliente,tip_doc)
);


create or replace view cxc_mov_periodo  as
select a.COD_CIA, a.SUCURSAL, a.cod_cliente, a.TIP_DOC, a.ano_fiscal,a.per_proceso, 
sum(a.mon_docto) mon_docto,sum(a.mon_saldo) mon_saldo
from CXC_ENC_MOVIMIENTO a
group by a.COD_CIA, a.SUCURSAL, a.cod_cliente, a.TIP_DOC, a.ano_fiscal,a.per_proceso;

create table CXC_ENC_PAGO_NOTATMP (
   cod_cia              CHAR(3)                         not null,
   sucursal             CHAR(3)                         not null,
   tip_doc              CHAR(3)                         not null,
   num_doc              NUMBER(10)                      not null,
   cod_cliente          VARCHAR2(25)                    not null,
   persona              VARCHAR2(25),
   linea                CHAR(3)                         not null,
   des_cliente          VARCHAR2(35),
   fec_doc              DATE                            not null,
   fec_reg              DATE                            not null,
   ano_fiscal           NUMBER(4)                       not null,
   per_proceso          NUMBER(2)                       not null,
   cod_moneda           VARCHAR2(3)                     not null,
   tip_cambio           NUMBER(14,4)                    not null,
   tip_cambio_base      NUMBER(14,4)                    not null,
   ind_forma_pago       CHAR(1)                        default 'C' not null
         constraint cxc_encpgnttmpfor_pag_ck check (ind_forma_pago in ('E','C','T','M')),
   num_asiento          VARCHAR2(15),
   mon_pago             NUMBER(14,2)                    not null
         constraint cxc_encpgnttmpmon_pago_ck check (mon_pago >= 0),
   interes              NUMBER(14,2)                    not null
         constraint cxc_encpgnttmpinteres_ck check (interes >= 0),
   int_mora             NUMBER(14,2)                    not null
         constraint cxc_encpgnttmpint_mora_ck check (int_mora >= 0),
   estado               CHAR(1)                         not null
         constraint cxc_encpgnttmpind_est_ck check (estado in ('A','P','N')),
   cod_agente           VARCHAR2(3)                     not null,
   des_observacion      VARCHAR2(240),
   ind_externo          CHAR(4),
   deposito             NUMBER(10),
   recibo_agente        NUMBER(10),
   doc_ref              VARCHAR2(10),
   nom_asiento          VARCHAR2(20),
   tip_doc_ref          CHAR(3),
   constraint CXC_ENC_PAGO_NOTATMP_PK primary key (cod_cia, sucursal, tip_doc, num_doc)
)
initrans 1
storage
    (
      initial 10K
      next 10K
    );



create table CXC_OBLIGACIONTMP (
   cod_cia              CHAR(3)                         not null,
   sucursal             CHAR(3)                         not null,
   tip_doc              CHAR(3)                         not null,
   num_doc              NUMBER(10)                      not null,
   num_parte            NUMBER(4)                       not null,
   fec_vence            DATE                            not null,
   mon_pago             NUMBER(14,2)                    not null,
   mon_saldo            NUMBER(14,2)                    not null,
   constraint CXC_OBLIGACIONTMP_PK primary key (cod_cia, sucursal, tip_doc, num_doc, num_parte)
);


create table MOVCLIENTE (
   cod_cliente          VARCHAR2(25)                         not null,
   tip_doc              CHAR(3)                              not null,
   saldo                NUMBER(14,2)                         not null
);


create table cxc_encagecxctmp (
 COD_CIA                         CHAR(3)     NOT NULL,
 COD_AGENTE                      VARCHAR2(3) NOT NULL,
 FECHA                           DATE        NOT NULL,
 ESTADO				 CHAR(1)     NOT NULL,
constraint CXC_ENCAGECXCTMP_PK primary key (cod_cia, cod_agente,fecha)
);

create table cxc_detagecxctmp (
 COD_CIA                         CHAR(3)     NOT NULL,
 COD_AGENTE                      VARCHAR2(3) NOT NULL,
 FECHA                           DATE        NOT NULL,
 SUCURSAL                        CHAR(3)     NOT NULL,
 TIP_DOC                         CHAR(3)     NOT NULL,
 NUM_DOC                         NUMBER(10)  NOT NULL,
constraint CXC_DETAGECXCTMP_PK primary key (cod_cia,cod_agente,fecha,sucursal,tip_doc,num_doc)
);



ALTER TABLE CXC_DETAGECXCTMP
add constraint cxc_encagecxctmp_detagecxc
foreign key (cod_cia,cod_agente,fecha)
references cxc_encagecxctmp(cod_cia,cod_agente,fecha);


create or replace view cxc_visdetagecxc as
select dt.COD_CIA, dt.COD_AGENTE, dt.FECHA, dt.SUCURSAL,
       dt.TIP_DOC, dt.NUM_DOC,
       em.doc_ref, em.cod_cliente, em.fec_vence, em.mon_saldo
from   CXC_ENC_MOVIMIENTO em,  cxc_detagecxctmp dt
where  em.cod_cia  = dt.cod_cia
  and    em.sucursal = dt.sucursal
  and    em.tip_doc  = dt.tip_doc
  and    em.num_doc  = dt.num_doc;
