CalcularValoresCP
Esta função visa calcular os valores multimoeda dos títulos: juros, multa, encargos, correção monetária (positiva), encargos, outros acréscimos, descontos, outros descontos e o valor líquido.
Sintaxe: Função CalcularValoresCP(Alfa Cursor, Data DatBas, Numero TipVct, Numero ConDbc, Numero end VlrJrs, Numero end VlrMul, Numero end VlrCor, Numero end VlrEnc, Numero end VlrOac, Numero end VlrDsc, Numero end VlrOde, Numero end VlrLiq);
Parâmetros de entrada:
Nome | Tipo | Descrição |
---|---|---|
Cursor | Alfa | Nome do cursor com os dados do título |
DataBas | Data | Data base de cálculo (obrigatório) |
TipVct | Numero | Tipo de vencimento. Se for igual a 2 será utilizado o vencimento prorrogado, caso não seja, será utilizada a data de provável pagamento |
ConDbc | Numero | Indica se considerará a data base na correção monetária. Se for igual a 1 considera a data base, caso não seja considera o vencimento (de acordo com o tipo) |
Parâmetros de saída:
Nome | Tipo | Descrição |
---|---|---|
VlrJrs | Numero | Valor calculado de juros |
VlrMul | Numero | Valor calculado de multa |
VlrCor | Numero | Valor calculado (positivo) de correção monetária |
VlrEnc | Numero | Valor calculado de encargos |
VlrOac | Numero | Valor calculado de outros acréscimos |
VlrDsc | Numero | Valor calculado de descontos |
VlrOde | Numero | Valor calculado de outros descontos, incluindo valor negativo de correção monetária |
VlrLiq | Numero | Valor líquido calculado para o título (valor aberto + juros + multa + encargos + correção monetária + encargos + outros acréscimos - descontos - outros descontos) |
Exemplo:
MontaData(31, 12, 2020, xVencimentoMaximo);
xVlrLiquidoTotal = 0;
DataHoje(xDataBase);
Definir Cursor Cur_E501TCP;
Cur_E501TCP.Sql "SELECT CODEMP, CODFIL, NUMTIT, CODTPT, CODFOR, CODTNS, VCTORI, \
VCTPRO, DATDSC, VLRDSC, PERDSC, TOLMUL, PERMUL, VLRABE, PERJRS, JRSDIA, TIPJRS, \
TOLJRS, DATCJM, VLRORI, DATEMI, CODMOE, COTEMI, DATNEG, MULNEG, JRSNEG, DSCNEG, \
ANTDSC, COTNEG, DATNEG, OUTNEG, DATPPT, VLRABE \
FROM E501TCP WHERE VLRABE > 0 AND VCTPRO <= :xVencimentoMaximo \
ORDER BY CODEMP";
Cur_E501TCP.AbrirCursor();
Enquanto(Cur_E501TCP.Achou) {
CalcularValoresCP("Cur_E501TCP", xDataBase,
2, @1 - Vencimento Prorrogado ou 2 - Provável pagamento@
0, @Considera data base na correção monetária: 1 - Sim ou 0 - Não@
VlrJrs, VlrMul, VlrCor, VlrEnc, VlrOac, VlrDsc, VlrOde, VlrLiq);
xVlrLiquidoTotal = xVlrLiquidoTotal + VlrLiq;
Cur_E501TCP.Proximo();
}
Cur_E501TCP.FecharCursor();
Definir Alfa xStrValor;
FormatarN(xVlrLiquidoTotal, "%3.2f", ",", xStrValor);
xStrValor = "Valor Total a Pagar: " + xStrValor;
mensagem(retorna, xStrValor);
Utilização: Esta função utiliza os dados dos títulos disponíveis no SQL dos cursores para calcular os valores multimoeda de cada título. Assim, alguns campos dos títulos obrigatoriamente devem existir no SQL de um cursor para ser possível utilizar as novas funções (as funções irão consistir que esses campos existam no SQL):
CODEMP, CODFIL, NUMTIT, CODTPT, CODFOR, CODTNS, VCTORI, VCTPRO, DATDSC, VLRDSC, PERDSC, TOLMUL, PERMUL, VLRABE, PERJRS, JRSDIA, TIPJRS, TOLJRS, DATCJM, VLRORI, DATEMI, CODMOE, COTEMI, DATNEG, MULNEG, JRSNEG, DSCNEG, ANTDSC, COTNEG, DATNEG, OUTNEG, DATPPT, VLRABE.
Observações:
- Caso o identificador de regra CPA-501INVCR01 esteja ativo, é necessário garantir que todos os campos do título utilizados pela regra também estejam presentes no SQL do cursor, visto que não é possível criar uma consistência automática disso.
- Esta função utiliza os dados disponíveis no SQL dos cursores. Ou seja, quando executada, ela utiliza os dados do registro posicionado no cursor, de forma que as funções devem ser chamadas enquanto os registros do cursor são percorridos, retornando os valores calculados para cada registro do cursor.