IF OBJECT_ID('dbo.sp_fco_crea_ausentismo') IS NOT NULL
   DROP PROCEDURE dbo.sp_fco_crea_ausentismo
GO
CREATE PROCEDURE dbo.sp_fco_crea_ausentismo
(
    @pch_compania char(4),
    @pin_id_ausentismo int,
    @pch_trabajador char(10),
    @psi_concepto smallint,
    @pti_tipo tinyint,
    @pdt_inicio smalldatetime,
    @pdt_causacion smalldatetime,
    @pdt_pago smalldatetime,
    @pdt_fin smalldatetime,
    @psi_dias smallint,
    @pti_tipo_dias tinyint,
    @pvc_diagnostico varchar(5),
    @pvc_observaciones varchar(1000),
    @psi_randomico smallint,
    @pin_prorroga  int,  --agregado DCRP Agosto25/2003. Puede venir nulo
    @pde_valor_ibc  decimal(19,6),
    @pti_calculo_ibc decimal(19,6),
    @pdt_ini_real smalldatetime,
    @pdt_fin_real smalldatetime,
    @pdt_accidente smalldatetime,
    @pvc_nro_incapacidad varchar(20),
    @pti_horas tinyint
)
AS
DECLARE
    @vin_id_ausentismo int
BEGIN

    IF @pti_tipo = 4  --PRORROGA 
		BEGIN
			 IF NOT EXISTS(SELECT 1 
					          FROM fco_ausentismos
					          WHERE compania = @pch_compania   AND
					          trabajador = @pch_trabajador AND
					          id_ausentismo = @pin_prorroga AND
					          concepto = @psi_concepto AND
					          tipo <> 4)
			 BEGIN
					RAISERROR 206800 'El registro a prorrogarar en [FCO_AUSENTISMOS] no existe.'
          RETURN;
       END
    END

    IF @psi_randomico = 0 --UPDATE
        UPDATE fco_ausentismos
        SET concepto = @psi_concepto,
            tipo = @pti_tipo,
            fecha_inicio = @pdt_inicio,
            fecha_causacion = @pdt_causacion,
            fecha_pago = @pdt_pago,
            fecha_fin = @pdt_fin,
            dias = @psi_dias,
            tipo_dias = @pti_tipo_dias,
            diagnostico = @pvc_diagnostico,
            observaciones = @pvc_observaciones,
            id_origen = @pin_prorroga,
            valor_ibc = @pde_valor_ibc,
            calculo_ibc = @pti_calculo_ibc,
            fecha_ini_real = @pdt_ini_real,
            fecha_fin_real = @pdt_fin_real,
            fecha_accidente = @pdt_accidente,
            nro_incapacidad = @pvc_nro_incapacidad,
            horas = @pti_horas
        WHERE
            compania = @pch_compania And
            id_ausentismo = @pin_id_ausentismo
    ELSE
    BEGIN
        BEGIN TRAN

        SELECT @vin_id_ausentismo = IsNull(id_ausentismo,0) + 1     
        FROM fco_ausentismos_id
        WHERE compania = @pch_compania

        IF IsNull(@vin_id_ausentismo, 0) = 0
        BEGIN
            SET @vin_id_ausentismo = 1
            INSERT INTO fco_ausentismos_id VALUES (@pch_compania, 1)
        END
        ELSE        
            UPDATE fco_ausentismos_id
            SET id_ausentismo = @vin_id_ausentismo
            WHERE compania = @pch_compania
        

        INSERT INTO fco_ausentismos 
        (compania, id_ausentismo, trabajador, concepto, tipo, fecha_inicio, fecha_causacion, fecha_pago, 
         fecha_fin, dias, tipo_dias, diagnostico, observaciones, id_origen, valor_ibc, calculo_ibc,
         fecha_ini_real, fecha_fin_real, fecha_accidente, nro_incapacidad, horas)
        VALUES
        (@pch_compania, @vin_id_ausentismo, @pch_trabajador, @psi_concepto, @pti_tipo, @pdt_inicio, @pdt_causacion, @pdt_pago,
         @pdt_fin, @psi_dias, @pti_tipo_dias, @pvc_diagnostico, @pvc_observaciones, @pin_prorroga, @pde_valor_ibc, @pti_calculo_ibc,
         @pdt_ini_real, @pdt_fin_real, @pdt_accidente, @pvc_nro_incapacidad, @pti_horas)

        DELETE fco_ausentismos_id_as
        COMMIT TRAN        

        INSERT INTO fco_ausentismos_id_as VALUES (@psi_randomico, @vin_id_ausentismo)

    END
END
GO
GRANT EXECUTE ON sp_fco_crea_ausentismo TO Public
GO