Árvore de páginas

DESCONTO NO VALOR TOTAL DO PEDIDO

Produto: Automação da Força de Vendas
Linha de Produto: TOTVS CRM
Segmento: Cross Segmentos
Módulo: Venda
Aplicação: Web/App móvel
Identificador: TSFAFSWE-1895
       

    VISÃO GERAL

O recurso 'Desconto de Rodapé no Pedido' permite aplicar descontos somente ao valor total do pedido, sem afetar os preços individuais dos itens, garantindo flexibilidade e precisão no gerenciamento de descontos.


    OBJETIVO

Visa simplificar e flexibilizar a aplicação de descontos, mantendo o controle sobre valores totais.


  ANTES DE COMEÇAR

Requisitos

  • Versão padrão da solução TOTVS CRM - SFA.

  DETALHES FUNCIONAIS

Funções

  • Inserção de Desconto no Resumo: Insire descontos diretamente no resumo do pedido, flexibilizando a aplicação.
  • Configuração de Tipos: Configura tipos como "Alterar preço" ou "Desconto no resumo" para adaptar descontos.
  • Cálculos Automáticos: Automatiza cálculos conforme preferências, economizando tempo e reduzindo erros.
  • Aplicação Inteligente: Aplica descontos considerando faixas percentuais e valores, seguindo regras.

  COMO USAR?

Passo a Passo

  1. Acesso à Página de Pedidos: Acesse a página de pedidos.
  2. Resumo do Pedido: Encontre a seção de resumo do pedido.
  3. Seleção do Tipo de Desconto: Escolha o tipo, "Desconto no resumo".

 EXEMPLO PRÁTICO

Caso de uso

Cenário:

A empresa XYZ Comércio, que vende materiais de construção, desejava uma forma mais rápida e precisa de aplicar descontos em pedidos maiores de clientes empresariais.


Desafio Antigo:

A equipe de vendas da XYZ Comércio enfrentava dificuldades ao aplicar descontos em pedidos de grande volume. O processo manual era demorado e suscetível a erros, afetando negociações e a eficiência geral.


Solução Atualizada:

Com o novo recurso "Desconto de Rodapé no Pedido", a equipe agora pode aplicar descontos diretamente no valor total do pedido. Ao receber um pedido de um cliente corporativo, eles selecionam o desconto desejado e o sistema faz o cálculo automaticamente, sem alterar os preços individuais dos itens.


  DETALHES TÉCNICOS

1. Tools

Pelo "tools", opção 3, o sistema deverá executar as seguintes ações:

Tabela "tipodesconto":

  • Criar a seguinte coluna:
    • "sgllogicapreco": varchar(10), nullable
    • "sgllogicaexceder": varchar(10), nullable
    • "idtipoaprovacao": fk para tabela "tipoaprovacao", nullable
    • "faixapercentualinicial": decimal(18,6), nullable
    • "faixapercentualfinal": decimal(18,6), nullable
    • "valor": decimal(18,6), nullable

Tabela "pedido":

  • Criar o seguinte campo:
    • "valortotalformula": decimal(18,6), nullable
    • "valordescontoresumo": decimal(18,6), nullable
    • "percdescontoresumo": decimal(18,6), nullable

Pelo "tools", opção 18, o sistema deverá criar os seguintes registros na tabela "wsconfigpedidoresumo":



            INSERT INTO public.wsconfigpedidoresumo (chave,"label",idnvisivel,idnobrigatorio,idnexiberelatorio,idneditavel)
                VALUES ('VALOR_TOTAL_FORMULA','standard.pedidoconfig.resumo.lbl.valortotalformula',0,0,0,0);
            
            INSERT INTO public.wsconfigpedidoresumo (chave,"label",idnvisivel,idnobrigatorio,idnexiberelatorio,idneditavel)
                VALUES ('VALOR_DESCONTO_RESUMO','standard.pedidoconfig.resumo.lbl.valordescontoresumo',0,0,0,0);
            
            INSERT INTO public.wsconfigpedidoresumo (chave,"label",idnvisivel,idnobrigatorio,idnexiberelatorio,idneditavel)
                VALUES ('PERCENTUAL_DESCONTO_RESUMO','standard.pedidoconfig.resumo.lbl.percentualdescontoresumo',0,0,0,0);
                
              

Pelo "tools", opção 18, o sistema deverá criar os seguintes registros na tabela "wsconfigpedidoformula":



INSERT INTO public.wsconfigpedidoformula (identificador,descricao,formula,idnativo,contexto)
  VALUES ('VALOR_BASE_DESCONTO_RESUMO','Valor total do pedido, calculado por fórmula','RESUMO_VALOR_TOTAL_LIQUIDO',0,'RESUMO');
INSERT INTO public.wsconfigpedidoformula (identificador,descricao,formula,idnativo,contexto)
  VALUES ('VALOR_TOTAL_FORMULA','Valor total do pedido, calculado por fórmula','RESUMO_VALOR_TOTAL_LIQUIDO - RESUMO_VALOR_DESCONTO_RESUMO',0,'RESUMO');
  

2- Cadastro


Na tela de cadastro de tipo de desconto,

O sistema deverá realizar a inclusão das seguintes colunas:

  • "Lógica preço": campo drop-down, com opções fixas:
    • "Alterar preço tabela": sgl "PRECOTAB", valor padrão.
    • "Desconto no resumo": sgl "RESUMO"

    Para os registros anteriores a esta versão a aplicação considerará o PRECOTAB como padrão quando o campo "Lógica preço" estiver nulo.

    Persistir no campo tipodesconto.sgllogicapreco

  • "Lógica ao exceder": campo drop-down, com opções fixas:
    • "Selecione...": null, valor padrão
    • "Bloquear": sgl BLQ
    • "Gerar aprovação": sgl APR

    Persistir no campo tipodesconto.sgllogicaexceder

    Ao selecionar a opção APR, o sistema deverá habilitar para edição o campo "Tipo aprovação"

  • "Tipo aprovação": campo pesquisa, para entidade de tipo aprovação:
  • O campo deverá exibir todos os tipos de aprovação ativos

    Persistir no campo tipodesconto.idtipoaprovacao

  • "Faixa percentual inicial (%)": campo numérico
  • Persistir no campo tipodesconto.faixapercentualinicial

  • "Faixa percentual final (%)": campo numérico
  • Persistir no campo tipodesconto.faixapercentualfinal

  • "Valor monetário": campo numérico
  • Persistir no campo tipodesconto.valor

    A coluna não deverá ser editável caso o campo "Lógica preço" estiver com valor "PRECOTAB" ou a coluna "Percentual" estiver com valores preenchidos

    Se a coluna já tiver valores persistidos, ao alterar a coluna "PRECOTAB", os valores deverão ser limpos

    A coluna existente "Percentual" não deverá ser editável caso o campo "Valor monetário" estiver com valores preenchidos


3- Resumo

Na tela de "Configuração > Configuração pedido > Resumo", o sistema deverá exibir os registros de:


  • VALOR_TOTAL_FORMULA
  • VALOR_DESCONTO_RESUMO
  • PERCENTUAL_DESCONTO_RESUMO

A configuração de níveis e filtros gerais deverão estar bloqueados para ação.


4- Fórmula

Na tela de "Configuração > Configuração pedido > Fórmulas", deverá existir mais dois registros de fórmula, de códigos: VALOR_TOTAL_FORMULA e VALOR_BASE_DESCONTO_RESUMO

Ao clicar na edição da fórmula VALOR_TOTAL_FORMULA, o sistema deverá exibir as seguintes variáveis para interpolação:


  • RESUMO_QUANTIDADE_PRODUTOS
  • RESUMO_QUANTIDADE_ITENS
  • RESUMO_VALOR_TOTAL_DESCONTOS
  • RESUMO_PERCENTUAL_TOTAL_DESCONTOS
  • RESUMO_VALOR_TOTAL_BRUTO
  • RESUMO_VALOR_TOTAL_LIQUIDO
  • RESUMO_PERCENTUAL_DESCONTO
  • RESUMO_VALOR_TOTAL_COMISSAO
  • RESUMO_PESO_TOTAL
  • RESUMO_VALOR_IPI
  • RESUMO_VALOR_ST
  • RESUMO_VALOR_FECP
  • RESUMO_VALOR_TOTAL_BRUTO_SST
  • RESUMO_VALOR_TOTAL_LIQUIDO_SST
  • RESUMO_PESOBRUTO_TOTAL
  • CABECALHO_CONDPGTO_PERCENTUALDESCONTO
  • CABECALHO_CONDPGTO_PERCENTUALACRESCIMO
  • RESUMO_VALOR_DESCONTO_RESUMO

Esse valor deverá ser criado como novo Enum, com descrição "Valor total desconto no resumo, inserido a partir de tipos de desconto" referente ao campo pedido.valortotalresumo

Ao clicar na edição da fórmula VALOR_BASE_DESCONTO_RESUMO, o sistema deverá exibir as seguintes variáveis para interpolação:


  • RESUMO_QUANTIDADE_PRODUTOS
  • RESUMO_QUANTIDADE_ITENS
  • RESUMO_VALOR_TOTAL_DESCONTOS
  • RESUMO_PERCENTUAL_TOTAL_DESCONTOS
  • RESUMO_VALOR_TOTAL_BRUTO
  • RESUMO_VALOR_TOTAL_LIQUIDO
  • RESUMO_PERCENTUAL_DESCONTO
  • RESUMO_VALOR_TOTAL_COMISSAO
  • RESUMO_PESO_TOTAL
  • RESUMO_VALOR_IPI
  • RESUMO_VALOR_ST
  • RESUMO_VALOR_FECP
  • RESUMO_VALOR_TOTAL_BRUTO_SST
  • RESUMO_VALOR_TOTAL_LIQUIDO_SST
  • RESUMO_PESOBRUTO_TOTAL
  • CABECALHO_CONDPGTO_PERCENTUALDESCONTO
  • CABECALHO_CONDPGTO_PERCENTUALACRESCIMO

5- Implementação no pedido

O sistema deverá exibir o campo "Tipos de desconto", que anteriormente somente era exibido no cabeçalho, também no resumo.

O comportamento do campo deverá ser exatamente semelhante, em questão de lógica, ao campo do cabeçalho. Portanto, ao selecionar um tipo de desconto no resumo, deverá ser replicado em tela também para o cabeçalho, caso o campo estiver ativo e visível

No campo "Tipos de desconto",

A coluna "Percentual" deve ser renomeada para "Valor atrib."

Deverá ter uma coluna adicional, drop down, de nome "Atributo" com os valores fixos para seleção:

  • "Percentual"
  • Caso quando tipodesconto.percentual <> 0 AND tipodesconto.percentual is not null, deve ser selecionada essa opção por padrão
  • Caso quando ( tipodesconto.percentual = 0 OR tipodesconto.percentual is null ) AND (tipodesconto.valor = 0 OR tipodesconto.valor is null) deve ser selecionada essa opção por padrão

Ao selecionar essa opção,

Caso quando o campo tipodesconto.sglogicapreco = 'RESUMO',

O sistema deverá fazer o cálculo do VALOR_DESCONTO_RESUMO e PERCENTUAL_DESCONTO_RESUMO partindo da fórmula:

  • VALOR_DESCONTO_RESUMO = VALOR_BASE_DESCONTO_RESUMO * ${coluna valor atrib.}/100
  • PERCENTUAL_DESCONTO_RESUMO = (VALOR_BASE_DESCONTO_RESUMO - VALOR_DESCONTO_RESUMO)/ VALOR_BASE_DESCONTO_RESUMO *100

Caso contrário, caso o campo tipodesconto.sglogicapreco = 'PRECOTAB' ou null,

O sistema deverá continuar influenciando os preços de tabela pelo percentual, como fazia anteriormente, de maneira fixa.

"Valor monetário"

A opção deverá apenas ser exibida para seleção quando tipodesconto.sgllogicapreco = 'RESUMO'

Caso quando ( tipodesconto.percentual = 0 OR tipodesconto.percentual is null ) AND (tipodesconto.valor <> 0 OR tipodesconto.valor is not null) deve ser selecionada essa opção por padrão

Ao selecionar essa opção,

O sistema deverá fazer o cálculo do VALOR_DESCONTO_RESUMO e PERCENTUAL_DESCONTO_RESUMO partindo da fórmula:

  • VALOR_DESCONTO_RESUMO = ${coluna valor atrib.}
  • PERCENTUAL_DESCONTO_RESUMO = (VALOR_BASE_DESCONTO_RESUMO - VALOR_DESCONTO_RESUMO)/ VALOR_BASE_DESCONTO_RESUMO *100

A coluna deverá não ser editável caso o campo "Valor atrib." estiver com valores preenchidos

Ao inserir um novo registro,

Caso o campo tipodesconto.idnaplicamaximo = 1

O sistema deverá aplicar o valor do campo tipodesconto.percentual ou tipodesconto.valor automaticamente na coluna "Valor atrib"

Caso contrário

O sistema deverá aplicar o valor do campo tipodesconto.faixapercentualinicial automaticamente na coluna "Valor atrib"

Caso o campo tipodesconto.idnpermiteedicao = 1

Ao alterar a coluna "Valor atrib",

Caso o campo tipodesconto.sgllogicaexceder = 'BLQ'

O sistema deverá bloquear a persistência do valor preenchido caso o valor da coluna seja:

  • menor que tipodesconto.faixapercentualinicial(*) ou maior que tipodesconto.percentual (quando "Atributo" = "Percentual") ou maior que tipodesconto.valor(quando "Atributo" = "Valor monetário")

(*)Quando selecionado o Atributo de "valor monetário", o valor comparado às colunas de faixapercentual deverá ser resultado do cálculo: ${valor da coluna} / VALOR_BASE_DESCONTO_RESUMO * 100

Caso o campo tipodesconto.sgllogicaexceder = 'APR'

O sistema deverá bloquear a persistência do valor preenchido caso o valor da coluna seja:

  • menor que tipodesconto.faixapercentualinicial(*) ou maior que tipodesconto.faixapercentualfinal(*)

O sistema deverá encaminhar o pedido para aprovação na finalização do pedido, vinculado ao tipoaprovacao tipodesconto.idtipoaprovacao, caso o valor seja:

  • maior que tipodesconto.percentual (quando "Atributo" = "Percentual") ou maior que tipodesconto.valor(quando "Atributo" = "Valor monetário")
  • e menor ou igual que tipodesconto.faixapercentualfinal(*)

(*)Quando selecionado o Atributo de "valor monetário", o valor comparado às colunas de faixapercentual deverá ser resultado do cálculo: ${valor da coluna} / VALOR_BASE_DESCONTO_RESUMO * 100

O sistema deverá exibir 2 novos campos no resumo, que serão resultado das fórmulas citadas no tópico acima, sendo eles: VALOR_DESCONTO_RESUMO e PERCENTUAL_DESCONTO_RESUMO

Os campos deverão respeitar as configurações da tela Configuração pedido > Resumo, segundo os campos:

  • idnpermitevisualizar:
    • 1: exibe o campo
    • 0: não exibe o campo
  • idnpermiteedicao:
    • fixo: não permitir edição
  • idnobrigatorio:
    • 1: Restringe finalização quando valor é 0
    • 0: Não restringe finalização quando valor é 0

O ícone de cadastro de níveis e filtros diretos deverá estar bloqueado

O valor dos campos deverão ser persistidos em:

  • VALOR_DESCONTO_RESUMO: pedido.valordescontoresumo
  • PERCENTUAL_DESCONTO_RESUMO: pedido.percdescontoresumo

O sistema deverá exibir novo campo no resumo, referente ao código VALOR_TOTAL_FORMULA

Valor numérico monetário, cujo comportamento de arredondamento e casas decimais devem considerar os parâmetros: MODO_ARREDONDAMENTO_MONETARIO e QTD_CASAS_DECIMAIS_MONETARIO

O valor do campo deverá ser resultado da fórmula aritmética cadastrada na tela Configuração > Configuração pedido > Fórmulas > VALOR_TOTAL_FORMULA

O campo deverá respeitar as configurações da tela Configuração pedido > Resumo, segundo os campos:

  • idnpermitevisualizar:
    • 1: exibe o campo
    • 0: não exibe o campo
  • idnpermiteedicao:
    • fixo: não permitir edição
  • idnobrigatorio:
    • 1: Restringe finalização quando valor é 0
    • 0: Não restringe finalização quando valor é 0

O valor do campo deverá ser persistido em pedido.valortotalformula

PERGUNTAS FREQUENTES

  • question_answer