Árvore de páginas

Versões comparadas

Chave

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

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]StringNumerico
Dado numérico, contendo o valor total de MercadoriasString com a cláusula "WHERE" do padrão, para permitir análise da criação de complemento(SQL) para ser incluso na mesma via o Ponto de Entrada.
ParamIxb[2]StringArray
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 VendaString com a cláusula "WHERE" do padrão, para permitir análise da criação de complemento(SQL) para ser incluso na mesma via o Ponto de Entrada.
ParamIxb[3]StringArray
Dado do tipo Array, contendo o valor e percentual de desconto já aplicado na venda anteriormenteString com a cláusula "WHERE" do padrão, para permitir análise da criação de complemento(SQL) para ser incluso na mesma via o Ponto de Entrada.
Retorno:
NomeTipoDescrição
cNewFiltroaRetStringArrayArray 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árioString com o filtro(SQL) a ser incluso na cláusula "WHERE" do filtro padrão de seleção dos orçamentos a serem finalizados.

Exemplo:

#INCLUDE "TOTVS.CH"

User Function LJ7105LJ7107()

Local aArea := GetArea()
Local cWhere nTotMerc := Paramixb[1] //Total de Mercadorias
Local aArrayPgts := Paramixb[2] //Array de pagamentos da venda SL4
Local aArrayDesc := Paramixb[3] //Filtro padrão, disponibilizado como parametro, para analise previa e decisão referente a inclusão de filtro SQL na tabela SL1
Local cCondPad := PADR(GetMv( "MV_CONDPAD"),3) // Condicao de pagto padrao
Local cNewFiltro := ""

//Exemplo de utilização do P.E:
//O P.E. deve apenas retornara o filtro customizado, caso o mesmo não esteja contido na clausula WHERE padrao.
cNewFiltro := "SL1.L1_RESERVA = 'N' AND SL1.L1_CONDPG = '" + cCondPad + "'" //Exemplo de filtro SQL para compor a clausula Where Padrão

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 := Lj7T_Total(2) - nNewTotMe
                         nTotMerAcr := nNewTotMe * (cCondAcr / 100)
                         nNewTotPar := nNewTotMe - nTotMerAcr
                         nNewPerDes := ( nValNewDes * 100) / nTotMerc

                         aRet := {nNewPerDes, nValNewDes}
                EndIf
          EndIf

          RestArea(aArea)

Return aRetReturn cNewFiltro