IF OBJECT_ID('dbo.sp_fco_cambio_fantasmas') IS NOT NULL
    DROP PROCEDURE dbo.sp_fco_cambio_fantasmas
GO
CREATE PROCEDURE dbo.sp_fco_cambio_fantasmas
(
    @pch_compania char(4), 
    @pch_trabajador char(10),
    @psi_anio smallint,
    @pti_mes tinyint,
    @pch_sucursal char(10),
    @pch_tipo_id char(2),
    @pvc_nro_id varchar(16),
    @pti_tipo_cotizante tinyint,
    @pvc_primer_apellido varchar(20), 
    @pvc_segundo_apellido varchar(30), 
    @pvc_primer_nombre varchar(20), 
    @pvc_segundo_nombre varchar(30), 
    @pch_AFP char(10),
    @pch_EPS char(10),
    @pch_CCF char(10),
    @pch_CTR char(10),
    @pti_dias_AFP tinyint,
    @pti_dias_EPS tinyint,
    @pti_dias_ARP tinyint,
    @pti_dias_CCF tinyint,
    @pdc_salario decimal(9),
    @pdc_IBC_AFP decimal(9),
    @pdc_IBC_EPS decimal(9),
    @pdc_IBC_ARP decimal(9),
    @pdc_IBC_CCF decimal(9),
    @pdc_aporte_AFP decimal(9),
    @pdc_aporte_FSP_sol decimal(9),
    @pdc_aporte_FSP_sub decimal(9),
    @pdc_aporte_EPS decimal(9),
    @pdc_UPC_adicional decimal(9),
    @pdc_tarifa_ARP decimal(9,8),
    @pdc_aporte_ARP decimal(9),
    @pdc_aporte_CCF decimal(9),
    @pdc_aporte_SENA decimal(9),
    @pdc_aporte_ICBF decimal(9),
    @pdc_aporte_ESAP decimal(9),
    @pdc_aporte_MEdu decimal(9),
    @pch_extranjero char(1) = 'N',
    @pch_reside_ext char(1) = 'N',
    @pch_departamento char(2) = '',
    @pch_municipio char(3) = '',
    @pbi_planilla_pens bit = 0
)
AS
BEGIN
    IF NOT EXISTS (SELECT 1 FROM fco_fantasmas
               WHERE compania = @pch_compania
                 AND RTRIM(LTRIM(trabajador)) = RTRIM(LTRIM(@pch_trabajador)))
    BEGIN
        RAISERROR ('El registro a modificar en [fco_fantasmas] no existe', 16, 1)
        RETURN
    END

    UPDATE fco_fantasmas
    SET anio = @psi_anio, 
        mes = @pti_mes, 
        sucursal = @pch_sucursal, 
        tipo_id = @pch_tipo_id, 
        nro_id = @pvc_nro_id, 
        tipo_cotizante = IsNull(@pti_tipo_cotizante, 1),
        primer_apellido = IsNull(@pvc_primer_apellido, ''),
        segundo_apellido = IsNull(@pvc_segundo_apellido, ''),
        primer_nombre = IsNull(@pvc_primer_nombre, ''),
        segundo_nombre = IsNull(@pvc_segundo_nombre, ''),
        AFP = IsNull(@pch_AFP, ''),
        EPS = IsNull(@pch_EPS, ''),
        CCF = IsNull(@pch_CCF, ''),
        CTR = IsNull(@pch_CTR, ''),
        dias_AFP = IsNull(@pti_dias_AFP, 0), dias_EPS = IsNull(@pti_dias_EPS, 0), 
        dias_ARP = IsNull(@pti_dias_ARP, 0), dias_CCF = IsNull(@pti_dias_CCF, 0),
        salario = IsNull(@pdc_salario, 0),
        IBC_AFP = IsNull(@pdc_IBC_AFP, 0), IBC_EPS = IsNull(@pdc_IBC_EPS, 0), 
        IBC_ARP = IsNull(@pdc_IBC_ARP, 0), IBC_CCF = IsNull(@pdc_IBC_CCF, 0), 
        aporte_AFP = IsNull(@pdc_aporte_AFP, 0), 
        aporte_FSP_sol = IsNull(@pdc_aporte_FSP_sol, 0), aporte_FSP_sub = IsNull(@pdc_aporte_FSP_sub, 0),
        aporte_EPS = IsNull(@pdc_aporte_EPS, 0), UPC_adicional = IsNull(@pdc_UPC_adicional, 0),
        tarifa_ARP = IsNull(@pdc_tarifa_ARP, 0), aporte_ARP = IsNull(@pdc_aporte_ARP, 0),
        aporte_CCF = IsNull(@pdc_aporte_CCF, 0), aporte_SENA = IsNull(@pdc_aporte_SENA, 0), aporte_ICBF = IsNull(@pdc_aporte_ICBF, 0),
        aporte_ESAP = IsNull(@pdc_aporte_ESAP, 0), aporte_MEdu = IsNull(@pdc_aporte_MEdu, 0),
        extranjero = IsNull(UPPER(@pch_extranjero), 'N'),
        residente_exterior = IsNull(UPPER(@pch_reside_ext), 'N'),
        departamento = IsNull(@pch_departamento, ''),
        municipio = IsNull(@pch_municipio, ''),
        planilla_pens = IsNull(@pbi_planilla_pens, 0)
    WHERE compania = @pch_compania
     AND RTRIM(LTRIM(trabajador)) = RTRIM(LTRIM(@pch_trabajador))
END
GO
GRANT EXECUTE ON dbo.sp_fco_cambio_fantasmas TO PUBLIC
GO
