Árvore de páginas

Versões comparadas

Chave

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


01. DADOS GERAIS

Produto:

Solucoes_totvs
SolucaoTOTVS Prestadores de Serviços Terceirização
Solucoes_totvs_cross
SolucaoCross
Solucoes_totvs_parceiros
SolucaoParceiros
Solucoes_totvs_parceirosexptotvs
SolucaoParcsExpsTOTVS

Linha de Produto:

Linhas_totvs
LinhaLinha Protheus

Segmento:

Segmentos_totvs
SegmentoServiços

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


02. SITUAÇÃO/REQUISITO

Necessidade da documentação do ModVlPr (Reajuste Retroativo).

03. SOLUÇÃO

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.

...

Aviso
titleDemais informações

O cálculo só será feito para as funções da TFF que forem as mesmas do inserido na tela de reajuste retroativo.

A opção "Em todos os locais" indica se o cálculo deve ser feito para todos os locais com suas TFF´s

...

Bloco de código
titleImplementação
#INCLUDE 

...

'PROTHEUS.CH'

...



User function a740GrdV()
Local oView  :=   PARAMIXB[1]

...

 //Viewdef

...



If !isBlind()

...

 .AND.

...

 VALTYPE(oView)

...

 ==

...

 'O'

...

 .AND.

...

 isInCallStack("At870PRev")

...


    oView:AddUserButton("

...

Reajuste Retroativo","",{|oView|

...

 U_RRetroat(oView)},,,)

...


EndIf

...


Return

User Function RRetroat(oView)
Local oModel
Local oMdlTFJ
Local oDlgSelect
Local cFuncao := SPACE(TamSx3("TFF_FUNCAO")[1])

...


Local 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


04. DEMAIS INFORMAÇÕES


     Não há


5. ASSUNTOS RELACIONADOS

  • Não há.



HTML
<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>