Crie o seguinte gatilho pelo configurador.
Campo | Conteúdo |
---|
Campo | TFF_PERINI | Sequencia | 001 | Cnt. Dominio | TFF_VLPRPA | Tipo | Primário | Regra | U_CalcValor() | Posiciona | Não | Condicao | U_Condicao() |
Após a criação do gatilho, inclua as seguintes funções (user function).
#INCLUDE #INCLUDE "PROTHEUS.CH" #INCLUDE #INCLUDE "FWMVCDEF.CH" User Function CalcValorUser Function CalcValor() Local nDataIni Local nDataIni := Day Day(FwFldGet("TFF_PERINI")) //dia de inicio do contrato Local nDataFim Local nDataFim := Day Day(LastDate(FwFldGet("TFF_PERINI"))) // ultimo dia do mes Local nValor Local nValor := FwFldGet FwFldGet("TFF_PRCVEN") // preço de venda do contrato nValor nValor := (nValor/nDataFim)*((nDataFim-nDataIni)+1) //Arredonda o valor nValor nValor := Round Round(nValor,TamSX3("TFL_VLPRPA")[2])Return nValor Return nValor
User Function CondicaoUser Function Condicao() Local lRet Local lRet := .F. Local lIsRecorrente Local lIsRecorrente := FwFldGet FwFldGet("TFJ_CNTREC") == "1" Local lIsItenExtra Local lIsItenExtra := FwfldGet FwfldGet("TFF_COBCTR") == "2"
//Só será executado para contratos recorrentes e não será executado para item extra If lIsRecorrente If lIsRecorrente .And. !lIsItenExtra lRet lRet := .T. EndIf Return lRet Return lRet
A função Condição() é criada para garantir que o gatilho não vai ser executado para contratos não recorrentes e itens extras
Se a condição criada for positiva, o gatilho será chamado e o calculo será feito. Com isso ao ser informado uma data de inicio do contrato(TFF_PERINI), o calculo será feito conforme o dia e o valor(TFF_PRCVEN).
|