| Produto: | |
|---|---|
| Linha de Produto: | |
| Segmento: | |
| Módulo: | Prestadores de Serviço |
| Função: | ModVlPr |
| País: | Brasil |
| Ticket: | Não há. |
| Requisito/Story/Issue (informe o requisito relacionado) : | DSERSGS-10679 |
Necessidade da documentação do ModVlPr (Reajuste Retroativo).
O Reajuste Retroativo tem como objetivo ajustar os cálculos da próxima parcela e o preço de venda dos itens de um contrato.
Está funcionalidade está disponível apenas para contratos recorrentes. |
Informações do contrato:


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


Percentual = 10%
Multiplicador = 2
O cálculo é feito da seguinte forma:
Cálculo: (1.000 + ((1.000 * (10 / 100)) * 2))
TFF_VLPRPA = 1.200
Cálculo: (10.000 + ((10.000 * (10 / 100))))
TFF_PRCVEN = 11.000
Os campos Função e Escala são filtros utilizados para a aplicação do reajuste, caso nenhum deles forem informados, todos os itens de RH serão reajustados. A opção "Em todos os locais" indica se o cálculo deve ser feito para todos os locais com suas TFF´s |
#INCLUDE 'PROTHEUS.CH'
User function a740GrdV()
Local oView := PARAMIXB[1] //Viewdef
If !isBlind() .AND. VALTYPE(oView) == 'O' .AND. isInCallStack("At870PRev")
oView:AddUserButton("Reajuste Retroativo","",{|oView| U_RRetroat(oView)},,,)
EndIf
Return
User Function RRetroat(oView)
Local oModel
Local oMdlTFJ
Local oDlgSelect
Local cFuncao := SPACE(TamSx3("TFF_FUNCAO")[1])
Local nPerc := 0
Local nMult := 0
Local cTodosLoc := "2"
Local aOpcs := {"2 - Não","1 - Sim"}
If VALTYPE(oView) == 'O' .AND. VALTYPE(oModel := oView:GetModel()) == 'O'
oMdlTFJ := oModel:GetModel("TFJ_REFER")
If oMdlTFJ:GetValue("TFJ_CNTREC") == '1'
DEFINE MSDIALOG oDlgSelect FROM 0,0 TO 202,280 PIXEL TITLE "Reajuste Retroativo"
@ 5, 9 SAY "Função" SIZE 30, 30 PIXEL
oGetSRA := TGet():New( 015, 009, { | u | If(PCount() > 0, cFuncao := u, cFuncao) },oDlgSelect, ;
060, 010, "!@",{ || .T.}, 0, 16777215,,.F.,,.T.,,.F.,;
,.F.,.F.,{|| .T.},.F.,.F. ,,"cFuncao",,,,.T. )
oGetSRA:cF3 := 'SRJ'
@ 30, 9 SAY "Percentual (%)" SIZE 50, 30 PIXEL
oDataDe := TGet():New( 40, 009, { | u | If( PCount() == 0, nPerc, nPerc := u ) },oDlgSelect, ;
060, 010, "@E 99.99",, 0, 16777215,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F. ,,"nPerc",,,,.T.)
@ 30, 77 SAY "Multiplicador" SIZE 50, 30 PIXEL
oDataAte := TGet():New( 40, 077, { | u | If( PCount() == 0, nMult, nMult := u ) },oDlgSelect, ;
060, 010, "@E 99.99",, 0, 16777215,,.F.,,.T.,,.F.,,.F.,.F.,,.F.,.F. ,,"nMult",,,,.T.)
@ 64, 9 SAY "Em todos os Locais?" SIZE 80, 30 PIXEL
oCombo := TComboBox():New(63,70,{|u|if(PCount()>0,cTodosLoc:=u,cTodosLoc)},;
aOpcs,40,10,oDlgSelect,,,,,,.T.,,,,,,,,,'cTodosLoc')
oRefresh := TButton():New( 84, 010, "Aplicar",oDlgSelect,{|| U_AplicVl(oModel, cFuncao , nPerc, nMult, LEFT(cTodosLoc,1)) , oDlgSelect:End()}, 50,10,,,.F.,.T.,.F.,,.F.,,,.F. )
oExit := TButton():New( 84 , 095, "Sair",oDlgSelect,{|| oDlgSelect:End() }, 30,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)
Local lAllLoc := cTodosLoc == '1'
Local oMdlTFL := oModel:GetModel("TFL_LOC")
Local oMdlTFF := oModel:GetModel("TFF_RH")
Local nX
Local nY
Local cLog := ""
Local aSaveRows := FwSaveRows()
Local nTotal := 0
Local nGrandTot := 0
Local nVal := 0
Local nValPrc := 0
For nX := 1 To oMdlTFL:Length()
If lAllLoc
oMdlTFL:GoLine(nX)
EndIf
For nY := 1 To oMdlTFF:Length()
oMdlTFF:GoLine(nY)
If oMdlTFF:GetValue("TFF_FUNCAO") == cFuncao .AND. oMdlTFF:GetValue("TFF_COBCTR") != '2'
cLog += "Local: " + Alltrim(POSICIONE("ABS",1,xFilial("ABS") + oMdlTFL:GetValue("TFL_LOCAL"), "ABS_DESCRI")) + Chr(13) + Chr(10)
cLog += " - RH: " + oMdlTFF:GetValue("TFF_COD") + Chr(13) + Chr(10)
cLog += " - Função: " + Alltrim(POSICIONE("SRJ",1,xFilial("SRJ") + oMdlTFF:GetValue("TFF_FUNCAO"), "RJ_DESC")) + Chr(13) + Chr(10)
cLog += " - Produto: " + Alltrim(Posicione("SB1",1,xFilial("SB1") + oMdlTFF:GetValue("TFF_PRODUT"), "B1_DESC")) + Chr(13) + Chr(10)
cLog += " - Valor Antigo (prox. parcela): R$ " + Alltrim(TRANSFORM( oMdlTFF:GetValue("TFF_VLPRPA") , "@e 999,999,999.99" )) + Chr(13) + Chr(10)
nTotal := ROUND( (oMdlTFF:GetValue("TFF_VLPRPA") * (nPerc / 100)) * nMult , TamSX3("TFF_VLPRPA")[2] )
nGrandTot += nTotal
cLog += " - Valor Novo (prox. parcela): R$ " + Alltrim(TRANSFORM((oMdlTFF:GetValue("TFF_VLPRPA") + nTotal), "@e 999,999,999.99" )) +;
" ( + R$ " + Alltrim(TRANSFORM(nTotal, "@e 999,999,999.99" )) + " )" + Chr(13) + Chr(10)
cLog += Chr(13) + Chr(10)
EndIf
Next nY
cLog += REPLICATE("-",10)
cLog += Chr(13) + Chr(10)
If !lAllLoc
Exit
EndIf
Next nX
cLog += REPLICATE("-",15)
cLog += Chr(13) + Chr(10)
cLog += "Valor adicional prox. parcela: R$ " + Alltrim(TRANSFORM(nGrandTot, "@e 999,999,999.99" ))
AtShowLog(cLog,"Prévia de Valores",/*lVScroll*/,/*lHScroll*/,/*lWrdWrap*/,.F.)
If MsgYesNo("Aplicar valores calculados?")
For nX := 1 To oMdlTFL:Length()
If lAllLoc
oMdlTFL:GoLine(nX)
EndIf
For nY := 1 To oMdlTFF:Length()
oMdlTFF:GoLine(nY)
If oMdlTFF:GetValue("TFF_FUNCAO") == cFuncao .AND. oMdlTFF:GetValue("TFF_COBCTR") != '2'
nVal := oMdlTFF:GetValue("TFF_VLPRPA")
nValPrc := oMdlTFF:GetValue("TFF_PRCVEN")
oMdlTFF:SetValue("TFF_PRCVEN",;
ROUND((nValPrc + (nValPrc * (nPerc / 100))),;
TamSX3("TFF_PRCVEN")[2]))
oMdlTFF:SetValue("TFF_VLPRPA",;
ROUND((nVal + ((nVal * (nPerc / 100)) * nMult)),;
TamSX3("TFF_VLPRPA")[2]))
EndIf
Next nY
If !lAllLoc
Exit
EndIf
Next nX
EndIf
FwRestRows( aSaveRows )
Return
|
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
<style>
div.theme-default .ia-splitter #main {
margin-left: 0px;
}
.ia-fixed-sidebar, .ia-splitter-left {
display: none;
}
#main {
padding-left: 10px;
padding-right: 10px;
overflow-x: hidden;
}
.aui-header-primary .aui-nav, .aui-page-panel {
margin-left: 0px !important;
}
.aui-header-primary .aui-nav {
margin-left: 0px !important;
}
.aui-tabs.horizontal-tabs>.tabs-menu>.menu-item.active-tab a::after {
background: #FF9900; !important
}
.menu-item.active-tab {
border-bottom: none !important;
}
</style>
|