Á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") .OR. isInCallStack("AT870PlaRe"))
    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 cAplReajs := "2"
Local cAplHE    := "2"
Local cAplMT    := "2"
Local cTodosLoc := "2"
Local cTodasLin := "2"
Local cCronog   := '1'
Local cCompet   := Space(7)
Local aOpcRea   := {"2 - Não","1 - Sim"}
Local aOpcHE    := {"2 - Não","1 - Sim"}
Local aOpcMT    := {"2 - Não","1 - Sim"}
Local aOpcs     := {"2 - Não","1 - Sim"}
Local aOpcComp  := {}
Local aQtd      := {"2 - Posicionada","1 - Todos"}
Local aCronog   := {"1 - Sim", "2 - Não"}
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 475525,300 PIXEL TITLE "Reajuste Retroativo"
        oGrp1    := TGroup():New(000, 005, 53, 140, "Filtros", oDlgSelect,,, .T.)
    
         @ 10, 9 SAY "Função" SIZE 30, 30 PIXEL
         
        oGetSRA := TGet():New( 020, 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'
        
        @ 10, 77 SAY "Escala" SIZE 30, 30 PIXEL
        
        oGetTDW := TGet():New( 020, 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'
    
        @ 40, 9 SAY "Apurado em:" SIZE 80, 30 PIXEL
                
        oCompet := TGet():New( 39, 077, { | u | If( PCount() == 0, cCompet, cCompet := u ) },oDlgSelect, ;
            020, 010, "@E 99/9999",, 0, 16777215,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F. ,,"cCompet",,,,.T.)
    
        oGrp2    := TGroup():New(055, 005, 123143, 140, "Reajuste", oDlgSelect,,, .T.)
    
        @ 65, 9 SAY "Percentual (%)" SIZE 50, 30 PIXEL
         
        oDataDe := TGet():New( 75, 009, { | u | If( PCount() == 0, nPerc, nPerc := u ) },oDlgSelect, ;
            060, 010, "@E 9999.99",, 0, 16777215,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F. ,,"nPerc",,,,.T.)
         
        @ 65, 77 SAY "Multiplicador" SIZE 50, 30 PIXEL
         
        oDataAte := TGet():New( 75, 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.)
            
        @ 95, 9 SAY "Aplica Reajuste?" SIZE 80, 30 PIXEL
                
        oCombo1 := TComboBox():New(94,77,{|u|if(PCount()>0,cAplReajs:=u,cAplReajs)},;
            aOpcRea,40,10,oDlgSelect,,,,,,.T.,,,,,,,,,'cAplReajs')
       
        @ 110, 9 SAY "Reajusta H.E.?" SIZE 80, 30 PIXEL
                
        oCombo2 := TComboBox():New(109,77,{|u|if(PCount()>0,cAplHE:=u,cAplHE)},;
            aOpcHE,40,10,oDlgSelect,,,,,,.T.,,,,,,,,,'cAplHE')

        oGrp    := TGroup():New(128, 005, 183, 140, "Alteração de Quantidade", oDlgSelect,,, .T.)
   
        @ 138125, 9 SAY "Em todos os LocaisReajusta Materiais?" SIZE 80, 30 PIXEL
                
        oCombooCombo3 := TComboBox():New(137124,77,{|u|if(PCount()>0,cTodosLoccAplMT:=u,cTodosLoccAplMT)},;
            aOpcsaOpcMT,40,10,oDlgSelect,,,,,,.T.,,,,,,,,,'cTodosLoc')
cAplMT')

        oGrp    := TGroup():New(148, 005, 190, 140, "Alteração de Quantidade", oDlgSelect,,, .T.)
                
        @ 158, 9 SAY "Nova Quantidade" SIZE 50, 30 PIXEL
         
        oQuant := TGet():New( 168, 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.)
         
        @ 158, 77 SAY "Data de Referencia" SIZE 50, 30 PIXEL
         
        oDataAte := TGet():New( 168, 077, { | u | If( PCount() == 0, dDataRef, dDataRef := u ) },oDlgSelect, ;
            060, 010, "@D",, 0, 16777215,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F. ,,"dDataRef",,,,.T.)
        
        @ 187200, 9 SAY "Todas os itens asde LinhasRH?" SIZE 80, 30 PIXEL
   
        oCombo1 := TComboBox():New(187200, 077,{|u|if(PCount()>0,cTodasLin:=u,cTodasLin)},;
            aQtd,60,10,oDlgSelect,,,,,,.T.,,,,,,,,,'cTodasLin')
   
        @ 202215, 9 SAY "Aplic. Cronograma?" SIZE 80, 30 PIXEL
   
        oCombo1 := TComboBox():New(202215, 077,{|u|if(PCount()>0,cCronog:=u,cCronog)},;
            aCronog,60,10,oDlgSelect,,,,,,.T.,,,,,,,,,'cCronog')

        @ 230, 9 SAY "Em todos os Locais?" SIZE 80, 30 PIXEL
                
        oRefreshoCombo := TButtonTComboBox():New( 225230, 005, "Aplicar",oDlgSelect,77,{|u|if(PCount()>0,cTodosLoc:=u,cTodosLoc)},;
            aOpcs,40,10,oDlgSelect,,,,,,.T.,,,,,,,,,'cTodosLoc')    
                
        oRefresh := TButton():New( 250, 005, "Aplicar",oDlgSelect,{|| U_AplicVl(oModel, cFuncao , nPerc, nMult, LEFT(cTodosLoc,1), cEscala, nQuant, dDataRef, LEFT(cTodasLin,1), cCompet, LEFT(cAplReajs,1), LEFT(cCronog,1), LEFT(cAplHE,1), LEFT(cAplMT,1)) , oDlgSelect:End()}, 60,10,,,.F.,.T.,.F.,,.F.,,,.F. )
         
        oExit := TButton():New( 225250  , 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, cAplReajs, cCronog, cAplHE,cAplMT)
Local lAllLoc   := cTodosLoc == '1'
Local lAllLinha := cTodasLin == '1'
Local lAplicRea := cAplReajs == '1'
Local oMdlTFL   := oModel:GetModel("TFL_LOC")
Local oMdlTFF   := oModel:GetModel("TFF_RH")
Local oMdlTFJoMdlTFG   := oModel:GetModel("TFJTFG_REFERMI")
Local oMdlTFH   := oModel:GetModel("TFH_MC")
Local oMdlTFJ   := oModel:GetModel("TFJ_REFER")
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",,"")
Local cProxParc := ""
Local nValPrx   := 0
Local nDiff     := 0
   
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()
    If !EMPTY(STRTRAN(cCompet,"/")) .AND. cAplReajs == '1'
        cProxParc := cCompet
    Else
        cProxParc := TecBDt2Cmp(POSICIONE("CNA",1,xFilial("CNA")+oMdlTFL:GetValue("TFL_CONTRT")+oMdlTFL:GetValue("TFL_CONREV")+oMdlTFL:GetValue("TFL_PLAN"), "CNA_PROMED"))
    EndIf
    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 .AND. lAplicRea
        nValParc := 0
    Else
        nValParc := U_AplicQtd(oMdlTFF,nQuant,dDataRef,.F.,,cCronog == '1')
    EndIf
    nGrandTot += nValParc
    If cCronog == '1'
        If !(TecHasTGT("TFF",oMdlTFF:GetValue("TFF_COD"),cProxParc,oMdlTFJ:GetValue("TFJ_CODIGO"),@nTotal))
            nTotal := At740PrxPa(/*cTipo*/,;
                    oMdlTFF:GetValue("TFF_QTDVEN"),;
                    oMdlTFF:GetValue("TFF_PRCVEN"),;
                    oMdlTFF:GetValue("TFF_DESCON"),;
                    oMdlTFF:GetValue("TFF_TXLUCR"),;
                    oMdlTFF:GetValue("TFF_TXADM"))
        EndIf
    Else
        nTotal := oMdlTFF:GetValue("TFF_VLPRPA")
    EndIf
    //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 .AND. lAplicRea, 0, nValParc + nTotal)), "@e 999,999,999.99" )) +;
    " ( R$ " + Alltrim(TRANSFORM(nValParc, "@e 999,999,999.99" )) + " )" + " + ( R$ " + Alltrim(TRANSFORM(IIF(nPerc == 0 .AND. lAplicRea, 0, nTotal), "@e 999,999,999.99" )) + " )" + Chr(13) + Chr(10)
    cLog += Chr(13) + Chr(10)
    cLog += Chr(13) + Chr(10)
EndIf
If lAplicRea
    For nX := 1 To oMdlTFL:Length()
        If lAllLoc
            oMdlTFL:GoLine(nX)
        EndIf
        For nY := 1 To oMdlTFF:Length()
            If !lAllLinha
                nPosTFF := oMdlTFF:GetLine()
                oMdlTFF:GoLine(nPosTFF)
            Else   
                oMdlTFF:GoLine(nY)
            EndIf   
            If U_VldFiltro(oMdlTFF,cFuncao,cEscala,cCompet) .AND. oMdlTFF:GetValue("TFF_COBCTR") != '2'
                If !EMPTY(STRTRAN(cCompet,"/")) .AND. cAplReajs == '1'
                    cProxParc := cCompet
                Else
                    cProxParc := TecBDt2Cmp(POSICIONE("CNA",1,xFilial("CNA")+oMdlTFL:GetValue("TFL_CONTRT")+oMdlTFL:GetValue("TFL_CONREV")+oMdlTFL:GetValue("TFL_PLAN"), "CNA_PROMED"))
                EndIf
                If cCronog == '1'
                    If !(TecHasTGT("TFF",oMdlTFF:GetValue("TFF_COD"),cProxParc,oMdlTFJ:GetValue("TFJ_CODIGO"),@nValPrx))
                        nValPrx := At740PrxPa(/*cTipo*/,;
                                oMdlTFF:GetValue("TFF_QTDVEN"),;
                                oMdlTFF:GetValue("TFF_PRCVEN"),;
                                oMdlTFF:GetValue("TFF_DESCON"),;
                                oMdlTFF:GetValue("TFF_TXLUCR"),;
                                oMdlTFF:GetValue("TFF_TXADM"))
                    EndIf
                Else
                    nValPrx := oMdlTFF:GetValue("TFF_VLPRPA")
                EndIf
                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( nValPrx , "@e 999,999,999.99" )) + Chr(13) + Chr(10)
                    nValParc := U_AplicQtd(oMdlTFF,nQuant,dDataRef,.F.,,cCronog == '1')
                    If nPerc == 0 .AND. lAplicRea
                        nTotal := 0
                    Else
                        nTotal := ROUND( (nValPrx * (nPerc / 100)) * nMult , TamSX3("TFF_VLPRPA")[2] )
                    EndIf
                    nGrandTot += nTotal
                    If nPerc == 0 .AND. lAplicRea
                        nValParc := 0
                    Else
                        nValParc := nValPrx + nValParc
                    EndIf
                    cLog += " - Valor Novo (prox. parcela): R$ " + Alltrim(TRANSFORM((IIF(nPerc == 0 .AND. lAplicRea, 0, nValParc + nTotal)), "@e 999,999,999.99" )) +;
                    " ( R$ " + Alltrim(TRANSFORM(nValParc, "@e 999,999,999.99" )) + " )" + " + ( R$ " + Alltrim(TRANSFORM(IIF(nPerc == 0 .AND. lAplicRea, 0, nTotal), "@e 999,999,999.99" )) + " )" + Chr(13) + Chr(10)
                    cLog += Chr(13) + Chr(10)
                Else  
                    cLog += " - Valor Antigo RH (prox. parcela): R$ " +  Alltrim(TRANSFORM( nValPrx , "@e 999,999,999.99" )) + Chr(13) + Chr(10)
                    If nPerc == 0 .AND. lAplicRea
                        nTotal := 0
                    Else
                        nTotal := (oMdlTFF:GetValue("TFF_PRCVEN") * (nPerc / 100)) * oMdlTFF:GetValue("TFF_QTDVEN")
                    EndIf
                    nTotal := Round(nTotal,TamSX3("TFF_VLPRPA")[2])
                    nGrandTot += nTotal
                    cLog += " - Valor Novo RH(prox. parcela): R$ " + Alltrim(TRANSFORM((IIF(nPerc == 0 .AND. lAplicRea, 0, nValPrx) + nTotal), "@e 999,999,999.99" )) +;
                    " ( + R$ " + Alltrim(TRANSFORM(nTotal, "@e 999,999,999.99" )) + " )" + Chr(13) + Chr(10)
                    cLog += Chr(13) + Chr(10)
                EndIf
    If cAplMT == "1"
     EndIf
             If !lAllLinha
     If oMdlTFG:Length() > 0
        Exit
             EndIf
        Next nYU_CheckMat("TFG",oMdlTFG,oMdlTFF:GetValue("TFF_COD"),oMdlTFJ:GetValue("TFJ_CODIGO"),cCronog,cProxParc,@cLog,nPerc,lAplicRea,@nGrandTot)
        cLog += REPLICATE("-",10)
        cLog += Chr(13) + Chr(10)
  EndIf
      If !lAllLoc
            Exit
     If oMdlTFH:Length() > EndIf0
     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" )  U_CheckMat("TFH",oMdlTFH,oMdlTFF:GetValue("TFF_COD"),oMdlTFJ:GetValue("TFJ_CODIGO"),cCronog,cProxParc,@cLog,nPerc,lAplicRea,@nGrandTot)
        
AtShowLog(cLog,"Prévia de Valores",/*lVScroll*/,/*lHScroll*/,/*lWrdWrap*/,.F.)
             
If MsgYesNo("Aplicar valores calculados?")EndIf
        
    //Verifica se vai aplicar a quantidade somente para aEndIf linha posicionada
    If  !lAllLinha .And. nQuant > 0
      EndIf
  oMdlTFL:GoLine(nPosTFL)
          oMdlTFF:GoLine(nPosTFF)EndIf
        U_AplicQtd(oMdlTFF,nQuant,dDataRef,.T.,nPerc,cCronog == '1',cCompet)
    EndIf     If !lAllLinha
       
    For nX := 1 To oMdlTFL:Length()Exit
        If lAllLoc
    EndIf
        oMdlTFL:GoLine(nX)Next nY
        EndIfcLog += REPLICATE("-",10)
        ForcLog nY :+= 1 To oMdlTFF:Length(Chr(13) + Chr(10)
            If !lAllLinhalAllLoc
                oMdlTFF:GoLine(nPosTFF)Exit
        EndIf
    Else   Next nX
EndIf
     
cLog += REPLICATE("-",15)
cLog += Chr(13)       oMdlTFF:GoLine(nY+ Chr(10)
cLog += "Valor adicional prox. parcela: R$ " + Alltrim(TRANSFORM(nGrandTot, "@e  EndIf999,999,999.99" ))
         
AtShowLog(cLog,"Prévia   lAplicDiff := de Valores",/*lVScroll*/,/*lHScroll*/,/*lWrdWrap*/,.F.)
            
If U_VldFiltro(oMdlTFF,cFuncao,cEscala,cCompet) .AND. oMdlTFF:GetValue("TFF_COBCTR") != '2'
MsgYesNo("Aplicar valores calculados?")
        
    //Verifica se vai aplicar a quantidade Ifsomente para cAplHEa == '1'linha posicionada
    If !lAllLinha .And. nQuant > 0
           U_AjustHE(nPerc, oMdlTFFoMdlTFL:GoLine(nPosTFL)
        oMdlTFF:GoLine(nPosTFF)
        EndIf
  U_AplicQtd(oMdlTFF,nQuant,dDataRef,.T.,nPerc,cCronog == '1',cCompet)
    EndIf
        
  //aplicar a quantidadeFor paranX todas:= as1 linhas encontradas conforme os filtrosTo oMdlTFL:Length()
        If lAllLoc
       If lAllLinha .And. nQuant > 0 oMdlTFL:GoLine(nX)
        EndIf
        For nY := 1  U_AplicQtd(oMdlTFF,nQuant,dDataRef,.T.,nPerc,cCronog == '1'To oMdlTFF:Length()
            If !lAllLinha
   EndIf
             oMdlTFF:GoLine(nPosTFF)
    If !EMPTY(STRTRAN(cCompet,"/")) .AND. cAplReajs == '1'
   Else  
               cProxParc := cCompetoMdlTFF:GoLine(nY)
            EndIf
    Else
        lAplicDiff := .F.
           cProxParc := TecBDt2Cmp(POSICIONE("CNA",1,xFilial("CNA")+oMdlTFLIf U_VldFiltro(oMdlTFF,cFuncao,cEscala,cCompet) .AND. oMdlTFF:GetValue("TFLTFF_CONTRT")+oMdlTFL:GetValue("TFL_CONREV")+oMdlTFL:GetValue("TFL_PLAN"), "CNA_PROMED"))COBCTR") != '2'
                EndIf
If cAplHE   == '1'
            If cCronog == '1'
     U_AjustHE(nPerc, oMdlTFF)
              If !(TecHasTGT("TFF",oMdlTFF:GetValue("TFF_COD"),cProxParc,oMdlTFJ:GetValue("TFJ_CODIGO"),@nVal))  EndIf
                //aplicar a quantidade para todas as linhas encontradas nValconforme := At740PrxPa(/*cTipo*/,;os filtros
                If lAllLinha .And. nQuant > 0
           oMdlTFF:GetValue("TFF_QTDVEN"),;
         U_AplicQtd(oMdlTFF,nQuant,dDataRef,.T.,nPerc,cCronog == '1')
                EndIf
                 oMdlTFF:GetValue("TFF_PRCVEN"),;
    If !EMPTY(STRTRAN(cCompet,"/")) .AND. cAplReajs == '1'
                    cProxParc := cCompet
      oMdlTFF:GetValue("TFF_DESCON"),;
          Else
                    cProxParc  oMdlTFF:= TecBDt2Cmp(POSICIONE("CNA",1,xFilial("CNA")+oMdlTFL:GetValue("TFL_CONTRT")+oMdlTFL:GetValue("TFL_CONREV")+oMdlTFL:GetValue("TFFTFL_TXLUCRPLAN"),; "CNA_PROMED"))
                EndIf
                oMdlTFF:GetValue("TFF_TXADM"))
   If cCronog == '1'
                 Else //aplicar apenas a diferença
  If !(TecHasTGT("TFF",oMdlTFF:GetValue("TFF_COD"),cProxParc,oMdlTFJ:GetValue("TFJ_CODIGO"),@nVal))
                        lAplicDiffnVal := .T.At740PrxPa(/*cTipo*/,;
                    EndIf
            oMdlTFF:GetValue("TFF_QTDVEN"),;
          Else
                    nVal := oMdlTFF:GetValue("TFF_VLPRPAPRCVEN"),;
                EndIf
  
                nValPrc := oMdlTFF:GetValue("TFF_PRCVENDESCON"),;
       
                    If lServRet .And. nMult > 0 oMdlTFF:GetValue("TFF_TXLUCR"),;
      
                    nTotal := (nValPrc + (nValPrc * (nPerc / 100oMdlTFF:GetValue("TFF_TXADM")))
                    If nPerc > 0Else //aplicar apenas a diferença
                        nDifflAplicDiff := At740PrxPa(/*cTipo*/,;.T.
                          EndIf
      oMdlTFF:GetValue("TFF_QTDVEN"),;
          Else
                    nVal := oMdlTFF:GetValue("TFF_PRCVENVLPRPA"),;
                EndIf
   
                nValPrc := oMdlTFF:GetValue("TFF_DESCONPRCVEN"),;
        
                If lServRet .And. nMult > 0
   oMdlTFF:GetValue("TFF_TXLUCR"),;
    
                    nTotal := (nValPrc + (nValPrc * (nPerc  oMdlTFF:GetValue("TFF_TXADM"/ 100)))
                    If nPerc   oMdlTFF:SetValue("TFF_PRCVEN", nTotal)> 0
                        nDiff := (At740PrxPa(/*cTipo*/,;
                                oMdlTFF:GetValue("TFF_QTDVEN"),;
                                oMdlTFF:GetValue("TFF_PRCVEN"),;
                                oMdlTFF:GetValue("TFF_DESCON"),;
                                oMdlTFF:GetValue("TFF_TXLUCR"),;
                                oMdlTFF:GetValue("TFF_TXADM"))- nDiff)

                         EndIfoMdlTFF:SetValue("TFF_PRCVEN", nTotal)
                    If    nPercnDiff :== 0 .AND. lAplicRea
 (At740PrxPa(/*cTipo*/,;
                          nTotal := 0
    oMdlTFF:GetValue("TFF_QTDVEN"),;
                Else
                oMdlTFF:GetValue("TFF_PRCVEN"),;
        nTotal := (nValPrc * (nPerc / 100)) * oMdlTFF:GetValue("TFF_QTDVEN")
                oMdlTFF:GetValue("TFF_DESCON"),;
    EndIf
       
                    nTotal oMdlTFF:= Round(nTotal,TamSX3(GetValue("TFF_VLPRPATXLUCR")[2]),;
  
                    If cCronog == '1'
       oMdlTFF:GetValue("TFF_TXADM"))- nDiff)
                If lAplicDiff
   EndIf
                    If nPerc == 0  At740IAuto("TFF", oMdlTFF:GetValue("TFF_COD"), cProxParc, nDiff, oMdlTFJ:GetValue("TFJ_CODIGO"))
.AND. lAplicRea
                        nTotal := 0
  Else
                  Else
          At740IAuto("TFF", oMdlTFF:GetValue("TFF_COD"), cProxParc, nVal + nTotal, oMdlTFJ:GetValue("TFJ_CODIGO"))
        nTotal := (nValPrc * (nPerc / 100)) * oMdlTFF:GetValue("TFF_QTDVEN")
        EndIf
            EndIf
        Else
                    nTotal    oMdlTFF:SetValue:= Round(nTotal,TamSX3("TFF_VLPRPA",nVal + nTotal)[2])
   
                 EndIf
   If cCronog   == '1'
                    
    If lAplicDiff
               If !Empty(cProdRet)
                        oMdlTFF:SetValueAt740IAuto("TFF", oMdlTFF:GetValue("TFF_PRDRETCOD"),cProdRet)
 cProxParc, nDiff, oMdlTFJ:GetValue("TFJ_CODIGO"))
                 EndIf
       Else
                    nTotal  := (nValPrc * (nPerc / 100)) * At740IAuto("TFF", oMdlTFF:GetValue("TFF_QTDVENCOD")
, cProxParc, nVal + nTotal, oMdlTFJ:GetValue("TFJ_CODIGO"))
                        EndIf
                    nTotalElse
 := nTotal * nMult
       
                    nTotal := Round(nTotal,TamSX3(oMdlTFF:SetValue("TFF_VLPRPA")[2],nVal + nTotal)
         
           EndIf
         oMdlTFF:SetValue("TFF_VLRRET",nTotal)
                   Else
                    If nPerc > 0!Empty(cProdRet)
                        nDiff := At740PrxPa(/*cTipo*/,;oMdlTFF:SetValue("TFF_PRDRET",cProdRet)
                    EndIf
            oMdlTFF:GetValue("TFF_QTDVEN"),;
                    nTotal := (nValPrc * (nPerc / 100)) *     oMdlTFF:GetValue("TFF_PRCVENQTDVEN"),;
                            
    oMdlTFF:GetValue("TFF_DESCON"),;
                  nTotal := nTotal * nMult
        
       oMdlTFF:GetValue             nTotal := Round(nTotal,TamSX3("TFF_TXLUCRVLPRPA"),;[2])
         
                       oMdlTFF:GetValueSetValue("TFF_TXADMVLRRET",nTotal))

                    If cAplMT   oMdlTFF:SetValue("TFF_PRCVEN",;== "1"
                            ROUND((nValPrc + (nValPrc * (nPerc / 100))),;If oMdlTFG:Length() > 0
                            TamSX3U_AplicMat("TFG",oMdlTFG,oMdlTFF:GetValue("TFF_PRCVENCOD")[2]),oMdlTFJ:GetValue("TFJ_CODIGO"),cCronog,cProxParc,@cLog,nPerc,lAplicRea)
                        nDiff := (At740PrxPa(/*cTipo*/,;EndIf
                                oMdlTFF:GetValue("TFF_QTDVEN"),;
  If oMdlTFH:Length() > 0
                              U_AplicMat("TFH",oMdlTFH,oMdlTFF:GetValue("TFF_PRCVEN"),;COD"),oMdlTFJ:GetValue("TFJ_CODIGO"),cCronog,cProxParc,@cLog,nPerc,lAplicRea)
                        EndIf
        oMdlTFF:GetValue("TFF_DESCON"),;
            EndIf  

                  oMdlTFF:GetValue("TFF_TXLUCR"),;Else
                    If nPerc > 0
         oMdlTFF:GetValue("TFF_TXADM"))- nDiff)
              nDiff      EndIf:= At740PrxPa(/*cTipo*/,;
                    If nPerc == 0 .AND. lAplicRea
       oMdlTFF:GetValue("TFF_QTDVEN"),;
                 IF nQuant == 0
                            If cCronog == '1'oMdlTFF:GetValue("TFF_PRCVEN"),;
                                At740IAuto("TFF", oMdlTFF:GetValue("TFF_CODDESCON"),;
 cProxParc,  0, oMdlTFJ:GetValue("TFJ_CODIGO"))
                            ElseoMdlTFF:GetValue("TFF_TXLUCR"),;
                                oMdlTFF:SetValueGetValue("TFF_VLPRPATXADM", 0))
                            EndIfoMdlTFF:SetValue("TFF_PRCVEN",;
                        EndIf
    ROUND((nValPrc + (nValPrc * (nPerc / 100))),;
                            ElseTamSX3("TFF_PRCVEN")[2]))
                        IfnDiff cCronog :== '1'
  (At740PrxPa(/*cTipo*/,;
                           If lAplicDiff .And. ROUND(nDiff * nMult,TamSX3 oMdlTFF:GetValue("TFF_VLPRPAQTDVEN")[2]) > 0,;
                                At740IAutooMdlTFF:GetValue("TFF_PRCVEN"),;
                                        oMdlTFF:GetValue("TFF_CODDESCON"),;
                                        cProxParcoMdlTFF:GetValue("TFF_TXLUCR"),;
                                        ROUND(nDiff * nMult,TamSX3(oMdlTFF:GetValue("TFF_VLPRPATXADM")[2]),;))- nDiff)
                    EndIf
                    oMdlTFJ:GetValue("TFJ_CODIGO"))
     If nPerc == 0 .AND. lAplicRea
                       Else
 IF nQuant == 0
                            At740IAuto("TFF",;
   If cCronog == '1'
                                     At740IAuto("TFF", oMdlTFF:GetValue("TFF_COD"),;
 cProxParc, 0, oMdlTFJ:GetValue("TFJ_CODIGO"))
                            Else
             cProxParc,;
                   oMdlTFF:SetValue("TFF_VLPRPA", 0)
                    ROUND((nVal + ((nVal * (nPerc / 100)) * nMult)),TamSX3("TFF_VLPRPA")[2]),; EndIf
                                        oMdlTFJ:GetValue("TFJ_CODIGO"))EndIf
                    Else
        EndIf
                If cCronog == '1'
     Else
                       If lAplicDiff .And. ROUND(nDiff  oMdlTFF:SetValue* nMult,TamSX3("TFF_VLPRPA",;)[2]) > 0
                                ROUND((nVal + ((nVal * (nPerc / 100)) * nMult)),;
At740IAuto("TFF",;
                                        TamSX3oMdlTFF:GetValue("TFF_VLPRPACOD")[2])),;
                        EndIf
                    EndIfcProxParc,;
                EndIf
            EndIf
            If !lAllLinha
ROUND(nDiff * nMult,TamSX3("TFF_VLPRPA")[2]),;
                  Exit
             EndIf
        Next nY
  oMdlTFJ:GetValue("TFJ_CODIGO"))
       If !lAllLoc
            Exit
        EndIfElse
    Next nX
EndIf
        
FwRestRows( aSaveRows )
        
Return
       
User Function VldFiltroAt740IAuto(oMdlTFF,cFuncao,cEscala,cCompet)
Local lRetorno  := .T.
"TFF",;
                              
If !Empty(cFuncao) .And. !Empty(cEscala) .AND. !Empty(cCompet)
    If oMdlTFF:GetValue("TFF_FUNCAOCOD") == cFuncao .And. oMdlTFF:GetValue("TFF_ESCALA") == cEscala
,;
                If !(U_VldCompC(oMdlTFF:GetValue("TFF_COD"), cCompet))
            lRetorno := .F.
        EndIfcProxParc,;
    Else
        lRetorno := .F.
    EndIf
Else
    If !Empty(cFuncao)
        lRetorno := oMdlTFF:GetValue("TFF_FUNCAO") == cFuncao
    EndIf
 ROUND((nVal + ((nVal If* !Empty(cEscala) .AND. lRetorno
(nPerc / 100)) * nMult)),TamSX3("TFF_VLPRPA")[2]),;
         lRetorno := oMdlTFF:GetValue("TFF_ESCALA") == cEscala
             EndIf
    If !Empty(cCompet) .AND. lRetorno
        lRetorno := U_VldCompC(oMdlTFF oMdlTFJ:GetValue("TFFTFJ_CODCODIGO"), cCompet)
    EndIf
EndIf
           
Return lRetorno
       
User Function AplicQtd(oMdlTFF,nQuant,dDataRef,lSetValue, nPerc, lCronog, cCompet)EndIf
Local   lRet          := .T.
Local nDataFim      := Day(LastDate(dDataRef)) // ultimoElse
 dia do mes
Local nValor        := 0
Local nValorCalc    := 0
Local nVlrPrx       := oMdlTFF:GetValueSetValue("TFF_VLPRPA") //Valor da proxima parcela
Local nDataIni,;
                     := Day(dDataRef) //dia de inicio do contrato
Local nQtdAnt    ROUND((nVal + ((nVal :=* oMdlTFF:GetValue("TFF_QTDVEN")
Local oModel(nPerc / 100)) * nMult)),;
                      := oMdlTFF:GetModel()
Local oMdlTFL       := oModel:GetModelTamSX3("TFLTFF_LOCVLPRPA")
Local oMdlTFJ[2]))
                       := oModel:GetModel("TFJ_REFER")
Local cProxParc EndIf
         := TecBDt2Cmp(POSICIONE("CNA",1,xFilial("CNA")+oMdlTFF:GetValue("TFF_CONTRT")+oMdlTFF:GetValue("TFF_CONREV")+oMdlTFL:GetValue("TFL_PLAN"), "CNA_PROMED"))
 
Default cCompet := ""
 
If lSetValue
   EndIf
 //Altera a quantidade do campo TFF_QTDVEN
    lRet := oMdlTFF:SetValue("TFF_QTDVEN",nQuant)
    EndIf
   
    //Realiza o calculo da proxima parcelaEndIf
    If lRet
       If nValor!lAllLinha
  := oMdlTFF:GetValue("TFF_PRCVEN") * (nQuant - nQtdAnt) // preço de venda do    contratoExit
             EndIf
        Next nValornY
 := (nValor/nDataFim)*((nDataFim-nDataIni)+1)
  
    If !lAllLoc
   //Arredonda o valor
       Exit
 nValor := Round(nValor,TamSX3("TFL_VLPRPA")[2])
     EndIf
   nValorCalc := nValorNext nX
EndIf
        nValor := nVlrPrx + nValor

FwRestRows( aSaveRows )
         oMdlTFF:SetValue("TFF_VLPRPA",nValor)

Return
        
User If lCronog
    Function VldFiltro(oMdlTFF,cFuncao,cEscala,cCompet)
Local lRetorno  := .T.
        
If !(TecHasTGT("TFF",Empty(cFuncao) .And. !Empty(cEscala) .AND. !Empty(cCompet)
    If oMdlTFF:GetValue("TFF_CODFUNCAO"),cProxParc,oMdlTFJ == cFuncao .And. oMdlTFF:GetValue("TFJTFF_CODIGOESCALA"),@nVlrPrx)) == cEscala
        If !(U_VldCompC(oMdlTFF:GetValue("TFF_COD"), cCompet))
      nVlrPrx := At740PrxPa(/*cTipo*/,;
    lRetorno := .F.
        EndIf
    Else
      nQtdAnt,;
  lRetorno := .F.
    EndIf
Else
    If !Empty(cFuncao)
        lRetorno :=  oMdlTFF:GetValue("TFF_PRCVENFUNCAO"),;
 == cFuncao
    EndIf
    If !Empty(cEscala) .AND. lRetorno
        lRetorno  := oMdlTFF:GetValue("TFF_DESCONESCALA"),;
 == cEscala
    EndIf
    If !Empty(cCompet) .AND. lRetorno
        lRetorno   := U_VldCompC(oMdlTFF:GetValue("TFF_TXLUCRCOD"),; cCompet)
    EndIf
EndIf
        
Return lRetorno
        
User Function AplicQtd(oMdlTFF,nQuant,dDataRef,lSetValue, nPerc,  oMdlTFF:GetValue("TFF_TXADM"))
 lCronog, cCompet)
Local lRet          := EndIf.T.
Local nDataFim      := Day(LastDate(dDataRef)) // ultimo dia do mes
Local nValor        := nVlrPrx0
Local + nValorCalc
    := 0
Local nVlrPrx      If !Empty(cCompet) .And. cProxParc > cCompet
  := oMdlTFF:GetValue("TFF_VLPRPA") //Valor da proxima parcela
Local nDataIni      := Day(dDataRef) //dia de inicio do contrato
Local nQtdAnt    At740IAuto("TFF", oMdlTFF:GetValue("TFF_COD"), cCompet, nValorCalc,:= oMdlTFJoMdlTFF:GetValue("TFJTFF_CODIGOQTDVEN"))
Local oModel           Else
 := oMdlTFF:GetModel()
Local oMdlTFL       := oModel:GetModel("TFL_LOC")
Local oMdlTFJ      At740IAuto("TFF", oMdlTFF:GetValue("TFF_COD"), cProxParc, nValor, oMdlTFJ:GetValue:= oModel:GetModel("TFJ_CODIGOREFER"))
Local cProxParc           EndIf   
        EndIf
    EndIf
Else
    nValor  := TecBDt2Cmp(POSICIONE("CNA",1,xFilial("CNA")+oMdlTFF:GetValue("TFF_CONTRT")+oMdlTFF:GetValue("TFF_CONREV")+oMdlTFL:GetValue("TFL_PLAN"), "CNA_PROMED"))
  
Default cCompet := ""
  
If lSetValue
    //Altera a quantidade do campo TFF_QTDVEN
    lRet := oMdlTFF:GetValueSetValue("TFF_PRCVENQTDVEN",nQuant)
 * (nQuant - nQtdAnt)  // Valor a
 ser reajustado
  //Realiza o calculo da proxima parcela
    nValor := (nValor/nDataFim)*((nDataFim-nDataIni)+1)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])
EndIf
        nValorCalc 
Return:= nValor
      
User Function CompetCo()
Local aCompets  nValor := nVlrPrx + nValor
        oMdlTFF:= CtrCompets()
Local nX
SetValue("TFF_VLPRPA",nValor)
        If lCronog
For nX := 1 to Len(aCompets)
        aCompets[nX] := CVALTOCHAR(nX)+'='+aCompets[nX]
Next nX
If !(TecHasTGT("TFF",oMdlTFF:GetValue("TFF_COD"),cProxParc,oMdlTFJ:GetValue("TFJ_CODIGO"),@nVlrPrx))
         
Return aCompets
      
UsernVlrPrx Function:= VldCompC(cCodTFF, cCompet)
Local cQueryAt740PrxPa(/*cTipo*/,;
      := ""
Local cAliasCND := GetNextAlias()
Local lRet      := .T.
      nQtdAnt,;
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

User Function AjustHE(nPerc, oMdlTFF)
Local oModel := oMdlTFF:GetModel()
Local oMdlHE := oModel:GetModel("TFU_HE")
Local nX
Local nValor := 0

If nPerc != 0
    For nX := 1 To oMdlHE:Length()
        oMdlHE:GoLine(nX)
        nValor := ROUND( oMdlHE:GetValue("TFU_VALOR") + (oMdlHE:GetValue("TFU_VALOR") * nPerc / 100), TamSX3("TFU_VALOR")[2] )
        oMdlHE:SetValue("TFU_VALOR", nValor  )
    Next nX
EndIf
Return
          oMdlTFF:GetValue("TFF_PRCVEN"),;
                        oMdlTFF:GetValue("TFF_DESCON"),;
                        oMdlTFF:GetValue("TFF_TXLUCR"),;
                        oMdlTFF:GetValue("TFF_TXADM"))
            EndIf
            nValor := nVlrPrx + nValorCalc
            If !Empty(cCompet) .And. cProxParc > cCompet
                At740IAuto("TFF", oMdlTFF:GetValue("TFF_COD"), cCompet, nValorCalc, oMdlTFJ:GetValue("TFJ_CODIGO"))
            Else
                At740IAuto("TFF", oMdlTFF:GetValue("TFF_COD"), cProxParc, nValor, oMdlTFJ:GetValue("TFJ_CODIGO"))
            EndIf  
        EndIf
    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      := .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
 
User Function AjustHE(nPerc, oMdlTFF)
Local oModel := oMdlTFF:GetModel()
Local oMdlHE := oModel:GetModel("TFU_HE")
Local nX
Local nValor := 0
 
If nPerc != 0
    For nX := 1 To oMdlHE:Length()
        oMdlHE:GoLine(nX)
        nValor := ROUND( oMdlHE:GetValue("TFU_VALOR") + (oMdlHE:GetValue("TFU_VALOR") * nPerc / 100), TamSX3("TFU_VALOR")[2] )
        oMdlHE:SetValue("TFU_VALOR", nValor  )
    Next nX
EndIf
Return

User Function CheckMat(cTabela,oMdlMat,cTFFCOD,cTFJCOD,cCronog,cProxParc,cLog,nPerc,lAplicRea,nGrandTot)
Local nX        := 0
Local nValPrxMI := 0
Local nValPrxMC := 0
Local nTotal    := 0
Local cDescProd := ""

If cTabela == "TFG"
    For nX := 1 To oMdlMat:Length()
        cDescProd := Alltrim(Posicione("SB1",1,xFilial("SB1") + oMdlMat:GetValue("TFG_PRODUT"), "B1_DESC"))
        cLog += "   - Material de Implantação: " + oMdlMat:GetValue("TFG_COD") + " - " + cDescProd + Chr(13) + Chr(10)
        If cCronog == '1'
            If !(TecHasTGT("TFG",oMdlMat:GetValue("TFG_COD"),cProxParc,cTFJCOD,@nValPrxMI))
                nValPrxMI := At740PrxPa(/*cTipo*/,;
                    oMdlMat:GetValue("TFG_QTDVEN"),;
                    oMdlMat:GetValue("TFG_PRCVEN"),;
                    oMdlMat:GetValue("TFG_DESCON"),;
                    oMdlMat:GetValue("TFG_TXLUCR"),;
                    oMdlMat:GetValue("TFG_TXADM"))
            EndIf
        Else
            nValPrxMI := oMdlMat:GetValue("TFG_VLPRPA")
        EndIf
        cLog += "       - Valor Antigo MI (prox. parcela): R$ " +  Alltrim(TRANSFORM( nValPrxMI , "@e 999,999,999.99" )) + Chr(13) + Chr(10)
        If nPerc == 0 .AND. lAplicRea
            nTotal := 0
        Else
            nTotal := (oMdlMat:GetValue("TFG_PRCVEN") * (nPerc / 100)) * oMdlMat:GetValue("TFG_QTDVEN")
        EndIf
        nTotal := Round(nTotal,TamSX3("TFG_VLPRPA")[2])
        nGrandTot += nTotal
        cLog += "       - Valor Novo MI (prox. parcela): R$ " + Alltrim(TRANSFORM((IIF(nPerc == 0 .AND. lAplicRea, 0, nValPrxMI) + nTotal), "@e 999,999,999.99" )) +;
            " ( + R$ " + Alltrim(TRANSFORM(nTotal, "@e 999,999,999.99" )) + " )" + Chr(13) + Chr(10)
        cLog += Chr(13) + Chr(10)
    Next nX
ElseIf cTabela == "TFH"
    For nX := 1 To oMdlMat:Length()
        cDescProd := Alltrim(Posicione("SB1",1,xFilial("SB1") + oMdlMat:GetValue("TFH_PRODUT"), "B1_DESC"))
        cLog += "   - Material de Consumo: " + oMdlMat:GetValue("TFH_COD") + " - " + cDescProd + Chr(13) + Chr(10)
        If cCronog == '1'
            If !(TecHasTGT("TFH",oMdlMat:GetValue("TFH_COD"),cProxParc,cTFJCOD,@nValPrxMC))
                nValPrxMC := At740PrxPa(/*cTipo*/,;
                    oMdlMat:GetValue("TFH_QTDVEN"),;
                    oMdlMat:GetValue("TFH_PRCVEN"),;
                    oMdlMat:GetValue("TFH_DESCON"),;
                    oMdlMat:GetValue("TFH_TXLUCR"),;
                    oMdlMat:GetValue("TFH_TXADM"))
            EndIf
        Else
            nValPrxMC := oMdlMat:GetValue("TFH_VLPRPA")
        EndIf
        cLog += "       - Valor Antigo MC (prox. parcela): R$ " +  Alltrim(TRANSFORM( nValPrxMC , "@e 999,999,999.99" )) + Chr(13) + Chr(10)
        If nPerc == 0 .AND. lAplicRea
            nTotal := 0
        Else
            nTotal := (oMdlMat:GetValue("TFH_PRCVEN") * (nPerc / 100)) * oMdlMat:GetValue("TFH_QTDVEN")
        EndIf
        nTotal := Round(nTotal,TamSX3("TFH_VLPRPA")[2])
        nGrandTot += nTotal
        cLog += "       - Valor Novo MC (prox. parcela): R$ " + Alltrim(TRANSFORM((IIF(nPerc == 0 .AND. lAplicRea, 0, nValPrxMC) + nTotal), "@e 999,999,999.99" )) +;
            " ( + R$ " + Alltrim(TRANSFORM(nTotal, "@e 999,999,999.99" )) + " )" + Chr(13) + Chr(10)
        cLog += Chr(13) + Chr(10)
    Next nX
EndIf

Return

User Function AplicMat(cTabela,oMdlMat,cTFFCOD,cTFJCOD,cCronog,cProxParc,cLog,nPerc,lAplicRea)
Local nX    := 0
Local nValPrxMI := 0
Local nValPrxMC := 0
Local nTotal    := 0
Local nValPrc   := 0

If cTabela == "TFG"
    For nX := 1 To oMdlMat:Length()
        If cCronog == '1'
            If !(TecHasTGT("TFG",oMdlMat:GetValue("TFG_COD"),cProxParc,cTFJCOD,@nValPrxMI))
                nValPrxMI := At740PrxPa(/*cTipo*/,;
                    oMdlMat:GetValue("TFG_QTDVEN"),;
                    oMdlMat:GetValue("TFG_PRCVEN"),;
                    oMdlMat:GetValue("TFG_DESCON"),;
                    oMdlMat:GetValue("TFG_TXLUCR"),;
                    oMdlMat:GetValue("TFG_TXADM"))
            EndIf
        Else
            nValPrxMI := oMdlMat:GetValue("TFG_VLPRPA")
        EndIf
        nValPrc := oMdlMat:GetValue("TFG_PRCVEN")
        nTotal := (nValPrc + (nValPrc * (nPerc / 100)))
        If nPerc > 0
            oMdlMat:SetValue("TFG_PRCVEN", nTotal)
        EndIf
        If nPerc == 0 .AND. lAplicRea
            nTotal := 0
        Else
            nTotal := (nValPrc * (nPerc / 100)) * oMdlMat:GetValue("TFG_QTDVEN")
        EndIf

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

        If cCronog == '1'
            At740IAuto("TFG", oMdlMat:GetValue("TFG_COD"), cProxParc, nValPrxMI + nTotal, cTFJCOD)
        Else
            oMdlMat:SetValue("TFG_VLPRPA",nValPrxMI + nTotal)
        EndIf
    Next nX    
ElseIf cTabela == "TFH"
    For nX := 1 To oMdlMat:Length()
        If cCronog == '1'
            If !(TecHasTGT("TFH",oMdlMat:GetValue("TFH_COD"),cProxParc,cTFJCOD,@nValPrxMC))
                nValPrxMC := At740PrxPa(/*cTipo*/,;
                    oMdlMat:GetValue("TFH_QTDVEN"),;
                    oMdlMat:GetValue("TFH_PRCVEN"),;
                    oMdlMat:GetValue("TFH_DESCON"),;
                    oMdlMat:GetValue("TFH_TXLUCR"),;
                    oMdlMat:GetValue("TFH_TXADM"))
            EndIf
        Else
            nValPrxMC := oMdlMat:GetValue("TFH_VLPRPA")
        EndIf
        nValPrc := oMdlMat:GetValue("TFH_PRCVEN")
        nTotal := (nValPrc + (nValPrc * (nPerc / 100)))
        If nPerc > 0
            oMdlMat:SetValue("TFH_PRCVEN", nTotal)
        EndIf
        If nPerc == 0 .AND. lAplicRea
            nTotal := 0
        Else
            nTotal := (nValPrc * (nPerc / 100)) * oMdlMat:GetValue("TFH_QTDVEN")
        EndIf

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

        If cCronog == '1'
            At740IAuto("TFH", oMdlMat:GetValue("TFH_COD"), cProxParc, nValPrxMC + nTotal, cTFJCOD)
        Else
            oMdlMat:SetValue("TFH_VLPRPA",nValPrxMC + nTotal)
        EndIf
    Next nX    
EndIf

Return


04. DEMAIS INFORMAÇÕES

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

...