CalculaPrecoProRata

Calcular o preço unitário do contrato com base no critério pró-rata por competência (padrão do sistema) ou por período (através do identificador de regras VEN-160PRORA01).

Sintaxe: Funcao CalculaPrecoProRata (Numero pCriPrt,Numero pPreUni,Numero pIniVig, Numero pFimVig,Numero pCptFat,Numero pDatAux,Numero pCriFtc,Alfa pProRat);

Parâmetros:

Nome Tipo Descrição
pCriPrt Numero Critério para cálculo pró-rata do contrato de venda.
pPreUni Numero Preço unitário do produto ou serviço.
pIniVig Numero Data de início da vigência do item do contrato.
pFimVig Numero Data final da vigência do item do contrato.
pCptFat Numero Competência que está sendo faturada.
pDatAux Numero Competência que está sendo faturada.
pCriFtc Numero Critério para faturamento do contrato de venda.
pProRat Alfa Indicativo se deve ser feito o cálculo pró-rata para o item do contrato.

Tipo de retorno: O resultado é armazenado em uma variável interna do sistema e retornado através da função Funcao RetornaPrecoProRata (Numero End Retorno);.
Retorno (Numero): Resultado da chamada. Retorna o preço do item calculado.

Exemplo:

@ Faz a busca por todos os contratos ativos @
Cur_E160CTR.SQL "SELECT CODEMP, CODFIL, NUMCTR, CRIPRT, CRIFTC FROM E160CTR WHERE SITCTR = 'A'";

Cur_E160CTR.AbrirCursor();
Enquanto (Cur_E160CTR.Achou)
Inicio
VCodEmp = Cur_E160CTR.CodEmp;
VCodFil = Cur_E160CTR.CodFil;
VNumCtr = Cur_E160CTR.NumCtr;

pCriPrt = Cur_E160CTR.CriPrt;
pCriFtc = Cur_E160CTR.CriFtc;

@ Busca os itens de produto do contrato @
Cur_E160CVP.SQL "SELECT PREUNI, INIVIG, FIMVIG, DATCPT, PRORAT FROM E160CVP WHERE CODEMP = :VCODEMP AND CODFIL = :VCODFIL AND NUMCTR = :VNUMCTR";
Cur_E160CVP.AbrirCursor();
Enquanto (Cur_E160CVP.Achou)
Inicio
pPreUni = Cur_E160CVP.PreUni;
pIniVig = Cur_E160CVP.IniVig;
pFimVig = Cur_E160CVP.FimVig;
pCptFat = Cur_E160CVP.DatCpt;
pDatAux = Cur_E160CVP.DatCpt;
pProRat = Cur_E160CVP.ProRat;

@ Calcula o preço unitário seguindo o critério Pró-Rata @
CalculaPrecoProRata(pCriPrt,pPreUni,pIniVig,pFimVig,pCptFat,pDatAux,pCriFtc,pProRat);
@ Armazena o retorno da função CalculaPrecoProRata @
RetornaPrecoProRata(VPreUni);
Cur_E160CVP.Proximo();
Fim;
Cur_E160CVP.FecharCursor();

Cur_E160CTR.Proximo();
Fim;
Cur_E160CTR.FecharCursor();

Este artigo ajudou você?