Árvore de páginas

Versões comparadas

Chave

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

...

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 cCompet   := Space(7)
Local cCompCtr  := Space(10)
Local aOpcs := {"2 - Não","1 - Sim"}
Local aOpcComp := {}
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'
        aOpcComp := U_CompetCo()
        DEFINE MSDIALOG oDlgSelect FROM 0,0 TO 320380,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 999999.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.)
 
        @ 6460, 9 SAY "Em todos os Locais?Apurado em:" SIZE 80, 30 PIXEL
         
        oCombooCompet := TComboBoxTGet():New(63 59,77 077, { | u |if If( PCount()>0,cTodosLoc == 0, cCompet, cCompet := u,cTodosLoc ) },oDlgSelect, ;
            aOpcs020,40,10,oDlgSelect,,,, 010, "@E 99/9999",, 0, 16777215,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F. ,,"cCompet",,,,'cTodosLoc'.T.)

        oGrp@ 94, 9 SAY := TGroup():New(080, 005, 135, 140, "Alteração de Quantidade", oDlgSelect,,, .T.)
        "Em todos os Locais?" SIZE 80, 30 PIXEL
        @ 90, 9 SAY "Nova Quantidade" SIZE 50, 30 PIXEL
 
        oQuantoCombo := TGetTComboBox():New( 10093, 00977, { | u | Ifif( PCount() == 0, nQuant, nQuant >0,cTodosLoc:= u ,cTodosLoc) },oDlgSelect, ;
            060aOpcs, 010, "@E 99,999,999,999",, 0, 16777215,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F. ,,"nQuant",,,,40,10,oDlgSelect,,,,,,.T.,,,,,,,,,'cTodosLoc')

        oGrp    := TGroup():New(080, 005, 135, 140, "Alteração de Quantidade", oDlgSelect,,, .T.)
         
        @ 90110, 779 SAY "DataNova de ReferenciaQuantidade" SIZE 50, 30 PIXEL
  
        oDataAteoQuant := TGet():New( 100120, 077009, { | u | If( PCount() == 0, dDataRefnQuant, dDataRefnQuant := u ) },oDlgSelect, ;
            060, 010, "@D@E 99,999,999,999",, 0, 16777215,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F. ,,"dDataRefnQuant",,,,.T.)
  
        @ 120110, 977 SAY "TodasData asde Linhas?Referencia" SIZE 8050, 30 PIXEL
  
        oCombo1oDataAte := TComboBoxTGet():New( 120, 077, { | u |if If( PCount()>0,cTodasLin == 0, dDataRef, dDataRef := u,cTodasLin ) },oDlgSelect, ;
            aQtd060,60,10,oDlgSelect,,,, 010, "@D",, 0, 16777215,,.F.,,.T.,,.F.,,.F.,.F.,,,,'cTodasLin').F.,.F. ,,"dDataRef",,,,.T.)
 
        
      @ 140, 9 SAY "Todas as Linhas?" SIZE 80, 30 PIXEL
  
        oRefreshoCombo1 := TButtonTComboBox():New( 144140, 005, "Aplicar",oDlgSelect,077,{|| U_AplicVl(oModel, cFuncao , nPerc, nMult, LEFT(cTodosLoc,1), cEscala, nQuant, dDataRef, LEFT(cTodasLin,1)) , oDlgSelect:End()}, 60,10,,,.F.,.T.,.F.,,.F.,,,.F. )
 u|if(PCount()>0,cTodasLin:=u,cTodasLin)},;
            aQtd,60,10,oDlgSelect,,,,,,.T.,,,,,,,,,'cTodasLin')   
         
        oExitoRefresh := TButton():New( 144  164, 080005, "SairAplicar",oDlgSelect,{|| oDlgSelect:End() }, 60,10,,,.F.,.U_AplicVl(oModel, cFuncao , nPerc, nMult, LEFT(cTodosLoc,1), cEscala, nQuant, dDataRef, LEFT(cTodasLin,1), cCompet) , oDlgSelect:End()}, 60,10,,,.F.,.T.,.F.,,.F.,,,.F. )
  
      
  oExit := TButton():New( 164  , ACTIVATE MSDIALOG oDlgSelect CENTER
    Else
        MsgAlert("Opção disponível apenas para contratos Recorrentes")
    EndIf
EndIf
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, cCompet)
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
Local lServRet  := .F.
Local cProdRet  := SuperGetMv("MV_PRODRET",,"")
 

DbSelectArea("TFF")
TFF->(DbSetOrder(1))
 
If TFF->(ColumnPos("TFF_PRDRET")) > 0 .And. TFF->(ColumnPos("TFF_VLRRET")) > 0
    lServRet := .T.
EndIf
 
If nQuant > 0 .And. !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)
    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)
    IF nPerc == 0
        nValParc := 0
    Else
        nValParc := U_AplicQtd(oMdlTFF,nQuant,dDataRef,.F.)
    EndIf
    nGrandTot += nValParc
    nTotal := oMdlTFF:GetValue("TFF_VLPRPA")
    //cLog += " - Valor Novo (prox. parcela): R$ " + Alltrim(TRANSFORM((nValParc), "@e 999,999,999.99" ))"
    cLog += " - Valor Novo (prox. parcela): R$ " + Alltrim(TRANSFORM((IIF(nPerc == 0, 0, nValParc + nTotal)), "@e 999,999,999.99" )) +;
    " ( R$ " + Alltrim(TRANSFORM(nValParc, "@e 999,999,999.99" )) + " )" + " + ( R$ " + Alltrim(TRANSFORM(IIF(nPerc == 0, 0, nTotal), "@e 999,999,999.99" )) + " )" + Chr(13) + Chr(10)
    cLog += Chr(13) + Chr(10)
    cLog += Chr(13) + Chr(10)
EndIf

If nPerc > 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,cCompet) .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)
                    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)
                    cLog += " - Valor Antigo (prox. parcela): R$ " +  Alltrim(TRANSFORM( oMdlTFF:GetValue("TFF_VLPRPA") , "@e 999,999,999.99" )) + Chr(13) + Chr(10)
                    nValParc := U_AplicQtd(oMdlTFF,nQuant,dDataRef,.F.)
                If nPerc == 0
 nTotal := ROUND( (oMdlTFF:GetValue("TFF_VLPRPA") * (nPerc / 100)) * nMult , TamSX3("TFF_VLPRPA")[2] )
       nTotal := 0
           nGrandTot    += nTotalElse
                    nValParcnTotal := ROUND( (oMdlTFF:GetValue("TFF_VLPRPA") + nValParc
     * (nPerc / 100)) * nMult , TamSX3("TFF_VLPRPA")[2] )
                cLogEndIf
 += " - Valor Novo (prox. parcela): R$ " + Alltrim(TRANSFORM((nValParc + nTotal), "@e 999,999,999.99" )) +; nGrandTot += nTotal
                If nPerc == 0
 " ( R$ " + Alltrim(TRANSFORM(nValParc, "@e 999,999,999.99" )) + " )" + " + ( R$ " + Alltrim(TRANSFORM(nTotal, "@e 999,999,999.99" )) + " )" + Chr(13) + Chr(10)                  nValParc := 0
                Else
                    cLognValParc +:= Chr(13oMdlTFF:GetValue("TFF_VLPRPA") + Chr(10)nValParc
                ElseEndIf
                cLog    cLog += " - Valor AntigoNovo (prox. parcela): R$ " +  Alltrim(TRANSFORM((IIF( oMdlTFF:GetValue("TFF_VLPRPA") nPerc == 0, 0, nValParc + nTotal)), "@e 999,999,999.99" )) + Chr(13) + Chr(10);
                " ( R$ " //nTotal := ROUND( (oMdlTFF:GetValue("TFF_VLPRPA") * (nPerc / 100)) * nMult , TamSX3("TFF_VLPRPA")[2] )
                    nTotal := (oMdlTFF:GetValue("TFF_PRCVEN") * (nPerc / 100)) * oMdlTFF:GetValue("TFF_QTDVEN")     + Alltrim(TRANSFORM(nValParc, "@e 999,999,999.99" )) + " )" + " + ( R$ " + Alltrim(TRANSFORM(IIF(nPerc == 0, 0, nTotal), "@e 999,999,999.99" )) + " )" + Chr(13) + Chr(10)
                cLog += Chr(13)  nTotal := Round(nTotal,TamSX3("TFF_VLPRPA")[2]) + Chr(10)
                    nGrandTot += nTotal
   Else
                 cLog += " - Valor NovoAntigo (prox. parcela): R$ " +  Alltrim(TRANSFORM(( oMdlTFF:GetValue("TFF_VLPRPA") + nTotal), "@e 999,999,999.99" )) +;
 Chr(13) + Chr(10)
                //nTotal ":= ROUND( + R$ " + Alltrim(TRANSFORM(nTotal, "@e 999,999,999.99" )) + " )" + Chr(13) + Chr(10(oMdlTFF:GetValue("TFF_VLPRPA") * (nPerc / 100)) * nMult , TamSX3("TFF_VLPRPA")[2] )
                If nPerc == 0
  cLog += Chr(13) + Chr(10)
              nTotal := EndIf0
            EndIf
    Else
    Next nY
        cLog += REPLICATE("-",10)
        cLognTotal +:= Chr(13(oMdlTFF:GetValue("TFF_PRCVEN") +* Chr(10)
  (nPerc / 100)) * oMdlTFF:GetValue("TFF_QTDVEN")    
   If !lAllLoc
            ExitEndIf
          EndIf
    Next nX
EndIf
 
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)
 nTotal := Round(nTotal,TamSX3("TFF_VLPRPA")[2])
                nGrandTot += nTotal
                cLog += " - Valor Novo (prox. parcela): R$ " + Alltrim(TRANSFORM((IIF(nPerc == 0, 0, oMdlTFF:GetValue("TFF_VLPRPA")) + nTotal), "@e 999,999,999.99" )) +;
          oMdlTFF:GoLine(nPosTFF)    
  " ( + R$ "  U_AplicQtd(oMdlTFF,nQuant,dDataRef,.T.)
    EndIf

    For nX := 1 To oMdlTFL:Length()
+ Alltrim(TRANSFORM(nTotal, "@e 999,999,999.99" )) + " )" + Chr(13) + Chr(10)
                cLog += Chr(13) If lAllLoc+ Chr(10)
            oMdlTFL:GoLine(nX)EndIf
        EndIf
    Next nY
   For nYcLog :+= 1 To oMdlTFF:Length(REPLICATE("-",10)
    cLog += Chr(13) + Chr(10)
     oMdlTFF:GoLine(nY)If !lAllLoc
        Exit
    If U_VldFiltro(oMdlTFF,cFuncao,cEscala) .AND. oMdlTFF:GetValue("TFF_COBCTR") != '2'

                //aplicar a quantidade para todas as linhas encontradas conforme os filtros
            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.)
    EndIf
 
    For nX := 1 To oMdlTFL:Length()
   EndIf

     If lAllLoc
          nVal := oMdlTFFoMdlTFL:GetValue("TFF_VLPRPA")GoLine(nX)
        EndIf
        nValPrcFor nY := 1 To oMdlTFF:GetValueLength("TFF_PRCVEN")

            oMdlTFF:GoLine(nY)
            If lServRetU_VldFiltro(oMdlTFF,cFuncao,cEscala,cCompet) .AndAND. nMult > 0
 oMdlTFF:GetValue("TFF_COBCTR") != '2'
 
                //aplicar a quantidade 
para todas as linhas encontradas conforme os filtros
             nTotal := (nValPrc +If (nValPrc * (nPerc / 100)))
lAllLinha .And. nQuant > 0
                    oMdlTFF:SetValue("TFF_PRCVEN", nTotal)

U_AplicQtd(oMdlTFF,nQuant,dDataRef,.T.)
                EndIf
 
          nTotal := (nValPrc * (nPerc / 100)) *nVal := oMdlTFF:GetValue("TFF_QTDVENVLPRPA")     

                    nTotalnValPrc := Round(nTotal,TamSX3(oMdlTFF:GetValue("TFF_VLPRPAPRCVEN")[2])
 
                If lServRet .And. nMult > 0

                    oMdlTFFnTotal :SetValue("TFF_VLPRPA",nVal= (nValPrc + nTotal)(nValPrc * (nPerc / 100)))

                    oMdlTFF:SetValue("TFF_PRCVEN", nTotal)
 
                    If !Empty(cProdRet) nPerc == 0
                        oMdlTFF:SetValue("TFF_PRDRET",cProdRet)nTotal := 0
                    EndIf

Else
                        nTotal := (nValPrc * (nPerc / 100)) * oMdlTFF:GetValue("TFF_QTDVEN") 
                    EndIf
 
                    nTotal := Round(nTotal * nMult

,TamSX3("TFF_VLPRPA")[2])
                      nTotal := Round(nTotal,TamSX3("TFF_VLPRPA")[2]) 

                    oMdlTFF:SetValue("TFF_VLRRETVLPRPA",nVal + nTotal)
                Else
     
               oMdlTFF:SetValue("TFF_PRCVEN",;
     If !Empty(cProdRet)
                  ROUND((nValPrc + (nValPrc * (nPerc / 100))),; oMdlTFF:SetValue("TFF_PRDRET",cProdRet)
                        TamSX3("TFF_PRCVEN")[2]))EndIf
 
    
                nTotal := (nValPrc * (nPerc / 100)) * oMdlTFF:SetValueGetValue("TFF_VLPRPAQTDVEN",;
)
                     
         ROUND((nVal + ((nVal * (nPerc / 100))           nTotal := nTotal * nMult)),;
 
                    nTotal   := Round(nTotal,TamSX3("TFF_VLPRPA")[2]))
 
                EndIf    
 oMdlTFF:SetValue("TFF_VLRRET",nTotal)
           EndIf
        Next nY
 Else
       If !lAllLoc
            ExitoMdlTFF:SetValue("TFF_PRCVEN",;
        EndIf
         Next nX
EndIf
 
FwRestRows( aSaveRows )
 
Return

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

If !Empty(cFuncao) .Or. !Empty(cEscala)ROUND((nValPrc + (nValPrc * (nPerc / 100))),;
    If !Empty(cFuncao) .And. !Empty(cEscala)
              If oMdlTFF:GetValue("TFF_FUNCAO") == cFuncao .And. oMdlTFF:GetValue      TamSX3("TFF_ESCALAPRCVEN")[2]))

 == cEscala
            lRetorno := .T.
    If nPerc ==  EndIf0
    Else
        If !Empty(cFuncao)
            If oMdlTFF:GetValueSetValue("TFF_FUNCAOVLPRPA", 0)
 == cFuncao
                lRetorno := .T.Else
              EndIf
          Else
oMdlTFF:SetValue("TFF_VLPRPA",;
               If oMdlTFF:GetValue             ROUND((nVal + ((nVal * (nPerc / 100)) * nMult)),;
                            TamSX3("TFF_ESCALAVLPRPA")[2]))
 == cEscala
                lRetorno := .T.
            EndIf
 EndIf
                EndIf   
            EndIf
        Next nY
        If !lAllLoc
            Exit
        EndIf
    Next nX
EndIf
  
FwRestRows( aSaveRows )
  
Return
 
User Function VldFiltro(oMdlTFF,cFuncao,cEscala,cCompet)
Local lRetorno  := .T.

If !Empty(cFuncao) .And. !Empty(cEscala) .AND. !Empty(cCompet)
    If oMdlTFF:GetValue("TFF_FUNCAO") == cFuncao .And. oMdlTFF:GetValue("TFF_ESCALA") == cEscala
        If !(U_VldCompC(oMdlTFF:GetValue("TFF_COD"), cCompet))
            lRetorno := .F.
        EndIf
    Else
        lRetorno := .F.
    EndIf
Else
    If !Empty(cFuncao)
        lRetorno := oMdlTFF:GetValue("TFF_FUNCAO") == cFuncao
    EndIf
    If !Empty(cEscala) .AND. lRetorno
        lRetorno := oMdlTFF:GetValue("TFF_ESCALA") == cEscala
    EndIf
    If !Empty(cCompet) .AND. lRetorno
        lRetorno := U_VldCompC(oMdlTFF:GetValue("TFF_COD"), cCompet)
    EndIf
EndIf
 
Return lRetorno
 
User Function AplicQtd(oMdlTFF,nQuant,dDataRef,lSetValue)
Local lRet          := .T.
Local nDataFim      := Day(LastDate(dDataRef)) // ultimo dia do mes
Local nValor        := 0
Local nVlrPrx       := oMdlTFF:GetValue("TFF_VLPRPA") //Valor da proxima parcela  
Local nDataIni      := Day(dDataRef) //dia de inicio do contrato
Local nQtdAnt       := oMdlTFF:GetValue("TFF_QTDVEN")
 
If lSetValue
    //Altera a quantidade do campo TFF_QTDVEN
    lRet := oMdlTFF:SetValue("TFF_QTDVEN",nQuant)
 
    //Realiza o calculo da proxima parcela
    If lRet
        nValor  := oMdlTFF:GetValue("TFF_PRCVEN") * (nQuant - nQtdAnt) // preço de venda do contrato
 
        nValor := (nValor/nDataFim)*((nDataFim-nDataIni)+1)
     
        //Arredonda o valor
        nValor := Round(nValor,TamSX3("TFL_VLPRPA")[2])
        nValor := nVlrPrx + nValor
        oMdlTFF:SetValue("TFF_VLPRPA",nValor)
    EndIf
Else
    nValor   := oMdlTFF:GetValue("TFF_PRCVEN") * (nQuant - nQtdAnt)  // Valor a ser reajustado
 
    nValor := (nValor/nDataFim)*((nDataFim-nDataIni)+1)
     
    //Arredonda o valor
    nValor := Round(nValor,TamSX3("TFL_VLPRPA")[2])
EndIf
 
Return nValor

User Function CompetCo()
Local aCompets		:= CtrCompets()
Local nX

For nX := 1 to Len(aCompets)
	aCompets[nX] := CVALTOCHAR(nX)+'='+aCompets[nX]
Next nX

Return aCompets

User Function VldCompC(cCodTFF, cCompet)
Local cQuery    := ""
Local cAliasCND := GetNextAlias()
Local lRet       EndIf
    EndIf
Else
    //Considera qualquer TFF quando os filtros estiverem vazios
    lRetorno := .T.
EndIf


Return lRetorno

User Function AplicQtd(oMdlTFF,nQuant,dDataRef,lSetValue)
Local lRet          := .T.
Local nDataFim      := Day(LastDate(dDataRef)) // ultimo dia do mes
Local nValor        := 0
Local nVlrPrx       := oMdlTFF:GetValue("TFF_VLPRPA") //Valor da proxima parcela   
Local nDataIni      := Day(dDataRef) //dia de inicio do contrato
Local nQtdAnt       := oMdlTFF:GetValue("TFF_QTDVEN")

If lSetValue
    //Altera a quantidade do campo TFF_QTDVEN
    lRet := oMdlTFF:SetValue("TFF_QTDVEN",nQuant)

    //Realiza o calculo da proxima parcela
    If lRet
        nValor  := oMdlTFF:GetValue("TFF_PRCVEN") * (nQuant - nQtdAnt) // preço de venda do contrato

        nValor := (nValor/nDataFim)*((nDataFim-nDataIni)+1)
    
        //Arredonda o valor
        nValor := Round(nValor,TamSX3("TFL_VLPRPA")[2])
        nValor := nVlrPrx + nValor
        oMdlTFF:SetValue("TFF_VLPRPA",nValor)
    EndIf
Else
    nValor   := oMdlTFF:GetValue("TFF_PRCVEN") * (nQuant - nQtdAnt)  // Valor a ser reajustado

    nValor := (nValor/nDataFim)*((nDataFim-nDataIni)+1)
    
    //Arredonda o valor
    nValor := Round(nValor,TamSX3("TFL_VLPRPA")[2])
EndIf

Return nValor

:= .T.

cQuery := ""
cQuery += " SELECT 1 FROM " + RetSQLName("TFF") + " TFF "
cQuery += " INNER JOIN " + RetSQLName("TFL") + " TFL " 
cQuery += " ON TFL.TFL_CODIGO = TFF.TFF_CODPAI "
cQuery += " AND TFL.TFL_FILIAL = '" + xFilial("TFL") + "' "
cQuery += " AND TFL.D_E_L_E_T_ = ' ' "
cQuery += " INNER JOIN " + RetSQLName("CNE") + " CNE " 
cQuery += " ON CNE.CNE_CONTRA = TFF.TFF_CONTRT "
cQuery += " AND CNE.CNE_NUMERO = TFL.TFL_PLAN "
cQuery += " AND CNE.CNE_REVISA = TFF.TFF_CONREV "
cQuery += " AND CNE.CNE_ITEM = TFF.TFF_ITCNB "
cQuery += " AND CNE.CNE_FILIAL = '" + xFilial("CNE") + "' "
cQuery += " AND CNE.D_E_L_E_T_ = ' ' "
cQuery += " INNER JOIN " + RetSQLName("CND") + " CND " 
cQuery += " ON CND.CND_CONTRA = CNE.CNE_CONTRA "
cQuery += " AND CND.CND_REVISA = CNE.CNE_REVISA "
cQuery += " AND CND.CND_FILIAL = '" + xFilial("CND") + "' "
cQuery += " AND CND.D_E_L_E_T_ = ' ' "
cQuery += " AND CND.CND_COMPET = '" + cCompet + "' " 
cQuery += " WHERE "
cQuery += " TFF.TFF_FILIAL = '" + xFilial("TFF") + "' "
cQuery += " AND TFF.TFF_COD = '" + cCodTFF + "' "
cQuery += " AND TFF.D_E_L_E_T_ = ' ' "

cQuery		:= ChangeQuery(cQuery)
DbUseArea(.T., "TOPCONN",TcGenQry(,,cQuery), cAliasCND , .T., .T.)

lRet := ( cAliasCND  )->( !EOF() )

( cAliasCND  )->(DbCloseArea())

Return lRet


04. DEMAIS INFORMAÇÕES

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

...