Á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 cTodosLoc := "2"
Local cTodasLin := "2"
Local cCronog   := '1'
Local cCompet   := Space(7)
Local aOpcRea   := {"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 430450,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, 107, 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')
    
        oGrp    := TGroup():New(112, 005, 167, 140, "Alteração de Quantidade", oDlgSelect,,, .T.)
 
        @ 122, 9 SAY "Em todos os Locais?" SIZE 80, 30 PIXEL
             
        oCombo := TComboBox():New(121,77,{|u|if(PCount()>0,cTodosLoc:=u,cTodosLoc)},;
            aOpcs,40,10,oDlgSelect,,,,,,.T.,,,,,,,,,'cTodosLoc')
             
        @ 142, 9 SAY "Nova Quantidade" SIZE 50, 30 PIXEL
      
        oQuant := TGet():New( 152, 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.)
      
        @ 142, 77 SAY "Data de Referencia" SIZE 50, 30 PIXEL
      
        oDataAte := TGet():New( 152, 077, { | u | If( PCount() == 0, dDataRef, dDataRef := u ) },oDlgSelect, ;
            060, 010, "@D",, 0, 16777215,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F. ,,"dDataRef",,,,.T.)
     
        @ 172, 9 SAY "Todas as Linhas?" SIZE 80, 30 PIXEL
     
        oCombo1 := TComboBox():New(172, 077,{|u|if(PCount()>0,cTodasLin:=u,cTodasLin)},;
            aQtd,60,10,oDlgSelect,,,,,,.T.,,,,,,,,,'cTodasLin')

        @ 187, 9 SAY "Aplic. Cronograma?" SIZE 80, 30 PIXEL

        oRefreshoCombo1 := TButtonTComboBox():New( 196187, 005, "Aplicar",oDlgSelect077,{|| U_AplicVl(oModel, cFuncao , nPerc, nMult, LEFT(cTodosLoc,1), cEscala, nQuant, dDataRef, LEFT(cTodasLin,1), cCompet, LEFT(cAplReajs,1)) , oDlgSelect:End()}, 60,10,,,.F.,.T.,.F.,,.F.,,,.F. )
u|if(PCount()>0,cCronog:=u,cCronog)},;
            aCronog,60,10,oDlgSelect,,,,,,.T.,,,,,,,,,'cCronog')
             
        oExitoRefresh := TButton():New( 196  210, 080005, "SairAplicar",oDlgSelect,{|| oDlgSelect:End() U_AplicVl(oModel, cFuncao , nPerc, nMult, LEFT(cTodosLoc,1), cEscala, nQuant, dDataRef, LEFT(cTodasLin,1), cCompet, LEFT(cAplReajs,1), LEFT(cCronog,1)) , oDlgSelect:End()}, 60,10,,,.F.,.T.,.F.,,.F.,,,.F. )
      
      
  oExit := TButton():New( 210  , ACTIVATE MSDIALOG oDlgSelect CENTER
    Else
        MsgAlert("Opção disponível 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)
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 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

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()
    cProxParc := TecBDt2Cmp(POSICIONE("CNA",1,xFilial("CNA")+oMdlTFL:GetValue("TFL_CONTRT")+oMdlTFL:GetValue("TFL_CONREV")+oMdlTFL:GetValue("TFL_PLAN"), "CNA_PROMED"))

    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 nTotalcCronog :== oMdlTFF:GetValue("TFF_VLPRPA")'1'
    //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 !(TecHasTGT("TFF",oMdlTFF:GetValue("TFF_COD"),cProxParc,@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()
            oMdlTFF:GoLine(nY)
            If U_VldFiltro(oMdlTFF,cFuncao,cEscala,cCompet) .AND. oMdlTFF:GetValue("TFF_COBCTR") != '2'
                cProxParc := TecBDt2Cmp(POSICIONE("CNA",1,xFilial("CNA")+oMdlTFL:GetValue("TFL_CONTRT")+oMdlTFL:GetValue("TFL_CONREV")+oMdlTFL:GetValue("TFL_PLAN"), "CNA_PROMED"))
                If cCronog == '1'
                    If !(TecHasTGT("TFF",oMdlTFF:GetValue("TFF_COD"),cProxParc,@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 (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
        If lAllLoc
            oMdlTFL:GoLine(nX)
        EndIf
        For nY := 1 To oMdlTFF:Length()cLog += " - Valor Novo (prox. parcela): R$ " + Alltrim(TRANSFORM((IIF(nPerc == 0 .AND. lAplicRea, 0, nValPrx) + nTotal), "@e 999,999,999.99" )) +;
            oMdlTFF:GoLine(nY)
        " ( + R$ If U_VldFiltro(oMdlTFF,cFuncao,cEscala,cCompet) .AND. oMdlTFF:GetValue("TFF_COBCTR") != '2'
 " + Alltrim(TRANSFORM(nTotal, "@e 999,999,999.99" )) + " )" + Chr(13) + Chr(10)
               cLog += "Local: " + Alltrim(POSICIONE("ABS",1,xFilial("ABS") + oMdlTFL:GetValue("TFL_LOCAL"), "ABS_DESCRI")) + cLog += Chr(13) + Chr(10)
                 cLog += " - RH: " + oMdlTFF:GetValue("TFF_COD") +EndIf
            EndIf
        Next nY
        cLog += REPLICATE("-",10)
        cLog += Chr(13) + Chr(10)
        If !lAllLoc
             cLog += " - Função: " + Alltrim(POSICIONE("SRJ",1,xFilial("SRJ") + oMdlTFF:GetValue("TFF_FUNCAO"), "RJ_DESC")) +Exit
        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" ))
    cLog += 
AtShowLog(cLog,"Prévia -de Produto: " + Alltrim(Posicione("SB1",1,xFilial("SB1") + oMdlTFF:GetValue("TFF_PRODUT"), "B1_DESC")) + Chr(13) + Chr(10)
            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)
    cLog += " - Qtd. Venda Anterior: " + Alltrim(AllToChar(oMdlTFF:GetValue("TFF_QTDVEN"))) + Chr(13) + Chr(10)
        U_AplicQtd(oMdlTFF,nQuant,dDataRef,.T.,nPerc,cCronog == '1')
    EndIf
     
    For nX := 1 To oMdlTFL:Length()
        If lAllLoc
            oMdlTFL:GoLine(nX)
    cLog += " - Qtd.EndIf
 Venda: " + Alltrim(AllToChar(nQuant)) + Chr(13) + Chr(10)
For nY := 1 To oMdlTFF:Length()
            oMdlTFF:GoLine(nY)
   cLog += " - Vlr. Venda Anterior: R$ " +If Alltrim(TRANSFORM(U_VldFiltro(oMdlTFF,cFuncao,cEscala,cCompet) .AND. oMdlTFF:GetValue("TFF_SUBTOTCOBCTR") , "@E 99,999,999,999.99" )) + Chr(13) + Chr(10)!= '2'
     
                //aplicar a quantidade para cLogtodas +=as "linhas -encontradas Vlr.conforme Vendaos Novo:filtros
 R$ " + Alltrim(TRANSFORM( ROUND(nQuant * oMdlTFF:GetValue("TFF_SUBTOT"), TamSX3("TFF_SUBTOT")[2]) , "@E 99,999,999,999.99" )) + Chr(13) + Chr(10)
                  If lAllLinha .And. nQuant > 0
              cLog += " - Valor Antigo (prox. parcela): R$ " +  Alltrim(TRANSFORM( oMdlTFF:GetValue("TFF_VLPRPA") , "@e 999,999,999.99" )) + Chr(13) + Chr(10)
    U_AplicQtd(oMdlTFF,nQuant,dDataRef,.T.,nPerc,cCronog == '1')
                EndIf
     
                nValParccProxParc := U_AplicQtd(oMdlTFF,nQuant,dDataRef,.F.)
 TecBDt2Cmp(POSICIONE("CNA",1,xFilial("CNA")+oMdlTFL:GetValue("TFL_CONTRT")+oMdlTFL:GetValue("TFL_CONREV")+oMdlTFL:GetValue("TFL_PLAN"), "CNA_PROMED"))
                   If nPerccCronog == 0 .AND. lAplicRea'1'
                        nTotal := 0
If !(TecHasTGT("TFF",oMdlTFF:GetValue("TFF_COD"),cProxParc,@nVal))
                       Else
 nVal := At740PrxPa(/*cTipo*/,;
                     nTotal := ROUND( (oMdlTFF:GetValue("TFF_VLPRPA") * (nPerc / 100)) * nMult , TamSX3oMdlTFF:GetValue("TFF_VLPRPAQTDVEN")[2] )
 ,;
                   EndIf
             oMdlTFF:GetValue("TFF_PRCVEN"),;
       nGrandTot += nTotal
                    If nPerc == 0 .AND. lAplicRea oMdlTFF:GetValue("TFF_DESCON"),;
                        nValParc := 0
        oMdlTFF:GetValue("TFF_TXLUCR"),;
            Else
                        nValParc := oMdlTFF:GetValue("TFF_VLPRPATXADM") + nValParc)
                    EndIf
                Else
    cLog += " - Valor Novo (prox. parcela): R$ " + Alltrim(TRANSFORM((IIF(nPerc == 0 .AND. lAplicRea, 0, nValParc + nTotal)), "@e 999,999,999.99" )) +;
                   nVal := oMdlTFF:GetValue("TFF_VLPRPA")
                EndIf

                nValPrc ":= ( 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)oMdlTFF:GetValue("TFF_PRCVEN")
     
                If lServRet .And. nMult > 0
    
                    cLognTotal +:= Chr(13)nValPrc + (nValPrc Chr(10* (nPerc / 100)))
                Else
    If nPerc > 0
             cLog += " - Valor Antigo (prox. parcela): R$ " +  Alltrim(TRANSFORM( oMdlTFF:GetValueSetValue("TFF_VLPRPAPRCVEN") , "@e 999,999,999.99" )) + Chr(13) + Chr(10)
 , nTotal)
                   //nTotal := ROUND( (oMdlTFF:GetValue("TFF_VLPRPA") * (nPerc / 100)) * nMult , TamSX3("TFF_VLPRPA")[2] )  EndIf
                    If nPerc == 0 .AND. lAplicRea
                        nTotal := 0
                    Else
                        nTotal := (oMdlTFF:GetValue("TFF_PRCVEN")nValPrc * (nPerc / 100)) * oMdlTFF:GetValue("TFF_QTDVEN") 
                    EndIf
     
                    nTotal := Round(nTotal,TamSX3("TFF_VLPRPA")[2])
                    nGrandTot += nTotal
                    cLog += " - Valor Novo (prox. parcela): R$ " + Alltrim(TRANSFORM((IIF(nPerc == 0 .AND. lAplicRea, 0, oMdlTFF:GetValue("TFF_VLPRPA")) + nTotal), "@e 999,999,999.99" )) +;
If cCronog == '1'
                        At740IAuto("TFF", oMdlTFF:GetValue( + R$ ""TFF_COD"), cProxParc, nVal + Alltrim(TRANSFORM(nTotal, "@e 999,999,999.99" )) + " )" + Chr(13) + Chr(10)
oMdlTFJ:GetValue("TFJ_CODIGO"))
                    Else
              cLog  += Chr(13) + Chr(10)
     oMdlTFF:SetValue("TFF_VLPRPA",nVal +  nTotal)
        EndIf
            EndIf
        Next nY
        cLog += REPLICATE("-",10)
        cLog += Chr(13) + Chr(10)
        If !lAllLoc
           If Exit!Empty(cProdRet)
        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" ))oMdlTFF:SetValue("TFF_PRDRET",cProdRet)
     
AtShowLog(cLog,"Prévia de Valores",/*lVScroll*/,/*lHScroll*/,/*lWrdWrap*/,.F.)
        
If MsgYesNo("Aplicar valores calculados?")
    EndIf
     //Verifica
 se vai aplicar a quantidade somente para a linha posicionada
    If !lAllLinha .And. nQuant > 0
 nTotal := (nValPrc * (nPerc / 100)) * oMdlTFLoMdlTFF:GoLine(nPosTFLGetValue("TFF_QTDVEN")
         oMdlTFF:GoLine(nPosTFF)
        U_AplicQtd(oMdlTFF,nQuant,dDataRef,.T.,nPerc)
    EndIf
    
    For nX := 1 To oMdlTFL:Length()
        If lAllLoc
  nTotal := nTotal * nMult
      oMdlTFL:GoLine(nX)
        EndIf
        For nY := 1 TonTotal oMdlTFF:Length():= Round(nTotal,TamSX3("TFF_VLPRPA")[2])
     
       oMdlTFF:GoLine(nY)
            If U_VldFiltro(oMdlTFF,cFuncao,cEscala,cCompet) .AND. oMdlTFF:GetValueSetValue("TFF_COBCTRVLRRET") != '2',nTotal)
    
            Else
    //aplicar a quantidade para todas as linhas encontradas conforme os filtros
      If nPerc > 0
       If lAllLinha .And. nQuant > 0
              oMdlTFF:SetValue("TFF_PRCVEN",;
      U_AplicQtd(oMdlTFF,nQuant,dDataRef,.T.,nPerc)
                EndIf
    
  ROUND((nValPrc + (nValPrc * (nPerc / 100))),;
        nVal := oMdlTFF:GetValue("TFF_VLPRPA")
                nValPrc := oMdlTFF:GetValueTamSX3("TFF_PRCVEN")[2]))
         
           EndIf
     If lServRet .And. nMult > 0
   
       If nPerc == 0 .AND. lAplicRea
        nTotal := (nValPrc + (nValPrc * (nPerc / 100)))
        IF nQuant == 0
         If nPerc > 0
                If cCronog == '1'
     oMdlTFF:SetValue("TFF_PRCVEN", nTotal)
                    EndIf
      At740IAuto("TFF", oMdlTFF:GetValue("TFF_COD"), cProxParc, 0, oMdlTFJ:GetValue("TFJ_CODIGO"))
          If nPerc == 0 .AND. lAplicRea
             Else
           nTotal := 0
                    ElseoMdlTFF:SetValue("TFF_VLPRPA", 0)
                        nTotal := (nValPrc * (nPercEndIf
 / 100)) * oMdlTFF:GetValue("TFF_QTDVEN")
                    EndIf
        
            Else
         nTotal := Round(nTotal,TamSX3("TFF_VLPRPA")[2])
             If cCronog == '1'
        
                    oMdlTFF:SetValueAt740IAuto("TFF_VLPRPA",nVal + nTotal)
;
                              
      oMdlTFF:GetValue("TFF_COD"),;
              If !Empty(cProdRet)
                        oMdlTFF:SetValue("TFF_PRDRET",cProdRet)cProxParc,;
                    EndIf
    
            ROUND((nVal        nTotal := (nValPrc+ ((nVal * (nPerc / 100)) * oMdlTFF:GetValuenMult)),TamSX3("TFF_QTDVENVLPRPA")[2]),;
                        
                    nTotal := nTotal * nMult
    oMdlTFJ:GetValue("TFJ_CODIGO"))
                    nTotal := Round(nTotal,TamSX3("TFF_VLPRPA")[2])
     Else
      
                      oMdlTFF:SetValue("TFF_VLRRETVLPRPA",nTotal);
                Else
                ROUND((nVal + ((nVal * (nPerc If/ nPerc100)) > 0
* nMult)),;
                              oMdlTFF:SetValue  TamSX3("TFF_PRCVEN",;VLPRPA")[2]))
                        EndIf
    ROUND((nValPrc + (nValPrc * (nPerc / 100))),;
                  EndIf
                EndIf
          TamSX3("TFF_PRCVEN")[2]))
  EndIf
        Next nY
        If EndIf!lAllLoc
            Exit
        IfEndIf
 nPerc == 0 .AND. lAplicReaNext nX
EndIf
      
FwRestRows( aSaveRows )
      
Return
     
User Function VldFiltro(oMdlTFF,cFuncao,cEscala,cCompet)
Local lRetorno  IF nQuant == 0
       := .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:SetValueGetValue("TFF_VLPRPACOD"), 0cCompet))
            lRetorno := .F.
          EndIf
    Else
        lRetorno := .F.
      EndIf
Else
    If !Empty(cFuncao)
                  lRetorno := oMdlTFF:SetValueGetValue("TFF_VLPRPAFUNCAO",;
) == cFuncao
    EndIf
                      ROUND((nVal + ((nVal * (nPerc / 100)) * nMult)),;
                  If !Empty(cEscala) .AND. lRetorno
        lRetorno := oMdlTFF:GetValue("TFF_ESCALA") == cEscala
    EndIf
    If !Empty(cCompet) .AND. lRetorno
        lRetorno  TamSX3:= U_VldCompC(oMdlTFF:GetValue("TFF_VLPRPACOD")[2]), cCompet)
    EndIf
EndIf
     
Return lRetorno
     
User Function AplicQtd(oMdlTFF,nQuant,dDataRef,lSetValue, nPerc,  EndIflCronog)
Local lRet          :=     EndIf
.T.
Local nDataFim      :=       EndIf
Day(LastDate(dDataRef)) // ultimo dia do mes
Local nValor        Next:= nY0
Local nValorCalc    := 0
Local nVlrPrx If !lAllLoc
     := oMdlTFF:GetValue("TFF_VLPRPA") //Valor da proxima parcela
Local nDataIni Exit
     := Day(dDataRef) //dia EndIf
de inicio do contrato
Local NextnQtdAnt nX
EndIf
     
FwRestRows( aSaveRows := oMdlTFF:GetValue("TFF_QTDVEN")
Local oModel    
Return
    
User Function VldFiltro(oMdlTFF,cFuncao,cEscala,cCompet)
Local lRetorno:= oMdlTFF:GetModel()
Local oMdlTFL       := .T.
oModel:GetModel("TFL_LOC")
Local oMdlTFJ   
If !Empty(cFuncao) .And. !Empty(cEscala) .AND. !Empty(cCompet)
 := oModel:GetModel("TFJ_REFER")
Local cProxParc    If  := TecBDt2Cmp(POSICIONE("CNA",1,xFilial("CNA")+oMdlTFF:GetValue("TFF_FUNCAOCONTRT") == cFuncao .And. +oMdlTFF:GetValue("TFF_ESCALA") == cEscala
        If !(U_VldCompC(oMdlTFFCONREV")+oMdlTFL:GetValue("TFFTFL_CODPLAN"), cCompet"CNA_PROMED"))

If lSetValue
    //Altera a quantidade do campo TFF_QTDVEN
    lRetornolRet := .F.
  oMdlTFF:SetValue("TFF_QTDVEN",nQuant)
      EndIf
    Else
//Realiza o calculo da     lRetorno := .F.proxima parcela
    EndIf
Else
    If !Empty(cFuncao)lRet
        lRetornonValor  := oMdlTFF:GetValue("TFF_FUNCAO") == cFuncao
    EndIfPRCVEN") * (nQuant - nQtdAnt) // preço de venda do contrato
    If !Empty(cEscala) .AND. lRetorno      
        lRetornonValor := oMdlTFF:GetValue("TFF_ESCALA") == cEscala(nValor/nDataFim)*((nDataFim-nDataIni)+1)

    EndIf
    If !Empty(cCompet) .AND. lRetorno//Arredonda o valor
        lRetornonValor := U_VldCompC(oMdlTFF:GetValueRound(nValor,TamSX3("TFFTFL_CODVLPRPA"), cCompet[2])
    EndIf
EndIf
    
Return lRetorno
    
User Function AplicQtd(oMdlTFF,nQuant,dDataRef,lSetValue, nPerc)
Local lRetnValorCalc := nValor
         nValor := .T.
Local nDataFim nVlrPrx + nValor
        oMdlTFF:= Day(LastDate(dDataRef)) // ultimo dia do mes
Local nValor   SetValue("TFF_VLPRPA",nValor)
        If lCronog
     := 0
Local nVlrPrx       := If !(TecHasTGT("TFF",oMdlTFF:GetValue("TFF_VLPRPA") //Valor da proxima parcela
Local nDataIniCOD"),cProxParc,@nVlrPrx))
       := Day(dDataRef) //dia de inicio do contrato
Local nQtdAnt      nVlrPrx := oMdlTFF:GetValue("TFF_QTDVEN")At740PrxPa(/*cTipo*/,;
    
If lSetValue
    //Altera a quantidade do campo TFF_QTDVEN
    lRet := oMdlTFF:SetValue("TFF_QTDVEN",nQuant)
    nQtdAnt,;
    //Realiza o calculo da proxima parcela
    If lRet
        nValor  := oMdlTFF:GetValue("TFF_PRCVEN") * (nQuant - nQtdAnt) // preço de venda do contrato
,;
                        oMdlTFF:GetValue("TFF_DESCON"),;
              nValor := (nValor/nDataFim)*((nDataFim-nDataIni)+1)
        oMdlTFF:GetValue("TFF_TXLUCR"),;
        //Arredonda o valor
               nValor oMdlTFF:= Round(nValor,TamSX3("TFL_VLPRPA")[2])
GetValue("TFF_TXADM"))
            EndIf
            nValor := nVlrPrx + nValornValorCalc
            At740IAuto("TFF", oMdlTFF:SetValueGetValue("TFF_VLPRPACOD"), cProxParc, nValor, oMdlTFJ:GetValue("TFJ_CODIGO"))
        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


04. DEMAIS INFORMAÇÕES

...