CREATE PROCEDURE [dbo].[pSJFondoDesem]
@pCodigEmple VARCHAR(10),
@pDFecha DATE,
@pHFecha DATE,
@pFechaIngre DATE OUTPUT,
@pAntig INT OUTPUT,
@pNumerIeric VARCHAR(10) OUTPUT,
@pPorceFondoDesem1 DECIMAL(15,4) OUTPUT,
@pPorceFondoDesem2 DECIMAL(15,4) OUTPUT,
@pFormaPagoFondoDesem CHAR(1) OUTPUT,
@pImporFinal DECIMAL(15,4) OUTPUT,
@CuentaFondoDesem VARCHAR(12) OUTPUT,
@LibreFondoDesem VARCHAR(10) OUTPUT,
@Calle VARCHAR(60) OUTPUT,
@Numer VARCHAR(5) OUTPUT,
@CodigCiuda VARCHAR(10) OUTPUT,
@DescrCiuda VARCHAR(60) OUTPUT
AS
BEGIN
DECLARE @vNumerLiqui INT;
DECLARE @vFechaEgres DATETIME;
DECLARE @vFechaIngre DATETIME;
SET NOCOUNT ON
SELECT @vFechaEgres = tSJEmple.FechaEgres
FROM tSJEmple
WHERE CodigEmple = @pCodigEmple
AND MONTH(FechaEgres) BETWEEN MONTH(@pDFecha) AND MONTH(@pHFecha)
AND YEAR(FechaEgres) BETWEEN YEAR(@pDFecha) AND YEAR(@pHFecha)
SELECT @pNumerIeric = tKiParam.NumerIeric,
@pPorceFondoDesem1 = tKiParam.PorceFondoDesem1,
@pPorceFondoDesem2 = tKiParam.PorceFondoDesem2,
@pFormaPagoFondoDesem = tKiParam.FormaPagoFondoDesem
FROM tKiParam
IF (@vFechaEgres IS NOT NULL) AND (@pFormaPagoFondoDesem = 'R')
RETURN 1;
ELSE
BEGIN
SELECT @pFechaIngre = FechaIngre
FROM tSJEmple
WHERE CodigEmple = @pCodigEmple
SELECT @pAntig = DATEDIFF( year, @pFechaIngre, @pHFecha)
SELECT @vNumerLiqui = MAX(NumerLiqui)
FROM tSJTotalLiqui
WHERE MONTH(FechaLiqui) BETWEEN MONTH(@pDFecha) AND MONTH(@pHFecha)
AND YEAR(FechaLiqui) BETWEEN YEAR(@pDFecha) AND YEAR(@pHFecha)
AND CodigEmple = @pCodigEmple
AND (CuentFondoDesem <> '')
SELECT @CuentaFondoDesem = CuentFondoDesem,
@LibreFondoDesem = LibreFondoDesem,
@Calle = Calle,
@Numer = Numer,
@CodigCiuda = tSJTotalLiqui.CodigCiuda,
@DescrCiuda = DescrCiuda
FROM tSJTotalLiqui
INNER JOIN tKiCiuda ON tSJTotalLiqui.CodigCiuda = tKiCiuda.CodigCiuda
WHERE MONTH(FechaLiqui) BETWEEN MONTH(@pDFecha) AND MONTH(@pHFecha)
AND YEAR(FechaLiqui) BETWEEN YEAR(@pDFecha) AND YEAR(@pHFecha)
AND (CuentFondoDesem <> '')
AND CodigEmple = @pCodigEmple
AND NumerLiqui = @vNumerLiqui
SELECT @vFechaIngre = FechaIngre
FROM tSJEmple
WHERE MONTH(FechaIngre) BETWEEN MONTH(@pDFecha) AND MONTH(@pHFecha)
AND YEAR(FechaIngre) BETWEEN YEAR(@pDFecha) AND YEAR(@pHFecha)
AND CodigEmple = @pCodigEmple
IF (@vFechaIngre IS NULL)
BEGIN
SELECT @pImporFinal =
CASE Signo
WHEN '+' THEN ImporFinal
WHEN '-' THEN ImporFinal * -1
END
FROM tSJDetalLiqui
WHERE FondoDesem = 'True'
AND ((TipoConce <> 'PUE') OR (TipoConce <> 'CON'))
AND MONTH(FechaLiqui) BETWEEN MONTH(@pDFecha) AND MONTH(@pHFecha)
AND YEAR(FechaLiqui) BETWEEN YEAR(@pDFecha) AND YEAR(@pHFecha)
AND CodigEmple = @pCodigEmple
END
ELSE
BEGIN
SELECT @pImporFinal =
CASE Signo
WHEN '+' THEN ImporFinal
WHEN '-' THEN ImporFinal * -1
END
FROM tSJDetalLiqui
WHERE FondoDesem = 'True'
AND ((TipoConce <> 'PUE') OR (TipoConce <> 'CON'))
AND MONTH(FechaLiqui) BETWEEN MONTH(@vFechaIngre) AND MONTH(@vFechaIngre)
AND YEAR(FechaLiqui) BETWEEN YEAR(@pDFecha) AND YEAR(@pHFecha)
AND CodigEmple = @pCodigEmple
END
END
END