Árvore de páginas

Versões comparadas

Chave

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

...

Ao revisar um contrato recorrente, na tela de revisão como mostra a seguir, em outras ações, selecionando o botão ajuste retroativo, é exibida uma tela.


Image Modified

Os campos Função e Escala são filtros para aplicar o reajuste nos itens de RH(TFF), caso nenhum deles forem informados todas as linhas serão consideradas para a aplicação do reajuste.

Para os campos Percentual e Multiplicador, o calculo para o valor de venda do item de RH será explicado abaixo:

Exemplo:

Percentual = 10%

Multiplicador = 2

O cálculo é feito da seguinte forma:

...

       TFF_PRCVEN = 11.000

...

titleDemais informações


...

A opção "Em todos os locais" indica se o cálculo deve ser feito para todos os locais com suas TFF´s, ou seja, caso seja informado o campo com o valor Sim, todas os itens de RH(TFF)

...

de todos os locais do orçamento serão considerados, se o valor informado for Não, somente os itens de RH(TFF) do local posicionado será considerado.


O campos agrupados na opção "Alteração de Quantidade" são referentes a alteração de quantidade de venda do item de RH(TFF), ele só terá funcionalidade se o valor for maior que zero.

O campo Nova Quantidade será aplicado ao campo TFF_QTDVEN e consequentemente alterará o valor de venda do orçamento o campo TFF_SUBTOT.

O campo Data de Referência será utilizado para o calculo da próxima parcela(TFF_VLPRPA).

Exemplo:

Vamos supor que foi informado o valor 2 para o campo Nova Quantidade e a data de 15/01/2021 para o campo Data de Referência 

nValor corresponde ao preço de venda multiplicado pela nova quantidade

nDataFim corresponde ao ultimo dia do mês de referência(Mês de Janeiro o ultimo dia é 31, se for fevereiro é 28, se for Abril é 30) 

nDataIni  corresponde ao dia referente a data de referência


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


nValor = 10.000 * 2 

nDataFim = 31

nDataIni = 15

nValor := (20.000/31)*((31-15)+1)


TFF_VLPRPA10.967,74


O campo "Todas as linhas" indica se a alteração de quantidade será somente para o item de RH(TFF) posicionada ou a todas as linhas que serão reajustadas.

Caso informe o valor posicionada, a alteração de quantidade e o calculo para a próxima parcela informada acima só será aplicada para o item de RH(TFF) posicionada, caso informe o valor Todas, a alteração de quantidade e o calculo para a próxima parcela será aplicado para todas as linhas encontradas.


" indica se o cálculo deve ser feito para todos os locais com suas TFF´s
Bloco de código
titleImplementação
#INCLUDE 'PROTHEUS.CH'

User function a740GrdV()
Local oView  :=   PARAMIXB[1] //Viewdef
 
If !isBlind() .AND. VALTYPE(oView) == 'O' .AND. isInCallStack("At870PRev")
    oView:AddUserButton("Reajuste Retroativo","",{|oView| U_RRetroat(oView)},,,)
EndIf
Return
 
User Function RRetroat(oView)
Local oModel
Local oMdlTFJ
Local oDlgSelect
Local cFuncao       := SPACE(TamSx3("TFF_FUNCAO")[1])
Local cEscala       := SPACE(TamSx3("TFF_ESCALA")[1])
Local nPerc := 0
Local nMult := 0
Local nQuant    := 0
Local dDataRef  := dDataBase
Local cTodosLoc := "2"
Local cTodasLin := "2"
Local aOpcs := {"2 - Não","1 - Sim"}
Local aQtd := {"2 - Posicionada","1 - Todos"}
Local oGrp
 
If VALTYPE(oView) == 'O' .AND. VALTYPE(oModel := oView:GetModel()) == 'O'
    oMdlTFJ := oModel:GetModel("TFJ_REFER")
    If oMdlTFJ:GetValue("TFJ_CNTREC") == '1'
        DEFINE MSDIALOG oDlgSelect FROM 0,0 TO 320,300 PIXEL TITLE "Reajuste Retroativo"
         @ 5, 9 SAY "Função" SIZE 30, 30 PIXEL
 
        oGetSRA := TGet():New( 015, 009, { | u | If(PCount() > 0, cFuncao := u, cFuncao) },oDlgSelect, ;
            060, 010, "!@",{ || .T.}, 0, 16777215,,.F.,,.T.,,.F.,;
            ,.F.,.F.,{|| .T.},.F.,.F. ,,"cFuncao",,,,.T.  )
        oGetSRA:cF3 := 'SRJ'

        @ 5, 77 SAY "Escala" SIZE 30, 30 PIXEL

        oGetTDW := TGet():New( 015, 077, { | u | If(PCount() > 0, cEscala := u, cEscala) },oDlgSelect, ;
            060, 010, "!@",{ || .T.}, 0, 16777215,,.F.,,.T.,,.F.,;
            ,.F.,.F.,{|| .T.},.F.,.F. ,,"cEscala",,,,.T.  )
        oGetTDW:cF3 := 'TDW'
 
        @ 30, 9 SAY "Percentual (%)" SIZE 50, 30 PIXEL
 
        oDataDe := TGet():New( 40, 009, { | u | If( PCount() == 0, nPerc, nPerc := u ) },oDlgSelect, ;
            060, 010, "@E 99.99",, 0, 16777215,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F. ,,"nPerc",,,,.T.)
 
        @ 30, 77 SAY "Multiplicador" SIZE 50, 30 PIXEL
 
        oDataAte := TGet():New( 40, 077, { | u | If( PCount() == 0, nMult, nMult := u ) },oDlgSelect, ;
            060, 010, "@E 99.99",, 0, 16777215,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F. ,,"nMult",,,,.T.)
 
        @ 64, 9 SAY "Em todos os Locais?" SIZE 80, 30 PIXEL
        
        oCombo := TComboBox():New(63,77,{|u|if(PCount()>0,cTodosLoc:=u,cTodosLoc)},;
            aOpcs,40,10,oDlgSelect,,,,,,.T.,,,,,,,,,'cTodosLoc')

        oGrp    := TGroup():New(080, 005, 135, 140, "Alteração de Quantidade", oDlgSelect,,, .T.)
        
        @ 90, 9 SAY "Nova Quantidade" SIZE 50, 30 PIXEL
 
        oQuant := TGet():New( 100, 009, { | u | If( PCount() == 0, nQuant, nQuant := u ) },oDlgSelect, ;
            060, 010, "@E 99,999,999,999",, 0, 16777215,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F. ,,"nQuant",,,,.T.)
 
        @ 90, 77 SAY "Data de Referencia" SIZE 50, 30 PIXEL
 
        oDataAte := TGet():New( 100, 077, { | u | If( PCount() == 0, dDataRef, dDataRef := u ) },oDlgSelect, ;
            060, 010, "@D",, 0, 16777215,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F. ,,"dDataRef",,,,.T.)

        @ 120, 9 SAY "Todas as Linhas?" SIZE 80, 30 PIXEL
 
        oCombo1 := TComboBox():New(120, 077,{|u|if(PCount()>0,cTodasLin:=u,cTodasLin)},;
            aQtd,60,10,oDlgSelect,,,,,,.T.,,,,,,,,,'cTodasLin')    
        
        oRefresh := TButton():New( 144, 005, "Aplicar",oDlgSelect,{|| U_AplicVl(oModel, cFuncao , nPerc, nMult, LEFT(cTodosLoc,1), cEscala, nQuant, dDataRef, LEFT(cTodasLin,1)) , oDlgSelect:End()}, 60,10,,,.F.,.T.,.F.,,.F.,,,.F. )
 
        oExit := TButton():New( 144  , 080, "Sair",oDlgSelect,{|| oDlgSelect:End() }, 60,10,,,.F.,.T.,.F.,,.F.,,,.F. )
        
        ACTIVATE MSDIALOG oDlgSelect CENTER
    Else
        MsgAlert("Opção disponível apenas para contratos Recorrentes")
    EndIf
EndIf
 
Return .T.
 
 
User Function AplicVl(oModel, cFuncao , nPerc, nMult, cTodosLoc, cEscala, nQuant, dDataRef, cTodasLin)
Local lAllLoc   := cTodosLoc == '1'
Local lAllLinha := cTodasLin == '1'
Local oMdlTFL   := oModel:GetModel("TFL_LOC")
Local oMdlTFF   := oModel:GetModel("TFF_RH")
Local nX        := 0
Local nY        := 0
Local cLog      := "" 
Local aSaveRows := FwSaveRows()
Local nTotal    := 0
Local nGrandTot := 0
Local nVal      := 0
Local nValPrc   := 0
Local nPosTFF   := 0
Local nPosTFL   := 0
Local nValParc  := 0

If !lAllLinha
    nPosTFF := oMdlTFF:GetLine()
    nPosTFL := oMdlTFL:GetLine()
    cLog += "Local: " + Alltrim(POSICIONE("ABS",1,xFilial("ABS") + oMdlTFL:GetValue("TFL_LOCAL"), "ABS_DESCRI")) + Chr(13) + Chr(10)
    cLog += " - RH: " + oMdlTFF:GetValue("TFF_COD") + Chr(13) + Chr(10)
    cLog += " - Função: " + Alltrim(POSICIONE("SRJ",1,xFilial("SRJ") + oMdlTFF:GetValue("TFF_FUNCAO"), "RJ_DESC")) + Chr(13) + Chr(10)
    cLog += " - Produto: " + Alltrim(Posicione("SB1",1,xFilial("SB1") + oMdlTFF:GetValue("TFF_PRODUT"), "B1_DESC")) + Chr(13) + Chr(10)
    If !lAllLinha .And. nQuant > 0
        cLog += " - Qtd. Venda Anterior: " + Alltrim(AllToChar(oMdlTFF:GetValue("TFF_QTDVEN"))) + Chr(13) + Chr(10)
        cLog += " - Qtd. Venda: " + Alltrim(AllToChar(nQuant)) + Chr(13) + Chr(10)
        cLog += " - Vlr. Venda Anterior: R$ " + Alltrim(TRANSFORM( oMdlTFF:GetValue("TFF_SUBTOT") , "@E 99,999,999,999.99" )) + Chr(13) + Chr(10)
        cLog += " - Vlr. Venda Novo: R$ " + Alltrim(TRANSFORM( ROUND(nQuant * oMdlTFF:GetValue("TFF_SUBTOT"), TamSX3("TFF_SUBTOT")[2]) , "@E 99,999,999,999.99" )) + Chr(13) + Chr(10)
        nValParc := U_AplicQtd(oMdlTFF,nQuant,dDataRef,.F.)
        cLog += " - Valor Novo (prox. parcela): R$ " + Alltrim(TRANSFORM((nValParc), "@e 999,999,999.99" ))"
        cLog += Chr(13) + Chr(10)
    EndIf
    cLog += Chr(13) + Chr(10)
EndIf

For nX := 1 To oMdlTFL:Length()
    If lAllLoc
        oMdlTFL:GoLine(nX)
    EndIf
    For nY := 1 To oMdlTFF:Length()
        oMdlTFF:GoLine(nY)
        If U_VldFiltro(oMdlTFF,cFuncao,cEscala) .AND. oMdlTFF:GetValue("TFF_COBCTR") != '2'
            cLog += "Local: " + Alltrim(POSICIONE("ABS",1,xFilial("ABS") + oMdlTFL:GetValue("TFL_LOCAL"), "ABS_DESCRI")) + Chr(13) + Chr(10)
            cLog += " - RH: " + oMdlTFF:GetValue("TFF_COD") + Chr(13) + Chr(10)
            cLog += " - Função: " + Alltrim(POSICIONE("SRJ",1,xFilial("SRJ") + oMdlTFF:GetValue("TFF_FUNCAO"), "RJ_DESC")) + Chr(13) + Chr(10)
            cLog += " - Produto: " + Alltrim(Posicione("SB1",1,xFilial("SB1") + oMdlTFF:GetValue("TFF_PRODUT"), "B1_DESC")) + Chr(13) + Chr(10)
            If lAllLinha .And. nQuant > 0
                cLog += " - Qtd. Venda Anterior: " + Alltrim(AllToChar(oMdlTFF:GetValue("TFF_QTDVEN"))) + Chr(13) + Chr(10)
Bloco de código
titleImplementação
#INCLUDE 'PROTHEUS.CH'

User function a740GrdV()
Local oView  :=   PARAMIXB[1] //Viewdef

If !isBlind() .AND. VALTYPE(oView) == 'O' .AND. isInCallStack("At870PRev")
    oView:AddUserButton("Reajuste Retroativo","",{|oView| U_RRetroat(oView)},,,)
EndIf
Return

User Function RRetroat(oView)
Local oModel
Local oMdlTFJ
Local oDlgSelect
Local cFuncao       := SPACE(TamSx3("TFF_FUNCAO")[1])
Local cEscala       := SPACE(TamSx3("TFF_ESCALA")[1])
Local nPerc := 0
Local nMult := 0
Local cTodosLoc := "2"
Local aOpcs := {"2 - Não","1 - Sim"}
 
If VALTYPE(oView) == 'O' .AND. VALTYPE(oModel := oView:GetModel()) == 'O'
    oMdlTFJ := oModel:GetModel("TFJ_REFER")
    If oMdlTFJ:GetValue("TFJ_CNTREC") == '1'
        DEFINE  MSDIALOG oDlgSelect FROM 0,0 TO 202,380 PIXELcLog TITLE+= "Reajuste Retroativo"
- Qtd. Venda: " + Alltrim(AllToChar(nQuant)) + Chr(13) @ 5, 9 SAY "Função" SIZE 30, 30 PIXEL
 
+ Chr(10)
                oGetSRAcLog :+= TGet():New( 015, 009, { | u | If(PCount() > 0, cFuncao := u, cFuncao) },oDlgSelect, ;
   " - Vlr. Venda Anterior: R$ " + Alltrim(TRANSFORM( oMdlTFF:GetValue("TFF_SUBTOT") , "@E 99,999,999,999.99" )) + Chr(13) + Chr(10)
          060, 010, "!@",{ || .T.}, 0, 16777215,,.F.,,.T.,,.F.,;
            ,.F.,.F.,{|| .T.},.F.,.F. ,,"cFuncao",,,,.T.  )
        oGetSRA:cF3 := 'SRJ'
 cLog += " - Vlr. Venda Novo: R$ " + Alltrim(TRANSFORM( ROUND(nQuant * oMdlTFF:GetValue("TFF_SUBTOT"), TamSX3("TFF_SUBTOT")[2]) , "@E 99,999,999,999.99" )) + Chr(13) + Chr(10)
        @ 5, 77 SAY "Escala" SIZE 30, 30 PIXEL

cLog += " - Valor Antigo   oGetTDW := TGet((prox. parcela):New( 015,R$ 077," {+ | u | If(PCount() > 0, cEscala := u, cEscala) },oDlgSelect, ;Alltrim(TRANSFORM( oMdlTFF:GetValue("TFF_VLPRPA") , "@e 999,999,999.99" )) + Chr(13) + Chr(10)
            060, 010, "!@",{ || .T.}, 0, 16777215,,.F.,,.T.,,.F.,;
            ,.F.,.F.,{|| .T.},.F.,.F. ,,"cEscala",,,,.T.  nValParc := U_AplicQtd(oMdlTFF,nQuant,dDataRef,.F.)
                nTotal := ROUND( (nValParc * (nPerc / 100)) * nMult , TamSX3("TFF_VLPRPA")[2] )
        oGetTDW:cF3 := 'TDW'
 
     nGrandTot += nTotal
 @ 30, 9 SAY "Percentual (%)" SIZE 50, 30 PIXEL
 
     cLog += " oDataDe := TGet():New( 40, 009, { | u | If( PCount() == 0, nPerc, nPerc := u ) },oDlgSelect, ;
- Valor Novo (prox. parcela): R$ " + Alltrim(TRANSFORM((nValParc + nTotal), "@e 999,999,999.99" )) +;
              060, 010, "@E 99.99",, 0, 16777215,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F. ,,"nPerc",,,,.T.)
 
        @ 30, 77 SAY "Multiplicador" SIZE 50, 30 PIXEL
 
        oDataAte := TGet():New( 40, 077, { | u | If( PCount() == 0, nMult, nMult := u ) },oDlgSelect, ;
 ( R$ " + Alltrim(TRANSFORM(nValParc, "@e 999,999,999.99" )) + " )" + " + ( R$ " + Alltrim(TRANSFORM(nTotal, "@e 999,999,999.99" )) + " )" + Chr(13) + Chr(10)
                cLog += Chr(13) + Chr(10)
            Else
 060,   010, "@E 99.99",, 0, 16777215,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F. ,,"nMult",,,,.T.)
 
        @ 64, 9 SAY "Em todos os Locais?" SIZE 80, 30 PIXEL
 
         cLog += " - Valor Antigo (prox. parcela): R$ " +  Alltrim(TRANSFORM( oMdlTFF:GetValue("TFF_VLPRPA") , "@e 999,999,999.99" )) + Chr(13) + Chr(10)
                oCombonTotal := TComboBoxROUND( ()oMdlTFF:New(63,70,{|u|if(PCount()>0,cTodosLoc:=u,cTodosLoc)},;
            aOpcs,40,10,oDlgSelect,,,,,,.T.,,,,,,,,,'cTodosLoc')
 GetValue("TFF_VLPRPA") * (nPerc / 100)) * nMult , TamSX3("TFF_VLPRPA")[2] )
        oRefresh := TButton():New( 84, 010, "Aplicar",oDlgSelect,{|| U_AplicVl(oModel, cFuncao , nPerc, nMult, LEFT(cTodosLoc,1), cEscala) , oDlgSelect:End()}, 50,10,,,.F.,.T.,.F.,,.F.,,,.F. )
 
   nGrandTot += nTotal
                oExitcLog :+= TButton():New( 84  , 095, "Sair",oDlgSelect,{|| oDlgSelect:End() }, 30,10,,,.F.,.T.,.F.,,.F.,,,.F. )
        " - Valor Novo (prox. parcela): R$ " + Alltrim(TRANSFORM((oMdlTFF:GetValue("TFF_VLPRPA") + nTotal), "@e 999,999,999.99" )) +;
        ACTIVATE MSDIALOG oDlgSelect CENTER
    Else
 " ( + R$ " +  MsgAlert("Opção disponível apenas para contratos Recorrentes")
    EndIf
EndIf
 
Return .T.
 
 
User Function AplicVl(oModel, cFuncao , nPerc, nMult, cTodosLoc, cEscala)
Local lAllLoc := cTodosLoc == '1'
Local oMdlTFL := oModel:GetModel("TFL_LOC")
Local oMdlTFF := oModel:GetModel("TFF_RH")
Local nX
Local nY
Local cLog := ""
Local aSaveRows := FwSaveRows()
Local nTotal := 0
Local nGrandTot := 0
Local nVal := 0
Local nValPrc := 0
 
For nX := 1 To oMdlTFL:Length()
    If lAllLoc
        oMdlTFL:GoLine(nX)
    EndIf
    For nY := 1 To oMdlTFF:Length()
        oMdlTFF:GoLine(nY)
        If U_VldFiltro(oMdlTFF,cFuncao,cEscala) .AND. oMdlTFF:GetValue("TFF_COBCTR") != '2'
            cLog += "Local: " + Alltrim(POSICIONE("ABS",1,xFilial("ABS") + oMdlTFL:GetValue("TFL_LOCAL"), "ABS_DESCRI")) + Chr(13) + Chr(10)Alltrim(TRANSFORM(nTotal, "@e 999,999,999.99" )) + " )" + Chr(13) + Chr(10)
                cLog += Chr(13) + Chr(10)
            EndIf
        EndIf
    Next nY
    cLog += REPLICATE("-",10)
    cLog += Chr(13) + Chr(10)
    If !lAllLoc
        Exit
    EndIf
Next nX
 
cLog += REPLICATE("-",15)
cLog += Chr(13) + Chr(10)
cLog += "Valor adicional prox. parcela: R$ " + Alltrim(TRANSFORM(nGrandTot, "@e 999,999,999.99" ))
 
AtShowLog(cLog,"Prévia de Valores",/*lVScroll*/,/*lHScroll*/,/*lWrdWrap*/,.F.)
 
If MsgYesNo("Aplicar valores calculados?")

    //Verifica se vai aplicar a quantidade somente para a linha posicionada
    If !lAllLinha .And. nQuant > 0
        oMdlTFL:GoLine(nPosTFL)
        oMdlTFF:GoLine(nPosTFF)    
        U_AplicQtd(oMdlTFF,nQuant,dDataRef,.T.)
    cLog += " - RH: " + oMdlTFF:GetValue("TFF_COD") + Chr(13) + Chr(10EndIf

    For nX := 1 To oMdlTFL:Length()
        If lAllLoc
            oMdlTFL:GoLine(nX)
        EndIf
    cLog += " - Função:For "nY + Alltrim(POSICIONE("SRJ",1,xFilial("SRJ") +:= 1 To oMdlTFF:GetValueLength("TFF_FUNCAO"), "RJ_DESC")) + Chr(13) + Chr(10)
)
            oMdlTFF:GoLine(nY)
      cLog += " - Produto: " +If Alltrim(Posicione("SB1",1,xFilial("SB1") +U_VldFiltro(oMdlTFF,cFuncao,cEscala) .AND. oMdlTFF:GetValue("TFF_PRODUTCOBCTR"), "B1_DESC")) + Chr(13) + Chr(10)
 != '2'

                //aplicar a quantidade para todas as linhas encontradas cLogconforme +=os "filtros
 - Valor Antigo (prox. parcela): R$ " +  Alltrim(TRANSFORM( oMdlTFF:GetValue("TFF_VLPRPA") , "@e 999,999,999.99" )) + Chr(13) + Chr(10)
  If lAllLinha .And. nQuant > 0
          nTotal := ROUND( (oMdlTFF:GetValue("TFF_VLPRPA") * (nPerc / 100)) * nMult , TamSX3("TFF_VLPRPA")[2] )U_AplicQtd(oMdlTFF,nQuant,dDataRef,.T.)
            nGrandTot += nTotal
  EndIf

          cLog += " - Valor Novo (prox.nVal parcela): R$ " + Alltrim(TRANSFORM((:= oMdlTFF:GetValue("TFF_VLPRPA")
 + nTotal), "@e 999,999,999.99" )) +;
          nValPrc := oMdlTFF:GetValue(" ( + R$ " + Alltrim(TRANSFORM(nTotal, "@e 999,999,999.99" )) + " )" + Chr(13) + Chr(10)
TFF_PRCVEN")
                oMdlTFF:SetValue("TFF_PRCVEN",;
                    cLogROUND((nValPrc += Chr(13)nValPrc +* Chr(10)(nPerc / 100))),;
        EndIf
     Next nY
    cLog += REPLICATETamSX3("-",10)TFF_PRCVEN")[2]))
 
    cLog += Chr(13) + Chr(10)            oMdlTFF:SetValue("TFF_VLPRPA",;
    If  !lAllLoc
        Exit
    EndIf
Next nX
 
cLog ROUND((nVal += REPLICATE("-",15)
cLog += Chr(13) + Chr(10)
cLog += "Valor adicional prox. parcela: R$ " + Alltrim(TRANSFORM(nGrandTot, "@e 999,999,999.99" ))
 
AtShowLog(cLog,"Prévia de Valores",/*lVScroll*/,/*lHScroll*/,/*lWrdWrap*/,.F.)
 
If MsgYesNo("Aplicar valores calculados?")
    For nX := 1 To oMdlTFL:Length()((nVal * (nPerc / 100)) * nMult)),;
                    TamSX3("TFF_VLPRPA")[2]))
            EndIf
        Next nY
        If !lAllLoc
            oMdlTFL:GoLine(nX)Exit
        EndIf
    Next nX
EndIf
 
FwRestRows(  For nY := 1 To oMdlTFF:Length(aSaveRows )
 
Return

User Function VldFiltro(oMdlTFF,cFuncao,cEscala)
Local lRetorno := .F.

If !Empty(cFuncao) .Or. !Empty(cEscala)
    If !Empty(cFuncao)       oMdlTFF:GoLine(nY.And. !Empty(cEscala)
        If oMdlTFF:GetValue("TFF_FUNCAO")   If U_VldFiltro(oMdlTFF,cFuncao,cEscala) .AND== cFuncao .And. oMdlTFF:GetValue("TFF_COBCTRESCALA") !== '2'cEscala
            lRetorno := .T.
  nVal := oMdlTFF:GetValue("TFF_VLPRPA")
    EndIf
    Else
        nValPrc := oMdlTFF:GetValue("TFF_PRCVEN"If !Empty(cFuncao)
            If    oMdlTFF:SetValueGetValue("TFF_PRCVEN",;FUNCAO") == cFuncao
                lRetorno := .T.
      ROUND((nValPrc + (nValPrc * (nPerc / 100))),; EndIf
        Else
            If TamSX3oMdlTFF:GetValue("TFF_PRCVENESCALA")[2])) == cEscala
 
               lRetorno oMdlTFF:SetValue("TFF_VLPRPA",;:= .T.
            EndIf
        ROUND((nVal + ((nVal * (nPerc / 100)) * nMult)),;EndIf
    EndIf
Else
    //Considera qualquer TFF quando os filtros estiverem vazios
    lRetorno := .T.
EndIf


Return lRetorno

User Function TamSX3("TFF_VLPRPA")[2]))
 AplicQtd(oMdlTFF,nQuant,dDataRef,lSetValue)
Local lRet          := EndIf.T.
Local nDataFim       Next nY
        If !lAllLoc
 := Day(LastDate(dDataRef)) // ultimo dia do mes
Local nValor        :=   Exit0
Local nQtd       EndIf
   := Next0 nX
EndIf
 
FwRestRows( aSaveRows )
 
Return

User Function VldFiltro(oMdlTFF,cFuncao,cEscala)
Local lRetornoLocal nDataIni      := .F.

If !Empty(cFuncao) .Or. !Empty(cEscala)
    If !Empty(cFuncao) .And. !Empty(cEscala)Day(dDataRef) //dia de inicio do contrato

If lSetValue
    //Altera a quantidade do Ifcampo oMdlTFF:GetValue("TFF_FUNCAO") == cFuncao .And.QTDVEN
    lRet := oMdlTFF:GetValueSetValue("TFF_ESCALAQTDVEN") == cEscala,nQuant)

    //Realiza o calculo da     lRetorno := .T.proxima parcela
    If lRet
   EndIf
    Else
 nValor   := oMdlTFF:GetValue("TFF_PRCVEN") // preço de venda If !Empty(cFuncao)do contrato
        nQtd     If:= oMdlTFF:GetValue("TFF_FUNCAOQTDVEN") == cFuncao
    // preço de venda do contrato

           nValor lRetorno := .T.(nValor/nDataFim)*((nDataFim-nDataIni)+1)
    
        //Arredonda o EndIfvalor
        Else
nValor := Round(nValor,TamSX3("TFL_VLPRPA")[2]) * nQtd
        If oMdlTFF:GetValueSetValue("TFF_ESCALAVLPRPA",nValor) == cEscala
    EndIf
Else
          nValor  lRetorno := .T.
            EndIfoMdlTFF:GetValue("TFF_PRCVEN") * nQuant // preço de venda do contrato

    nValor    EndIf:= (nValor/nDataFim)*((nDataFim-nDataIni)+1)
    EndIf
Else
    //ConsideraArredonda qualquer TFF quando os filtros estiverem vazioso valor
    lRetornonValor := .T.Round(nValor,TamSX3("TFL_VLPRPA")[2])
EndIf


Return lRetornonValor



04. DEMAIS INFORMAÇÕES

DSERSGS-10241 DT Criação de gatilho para preenchimento de valor pro-rata

...