Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Após a criação do gatilho, inclua as seguintes funções (user function).

#INCLUDE "PROTHEUS.CH" #INCLUDE "FWMVCDEF.CH" User Function CalcValor() Local nDataIni := Day(FwFldGet("TFF_PERINI")) //dia de inicio do contrato Local nMes := Month(FwFldGet("TFF_PERINI")) Local nAno := Year(FwFldGet("TFF_PERINI")) Local cCompet := "" Local cCodTFJ := FwFldGet("TFJ_CODIGO") Local nDataFim := 30 //Qtd de dias para calculo do Vlr dia. Local nValor :=



If IsInCallStack("AT870Antco")
    dDataIniCtr := PARAMIXB[1]
    dDataFimCtr := PARAMIXB[2]
    nDataIni    := Day(dDataIniCtr//dia de inicio do contrato
    nDtFimMes   := Day(dDataFimCtr// dia de fim do contrato
    nMes        := Month(dDataFimCtr)
    nAno        := Year(dDataFimCtr)
    cCodTFJ     := PARAMIXB[3]
    nValor      := PARAMIXB[4// preço de venda do contrato
    nQtd        := PARAMIXB[5// preço de venda do contrato 
    cCompetAnt  := PARAMIXB[6]
    cCodTFF     := PARAMIXB[7]
Else
    dDataIniCtr := FwFldGet("TFF_PERINI")
    dDataFimCtr := FwFldGet("TFF_PERFIM")
    nDataIni    := Day(dDataIniCtr//dia de inicio do contrato
    nDtFimMes   := Day(dDataFimCtr// dia de fim do contrato
    nMes        := Month(dDataFimCtr)
    nAno        := Year(dDataFimCtr)
    cCodTFJ     := FwFldGet("TFJ_CODIGO")
    nValor      := 

FwFldGet("TFF_PRCVEN")

 //

preço de venda do contrato Local nQtd :=

 preço de venda do contrato
    nQtd        := FwFldGet("TFF_QTDVEN")

// preço de venda do contrato Local nDtFimMes := Day(

 // preço de venda do contrato  
    cCompetAnt  := At740GtPer()
    cCodTFF     := FwFldGet("TFF_

PERFIM")) // dia de fim do contrato Local cCompetAnt := At740GtPer() Local nMesAnt := 0 Local nAnoAnt := 0 Local oModel := FwModelActive() If

COD")
EndIf

If !Empty(cCompetAnt)

nMesAnt


    nMesAnt :=

 Month(cCompetAnt)

nAnoAnt


    nAnoAnt :=

 Year(cCompetAnt)

If


    If Len(cValToChar(nMesAnt))

 ==

1 cCompetAnt :=

 1
        cCompetAnt  := "0"

 +

 cValToChar(nMesAnt)

 +

 "/"

 +

 cValToChar(nAnoAnt)

Else cCompetAnt :=


    Else
        cCompetAnt := cValToChar(nMesAnt)

 +

 "/"

 +

 cValToChar(nAnoAnt)

EndIf EndIf If


    EndIf
EndIf
 
If Len(cValToChar(nMes))

 ==

1 cCompet :=

 1
    cCompet  := "0"

 +

 cValToChar(nMes)

 +

 "/"

 +

 cValToChar(nAno)

Else cCompet :=


Else
    cCompet := cValToChar(nMes)

 +

 "/"

 +

 cValToChar(nAno)

EndIf If Month(FwFldGet("TFF_PERFIM")) == Month(FwFldGet("TFF_PERINI")) .And. Year(FwFldGet("TFF_PERFIM")) == Year(FwFldGet("TFF_PERINI")) nValor :=


EndIf
 
If Month(dDataFimCtr) == Month(dDataIniCtr.And. Year(dDataFimCtr) == Year(dDataIniCtr)
    nValor := (nValor/nDataFim)*((nDtFimMes-nDataIni)+1)

Else nValor :=


Else
    nValor := (nValor/nDataFim)*((nDataFim-nDataIni)+1)

EndIf //Arredonda o valor nValor := nValor * nQtd nValor :=


EndIf  
  
//Arredonda o valor
nValor := nValor * nQtd
nValor := Round(nValor,TamSX3("TFL_VLPRPA")[2])


 
//

Atualiza o cronograma

Atualiza o cronograma
At740IAuto("TFF",

FwFldGet("TFF_COD"),

 cCodTFF, cCompet,

 nValor,

 cCodTFJ,cCompetAnt,nDataIni

>

 > 1)


 
FWModelActive(oModel

) Return nValor User Function

)

RestArea(aAreaTFF)

Return nValor
  
User Function Condicao()


Local

 lRet

  :=

 .F.


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 .AND.


  
//Só será executado para contratos recorrentes e não será executado para item extra
If lIsRecorrente .And. !lIsItenExtra .AND. Day(FwFldGet("TFF_PERFIM"))

 !=

1 lRet :=

 1
    lRet := .T.

EndIf Return


EndIf
  
Return lRet

Informações
titleExemplo de Uso

#INCLUDE "PROTHEUS.CH"
#INCLUDE "FWMVCDEF.CH"
 
User Function CalcValor()
Local aAreaTFF      := TFF->(GetArea()) // Salva area
Local nDataIni      := Day(dDataBase)
Local nMes          := Month(dDataBase)
Local nAno          := Year(dDataBase)
Local dDataIniCtr   := cTod("")
Local dDataFimCtr   := cTod("")
Local cCompet       := ""
Local cCodTFJ       := ""
Local cCodTFF       := ""
Local nDataFim      := 30 //Qtd de dias para calculo do Vlr dia.
Local nValor        := 0
Local nQtd          := 0
Local nDtFimMes     := Day(dDataBase)
Local cCompetAnt    := ""
Local nMesAnt       := 0
Local nAnoAnt       := 0
Local oModel        := FwModelActive()

Crie o seguinte gatilho pelo configurador.

Image Removed

CampoConteúdo
CampoTFF_PERINI
Sequencia001
Cnt. Dominio

TFF_VLPRPA

TipoPrimário
RegraU_CalcValor()
PosicionaNão
CondicaoU_Condicao()
Bloco de código
titleExemplo de uso
Informações
titleExemplo

Veja abaixo de uma forma mais detalhada como será feito o calculo do valor da próxima parcela

Valor do Posto é de R$4.500,00

O dia de inicio do posto é 15/04/2021

O calculo a ser feito será

((4500 / 30) * (30-15)+1 )

((150) * (16)) = 2400

onde o resultado do valor da próxima parcela será de R$2.400,00

A quantidade de dias é 16, pois contamos o dia de inicio, ou seja, do dia 15 ao dia 30 tem 16 dias se contarmos o dia 15.


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).


...