Prezados,
Boa Tarde,
Estou precisando acertar a SQL abaixo para o relatório de provisão com urgência, para que não desconte mais a 1ª 13º, ou seja que saia somente o 13º acumulado e mensal sem o desocnto, neste mês efetuamos o pagamento da 1ª parcela e contabilidade não quer mais qeu desconte.
SELECT
PFUNC.CHAPA,
PFUNC.NOME,
CASE WHEN PFUNC.CODOCORRENCIA IN (2, 6) THEN 12
WHEN PFUNC.CODOCORRENCIA IN (3, 7) THEN 9
WHEN PFUNC.CODOCORRENCIA IN (4, 8) THEN 6
ELSE 0
END AS 'ACRESCIMO_INSS',
PFH1.VALPROVFER AS 'FERIAS_1',
CASE WHEN PFH1.VALPROVFER > PFH2.VALPROVFER /*teste para ver se o valor das ferias sera negativo*/
THEN PFH1.VALPROVFER - isnull (PFH2.VALPROVFER,0)
ELSE (PFH1.VALPROVSEMABATFER - PFH2.VALPROVCOMABATFER )
END AS 'FERIAS_MES',
(
PFH1.VALPROV13 - ISNULL(
(
SELECT SUM(F.VALOR)
FROM PEVENTO E,
PFFINANC F
WHERE F.CODCOLIGADA = E.CODCOLIGADA
AND F.CODEVENTO = E.CODIGO
AND F.CODCOLIGADA = PFUNC.CODCOLIGADA
AND F.CHAPA = PFUNC.CHAPA
AND E.CODIGOCALCULO = 9
AND F.MESCOMP <= :MES_S
AND F.ANOCOMP = PFH1.ANO
), 0 ) /*primeira parcela do 13º salário*/
) AS 'V13_1',
CASE WHEN PFH1.VALPROV13 > PFH2.VALPROV13 /*teste para ver se o valor do 13 sera negativo*/
THEN (PFH1.VALPROV13 - PFH2.VALPROV13)
WHEN PFH1.NROAVOS13DEC=0
THEN 0
WHEN PFH1.VALPROV13 < PFH2.VALPROV13
THEN PFH1.VALPROV13 / PFH1.NROAVOS13DEC
END AS 'V13_MES',
(PFH1.NROAVOSVENCFERDEC + PFH1.NROAVOSPROPORCDEC) AS 'AVOS',
PFH1.NROAVOS13DEC,
PFH1.VALPROV13
FROM PFUNC(NOLOCK)
LEFT OUTER JOIN PFHSTPROV PFH1(NOLOCK)
ON PFH1.CODCOLIGADA = PFUNC.CODCOLIGADA
AND PFH1.CHAPA = PFUNC.CHAPA
LEFT OUTER JOIN PFHSTPROV PFH2(NOLOCK)
ON PFH2.CODCOLIGADA = PFH1.CODCOLIGADA
AND PFH2.CHAPA = PFH1.CHAPA
AND PFH2.MES = (CASE WHEN PFH1.MES=1
THEN 12
WHEN (
SELECT COUNT (*)
FROM PFHSTPROV
WHERE PFHSTPROV.CHAPA = PFUNC.CHAPA
AND PFHSTPROV.CODCOLIGADA = PFUNC.CODCOLIGADA
) = 1
THEN PFH1.MES
ELSE PFH1.MES-1
END)
AND PFH2.ANO = (CASE WHEN PFH1.MES <> 1
THEN PFH1.ANO
ELSE CASE WHEN (
SELECT COUNT (*)
FROM PFHSTPROV
WHERE CHAPA=PFUNC.CHAPA
AND CODCOLIGADA = PFUNC.CODCOLIGADA) = 1
THEN PFH1.ANO
ELSE PFH1.ANO-1
END
END)
WHERE PFH1.MES = :MES_S
AND PFH1.ANO = :ANO_S
AND PFUNC.CODSECAO = :P_CODIGO_S
AND PFUNC.CODCOLIGADA = :CODCOLIGADA_N
AND DATEDIFF(DAY, PFUNC.DATAADMISSAO, DATEADD(DAY, -1, CONVERT(DATETIME, (DATEADD(MONTH, 1, :MES_S + '/01/' + :ANO_S))))) > 31
AND (case
when dttransferencia is null
THEN '1'
Else
CASE
WHEN dttransferencia < CONVERT (DATETIME, (CONVERT (VARCHAR, '28/' + :MES_S + '/' + :ANO_S)),103)
then '1'
ELSE '0'
END
END) = 1
AND (case
when datademissao is null
THEN '1'
Else
CASE
WHEN datademissao > CONVERT (DATETIME, (CONVERT (VARCHAR, '28/' + :MES_S + '/' + :ANO_S)),103)
then '1'
ELSE '0'
END
END) = 1