/*==============================================================*/
/* Table: con_saldo_vmoneda                                     */
/*==============================================================*/

-- primary key (cod_cia, ano_fiscal, per_proceso, cod_cta, ccosto, cod_moneda)
-- conctacontable_saldo_FK (cod_cia ASC, cod_cta ASC)

drop index con_saldo_vmoneda_monidx;
create index con_saldo_vmoneda_monidx
    on con_saldo_vmoneda (cod_cia, cod_moneda, ano_fiscal, per_proceso,  ccosto);

drop index con_saldo_vmoneda_ccidx;
create index con_saldo_vmoneda_ccidx
    on con_saldo_vmoneda (cod_cia, cod_moneda, ano_fiscal, per_proceso,
                          nvl(substr(ccosto,2,1),'0')||substr(ccosto,1,1));
create index con_saldo_vmoneda_ccidx
    on con_saldo_vmoneda (cod_cia, cod_moneda, ano_fiscal, per_proceso,
                          substr(calcgen.TransCc(Ccosto), 1, 7));

create index con_saldo_vmoneda_ccidx
    on con_saldo_vmoneda (cod_cia, cod_moneda, ano_fiscal, per_proceso,
                          Ccostox(Ccosto));

ANALYZE TABLE con_saldo_vmoneda 
   COMPUTE STATISTICS;

ANALYZE INDEX con_saldo_vmoneda_ccidx
   COMPUTE STATISTICS;

create or replace function Ccostox(Vcc in varchar2) return Varchar2 deterministic is
begin
   -- Suponemos el formato 9-9 (almacen carazo)
   -- Para otro formato habria que recodificar la rutina
   return nvl(substr(Vcc,2,1),'0')||substr(Vcc,1,1);
end;
