Histórico da Página
...
Bloco de código | ||||
---|---|---|---|---|
| ||||
#INCLUDE '"PROTHEUS.CH' " #INCLUDE "FWMVCDEF.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 nValRet := 0 Local nQuant := 0 Local dDataRef := dDataBase Local dDataDe := CTOD(" / / ") Local dDataAte := CTOD(" / / ") Local cAplReajs := "2" Local cAplHE := "2" Local cAplMT := "2" Local cTodosLoc := "2" Local cTodasLin := "2" Local cCronog := '1' Local cProdRet := '2' 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 aRetroat := {"1 - Sim", "2 - Não"} Local oGrp := Nil Local oGrp1 := NIL Local oGrp2 := Nil Local oGrp3 := Nil 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 525560,300400 PIXEL TITLE "Reajuste Retroativo" oGrp1 := TGroup():New(000, 005, 5343, 140200, "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' @ 4010, 9147 SAY "Apurado em:" SIZE 80, 30 PIXEL oCompet := TGet():New( 39020, 077147, { | 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(055045, 005, 143150, 140200, "Reajuste", oDlgSelect,,, .T.) @ 6555, 9 SAY "PercentualNovo Valor (%R$) " SIZE 50, 30 PIXEL oDataDe := TGet():New( 7565, 009, { | u | If( PCount() == 0, nPercnValRet, nPercnValRet := u ) },oDlgSelect, ; 060090, 010, "@E 999999,999,999,999.99",{|| U_VldCpoRe(nValRet,nPerc,"Percentual (%)")}, 0, 16777215,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F. ,,"nPercnValRet",,,,.T.) @ 6585, 779 SAY "MultiplicadorPercentual (%)" SIZE 50, 30 PIXEL oDataAteoDataDe := TGet():New( 7595, 077009, { | u | If( PCount() == 0, nMultnPerc, nMultnPerc := u ) },oDlgSelect, ; 060, 010, "@E 999999.99",{||U_VldCpoRe(nPerc,nValRet,"Novo Valor (R$) ")}, 0, 16777215,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F. ,,"nMultnPerc",,,,.T.) @ 9585, 977 SAY "Aplica Reajuste?Multiplicador" SIZE 8050, 30 PIXEL oCombo1oDataAte := TComboBoxTGet():New(94 95,77 077, { | u |if If( PCount()>0,cAplReajs == 0, nMult, nMult := u,cAplReajs ) },oDlgSelect, ; aOpcRea060,40,10,oDlgSelect,,,, 010, "@E 99.99",, 0, 16777215,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F. ,,"nMult",,,,'cAplReajs'.T.) @ 110115, 9 SAY "Reajusta H.E.Data de ?" SIZE 8050, 30 PIXEL oCombo2oDataRet := TComboBoxTGet():New(109 125,77 009, { | u |if If( PCount()>0,cAplHE == 0, dDataDe, dDataDe := u,cAplHE ) },oDlgSelect, ; aOpcHE060,40,10,oDlgSelect,,,, 010, "@D",, 0, 16777215,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F. ,,"dDataDe",,,,'cAplHE'.T.) @ 125115, 977 SAY "ReajustaData Ate Materiais?" SIZE 8050, 30 PIXEL oCombo3oDataRet1 := TComboBoxTGet():New(124 125,77 077, { | u |if If( PCount()>0,cAplMT == 0, dDataAte, dDataAte := u,cAplMT ) },oDlgSelect, ; aOpcMT060,40,10,oDlgSelect,,,, 010, "@D",, 0, 16777215,,.F.,,.T.,,.F.,,.F.,.F.,,,,'cAplMT') oGrp := TGroup():New(148, 005, 190, 140, "Alteração de Quantidade", oDlgSelect,,, .T.) .F.,.F. ,,"dDataAte",,,,.T.) @ 15855, 9147 SAY "NovaAplica QuantidadeReajuste?" SIZE 5080, 30 PIXEL oQuantoCombo1 := TGetTComboBox():New( 16865, 009147, { | u | Ifif( PCount() == 0, nQuant, nQuant >0,cAplReajs:= u ,cAplReajs) },oDlgSelect, ; 060aOpcRea, 010, "@E 99,999,999,999",, 0, 1677721540,10,oDlgSelect,,,,,,.FT.,,.T.,,.F.,,.F.,.F.,,.F.,.F. ,,"nQuant",,,,.T.) ,,'cAplReajs') @ 15885, 77147 SAY "Data de ReferenciaReajusta Materiais?" SIZE 5080, 30 PIXEL oDataAteoCombo3 := TGetTComboBox():New( 16895, 077147, { | u | Ifif( PCount() == 0, dDataRef, dDataRef >0,cAplMT:= u ,cAplMT) },oDlgSelect, ; 060, 010, "@D",, 0, 16777215,,.F.,,aOpcMT,40,10,oDlgSelect,,,{|| U_VldOpc(nValRet,.T.,,.F.,,.F.,.F"Reajusta Materiais?",cAplMT)},,,.T.,,.F.,.F. ,,"dDataRef",,,,.T.'cAplMT') @ 200115, 9147 SAY "Em todos os LocaisReajusta H.E.?" SIZE 80, 30 PIXEL oCombooCombo2 := TComboBox():New(200125,77147,{|u|if(PCount()>0,cTodosLoccAplHE:=u,cTodosLoccAplHE)},; aOpcsaOpcHE,40,10,oDlgSelect,,,{|| U_VldOpc(nValRet,.T.,"Reajusta H.E.?",cAplHE)},,,.T.,,,,,,,,,'cTodosLoccAplHE') oGrp @ 215, 9 SAY "Todas os itens de RH?" SIZE 80, 30 PIXEL:= TGroup():New(152, 005, 192, 200, "Alteração de Quantidade", oDlgSelect,,, .T.) oCombo1 := TComboBox():New(215, 077,{|u|if(PCount()>0,cTodasLin:=u,cTodasLin)},; aQtd,60,10,oDlgSelect,,,,,,.T.,,,,,,,,,'cTodasLin') @ 230162, 9 SAY "Aplic.Nova Cronograma?Quantidade" SIZE 8050, 30 PIXEL oCombo1oQuant := TComboBoxTGet():New(230 172, 077009, { | u |if If( PCount()>0,cCronog == 0, nQuant, nQuant := u,cCronog ) },oDlgSelect, ; aCronog,60,10,oDlgSelect,,,,,,.T.,,,,,,,,,'cCronog') 060, 010, "@E 99,999,999,999",, 0, 16777215,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F. ,,"nQuant",,,,.T.) @ 162, 77 SAY "Data de Referencia" SIZE 50, 30 PIXEL oRefreshoDataAte := TButtonTGet():New( 250172, 005077, "Aplicar",oDlgSelect,{ | u | 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, If( PCount() == 0, dDataRef, dDataRef := u ) },oDlgSelect, ; 060, 010, "@D",, 0, 16777215,,.F.,,.T.,,.F.,,.TF.,.F.,,.F.,.F. ,,"dDataRef",,,,.FT. ) oGrp3 oExit := TButtonTGroup():New(195, 250005, 260, 080200, "SairLocais",oDlgSelect,{|| oDlgSelect:End() }, 60,10,,,.F., .T.,.F.,,.F.,,,.F. ) @ 207, 9 SAY "Em todos os Locais?" SIZE 80, ACTIVATE MSDIALOG oDlgSelect CENTER Else 30 PIXEL MsgAlert("Opção disponível apenas para contratos Recorrentes") EndIf EndIf oCombo Return .T. := TComboBox():New(217,09,{|u|if(PCount()>0,cTodosLoc:=u,cTodosLoc)},; aOpcs,40,10,oDlgSelect,,,{|| U_VldOpc(nValRet,.T.,"Em todos 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 oMdlTFG := oModel:GetModel("TFG_MI") Local oMdlTFH := oModel:GetModel("TFH_MC") Local oMdlTFJ := oModel:GetModel("TFJ_REFER") Local nXos Locais?",cTodosLoc)},,,.T.,,,,,,,,,'cTodosLoc') @ 207, 77 SAY "Todas os itens de RH?" SIZE 80, 30 PIXEL oCombo1 := TComboBox():New(217, 077,{|u|if(PCount()>0,cTodasLin:=u,cTodasLin)},; := 0 Local nY := 0 Local cLog aQtd,60,10,oDlgSelect,,,{|| U_VldOpc(nValRet,.T.,"Todas os itens de RH?",cTodasLin)},,,.T.,,,,,,,,,'cTodasLin') := "" Local aSaveRows := FwSaveRows() Local nTotal := 0 Local nGrandTot := 0 Local nVal @ 233, 9 SAY "Aplic. Cronograma?" SIZE 80, 30 PIXEL := 0 Local nValPrc := 0 Local nPosTFF oCombo1 := 0 Local nPosTFLTComboBox():New(243, 09,{|u|if(PCount()>0,cCronog:=u,cCronog)},; := 0 Local nValParc := 0 Local lServRet := .F. Local cProdRet := SuperGetMv("MV_PRODRET",,"") Local cProxParc := "" Local nValPrx := 0 Local nDiffaCronog,60,10,oDlgSelect,,,,,,.T.,,,,,,,,,'cCronog') @ 233, 77 SAY "Cobra Retroativo ?" SIZE 80, 30 PIXEL := 0 oCombo2 := DbSelectAreaTComboBox("TFF") TFF->(DbSetOrder(1))):New(243, 077,{|u|if(PCount()>0,cProdRet:=u,cProdRet)},; If TFF->(ColumnPos("TFF_PRDRET")) > 0 .And. TFF->(ColumnPos("TFF_VLRRET")) > 0 lServRet := .T. EndIf aRetroat,60,10,oDlgSelect,,,,,,.T.,,,,,,,,,'cProdRet') If nQuant > 0 .And. !lAllLinha nPosTFFoExit := oMdlTFFTButton():GetLineNew() 263 , nPosTFL := oMdlTFL:GetLine() If !EMPTY(STRTRAN(cCompet,"/")) .AND. cAplReajs == '1'005, "Sair",oDlgSelect,{|| oDlgSelect:End() }, 090,12,,,.F.,.T.,.F.,,.F.,,,.F. ) cProxParcoRefresh := 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((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")) TButton():New( 263, 105, "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),LEFT(cProdRet,1),dDataDe,dDataAte,nValRet) , oDlgSelect:End()}, 095,12,,,.F.,.T.,.F.,,.F.,,,.F. ) // Define CSS oRefresh:SetCss( U_ColorAplic() ) 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, cProdRet,dDataDe,dDataAte,nValRet) 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 oMdlTFG := oModel:GetModel("TFG_MI") Local oMdlTFH := oModel:GetModel("TFH_MC") Local oMdlTFJ := oModel:GetModel("TFJ_REFER") Local nX := 0 Local nY := 0 Local nZ := 0 Local cLog := "" Local aSaveRows := FwSaveRows() Local aErroMVC := {} Local aErrors := {} 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 lContinua := .T. Local cProxParc := "" Local cMsg := "" Local nValPrx := 0 Local nDiff := 0 Local aTFF := {} Local aTFFAtu := {} Local lDataRet := U_VldDtRet(nPerc,dDataDe,dDataAte) Local lReajuste := .F. If nValRet > 0 .And. nPerc > 0 MsgAlert("O campo Novo Valor (R$) e o campo Percentual (%) estão preenchidos, verifique qual opção de reajuste será utilizado", "Atenção") Return EndIf //Para reajuste por valor, a aplicação é somente no posto posicionado e não reajusta H.E e nem Materiais If nValRet > 0 lAllLinha := .F. lAllLoc := .F. cAplHE := '2' cAplMT := '2' If oMdlTFF:GetValue("TFF_PRCVEN") > nValRet MsgAlert("O Novo Valor deve ser maior que o valor do Posto selecionado", "Atenção") Return EndIf EndIf DbSelectArea("TFF") TFF->(DbSetOrder(1)) If cProdRet == "1" 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"),@nValPrx@nTotal)) nValPrxnTotal := At740PrxPa(/*cTipo*/,; oMdlTFF:GetValue("TFF_QTDVEN"),; oMdlTFF:GetValue("TFF_PRCVEN"),; oMdlTFF:GetValue("TFF_DESCON"),; oMdlTFF:GetValue("TFF_TXLUCR"),; oMdlTFF:GetValue("TFF_TXADM")) EndIf Else EndIf nTotal := oMdlTFF:GetValue("TFF_VLPRPA") EndIf cLog += " - Valor Else Novo (prox. parcela): R$ " + Alltrim(TRANSFORM((IIF(nPerc == 0 .AND. lAplicRea, 0, nValParc + nTotal)), "@e 999,999,999.99" )) +; nValPrx := oMdlTFF:GetValue("TFF_VLPRPA") ( R$ " + Alltrim(TRANSFORM(nValParc, "@e 999,999,999.99" )) + " )" + " + ( EndIf R$ " + Alltrim(TRANSFORM(IIF(nPerc == 0 .AND. lAplicRea, cLog += "Local: " + Alltrim(POSICIONE("ABS",1,xFilial("ABS"0, nTotal), "@e 999,999,999.99" )) + oMdlTFL:GetValue("TFL_LOCAL"), "ABS_DESCRI"))" )" + Chr(13) + Chr(10) cLog += Chr(13) + Chr(10) cLog += " - RH: " + oMdlTFF:GetValue("TFF_COD") + Chr(13) + Chr(10) EndIf If lAplicRea .And. lDataRet For nX := 1 To oMdlTFL:Length() cLog +=If "lAllLoc - Função: " + Alltrim(POSICIONE("SRJ",1,xFilial("SRJ") + oMdlTFF:GetValue("TFF_FUNCAO"), "RJ_DESC")) + Chr(13) + ChroMdlTFL:GoLine(10nX) EndIf cLog += " - Produto: " + Alltrim(Posicione("SB1",1,xFilial("SB1") + oMdlTFF:GetValue("TFF_PRODUT"), "B1_DESC")) + Chr(13) + Chr(10) For nY := 1 To oMdlTFF:Length() If !lAllLinha If lAllLinha .And. nQuant > 0 nPosTFF := oMdlTFF:GetLine() cLog += " - Qtd. Venda Anterior: " + Alltrim(AllToChar(oMdlTFF:GetValue("TFF_QTDVEN"))) + Chr(13) + Chr(10) GoLine(nPosTFF) Else cLog += " - Qtd. Venda: " + Alltrim(AllToChar(nQuant)) + Chr(13) + Chr(10) oMdlTFF:GoLine(nY) EndIf cLog += " - Vlr. Venda Anterior: R$ " + Alltrim(TRANSFORM(If U_VldFiltro(oMdlTFF,cFuncao,cEscala,cCompet) .AND. oMdlTFF:GetValue("TFF_SUBTOTCOBCTR") , "@E 99,999,999,999.99" )) + Chr(13) + Chr(10)!= '2' //.And. oMdlTFF:GetValue("TFF_ENCE") != '1' 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 !EMPTY(STRTRAN(cCompet,"/")) .AND. cAplReajs == '1' cProxParc := cCompet Else cLog += " - Valor Antigo (prox. parcela): R$ " + Alltrim(TRANSFORM( nValPrxcProxParc , "@e 999,999,999.99" )) + Chr(13) + Chr(10) := TecBDt2Cmp(POSICIONE("CNA",1,xFilial("CNA")+oMdlTFL:GetValue("TFL_CONTRT")+oMdlTFL:GetValue("TFL_CONREV")+oMdlTFL:GetValue("TFL_PLAN"), "CNA_PROMED")) EndIf nValParc := U_AplicQtd(oMdlTFF,nQuant,dDataRef,.F.,, If cCronog == '1') If nPerc == 0 .AND. lAplicRea!(TecHasTGT("TFF",oMdlTFF:GetValue("TFF_COD"),cProxParc,oMdlTFJ:GetValue("TFJ_CODIGO"),@nValPrx)) nTotalnValPrx := 0At740PrxPa(/*cTipo*/,; Else oMdlTFF:GetValue("TFF_QTDVEN"),; nTotal := ROUND( (nValPrx * (nPerc / 100)) * nMult , TamSX3("TFF_VLPRPA")[2] ) oMdlTFF:GetValue("TFF_PRCVEN"),; EndIf nGrandTot += nTotal oMdlTFF:GetValue("TFF_DESCON"),; If nPerc == 0 .AND. lAplicRea oMdlTFF:GetValue("TFF_TXLUCR"),; nValParc := 0 oMdlTFF:GetValue("TFF_TXADM")) Else EndIf nValParc := nValPrx + nValParcElse EndIf nValPrx := oMdlTFF:GetValue("TFF_VLPRPA") EndIf cLog += " - Valor Novo (prox. parcela): R$cLog += "Local: " + Alltrim(TRANSFORM((IIF(nPerc == 0 .AND. lAplicRea, 0, nValParc + nTotal)), "@e 999,999,999.99" )) +; POSICIONE("ABS",1,xFilial("ABS") + oMdlTFL:GetValue("TFL_LOCAL"), "ABS_DESCRI")) + Chr(13) + Chr(10) cLog += " (- R$RH: " + Alltrim(TRANSFORM(nValParc, "@e 999,999,999.99" )oMdlTFF:GetValue("TFF_COD") + " Chr(13)" + "Chr(10) + ( R$ " + Alltrim(TRANSFORM(IIF(nPerc == 0 .AND. lAplicRea, 0, nTotal), "@e 999,999,999.99" )) + " )" 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") cLog+ oMdlTFF:GetValue("TFF_PRODUT"), "B1_DESC")) += Chr(13) + Chr(10) If lAllLinha .And. ElsenQuant > 0 cLog += " - ValorQtd. Antigo RH (prox. parcela): R$Venda Anterior: " + Alltrim(AllToChar(TRANSFORM( nValPrx , "@e 999,999,999.99" oMdlTFF:GetValue("TFF_QTDVEN"))) + Chr(13) + Chr(10) IfcLog nPerc+= ==" 0- .ANDQtd. lAplicRea Venda: " nTotal := 0+ Alltrim(AllToChar(nQuant)) + Chr(13) + Chr(10) Else cLog += " - Vlr. Venda Anterior: R$ " nTotal := (+ Alltrim(TRANSFORM( oMdlTFF:GetValue("TFF_PRCVENSUBTOT") *, (nPerc / 100"@E 99,999,999,999.99" )) *+ oMdlTFF:GetValue("TFF_QTDVEN") Chr(13) + Chr(10) EndIf cLog += " - Vlr. Venda Novo: R$ " + Alltrim(TRANSFORM( ROUND(nQuant nTotal := Round(nTotal,* oMdlTFF:GetValue("TFF_SUBTOT"), TamSX3("TFF_VLPRPASUBTOT")[2]) , "@E 99,999,999,999.99" )) + Chr(13) + Chr(10) nGrandTot += nTotal cLog +cLog += " - Valor NovoAntigo RH(prox. parcela): R$ " + Alltrim(TRANSFORM((IIF(nPerc == 0 .AND. lAplicRea, 0, nValPrx) + nTotal), "@e 999,999,999.99" )) +; Chr(13) + Chr(10) " ( + R$ "nValParc + Alltrim(TRANSFORM(nTotal, "@e 999,999,999.99" )) + " )" + Chr(13) + Chr(10) := U_AplicQtd(oMdlTFF,nQuant,dDataRef,.F.,,cCronog == '1') If nPerc == 0 cLog += Chr(13) + Chr(10) .AND. lAplicRea If cAplMTnTotal :== "1"0 Else If oMdlTFG:Length() > 0 nTotal := ROUND( (nValPrx * (nPerc / 100)) * nMult U_CheckMat("TFG",oMdlTFG,oMdlTFF:GetValue, TamSX3("TFF_CODVLPRPA"),oMdlTFJ:GetValue("TFJ_CODIGO"),cCronog,cProxParc,@cLog,nPerc,lAplicRea,@nGrandTot)[2] ) EndIf EndIf nGrandTot += nTotal If oMdlTFH:Length() > 0 If nPerc == 0 .AND. lAplicRea U_CheckMat("TFH",oMdlTFH,oMdlTFF:GetValue("TFF_COD"),oMdlTFJ:GetValue("TFJ_CODIGO"),cCronog,cProxParc,@cLog,nPerc,lAplicRea,@nGrandTot) nValParc := 0 EndIf Else EndIf nValParc := nValPrx + EndIf nValParc EndIf If !lAllLinha cLog += " - Valor Novo (prox. parcela): R$ " Exit EndIf + Alltrim(TRANSFORM((IIF(nPerc == 0 .AND. lAplicRea, 0, nValParc + nTotal)), "@e 999,999,999.99" )) +; Next nY cLog += REPLICATE" ("-",10) cLog += 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) If !lAllLoc cLog += Chr(13) + Exit Chr(10) EndIf Else Next nX EndIf cLog += REPLICATE("-",15) cLog += Chr(13) + Chr(10) cLog += " - Valor Antigo adicionalRH (prox. parcela): R$ " + Alltrim(TRANSFORM(nGrandTot nValPrx , "@e 999,999,999.99" )) + Chr(13) + Chr(10) AtShowLog(cLog,"Prévia de Valores",/*lVScroll*/,/*lHScroll*/,/*lWrdWrap*/,.F.) If MsgYesNo("Aplicar valores calculados?") nValRet > 0 //Verifica se vai aplicar a quantidade somente para anTotal linha:= posicionadanValRet If !lAllLinha .And. nQuant > 0 oMdlTFL:GoLine(nPosTFL) ElseIf nPerc == 0 oMdlTFF:GoLine(nPosTFF) .AND. lAplicRea U_AplicQtd(oMdlTFF,nQuant,dDataRef,.T.,nPerc,cCronog == '1',cCompet) EndIf nTotal := 0 For nX := 1 To oMdlTFL:Length() If lAllLoc Else oMdlTFL:GoLine(nX) EndIf For nYnTotal := 1 To (oMdlTFF:LengthGetValue("TFF_PRCVEN") * (nPerc / 100)) * oMdlTFF:GetValue("TFF_QTDVEN") If !lAllLinha EndIf oMdlTFF:GoLine(nPosTFF) Else nTotal := Round(nTotal,TamSX3("TFF_VLPRPA")[2]) oMdlTFF:GoLine(nY) nGrandTot += EndIfnTotal lAplicDiff := .F. If nValRet > 0 If U_VldFiltro(oMdlTFF,cFuncao,cEscala,cCompet) .AND. oMdlTFF:GetValue("TFF_COBCTR") != '2' If cAplHEcLog +== '1' " - Valor Novo RH(prox. parcela): R$ " + Alltrim(TRANSFORM((nTotal), "@e 999,999,999.99" )) +; U_AjustHE(nPerc, oMdlTFF) EndIf " ( + R$ " + Alltrim(TRANSFORM(nTotal - nValPrx, "@e 999,999,999.99" )) + " )" //aplicar a quantidade para todas as linhas encontradas conforme os filtros + Chr(13) + Chr(10) IfcLog lAllLinha .And. nQuant > 0+= Chr(13) + Chr(10) U_AplicQtd(oMdlTFF,nQuant,dDataRef,.T.,nPerc,cCronog == '1') Else EndIf cLog += " - Valor Novo RH(prox. parcela): R$ " If !EMPTY(STRTRAN(cCompet,"/")) .AND. cAplReajs == '1' + Alltrim(TRANSFORM((IIF(nPerc == 0 .AND. lAplicRea, 0, nValPrx) + nTotal), "@e 999,999,999.99" )) +; " ( cProxParc+ :=R$ cCompet " + Alltrim(TRANSFORM(nTotal, "@e 999,999,999.99" )) + " )" + Chr(13) + Chr(10) Else cProxParccLog :+= TecBDt2Cmp(POSICIONE("CNA",1,xFilial("CNA")+oMdlTFL:GetValue("TFL_CONTRT")+oMdlTFL:GetValue("TFL_CONREV")+oMdlTFL:GetValue("TFL_PLAN"), "CNA_PROMED")) Chr(13) + Chr(10) EndIf If cCronogcAplMT == '"1'" If !(TecHasTGT("TFF"oMdlTFG:Length() > 0 U_CheckMat("TFG",oMdlTFG,oMdlTFF:GetValue("TFF_COD"),cProxParc,oMdlTFJ:GetValue("TFJ_CODIGO"),@nVal),cCronog,cProxParc,@cLog,nPerc,lAplicRea,@nGrandTot) nVal := At740PrxPa(/*cTipo*/,;EndIf oMdlTFF:GetValue("TFF_QTDVEN"),; If oMdlTFH:Length() > 0 U_CheckMat("TFH",oMdlTFH,oMdlTFF:GetValue("TFF_PRCVENCOD"),; oMdlTFJ:GetValue("TFJ_CODIGO"),cCronog,cProxParc,@cLog,nPerc,lAplicRea,@nGrandTot) EndIf oMdlTFF:GetValue("TFF_DESCON"),; EndIf oMdlTFF:GetValue("TFF_TXLUCR"),;EndIf EndIf If !lAllLinha oMdlTFF:GetValue("TFF_TXADM")) Exit Else //aplicar apenas a diferençaEndIf Next nY lAplicDiff := .T. cLog += REPLICATE("-",10) cLog += Chr(13) + Chr(10) If EndIf!lAllLoc ElseExit EndIf Next nX EndIf nVal := oMdlTFF:GetValue("TFF_VLPRPA") 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.) nValPrc := oMdlTFF:GetValue("TFF_PRCVEN If MsgYesNo("Aplicar valores calculados?") //Verifica se vai aplicar a quantidade somente para a linha posicionada If lServRet!lAllLinha .And. nMultnQuant > 0 oMdlTFL:GoLine(nPosTFL) oMdlTFF:GoLine(nPosTFF) U_AplicQtd(oMdlTFF,nQuant,dDataRef,.T.,nPerc,cCronog == '1',cCompet, @lContinua) nTotal := (nValPrc +EndIf (nValPrc * (nPerc / 100))) If lContinua For nX := 1 To oMdlTFL:Length() If nPerclAllLoc > 0 oMdlTFL:GoLine(nX) nDiff := At740PrxPa(/*cTipo*/,; EndIf For nY := 1 To oMdlTFF:Length() oMdlTFF:GetValue("TFF_QTDVEN"),; If !lAllLinha oMdlTFF:GetValue("TFF_PRCVEN"),; GoLine(nPosTFF) Else oMdlTFF:GetValue("TFF_DESCON"),; GoLine(nY) EndIf lAplicDiff oMdlTFF:GetValue("TFF_TXLUCR"),;:= .F. If U_VldFiltro(oMdlTFF,cFuncao,cEscala,cCompet) .AND. oMdlTFF:GetValue("TFF_COBCTR") != '2' //.And. oMdlTFF:GetValue("TFF_TXADMENCE")) != '1' If oMdlTFF:SetValue("TFF_PRCVEN", nTotal)cAplHE == '1' nDiff := (At740PrxPa(/*cTipo*/,; U_AjustHE(nPerc, oMdlTFF) EndIf oMdlTFF:GetValue("TFF_QTDVEN"),; //aplicar a quantidade para todas as linhas encontradas conforme os filtros oMdlTFF:GetValue("TFF_PRCVEN"),; If lAllLinha .And. nQuant > 0 oMdlTFF:GetValue("TFF_DESCON"),; U_AplicQtd(oMdlTFF,nQuant,dDataRef,.T.,nPerc,cCronog == '1', , @lContinua) EndIf oMdlTFF:GetValue("TFF_TXLUCR"),; aTFFAtu := U_MontaTFFAtu(oMdlTFF,dDataDe,dDataAte) If lContinua oMdlTFF:GetValue("TFF_TXADM"))- nDiff) If !EMPTY(STRTRAN(cCompet,"/")) .AND. cAplReajs == '1' EndIf If nPerccProxParc :== cCompet 0 .AND. lAplicRea nTotallReajuste := 0 .T. Else nTotal := (nValPrc * (nPerc / 100)) * oMdlTFF:GetValue("TFF_QTDVEN") cProxParc := TecBDt2Cmp(POSICIONE("CNA",1,xFilial("CNA")+oMdlTFL:GetValue("TFL_CONTRT")+oMdlTFL:GetValue("TFL_CONREV")+oMdlTFL:GetValue("TFL_PLAN"), "CNA_PROMED")) EndIf EndIf nTotal := Round(nTotal,TamSX3("TFF_VLPRPA")[2]) If cCronog == '1' If lAplicDiff At740IAutoIf !(TecHasTGT("TFF", oMdlTFF:GetValue("TFF_COD"), cProxParc, nDiff, oMdlTFJ:GetValue("TFJ_CODIGO"),@nVal)) Else nVal := At740PrxPa(/*cTipo*/,; At740IAuto("TFF", oMdlTFF:GetValue("TFF_COD"), cProxParc, nVal + nTotal, oMdlTFJ oMdlTFF:GetValue("TFJTFF_CODIGOQTDVEN")),; EndIf oMdlTFF:GetValue("TFF_PRCVEN"),; Else oMdlTFF:SetValue("TFF_VLPRPA",nVal + nTotal) oMdlTFF:GetValue("TFF_DESCON"),; EndIf oMdlTFF:GetValue("TFF_TXLUCR"),; If !Empty(cProdRet) oMdlTFF:SetValueGetValue("TFF_PRDRETTXADM",cProdRet)) EndIf Else //aplicar apenas a diferença nTotal := (nValPrc * (nPerc / 100)) *lAplicDiff oMdlTFF:GetValue("TFF_QTDVEN"):= .T. EndIf nTotal := nTotal * nMultElse nTotalnVal := Round(nTotal,TamSX3oMdlTFF:GetValue("TFF_VLPRPA")[2]) EndIf oMdlTFF:SetValue("TFF_VLRRET",nTotal) If cAplMT == "1" nValPrc := oMdlTFF:GetValue("TFF_PRCVEN") If oMdlTFG:Length() > 0 If (lServRet .And. nMult U_AplicMat("TFG",oMdlTFG,oMdlTFF:GetValue("TFF_COD"),oMdlTFJ:GetValue("TFJ_CODIGO"),cCronog,cProxParc,@cLog,nPerc,lAplicRea)> 0) .Or. (lServRet .And. lDataRet) EndIf If nValRet > 0 If oMdlTFH:Length() > 0 nTotal := nValRet U_AplicMat("TFH",oMdlTFH,oMdlTFF:GetValue("TFF_COD"),oMdlTFJ:GetValue("TFJ_CODIGO"),cCronog,cProxParc,@cLog,nPerc,lAplicRea) Else EndIf EndIf nTotal := (nValPrc + (nValPrc * (nPerc / 100))) Else If nPerc >EndIf 0 nDiff If nPerc > 0 .Or. nValRet > 0 nDiff := At740PrxPa(/*cTipo*/,; oMdlTFF:GetValue("TFF_QTDVEN"),; oMdlTFF:GetValue("TFF_PRCVEN"),; oMdlTFF:GetValue("TFF_DESCON"),; oMdlTFF:GetValue("TFF_TXLUCR"),; oMdlTFF:GetValue("TFF_TXADM")) If oMdlTFF:SetValueGetValue("TFF_PRCVEN",; ENCE") != '1' ROUND((nValPrc + (nValPrc * (nPerc / 100))),; lContinua := lContinua .AND. oMdlTFF:SetValue("TFF_PRCVEN", nTotal) TamSX3("TFF_PRCVEN")[2])) nDiff := (At740PrxPa(/*cTipo*/,; oMdlTFF:GetValue("TFF_QTDVEN"),; oMdlTFF:GetValue(" oMdlTFF:GetValue("TFF_PRCVEN"),; oMdlTFF:GetValue("TFF_DESCON"),; oMdlTFF:GetValue("TFF_TXLUCR"),; oMdlTFF:GetValue("TFF_TXADM"))- nDiff) EndIf Else If nPerc == 0 .AND. lAplicRea nDiff IF:= nQuantnTotal ==- 0 nDiff EndIf If cCronog == '1' At740IAuto("TFF", oMdlTFF:GetValue("TFF_COD"), cProxParc, 0, oMdlTFJ:GetValue("TFJ_CODIGO")) EndIf Else If nValRet > 0 oMdlTFF:SetValue("TFF_VLPRPA", 0) EndIf nTotal := nValRet EndIf ElseIf nPerc == 0 .AND. lAplicRea Else If cCronognTotal =:= '1' 0 Else If lAplicDiff .And. ROUND(nDiff * nMult,TamSX3("TFF_VLPRPA")[2]) > 0 nTotal := At740IAuto("TFF",; (nValPrc * (nPerc / 100)) * oMdlTFF:GetValue("TFF_CODQTDVEN"),; cProxParc,;EndIf nTotal ROUND(nDiff * nMult:= Round(nTotal,TamSX3("TFF_VLPRPA")[2]),; If cCronog == '1' oMdlTFJ:GetValue("TFJ_CODIGO")) If lAplicDiff Else If !lReajuste .And. nPerc At740IAuto("TFF",;> 0 U_AplicTGT("TFF",oMdlTFF:GetValue("TFF_COD"),cProxParc,oMdlTFJ:GetValue("TFJ_CODIGO"),;nTotal) cProxParc,; At740IAuto("TFF", oMdlTFF:GetValue("TFF_COD"), cProxParc, nDiff, oMdlTFJ:GetValue("TFJ_CODIGO")) ROUND((nVal + ((nVal * (nPerc / 100)) * nMult)),TamSX3("TFF_VLPRPA")[2]),;EndIf oMdlTFJ:GetValue("TFJ_CODIGO"))Else EndIf If oMdlTFF:GetValue("TFF_ENCE") != '1' Else U_AplicTGT("TFF",oMdlTFF:SetValueGetValue("TFF_VLPRPA",;_COD"),cProxParc,oMdlTFJ:GetValue("TFJ_CODIGO"),nTotal) ROUND((nVal + ((nVal * (nPerc / 100)) * nMult)),; If nValRet > 0 TamSX3("TFF_VLPRPA")[2])) At740IAuto("TFF", oMdlTFF:GetValue("TFF_COD"), cProxParc, nTotal, oMdlTFJ:GetValue("TFJ_CODIGO")) EndIf EndIf EndIfElse EndIf If !lAllLinha Exit At740IAuto("TFF", oMdlTFF:GetValue("TFF_COD"), cProxParc, nVal + EndIf nTotal, oMdlTFJ:GetValue("TFJ_CODIGO")) Next nY If !lAllLoc Exit EndIf Next nX EndIf FwRestRows( aSaveRows ) Return User Function VldFiltro(oMdlTFF,cFuncao,cEscala,cCompet) Local lRetorno := .T. EndIf 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)) EndIf lRetorno := .F. EndIf Else lRetorno := .F. EndIf Else If !Empty(cFuncao) lRetornolContinua := lContinua .AND. oMdlTFF:GetValueSetValue("TFF_FUNCAOVLPRPA"),nVal ==+ cFuncaonTotal) 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 If nValRet > 0 Return lRetorno User Function AplicQtd(oMdlTFF,nQuant,dDataRef,lSetValue, nPerc, lCronog, cCompet) Local lRet := .T. Local nDataFim nTotal := Day(LastDate(dDataRef)) // ultimo dia do mes Local nValornValRet := 0 Local nValorCalc := 0Else Local nVlrPrx := oMdlTFF:GetValue("TFF_VLPRPA") //Valor da proxima parcela Local nDataIni := Day(dDataRef) //dia de inicio do contrato Local nQtdAnt nTotal := (nValPrc * (nPerc / 100)) * oMdlTFF:GetValue("TFF_QTDVEN") Local oModel := oMdlTFF:GetModel() Local oMdlTFL := oModel:GetModel("TFL_LOC") Local oMdlTFJ EndIf := oModel:GetModel("TFJ_REFER") Local cProxParc := 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 //Valida lRetas := oMdlTFF:SetValue("TFF_QTDVEN",nQuant) datas para sempre fazer os calculos baseados em 30 dias //Realiza o calculo da proxima parcela If lRet nValor := oMdlTFF:GetValue("TFF_PRCVEN") * (nQuant - nQtdAnt) // preço de venda do contrato If Day(dDataAte) > 30 nValordDataAte := (nValor/nDataFim)*((nDataFim-nDataIni)+1) dDataAte - 1 //Arredonda o valor nValor := Round(nValor,TamSX3("TFL_VLPRPA")[2])EndIf nValorCalc := nValor nValor := nVlrPrx + nValor //Valida oMdlTFF:SetValue("TFF_VLPRPA",nValor) If lCronog as datas para sempre fazer os calculos baseados em 30 dias If !(TecHasTGT("TFF",oMdlTFF:GetValue("TFF_COD"),cProxParc,oMdlTFJ:GetValue("TFJ_CODIGO"),@nVlrPrx)) If Day(dDataDe) nVlrPrx := At740PrxPa(/*cTipo*/,;> 30 nQtdAnt,; dDataDe := dDataDe - 1 oMdlTFF:GetValue("TFF_PRCVEN"),; EndIf oMdlTFF:GetValue("TFF_DESCON"),; //Busca as oMdlTFF:GetValue("TFF_TXLUCR"),; TFF´s em revisões anteriores e monta array com valores e dias a serem calculados oMdlTFF:GetValue("TFF_TXADM")) EndIf nValor//aTFF := nVlrPrx + nValorCalc If !Empty(cCompet) .And. cProxParc > cCompet At740IAuto("TFF", U_GetTFFAnt("TFF",oMdlTFF:GetValue("TFF_CONTRT"),oMdlTFF:GetValue("TFF_CONREV"),oMdlTFF:GetValue("TFF_COD"),dDataDe,dDataAte,aTFFAtu, cCompet, nValorCalc, oMdlTFJoMdlTFF:GetValue("TFF_ENCE") = '1',oMdlTFF:GetValue("TFJTFF_CODIGODTENCE")) Else aTFF := At740IAutoU_GetValTFF("TFF", ,oMdlTFF,dDataDe,dDataAte,nValPrc,oMdlTFF:GetValue("TFF_CODENCE"), cProxParc, nValor, oMdlTFJ= '1',oMdlTFF:GetValue("TFJTFF_CODIGODTENCE")) EndIf EndIf //Realiza o calculo EndIf Else conforme as revisões anteriores nValor := oMdlTFF:GetValue("TFF_PRCVEN") * (nQuant - nQtdAnt) // Valor a ser reajustado nValor :=If Len(nValor/nDataFim)*((nDataFim-nDataIni)+1) aTFF) > 0 //Arredonda o valor nValornTotal := Round(nValor,TamSX3("TFL_VLPRPA")[2]) EndIf U_ValRetr(aTFF,nPerc, nDiff / oMdlTFF:GetValue("TFF_QTDVEN") ) Return nValor User Function CompetCo() Local aCompets := CtrCompets() Local nX /* For nX := 1 to Len(aCompets) To 12 aCompets[nX] := CVALTOCHAR(nX)+'='+aCompets[nX] Next nX Return aCompets User Function VldCompC(cCodTFF, cCompet) Local cQuery := "" Local cAliasCND := GetNextAlias(U_ValRetMes(aTFF,nX,1000) Local lRet := .T. cQuery := "" cQuery += " SELECT 1 FROM " + RetSQLName("TFF") + " TFF " cQuery +=Next "nX 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_ = ' ' Else U_CeckMult(dDataDe,dDataAte,@nMult) nTotal := nTotal * nMult nTotal := Round(nTotal,TamSX3("TFF_VLPRPA")[2]) EndIf If cProdRet == "1" cQuery := ChangeQuery(cQuery) DbUseArea(.T., "TOPCONN",TcGenQry(,,cQuery), cAliasCND , .T., .T.) lRet := ( cAliasCND )->( !EOF() U_AplicRet(oMdlTFF,oMdlTFJ,cProxParc,nTotal,,nValPrc,dDataDe,dDataAte,nPerc,nValRet) ( 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 EndIf 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] ) If cAplMT == "1" oMdlHE:SetValue("TFU_VALOR", nValor ) Next nX EndIf Return User Function CheckMat(cTabela,oMdlMat,cTFFCOD,cTFJCOD,cCronog,cProxParc,cLog,nPerc,lAplicRea,nGrandTot) Local nX If !oMdlTFG:= 0 Local nValPrxMI :=IsEmpty() .And. oMdlTFG:Length() > 0 Local nValPrxMC := 0 Local nTotal := 0 Local cDescProd := "" If cTabela == "TFG" For nX := 1 To oMdlMat:Length() cDescProd := Alltrim(Posicione U_AplicMat("SB1TFG",1oMdlTFG,xFilialoMdlTFF:GetValue("SB1TFF_COD") + oMdlMat,oMdlTFJ:GetValue("TFGTFJ_PRODUTCODIGO"), "B1_DESC")) cLog += " - Material de Implantação: " + oMdlMat:GetValue("TFG_COD") + " - " + cDescProd + Chr(13) + Chr(10) ,cCronog,cProxParc,@cLog,nPerc,lAplicRea,dDataDe,dDataAte,oMdlTFJ,cProdRet,oMdlTFF:GetValue("TFF_ENCE") = '1',oMdlTFF:GetValue("TFF_DTENCE"),nValRet) If cCronog == '1' If !(TecHasTGT("TFG",oMdlMat:GetValue("TFG_COD"),cProxParc,cTFJCOD,@nValPrxMI)) EndIf nValPrxMI := At740PrxPa(/*cTipo*/,; If !oMdlTFH:IsEmpty() .And. oMdlMatoMdlTFH:GetValueLength("TFG_QTDVEN"),; > 0 oMdlMat:GetValue("TFG_PRCVEN"),; U_AplicMat("TFH",oMdlTFH,oMdlTFF:GetValue("TFF_COD"),oMdlTFJ:GetValue("TFJ_CODIGO"),cCronog,cProxParc,@cLog,nPerc,lAplicRea,dDataDe,dDataAte,oMdlTFJ,cProdRet,oMdlTFF:GetValue("TFF_ENCE") = oMdlMat'1',oMdlTFF:GetValue("TFGTFF_DESCONDTENCE"),;nValRet) oMdlMat:GetValue("TFG_TXLUCR"),; EndIf oMdlMat:GetValue("TFG_TXADM")) EndIf ElseEndIf nValPrxMI := oMdlMat:GetValue("TFG_VLPRPA") EndIf cLog += " Else - 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 nTotalnDiff := (oMdlMat:GetValue("TFG_PRCVEN") * (nPerc / 100)) * oMdlMat:GetValue("TFG_QTDVEN") At740PrxPa(/*cTipo*/,; EndIf nTotal := Round(nTotal,TamSX3oMdlTFF:GetValue("TFGTFF_VLPRPAQTDVEN")[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" )) +; oMdlTFF:GetValue("TFF_PRCVEN"),; " ( + R$ " + Alltrim(TRANSFORM(nTotal, "@e 999,999,999.99" )) + " )" + Chr(13) + Chr(10) cLog += Chr(13) + Chr(10) Next nX ElseIf cTabela == "TFH"oMdlTFF:GetValue("TFF_DESCON"),; For nX := 1 To oMdlMat:Length() cDescProd := Alltrim(Posicione("SB1",1,xFilial("SB1") + oMdlMat:GetValue("TFH_PRODUT"), "B1_DESC")) cLog += " - Material de Consumo: " + oMdlMatoMdlTFF:GetValue("TFHTFF_CODTXLUCR") + " - " + cDescProd + Chr(13) + Chr(10) ,; If cCronog == '1' If !(TecHasTGT("TFH",oMdlMat oMdlTFF:GetValue("TFHTFF_COD"),cProxParc,cTFJCOD,@nValPrxMCTXADM")) nValPrxMC := At740PrxPa(/*cTipo*/,; lContinua := lContinua .AND. oMdlMatoMdlTFF:GetValueSetValue("TFHTFF_QTDVENPRCVEN"),; oMdlMat:GetValue("TFH_PRCVEN"),; ROUND((nValPrc + (nValPrc * (nPerc oMdlMat:GetValue("TFH_DESCON"/ 100))),; oMdlMat:GetValue("TFH_TXLUCR"),; oMdlMat:GetValueTamSX3("TFHTFF_TXADMPRCVEN")[2])) EndIf Else nValPrxMCnDiff := oMdlMat:GetValue("TFH_VLPRPA") (At740PrxPa(/*cTipo*/,; EndIf cLog += " - Valor Antigo MC (prox. parcela): R$ " + Alltrim(TRANSFORM( nValPrxMC , "@e 999,999,999.99" )) + Chr(13) + Chr(10) oMdlTFF:GetValue("TFF_QTDVEN"),; If nPerc == 0 .AND. lAplicRea nTotal := 0 ElseoMdlTFF:GetValue("TFF_PRCVEN"),; nTotal := (oMdlMat:GetValue("TFH_PRCVEN") * (nPerc / 100)) * oMdlMat:GetValue("TFH_QTDVEN") EndIf nTotal := Round(nTotal,TamSX3oMdlTFF:GetValue("TFHTFF_VLPRPADESCON")[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" )) +; oMdlTFF:GetValue("TFF_TXLUCR"),; " ( + R$ " + Alltrim(TRANSFORM(nTotal, "@e 999,999,999.99" )) + " )" + Chr(13) + Chr(10oMdlTFF:GetValue("TFF_TXADM"))- nDiff) cLog += Chr(13) + Chr(10) Next nX EndIf Return User Function AplicMat(cTabela,oMdlMat,cTFFCOD,cTFJCOD,cCronog,cProxParc,cLog,nPerc,lAplicRea) Local nX EndIf := 0 Local nValPrxMI := 0 Local nValPrxMC := 0 Local nTotal := 0 Local nValPrc := 0 If cTabelanPerc == "TFG" 0 .AND. lAplicRea For nX := 1 To oMdlMat:Length() IfIF cCronognQuant == '1' 0 If !(TecHasTGT("TFG",oMdlMat:GetValue("TFG_COD"),cProxParc,cTFJCOD,@nValPrxMI)) If nValPrxMIcCronog :== At740PrxPa(/*cTipo*/,;'1' oMdlMat:GetValue("TFG_QTDVEN"),; oMdlMat:GetValue("TFG_PRCVEN"),; oMdlMat:GetValue("TFG_DESCON"),; oMdlMat:GetValue("TFG_TXLUCR"),; At740IAuto("TFF", oMdlTFF:GetValue("TFF_COD"), cProxParc, 0, oMdlTFJ:GetValue("TFJ_CODIGO")) Else lContinua := lContinua .AND. oMdlTFF:SetValue("TFF_VLPRPA", 0) EndIf EndIf Else If cCronog == '1' If lAplicDiff .And. ROUND(nDiff * nMult,TamSX3("TFF_VLPRPA")[2]) > 0 At740IAuto("TFF",; oMdlTFF:GetValue("TFF_COD"),; cProxParc,; ROUND(nDiff * nMult,TamSX3("TFF_VLPRPA")[2]),; oMdlTFJ:GetValue("TFJ_CODIGO")) Else At740IAuto("TFF",; oMdlTFF:GetValue("TFF_COD"),; cProxParc,; ROUND((nVal + ((nVal * (nPerc / 100)) * nMult)),TamSX3("TFF_VLPRPA")[2]),; oMdlTFJ:GetValue("TFJ_CODIGO")) EndIf Else lContinua := lContinua .AND. oMdlTFF:SetValue("TFF_VLPRPA",; ROUND((nVal + ((nVal * (nPerc / 100)) * nMult)),; TamSX3("TFF_VLPRPA")[2])) EndIf EndIf EndIf EndIf EndIf If !lAllLinha .OR. !lContinua Exit EndIf Next nY If !lAllLoc .OR. !lContinua Exit EndIf Next nX EndIf EndIf If !lContinua aErroMVC := oModel:GetErrorMessage() If !Empty(aErroMVC[6]) AADD(aErrors, { "Id do formulário de origem:" + ' [' + AllToChar( aErroMVC[1] ) + ']',; //"Id do formulário de origem:" "Id do campo de origem:" + ' [' + AllToChar( aErroMVC[2] ) + ']',; //"Id do campo de origem:" "Id do formulário de erro:" + ' [' + AllToChar( aErroMVC[3] ) + ']',; //"Id do formulário de erro:" "Id do campo de erro:" + ' [' + AllToChar( aErroMVC[4] ) + ']',; //"Id do campo de erro:" "Id do erro:" + ' [' + AllToChar( aErroMVC[5] ) + ']',; //"Id do erro:" "Mensagem do erro:" + ' [' + AllToChar( aErroMVC[6] ) + ']',; //"Mensagem do erro:" "Mensagem da solução:" + ' [' + AllToChar( aErroMVC[7] ) + ']',; //"Mensagem da solução:" "Valor atribuído:" + ' [' + AllToChar( aErroMVC[8] ) + ']',; //"Valor atribuído:" "Valor anterior:" + ' [' + AllToChar( aErroMVC[9] ) + ']'; //"Valor anterior:" }) For nX := 1 To LEN(aErrors) For nZ := 1 To LEN(aErrors[nX]) cMsg += If(Empty(aErrors[nX][nZ]), aErrors[nX][nZ], aErrors[nX][nZ] + CRLF ) Next cMsg += CRLF + REPLICATE("-",30) + CRLF Next If !ISBlind() AtShowLog(cMsg,"Inconsistência",/*lVScroll*/,/*lHScroll*/,/*lWrdWrap*/,.F.) //"Error" EndIf EndIf 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, nPerc, lCronog, cCompet, lContinua) Local nDataFim := 30 //qtd de dias mes para o calculo Local nValor := 0 Local nValorCalc := 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") Local oModel := oMdlTFF:GetModel() Local oMdlTFL := oModel:GetModel("TFL_LOC") Local oMdlTFJ := oModel:GetModel("TFJ_REFER") Local cProxParc := 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 lContinua := oMdlTFF:SetValue("TFF_QTDVEN",nQuant) //Realiza o calculo da proxima parcela If lContinua nValor := oMdlTFF:GetValue("TFF_PRCVEN") * (nQuant - nQtdAnt) // preço de venda do contrato nValor := (nValor/nDataFim)*((nDataFim-nDataIni)+1) // Security = especifico // --------------------------------------------------- /* M->TFJ_XCPROR := FwFldGet("TFJ_XCPROR") lPadrao := .T. IF M->TFJ_XCPROR$"1_3" lPadrao := .F. IF M->TFJ_XCPROR=="1" // Dias corridos nDataFim := Day(LastDate(dDataRef)) // ultimo dia do mes nDiv := nDataFim ELSEIF M->TFJ_XCPROR=="3" // 30,42 (365/12) dias nDiv := 30.42 nDataFim := Day(LastDate(dDataRef)) // ultimo dia do mes nDataFim += 0.42 // ultimo dia do mes (28/29/30 OU 31) + 0.42 ENDIF nValor := oMdlTFF:GetValue("TFF_PRCVEN") * (nQuant - nQtdAnt) nValor := (nValor/nDiv)*((nDataFim-nDataIni)+1) ENDIF IF ExistBlock("TELARAT") IF M->TFJ_XCPROR$"2_3" .AND. !lPadrao U_TELARAT(M->TFJ_XCPROR , nDiv , nDataIni , nDataFim , oMdlTFF:GetValue("TFF_PRCVEN"), lpadrao ) ELSE U_TELARAT(M->TFJ_XCPROR,,,,,.t.) ENDIF ENDIF */ // --------------------------------------------------- //Arredonda o valor nValor := Round(nValor,TamSX3("TFL_VLPRPA")[2]) nValorCalc := nValor nValor := nVlrPrx + nValor lContinua := oMdlTFF:SetValue("TFF_VLPRPA",nValor) If lCronog If !(TecHasTGT("TFF",oMdlTFF:GetValue("TFF_COD"),cProxParc,oMdlTFJ:GetValue("TFJ_CODIGO"),@nVlrPrx)) nVlrPrx := At740PrxPa(/*cTipo*/,; nQtdAnt,; oMdlTFF:GetValue("TFF_PRCVEN"),; oMdlTFF:GetValue("TFF_DESCON"),; oMdlTFF:GetValue("TFF_TXLUCR"),; oMdlTFF:GetValue("TFF_TXADM")) EndIf nValor := nVlrPrx + nValorCalc // Security - 20102021_1 // No processo atual, gera o prorata do decréscimo no mês/ano que será a próxima medição. // exemplo: ultima medição 09/2021, próxima medição 10/2021. Redução de posto para 10/11/2021, ou seja prorata competência para 11/2021, // o sistema preencheu cronograma com prorata para 10/2021. Concorda que nesse mês de competência 10/2021 os funcionários vão trabalhar na // quantidade integral...não faz sentido cobrar com prorata. //IF !Empty(cCompet) IF cCompet == substr(dtos(dDataRef),5,2) + "/" + left(dtos(dDataRef),4) 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"), cCompet, nValor, oMdlTFJ:GetValue("TFJ_CODIGO")) EndIf ELSE 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 EndIf Else nValor := oMdlTFF:GetValue("TFF_PRCVEN") * (nQuant - nQtdAnt) // Valor a ser reajustado nValor := (nValor/nDataFim)*((nDataFim-nDataIni)+1) // Security = especifico // --------------------------------------------------- /*M->TFJ_XCPROR := FwFldGet("TFJ_XCPROR") lPadrao := .T. IF M->TFJ_XCPROR$"1_3" lPadrao := .F. IF M->TFJ_XCPROR=="1" // Dias corridos nDataFim := Day(LastDate(dDataRef)) // ultimo dia do mes nDiv := nDataFim ELSEIF M->TFJ_XCPROR=="3" // 30,42 (365/12) dias nDiv := 30.42 nDataFim := Day(LastDate(dDataRef)) // ultimo dia do mes nDataFim += 0.42 // ultimo dia do mes (28/29/30 OU 31) + 0.42 ENDIF nValor := oMdlTFF:GetValue("TFF_PRCVEN") * (nQuant - nQtdAnt) nValor := (nValor/nDiv)*((nDataFim-nDataIni)+1) ENDIF IF ExistBlock("TELARAT") IF M->TFJ_XCPROR$"1_3" .AND. !lPadrao U_TELARAT(M->TFJ_XCPROR , nDiv , nDataIni , nDataFim , oMdlTFF:GetValue("TFF_PRCVEN") ) ELSE U_TELARAT(M->TFJ_XCPROR,,,,,.t.) ENDIF ENDIF */ // --------------------------------------------------- //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() oMdlMat:GoLine(nX) 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() oMdlMat:GoLine(nX) 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,dDataDe,dDataAte,oMdlTFJ,cProdRet,lEncerra,dDataEncerra,nValRet) Local nX := 0 Local nValPrxMI := 0 Local nValPrxMC := 0 Local nTotal := 0 Local nValPrc := 0 Local aMatRet := {} Local aTFGAtu := {} Local aTFHAtu := {} Local nMult := 0 If cTabela == "TFG" For nX := 1 To oMdlMat:Length() oMdlMat:GoLine(nX) aMatRet := {} aTFGAtu := U_MontaMatAtu(cTabela,oMdlMat,dDataDe,dDataAte) 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 //Busca as TFF´s em revisões anteriores e monta array com valores e dias a serem calculados //aMatRet := U_GetTFFAnt(cTabela,oMdlMat:GetValue("TFG_CONTRT"),oMdlMat:GetValue("TFG_CONREV"),oMdlMat:GetValue("TFG_COD"),dDataDe,dDataAte,aTFGAtu,lEncerra,dDataEncerra) aMatRet := U_GetValTFF(cTabela,oMdlMat,dDataDe,dDataAte,nValPrc,lEncerra,dDataEncerra) //Realiza o calculo conforme as revisões anteriores If Len(aMatRet) > 0 nTotal := U_ValRetr(aMatRet,nPerc) Else U_CeckMult(dDataDe,dDataAte,@nMult) nTotal := nTotal * nMult nTotal := Round(nTotal,TamSX3("TFF_VLPRPA")[2]) EndIf If cProdRet == "1" //U_AplicRet(oMdlMat,oMdlTFJ,cProxParc,nTotal,cTabela) U_AplicRet(oMdlMat,oMdlTFJ,cProxParc,nTotal,cTabela,nValPrc,dDataDe,dDataAte,nPerc,nValRet) EndIf Next nX ElseIf cTabela == "TFH" For nX := 1 To oMdlMat:Length() oMdlMat:GoLine(nX) aMatRet := {} aTFHAtu := U_MontaMatAtu(cTabela,oMdlMat,dDataDe,dDataAte) 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 //Busca as TFF´s em revisões anteriores e monta array com valores e dias a serem calculados //aMatRet := U_GetTFFAnt(cTabela,oMdlMat:GetValue("TFH_CONTRT"),oMdlMat:GetValue("TFH_CONREV"),oMdlMat:GetValue("TFH_COD"),dDataDe,dDataAte,aTFHAtu,lEncerra,dDataEncerra) aMatRet := U_GetValTFF(cTabela,oMdlMat,dDataDe,dDataAte,nValPrc,lEncerra,dDataEncerra) //Realiza o calculo conforme as revisões anteriores If Len(aMatRet) > 0 nTotal := U_ValRetr(aMatRet,nPerc) Else U_CeckMult(dDataDe,dDataAte,@nMult) nTotal := nTotal * nMult nTotal := Round(nTotal,TamSX3("TFF_VLPRPA")[2]) EndIf If cProdRet == "1" //U_AplicRet(oMdlMat,oMdlTFJ,cProxParc,nTotal,cTabela) U_AplicRet(oMdlMat,oMdlTFJ,cProxParc,nTotal,cTabela,nValPrc,dDataDe,dDataAte,nPerc,nValRet) EndIf Next nX EndIf Return User Function AplicTGT(cTpItem,cCodItem,cCompet,cCodTFJ,nVal) Local aArea := GetArea() Local cSql := "" Local cAliasAux := GetNextAlias() cSql += " SELECT TGT.TGT_VALOR, TGT.TGT_COMPET FROM " + RetSqlName("TGT") + " TGT " cSql += " WHERE TGT.D_E_L_E_T_ = ' ' AND " cSql += " TGT.TGT_TPITEM = '"+cTpItem+"' AND " cSql += " TGT.TGT_CDITEM = '"+cCodItem+"' " cSql := ChangeQuery(cSql) dbUseArea( .T., "TOPCONN", TCGENQRY(,,cSql),cAliasAux, .F., .T.) While (cAliasAux)->(!EOF()) If Val(Substr((cAliasAux)->TGT_COMPET,1,2)) + Val(Substr((cAliasAux)->TGT_COMPET,4,7)) >= Val(Substr(cCompet,1,2)) + Val(Substr(cCompet,4,7)) lRet := .T. At740IAuto("TFF", cCodItem, (cAliasAux)->TGT_COMPET, (cAliasAux)->TGT_VALOR + nVal, cCodTFJ) EndIf (cAliasAux)->(DbSkip()) EndDo (cAliasAux)->(DbCloseArea()) RestArea(aArea) Return User Function AplicRet(oMdlTFF,oMdlTFJ,cCompet,nTotal,cTabela,nValPrc,dDataDe,dDataAte,nPerc,nValRet) Local lRet := .T. Local cProdRet := "" Local cCodItem := "" Local lCpoTGT := U_ChkCpoTGT() Default cTabela := "TFF" Default nValPrc := 0 Default dDataDe := CTOD('') Default dDataAte := CTOD('') Default nPerc := 0 Default nValRet := 0 If cTabela == "TFF" If !Empty(oMdlTFF:GetValue("TFF_PRDRET")) cProdRet := oMdlTFF:GetValue("TFF_PRDRET") Else cProdRet := oMdlTFJ:GetValue("TFJ_PRDRET") EndIf cCodItem := oMdlTFF:GetValue("TFF_COD") Else cProdRet := oMdlTFJ:GetValue("TFJ_PRDRET") If cTabela == "TFH" cCodItem := oMdlTFF:GetValue("TFH_COD") Else cCodItem := oMdlTFF:GetValue("TFG_COD") EndIf EndIf If nTotal < 0 nTotal := 0 EndIf /* If lCpoTGT If nValRet > 0 nPerc := U_ChkInd(nValPrc,nValRet) nPerc := nPerc * 100 nValRet := nValRet - nValPrc ElseIf nPerc > 0 nValRet := (nValPrc * (nPerc / 100)) EndIf EndIf */ U_ChkRtTGT(cTabela, cCodItem, cCompet, oMdlTFJ:GetValue("TFJ_CODIGO")) At740IExce(cTabela, cCodItem, cCompet, nTotal, oMdlTFJ:GetValue("TFJ_CODIGO"),cProdRet,dDataDe,dDataAte,nPerc,nValRet) Return lRet User Function ChkRtTGT(cTpItem, cCodItem, cCompet, cTFJ_CODIGO) Local cSql := "" Local cAliasAux := GetNextAlias() cSql += " SELECT TGT.R_E_C_N_O_ TGTRECNO FROM " + RetSqlName("TGT") + " TGT " cSql += " WHERE TGT.D_E_L_E_T_ = ' ' AND " cSql += " TGT.TGT_TPITEM = '"+cTpItem+"' AND " cSql += " TGT.TGT_CDITEM = '"+cCodItem+"' AND " cSql += " TGT.TGT_CODTFJ = '"+cTFJ_CODIGO+"' AND " cSql += " TGT.TGT_COMPET = '"+cCompet+"' AND " cSql += " TGT.TGT_EXCEDT = '1' " cSql := ChangeQuery(cSql) dbUseArea( .T., "TOPCONN", TCGENQRY(,,cSql),cAliasAux, .F., .T.) If (cAliasAux)->(!EOF()) TGT->( DbGoTo( (cAliasAux)->TGTRECNO ) ) Reclock("TGT", .F.) TGT->( DbDelete() ) TGT->( MsUnlock() ) (cAliasAux)->(DbSkip()) EndIf (cAliasAux)->(DbCloseArea()) Return User Function MontaTFFAtu(oMdlTFF,dDataDe,dDataAte) Local aItTFF := {} If Day(dDataAte) > 30 dDataAte := dDataAte - 1 EndIf If Day(dDataDe) > 30 dDataDe := dDataDe - 1 EndIf aAdd(aItTFF,{"TFF_COD",oMdlTFF:GetValue("TFF_COD")}) aAdd(aItTFF,{"TFF_QTDVEN",oMdlTFF:GetValue("TFF_QTDVEN")}) aAdd(aItTFF,{"TFF_PRCVEN",oMdlTFF:GetValue("TFF_PRCVEN")}) If oMdlTFF:GetValue("TFF_PERINI") <= dDataDe aAdd(aItTFF,{"TFF_PERINI",dDataDe}) Else aAdd(aItTFF,{"TFF_PERINI",oMdlTFF:GetValue("TFF_PERINI")}) EndIf If oMdlTFF:GetValue("TFF_PERFIM") >= dDataAte aAdd(aItTFF,{"TFF_PERFIM",dDataAte}) Else aAdd(aItTFF,{"TFF_PERFIM",oMdlTFF:GetValue("TFF_PERFIM")}) EndIf Return aItTFF User Function MontaMatAtu(cTabela,oMdlMat,dDataDe,dDataAte) Local aMatAtu := {} If cTabela == "TFG" aAdd(aMatAtu,{"TFG_COD",oMdlMat:GetValue("TFG_COD")}) aAdd(aMatAtu,{"TFG_QTDVEN",oMdlMat:GetValue("TFG_QTDVEN")}) aAdd(aMatAtu,{"TFG_PRCVEN",oMdlMat:GetValue("TFG_PRCVEN")}) aAdd(aMatAtu,{"TFG_PERINI",dDataDe}) aAdd(aMatAtu,{"TFG_PERFIM",dDataAte}) ElseIf cTabela == "TFH" aAdd(aMatAtu,{"TFH_COD",oMdlMat:GetValue("TFH_COD")}) aAdd(aMatAtu,{"TFH_QTDVEN",oMdlMat:GetValue("TFH_QTDVEN")}) aAdd(aMatAtu,{"TFH_PRCVEN",oMdlMat:GetValue("TFH_PRCVEN")}) aAdd(aMatAtu,{"TFH_PERINI",dDataDe}) aAdd(aMatAtu,{"TFH_PERFIM",dDataAte}) EndIf Return aMatAtu //Cria um Array com todas as revisões de um Item com as datas de inicio e fim da revisão User Function GetTFFAnt(cTabela,cContrato,cRevisa,cCodTFF,dDataDe,dDataAte,aTFFAtu,lEncerra,dDataEnce) Local cSql := "" Local aItTFF := {} Local aRevAnt := {} Local aRevAtu := {} Local cAliasAux := GetNextAlias() Local lRevAnt := .F. Local nX := 0 Local nMeses := 0 Local nDias := 0 Local lBuscaRev := !Empty(dDataDe) .And. !Empty(dDataAte) Local aTFFAnt := {} Local dTFFIniBKP := aTFFAtu[4][2] Default lEncerra := .F. Default dDataEnce := CTOD(" / / ") If lBuscaRev cSql += " SELECT CN9_DTREV,CN9_NUMERO,CN9_REVISA,CN9_REVATU FROM " + RetSqlName("CN9") + " CN9 " cSql += " WHERE CN9.D_E_L_E_T_ = ' ' AND " cSql += " CN9.CN9_FILIAL = '" + xFilial("CN9") + "' AND " cSql += " CN9.CN9_NUMERO = '" + cContrato + "' AND " cSql += " CN9.CN9_DTREV >= '" + DtoS(dDataDe) + "' AND " cSql += " CN9.CN9_DTREV <= '" + DtoS(dDataAte) + "' AND " cSql += " CN9.CN9_REVISA <= '" + cRevisa + "' " cSql += " ORDER BY CN9_REVISA " cSql := ChangeQuery(cSql) dbUseArea( .T., "TOPCONN", TCGENQRY(,,cSql),cAliasAux, .F., .T.) While (cAliasAux)->(!EOF()) If (cAliasAux)->CN9_DTREV >= DtoS(dDataDe) .And. !lRevAnt aRevAnt := U_BuscaRevAnt(cTabela,cContrato,cCodTFF,(cAliasAux)->CN9_REVISA,dDataDe,sTod((cAliasAux)->CN9_DTREV)) If Len(aRevAnt) > 0 aAdd(aItTFF,aRevAnt) aRevAnt := {} EndIf aTFFAnt := U_BuscaItAnt(cTabela,cContrato,(cAliasAux)->CN9_REVISA,cCodTFF,dDataDe,sTod((cAliasAux)->CN9_DTREV)) If Len(aTFFAnt) > 0 If sToD((cAliasAux)->CN9_DTREV) > aTFFAnt[4][2] aTFFAnt[4][2] := sToD((cAliasAux)->CN9_DTREV) EndIf aAdd(aItTFF,aTFFAnt) EndIf aTFFAnt := {} lRevAnt := .T. If (cAliasAux)->CN9_REVISA = '001' .And. Empty((cAliasAux)->CN9_REVATU) aTFFAnt := U_GetTFFAtu(cTabela,cContrato,cRevisa,cCodTFF,sTod((cAliasAux)->CN9_DTREV),dDataAte) If Len(aTFFAnt) > 0 aAdd(aItTFF,aTFFAnt) EndIf aTFFAnt := {} EndIf Else If (cAliasAux)->CN9_REVISA == cRevisa If Len(aItTFF) > 0 aItTFF[Len(aItTFF)][5][2] := sToD((cAliasAux)->CN9_DTREV) EndIf If !Empty((cAliasAux)->CN9_DTREV) aTFFAtu[4][2] := sToD((cAliasAux)->CN9_DTREV) EndIf aAdd(aItTFF,aTFFAtu) Else If Len(aItTFF) > 0 aItTFF[Len(aItTFF)][5][2] := sToD((cAliasAux)->CN9_DTREV) EndIf aTFFAnt := U_BuscaItAnt(cTabela,cContrato,(cAliasAux)->CN9_REVISA,cCodTFF,dDataDe,sTod((cAliasAux)->CN9_DTREV)) If Len(aTFFAnt) > 0 aTFFAnt[4][2] := sToD((cAliasAux)->CN9_DTREV) aAdd(aItTFF,aTFFAnt) EndIf aTFFAnt := {} EndIf EndIf (cAliasAux)->(DbSkip()) EndDo (cAliasAux)->(DbCloseArea()) //Caso não tenha nenhuma revisão, o array retorna vazio e o array com os dadados atuais serão criados If Empty(aItTFF) aRevAtu := U_GetTFFAtu(cTabela,cContrato,cRevisa,cCodTFF,dDataDe,dDataAte) If Len(aRevAtu) > 0 aAdd(aItTFF,aRevAtu) aRevAtu := {} EndIf EndIf //Ajusta o array com a data final de reajuste U_AjItTFF(aItTFF,dDataAte,lEncerra,dDataEnce,aTFFAtu[5][2],dTFFIniBKP) //Verifica se algum periodo ficou com a data maior que a data de encerramento da TFF U_ChkDtTFF(aItTFF, aTFFAtu[5][2], dDataAte) //Realiza o calculo para verificar a quantidade de dias e meses serão realizados o calculo For nX := 1 To Len(aItTFF) If aItTFF[nX][4][2] <> aItTFF[nX][5][2] .Or. nX == Len(aItTFF) If aItTFF[nX][5][2] > aItTFF[nX][4][2] If Day(aItTFF[nX][4][2]) > 1 nMeses := DateDiffMonth(aItTFF[nX][4][2],aItTFF[nX][5][2]) - 1 nDias := (30 - Day(aItTFF[nX][4][2])) + 1 If Day(aItTFF[nX][5][2]) == 30 nMeses += 1 Else nDias += Day(aItTFF[nX][5][2]) - 1 EndIf Else nMeses := DateDiffMonth(aItTFF[nX][4][2],aItTFF[nX][5][2]) If Day(aItTFF[nX][5][2]) == 30 nMeses += 1 Else nDias += Day(aItTFF[nX][5][2]) - 1 EndIf EndIf If nDias >= 30 nDias := nDias - 30 nMeses += 1 EndIf Else If nX == Len(aItTFF) .And. aItTFF[nX][5][2] == aItTFF[nX][4][2] nMeses := 0 nDias := 1 Else nMeses := 0 nDias := 0 EndIf EndIf EndIf aAdd(aItTFF[nX],{"MESES",nMeses}) aAdd(aItTFF[nX],{"DIAS",nDias}) nMeses := 0 nDias := 0 Next nX EndIf Return aItTFF //Faz uma busca nas revisoes anteriores User Function BuscaRevAnt(cTabela,cContrato,cCodTFF,cRevAtu,dDataDe,dDataRev) Local cSql := "" Local aItTFF := {} Local cAliasAux := GetNextAlias() cSql += " SELECT CN9_DTREV,CN9_NUMERO,CN9_REVISA,CN9_REVATU FROM " + RetSqlName("CN9") + " CN9 " cSql += " WHERE CN9.D_E_L_E_T_ = ' ' AND " cSql += " CN9.CN9_FILIAL = '" + xFilial("CN9") + "' AND " cSql += " CN9.CN9_NUMERO = '" + cContrato + "' AND " cSql += " CN9.CN9_REVATU = '" + cRevAtu + "' " cSql := ChangeQuery(cSql) dbUseArea( .T., "TOPCONN", TCGENQRY(,,cSql),cAliasAux, .F., .T.) If (cAliasAux)->(!EOF()) If (cAliasAux)->CN9_DTREV < DtoS(dDataDe) aItTFF := U_BuscaItAnt(cTabela,cContrato,(cAliasAux)->CN9_REVISA,cCodTFF,dDataDe,dDataRev,.T.) EndIf (cAliasAux)->(DbSkip()) EndIf (cAliasAux)->(DbCloseArea()) Return aItTFF //Monta o array com as TFF´s de revisões anteriores com os respectivos dados User Function BuscaItAnt(cTabela,cContrato,cRevAtu,cCodTFF,dDataDe,dDataRev,lRevAnt) Local cSql := "" Local cAliasAux := GetNextAlias() Local aItTFF := {} Default lRevAnt := .F. Do Case Case cTabela == "TFF" cSql += " SELECT TFF.TFF_COD, TFF.TFF_CONREV ,TFF.TFF_QTDVEN,TFF.TFF_PRCVEN,TFF.TFF_PERINI,TFF.TFF_PERFIM FROM " + RetSqlName("TFF") + " TFF " cSql += " WHERE TFF.D_E_L_E_T_ = ' ' AND " cSql += " TFF.TFF_FILIAL = '" + xFilial("TFF") + "' AND " cSql += " TFF.TFF_CONTRT = '" + cContrato + "' AND " cSql += " TFF.TFF_CODSUB = '" + cCodTFF + "' " cSql := ChangeQuery(cSql) dbUseArea( .T., "TOPCONN", TCGENQRY(,,cSql),cAliasAux, .F., .T.) If (cAliasAux)->(!EOF()) If (cAliasAux)->TFF_CONREV == cRevAtu aAdd(aItTFF,{"TFF_COD",(cAliasAux)->TFF_COD}) aAdd(aItTFF,{"TFF_QTDVEN",(cAliasAux)->TFF_QTDVEN}) aAdd(aItTFF,{"TFF_PRCVEN",(cAliasAux)->TFF_PRCVEN}) If lRevAnt If (cAliasAux)->TFF_PERINI < dToS(dDataDe) aAdd(aItTFF,{"TFF_PERINI",dDataDe}) Else aAdd(aItTFF,{"TFF_PERINI",sToD((cAliasAux)->TFF_PERINI)}) EndIf If sToD((cAliasAux)->TFF_PERINI) > dDataRev aAdd(aItTFF,{"TFF_PERFIM",sToD((cAliasAux)->TFF_PERINI)}) Else aAdd(aItTFF,{"TFF_PERFIM",dDataRev}) EndIf Else aAdd(aItTFF,{"TFF_PERINI",dDataRev}) aAdd(aItTFF,{"TFF_PERFIM",dDataRev}) EndIf Else aItTFF := U_BuscaItAnt(cTabela,cContrato,cRevAtu,(cAliasAux)->TFF_COD,dDataDe,dDataRev,.T.) EndIf (cAliasAux)->(DbSkip()) EndIf (cAliasAux)->(DbCloseArea()) Case cTabela == "TFH" cSql += " SELECT TFH.TFH_COD, TFH.TFH_CONREV ,TFH.TFH_QTDVEN,TFH.TFH_PRCVEN,TFH.TFH_PERINI,TFH.TFH_PERFIM FROM " + RetSqlName("TFH") + " TFH " cSql += " WHERE TFH.D_E_L_E_T_ = ' ' AND " cSql += " TFH.TFH_FILIAL = '" + xFilial("TFH") + "' AND " cSql += " TFH.TFH_CONTRT = '" + cContrato + "' AND " cSql += " TFH.TFH_CODSUB = '" + cCodTFF + "' " cSql := ChangeQuery(cSql) dbUseArea( .T., "TOPCONN", TCGENQRY(,,cSql),cAliasAux, .F., .T.) If (cAliasAux)->(!EOF()) If (cAliasAux)->TFH_CONREV == cRevAtu aAdd(aItTFF,{"TFH_COD",(cAliasAux)->TFH_COD}) aAdd(aItTFF,{"TFH_QTDVEN",(cAliasAux)->TFH_QTDVEN}) aAdd(aItTFF,{"TFH_PRCVEN",(cAliasAux)->TFH_PRCVEN}) If lRevAnt If (cAliasAux)->TFH_PERINI < dToS(dDataDe) aAdd(aItTFF,{"TFH_PERINI",dDataDe}) Else aAdd(aItTFF,{"TFH_PERINI",sToD((cAliasAux)->TFH_PERINI)}) EndIf aAdd(aItTFF,{"TFH_PERFIM",dDataRev}) Else aAdd(aItTFF,{"TFH_PERINI",dDataRev}) aAdd(aItTFF,{"TFH_PERFIM",dDataRev}) EndIf Else aItTFF := U_BuscaItAnt(cTabela,cContrato,cRevAtu,(cAliasAux)->TFH_COD,dDataDe,dDataRev,.T.) EndIf (cAliasAux)->(DbSkip()) EndIf (cAliasAux)->(DbCloseArea()) Case cTabela == "TFG" cSql += " SELECT TFG.TFG_COD, TFG.TFG_CONREV ,TFG.TFG_QTDVEN,TFG.TFG_PRCVEN,TFG.TFG_PERINI,TFG.TFG_PERFIM FROM " + RetSqlName("TFG") + " TFG " cSql += " WHERE TFG.D_E_L_E_T_ = ' ' AND " cSql += " TFG.TFG_FILIAL = '" + xFilial("TFG") + "' AND " cSql += " TFG.TFG_CONTRT = '" + cContrato + "' AND " cSql += " TFG.TFG_CODSUB = '" + cCodTFF + "' " cSql := ChangeQuery(cSql) dbUseArea( .T., "TOPCONN", TCGENQRY(,,cSql),cAliasAux, .F., .T.) If (cAliasAux)->(!EOF()) If (cAliasAux)->TFG_CONREV == cRevAtu aAdd(aItTFF,{"TFG_COD",(cAliasAux)->TFG_COD}) aAdd(aItTFF,{"TFG_QTDVEN",(cAliasAux)->TFG_QTDVEN}) aAdd(aItTFF,{"TFG_PRCVEN",(cAliasAux)->TFG_PRCVEN}) If lRevAnt If (cAliasAux)->TFG_PERINI < dToS(dDataDe) aAdd(aItTFF,{"TFG_PERINI",dDataDe}) Else aAdd(aItTFF,{"TFG_PERINI",sToD((cAliasAux)->TFG_PERINI)}) EndIf aAdd(aItTFF,{"TFG_PERFIM",dDataRev}) Else aAdd(aItTFF,{"TFG_PERINI",dDataRev}) aAdd(aItTFF,{"TFG_PERFIM",dDataRev}) EndIf Else aItTFF := U_BuscaItAnt(cTabela,cContrato,cRevAtu,(cAliasAux)->TFG_COD,dDataDe,dDataRev,.T.) EndIf (cAliasAux)->(DbSkip()) EndIf (cAliasAux)->(DbCloseArea()) EndCase Return aItTFF //Faz o calculo conforme as datas informadas no array aTFF User Function ValRetr(aTFF,nPerc,nValDiff) Local nRet := 0 Local nX := 0 Local nValor := 0 Local nQtd := 0 For nX := 1 To Len(aTFF) nValor := aTFF[nX][3][2] nQtd := aTFF[nX][2][2] If aTFF[nX][6][2] > 0 nRet += U_CalcMesTFF(nQtd,nValor,nPerc,nValDiff,aTFF[nX][6][2]) EndIf If aTFF[nX][7][2] > 0 nRet += U_CalcDTFF(nQtd,nValor,nPerc,nValDiff,aTFF[nX][7][2]) EndIf Next nX nRet := Round(nRet,TamSX3("TFF_VLPRPA")[2]) Return nRet //Realiza o calculo por mês do reajuste retroativo User Function CalcMesTFF(nQtd,nValor,nPerc,nValDiff,nMes) Local nVal := 0 If nPerc > 0 nVal := (nValor * (nPerc / 100)) * nQtd nVal := nVal * nMes ElseIf nValDiff > 0 nVal := (nValDiff * nMes) * nQtd EndIf Return nVal //Realiza o calculo por dia do reajuste retroativo User Function CalcDTFF(nQtd,nValor,nPerc,nValDiff,nDias) Local nVal := 0 Local nValDias := 0 If nPerc > 0 nValDias := U_CalcValDias(nValor) ElseIf nValDiff > 0 nValDias := U_CalcValDias(nValDiff) EndIf If nPerc > 0 nValDias := nValDias * nQtd nVal := (nValDias * (nPerc / 100)) nVal := nVal * nDias ElseIf nValDiff > 0 nVal := (nValDias * nDias) * nQtd EndIf Return nVal //Retorna o valor diario de um reajuste para calculo User Function CalcValDias(nValor) Return (nValor / 30 ) //Faz o calculo para verificar o periodo que foi informado nos campos Data De e Data Até para realizar os calculos User Function CeckMult(dDataDe,dDataAte,nMult) If !Empty(dDataDe) .And. !Empty(dDataAte) nMult := DateDiffMonth(dDataDe,dDataAte) + 1 EndIf Return //Valida se os campos de data serão preenchidos de forma correta User Function VldDtRet(nPerc,dDataDe,dDataAte) Local lRet := .T. If nPerc > 0 If Empty(dDataDe) MsgAlert("O campo Data de ? está vazio e deve ser preenchido para reajuste retroativo", "Atenção") lRet := .F. EndIf If lRet .And. Empty(dDataAte) MsgAlert("O campo Data Ate ? está vazio e deve ser preenchido para reajuste retroativo", "Atenção") lRet := .F. EndIf If lRet .And. dDataAte < dDataDe MsgAlert("O campo Data Ate ? deve ser maior que o campo Data De ?", "Atenção") lRet := .F. EndIf EndIf Return lRet //Monta o array com as informações da TFF atuais quando não tem revisão criada User Function GetTFFAtu(cTabela,cContrato,cRevAtu,cCodTFF,dDataDe,dDataAte) Local cSql := "" Local cAliasAux := GetNextAlias() Local aItTFF := {} Default lRevAnt := .F. Do Case Case cTabela == "TFF" cSql += " SELECT TFF.TFF_COD, TFF.TFF_CONREV ,TFF.TFF_QTDVEN,TFF.TFF_PRCVEN,TFF.TFF_PERINI,TFF.TFF_PERFIM FROM " + RetSqlName("TFF") + " TFF " cSql += " WHERE TFF.D_E_L_E_T_ = ' ' AND " cSql += " TFF.TFF_FILIAL = '" + xFilial("TFF") + "' AND " cSql += " TFF.TFF_CONTRT = '" + cContrato + "' AND " cSql += " TFF.TFF_COD = '" + cCodTFF + "' " cSql := ChangeQuery(cSql) dbUseArea( .T., "TOPCONN", TCGENQRY(,,cSql),cAliasAux, .F., .T.) If (cAliasAux)->(!EOF()) If (cAliasAux)->TFF_CONREV == cRevAtu aAdd(aItTFF,{"TFF_COD",(cAliasAux)->TFF_COD}) aAdd(aItTFF,{"TFF_QTDVEN",(cAliasAux)->TFF_QTDVEN}) aAdd(aItTFF,{"TFF_PRCVEN",(cAliasAux)->TFF_PRCVEN}) If (cAliasAux)->TFF_PERINI < dToS(dDataDe) aAdd(aItTFF,{"TFF_PERINI",dDataDe}) Else aAdd(aItTFF,{"TFF_PERINI",sToD((cAliasAux)->TFF_PERINI)}) EndIf aAdd(aItTFF,{"TFF_PERFIM",dDataAte}) EndIf (cAliasAux)->(DbSkip()) EndIf (cAliasAux)->(DbCloseArea()) Case cTabela == "TFH" cSql += " SELECT TFH.TFH_COD, TFH.TFH_CONREV ,TFH.TFH_QTDVEN,TFH.TFH_PRCVEN,TFH.TFH_PERINI,TFH.TFH_PERFIM FROM " + RetSqlName("TFH") + " TFH " cSql += " WHERE TFH.D_E_L_E_T_ = ' ' AND " cSql += " TFH.TFH_FILIAL = '" + xFilial("TFH") + "' AND " cSql += " TFH.TFH_CONTRT = '" + cContrato + "' AND " cSql += " TFH.TFH_COD = '" + cCodTFF + "' " cSql := ChangeQuery(cSql) dbUseArea( .T., "TOPCONN", TCGENQRY(,,cSql),cAliasAux, .F., .T.) If (cAliasAux)->(!EOF()) If (cAliasAux)->TFH_CONREV == cRevAtu aAdd(aItTFF,{"TFH_COD",(cAliasAux)->TFH_COD}) aAdd(aItTFF,{"TFH_QTDVEN",(cAliasAux)->TFH_QTDVEN}) aAdd(aItTFF,{"TFH_PRCVEN",(cAliasAux)->TFH_PRCVEN}) If (cAliasAux)->TFH_PERINI < dToS(dDataDe) aAdd(aItTFF,{"TFH_PERINI",dDataDe}) Else aAdd(aItTFF,{"TFH_PERINI",sToD((cAliasAux)->TFH_PERINI)}) EndIf aAdd(aItTFF,{"TFH_PERFIM",dDataAte}) EndIf (cAliasAux)->(DbSkip()) EndIf (cAliasAux)->(DbCloseArea()) Case cTabela == "TFG" cSql += " SELECT TFG.TFG_COD, TFG.TFG_CONREV ,TFG.TFG_QTDVEN,TFG.TFG_PRCVEN,TFG.TFG_PERINI,TFG.TFG_PERFIM FROM " + RetSqlName("TFG") + " TFG " cSql += " WHERE TFG.D_E_L_E_T_ = ' ' AND " cSql += " TFG.TFG_FILIAL = '" + xFilial("TFG") + "' AND " cSql += " TFG.TFG_CONTRT = '" + cContrato + "' AND " cSql += " TFG.TFG_COD = '" + cCodTFF + "' " cSql := ChangeQuery(cSql) dbUseArea( .T., "TOPCONN", TCGENQRY(,,cSql),cAliasAux, .F., .T.) If (cAliasAux)->(!EOF()) If (cAliasAux)->TFG_CONREV == cRevAtu aAdd(aItTFF,{"TFG_COD",(cAliasAux)->TFG_COD}) aAdd(aItTFF,{"TFG_QTDVEN",(cAliasAux)->TFG_QTDVEN}) aAdd(aItTFF,{"TFG_PRCVEN",(cAliasAux)->TFG_PRCVEN}) If (cAliasAux)->TFG_PERINI < dToS(dDataDe) aAdd(aItTFF,{"TFG_PERINI",dDataDe}) Else aAdd(aItTFF,{"TFG_PERINI",sToD((cAliasAux)->TFG_PERINI)}) EndIf aAdd(aItTFF,{"TFG_PERFIM",dDataAte}) EndIf (cAliasAux)->(DbSkip()) EndIf (cAliasAux)->(DbCloseArea()) EndCase Return aItTFF //Ajusta a Data final no Array User Function AjItTFF(aItTFF,dDataAte,lEncerra,dDataEncerra,dDtFim, dDtIni) Local nPos := Len(aItTFF) If nPos > 0 If lEncerra If dDataAte > dDataEncerra aItTFF[nPos][5][2] := dDataEncerra ElseIf dDataAte < dDataEncerra aItTFF[nPos][5][2] := dDataAte EndIf Else If dDtFim >= dDataAte aItTFF[nPos][5][2] := dDataAte ElseIf dDtFim <= dDataAte aItTFF[nPos][5][2] := dDtFim EndIf If dDtIni >= aItTFF[nPos][4][2] aItTFF[nPos][4][2] := dDtIni EndIf EndIf EndIf Return aItTFF User Function ChkDtTFF(aItTFF, dDtfimTFF, dDataAte) Local nPos := Len(aItTFF) Local nX := 0 Local dDtIniRev Local dDtFimRev If nPos > 0 For nX := 1 To nPos If dDataAte <= dDtfimTFF If aItTFF[nX][5][2] < aItTFF[nX][4][2] dDtIniRev := aItTFF[nX][4][2] dDtFimRev := aItTFF[nX][5][2] If nX > 1 .And. (nX + 1) <= nPos aItTFF[nX-1][5][2] := aItTFF[nX][5][2] aItTFF[nX+1][4][2] := aItTFF[nX][4][2] aItTFF[nX][4][2] := dDtFimRev aItTFF[nX][5][2] := dDtIniRev EndIf EndIf Else If aItTFF[nX][5][2] > dDtfimTFF aItTFF[nX][5][2] := dDtfimTFF EndIf EndIf Next nX EndIf Return aItTFF //Coloca a cor azul no botão Aplicar User Function ColorAplic() Local cCssCor := "QPushButton{margin-top:1px; border-color:#1F739E; font:bold; border-radius:2px; background-color:#1F739E; color:#ffffff; border-style: outset; border-width:1px; }" Return (cCssCor) //Valida se os campos de Valor ou Percentual estão preenchidos User Function VldCpoRe(nValid,nValor,cCampo) Local lRet := .T. If nValor > 0 .And. nValid > 0 lRet := .F. MsgAlert("O campo " + cCampo + " não pode ser preenchido!") EndIf Return lRet //Valida os campos quando utiliza o processo de Valor e não Percentual User Function VldOpc(nValor,lValid,cCampo,cValCpo) Local lRet := .T. If nValor > 0 .And. lValid .And. Alltrim(SubStr(cValCpo,1,1)) == "1" lRet := .F. MsgAlert("O Campo " + cCampo + " não pode ser configurado com o valor " + cValCpo + " quando utilizar o campo Novo Valor (R$) " ) EndIf Return lRet User Function ChkCpoTGT() Return TGT->( ColumnPos('TGT_DTINI') ) > 0 .AND. TGT->( ColumnPos('TGT_DTFIM') ) > 0 .AND. TGT->( ColumnPos('TGT_INDICE') ) > 0 .AND. TGT->( ColumnPos('TGT_VALREA') > 0 ) User Function ChkInd(nValPrc,nValRet) Local nInd := 0 Local nDif := 0 nDif := nValRet - nValPrc nInd := nDif / nValPrc nInd := Round(nInd,TamSX3("TGT_INDICE")[2]) Return nInd //Faz o calculo para retornar o valor de reajuste de cada mês User Function ValRetMes(aTFF,nMes,nIndice,nValDiff) Local aValores := {} Local nX := 0 Local nQtd := 0 Local nRet := 0 Local nRetDias := 0 Local nValDias := 0 Local nDias := 0 Local nValBkp := nValDiff For nX := 1 To Len(aTFF) nValDiff := nValBkp If aTFF[nX][6][2] <> 0 .Or. aTFF[nX][7][2] <> 0 nQtd := aTFF[nX][2][2] If Month(aTFF[nX][4][2]) < nMes .And. Month(aTFF[nX][5][2]) > nMes If nValDiff > 0 nValdiff := nValDiff - aTFF[nX][3][2] nRet := (nValDiff * 1) * nQtd ElseIf nIndice > 0 nRet := (aTFF[nX][3][2] * (nIndice / 100)) * nQtd nRet := nRet * 1 EndIf Else If Month(aTFF[nX][4][2]) == nMes If Month(aTFF[nX][4][2]) == nMes .And. Month(aTFF[nX][5][2]) == nMes If nValDiff > 0 nValDiff := nValDiff - aTFF[nX][3][2] nValDias := U_CalcValDias(nValDiff) nDias := 30 nRetDias += (nValDias * nDias) * nQtd ElseIf nIndice > 0 nValDias := U_CalcValDias(aTFF[nX][3][2]) nValDias := (nValDias * (nIndice / 100)) nDias := 30 nRetDias += (nValDias * nDias) * nQtd EndIf ElseIf Day(aTFF[nX][4][2]) > 1 If nValDiff > 0 nValDiff := nValDiff - aTFF[nX][3][2] nValDias := U_CalcValDias(nValDiff) nDias := (30 - Day(aTFF[nX][4][2])) + 1 nRetDias += (nValDias * nDias) * nQtd Else nValDias := U_CalcValDias(aTFF[nX][3][2]) nValDias := (nValDias * (nIndice / 100)) nDias := (30 - Day(aTFF[nX][4][2])) + 1 nRetDias += (nValDias * nDias) * nQtd EndIf Else If nValDiff > 0 nValDiff := nValDiff - aTFF[nX][3][2] nRet := (nValDiff * 1) * nQtd ElseIf nIndice > 0 nRet := (aTFF[nX][3][2] * (nIndice / 100)) * nQtd nRet := nRet * 1 EndIf EndIf ElseIf Month(aTFF[nX][5][2]) == nMes .And. Day(aTFF[nX][5][2]) > 1 If Day(aTFF[nX][5][2]) < 30 If nValDiff > 0 nValDiff := nValDiff - aTFF[nX][3][2] nValDias := U_CalcValDias(nValDiff) If Day(aTFF[nX][5][2]) == 1 nDias := Day(aTFF[nX][5][2]) Else nDias := Day(aTFF[nX][5][2]) - 1 EndIf nRetDias += (nValDias * nDias) * nQtd ElseIf nIndice > 0 nValDias := U_CalcValDias(aTFF[nX][3][2]) nValDias := (nValDias * (nIndice / 100)) nDias := Day(aTFF[nX][5][2]) nRetDias += (nValDias * nDias) * nQtd EndIf Else If nValDiff > 0 nValdiff := nValDiff - aTFF[nX][3][2] nRet := (nValDiff * 1) * nQtd ElseIf nIndice > 0 nRet := (aTFF[nX][3][2] * (nIndice / 100)) * nQtd nRet := nRet * 1 EndIf EndIf EndIf EndIf EndIf Next nX If nRetDias > 0 nRet := Round(nRetDias,TamSX3("TFF_VLPRPA")[2]) Else nRet := Round(nRet,TamSX3("TFF_VLPRPA")[2]) EndIf aAdd(aValores,{ MesExtenso(nMes),nRet}) Return aValores User Function GetValTFF(cTable,oModel,dDataDe,dDataAte,nValor,lEncerra,dDataEnce) Local aItTFF := {} Local aItens := {} Local dIniAux := CTOD(" / / ") Local dFimAux := CTOD(" / / ") aAdd(aItTFF,{cTable+'_COD',oModel:GetValue(cTable+'_COD')}) aAdd(aItTFF,{cTable+'_QTDVEN',oModel:GetValue(cTable+'_QTDVEN')}) aAdd(aItTFF,{cTable+'_PRCVEN',nValor}) If oModel:GetValue(cTable+'_PERINI') <= dDataDe aAdd(aItTFF,{cTable+'_PERINI',dDataDe}) Else If Day(oModel:GetValue(cTable+'_PERINI')) > 30 dIniAux := oModel:GetValue(cTable+'_PERINI') - 1 Else dIniAux := oModel:GetValue(cTable+'_PERINI') EndIf aAdd(aItTFF,{cTable+'_PERINI',dIniAux}) EndIf If !lEncerra If oModel:GetValue(cTable+'_PERFIM') >= dDataAte aAdd(aItTFF,{cTable+'_PERFIM',dDataAte}) Else If Day(oModel:GetValue(cTable+'_PERFIM')) > 30 dFimAux := oModel:GetValue(cTable+'_PERFIM') - 1 Else dFimAux := oModel:GetValue(cTable+'_PERFIM') EndIf aAdd(aItTFF,{cTable+'_PERFIM',dFimAux}) EndIf Else If dDataEnce > dDataAte aAdd(aItTFF,{cTable+'_PERFIM',dDataAte}) Else If Day(dDataEnce) > 30 dFimAux := dDataEnce - 1 Else dFimAux := dDataEnce EndIf aAdd(aItTFF,{cTable+'_PERFIM',dFimAux}) EndIf EndIf aAdd(aItens,aItTFF) //Ajusta os itens para realizar o calculo dos dias U_GetDtItens(@aItens) Return aItens User Function GetDtItens(aItTFF) Local nX := 0 Local nMeses := 0 Local nDias := 0 //Realiza o calculo para verificar a quantidade de dias e meses serão realizados o calculo For nX := 1 To Len(aItTFF) If aItTFF[nX][4][2] <> aItTFF[nX][5][2] .Or. nX == Len(aItTFF) If aItTFF[nX][5][2] > aItTFF[nX][4][2] If Day(aItTFF[nX][4][2]) > 1 nMeses := DateDiffMonth(aItTFF[nX][4][2],aItTFF[nX][5][2]) - 1 nDias := (30 - Day(aItTFF[nX][4][2])) + 1 If Day(aItTFF[nX][5][2]) == 30 nMeses += 1 Else nDias += Day(aItTFF[nX][5][2]) EndIf Else nMeses := DateDiffMonth(aItTFF[nX][4][2],aItTFF[nX][5][2]) If Day(aItTFF[nX][5][2]) == 30 nMeses += 1 Else //Verifica se é fevereiro e é o ultimo dia do mês If Month(aItTFF[nX][5][2]) == 2 .And. (Day(aItTFF[1][5][2]) == 28 .Or. Day(aItTFF[1][5][2]) == 29) nMeses += 1 Else nDias += Day(aItTFF[nX][5][2]) EndIf EndIf EndIf If nDias >= 30 nDias := nDias - 30 nMeses += 1 EndIf Else If nX == Len(aItTFF) .And. aItTFF[nX][5][2] == aItTFF[nX][4][2] nMeses := 0 nDias := 1 Else nMeses := 0 nDias := 0 EndIf EndIf EndIf aAdd(aItTFF[nX],{"MESES",nMeses}) aAdd(aItTFF[nX],{"DIAS",nDias}) nMeses := 0 nDias := 0 Next nX Return aItTFF //Pega os valores e dias para realizar o calculo do valor retrotivo por mês, utilizado no relatorio TECR871 User Function GetDtTFF(cTable,nInd,cChave,cContr,dDataDe,dDataAte,lEncerra,dDataEnce) Local aItTFF := {} Local aItens := {} Local dIniAux := CTOD(" / / ") Local dFimAux := CTOD(" / / ") DbSelectArea(cTable) (cTable)->(DbSetOrder(nInd)) If (cTable)->(MsSeek(cChave)) aAdd(aItTFF,{cTable+'_COD',(&("(cTable)->" + cTable+'_COD'))}) aAdd(aItTFF,{cTable+'_QTDVEN',(&("(cTable)->" + cTable+'_QTDVEN'))}) aAdd(aItTFF,{cTable+'_PRCVEN',U_ValOriTFF((&("(cTable)->" + cTable+'_FILIAL')),(&("(cTable)->" + cTable+'_COD')),cContr,cTable,cTable+'_PRCVEN')}) If (&("(cTable)->" + cTable+'_PERINI')) <= dDataDe aAdd(aItTFF,{cTable+'_PERINI',dDataDe}) Else If Day((&("(cTable)->" + cTable+'_PERINI'))) > 30 dIniAux := (&("(cTable)->" oMdlMat:GetValue("TFG_TXADM")) EndIf+ cTable+'_PERINI')) - 1 Else nValPrxMIdIniAux := oMdlMat:GetValue("TFG_VLPRPA"(&("(cTable)->" + cTable+'_PERINI')) EndIf nValPrc := oMdlMat:GetValue("TFG_PRCVEN"aAdd(aItTFF,{cTable+'_PERINI',dIniAux}) EndIf nTotal := (nValPrc + (nValPrc * (nPerc / 100))) If nPerc > 0If !lEncerra If (&("(cTable)->" + cTable+'_PERFIM')) >= dDataAte oMdlMat:SetValue("TFG_PRCVEN", nTotal) aAdd(aItTFF,{cTable+'_PERFIM',dDataAte}) Else EndIf If nPerc == 0 .AND. lAplicRea If Day((&("(cTable)->" + cTable+'_PERFIM'))) > 30 nTotal := 0 dFimAux Else := (&("(cTable)->" + cTable+'_PERFIM')) - 1 nTotal := (nValPrc * (nPerc / 100)) * oMdlMat:GetValue("TFG_QTDVEN") Else EndIf nTotaldFimAux := Round(nTotal,TamSX3("TFG_VLPRPA")[2]) (&("(cTable)->" + cTable+'_PERFIM')) If cCronogEndIf == '1' At740IAutoaAdd("TFG", oMdlMat:GetValue("TFG_COD"), cProxParc, nValPrxMI + nTotal, cTFJCOD) aItTFF,{cTable+'_PERFIM',dFimAux}) EndIf Else If dDataEnce > dDataAte oMdlMat:SetValue("TFG_VLPRPA",nValPrxMI + nTotal) EndIfaAdd(aItTFF,{cTable+'_PERFIM',dDataAte}) Next nX Else ElseIf cTabela == "TFH" For nX := 1 ToIf oMdlMat:LengthDay(dDataEnce) > 30 If cCronog == '1' dFimAux := dDataEnce If !(TecHasTGT("TFH",oMdlMat:GetValue("TFH_COD"),cProxParc,cTFJCOD,@nValPrxMC))- 1 Else nValPrxMC := At740PrxPa(/*cTipo*/,; dFimAux := dDataEnce oMdlMat:GetValue("TFH_QTDVEN"),; EndIf oMdlMat:GetValue("TFH_PRCVEN"),; aAdd(aItTFF,{cTable+'_PERFIM',dFimAux}) EndIf EndIf oMdlMat:GetValue("TFH_DESCON"),;aAdd(aItens,aItTFF) //Ajusta os itens para realizar o calculo dos dias U_GetDtItens(@aItens) EndIf oMdlMat:GetValue("TFH_TXLUCR"),; Return aItens //Pega o valor original da TFF antes do reajuste User Function ValOriTFF(cFilIt,cCodIt,cContr,cTabela,cCampo) Local cSql := oMdlMat:GetValue("TFH_TXADM")) "" Local cFields := "" Local cFrom := "" Local nValor := 0 Local cAliasIt EndIf := GetNextAlias() If cTabela == "TFF" Else cFields := "TFF.TFF_FILIAL,TFF.TFF_PRCVEN " nValPrxMCcSql :+= oMdlMat:GetValue("TFH_VLPRPA") EndIf nValPrc := oMdlMat:GetValue("TFH_PRCVEN")" TFF.D_E_L_E_T_ = ' ' AND " cSql += " TFF.TFF_FILIAL = '" + cFilIt + "' AND " cSql += nTotal := (nValPrc" TFF.TFF_CONTRT = '" + (nValPrccContr *+ (nPerc"' / 100)))AND " cSql += " TFF.TFF_CODSUB If= nPerc'" >+ 0 cCodIt + "' " ElseIf cTabela == "TFG" cFields oMdlMat:SetValue("TFH_PRCVEN", nTotal):= "TFG.TFG_FILIAL,TFG.TFG_PRCVEN " cSql += " EndIf TFG.D_E_L_E_T_ = ' ' AND " IfcSql nPerc +== 0" .AND. lAplicRea TFG.TFG_FILIAL = '" + cFilIt + "' AND " nTotalcSql :+= 0 Else " TFG.TFG_CONTRT = '" + cContr + "' AND " cSql += " TFG.TFG_CODSUB = '" + cCodIt nTotal+ := (nValPrc * (nPerc / 100)) * oMdlMat:GetValue("TFH_QTDVEN")"' " ElseIf cTabela == "TFH" cFields := EndIf "TFH.TFH_FILIAL,TFH.TFH_PRCVEN " 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 cSql += " TFH.D_E_L_E_T_ = ' ' AND " cSql += " TFH.TFH_FILIAL = '" + cFilIt + "' AND " cSql += " TFH.TFH_CONTRT = '" + cContr + "' AND " cSql += " TFH.TFH_CODSUB = '" + cCodIt + "' " EndIf cFields := "%" + cFields + "%" cFrom := "%" + RetSqlName(cTabela) + " " + cTabela + "%" cSql := "%"+cSql+"%" BeginSql Alias cAliasIt SELECT %Exp:cFields% FROM %Exp:cFrom% WHERE %exp:cSql% EndSql If (cAliasIt)->(!Eof()) nValor := (cAliasIt)->&(cCampo) Endif (cAliasIt)->(DbCloseArea()) Return nValor |
04. DEMAIS INFORMAÇÕES
DSERSGS-10241 DT Criação de gatilho para preenchimento de valor pro-rata
DSERSGS-10968 DT Gatilho de pro-rata para o campo Dt.Fim
DT PE AT870Ant Antecipação do Contrato
DSERSGS-12603 DT Gatilho Escala x Hora Extra Planejada
DSERSGS-10243 DT Inclusão de gatilho para recuperar valor de hora extra
5. ASSUNTOS RELACIONADOS
- Não há.
...
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas