25297 - Cálculo das retenções na baixa com mais de uma parcela
Problema: Temos uma nota que possui dois itens de serviços:
Rotina / Tela: Baixas contas a pagar
Solução: VlrBas := (SRound(((aVlrMov + ((xIR*(VlrMovAux/RegTcp.VlrOri))/xNumeroParcelas) + ((xISS*(VlrMovAux/RegTcp.VlrOri))/xNumeroParcelas) - aVlrDsc + xAdiantamento.AdiantamentoCalculado) * VLRBCL / (VLRFIN + xIR + xISS)), 2));

- serviço 1 valor: 600 retenções: PIS/COFINS/CSLL - 4,65%
- serviço 2 valor: 700 retenções: ISS - 10% PIS/COFINS/CSLL - 4,65)
E possui também duas parcelas:
- parcela 1 - 1000,00
- parcela 2 - 230,00)
Na baixa, aplicando os percentuais de retenção, não conseguimos chegar nos valores de retenção calculados pelo sistema.
Verificar como é feito o cálculo do Pis, Cofins e CSLL na baixa título com estas condições.
Rotina / Tela: Baixas contas a pagar
Solução: VlrBas := (SRound(((aVlrMov + ((xIR*(VlrMovAux/RegTcp.VlrOri))/xNumeroParcelas) + ((xISS*(VlrMovAux/RegTcp.VlrOri))/xNumeroParcelas) - aVlrDsc + xAdiantamento.AdiantamentoCalculado) * VLRBCL / (VLRFIN + xIR + xISS)), 2));
VlrBas := (SRound(((1000 + ((0*(1000/1000))/2) + ((70*(1000/1000))/2) - 0 + 0) * 1300 / (1230 + 0 + 70)), 2));
VlrBas := 1035
Valor Base = 1035
-------------
CSll:
'SELECT 1,E440NFC.VLRFIN,E440NFC.VLRCSL,E440NFC.VLRBCL FROM E440NFC,E501TCP WHERE E501TCP.CODEMP = {CODEMP} AND E501TCP.CODFIL = {CODFIL} AND E501TCP.NUMTIT = {NUMTIT} AND E501TCP.CODTPT = {CODTPT} AND E501TCP.CODFOR = {CODFOR} AND E501TCP.CODEMP = E440NFC.CODEMP AND E501TCP.FILNFC = E440NFC.CODFIL AND E501TCP.NUMNFC = E440NFC.NUMNFC AND E501TCP.SNFNFC = E440NFC.CODSNF AND E501TCP.FORNFC = E440NFC.CODFOR'
CSll := SRound(VlrBas * (VLRCSL / VLRBCL), 2);
CSll := SRound(1035 * (13 / 1300), 2);
CSll = 10.35
CSLL = 10.35
--------------
COFINS:
'SELECT 1,E440NFC.VLRFIN,E440NFC.VLRBCT,E440NFC.VLRCRT FROM E440NFC,E501TCP WHERE E501TCP.CODEMP = {CODEMP} AND E501TCP.CODFIL = {CODFIL} AND E501TCP.NUMTIT = {NUMTIT} AND E501TCP.CODTPT = {CODTPT} AND E501TCP.CODFOR = {CODFOR} AND E501TCP.CODEMP = E440NFC.CODEMP AND E501TCP.FILNFC = E440NFC.CODFIL AND E501TCP.NUMNFC = E440NFC.NUMNFC AND E501TCP.SNFNFC = E440NFC.CODSNF AND E501TCP.FORNFC = E440NFC.CODFOR'
COFINS := SRound(VlrBas * (VLRCRT / VLRBCT), 2);
COFINS := SRound(1035 * (39 / 1300), 2);
COFINS = 31.05
COFINS = 31.05
--------------
PIS:
'SELECT 1,E440NFC.VLRFIN,E440NFC.VLRBPT,E440NFC.VLRPIT FROM E440NFC,E501TCP WHERE E501TCP.CODEMP = {CODEMP} AND E501TCP.CODFIL = {CODFIL} AND E501TCP.NUMTIT = {NUMTIT} AND E501TCP.CODTPT = {CODTPT} AND E501TCP.CODFOR = {CODFOR} AND E501TCP.CODEMP = E440NFC.CODEMP AND E501TCP.FILNFC = E440NFC.CODFIL AND E501TCP.NUMNFC = E440NFC.NUMNFC AND E501TCP.SNFNFC = E440NFC.CODSNF AND E501TCP.FORNFC = E440NFC.CODFOR'
PIS := SRound(VlrBas * (VLRPIT / VLRBPT), 2);
PIS := SRound(1035 * (8.45 / 1300), 2);
PIS = 6.73
PIS = 6.73
