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).
| Bloco de código |
|---|
| #INCLUDE "PROTHEUS.CH" |
User Function CalcValor() |
Local nDataIni := Day(FwFldGet("TFF_PERINI")) //dia de inicio do contrato |
Local nDataFim := Day(LastDate(FwFldGet("TFF_PERINI"))) // ultimo dia do mes |
Local nValor := FwFldGet("TFF_PRCVEN") // preço de venda do contrato |
Local nQtd := FwFldGet("TFF_QTDVEN") // preço de venda do contrato
nValor := (nValor/nDataFim)*((nDataFim-nDataIni)+1) |
nValor := Round(nValor,TamSX3("TFL_VLPRPA")[2]) | Return nValor * nQtd
Return nValor
User Function Condicao() |
Local lIsRecorrente := FwFldGet("TFJ_CNTREC") == "1" |
Local lIsItenExtra := FwfldGet("TFF_COBCTR") == "2" |
//Só será executado para contratos recorrentes e não será executado para item extra |
If lIsRecorrente .And. !lIsItenExtra |
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).
|