create table fco_integrada_cab_jcl as select * from fco_integrada_cab;
drop table fco_integrada_cab;
-- Create table
create table ADAM.FCO_INTEGRADA_CAB
(
  COMPANIA           CHAR(4) not null,
  ANIO               NUMBER not null,
  MES                INTEGER not null,
  SUCURSAL           VARCHAR2(10) not null,
  TIPO_PLANILLA      CHAR(1) not null,
  SECUENCIA          INTEGER not null,
  RAZON_SOCIAL       VARCHAR2(200) not null,
  TIPO_DOCUMENTO     CHAR(2) not null,
  NRO_ID             VARCHAR2(16) not null,
  DV                 CHAR(1) not null,
  FORMA_PRESENTACION CHAR(1) not null,
  NOMBRE_SUCURSAL    VARCHAR2(40) not null,
  NUEVA_ARP          VARCHAR2(6) not null,
  PERIODO            CHAR(6) not null,
  PERIODO_SALUD      CHAR(6) not null,
  NRO_RADICACION     VARCHAR2(10) not null,
  FECHA_PAGO         DATE not null,
  NRO_EMPLEADOS      INTEGER not null,
  VALOR_NOMINA       NUMBER(12) not null,
  OPERADOR           CHAR(2) not null,
  SIT_PERIODO        INTEGER default 1 not null,
  NRO_PLANILLA       CHAR(10) null,
  FECHA_PAGO_REAL    DATE null
)
tablespace TS_ADAMDATOS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
-- Create/Recreate primary, unique and foreign key constraints 
alter table ADAM.FCO_INTEGRADA_CAB
  add constraint PK_FCO_INTEGRADA_CAB primary key (COMPANIA, ANIO, MES, SUCURSAL, TIPO_PLANILLA)
  using index 
  tablespace TS_ADAMINDICES
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );

GRANT ALL ON FCO_INTEGRADA_CAB TO ADAMA;

insert into fco_integrada_cab
(COMPANIA,ANIO,MES,SUCURSAL,TIPO_PLANILLA, SECUENCIA,RAZON_SOCIAL,TIPO_DOCUMENTO,NRO_ID,
DV,FORMA_PRESENTACION,NOMBRE_SUCURSAL,NUEVA_ARP,PERIODO,PERIODO_SALUD,
NRO_RADICACION,FECHA_PAGO,NRO_EMPLEADOS,VALOR_NOMINA,OPERADOR,SIT_PERIODO)
SELECT COMPANIA,ANIO,MES,SUCURSAL,'E',SECUENCIA,RAZON_SOCIAL,TIPO_DOCUMENTO,NRO_ID,
DV,FORMA_PRESENTACION,NOMBRE_SUCURSAL,NUEVA_ARP,PERIODO,PERIODO_SALUD,
NRO_RADICACION,FECHA_PAGO,NRO_EMPLEADOS,VALOR_NOMINA,OPERADOR,SIT_PERIODO
FROM fco_integrada_cab_jcl;
commit;

drop table fco_integrada_cab_jcl;

Create Or Replace Procedure sp_fco_upd_integrada_cab
(
    pch_compania char,
    psi_anio number,
    pti_mes number,
    pvc_sucursal varchar2,
    pch_tipo_planilla char,
    pch_nro_planilla char,
    pdt_fecha_pago date
)
As
Begin
    Update fco_integrada_cab
    Set nro_planilla = pch_nro_planilla,
        fecha_pago_real = pdt_fecha_pago
    Where compania = pch_compania
      And anio = psi_anio
      And mes = pti_mes
      And sucursal = Nvl(pvc_sucursal, ' ')
      And tipo_planilla = pch_tipo_planilla;

    Commit;
End;
/
Create Public Synonym sp_fco_upd_integrada_cab For ADAM.sp_fco_upd_integrada_cab;
Grant Execute On sp_fco_upd_integrada_cab To ADAMA;

-- ************************************************************************************************ --
-- Operación FCO2098 Asignación de Números de Planilla
-- ************************************************************************************************ --
DELETE rel_oper_menus WHERE ejecuta_operacion = 'FCO2098';
DELETE rel_oper_modulos WHERE operacion = 'FCO2098';
DELETE operaciones WHERE operacion = 'FCO2098';
DELETE aut_operaciones WHERE operacion = 'FCO2098';

INSERT INTO operaciones (operacion, descripcion_ope, icono, tipo_operacion)  
VALUES ('FCO2098', 'Asignación de Números de Planilla', 2, 1);

INSERT INTO rel_oper_menus (modulo, menu, secuencia, tipo_llamada, ejecuta_menu, ejecuta_operacion) 
SELECT 'F1', 20, Nvl(max(secuencia),0) + 1, 2, null, 'FCO2098' from rel_oper_menus WHERE modulo='F1' and menu = 20;

INSERT INTO rel_oper_modulos (operacion, modulo)  VALUES ('FCO2098','F1');

INSERT INTO aut_operaciones (usuario, operacion, nivel_seguridad) VALUES ('ADAM','FCO2098',4);
INSERT INTO aut_operaciones (usuario, operacion, nivel_seguridad)
SELECT usuario, 'FCO2098', nivel_seguridad FROM aut_operaciones  WHERE usuario <> 'ADAM' AND operacion = 'FCO2095';


ALTER TABLE fco_procesos_pi ADD tipo_planilla char(1);
ALTER TABLE fco_procesos_pi DROP CONSTRAINT pk_fco_procesos_pi;
ALTER TABLE fco_procesos_pi ADD CONSTRAINT pk_fco_procesos_pi PRIMARY KEY (compania, anio, mes, sucursal, tipo_planilla);
CREATE OR REPLACE PROCEDURE ADAM.sp_fco_ins_procesos_pi(pch_compania char,
                                                        psi_anio     number,
                                                        pti_mes      number,
                                                        pch_sucursal char, /* '0'. Todas, ''. Consolidado */
                                                        pch_tipo_planilla char) is
  /*************************************************************************/
  -- Modulo Fiscal Colombiano 2.0 ADAM V3
  -- Descripcion: Alta de Procesos de Planilla Integrada
  -- Autor: Juan Carlos Leguizamon
  -- Fecha: Julio 2005
  -- Revisiones:
  /*************************************************************************/
  dummy number(1) := 0;
BEGIN
  IF pch_sucursal = '0' THEN
    INSERT INTO fco_procesos_pi
      (compania, anio, mes, sucursal, procesar, tipo_planilla)
      SELECT pch_compania, psi_anio, pti_mes, s.sucursal, 0, pch_tipo_planilla
        FROM vw_fco_sucursales s
       WHERE compania = pch_compania
         AND nvl(s.autoliquida, 1) = 1
         AND NOT EXISTS (SELECT 1
                FROM fco_procesos_pi x
               WHERE x.compania = pch_compania
                 AND x.anio = psi_anio
                 AND x.mes = pti_mes
                 AND x.sucursal = s.sucursal);
  ELSE
    begin
      select 1
        into dummy
        from fco_procesos_pi
       where compania = pch_compania
         AND anio = psi_anio
         AND mes = pti_mes
         AND nvl(sucursal, ' ') = nvl(pch_sucursal, ' ');
    exception
      when no_data_found then
        INSERT INTO fco_procesos_pi
          (compania, anio, mes, sucursal, procesar, tipo_planilla)
        VALUES
          (pch_compania, psi_anio, pti_mes, nvl(pch_sucursal, ' '), 0, pch_tipo_planilla);
        return;
    end;

    Raise_application_error(-20002,
                            'El registro a insertar en [fco_procesos_pi] ya existe');

  END IF;
END sp_fco_ins_procesos_pi;
/

CREATE OR REPLACE VIEW adam.vw_fco_procesos_pi
AS
SELECT a.compania,
       a.anio,
       a.mes,
       a.sucursal,
       decode(nvl(suc.descripcion, 'x'), 'x', '(Consolidado)', rtrim(a.sucursal) || '-' || rtrim(suc.descripcion)) suc_des,
       procesar,
       NVL((select MAX(x.sit_periodo)
             from fco_integrada_cab x
            where x.compania = a.compania
              AND x.anio = a.anio
              AND x.mes = a.mes),
           1) sit_periodo, a.tipo_planilla
  FROM fco_procesos_pi a, vw_fco_sucursales suc
 WHERE suc.compania(+) = a.compania
   AND suc.sucursal(+) = a.sucursal
   AND ((a.sucursal = ' ') OR
        (a.sucursal IN
        (SELECT sucursal
            FROM vw_fco_sucursales_cia
           WHERE ((clase_nomina = '--') OR
                 (clase_nomina IN (SELECT clase_nomina
                                      FROM rel_usu_clase_nom
                                     WHERE usuario = USER))))));

create or replace procedure adam.sp_fco_del_procesos_pi(pch_compania in char,
                                                        psi_anio     in number,
                                                        pti_mes      in number,
                                                        pch_sucursal in char,
                                                        pch_tipo_planilla in char) is
  dummy number(1) := 0;
begin
  begin
    select 1
      into dummy
      from fco_procesos_pi
     where compania = pch_compania
       AND anio = psi_anio
       AND mes = pti_mes
       AND nvl(trim(sucursal), ' ') = nvl(pch_sucursal, ' ')
       AND tipo_planilla = pch_tipo_planilla;
  exception
    when no_data_found then
      Raise_application_error(-20001, 'El registro a eliminar no existe');
      return;
  end;

  delete fco_procesos_pi
   where compania = pch_compania
     and anio = psi_anio
     and mes = pti_mes
     and nvl(trim(sucursal), ' ') = nvl(pch_sucursal, ' ')
     and tipo_planilla = pch_tipo_planilla;
end sp_fco_del_procesos_pi;
/

CREATE OR REPLACE PROCEDURE adam.sp_fco_upd_procesos_pi(pch_compania char,
                                                        psi_anio     number,
                                                        pti_mes      number,
                                                        pch_sucursal char,
                                                        pbi_procesar number,
                                                        pch_tipo_planilla char) is
  /*************************************************************************/
  -- Modulo Fiscal Colombiano 2.0 ADAM V3
  -- Descripcion: Cambio de Procesos de Planilla Integrada
  -- Autor: Juan Carlos Leguizamon
  -- Fecha: Junio 2005
  -- Revisiones:
  /*************************************************************************/
  dummy number(1) := 0;
BEGIN
  begin
    select 1
      into dummy
      from fco_procesos_pi
     where compania = pch_compania
       AND anio = psi_anio
       AND mes = pti_mes
       AND (sucursal = pch_sucursal or pch_sucursal is null)
       AND tipo_planilla = pch_tipo_planilla;
  exception
    when no_data_found then
      Raise_application_error(-20003, 'El registro a modificar no existe');
      return;
  end;

  UPDATE fco_procesos_pi
     SET procesar = pbi_procesar
   WHERE compania = pch_compania
     AND anio = psi_anio
     AND mes = pti_mes
     AND (sucursal = pch_sucursal or pch_sucursal is null)
     AND tipo_planilla = pch_tipo_planilla;
END sp_fco_upd_procesos_pi;
/

CREATE TABLE fco_integrada_det_jcl AS Select * From fco_integrada_det;
DROP TABLE FCO_INTEGRADA_DET;
-- Create table
create table ADAM.FCO_INTEGRADA_DET
(
  COMPANIA                CHAR(4) not null,
  ANIO                    NUMBER not null,
  MES                     NUMBER not null,
  SUCURSAL                VARCHAR2(10) not null,
  TIPO_PLANILLA           CHAR(1) not null,
  TRABAJADOR              CHAR(10) not null,
  CONSECUTIVO             NUMBER(1) not null,
  SECUENCIA               CHAR(5) not null,
  TIPO_DOCUMENTO          CHAR(2) not null,
  NRO_ID                  VARCHAR2(16) not null,
  DIGITO_CHEQUEO          CHAR(1) not null,
  TIPO_COTIZANTE          NUMBER not null,
  SUBTIPO_COTIZANTE       NUMBER not null,
  EXTRANJERO_NO_PENSION   CHAR(1) not null,
  RESIDENTE_EN_EXTERIOR   CHAR(1) not null,
  DEPARTAMENTO            CHAR(2) not null,
  MUNICIPIO               CHAR(3) not null,
  PRIMER_APELLIDO         VARCHAR2(20) not null,
  SEGUNDO_APELLIDO        VARCHAR2(30) not null,
  PRIMER_NOMBRE           VARCHAR2(20) not null,
  SEGUNDO_NOMBRE          VARCHAR2(30) not null,
  NOV_ING                 CHAR(1) not null,
  NOV_RET                 CHAR(1) not null,
  NOV_TDE                 CHAR(1) not null,
  NOV_TAE                 CHAR(1) not null,
  NOV_TDP                 CHAR(1) not null,
  NOV_TAP                 CHAR(1) not null,
  NOV_VSP                 CHAR(1) not null,
  NOV_VTE                 CHAR(1) not null,
  NOV_VST                 CHAR(1) not null,
  NOV_SLN                 CHAR(1) not null,
  NOV_IGE                 CHAR(1) not null,
  NOV_LMA                 CHAR(1) not null,
  NOV_VAC                 CHAR(1) not null,
  NOV_AVP                 CHAR(1) not null,
  NOV_VCT                 CHAR(1) not null,
  NOV_IRP                 CHAR(2) not null,
  COD_AFP                 CHAR(10) not null,
  COD_AFP_TRAS            CHAR(10) not null,
  COD_EPS                 CHAR(10) not null,
  COD_EPS_TRAS            CHAR(10) not null,
  COD_CCF                 CHAR(10) not null,
  DIAS_AFP                NUMBER not null,
  DIAS_EPS                NUMBER not null,
  DIAS_ARP                NUMBER not null,
  DIAS_CCF                NUMBER not null,
  SALARIO                 NUMBER(9) not null,
  INTEGRAL                CHAR(1) not null,
  IBC_AFP                 NUMBER(9) not null,
  IBC_EPS                 NUMBER(9) not null,
  IBC_ARP                 NUMBER(9) not null,
  IBC_CCF                 NUMBER(9) not null,
  TARIFA_AFP              NUMBER(6,5) not null,
  APORTE_AFP              NUMBER(9) not null,
  VOLUNTARIO_AFP          NUMBER(9) not null,
  VOLUNTARIO_AFP_CIA      NUMBER(9) not null,
  APORTE_TOTAL_AFP        NUMBER,
  APORTE_FSP              NUMBER(9) not null,
  APORTE_FSP_SUBSISTENCIA NUMBER(9) not null,
  VALOR_NO_RETENIDO       NUMBER(9) not null,
  TARIFA_EPS              NUMBER(6,5) not null,
  APORTE_EPS              NUMBER(9) not null,
  UPC_ADICIONAL           NUMBER(9) not null,
  NRO_AUT_IGE             VARCHAR2(15) not null,
  VLR_AUT_IGE             NUMBER(9) not null,
  NRO_AUT_LMA             VARCHAR2(15) not null,
  VLR_AUT_LMA             NUMBER(9) not null,
  TARIFA_ARP              NUMBER(9,8) not null,
  CENTRO_TRABAJO          NUMBER(9) not null,
  APORTE_ARP              NUMBER(9) not null,
  TARIFA_CCF              NUMBER(6,5) not null,
  APORTE_CCF              NUMBER(9) not null,
  TARIFA_SENA             NUMBER(6,5) not null,
  APORTE_SENA             NUMBER(9) not null,
  TARIFA_ICBF             NUMBER(6,5) not null,
  APORTE_ICBF             NUMBER(9) not null,
  TARIFA_ESAP             NUMBER(6,5) not null,
  APORTE_ESAP             NUMBER(9) not null,
  TARIFA_MEDU             NUMBER(6,5) not null,
  APORTE_MEDU             NUMBER(9) not null,
  ORIGEN                  NUMBER not null,
  ELIMINADA               NUMBER(1) default 0 not null
)
tablespace TS_ADAMDATOS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
-- Create/Recreate primary, unique and foreign key constraints 
alter table ADAM.FCO_INTEGRADA_DET
  add constraint PK_FCO_INTEGRADA_DET primary key (COMPANIA, ANIO, MES, SUCURSAL, TIPO_PLANILLA, TRABAJADOR, CONSECUTIVO)
  using index 
  tablespace TS_ADAMINDICES
  pctfree 10
  initrans 2
  maxtrans 255
  storage
  (
    initial 64K
    minextents 1
    maxextents unlimited
  );
-- Create/Recreate check constraints 
alter table ADAM.FCO_INTEGRADA_DET
  add constraint CHK1
  check (origen in (1, 2, 3));
GRANT ALL ON FCO_INTEGRADA_DET TO ADAMA;

INSERT INTO FCO_INTEGRADA_DET 
(compania, anio, mes, sucursal, trabajador, secuencia, tipo_documento, nro_id, digito_chequeo, tipo_cotizante, subtipo_cotizante, 
extranjero_no_pension, residente_en_exterior, departamento, municipio, primer_apellido, segundo_apellido, primer_nombre, segundo_nombre, 
nov_ING, nov_RET, nov_TDE, nov_TAE, nov_TDP, nov_TAP, nov_VSP, nov_VTE, nov_VST, nov_SLN, nov_IGE, nov_LMA, nov_VAC, nov_AVP, nov_VCT, 
nov_IRP, cod_AFP, cod_AFP_Tras, cod_EPS, cod_EPS_Tras, cod_CCF, dias_AFP, dias_EPS, dias_ARP, dias_CCF, salario, integral, IBC_AFP, 
IBC_EPS, IBC_ARP, IBC_CCF, tarifa_AFP, aporte_AFP, voluntario_AFP, voluntario_AFP_cia, aporte_total_AFP, aporte_FSP, aporte_FSP_subsistencia, 
valor_no_retenido, tarifa_EPS, aporte_EPS, UPC_adicional, nro_aut_IGE, vlr_aut_IGE, nro_aut_LMA, vlr_aut_LMA, tarifa_ARP, centro_trabajo, 
aporte_ARP, tarifa_CCF, aporte_CCF, tarifa_SENA, aporte_SENA, tarifa_ICBF, aporte_ICBF, tarifa_ESAP, aporte_ESAP, tarifa_MEdu, aporte_MEdu, 
origen, eliminada, tipo_planilla, consecutivo)
SELECT 
compania, anio, mes, sucursal, trabajador, secuencia, tipo_documento, nro_id, digito_chequeo, tipo_cotizante, subtipo_cotizante, 
extranjero_no_pension, residente_en_exterior, departamento, municipio, primer_apellido, segundo_apellido, primer_nombre, segundo_nombre, 
nov_ING, nov_RET, nov_TDE, nov_TAE, nov_TDP, nov_TAP, nov_VSP, nov_VTE, nov_VST, nov_SLN, nov_IGE, nov_LMA, nov_VAC, nov_AVP, nov_VCT, 
nov_IRP, cod_AFP, cod_AFP_Tras, cod_EPS, cod_EPS_Tras, cod_CCF, dias_AFP, dias_EPS, dias_ARP, dias_CCF, salario, integral, IBC_AFP, 
IBC_EPS, IBC_ARP, IBC_CCF, tarifa_AFP, aporte_AFP, voluntario_AFP, voluntario_AFP_cia, aporte_total_AFP, aporte_FSP, aporte_FSP_subsistencia, 
valor_no_retenido, tarifa_EPS, aporte_EPS, UPC_adicional, nro_aut_IGE, vlr_aut_IGE, nro_aut_LMA, vlr_aut_LMA, tarifa_ARP, centro_trabajo, 
aporte_ARP, tarifa_CCF, aporte_CCF, tarifa_SENA, aporte_SENA, tarifa_ICBF, aporte_ICBF, tarifa_ESAP, aporte_ESAP, tarifa_MEdu, aporte_MEdu, 
origen, eliminada, 'E', 1
FROM fco_integrada_det_jcl;
commit;
DROP TABLE fco_integrada_det_jcl;

CREATE OR REPLACE VIEW VW_FCO_INTEGRADA_RT02 AS
SELECT compania,
       anio,
       mes,
       sucursal,
       tipo_planilla,
       trabajador,
       secuencia,
       '02' || secuencia || tipo_documento || RPad(nro_id, 16, ' ') ||
       ltrim(to_char(tipo_cotizante, '00')) ||
       ltrim(to_char(subtipo_cotizante, '00')) ||
       extranjero_no_pension || residente_en_exterior || departamento ||
       municipio ||
       RPad(fn_fco_valida_nombre(primer_apellido) || ' ', 20, ' ') ||
       RPad(fn_fco_valida_nombre(segundo_apellido) || ' ', 30, ' ') ||
       RPad(fn_fco_valida_nombre(primer_nombre) || ' ', 20, ' ') ||
       RPad(fn_fco_valida_nombre(segundo_nombre) || ' ', 30, ' ') ||
       nov_ING || nov_RET || nov_TDE || nov_TAE || nov_TDP || nov_TAP || nov_VSP || nov_VTE ||
       nov_VST || nov_SLN || nov_IGE || nov_LMA || nov_VAC || nov_AVP || nov_VCT || nov_IRP ||
       RPad(fn_fco_cod_super('AFP', cod_AFP), 6, ' ') ||
       RPad(fn_fco_cod_super('AFP', cod_AFP_Tras), 6, ' ') ||
       RPad(fn_fco_cod_super('EPS', cod_EPS), 6, ' ') ||
       Rpad(fn_fco_cod_super('CCF', cod_EPS_Tras), 6, ' ') ||
       RPad(fn_fco_cod_super('CCF', cod_CCF), 6, ' ') ||
       rtrim(ltrim(to_char(dias_AFP, '00'))) ||
       rtrim(ltrim(to_char(dias_EPS, '00'))) ||
       rtrim(ltrim(to_char(dias_ARP, '00'))) ||
       rtrim(ltrim(to_char(dias_CCF, '00'))) ||
       rtrim(ltrim(to_char(salario, '000000000'))) || integral ||
       rtrim(ltrim(to_char(IBC_AFP, '000000000'))) ||
       rtrim(ltrim(to_char(IBC_EPS, '000000000'))) ||
       rtrim(ltrim(to_char(IBC_ARP, '000000000'))) ||
       rtrim(ltrim(to_char(IBC_CCF, '000000000'))) ||
       rtrim(ltrim(to_char(tarifa_AFP, '0.00000'))) ||
       rtrim(ltrim(to_char(aporte_AFP, '000000000'))) ||
       rtrim(ltrim(to_char(voluntario_AFP, '000000000'))) ||
       rtrim(ltrim(to_char(voluntario_AFP_cia, '000000000'))) ||
       rtrim(ltrim(to_char(aporte_total_AFP, '000000000'))) ||
       rtrim(ltrim(to_char(aporte_FSP, '000000000'))) ||
       rtrim(ltrim(to_char(aporte_FSP_subsistencia, '000000000'))) ||
       rtrim(ltrim(to_char(valor_no_retenido, '000000000'))) ||
       rtrim(ltrim(to_char(tarifa_EPS, '0.00000'))) ||
       rtrim(ltrim(to_char(aporte_EPS, '000000000'))) ||
       rtrim(ltrim(to_char(UPC_adicional, '000000000'))) ||
       RPad(nro_aut_IGE, 15, ' ') ||
       rtrim(ltrim(to_char(vlr_aut_IGE, '000000000'))) ||
       Rpad(nro_aut_LMA, 15, ' ') ||
       rtrim(ltrim(to_char(vlr_aut_LMA, '000000000'))) ||
       rtrim(ltrim(to_char(tarifa_ARP, '0.0000000'))) ||
       rtrim(ltrim(to_char(centro_trabajo, '000000000'))) ||
       rtrim(ltrim(to_char(aporte_ARP, '000000000'))) ||
       rtrim(ltrim(to_char(tarifa_CCF, '0.00000'))) ||
       rtrim(ltrim(to_char(aporte_CCF, '000000000'))) ||
       rtrim(ltrim(to_char(tarifa_SENA, '0.00000'))) ||
       rtrim(ltrim(to_char(aporte_SENA, '000000000'))) ||
       rtrim(ltrim(to_char(tarifa_ICBF, '0.00000'))) ||
       rtrim(ltrim(to_char(aporte_ICBF, '000000000'))) ||
       rtrim(ltrim(to_char(tarifa_ESAP, '0.00000'))) ||
       rtrim(ltrim(to_char(aporte_ESAP, '000000000'))) ||
       rtrim(ltrim(to_char(tarifa_MEdu, '0.00000'))) ||
       rtrim(ltrim(to_char(aporte_MEdu, '000000000'))) registro2
  FROM fco_integrada_det
 WHERE eliminada = 0
   AND aporte_EPS + aporte_AFP + aporte_CCF + aporte_ARP <> 0;


CREATE TABLE fco_integrada_rt03_jcl AS SELECT * FROM FCO_INTEGRADA_RT03;
DROP TABLE FCO_INTEGRADA_RT03;
-- Create table
create table adam.FCO_INTEGRADA_RT03
(
  COMPANIA             CHAR(4) not null,
  ANIO                 NUMBER not null,
  MES                  NUMBER not null,
  SUCURSAL             VARCHAR2(10) not null,
  TIPO_PLANILLA        CHAR(1) not null,
  COD_AFP              CHAR(10) not null,
  SECUENCIA            NUMBER not null,
  NIT                  VARCHAR2(16) not null,
  DV                   CHAR(1) not null,
  SUMA_APORTES         NUMBER(10) not null,
  SUMA_VOLUNTARIOS     NUMBER(10) not null,
  SUMA_VOLUNTARIOS_CIA NUMBER(10) not null,
  SUMA_FSP_SOL         NUMBER(10) not null,
  SUMA_FSP_SUB         NUMBER(10) not null,
  DIAS_MORA            NUMBER not null,
  INT_MORA_APORTES     NUMBER(10) not null,
  INT_MORA_FSP_SOL     NUMBER(10) not null,
  INT_MORA_FSP_SUB     NUMBER(10) not null,
  TOTAL_PAGAR          NUMBER,
  TOTAL_AFILIADOS      NUMBER(6) not null
)
tablespace TS_ADAMDATOS
;
-- Create/Recreate primary, unique and foreign key constraints 
alter table adam.FCO_INTEGRADA_RT03
  add constraint PK_FCO_INTEGRADA_RT03 primary key (COMPANIA,ANIO,MES,SUCURSAL,TIPO_PLANILLA,COD_AFP)
  using index 
  tablespace TS_ADAMINDICES
;
GRANT ALL ON FCO_INTEGRADA_RT03 TO ADAMA;

INSERT INTO FCO_INTEGRADA_RT03 
(compania, anio, mes, sucursal, cod_AFP, secuencia, nit, dv, suma_aportes, suma_voluntarios, suma_voluntarios_cia, 
 suma_FSP_sol, suma_FSP_sub, dias_mora, int_mora_aportes, int_mora_FSP_sol, int_mora_FSP_sub, total_pagar, total_afiliados, tipo_planilla)
select compania, anio, mes, sucursal, cod_AFP, secuencia, nit, dv, suma_aportes, suma_voluntarios, suma_voluntarios_cia, 
SUMA_FSP, 0, dias_mora, int_mora_aportes, 0, 0, total_pagar, total_afiliados, 'E'
FROM FCO_INTEGRADA_RT03_JCL;

COMMIT;
DROP TABLE FCO_INTEGRADA_RT03_JCL;

CREATE OR REPLACE VIEW ADAM.VW_FCO_INTEGRADA_RT03 AS
SELECT compania,
       anio,
       mes,  
       sucursal,
       tipo_planilla,
       secuencia,
       '03' || ltrim(to_char(secuencia, '00000')) ||
       fn_fco_cod_super('AFP', cod_AFP) ||
       lpad(nit, 16, '0') || dv ||
       ltrim(to_char(suma_aportes, '0000000000')) ||
       ltrim(to_char(suma_voluntarios, '0000000000')) ||
       ltrim(to_char(suma_voluntarios_cia, '0000000000')) ||
       ltrim(to_char(suma_FSP_SOL, '0000000000')) ||
       ltrim(to_char(suma_FSP_SUB, '0000000000')) ||
       ltrim(to_char(dias_mora, '0000')) ||
       ltrim(to_char(int_mora_aportes, '0000000000')) ||
       ltrim(to_char(int_mora_FSP_SOL, '0000000000')) ||
       ltrim(to_char(int_mora_FSP_SUB, '0000000000')) ||
       ltrim(to_char(total_pagar, '0000000000')) ||
       ltrim(to_char(total_afiliados, '000000')) registro
  FROM fco_integrada_rt03
 WHERE 1 = 0;

CREATE TABLE FCO_INTEGRADA_RT04_JCL AS SELECT * FROM FCO_INTEGRADA_RT04;
DROP TABLE FCO_INTEGRADA_RT04;
-- Create table
create table adam.FCO_INTEGRADA_RT04
(
  COMPANIA            CHAR(4) not null,
  ANIO                NUMBER not null,
  MES                 NUMBER not null,
  SUCURSAL            VARCHAR2(10) not null,
  TIPO_PLANILLA       CHAR(1) not null,
  COD_EPS             CHAR(10) not null,
  SECUENCIA           NUMBER not null,
  NIT                 varchar2(16) not null,
  DV                  CHAR(1) not null,
  SUMA_APORTES        NUMBER(10) not null,
  SUMA_UPC            NUMBER(10) not null,
  NRO_AUT_IGE         VARCHAR2(15) not null,
  SUMA_AUT_IGE        NUMBER(10) not null,
  NRO_AUT_LMA         VARCHAR2(15) not null,
  SUMA_AUT_LMA        NUMBER(10) not null,
  NETO_APORTES        NUMBER,
  DIAS_MORA           NUMBER not null,
  INT_MORA_APORTES    NUMBER(10) not null,
  INT_MORA_UPC        NUMBER(10) not null,
  SUBTOTAL_APORTES    NUMBER,
  SUBTOTAL_UPC        NUMBER,
  NRO_RADICACION      VARCHAR2(10) not null,
  SALDO_FAVOR_APORTES NUMBER(10) not null,
  SALDO_FAVOR_UPC     NUMBER(10) not null,
  TOTAL_APORTES       NUMBER,
  TOTAL_UPC           NUMBER,
  TOTAL_PAGAR         NUMBER,
  FOSYGA              NUMBER(10) not null,
  TOTAL_AFILIADOS     NUMBER(6) not null,
  ORIGEN              NUMBER(1) null
)
tablespace TS_ADAMDATOS
;
-- Create/Recreate primary, unique and foreign key constraints 
alter table adam.FCO_INTEGRADA_RT04
  add constraint PK_FCO_INTEGRADA_RT04 primary key (COMPANIA,ANIO,MES,SUCURSAL,TIPO_PLANILLA,COD_EPS)
  using index 
  tablespace TS_ADAMINDICES
;
GRANT ALL ON FCO_INTEGRADA_RT04 TO ADAMA;
INSERT INTO FCO_INTEGRADA_RT04 
(compania, anio, mes, sucursal, cod_EPS, secuencia, nit, dv, suma_aportes, suma_UPC, nro_aut_IGE, suma_aut_IGE, 
nro_aut_LMA, suma_aut_LMA, neto_aportes, dias_mora, int_mora_aportes, int_mora_UPC, subtotal_aportes, subtotal_UPC, 
nro_radicacion, saldo_favor_aportes, saldo_favor_UPC, total_aportes, total_UPC, total_pagar, FOSYGA, total_afiliados, origen, tipo_planilla)
SELECT 
compania, anio, mes, sucursal, cod_EPS, secuencia, nit, dv, suma_aportes, suma_UPC, nro_aut_IGE, suma_aut_IGE, 
nro_aut_LMA, suma_aut_LMA, neto_aportes, dias_mora, int_mora_aportes, int_mora_UPC, subtotal_aportes, subtotal_UPC, 
nro_radicacion, saldo_favor_aportes, saldo_favor_UPC, total_aportes, total_UPC, total_pagar, FOSYGA, total_afiliados, 0, 'E'
FROM FCO_INTEGRADA_RT04_JCL;

COMMIT;
DROP TABLE FCO_INTEGRADA_RT04_JCL;

create or replace view vw_fco_integrada_rt04 as
select compania,
       anio,
       mes,
       sucursal,
       tipo_planilla,
       secuencia,
       '04' || ltrim(to_char(secuencia, '00000')) ||
       LPAD(fn_fco_cod_super('EPS', cod_EPS), 6, ' ') ||
       LPAD(nit, 16, '0') || dv ||
       ltrim(to_char(suma_aportes, '0000000000')) ||
       ltrim(to_char(suma_UPC, '0000000000')) ||
       lpad(nro_aut_IGE, 15, ' ') ||
       ltrim(to_char(suma_aut_IGE, '0000000000')) ||
       lpad(nro_aut_LMA, 15, ' ') ||
       ltrim(to_char(suma_aut_LMA, '0000000000')) ||
       ltrim(to_char(neto_aportes, '0000000000')) ||
       ltrim(to_char(dias_mora, '0000')) ||
       ltrim(to_char(int_mora_aportes, '0000000000')) ||
       ltrim(to_char(int_mora_UPC, '0000000000')) ||
       ltrim(to_char(subtotal_aportes, '0000000000')) ||
       ltrim(to_char(subtotal_UPC, '0000000000')) ||
       lpad(nro_radicacion, 10, '0') ||
       ltrim(to_char(saldo_favor_aportes, '0000000000')) ||
       ltrim(to_char(saldo_favor_UPC, '0000000000')) ||
       ltrim(to_char(total_aportes, '0000000000')) ||
       ltrim(to_char(total_UPC, '0000000000')) ||
       ltrim(to_char(total_pagar, '0000000000')) ||
       ltrim(to_char(FOSYGA, '0000000000')) ||
       ltrim(to_char(total_afiliados, '000000')) registro
  from fco_integrada_rt04;

CREATE TABLE fco_integrada_rt05_jcl AS SELECT * FROM fco_integrada_rt05;
DROP TABLE FCO_INTEGRADA_RT05;
-- Create table
create table adam.FCO_INTEGRADA_RT05
(
  COMPANIA         CHAR(4) not null,
  ANIO             NUMBER not null,
  MES              NUMBER not null,
  SUCURSAL         VARCHAR2(10) not null,
  TIPO_PLANILLA    CHAR(1) not null,
  COD_ARP          VARCHAR2(6) not null,
  SECUENCIA        NUMBER not null,
  NIT              VARCHAR2(16) not null,
  DV               CHAR(1) not null,
  SUMA_APORTES     NUMBER(10) not null,
  NRO_AUT          VARCHAR2(15) not null,
  INCAPACIDADES    NUMBER(10) not null,
  OTROS_RIESGOS    NUMBER(10) not null,
  NETO_APORTES     NUMBER,
  DIAS_MORA        NUMBER not null,
  INT_MORA         NUMBER(10) not null,
  SUBTOTAL_APORTES NUMBER,
  NRO_RADICACION   VARCHAR2(10) not null,
  SALDO_FAVOR      NUMBER(10) not null,
  TOTAL_PAGAR      NUMBER,
  FSRP             NUMBER(10) not null,
  TOTAL_AFILIADOS  NUMBER(6) not null,
  ORIGEN           NUMBER(1) null
)
tablespace TS_ADAMDATOS
;
-- Create/Recreate primary, unique and foreign key constraints 
alter table adam.FCO_INTEGRADA_RT05
  add constraint PK_FCO_INTEGRADA_RT05 primary key (COMPANIA,ANIO,MES,SUCURSAL,TIPO_PLANILLA,COD_ARP)
  using index 
  tablespace TS_ADAMINDICES
;
-- Grant/Revoke object privileges 
GRANT ALL ON FCO_INTEGRADA_RT05 TO ADAMA;

INSERT INTO FCO_INTEGRADA_RT05
(compania, anio, mes, sucursal, cod_ARP, secuencia, nit, dv, suma_aportes, nro_aut, incapacidades, otros_riesgos, neto_aportes, 
dias_mora, int_mora, subtotal_aportes, nro_radicacion, saldo_favor, total_pagar, FSRP, total_afiliados, origen, tipo_planilla)
SELECT compania, anio, mes, sucursal, cod_ARP, secuencia, nit, dv, suma_aportes, nro_aut, incapacidades, otros_riesgos, neto_aportes, 
dias_mora, int_mora, subtotal_aportes, nro_radicacion, saldo_favor, total_pagar, FSRP, total_afiliados, 0, 'E'
FROM FCO_INTEGRADA_RT05_JCL;
commit;
DROP TABLE FCO_INTEGRADA_RT05_JCL;

create or replace view vw_fco_integrada_rt05 as
select compania,
       anio,
       mes,
       sucursal,
       tipo_planilla,
       secuencia,
       '05' || ltrim(to_char(secuencia, '00000')) ||
       lpad(cod_ARP, 6, ' ') || ltrim(to_char(nit, '0000000000000000')) || dv ||
       ltrim(to_char(suma_aportes, '0000000000')) ||
       lpad(nro_aut, 15, ' ') ||
       ltrim(to_char(incapacidades, '0000000000')) ||
       ltrim(to_char(otros_riesgos, '0000000000')) ||
       ltrim(to_char(nvl(neto_aportes, 0), '0000000000')) ||
       ltrim(to_char(dias_mora, '0000')) ||
       ltrim(to_char(int_mora, '0000000000')) ||
       ltrim(to_char(nvl(subtotal_aportes, 0), '0000000000')) ||
       '0'||rtrim(lpad(nro_radicacion, 10, '0')) ||
       ltrim(to_char(saldo_favor, '0000000000')) ||
       ltrim(to_char(nvl(total_pagar, 0), '0000000000')) ||
       ltrim(to_char(FSRP, '0000000000')) ||
       ltrim(to_char(total_afiliados, '000000')) registro
  from fco_integrada_rt05;

CREATE TABLE FCO_INTEGRADA_RT06_JCL AS SELECT * FROM FCO_INTEGRADA_RT06;
DROP TABLE FCO_INTEGRADA_RT06;
-- Create table
create table adam.FCO_INTEGRADA_RT06
(
  COMPANIA        CHAR(4) not null,
  ANIO            NUMBER not null,
  MES             NUMBER not null,
  SUCURSAL        VARCHAR2(10) not null,
  TIPO_PLANILLA   CHAR(1) not null,
  COD_CCF         CHAR(10) not null, -- corregido jcl jul-03-07
  SECUENCIA       NUMBER not null,
  NIT             VARCHAR2(16) not null,
  DV              CHAR(1) not null,
  SUMA_APORTES    NUMBER(10) not null,
  DIAS_MORA       NUMBER not null,
  INT_MORA        NUMBER(10) not null,
  TOTAL_PAGAR     NUMBER,
  TOTAL_AFILIADOS NUMBER(6) not null
)
tablespace TS_ADAMDATOS
;
-- Create/Recreate primary, unique and foreign key constraints 
alter table adam.FCO_INTEGRADA_RT06
  add constraint PK_FCO_INTEGRADA_RT06 primary key (COMPANIA,ANIO,MES,SUCURSAL,TIPO_PLANILLA,COD_CCF)
  using index 
  tablespace TS_ADAMINDICES
;
-- Grant/Revoke object privileges 
GRANT ALL ON FCO_INTEGRADA_RT06 TO ADAMA;

INSERT INTO FCO_INTEGRADA_RT06 
(compania, anio, mes, sucursal, cod_CCF, secuencia, nit, dv, suma_aportes, dias_mora, int_mora, total_pagar, total_afiliados, tipo_planilla)
select
compania, anio, mes, sucursal, cod_CCF, secuencia, nit, dv, suma_aportes, dias_mora, int_mora, total_pagar, total_afiliados, 'E'
from FCO_INTEGRADA_RT06_JCL;
COMMIT;
DROP TABLE FCO_INTEGRADA_RT06_JCL;
CREATE OR REPLACE VIEW adam.vw_fco_integrada_rt06
AS
/*************************************************************************/
-- Modulo Fiscal Colombiano 2.0 ADAM V3
-- Descripcion: Archivo Plano Planilla Integrada Registro Tipo 6
-- Autor: Juan Carlos Leguizamon
-- Fecha: Diciembre 2005
-- Revisiones:
/*************************************************************************/
SELECT compania,
       anio,
       mes,
       sucursal,
       tipo_planilla,
       secuencia,
       '06' || to_char(secuencia, '00000') ||
       fn_fco_cod_super('CCF', cod_CCF) ||
       to_char(nit, '0000000000000000') || dv ||
       to_char(suma_aportes, '0000000000') ||
       to_char(dias_mora, '0000') ||
       to_char(int_mora, '0000000000') ||
       to_char(total_pagar, '0000000000') ||
       to_char(total_afiliados, '000000') registro
  FROM fco_integrada_rt06
 WHERE 1 = 0;

CREATE TABLE FCO_INTEGRADA_RT07_JCL AS SELECT * FROM FCO_INTEGRADA_RT07;
DROP TABLE FCO_INTEGRADA_RT07;
-- Create table
create table adam.FCO_INTEGRADA_RT07
(
  COMPANIA      CHAR(4) not null,
  ANIO          NUMBER not null,
  MES           NUMBER not null,
  SUCURSAL      VARCHAR2(10) not null,
  TIPO_PLANILLA CHAR(1) not null,
  SECUENCIA     NUMBER not null,
  NIT           VARCHAR2(16) not null,
  DV            CHAR(1) not null,
  VALOR         NUMBER(10) not null,
  DIAS_MORA     NUMBER not null,
  INT_MORA      NUMBER(10) not null,
  TOTAL_PAGAR   NUMBER,
  NRO_PERSONAS  NUMBER(6) not null
)
tablespace TS_ADAMDATOS
;
-- Create/Recreate primary, unique and foreign key constraints 
alter table adam.FCO_INTEGRADA_RT07
  add constraint PK_FCO_INTEGRADA_RT07 primary key (COMPANIA,ANIO,MES,SUCURSAL,TIPO_PLANILLA)
  using index 
  tablespace TS_ADAMINDICES
;
-- Grant/Revoke object privileges 
GRANT ALL ON FCO_INTEGRADA_RT07 TO ADAMA;

INSERT INTO FCO_INTEGRADA_RT07 
(compania, anio, mes, sucursal, tipo_planilla, secuencia, nit, dv, valor, dias_mora, int_mora, total_pagar, nro_personas)
SELECT compania, anio, mes, sucursal, 'E', secuencia, nit, dv, valor, dias_mora, int_mora, total_pagar, nro_personas
FROM FCO_INTEGRADA_RT07_JCL;
COMMIT;

DROP TABLE FCO_INTEGRADA_RT07_JCL;

CREATE OR REPLACE VIEW VW_FCO_INTEGRADA_RT07 AS
SELECT compania,
       anio,
       mes,
       sucursal,
       tipo_planilla,
       secuencia,
       '07' || ltrim(to_char(secuencia, '00000')) ||
       ltrim(to_char(nit, '0000000000000000')) || dv ||
       ltrim(to_char(valor, '0000000000')) ||
       ltrim(to_char(dias_mora, '0000')) ||
       ltrim(to_char(int_mora, '0000000000')) ||
       ltrim(to_char(nvl(total_pagar, 0), '0000000000')) ||
       ltrim(to_char(nro_personas, '000000')) registro
  FROM fco_integrada_rt07
  WHERE 1= 0;

CREATE TABLE FCO_INTEGRADA_RT08_JCL AS SELECT * FROM FCO_INTEGRADA_RT08;
DROP TABLE FCO_INTEGRADA_RT08;
-- Create table
create table adam.FCO_INTEGRADA_RT08
(
  COMPANIA      CHAR(4) not null,
  ANIO          NUMBER not null,
  MES           NUMBER not null,
  SUCURSAL      VARCHAR2(10) not null,
  TIPO_PLANILLA CHAR(1) not null,
  SECUENCIA     NUMBER not null,
  NIT           VARCHAR2(16) not null,
  DV            CHAR(1) not null,
  VALOR         NUMBER(10) not null,
  DIAS_MORA     NUMBER not null,
  INT_MORA      NUMBER(10) not null,
  TOTAL_PAGAR   NUMBER,
  NRO_PERSONAS  NUMBER(6) not null
)
tablespace TS_ADAMDATOS
;
-- Create/Recreate primary, unique and foreign key constraints 
alter table adam.FCO_INTEGRADA_RT08
  add constraint PK_FCO_INTEGRADA_RT08 primary key (COMPANIA,ANIO,MES,SUCURSAL,TIPO_PLANILLA)
  using index 
  tablespace TS_ADAMINDICES
;
-- Grant/Revoke object privileges 
GRANT ALL ON FCO_INTEGRADA_RT08 TO ADAMA;

INSERT INTO FCO_INTEGRADA_RT08
(compania, anio, mes, sucursal, tipo_planilla, secuencia, nit, dv, valor, dias_mora, int_mora, total_pagar, nro_personas)
select compania, anio, mes, sucursal, 'E', secuencia, nit, dv, valor, dias_mora, int_mora, total_pagar, nro_personas
FROM FCO_INTEGRADA_RT08_JCL;
COMMIT;
DROP TABLE FCO_INTEGRADA_RT08_JCL;

CREATE OR REPLACE VIEW VW_FCO_INTEGRADA_RT08 AS
SELECT compania,
       anio,
       mes,
       sucursal,
       tipo_planilla,
       secuencia,
       '08' || ltrim(to_char(secuencia, '00000')) ||
       ltrim(to_char(nit, '0000000000000000')) || dv ||
       ltrim(to_char(valor, '0000000000')) ||
       ltrim(to_char(dias_mora, '0000')) ||
       ltrim(to_char(int_mora, '0000000000')) ||
       ltrim(to_char(nvl(total_pagar, 0), '0000000000')) ||
       ltrim(to_char(nro_personas, '000000')) registro
  FROM fco_integrada_rt08
WHERE 1= 0;

CREATE OR REPLACE VIEW VW_FCO_INTEGRADA_DET AS
SELECT a.compania,
       a.anio,
       a.mes,
       a.sucursal,
       a.trabajador,
       a.tipo_planilla,
       a.secuencia,
       a.tipo_documento,
       a.nro_id,
       a.digito_chequeo,
       a.tipo_cotizante,
       a.subtipo_cotizante,
       a.extranjero_no_pension,
       a.residente_en_exterior,
       a.departamento,
       a.municipio,
       a.primer_apellido,
       a.segundo_apellido,
       a.primer_nombre,
       a.segundo_nombre,
       a.nov_ING,
       a.nov_RET,
       a.nov_TDE,
       a.nov_TAE,
       a.nov_TDP,
       a.nov_TAP,
       a.nov_VSP,
       a.nov_VTE,
       a.nov_VST,
       a.nov_SLN,
       a.nov_IGE,
       a.nov_LMA,
       a.nov_VAC,
       a.nov_AVP,
       a.nov_VCT,
       a.nov_IRP,
       a.cod_AFP,
       a.cod_AFP_Tras,
       a.cod_EPS,
       a.cod_EPS_Tras,
       a.cod_CCF,
       a.dias_AFP,
       a.dias_EPS,
       a.dias_ARP,
       a.dias_CCF,
       a.salario,
       a.integral,
       a.IBC_AFP,
       a.IBC_EPS,
       a.IBC_ARP,
       a.IBC_CCF,
       a.tarifa_AFP,
       a.aporte_AFP,
       a.voluntario_AFP,
       a.voluntario_AFP_cia,
       a.aporte_total_AFP,
       a.aporte_FSP,
       a.aporte_FSP_subsistencia,
       a.valor_no_retenido,
       a.tarifa_EPS,
       a.aporte_EPS,
       a.UPC_adicional,
       a.nro_aut_IGE,
       a.vlr_aut_IGE,
       a.nro_aut_LMA,
       a.vlr_aut_LMA,
       a.tarifa_ARP,
       a.centro_trabajo,
       a.aporte_ARP,
       a.tarifa_CCF,
       a.aporte_CCF,
       a.tarifa_SENA,
       a.aporte_SENA,
       a.tarifa_ICBF,
       a.aporte_ICBF,
       a.tarifa_ESAP,
       a.aporte_ESAP,
       a.tarifa_MEdu,
       a.aporte_MEdu,
       a.origen,
       a.eliminada,
       NVL(b.descripcion, '') AS tipo_cotizante_des,
       LTRIM((SELECT eps.cod_super
               FROM fco_administradoras eps
              WHERE eps.tipo = 'EPS'
                AND eps.codigo = a.cod_EPS)) AS eps_cod_super,
       (SELECT eps.descripcion
          FROM vw_fco_administradoras eps
         WHERE eps.compania = a.compania
           AND eps.tipo = 'EPS'
           AND eps.codigo = a.cod_EPS) AS eps_nombre,
       LTRIM((SELECT afp.cod_super
               FROM fco_administradoras afp
              WHERE afp.tipo = 'AFP'
                AND afp.codigo = a.cod_AFP)) AS afp_cod_super,
       (SELECT afp.descripcion
          FROM vw_fco_administradoras afp
         WHERE afp.compania = a.compania
           AND afp.tipo = 'AFP'
           AND afp.codigo = a.cod_AFP) AS afp_nombre,
       LTRIM((SELECT ccf.cod_super
               FROM fco_administradoras ccf
              WHERE ccf.tipo = 'CCF'
                AND ccf.codigo = a.cod_CCF)) AS ccf_cod_super,
       (SELECT ccf.descripcion
          FROM vw_fco_administradoras ccf
         WHERE ccf.compania = a.compania
           AND ccf.tipo = 'CCF'
           AND ccf.codigo = a.cod_CCF) AS ccf_nombre,
       LTRIM((SELECT neps.cod_super
               FROM fco_administradoras neps
              WHERE neps.tipo = 'EPS'
                AND neps.codigo = a.cod_EPS_Tras)) AS neps_cod_super,
       (SELECT neps.descripcion
          FROM vw_fco_administradoras neps
         WHERE neps.compania = a.compania
           AND neps.tipo = 'EPS'
           AND neps.codigo = a.cod_EPS_Tras) AS neps_nombre,
       LTRIM((SELECT nafp.cod_super
               FROM fco_administradoras nafp
              WHERE nafp.tipo = 'AFP'
                AND nafp.codigo = a.cod_AFP_Tras)) AS nafp_cod_super,
       (SELECT nafp.descripcion
          FROM vw_fco_administradoras nafp
         WHERE nafp.compania = a.compania
           AND nafp.tipo = 'AFP'
           AND nafp.codigo = a.cod_AFP_Tras) AS nafp_nombre,
       (SELECT ctr.descripcion
          FROM fco_centros_trabajo ctr
         WHERE ctr.compania = a.compania
           AND ctr.codigo_reporte = a.centro_trabajo) AS ctr_nombre,
       (SELECT suc.descripcion FROM vw_fco_sucursales suc
        WHERE suc.compania = a.compania AND suc.sucursal = a.sucursal) AS suc_nombre
  FROM fco_integrada_det      a,
       criterios_valores_col  b
 WHERE b.campo = 'tipo_cotizante'
   AND b.item = a.tipo_cotizante
   AND aporte_EPS + aporte_AFP + aporte_CCF + aporte_ARP <> 0;

CREATE OR REPLACE VIEW vw_fco_integrada_res_sal
AS    
SELECT     
    a.compania, a.anio, a.mes, a.sucursal, a.tipo_planilla, a.cod_EPS,   
    SUM(a.IBC_EPS) AS IBC_EPS,   
    SUM(a.aporte_EPS) AS aporte_EPS,  
    SUM(a.UPC_adicional) AS UPC_adicional,   
    (SELECT ts.nro_aut_IGE FROM fco_integrada_rt04 ts WHERE ts.compania = a.compania AND ts.anio = a.anio AND ts.mes = a.mes AND ts.sucursal = a.sucursal AND ts.cod_EPS = a.cod_EPS) AS nro_aut_IGE,   
    nvl((SELECT ts.suma_aut_IGE FROM fco_integrada_rt04 ts WHERE ts.compania = a.compania AND ts.anio = a.anio AND ts.mes = a.mes AND ts.sucursal = a.sucursal AND ts.cod_EPS = a.cod_EPS),0) AS vlr_aut_IGE,   
    (SELECT ts.nro_aut_LMA FROM fco_integrada_rt04 ts WHERE ts.compania = a.compania AND ts.anio = a.anio AND ts.mes = a.mes AND ts.sucursal = a.sucursal AND ts.cod_EPS = a.cod_EPS) AS nro_aut_LMA,   
    nvl((SELECT ts.suma_aut_LMA FROM fco_integrada_rt04 ts WHERE ts.compania = a.compania AND ts.anio = a.anio AND ts.mes = a.mes AND ts.sucursal = a.sucursal AND ts.cod_EPS = a.cod_EPS),0) AS vlr_aut_LMA,      
    (SELECT eps.descripcion FROM vw_fco_administradoras eps     
     WHERE eps.compania = a.compania AND eps.tipo = 'EPS'     
       AND eps.codigo = a.cod_EPS) AS eps_nombre,    
    (SELECT suc.descripcion FROM vw_fco_sucursales suc WHERE suc.compania = a.compania AND suc.sucursal = a.sucursal) AS suc_nombre,
    COUNT(DISTINCT a.trabajador) AS afiliados
FROM fco_integrada_det a    
WHERE aporte_EPS + aporte_AFP + aporte_CCF + aporte_ARP <> 0    
GROUP BY a.compania, a.anio, a.mes, a.sucursal, a.tipo_planilla, a.cod_EPS;

CREATE OR REPLACE VIEW vw_fco_integrada_res_arp
AS    
SELECT     
    a.compania, a.anio, a.mes, a.sucursal, a.tipo_planilla,
    a.centro_trabajo,
    SUM(a.IBC_ARP) AS IBC_ARP,
    SUM(a.aporte_ARP) AS aporte_ARP,   
    (SELECT ta.nro_aut FROM fco_integrada_rt05 ta WHERE ta.compania = a.compania AND ta.anio = a.anio AND ta.mes = a.mes AND ta.sucursal = a.sucursal) AS nro_aut,   
    nvl((SELECT ta.incapacidades FROM fco_integrada_rt05 ta WHERE ta.compania = a.compania AND ta.anio = a.anio AND ta.mes = a.mes AND ta.sucursal = a.sucursal),0) AS vlr_aut,    
    (SELECT ctr.descripcion FROM vw_fco_centros_trabajo ctr WHERE ctr.compania = a.compania AND ctr.codigo_reporte = a.centro_trabajo) AS ctr_nombre,    
    (SELECT suc.descripcion FROM vw_fco_sucursales suc WHERE suc.compania = a.compania AND suc.sucursal = a.sucursal) AS suc_nombre,
    COUNT(DISTINCT a.trabajador) AS afiliados
FROM fco_integrada_det a    
WHERE aporte_EPS + aporte_AFP + aporte_CCF + aporte_ARP <> 0    
GROUP BY a.compania, a.anio, a.mes, a.sucursal, a.tipo_planilla, a.centro_trabajo;

CREATE OR REPLACE VIEW adam.vw_fco_tc_riesgos
AS
SELECT compania,
       anio,
       mes,
       sucursal,
       tipo_planilla,
       nro_aut,
       incapacidades,
       otros_riesgos,
       nro_radicacion,
       saldo_favor
  FROM fco_integrada_rt05;

CREATE OR REPLACE VIEW adam.vw_fco_tc_salud
AS
SELECT x.compania,
       x.anio,
       x.mes,
       x.sucursal,
       x.tipo_planilla,
       x.cod_EPS,
       a.descripcion nombre_EPS,
       x.nro_aut_IGE,
       x.suma_aut_IGE,
       x.nro_aut_LMA,
       x.suma_aut_LMA,
       x.nro_radicacion,
       x.saldo_favor_aportes,
       x.saldo_favor_UPC
  FROM fco_integrada_rt04 x, vw_fco_administradoras a
 WHERE x.compania = a.compania
   AND x.cod_EPS = a.codigo
   AND a.tipo = 'EPS';

create or replace procedure sp_fco_del_int_det
(
    pch_compania   char,
    psi_anio       number,
    pti_mes        number,
    pvc_sucursal   varchar2,
    pch_tipo_planilla char,
    pch_trabajador char    
) is
vsi_sec number(5);
begin

    select to_number(secuencia) into vsi_sec
    from fco_integrada_det
    where compania = pch_compania
    and anio = psi_anio
    and mes = pti_mes
    and (sucursal = pvc_sucursal or pvc_sucursal is null or pvc_sucursal = ' ')
    and tipo_planilla = pch_tipo_planilla
    and trabajador = pch_trabajador;

    delete fco_integrada_det
    where compania = pch_compania
    and anio = psi_anio
    and mes = pti_mes
    and (sucursal = pvc_sucursal or pvc_sucursal is null or pvc_sucursal = ' ')
    and tipo_planilla = pch_tipo_planilla
    and trabajador = pch_trabajador;
    
    update fco_integrada_det
    set secuencia = ltrim(to_char(to_number(secuencia) - 1,'00000'))
    where compania = pch_compania
    and anio = psi_anio
    and mes = pti_mes
    and (sucursal = pvc_sucursal or pvc_sucursal is null or pvc_sucursal = ' ')    
    and tipo_planilla = pch_tipo_planilla
    and to_number(secuencia) > vsi_sec;
        
    commit;    
end sp_fco_del_int_det;
/

CREATE OR REPLACE PROCEDURE adam.sp_fco_upd_int_det_afp(pch_compania           char,
                                                        psi_anio               number,
                                                        pti_mes                number,
                                                        pvc_sucursal           varchar2,
							pch_tipo_planilla      char,
                                                        pch_trabajador         char,
                                                        pch_secuencia          char,
                                                        pch_tipo_documento     char,
                                                        pvc_nro_id             varchar2,
                                                        pti_tipo_cotizante     number,
                                                        pvc_primer_apellido    varchar2,
                                                        pvc_segundo_apellido   varchar2,
                                                        pvc_primer_nombre      varchar2,
                                                        pvc_segundo_nombre     varchar2,
                                                        pch_nov_ING            char,
                                                        pch_nov_RET            char,
                                                        pch_nov_TDE            char,
                                                        pch_nov_TAE            char,
                                                        pch_nov_TDP            char,
                                                        pch_nov_TAP            char,
                                                        pch_nov_VSP            char,
                                                        pch_nov_VTE            char,
                                                        pch_nov_VST            char,
                                                        pch_nov_SLN            char,
                                                        pch_nov_IGE            char,
                                                        pch_nov_LMA            char,
                                                        pch_nov_VAC            char,
                                                        pch_nov_AVP            char,
                                                        pch_nov_VCT            char,
                                                        pch_nov_IRP            char,
                                                        pdc_salario            number,
                                                        pvc_cod_afp            varchar2,
                                                        pvc_cod_afp_Tras       varchar2,
                                                        pti_dias_afp           number,
                                                        pdc_IBC_afp            number,
                                                        pdc_tarifa_afp         number,
                                                        pdc_aporte_afp         number,
                                                        pdc_voluntario_AFP     number,
                                                        pdc_voluntario_AFP_cia number,
                                                        pdc_aporte_FSP_Sol     number,
                                                        pdc_aporte_FSP_Sub     number,
                                                        pdc_valor_no_retenido  number) is
BEGIN
  UPDATE fco_integrada_det
     SET tipo_documento     = NVL(pch_tipo_documento, ' '),
         nro_id             = NVL(pvc_nro_id, ' '),
         tipo_cotizante     = NVL(pti_tipo_cotizante, 1),
         primer_apellido    = NVL(pvc_primer_apellido, ' '),
         segundo_apellido   = NVL(pvc_segundo_apellido, ' '),
         primer_nombre      = NVL(pvc_primer_nombre, ' '),
         segundo_nombre     = NVL(pvc_segundo_nombre, ' '),
         nov_ING            = NVL(pch_nov_ING, ' '),
         nov_RET            = NVL(pch_nov_RET, ' '),
         nov_TDE            = NVL(pch_nov_TDE, ' '),
         nov_TAE            = NVL(pch_nov_TAE, ' '),
         nov_TDP            = NVL(pch_nov_TDP, ' '),
         nov_TAP            = NVL(pch_nov_TAP, ' '),
         nov_VSP            = NVL(pch_nov_VSP, ' '),
         nov_VTE            = NVL(pch_nov_VTE, ' '),
         nov_VST            = NVL(pch_nov_VST, ' '),
         nov_SLN            = NVL(pch_nov_SLN, ' '),
         nov_IGE            = NVL(pch_nov_IGE, ' '),
         nov_LMA            = NVL(pch_nov_LMA, ' '),
         nov_VAC            = NVL(pch_nov_VAC, ' '),
         nov_AVP            = NVL(pch_nov_AVP, ' '),
         nov_VCT            = NVL(pch_nov_VCT, ' '),
         nov_IRP            = NVL(pch_nov_IRP, '00'),
         cod_afp            = NVL(pvc_cod_afp, ' '),
         cod_afp_Tras       = NVL(pvc_cod_afp_Tras, ' '),
         dias_afp           = NVL(pti_dias_afp, 0),
         salario            = NVL(pdc_salario, 0),
         IBC_afp            = NVL(pdc_IBC_afp, 0),
         tarifa_afp         = NVL(pdc_tarifa_afp, 0),
         aporte_afp         = NVL(pdc_aporte_afp, 0),
         voluntario_AFP     = NVL(pdc_voluntario_AFP, 0),
         voluntario_AFP_cia = NVL(pdc_voluntario_AFP_cia, 0),
         aporte_FSP         = NVL(pdc_aporte_FSP_Sol, 0),
         aporte_FSP_subsistencia = NVL(pdc_aporte_FSP_Sub, 0),
         valor_no_retenido  = NVL(pdc_valor_no_retenido, 0)
   WHERE compania = pch_compania
     AND anio = psi_anio
     AND mes = pti_mes
     AND sucursal = NVL(pvc_sucursal, ' ')
     AND tipo_planilla = pch_tipo_planilla
     AND trabajador = pch_trabajador;

END sp_fco_upd_int_det_afp;
/

CREATE OR REPLACE PROCEDURE adam.sp_fco_upd_int_det_arp(pch_compania         char,
                                                        psi_anio             number,
                                                        pti_mes              number,
                                                        pvc_sucursal         varchar2,
							pch_tipo_planilla    char,
                                                        pch_trabajador       char,
                                                        pch_secuencia        char,
                                                        pch_tipo_documento   char,
                                                        pvc_nro_id           varchar2,
                                                        pti_tipo_cotizante   number,
                                                        pvc_primer_apellido  varchar2,
                                                        pvc_segundo_apellido varchar2,
                                                        pvc_primer_nombre    varchar2,
                                                        pvc_segundo_nombre   varchar2,
                                                        pch_nov_ING          char,
                                                        pch_nov_RET          char,
                                                        pch_nov_TDE          char,
                                                        pch_nov_TAE          char,
                                                        pch_nov_TDP          char,
                                                        pch_nov_TAP          char,
                                                        pch_nov_VSP          char,
                                                        pch_nov_VTE          char,
                                                        pch_nov_VST          char,
                                                        pch_nov_SLN          char,
                                                        pch_nov_IGE          char,
                                                        pch_nov_LMA          char,
                                                        pch_nov_VAC          char,
                                                        pch_nov_AVP          char,
                                                        pch_nov_VCT          char,
                                                        pch_nov_IRP          char,
                                                        pdc_salario          number,
                                                        pti_dias_arp         number,
                                                        pdc_IBC_arp          number,
                                                        pdc_tarifa_arp       number,
                                                        pdc_centro_trabajo   number,
                                                        pdc_aporte_arp       number) AS
BEGIN
  UPDATE fco_integrada_det
     SET tipo_documento   = NVL(pch_tipo_documento, ' '),
         nro_id           = NVL(pvc_nro_id, ' '),
         tipo_cotizante   = NVL(pti_tipo_cotizante, 1),
         primer_apellido  = NVL(pvc_primer_apellido, ' '),
         segundo_apellido = NVL(pvc_segundo_apellido, ' '),
         primer_nombre    = NVL(pvc_primer_nombre, ' '),
         segundo_nombre   = NVL(pvc_segundo_nombre, ' '),
         nov_ING          = NVL(pch_nov_ING, ' '),
         nov_RET          = NVL(pch_nov_RET, ' '),
         nov_TDE          = NVL(pch_nov_TDE, ' '),
         nov_TAE          = NVL(pch_nov_TAE, ' '),
         nov_TDP          = NVL(pch_nov_TDP, ' '),
         nov_TAP          = NVL(pch_nov_TAP, ' '),
         nov_VSP          = NVL(pch_nov_VSP, ' '),
         nov_VTE          = NVL(pch_nov_VTE, ' '),
         nov_VST          = NVL(pch_nov_VST, ' '),
         nov_SLN          = NVL(pch_nov_SLN, ' '),
         nov_IGE          = NVL(pch_nov_IGE, ' '),
         nov_LMA          = NVL(pch_nov_LMA, ' '),
         nov_VAC          = NVL(pch_nov_VAC, ' '),
         nov_AVP          = NVL(pch_nov_AVP, ' '),
         nov_VCT          = NVL(pch_nov_VCT, ' '),
         nov_IRP          = NVL(pch_nov_IRP, '00'),
         dias_arp         = NVL(pti_dias_arp, 0),
         salario          = NVL(pdc_salario, 0),
         IBC_arp          = NVL(pdc_IBC_arp, 0),
         tarifa_arp       = NVL(pdc_tarifa_arp, 0),
         centro_trabajo   = NVL(pdc_centro_trabajo, 0),
         aporte_arp       = NVL(pdc_aporte_arp, 0)
   WHERE compania = pch_compania
     AND anio = psi_anio
     AND mes = pti_mes
     AND sucursal = NVL(pvc_sucursal, ' ')
     AND tipo_planilla = pch_tipo_planilla
     AND trabajador = pch_trabajador;

END sp_fco_upd_int_det_arp;
/

CREATE OR REPLACE PROCEDURE adam.sp_fco_upd_int_det_ccf(pch_compania         char,
                                                        psi_anio             number,
                                                        pti_mes              number,
                                                        pvc_sucursal         varchar2,
							pch_tipo_planilla    char,
                                                        pch_trabajador       char,
                                                        pch_secuencia        char,
                                                        pch_tipo_documento   char,
                                                        pvc_nro_id           varchar2,
                                                        pti_tipo_cotizante   number,
                                                        pvc_primer_apellido  varchar2,
                                                        pvc_segundo_apellido varchar2,
                                                        pvc_primer_nombre    varchar2,
                                                        pvc_segundo_nombre   varchar2,
                                                        pch_nov_ING          char,
                                                        pch_nov_RET          char,
                                                        pch_nov_TDE          char,
                                                        pch_nov_TAE          char,
                                                        pch_nov_TDP          char,
                                                        pch_nov_TAP          char,
                                                        pch_nov_VSP          char,
                                                        pch_nov_VTE          char,
                                                        pch_nov_VST          char,
                                                        pch_nov_SLN          char,
                                                        pch_nov_IGE          char,
                                                        pch_nov_LMA          char,
                                                        pch_nov_VAC          char,
                                                        pch_nov_AVP          char,
                                                        pch_nov_VCT          char,
                                                        pch_nov_IRP          char,
                                                        pdc_salario          number,
                                                        pvc_cod_CCF          varchar2,
                                                        pti_dias_CCF         number,
                                                        pdc_IBC_CCF          number,
                                                        pdc_tarifa_CCF       number,
                                                        pdc_aporte_CCF       number,
                                                        pdc_tarifa_SENA      number,
                                                        pdc_aporte_SENA      number,
                                                        pdc_tarifa_ICBF      number,
                                                        pdc_aporte_ICBF      number,
                                                        pdc_tarifa_ESAP      number,
                                                        pdc_aporte_ESAP      number,
                                                        pdc_tarifa_MEdu      number,
                                                        pdc_aporte_MEdu      number) IS
BEGIN
  UPDATE fco_integrada_det
     SET tipo_documento   = NVL(pch_tipo_documento, ' '),
         nro_id           = NVL(pvc_nro_id, ' '),
         tipo_cotizante   = NVL(pti_tipo_cotizante, 1),
         primer_apellido  = NVL(pvc_primer_apellido, ' '),
         segundo_apellido = NVL(pvc_segundo_apellido, ' '),
         primer_nombre    = NVL(pvc_primer_nombre, ' '),
         segundo_nombre   = NVL(pvc_segundo_nombre, ' '),
         nov_ING          = NVL(pch_nov_ING, ' '),
         nov_RET          = NVL(pch_nov_RET, ' '),
         nov_TDE          = NVL(pch_nov_TDE, ' '),
         nov_TAE          = NVL(pch_nov_TAE, ' '),
         nov_TDP          = NVL(pch_nov_TDP, ' '),
         nov_TAP          = NVL(pch_nov_TAP, ' '),
         nov_VSP          = NVL(pch_nov_VSP, ' '),
         nov_VTE          = NVL(pch_nov_VTE, ' '),
         nov_VST          = NVL(pch_nov_VST, ' '),
         nov_SLN          = NVL(pch_nov_SLN, ' '),
         nov_IGE          = NVL(pch_nov_IGE, ' '),
         nov_LMA          = NVL(pch_nov_LMA, ' '),
         nov_VAC          = NVL(pch_nov_VAC, ' '),
         nov_AVP          = NVL(pch_nov_AVP, ' '),
         nov_VCT          = NVL(pch_nov_VCT, ' '),
         nov_IRP          = NVL(pch_nov_IRP, '00'),
         salario          = NVL(pdc_salario, 0),
         dias_CCF         = NVL(pti_dias_ccf, 0),
         IBC_CCF          = NVL(pdc_IBC_CCF, 0),
         tarifa_CCF       = NVL(pdc_tarifa_CCF, 0),
         aporte_CCF       = NVL(pdc_aporte_CCF, 0),
         tarifa_SENA      = NVL(pdc_tarifa_SENA, 0),
         aporte_SENA      = NVL(pdc_aporte_SENA, 0),
         tarifa_ICBF      = NVL(pdc_tarifa_ICBF, 0),
         aporte_ICBF      = NVL(pdc_aporte_ICBF, 0),
         tarifa_ESAP      = NVL(pdc_tarifa_ESAP, 0),
         aporte_ESAP      = NVL(pdc_aporte_ESAP, 0),
         tarifa_MEdu      = NVL(pdc_tarifa_MEdu, 0),
         aporte_MEdu      = NVL(pdc_aporte_MEdu, 0),
         cod_CCF          = NVL(pvc_cod_CCF, ' ')
   WHERE compania = pch_compania
     AND anio = psi_anio
     AND mes = pti_mes
     AND sucursal = NVL(pvc_sucursal, ' ')
     AND tipo_planilla = pch_tipo_planilla
     AND trabajador = pch_trabajador;

END sp_fco_upd_int_det_ccf;
/

CREATE or replace PROCEDURE adam.sp_fco_upd_int_det_eps(pch_compania         char,
                                                        psi_anio             number,
                                                        pti_mes              number,
                                                        pvc_sucursal         varchar2,
							pch_tipo_planilla    char,
                                                        pch_trabajador       char,
                                                        pch_secuencia        char,
                                                        pch_tipo_documento   char,
                                                        pvc_nro_id           varchar2,
                                                        pti_tipo_cotizante   number,
                                                        pvc_primer_apellido  varchar2,
                                                        pvc_segundo_apellido varchar2,
                                                        pvc_primer_nombre    varchar2,
                                                        pvc_segundo_nombre   varchar2,
                                                        pch_nov_ING          char,
                                                        pch_nov_RET          char,
                                                        pch_nov_TDE          char,
                                                        pch_nov_TAE          char,
                                                        pch_nov_TDP          char,
                                                        pch_nov_TAP          char,
                                                        pch_nov_VSP          char,
                                                        pch_nov_VTE          char,
                                                        pch_nov_VST          char,
                                                        pch_nov_SLN          char,
                                                        pch_nov_IGE          char,
                                                        pch_nov_LMA          char,
                                                        pch_nov_VAC          char,
                                                        pch_nov_AVP          char,
                                                        pch_nov_VCT          char,
                                                        pch_nov_IRP          char,
                                                        pdc_salario          number,
                                                        pvc_cod_EPS          varchar2,
                                                        pvc_cod_EPS_Tras     varchar2,
                                                        pti_dias_EPS         number,
                                                        pdc_IBC_EPS          number,
                                                        pdc_tarifa_EPS       number,
                                                        pdc_aporte_EPS       number,
                                                        pdc_UPC_adicional    number,
                                                        pvc_nro_aut_IGE      varchar2,
                                                        pdc_vlr_aut_IGE      number,
                                                        pvc_nro_aut_LMA      varchar2,
                                                        pdc_vlr_aut_LMA      number) is
BEGIN
  UPDATE fco_integrada_det
     SET tipo_documento   = NVL(pch_tipo_documento, ' '),
         nro_id           = NVL(pvc_nro_id, ' '),
         tipo_cotizante   = NVL(pti_tipo_cotizante, 1),
         primer_apellido  = NVL(pvc_primer_apellido, ' '),
         segundo_apellido = NVL(pvc_segundo_apellido, ' '),
         primer_nombre    = NVL(pvc_primer_nombre, ' '),
         segundo_nombre   = NVL(pvc_segundo_nombre, ' '),
         nov_ING          = NVL(pch_nov_ING, ' '),
         nov_RET          = NVL(pch_nov_RET, ' '),
         nov_TDE          = NVL(pch_nov_TDE, ' '),
         nov_TAE          = NVL(pch_nov_TAE, ' '),
         nov_TDP          = NVL(pch_nov_TDP, ' '),
         nov_TAP          = NVL(pch_nov_TAP, ' '),
         nov_VSP          = NVL(pch_nov_VSP, ' '),
         nov_VTE          = NVL(pch_nov_VTE, ' '),
         nov_VST          = NVL(pch_nov_VST, ' '),
         nov_SLN          = NVL(pch_nov_SLN, ' '),
         nov_IGE          = NVL(pch_nov_IGE, ' '),
         nov_LMA          = NVL(pch_nov_LMA, ' '),
         nov_VAC          = NVL(pch_nov_VAC, ' '),
         nov_AVP          = NVL(pch_nov_AVP, ' '),
         nov_VCT          = NVL(pch_nov_VCT, ' '),
         nov_IRP          = NVL(pch_nov_IRP, '00'),
         cod_EPS          = NVL(pvc_cod_EPS, ' '),
         cod_EPS_Tras     = NVL(pvc_cod_EPS_Tras, ' '),
         dias_EPS         = NVL(pti_dias_EPS, 0),
         salario          = NVL(pdc_salario, 0),
         IBC_EPS          = NVL(pdc_IBC_EPS, 0),
         tarifa_EPS       = NVL(pdc_tarifa_EPS, 0),
         aporte_EPS       = NVL(pdc_aporte_EPS, 0),
         UPC_adicional    = NVL(pdc_UPC_adicional, 0),
         nro_aut_IGE      = NVL(pvc_nro_aut_IGE, ' '),
         vlr_aut_IGE      = NVL(pdc_vlr_aut_IGE, 0),
         nro_aut_LMA      = NVL(pvc_nro_aut_LMA, ' '),
         vlr_aut_LMA      = NVL(pdc_vlr_aut_LMA, 0)
   WHERE compania = pch_compania
     AND anio = psi_anio
     AND mes = pti_mes
     AND sucursal = NVL(pvc_sucursal, ' ')
     AND tipo_planilla = pch_tipo_planilla
     AND trabajador = pch_trabajador;

END sp_fco_upd_int_det_eps;
/
ALTER TABLE fco_fantasmas ADD tipo_planilla char(1) null;
ALTER TABLE fco_autorizaciones ADD tipo_planilla char(1) null;

delete criterios_valores_col where campo = 'tipo_planilla';
insert into criterios_valores_col (campo, item, descripcion) values ('tipo_planilla', 1, 'E.Activos');
insert into criterios_valores_col (campo, item, descripcion) values ('tipo_planilla', 2, 'Y.Independientes');
commit;
CREATE OR REPLACE VIEW VW_FCO_INTEGRADA_RT01 AS
SELECT compania,
       anio,
       mes,
       sucursal,
       tipo_planilla,
       '01' || ltrim(to_char(secuencia, '00000')) ||
       RPad(rtrim(ltrim(razon_social)), 200, ' ') || tipo_documento ||
       Rpad(nro_id, 16, ' ') || dv || 'E' || '0000000000' || '          ' ||
       Nvl((select forma_presentacion from vw_fco_companias x where x.compania = a.compania), 'C') || -- JCL Ajuste Oct-30-06
       rpad(sucursal, 10, ' ') || RPad(nombre_sucursal, 40, ' ') ||
       RPad(nueva_ARP, 6, ' ') || substr(periodo, 1, 4) || '-' || substr(periodo, 5, 2) ||
       substr(periodo_salud, 1, 4) || '-' || substr(periodo_salud, 5, 2) ||
       rpad(nro_radicacion, 10, ' ') || to_char(sysdate, 'yyyy-mm-dd') ||
       ltrim(to_char(nro_empleados, '00000')) ||
       ltrim(to_char(valor_nomina, '000000000000')) || '1' ||
       operador AS registro1
  FROM fco_integrada_cab a;

CREATE OR REPLACE PROCEDURE sp_fco_alta_autorizaciones
(
  i_compania		char,
  i_sucursal      	char,
  i_numero	    	varchar2,
  i_tipo_incapacidad 	char,
  i_tipo_entidad	    	char,
  i_cod_entidad	    	char,
  i_fecha	    		date,
  i_periodo 	    	char,
  i_ausentismo	    	number,
  i_descontar_ala    	char,
  i_valor_total	    	number
)
AS
	w_autorizacion		number(9,0); ---consecutivo
BEGIN
	w_autorizacion := 0;

	SELECT NVL(Max(autorizacion),0) + 1
	INTO w_autorizacion
	FROM fco_autorizaciones
	WHERE compania = i_compania;

	BEGIN
		INSERT INTO fco_autorizaciones 
     (compania, sucursal, autorizacion, numero, tipo_incapacidad,
      tipo_entidad, cod_entidad, fecha, periodo, ausentismo, descontar_ala,
      valor_total, tipo_planilla)
    VALUES 
    (i_compania,
    i_sucursal,
    w_autorizacion,
    i_numero,
    i_tipo_incapacidad,
    i_tipo_entidad,
    i_cod_entidad,
    i_fecha,
    i_periodo,
    i_ausentismo,
    i_descontar_ala,
    i_valor_total,
    'E');
	EXCEPTION
     		WHEN OTHERS THEN
         	raise_application_error(-20001, 'Error al tratar de insertar en la tabla [fco_autorizaciones]');
	 	return;
	END;
	COMMIT WORK;
END;
/
create or replace procedure sp_fco_pi_fantasmas(p_compania in char,
                                                     p_anio     in number,
                                                     p_mes      in number,
                                                     p_sucursal in char,
                                                     p_tipo_planilla in char) is
  v_rec_detalle fco_integrada_det%rowtype;
  vsi_secuencia fco_integrada_det.secuencia%type;
  v_cont        number := 0;

  cursor c1(c_compania char, c_anio number, c_mes number, c_sucursal char, c_tipo_planilla char) 
  return fco_integrada_det%rowtype is
    select c_compania,
           c_anio,
           c_mes,
           c_sucursal,
 	   c_tipo_planilla,
           a.trabajador,
           0,
           tipo_id,
           nro_id,
           '0' dc,
           tipo_cotizante,
           0,
           ' ',
           ' ',
           ' ',
           ' ',
           primer_apellido,
           segundo_apellido,
           primer_nombre,
           segundo_nombre,
           ' ',
           ' ',
           ' ',
           ' ',
           ' ',
           ' ',
           ' ',
           ' ',
           ' ',
           ' ',
           ' ',
           ' ',
           ' ',
           ' ',
           ' ',
           ' ',
           NVL(AFP, ' '),
           ' ',
           NVL(EPS, ' '),
           ' ',
           NVL(CCF, ' '),
           dias_AFP,
           dias_EPS,
           dias_ARP,
           0,
           salario,
           IBC_AFP,
           IBC_EPS,
           IBC_ARP,
           IBC_CCF,
           0,
           pkg_fco_gral.vdc_tar_AFP,
           aporte_afp,
           0,
           0,
           0,
           aporte_FSP_sol,
           aporte_FSP_sub,
           pkg_fco_gral.vdc_tar_EPS,
           aporte_EPS,
           UPC_adicional,
           ' ',
           0,
           ' ',
           0,
           tarifa_ARP,
           decode(ISNUMERIC(CTR), 1, CTR, 0),
           aporte_ARP,
           pkg_fco_gral.vdc_tar_CCF,
           aporte_CCF,
           pkg_fco_gral.vdc_tar_SENA,
           aporte_SENA,
           pkg_fco_gral.vdc_tar_ICBF,
           aporte_ICBF,
           pkg_fco_gral.vdc_tar_ESAP,
           aporte_ESAP,
           pkg_fco_gral.vdc_tar_MEdu,
           aporte_MEdu,
           2,
           0,
           ' ',
           0
      from fco_fantasmas a
     where a.compania = c_compania
       and (sucursal = c_sucursal or c_sucursal is null)
       and a.tipo_planilla = c_tipo_planilla
       and a.eps || a.Afp is not null
       and ((a.anio - 2000) * 12 + a.mes) >= ((c_anio - 2000) * 12 + c_mes);
begin
  select max(secuencia)
    into vsi_secuencia
    from fco_integrada_det
   where compania = p_compania
     and anio = p_anio
     and mes = p_mes
     and (sucursal = p_sucursal or p_sucursal is null)
     and tipo_planilla = p_tipo_planilla;

  open c1(p_compania, p_anio, p_mes, p_sucursal, p_tipo_planilla);
  loop
    fetch c1
      into v_rec_detalle;
    exit when c1%notfound;
    v_cont                  := v_cont + 1;
    v_rec_detalle.secuencia := vsi_secuencia + v_cont;
    insert into fco_integrada_det values v_rec_detalle;
  end loop;
  close c1;

end sp_fco_pi_fantasmas;
/
create or replace procedure adam.sp_fco_pi_tot_ccf(p_compania in char,
                                                   p_anio     in number,
                                                   p_mes      in number,
                                                   p_sucursal in char,
                                                   p_tipo_planilla in char) is
  v_rec_rt06 fco_integrada_rt06%rowtype;
  v_sec number := 0;

  cursor c1(c_compania char, c_anio number, c_mes number, c_sucursal char, c_tipo_planilla char) return fco_integrada_rt06%rowtype is
    select a.compania,
           a.anio,
           a.mes,
           nvl(a.sucursal, ' '),
           a.tipo_planilla,
           a.cod_ccf,
           a.secuencia,
           nvl(b.registro_fiscal, ' '),
           nvl(b.digito_verificacion, 0),
           a.aportes,
           0,
           0,
           0,
           a.afiliados
      from (select compania,
                   anio,
                   mes,
                   nvl(c_sucursal, ' ') sucursal,
                   c_tipo_planilla tipo_planilla,
                   cod_ccf, -- corregido JCL Jul-04-07
                   0 secuencia,
                   sum(nvl(aporte_ccf, 0)) aportes,
                   count(*) afiliados
              from fco_integrada_det
             where compania = c_compania
               and anio = c_anio
               and mes = c_mes
               and (sucursal = c_sucursal or c_sucursal is null)
             group by compania, anio, mes, cod_ccf) a,
           vw_fco_administradoras b
     where a.compania = b.compania
       and b.tipo = 'CCF'
       and a.cod_ccf = b.codigo; -- corregido JCL Jul-04-07 substr(b.codigo, 1, 6);

begin

  open c1(p_compania, p_anio, p_mes, p_sucursal, p_tipo_planilla);
  loop
    fetch c1
      into v_rec_rt06;
    exit when c1%notfound;
    v_sec := v_sec + 1;
    v_rec_rt06.secuencia := v_sec;
    insert into fco_integrada_rt06 values v_rec_rt06;
  end loop;
  close c1;

end sp_fco_pi_tot_ccf;
/

create or replace procedure adam.sp_fco_pi_tot_pensiones(p_compania in char,
                                                         p_anio     in number,
                                                         p_mes      in number,
                                                         p_sucursal in char,
                                                         p_tipo_planilla in char) is
  v_rec_rt03 fco_integrada_rt03%rowtype;
  v_sec number := 0;

  cursor c1(c_compania char, c_anio number, c_mes number, c_sucursal char, c_tipo_planilla char) return fco_integrada_rt03%ROWTYPE is
    select a.compania,
           a.anio,
           a.mes,
           a.sucursal,
           a.tipo_planilla,
           a.cod_afp,
           a.secuencia,
           nvl(b.registro_fiscal, ' '),
           nvl(b.digito_verificacion, 0),
           a.aportes,
           a.voluntarios,
           a.voluntarios_cia,
           a.aportes_fsp_sol,
           a.aportes_fsp_sub,
           0,
           0,
           0,
           0,
           0,
           a.afiliados
      from (select compania,
                   anio,
                   mes,
                   nvl(c_sucursal, ' ') sucursal,
                   c_tipo_planilla tipo_planilla,
                   substr(cod_afp, 1, 6) cod_afp,
                   0 secuencia,
                   sum(nvl(aporte_afp, 0)) aportes,
                   sum(nvl(voluntario_afp, 0)) voluntarios,
                   sum(nvl(voluntario_afp_cia, 0)) voluntarios_cia,
                   sum(nvl(aporte_fsp, 0)) aportes_fsp_sol,
                   sum(nvl(aporte_fsp_subsistencia, 0)) aportes_fsp_sub,
                   count(*) afiliados
              from fco_integrada_det
             where compania = c_compania
               and anio = c_anio
               and mes = c_mes
               and (sucursal = c_sucursal or c_sucursal is null)
               and tipo_planilla = c_tipo_planilla
             group by compania, anio, mes, cod_afp) a,
           vw_fco_administradoras b
     where a.compania = b.compania
       and b.tipo in ('AFP', 'FPO')
       and a.cod_afp = substr(b.codigo, 1, 6);

begin

  open c1(p_compania, p_anio, p_mes, p_sucursal, p_tipo_planilla);
  loop
    fetch c1
      into v_rec_rt03;
    exit when c1%notfound;
    v_sec := v_sec + 1;
    v_rec_rt03.secuencia := v_sec;
    insert into fco_integrada_rt03 values v_rec_rt03;
  end loop;
  close c1;

end sp_fco_pi_tot_pensiones;
/
alter table fco_autorizaciones_tot_arp add tipo_planilla char(1);
create or replace procedure sp_fco_pi_tot_riesgos(p_compania in char,
                                                       p_anio     in number,
                                                       p_mes      in number,
                                                       p_sucursal in char,
                                                       p_tipo_planilla in char,
                                                       p_periodo  in char) is
  v_rec_rt05 fco_integrada_rt05%rowtype;
  v_sec number := 0;
  vdc_vlr_inc number(13,2);
  vvc_nro_inc varchar2(10);
  vvc_nro varchar2(15);
  vdc_vlr number(10);
  vdc_otros number(10);
  vvc_nro_rad varchar2(10);
  vdc_sf number(10);

  cursor c1(c_compania char, c_anio number, c_mes number, c_sucursal char, c_tipo_planilla char, c_periodo char) return fco_integrada_rt05%ROWTYPE is
    select cab.compania,
           cab.anio,
           cab.mes,
           nvl(cab.sucursal, ' ') sucursal,
           cab.tipo_planilla,
           cab.nueva_arp cod_arp,
           1 secuencia,
           substr(adi.nit_arp, 1, 9) nit,
           substr(rtrim(adi.nit_arp), -1) dv,
           sum(nvl(aporte_arp, 0)) suma_aportes,
           --max(nvl(aut.numero, ' ')) nro_aut, -- JCL Agosto 29/06
           ' ' nro_aut,
           --sum(nvl(aut.valor_total, 0)) incapacidades, -- JCL Agosto 29/06
           0 incapacidades,
           0 otros_riesgos,
           null neto_aportes,
           0 Dias_mora,
           0 int_mora,
           null subtotal_aportes,
           ' ' nro_radicacion,
           0 saldo_favor,
           null total_pagar,
           sum(aporte_arp) * 0.01 fsrp,
           count(*) total_afiliados,
           0 origen
      from fco_integrada_cab  cab,
           fco_integrada_det  det,
           fco_cias_datos_adi adi,
           fco_autorizaciones aut
     where cab.compania = det.compania
       and cab.anio = det.anio
       and cab.mes = det.mes
       and (cab.sucursal = det.sucursal or c_sucursal is null)
       and cab.tipo_planilla = det.tipo_planilla
       and cab.compania = adi.compania(+)
       and aut.compania(+) = cab.compania
       and aut.sucursal(+) = cab.sucursal
       and aut.tipo_planilla(+) = cab.tipo_planilla
       and aut.periodo(+) = p_periodo
       and aut.tipo_entidad(+) = 1
       and cab.compania = c_compania
       and cab.anio = c_anio
       and cab.mes = c_mes
       and (cab.sucursal = c_sucursal or c_sucursal is null)
       and cab.tipo_planilla = c_tipo_planilla
     group by cab.compania,
              cab.anio,
              cab.mes,
              cab.sucursal,
              cab.tipo_planilla,
              cab.nueva_arp,
              adi.nit_arp;

begin

  open c1(p_compania, p_anio, p_mes, p_sucursal, p_tipo_planilla, p_periodo);
  loop
    fetch c1
      into v_rec_rt05;
    exit when c1%notfound;
    v_sec := v_sec + 1;
    v_rec_rt05.secuencia := v_sec;

    begin
        select max(numero), sum(nvl(valor_total, 0))
        into vvc_nro_inc, vdc_vlr_inc
        from fco_autorizaciones
        where compania = p_compania
        and to_number(substr(periodo,1,4)) = p_anio
        and to_number(substr(periodo,5,2)) = p_mes
        and (sucursal = p_sucursal or p_sucursal is null)
        and tipo_planilla = p_tipo_planilla
        and tipo_entidad = 1;
    exception
        when others then vvc_nro_inc:=' '; vdc_vlr_inc := 0;
    end;

    if vdc_vlr_inc > 0 then
       v_rec_rt05.nro_aut := vvc_nro_inc;
       v_rec_rt05.incapacidades := vdc_vlr_inc;
    end if;

   begin 
   SELECT nro_aut, incapacidades, otros_riesgos,
   nro_radicacion, saldo_favor
   into vvc_nro, vdc_vlr, vdc_otros, 
   vvc_nro_rad, vdc_sf
   FROM fco_autorizaciones_tot_arp
   WHERE compania = p_compania
   AND anio = p_anio
   AND mes = p_mes
   AND (sucursal = p_sucursal OR p_sucursal = ' ' OR p_sucursal IS NULL)
   AND tipo_planilla = p_tipo_planilla;
   exception when others then vvc_nro := '';
   end;
  
    if v_rec_rt05.nro_aut = ' ' then
       v_rec_rt05.nro_aut := nvl(vvc_nro, ' ');
    end if;
    if v_rec_rt05.nro_radicacion = ' ' then
       v_rec_rt05.nro_radicacion := nvl(vvc_nro_rad, ' ');
    end if;
    v_rec_rt05.incapacidades := nvl(v_rec_rt05.incapacidades, 0) + nvl(vdc_vlr, 0);
    v_rec_rt05.otros_riesgos := nvl(v_rec_rt05.otros_riesgos, 0) + nvl(vdc_otros, 0);
    v_rec_rt05.saldo_favor := nvl(v_rec_rt05.saldo_favor, 0) + nvl(vdc_sf, 0);
    v_rec_rt05.neto_aportes :=  v_rec_rt05.suma_aportes - v_rec_rt05.incapacidades - v_rec_rt05.otros_riesgos;
    v_rec_rt05.subtotal_aportes := v_rec_rt05.neto_aportes + v_rec_rt05.int_mora;
    v_rec_rt05.total_pagar := v_rec_rt05.subtotal_aportes - v_rec_rt05.saldo_favor;
    insert into fco_integrada_rt05 values v_rec_rt05;

  end loop;
  close c1;

end sp_fco_pi_tot_riesgos;
/
alter table fco_autorizaciones_tot add tipo_planilla char(1);
create or replace procedure sp_fco_pi_tot_salud(p_compania in char,
                                                     p_anio     in number,
                                                     p_mes      in number,
                                                     p_sucursal in char,
                                                     p_tipo_planilla in char) is
  v_rec_rt04 fco_integrada_rt04%rowtype;
  v_sec number := 0;
  vvc_nro_aut_ige varchar2(15);
  vdc_vlr_aut_ige number(10);
  vvc_nro_aut_lma varchar2(15);
  vdc_vlr_aut_lma number(20);
  vvc_nro_radicacion varchar2(10);
  vdc_sf_aportes number(10);
  vdc_sf_upc number(10);

  cursor c1(c_compania char, c_anio number, c_mes number, c_sucursal char, c_tipo_planilla char) return fco_integrada_rt04%ROWTYPE is
    select a.compania,
           a.anio,
           a.mes,
           a.sucursal,
           a.tipo_planilla,
           a.cod_EPS,
           a.secuencia,
           NVL(b.registro_fiscal, ' '),
           NVL(b.digito_verificacion, 0),
           a.aportes,
           a.UPC,
           a.nro_aut_IGE,
           a.suma_aut_IGE,
           a.nro_aut_LMA,
           a.suma_aut_LMA,
           0,
           0,
           0,
           0,
           0,
           0,
           ' ',
           0,
           0,
           0,
           0,
           0,
           a.Fosyga,
           a.afiliados,
           0
      from (SELECT compania,
                   anio,
                   mes,
                   nvl(c_sucursal, ' ') sucursal,
                   c_tipo_planilla tipo_planilla,
                   cod_EPS, --substr(cod_EPS, 1, 6) cod_eps, jcl nov-08-06
                   0 secuencia,
                   SUM(NVL(aporte_EPS, 0)) aportes,
                   SUM(NVL(UPC_adicional, 0)) upc,
                   MAX(NVL(nro_aut_IGE, 0)) nro_aut_IGE,
                   SUM(NVL(vlr_aut_IGE, 0)) suma_aut_IGE,
                   MAX(NVL(nro_aut_LMA, 0)) nro_aut_LMA,
                   SUM(NVL(vlr_aut_LMA, 0)) suma_aut_LMA,
                   SUM(NVL(IBC_EPS, 0)) * 0.01 Fosyga,
                   COUNT(*) afiliados
              FROM fco_integrada_det d
             WHERE compania = c_compania
               AND anio = c_anio
               AND mes = c_mes
               AND (sucursal = c_sucursal OR c_sucursal is null)
               AND tipo_planilla = c_tipo_planilla
             GROUP BY compania, anio, mes, cod_EPS) a,
           vw_fco_administradoras b
     where a.compania = b.compania
       AND b.tipo = 'EPS'
       AND a.cod_EPS = b.codigo; --substr(b.codigo, 1, 6);jcl nov-08-06

begin

  open c1(p_compania, p_anio, p_mes, p_sucursal, p_tipo_planilla);
  loop
    fetch c1
      into v_rec_rt04;
    exit when c1%notfound;
    v_sec := v_sec + 1;
    v_rec_rt04.secuencia := v_sec;

   begin 
   SELECT nro_aut_ige, suma_aut_ige, nro_aut_lma, suma_aut_lma,
   nro_radicacion, saldo_favor_aportes, saldo_favor_upc
   into vvc_nro_aut_ige, vdc_vlr_aut_ige, vvc_nro_aut_lma, vdc_vlr_aut_lma,
   vvc_nro_radicacion, vdc_sf_aportes, vdc_sf_upc
   FROM fco_autorizaciones_tot
   WHERE compania = p_compania
   AND anio = p_anio
   AND mes = p_mes
   AND (sucursal = p_sucursal or p_sucursal = ' ' or p_sucursal is null)
   AND tipo_planilla = p_tipo_planilla
   AND cod_EPS = v_rec_rt04.cod_EPS;
   exception when others then 
       vvc_nro_aut_ige := '';
       vvc_nro_aut_lma := '';
       vvc_nro_radicacion := '';
       vdc_vlr_aut_ige := 0;
       vdc_vlr_aut_lma := 0;
       vdc_sf_aportes := 0;
       vdc_sf_upc := 0;
   end;
    
    if v_rec_rt04.nro_aut_ige = ' ' then
       v_rec_rt04.nro_aut_ige := nvl(vvc_nro_aut_ige, ' ');
    end if;
    if v_rec_rt04.nro_aut_lma = ' ' then
       v_rec_rt04.nro_aut_lma := nvl(vvc_nro_aut_lma, ' ');
    end if;
    if v_rec_rt04.nro_radicacion = ' ' then
       v_rec_rt04.nro_radicacion := nvl(vvc_nro_radicacion, ' ');
    end if;
    v_rec_rt04.suma_aut_ige := nvl(v_rec_rt04.suma_aut_ige, 0) + nvl(vdc_vlr_aut_ige, 0);
    v_rec_rt04.suma_aut_lma := nvl(v_rec_rt04.suma_aut_lma, 0) + nvl(vdc_vlr_aut_lma, 0);
    v_rec_rt04.saldo_favor_aportes := nvl(v_rec_rt04.saldo_favor_aportes, 0) + nvl(vdc_sf_aportes, 0);
    v_rec_rt04.saldo_favor_upc := nvl(v_rec_rt04.saldo_favor_upc, 0) + nvl(vdc_sf_upc, 0);
    
    insert into fco_integrada_rt04 values v_rec_rt04;
  end loop;
  close c1;

end sp_fco_pi_tot_salud;
/
CREATE OR REPLACE PROCEDURE sp_fco_upd_tc_riesgos
(
    pch_compania char,
    psi_anio NUMBER,
    pti_mes NUMBER,
    pvc_sucursal varchar2,    
    pch_tipo_planilla char,
    pvc_nro_aut varchar2,
    pdc_vlr_aut NUMBER,
    pdc_vlr_otros NUMBER,
    pvc_nro_radicacion varchar2,
    pdc_saldo_favor NUMBER
)
AS
BEGIN
    UPDATE fco_integrada_rt05
    SET nro_aut = NVL(pvc_nro_aut, ' '),
        incapacidades = NVL(pdc_vlr_aut, 0),
        otros_riesgos = NVL(pdc_vlr_otros, 0),
        nro_radicacion = NVL(pvc_nro_radicacion, ' '),
        saldo_favor = NVL(pdc_saldo_favor, 0)
    WHERE compania = pch_compania
      AND anio = psi_anio
      AND mes = pti_mes
      AND sucursal = NVL(pvc_sucursal, ' ')
      AND tipo_planilla = pch_tipo_planilla;
   
   DELETE fco_autorizaciones_tot_arp
   WHERE  compania = pch_compania
      AND anio = psi_anio
      AND mes = pti_mes
      AND sucursal = NVL(pvc_sucursal, ' ')
      AND tipo_planilla = pch_tipo_planilla;
   
   INSERT INTO fco_autorizaciones_tot_arp
   (compania, anio, mes, sucursal, nro_aut, incapacidades, 
    otros_riesgos, nro_radicacion, saldo_favor, tipo_planilla)
   VALUES (pch_compania, psi_anio, pti_mes, NVL(pvc_sucursal, ' '), 
    NVL(pvc_nro_aut, ' '), NVL(pdc_vlr_aut, 0),
    NVL(pdc_vlr_otros, 0),
    NVL(pvc_nro_radicacion, ' '), 
    NVL(pdc_saldo_favor, 0), 'E');

    COMMIT;
END;
/

CREATE OR REPLACE PROCEDURE sp_fco_upd_tc_salud
(
    pch_compania char,
    psi_anio NUMBER,
    pti_mes NUMBER,
    pvc_sucursal varchar2,
    pch_tipo_planilla char,
    pch_cod_EPS char,
    pvc_nro_aut_IGE varchar2,
    pdc_vlr_aut_IGE NUMBER,
    pvc_nro_aut_LMA varchar2,
    pdc_vlr_aut_LMA NUMBER,
    pvc_nro_radicacion varchar2,
    pdc_sf_aportes NUMBER,
    pdc_sf_UPC NUMBER
)
AS
BEGIN
    UPDATE fco_integrada_rt04
    SET nro_aut_IGE = NVL(pvc_nro_aut_IGE, ' '),
        suma_aut_IGE = NVL(pdc_vlr_aut_IGE, 0),
        nro_aut_LMA = NVL(pvc_nro_aut_LMA, ' '),
        suma_aut_LMA = NVL(pdc_vlr_aut_LMA, 0),
        nro_radicacion = NVL(pvc_nro_radicacion, ' '),
        saldo_favor_aportes = NVL(pdc_sf_aportes, 0),
        saldo_favor_UPC = NVL(pdc_sf_UPC, 0)
    WHERE compania = pch_compania
      AND anio = psi_anio
      AND mes = pti_mes
      AND sucursal = NVL(pvc_sucursal, ' ')
      AND tipo_planilla = pch_tipo_planilla
      AND cod_EPS =pch_cod_EPS;

   DELETE fco_autorizaciones_tot 
   WHERE  compania = pch_compania
      AND anio = psi_anio
      AND mes = pti_mes
      AND sucursal = NVL(pvc_sucursal, ' ')
      AND tipo_planilla = pch_tipo_planilla
      AND cod_EPS =pch_cod_EPS;
   
   INSERT INTO fco_autorizaciones_tot
   (compania, anio, mes, sucursal, cod_EPS, 
    nro_aut_IGE, suma_aut_IGE, 
    nro_aut_LMA, suma_aut_LMA, 
    nro_radicacion, saldo_favor_aportes, 
    saldo_favor_UPC, tipo_planilla) 
   VALUES (pch_compania, psi_anio, pti_mes, NVL(pvc_sucursal, ' '), 
    pch_cod_EPS,
    NVL(pvc_nro_aut_IGE, ' '), NVL(pdc_vlr_aut_IGE, 0),
    NVL(pvc_nro_aut_LMA, ' '), NVL(pdc_vlr_aut_LMA, 0),
    NVL(pvc_nro_radicacion, ' '), NVL(pdc_sf_aportes, 0),
    NVL(pdc_sf_UPC, 0), 'E');
          
   COMMIT;
END;
/

create or replace procedure adam.sp_fco_pi_tot_sena(p_compania in char,
                                                    p_anio     in number,
                                                    p_mes      in number,
                                                    p_sucursal in char,
                                                    p_tipo_planilla in char) is
  v_rec_rt07 fco_integrada_rt07%rowtype;

  cursor c1(c_compania char, c_anio number, c_mes number, c_sucursal char, c_tipo_planilla char) return fco_integrada_rt07%rowtype is
    select compania,
           anio,
           mes,
           nvl(c_sucursal, ' ') sucursal,
           c_tipo_planilla tipo_planilla,
           1 secuencia,
           '899999034' nit,
           '1' dv,
           sum(nvl(aporte_sena, 0)) valor,
           0,
           0,
           null,
           count(*) nro_personas
      from fco_integrada_det
     where compania = c_compania
       and anio = c_anio
       and mes = c_mes
       and (sucursal = c_sucursal or c_sucursal is null)
       and tipo_planilla = c_tipo_planilla
       and nvl(aporte_sena, 0) <> 0
     group by compania, anio, mes;

begin

  open c1(p_compania, p_anio, p_mes, p_sucursal, p_tipo_planilla);
  loop
    fetch c1
      into v_rec_rt07;
    exit when c1%notfound;
    insert into fco_integrada_rt07 values v_rec_rt07;
  end loop;
  close c1;

end sp_fco_pi_tot_sena;
/

create or replace procedure adam.sp_fco_pi_tot_icbf(p_compania in char,
                                                    p_anio     in number,
                                                    p_mes      in number,
                                                    p_sucursal in char,
                                                    p_tipo_planilla in char) is
  v_rec_rt08 fco_integrada_rt08%rowtype;

  cursor c1(c_compania char, c_anio number, c_mes number, c_sucursal char, c_tipo_planilla char) return fco_integrada_rt08%rowtype is
    select compania,
           anio,
           mes,
           nvl(c_sucursal, ' ') sucursal,
           c_tipo_planilla tipo_planilla,
           1 secuencia,
           '899999239' nit,
           '2' dv,
           sum(nvl(aporte_icbf, 0)) valor,
           0,
           0,
           null,
           count(*) nro_personas
      from fco_integrada_det
     where compania = c_compania
       and anio = c_anio
       and mes = c_mes
       and (sucursal = c_sucursal or c_sucursal is null)
       and tipo_planilla = c_tipo_planilla
       and nvl(aporte_icbf, 0) <> 0
     group by compania, anio, mes;

begin

  open c1(p_compania, p_anio, p_mes, p_sucursal, p_tipo_planilla);
  loop
    fetch c1
      into v_rec_rt08;
    exit when c1%notfound;
    insert into fco_integrada_rt08 values v_rec_rt08;
  end loop;
  close c1;

end sp_fco_pi_tot_icbf;
/


drop table fco_integrada_rt10;
-- Create table
create table adam.FCO_INTEGRADA_RT10
(
  COMPANIA    CHAR(4) not null,
  ANIO        NUMBER not null,
  MES         NUMBER not null,
  SUCURSAL    VARCHAR2(10) not null,
  TIPO_PLANILLA CHAR(1) not null,
  SECUENCIA   NUMBER not null,
  NIT         VARCHAR2(16) not null,
  DV          CHAR(1) not null,
  VALOR       NUMBER(10) not null,
  DIAS_MORA   NUMBER not null,
  INT_MORA    NUMBER(10) not null,
  TOTAL_PAGAR NUMBER
)
tablespace TS_ADAMDATOS
;
-- Create/Recreate primary, unique and foreign key constraints 
alter table adam.FCO_INTEGRADA_RT10
  add constraint PK_FCO_INTEGRADA_RT10 primary key (COMPANIA,ANIO,MES,SUCURSAL,TIPO_PLANILLA)
  using index 
  tablespace TS_ADAMINDICES
;
-- Grant/Revoke object privileges 
GRANT ALL ON FCO_INTEGRADA_RT10 TO ADAMA;

DROP TABLE FCO_INTEGRADA_RT09;
-- Create table
create table adam.FCO_INTEGRADA_RT09
(
  COMPANIA    CHAR(4) not null,
  ANIO        NUMBER not null,
  MES         NUMBER not null,
  SUCURSAL    VARCHAR2(10) not null,
  TIPO_PLANILLA CHAR(1) not null,
  SECUENCIA   NUMBER not null,
  NIT         VARCHAR2(16) not null,
  DV          CHAR(1) not null,
  VALOR       NUMBER(10) not null,
  DIAS_MORA   NUMBER not null,
  INT_MORA    NUMBER(10) not null,
  TOTAL_PAGAR NUMBER
)
tablespace TS_ADAMDATOS
;
-- Create/Recreate primary, unique and foreign key constraints 
alter table adam.FCO_INTEGRADA_RT09
  add constraint PK_FCO_INTEGRADA_RT09 primary key (COMPANIA,ANIO,MES,SUCURSAL,TIPO_PLANILLA)
  using index 
  tablespace TS_ADAMINDICES
;
-- Grant/Revoke object privileges 
GRANT ALL ON FCO_INTEGRADA_RT09 TO ADAMA;

DROP TABLE FCO_INTEGRADA_RT11;
-- Create table
create table adam.FCO_INTEGRADA_RT11
(
  COMPANIA     CHAR(4) not null,
  ANIO         NUMBER not null,
  MES          NUMBER not null,
  SUCURSAL     VARCHAR2(10) not null,
  TIPO_PLANILLA CHAR(1) not null,
  PENSIONES    NUMBER(10) not null,
  SALUD        NUMBER(10) not null,
  RIESGOS      NUMBER(10) not null,
  CAJAS        NUMBER(10) not null,
  SENA         NUMBER(10) not null,
  ICBF         NUMBER(10) not null,
  ESAP         NUMBER(10) not null,
  MINEDUCACION NUMBER(10) not null,
  GRAN_TOTAL   NUMBER,
  CONTEO_AFP   NUMBER(10) not null,
  CONTEO_EPS   NUMBER(10) not null,
  CONTEO_ARP   NUMBER(10) not null,
  CONTEO_CCF   NUMBER(10) not null
)
tablespace TS_ADAMDATOS
;
-- Create/Recreate primary, unique and foreign key constraints 
alter table adam.FCO_INTEGRADA_RT11
  add constraint PK_FCO_INTEGRADA_RT11 primary key (COMPANIA,ANIO,MES,SUCURSAL,TIPO_PLANILLA)
  using index 
  tablespace TS_ADAMINDICES
;
-- Grant/Revoke object privileges 
GRANT ALL ON FCO_INTEGRADA_RT11 TO ADAMA;

create or replace procedure adam.sp_fco_pi_tot_medu(p_compania in char,
                                                    p_anio     in number,
                                                    p_mes      in number,
                                                    p_sucursal in char,
                                                    p_tipo_planilla in char) is
  v_rec_rt10 fco_integrada_rt10%rowtype;

  cursor c1(c_compania char, c_anio number, c_mes number, c_sucursal char, c_tipo_planilla char) return fco_integrada_rt10%rowtype is
    select compania,
           anio,
           mes,
           nvl(c_sucursal, ' ') sucursal,
           c_tipo_planilla tipo_planilla,
           1 secuencia,
           '899999001' nit,
           '7' dv,
           sum(nvl(aporte_medu, 0)) valor,
           0,
           0,
           null
      from fco_integrada_det
     where compania = c_compania
       and anio = c_anio
       and mes = c_mes
       and (sucursal = c_sucursal or c_sucursal is null)
       and tipo_planilla = c_tipo_planilla
       and nvl(aporte_medu, 0) <> 0
     group by compania, anio, mes;

begin

  open c1(p_compania, p_anio, p_mes, p_sucursal, p_tipo_planilla);
  loop
    fetch c1
      into v_rec_rt10;
    exit when c1%notfound;
    insert into fco_integrada_rt10 values v_rec_rt10;
  end loop;
  close c1;

end sp_fco_pi_tot_medu;
/

create or replace procedure adam.sp_fco_pi_tot_esap(p_compania in char,
                                                    p_anio     in number,
                                                    p_mes      in number,
                                                    p_sucursal in char,
                                                    p_tipo_planilla in char) is
  v_rec_rt09 fco_integrada_rt09%rowtype;

  cursor c1(c_compania char, c_anio number, c_mes number, c_sucursal char, c_tipo_planilla char) return fco_integrada_rt09%rowtype is
    select compania,
           anio,
           mes,
           nvl(c_sucursal, ' ') sucursal,
           c_tipo_planilla tipo_planilla,
           1 secuencia,
           '899999054' nit,
           '7' dv,
           sum(nvl(aporte_esap, 0)) valor,
           0,
           0,
           null
      from fco_integrada_det
     where compania = c_compania
       and anio = c_anio
       and mes = c_mes
       and (sucursal = c_sucursal or c_sucursal is null)
       and tipo_planilla = c_tipo_planilla
       and nvl(aporte_esap, 0) <> 0
     group by compania, anio, mes;

begin

  open c1(p_compania, p_anio, p_mes, p_sucursal, p_tipo_planilla);
  loop
    fetch c1
      into v_rec_rt09;
    exit when c1%notfound;
    insert into fco_integrada_rt09 values v_rec_rt09;
  end loop;
  close c1;

end sp_fco_pi_tot_esap;
/
create or replace procedure adam.sp_fco_pi_tot_pagar(pch_compania in char,
                                                     psi_anio     in number,
                                                     pti_mes      in number,
                                                     pch_sucursal in char,
                                                     pch_tipo_planilla in char) is
begin

  insert into fco_integrada_rt11
    (compania,
     anio,
     mes,
     sucursal,
     tipo_planilla,
     pensiones,
     salud,
     riesgos,
     cajas,
     sena,
     icbf,
     esap,
     mineducacion,
     conteo_afp,
     conteo_eps,
     conteo_arp,
     conteo_ccf)
  values
    (pch_compania,
     psi_anio,
     pti_mes,
     nvl(pch_sucursal, ' '),
     pch_tipo_planilla,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0,
     0);

  update fco_integrada_rt11
     set pensiones  = (select nvl(sum(total_pagar), 0)
                         from fco_integrada_rt03 x
                        where fco_integrada_rt11.compania = x.compania
                          and fco_integrada_rt11.anio = x.anio
                          and fco_integrada_rt11.mes = x.mes
                          and fco_integrada_rt11.sucursal = x.sucursal
                          and fco_integrada_rt11.tipo_planilla = x.tipo_planilla),
         conteo_afp = (select count(*)
                         from fco_integrada_rt03 x
                        where fco_integrada_rt11.compania = x.compania
                          and fco_integrada_rt11.anio = x.anio
                          and fco_integrada_rt11.mes = x.mes
                          and fco_integrada_rt11.sucursal = x.sucursal
                          and fco_integrada_rt11.tipo_planilla = x.tipo_planilla)
   where compania = pch_compania
     and anio = psi_anio
     and mes = pti_mes
     and (sucursal = pch_sucursal or pch_sucursal is null)
     and tipo_planilla = pch_tipo_planilla;

  update fco_integrada_rt11
     set salud      = (select nvl(sum(total_pagar), 0)
                         from fco_integrada_rt04 x
                        where fco_integrada_rt11.compania = x.compania
                          and fco_integrada_rt11.anio = x.anio
                          and fco_integrada_rt11.mes = x.mes
                          and fco_integrada_rt11.sucursal = x.sucursal
                          and fco_integrada_rt11.tipo_planilla = x.tipo_planilla),
         conteo_eps = (select count(*)
                         from fco_integrada_rt04 x
                        where fco_integrada_rt11.compania = x.compania
                          and fco_integrada_rt11.anio = x.anio
                          and fco_integrada_rt11.mes = x.mes
                          and fco_integrada_rt11.sucursal = x.sucursal
                          and fco_integrada_rt11.tipo_planilla = x.tipo_planilla)
   where compania = pch_compania
     and anio = psi_anio
     and mes = pti_mes
     and (sucursal = pch_sucursal or pch_sucursal is null)
     and tipo_planilla = pch_tipo_planilla;

  update fco_integrada_rt11
     set riesgos    = (select nvl(sum(total_pagar), 0)
                         from fco_integrada_rt05 x
                        where fco_integrada_rt11.compania = x.compania
                          and fco_integrada_rt11.anio = x.anio
                          and fco_integrada_rt11.mes = x.mes
                          and fco_integrada_rt11.sucursal = x.sucursal
                          and fco_integrada_rt11.tipo_planilla = x.tipo_planilla),
         conteo_arp = (select count(*)
                         from fco_integrada_rt05 x
                        where fco_integrada_rt11.compania = x.compania
                          and fco_integrada_rt11.anio = x.anio
                          and fco_integrada_rt11.mes = x.mes
                          and fco_integrada_rt11.sucursal = x.sucursal
                          and fco_integrada_rt11.tipo_planilla = x.tipo_planilla)
   where compania = pch_compania
     and anio = psi_anio
     and mes = pti_mes
     and (sucursal = pch_sucursal or pch_sucursal is null)
     and tipo_planilla = pch_tipo_planilla;

  update fco_integrada_rt11
     set cajas      = (select nvl(sum(total_pagar), 0)
                         from fco_integrada_rt06 x
                        where fco_integrada_rt11.compania = x.compania
                          and fco_integrada_rt11.anio = x.anio
                          and fco_integrada_rt11.mes = x.mes
                          and fco_integrada_rt11.sucursal = x.sucursal
                          and fco_integrada_rt11.tipo_planilla = x.tipo_planilla),
         conteo_ccf = (select count(*)
                         from fco_integrada_rt06 x
                        where fco_integrada_rt11.compania = x.compania
                          and fco_integrada_rt11.anio = x.anio
                          and fco_integrada_rt11.mes = x.mes
                          and fco_integrada_rt11.sucursal = x.sucursal
                          and fco_integrada_rt11.tipo_planilla = x.tipo_planilla)
   where compania = pch_compania
     and anio = psi_anio
     and mes = pti_mes
     and (sucursal = pch_sucursal or pch_sucursal is null)
     and tipo_planilla = pch_tipo_planilla;

  update fco_integrada_rt11
     set sena = (select nvl(sum(total_pagar), 0)
                   from fco_integrada_rt07 x
                  where fco_integrada_rt11.compania = x.compania
                    and fco_integrada_rt11.anio = x.anio
                    and fco_integrada_rt11.mes = x.mes
                    and fco_integrada_rt11.sucursal = x.sucursal
                    and fco_integrada_rt11.tipo_planilla = x.tipo_planilla)
   where compania = pch_compania
     and anio = psi_anio
     and mes = pti_mes
     and (sucursal = pch_sucursal or pch_sucursal is null)
     and tipo_planilla = pch_tipo_planilla;

  update fco_integrada_rt11
     set icbf = (select nvl(sum(total_pagar), 0)
                   from fco_integrada_rt08 x
                  where fco_integrada_rt11.compania = x.compania
                    and fco_integrada_rt11.anio = x.anio
                    and fco_integrada_rt11.mes = x.mes
                    and fco_integrada_rt11.sucursal = x.sucursal
                    and fco_integrada_rt11.tipo_planilla = x.tipo_planilla)
   where compania = pch_compania
     and anio = psi_anio
     and mes = pti_mes
     and (sucursal = pch_sucursal or pch_sucursal is null)
     and tipo_planilla = pch_tipo_planilla;

  update fco_integrada_rt11
     set esap = (select nvl(sum(total_pagar), 0)
                   from fco_integrada_rt09 x
                  where fco_integrada_rt11.compania = x.compania
                    and fco_integrada_rt11.anio = x.anio
                    and fco_integrada_rt11.mes = x.mes
                    and fco_integrada_rt11.sucursal = x.sucursal
                    and fco_integrada_rt11.tipo_planilla = x.tipo_planilla)
   where compania = pch_compania
     and anio = psi_anio
     and mes = pti_mes
     and (sucursal = pch_sucursal or pch_sucursal is null)
     and tipo_planilla = pch_tipo_planilla;

  update fco_integrada_rt11
     set mineducacion = (select nvl(sum(total_pagar), 0)
                           from fco_integrada_rt10 x
                          where fco_integrada_rt11.compania = x.compania
                            and fco_integrada_rt11.anio = x.anio
                            and fco_integrada_rt11.mes = x.mes
                          and fco_integrada_rt11.sucursal = x.sucursal
                          and fco_integrada_rt11.tipo_planilla = x.tipo_planilla)
   where compania = pch_compania
     and anio = psi_anio
     and mes = pti_mes
     and (sucursal = pch_sucursal or pch_sucursal is null)
     and tipo_planilla = pch_tipo_planilla;

end sp_fco_pi_tot_pagar;
/

create or replace procedure sp_fco_deltot(pch_compania in char,
                                               psi_anio     in number,
                                               pti_mes      in number,
                                               pch_sucursal in char,
                                               pch_tipo_planilla in char) is
begin
  begin
    DELETE fco_integrada_rt03
     WHERE compania = pch_compania
       AND anio = psi_anio
       AND mes = pti_mes
       AND (sucursal = pch_sucursal OR sucursal = ' ')
       AND tipo_planilla = pch_tipo_planilla;
    DELETE fco_integrada_rt04
     WHERE compania = pch_compania
       AND anio = psi_anio
       AND mes = pti_mes
       AND (sucursal = pch_sucursal OR sucursal = ' ')
       AND tipo_planilla = pch_tipo_planilla;
    DELETE fco_integrada_rt05
     WHERE compania = pch_compania
       AND anio = psi_anio
       AND mes = pti_mes
       AND (sucursal = pch_sucursal OR sucursal = ' ')
       AND tipo_planilla = pch_tipo_planilla;
    DELETE fco_integrada_rt06
     WHERE compania = pch_compania
       AND anio = psi_anio
       AND mes = pti_mes
       AND (sucursal = pch_sucursal OR sucursal = ' ')
       AND tipo_planilla = pch_tipo_planilla;
    DELETE fco_integrada_rt07
     WHERE compania = pch_compania
       AND anio = psi_anio
       AND mes = pti_mes
       AND (sucursal = pch_sucursal OR sucursal = ' ')
       AND tipo_planilla = pch_tipo_planilla;
    DELETE fco_integrada_rt08
     WHERE compania = pch_compania
       AND anio = psi_anio
       AND mes = pti_mes
       AND (sucursal = pch_sucursal OR sucursal = ' ')
       AND tipo_planilla = pch_tipo_planilla;
    DELETE fco_integrada_rt09
     WHERE compania = pch_compania
       AND anio = psi_anio
       AND mes = pti_mes
       AND (sucursal = pch_sucursal OR sucursal = ' ')
       AND tipo_planilla = pch_tipo_planilla;
    DELETE fco_integrada_rt10
     WHERE compania = pch_compania
       AND anio = psi_anio
       AND mes = pti_mes
       AND (sucursal = pch_sucursal OR sucursal = ' ')
       AND tipo_planilla = pch_tipo_planilla;
    DELETE fco_integrada_rt11
     WHERE compania = pch_compania
       AND anio = psi_anio
       AND mes = pti_mes
       AND (sucursal = pch_sucursal OR sucursal = ' ')
       AND tipo_planilla = pch_tipo_planilla;
  exception
    when NO_DATA_FOUND then
      null;
    when others then
      Raise_application_error(-20001,
                              'Error al borrar registros anteriores');
      return;
  end;
end sp_fco_deltot;
/

create or replace procedure sp_fco_deltab(pch_compania in char,
                                               psi_anio     in number,
                                               pti_mes      in number,
                                               pch_sucursal in char,
                                               pch_tipo_planilla in char) is
begin
  begin
    DELETE fco_integrada_det
     WHERE compania = pch_compania
       AND anio = psi_anio
       AND mes = pti_mes
       AND (sucursal = pch_sucursal OR sucursal = ' ')
       AND tipo_planilla = pch_tipo_planilla;
    DELETE fco_integrada_cab
     WHERE compania = pch_compania
       AND anio = psi_anio
       AND mes = pti_mes
       AND (sucursal = pch_sucursal OR sucursal = ' ')
       AND tipo_planilla = pch_tipo_planilla;
  exception
    when NO_DATA_FOUND then
      null;
    when others then
      Raise_application_error(-20001,
                              'Error al borrar registros anteriores');
      return;
  end;
end sp_fco_deltab;
/

create or replace procedure sp_fco_inscab(pch_compania in char,
                                               psi_anio     in number,
                                               pti_mes      in number,
                                               pch_sucursal in char,
                                               pch_tipo_planilla in char) is

  v_tipo_id               fco_integrada_cab.tipo_documento%TYPE;
  v_cod_admon             fco_cias_datos_adi.cod_admon%TYPE;
  v_descripcion           fco_sucursales.descripcion%TYPE;
  v_sec                   fco_integrada_cab.secuencia%TYPE := 1;
  v_nombre_cia            companias.nombre_cia%type;
  v_registro_fiscal       companias.registro_fiscal%type;
  v_fco_integrada_cab_reg fco_integrada_cab%rowtype;
  v_year char(4);
  v_month char(2);

begin

  v_sec := 1;

  begin
    select nvl(substr(cda.tipo_id, 1, 2), 'NI'), nvl(cda.cod_arp, 0)
      into v_tipo_id, v_cod_admon
      from fco_cias_datos_adi cda
     where cda.compania = pch_compania;
  exception
    when NO_DATA_FOUND then
      Raise_application_error(-20001,
                              'No se encontraron datos adicionales de la compania');
      return;
  end;

  begin
    select nvl(suc.descripcion, ' ')
      into v_descripcion
      from fco_sucursales suc
     where suc.compania = pch_compania
       and suc.sucursal = pch_sucursal;
  exception
    when NO_DATA_FOUND then
      v_descripcion := ' ';
  end;

  begin
  
    select cias.nombre_cia, cias.registro_fiscal
      into v_nombre_cia, v_registro_fiscal
      from companias cias
     where cias.compania = pch_compania;
  
    v_fco_integrada_cab_reg.compania       := pch_compania;
    v_fco_integrada_cab_reg.anio           := psi_anio;
    v_fco_integrada_cab_reg.mes            := pti_mes;
    v_fco_integrada_cab_reg.sucursal       := pch_sucursal;
    v_fco_integrada_cab_reg.tipo_planilla  := pch_tipo_planilla;
    v_fco_integrada_cab_reg.secuencia      := v_sec;
    v_fco_integrada_cab_reg.razon_social   := v_nombre_cia;
    v_fco_integrada_cab_reg.tipo_documento := v_tipo_id;
    if LENGTH(fn_solonum(v_registro_fiscal)) = 0 then
      v_fco_integrada_cab_reg.nro_id := ' ';
    else
      v_fco_integrada_cab_reg.nro_id := substr(substr(fn_solonum(v_registro_fiscal),
                                                      1,
                                                      LENGTH(fn_solonum(v_registro_fiscal)) - 1),
                                               1,
                                               16);
    end if;
    v_fco_integrada_cab_reg.dv := NVL(substr(fn_solonum(v_registro_fiscal),
                                             -1),
                                      ' ');
    if pch_sucursal is null or pch_sucursal = ' ' then
      v_fco_integrada_cab_reg.forma_presentacion := 'C';
    else
      v_fco_integrada_cab_reg.forma_presentacion := 'S';
    end if;
    v_fco_integrada_cab_reg.nombre_sucursal := v_descripcion;
    if v_cod_admon = '0' then
      v_fco_integrada_cab_reg.nueva_arp := ' ';
    else
      v_fco_integrada_cab_reg.nueva_arp := v_cod_admon;
    end if;
    v_fco_integrada_cab_reg.periodo := substr(RTRIM(to_char(psi_anio)) || ltrim(to_char(pti_mes, '00')), 1, 6);
    if pti_mes = 12 then
      v_fco_integrada_cab_reg.periodo_salud := RTRIM(to_char(psi_anio + 1)) || '01';
    else
      v_year := RTRIM(to_char(psi_anio));
      v_month := ltrim(rtrim(to_char(pti_mes + 1, '00')));
      v_fco_integrada_cab_reg.periodo_salud := v_year || v_month;
    end if;
    v_fco_integrada_cab_reg.nro_radicacion := ' ';
    v_fco_integrada_cab_reg.fecha_pago     := sysdate;
    v_fco_integrada_cab_reg.nro_empleados  := 0;
    v_fco_integrada_cab_reg.valor_nomina   := 0;
    v_fco_integrada_cab_reg.operador       := '00';
    v_fco_integrada_cab_reg.sit_periodo    := 1;
  
    insert into fco_integrada_cab values v_fco_integrada_cab_reg;
 end;

end sp_fco_inscab;
/

