CREATE OR REPLACE PROCEDURE ADAM.sp_fco_cambio_fantasmas
(
    pch_compania char, 
    pch_trabajador char,
    psi_anio number,
    pti_mes number,
    pch_sucursal char,
    pch_tipo_id 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_AFP char,
    pch_EPS char,
    pch_CCF char,
    pch_CTR char,
    pti_dias_AFP number,
    pti_dias_EPS number,
    pti_dias_ARP number,
    pti_dias_CCF number,
    pdc_salario number,
    pdc_IBC_AFP number,
    pdc_IBC_EPS number,
    pdc_IBC_ARP number,
    pdc_IBC_CCF number,
    pdc_aporte_AFP number,
    pdc_aporte_FSP_sol number,
    pdc_aporte_FSP_sub number,
    pdc_aporte_EPS number,
    pdc_UPC_adicional number,
    pdc_tarifa_ARP number,
    pdc_aporte_ARP number,
    pdc_aporte_CCF number,
    pdc_aporte_SENA number,
    pdc_aporte_ICBF number,
    pdc_aporte_ESAP number,
    pdc_aporte_MEdu number,
    pch_extranjero char,
    pch_reside_ext char,
    pch_departamento char,
    pch_municipio char,
    pbi_planilla_pens number
)
AS
	vnm_existe	number(1);
BEGIN
	vnm_existe := 0;
	BEGIN

    SELECT 1 INTO vnm_existe
    FROM fco_fantasmas
    WHERE compania = pch_compania 
		And trabajador = pch_trabajador;
	EXCEPTION
		WHEN OTHERS THEN vnm_existe := 0;
	END;

	IF vnm_existe = 0 THEN
		raise_application_error(-20001, 'El registro a actualizar en [fco_fantasmas] no existe');
		return;
	END IF;


--	BEGIN
    UPDATE fco_fantasmas
    SET anio = psi_anio, 
        mes = pti_mes, 
        sucursal = NVL(pch_sucursal, ' '),
        tipo_id = NVL(pch_tipo_id, ' '),
        nro_id = NVL(pvc_nro_id, 0),
        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, ' '),
        AFP = NVL(pch_AFP, ' '), 
        EPS = NVL(pch_EPS, ' '),
        CCF = NVL(pch_CCF, ' '),
        CTR = NVL(pch_CTR, ' '),
        dias_AFP = NVL(pti_dias_AFP, 0),
        dias_EPS = NVL(pti_dias_EPS, 0),
        dias_ARP = NVL(pti_dias_ARP, 0),
        dias_CCF = NVL(pti_dias_CCF, 0),
        salario = NVL(pdc_salario, 0),
        IBC_AFP = NVL(pdc_IBC_AFP, 0),
        IBC_EPS = NVL(pdc_IBC_EPS, 0),
        IBC_ARP = NVL(pdc_IBC_ARP, 0),
        IBC_CCF = NVL(pdc_IBC_CCF, 0),
        aporte_AFP = NVL(pdc_aporte_AFP, 0),
        aporte_FSP_sol = NVL(pdc_aporte_FSP_sol, 0), 
        aporte_FSP_sub = NVL(pdc_aporte_FSP_sub, 0),
        aporte_EPS = NVL(pdc_aporte_EPS, 0),
        UPC_adicional = NVL(pdc_UPC_adicional, 0),
        tarifa_ARP = NVL(pdc_tarifa_ARP, 0),
        aporte_ARP = NVL(pdc_aporte_ARP, 0),
        aporte_CCF = NVL(pdc_aporte_CCF, 0),
        aporte_SENA = NVL(pdc_aporte_SENA, 0),
        aporte_ICBF = NVL(pdc_aporte_ICBF, 0),
        aporte_ESAP = NVL(pdc_aporte_ESAP, 0),
        aporte_MEdu = NVL(pdc_aporte_MEdu, 0),
        extranjero = NVL(UPPER(pch_extranjero), 'N'),
        residente_exterior = NVL(UPPER(pch_reside_ext), 'N'),
        departamento = NVL(pch_departamento, ''),
        municipio = NVL(pch_municipio, ''),
        planilla_pens = NVL(pbi_planilla_pens, 0)        
    WHERE compania = pch_compania
     AND RTRIM(LTRIM(trabajador)) = RTRIM(LTRIM(pch_trabajador));
/*
	EXCEPTION
		WHEN OTHERS THEN
		raise_application_error(-20001, 'Error al actualizar la tabla [fco_Fantasmas]');
		return;
	END;
*/
	COMMIT WORK;
END;
/
CREATE PUBLIC SYNONYM sp_fco_cambio_fantasmas FOR ADAM.sp_fco_cambio_fantasmas;
GRANT EXECUTE ON sp_fco_cambio_fantasmas TO adama;
