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:
- Definir Cursor Cur_E160CTR;
- Definir Cursor Cur_E160CVP;
- Definir Numero VCodEmp;
- Definir Numero VCodFil;
- Definir Numero VNumCtr;
- Definir Numero pCriPrt;
- Definir Numero pPreUni;
- Definir Numero pIniVig;
- Definir Numero pFimVig;
- Definir Numero pCptFat;
- Definir Numero pDatAux;
- Definir Numero pCriFtc; Definir Alfa pProRat;
- Definir Numero VPreUni;
@ 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();