Page tree

LJ7107 - Permite a customização de proposição de valor e porcentagem de desconto para serem carregados ao se clicar no botão "Desconto no Total".

Descrição:

Disponibilizar P.E para atuar na proposição de valor e porcentagem de desconto para serem carregados ao se clicar no botão "Desconto no Total".

Eventos:

O ponto de entrada é executado assim que acionada a rotina de Desconto no Total(CRTL +B), tanto na tela de venda assistida e venda direta, dando a opção de calculo do percentual e valor de desconto que sera carregado para a tela de Desconto no Total.

Programa Fonte:LOJA701A.PRW

Parâmetros:

NomeTipoDescrição
ParamIxb[1]Numerico
Dado numérico, contendo o valor total de Mercadorias.
ParamIxb[2]Array
Dado do tipo Array contendo todas as parcelas da venda, já com a condição de pagamento aplicada e possíveis valores de acréscimo ou desconto, auxiliando assim na extração se necessário do valor total da Venda.
ParamIxb[3]Array
Dado do tipo Array, contendo o valor e percentual de desconto já aplicado na venda anteriormente.
Retorno:
NomeTipoDescrição
aRetArray

Array de duas posições, contendo na primeira posição o percentual de desconto e na segunda posição o valor do desconto, a serem assumidos ta tela de "Desconto no Total"(CTRL + B), podendo ainda ser alterados conforme desejo do usuário.

Obs: O percentual do desconto referente a primeira posição do retorno é obrigatória, pois o valor do desconto é calculado posteriormente conforme o percentual. Sendo assim a segunda posição do retorno referente ao valor de desconto, auxiliara internamente no ponto de entrada para a definição do valor de desconto desejado.

Exemplo:

#INCLUDE "TOTVS.CH"

User Function LJ7107()

Local aArea          := GetArea()
Local nTotMerc     := Paramixb[1] //Total de Mercadorias
Local aArrayPgts  := Paramixb[2] //Array de pagamentos da venda SL4
Local aArrayDesc := Paramixb[3] //Array de variavel aDesconto, contendo os descontos aplicados
Local nTotVend    := 0 //Total da venda + Acrescimo
Local cCondAcr    := Posicione("SE4",1,xFilial("SE4")+M->LQ_CONDPG,"E4_ACRSFIN") //Acrescimo Financeiro da condição de pagamento
Local cPerg          := "Venda já possui acréscimo financeiro, deseja utilizar desconto para arredondar valor?"
Local cTitulo         := "Venda já possui acréscimo financeiro."
Local cTitTela       := "Defina o valor total da venda desejado"
Local oDlg, oButton1
Local nValAlvo      := 0
Local nFator          := 0
Local nNewTotMe := 0
Local nValNewDes := 0
Local nTotMerAcr   := 0
Local nNewTotPar  := 0
Local nNewPerDes := 0
Local aRet               := {0 , 0}

          aEval( aArrayPgts, {|x| nTotVend += x[2]} ) //Guardo o total da venda

          If aArrayDesc[2] == 0 .And. cCondAcr > 0 .And. !( cCondAcr > 0 .And. (nTotVend < nTotMerc) ) .And. MSGYESNO(cPerg, cTitulo )

                DEFINE MSDIALOG oDlg TITLE cTitTela FROM 000, 000 TO 150, 270 COLORS 0, 16777215 PIXEL //Defina o valor total da venda desejado
                        @ 010,010 SAY "Valor Alvo:" SIZE 55, 08 OF oDlg PIXEL
                        @ 10,45 MSGET nValAlvo SIZE 55, 08 OF oDlg PIXEL PICTURE "@R 999999999.99"
                        @ 40, 70 BUTTON oButton1 PROMPT "&Sair" ACTION(oDlg:End()) SIZE 037, 012 OF oDlg PIXEL
                ACTIVATE MSDIALOG oDlg CENTERED

                If nValAlvo > 0
                         nFator := nValAlvo / nTotVend
                         nNewTotMe   := nTotMerc * nFator
                         nValNewDes := nTotMerc  - nNewTotMe
                         nTotMerAcr   := nNewTotMe * (cCondAcr / 100)
                         nNewTotPar  := nNewTotMe - nTotMerAcr
                         nNewPerDes := ( nValNewDes * 100) / nTotMerc

                         aRet := {nNewPerDes, nValNewDes}
                EndIf
          EndIf

          RestArea(aArea)

Return aRet