CREATE OR REPLACE PROCEDURE ADAM.sp_fco_alta_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
    vsm_existe	number(1);
BEGIN
	vsm_existe := 0;
	BEGIN    
		SELECT 1 INTO vsm_existe FROM fco_Fantasmas
    WHERE compania = pch_compania 
		And trabajador = pch_trabajador 
		And anio = psi_anio 
		And mes = pti_mes;
	EXCEPTION
		WHEN OTHERS THEN vsm_existe := 0;
	END;

	IF vsm_existe = 1 THEN
		raise_application_error(-20001, 'El registro a insertar en [fco_fantasmas] ya existe');
		return;
	END IF;

--	BEGIN
    INSERT INTO fco_fantasmas
    (compania, trabajador, anio, mes, sucursal, tipo_id, nro_id, tipo_cotizante, primer_apellido, segundo_apellido, 
     primer_nombre, segundo_nombre, AFP, EPS, CCF, CTR, dias_AFP, dias_EPS, dias_ARP, dias_CCF, salario, IBC_AFP, IBC_EPS, 
     IBC_ARP, IBC_CCF, aporte_AFP, aporte_FSP_sol, aporte_FSP_sub, aporte_EPS, UPC_adicional, tarifa_ARP, aporte_ARP, 
     aporte_CCF, aporte_SENA, aporte_ICBF, aporte_ESAP, aporte_MEdu, extranjero, residente_exterior, departamento, municipio, planilla_pens)
    SELECT 
     pch_compania, pch_trabajador, NVL(psi_anio, 0), NVL(pti_mes, 12), 
     nvl(pch_sucursal, ' '), NVL(pch_tipo_id, ' '), NVL(pvc_nro_id, 0), NVL(pti_tipo_cotizante, 1), 
     NVL(pvc_primer_apellido, ' '), NVL(pvc_segundo_apellido, ' '), 
     NVL(pvc_primer_nombre, ' '), NVL(pvc_segundo_nombre, ' '),
     nvl(pch_AFP, ' '), nvl(pch_EPS, ' '), nvl(pch_CCF, ' '), nvl(pch_CTR, ' '), 
     NVL(pti_dias_AFP, 0), NVL(pti_dias_EPS, 0), NVL(pti_dias_ARP, 0), NVL(pti_dias_CCF, 0), 
     NVL(pdc_salario, 0), NVL(pdc_IBC_AFP, 0), NVL(pdc_IBC_EPS, 0), NVL(pdc_IBC_ARP, 0), 
     NVL(pdc_IBC_CCF, 0), NVL(pdc_aporte_AFP, 0), NVL(pdc_aporte_FSP_sol, 0), NVL(pdc_aporte_FSP_sub, 0), 
     NVL(pdc_aporte_EPS, 0), NVL(pdc_UPC_adicional, 0), NVL(pdc_tarifa_ARP, 0), NVL(pdc_aporte_ARP, 0), 
     NVL(pdc_aporte_CCF, 0), NVL(pdc_aporte_SENA, 0), NVL(pdc_aporte_ICBF, 0), 
     NVL(pdc_aporte_ESAP, 0), NVL(pdc_aporte_MEdu, 0), NVL(pch_extranjero, ' '), NVL(pch_reside_ext, ' '), 
     NVL(pch_departamento, ' '), NVL(pch_municipio, ' '), NVL(pbi_planilla_pens, 0)
     FROM DUAL;
--	EXCEPTION
	--	WHEN OTHERS THEN
	--	raise_application_error(-20001, 'Error al tratar de insertar en la tabla [fco_fantasmas]');
	--	return;
--	END;
	COMMIT WORK;
END;
/
CREATE PUBLIC SYNONYM sp_fco_alta_fantasmas FOR ADAM.sp_fco_alta_fantasmas;
GRANT EXECUTE ON sp_fco_alta_fantasmas TO adama;
