Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

« Anterior Versão 2 Próxima »

01. DADOS GERAIS

Produto:

TOTVS CRM Automação da Força de Vendas

Linha de Produto:

Linha TOTVS CRM

ERPs impactados:Todos
Módulo:Pedido
Função:Desconto
Ambiente:Web/Android
Ticket:
Requisito/Story/Issue:


02. ESCOPO FUNCIONAL

O sistema atualmente possui 3 conceitos de preço que influenciam no contexto da venda, sendo eles:

  • Preço original: Valor original extraído da tabela de preço, sem alterações de qualquer natureza.
  • Preço tabela: Preço original variado de possíveis fatores de variação aplicados sobre o preço de tabela, como por exemplo: % Condição de pagamento, Desconto de capa de pedido, Juros sobre data base Tabela de preço, ...
  • Preço venda: Preço tabela variado segundo campos da grid "% Desconto", "R$ Desconto". Os campos referidos podem ser automaticamente definidos pelo sistema quando cadastrados descontos de aplicação automática.

Anteriormente, na tela de cadastro de descontos, o sistema permitia apenas o cadastro de descontos que poderiam ser aplicados sobre o preço de venda no momento do pedido, ou seja, sempre influenciavam nos campos de "% Desconto", "R$ Desconto".

Agora, o sistema contará com uma opção para selecionar se o desconto cadastrado fará sua incidência sobre o "Preço tabela" ou sobre o "Preço venda"

No pedido de venda, em contexto de itens, o sistema contará com um novo campo de % Desc. Pr. Tab., não editável, para que seja possível que o sistema alimente esse campo automaticamente. Esse desconto será mais um fator, em nível de itens de pedido, que poderá influenciar no preço de tabela que é exibido na grid.

03. ESCOPO TÉCNICO

1. Banco de dados

  • Pelo tools, opção 3, o sistema deverá criar o seguinte campo na tabela desconto:
    • sglaplicacao: varchar(20), nullable
  • Pelo tools, opção 3, o sistema deverá criar os seguintes campos na tabela pedidoproduto:
    • percentualdescontotab: decimal(18,6), nullable
    • percentualacrescimotab: decimal(18,6), nullable
    • valordescontotab: decimal(18,6), nullable
    • valoracrescimotab: decimal(18,6), nullable
  • Pelo tools, opção 18, o sistema deverá inserir os seguintes registros na tabela wsconfigpedidoproduto
    • <insert tableName="WsConfigPedidoProduto">
      	<column name="idWsConfigPedidoProduto" valueSequenceNext="SEQPKWSCONFIGPEDIDOPRODUTO"/>
      	<column name="chave" valueComputed="'WEB_GRID_PERCENTUAL_DESCONTOTABELA'"/>
      	<column name="label" valueComputed="'standard.pedidoconfig.percentual.descontotabela'"/>
      	<column name="linha" valueComputed="'0'"/>
      	<column name="coluna" valueComputed="'0'"/>
      	<column name="idnVisivel" valueComputed="0"/>
      	<column name="idnEditavel" valueComputed="0"/>
      	<column name="idnExibeRelatorio" valueComputed="0"/>
      	<column name="idnObrigatorio" valueComputed="0"/>
      </insert>
      <insert tableName="WsConfigPedidoProduto">
      	<column name="idWsConfigPedidoProduto" valueSequenceNext="SEQPKWSCONFIGPEDIDOPRODUTO"/>
      	<column name="chave" valueComputed="'ANDROID_CARD_PERCENTUAL_DESCONTOTABELA'"/>
      	<column name="label" valueComputed="'standard.pedidoconfig.percentual.descontotabela'"/>
      	<column name="linha" valueComputed="'0'"/>
      	<column name="coluna" valueComputed="'0'"/>
      	<column name="idnVisivel" valueComputed="0"/>
      	<column name="idnEditavel" valueComputed="0"/>
      	<column name="idnExibeRelatorio" valueComputed="0"/>
      	<column name="idnObrigatorio" valueComputed="0"/>
      </insert>
      <insert tableName="WsConfigPedidoProduto">
      	<column name="idWsConfigPedidoProduto" valueSequenceNext="SEQPKWSCONFIGPEDIDOPRODUTO"/>
      	<column name="chave" valueComputed="'ANDROID_NEGOCIACAO_PERCENTUAL_DESCONTOTABELA'"/>
      	<column name="label" valueComputed="'standard.pedidoconfig.percentual.descontotabela'"/>
      	<column name="linha" valueComputed="'0'"/>
      	<column name="coluna" valueComputed="'0'"/>
      	<column name="idnVisivel" valueComputed="0"/>
      	<column name="idnEditavel" valueComputed="0"/>
      	<column name="idnExibeRelatorio" valueComputed="0"/>
      	<column name="idnObrigatorio" valueComputed="0"/>
      </insert>
      <insert tableName="WsConfigPedidoProduto">
      	<column name="idWsConfigPedidoProduto" valueSequenceNext="SEQPKWSCONFIGPEDIDOPRODUTO"/>
      	<column name="chave" valueComputed="'ANDROID_CARRINHO_PERCENTUAL_DESCONTOTABELA'"/>
      	<column name="label" valueComputed="'standard.pedidoconfig.percentual.descontotabela'"/>
      	<column name="linha" valueComputed="'0'"/>
      	<column name="coluna" valueComputed="'0'"/>
      	<column name="idnVisivel" valueComputed="0"/>
      	<column name="idnEditavel" valueComputed="0"/>
      	<column name="idnExibeRelatorio" valueComputed="0"/>
      	<column name="idnObrigatorio" valueComputed="0"/>
      </insert>
      <insert tableName="WsConfigPedidoProduto">
      	<column name="idWsConfigPedidoProduto" valueSequenceNext="SEQPKWSCONFIGPEDIDOPRODUTO"/>
      	<column name="chave" valueComputed="'WEB_GRID_VALOR_DESCONTOTABELA'"/>
      	<column name="label" valueComputed="'standard.pedidoconfig.percentual.descontotabela'"/>
      	<column name="linha" valueComputed="'0'"/>
      	<column name="coluna" valueComputed="'0'"/>
      	<column name="idnVisivel" valueComputed="0"/>
      	<column name="idnEditavel" valueComputed="0"/>
      	<column name="idnExibeRelatorio" valueComputed="0"/>
      	<column name="idnObrigatorio" valueComputed="0"/>
      </insert>
      <insert tableName="WsConfigPedidoProduto">
      	<column name="idWsConfigPedidoProduto" valueSequenceNext="SEQPKWSCONFIGPEDIDOPRODUTO"/>
      	<column name="chave" valueComputed="'ANDROID_CARD_VALOR_DESCONTOTABELA'"/>
      	<column name="label" valueComputed="'standard.pedidoconfig.percentual.descontotabela'"/>
      	<column name="linha" valueComputed="'0'"/>
      	<column name="coluna" valueComputed="'0'"/>
      	<column name="idnVisivel" valueComputed="0"/>
      	<column name="idnEditavel" valueComputed="0"/>
      	<column name="idnExibeRelatorio" valueComputed="0"/>
      	<column name="idnObrigatorio" valueComputed="0"/>
      </insert>
      <insert tableName="WsConfigPedidoProduto">
      	<column name="idWsConfigPedidoProduto" valueSequenceNext="SEQPKWSCONFIGPEDIDOPRODUTO"/>
      	<column name="chave" valueComputed="'ANDROID_NEGOCIACAO_VALOR_DESCONTOTABELA'"/>
      	<column name="label" valueComputed="'standard.pedidoconfig.percentual.descontotabela'"/>
      	<column name="linha" valueComputed="'0'"/>
      	<column name="coluna" valueComputed="'0'"/>
      	<column name="idnVisivel" valueComputed="0"/>
      	<column name="idnEditavel" valueComputed="0"/>
      	<column name="idnExibeRelatorio" valueComputed="0"/>
      	<column name="idnObrigatorio" valueComputed="0"/>
      </insert>
      <insert tableName="WsConfigPedidoProduto">
      	<column name="idWsConfigPedidoProduto" valueSequenceNext="SEQPKWSCONFIGPEDIDOPRODUTO"/>
      	<column name="chave" valueComputed="'ANDROID_CARRINHO_VALOR_DESCONTOTABELA'"/>
      	<column name="label" valueComputed="'standard.pedidoconfig.percentual.descontotabela'"/>
      	<column name="linha" valueComputed="'0'"/>
      	<column name="coluna" valueComputed="'0'"/>
      	<column name="idnVisivel" valueComputed="0"/>
      	<column name="idnEditavel" valueComputed="0"/>
      	<column name="idnExibeRelatorio" valueComputed="0"/>
      	<column name="idnObrigatorio" valueComputed="0"/>
      </insert>

2. Telas de cadastro

  • Na tela de cadastro de desconto (Cadastro > Venda > Desconto),
    • Uma nova coluna na grid deverá ser adicionada:
      • "Aplicado em": opções fixas, com valores:
          • "Preço venda": valor PRCVEN, opção default.
          • "Preço tabela": valor PRCTAB
        • O campo deverá ser persistido no campo desconto.sglaplicacao
    • Ao gravar os registros, caso a coluna "Aplicar automático?" estiver marcada como "Não" e a coluna "Aplicado em" estiver marcada com "Preço tabela",
      • O sistema deve bloquear a gravação (Rollback) retornando a seguinte mensagem de validação no campo "Aplicar automático": "Descontos aplicados em preço de tabela devem ser aplicados automaticamente"

3. Implementação no pedido

  • No pedido de venda,
    • Nova coluna deverá ser adicionada em tela, com label "% Desc. Pr. Tab.", no contexto de itens de pedido, em função das seguintes configurações:
      • WEB_GRID_PERCENTUAL_DESCONTOTABELA
      • ANDROID_CARD_PERCENTUAL_DESCONTOTABELA
      • ANDROID_NEGOCIACAO_PERCENTUAL_DESCONTOTABELA
      • ANDROID_CARRINHO_PERCENTUAL_DESCONTOTABELA
    • Nova coluna deverá ser adicionada em tela, com label "Vl. Desc. Pr. Tab.", no contexto de itens de pedido, em função das seguintes configurações:
      • WEB_GRID_VALOR_DESCONTOTABELA
      • ANDROID_CARD_VALOR_DESCONTOTABELA
      • ANDROID_NEGOCIACAO_VALOR_DESCONTOTABELA
      • ANDROID_CARRINHO_VALOR_DESCONTOTABELA
    • Ao carregar o cache de descontos, o sistema deverá realizar 2 buscas de desconto, baseadas da configuração definida pelo registro DESCONTO, na tela Configuração Pedido > Busca produto
      • 1º Busca: Desconto aplicável no preço de tabela (DESCONTOTABELA)
        • Aplicará a seleção no grupo de registros de desconto marcados com campo desconto.sglaplicacao = "PRCTAB"
        • A busca resultará em um valor numérico de percentual(desconto.percentual is not null) ou valor monetário (desconto.valor is not null), que deve alimentar os campos "% Desc. Pr. Tab." e "Vl. Desc. Pr. Tab."
          • Caso seja informado valor nos campos desconto.percentual e desconto.valor, o sistema deverá considerar o desconto.percentual como critério prioritário para projetar o valor aplicado no preço.+
          • O valor do campo "% Desc. Pr. Tab." deverá ser persistido:
            • no campo pedidoproduto.percentualdescontotab quando o desconto em tela for positivo
            • no campo pedidoproduto.percentualacrescimotab, quando o desconto em tela for negativo
              • No banco de dados, o valor deverá ser positivo, portanto, ao persistir, o sistema deverá multiplicar o valor de tela por -1
          • O valor do campo "Vl. Desc. Pr. Tab." deverá ser persistido:
            • no campo pedidoproduto.valordescontotab quando o desconto em tela for positivo
            • no campo pedidoproduto.valoracrescimotab, quando o desconto em tela for negativo
              • No banco de dados, o valor deverá ser positivo, portanto, ao persistir, o sistema deverá multiplicar o valor de tela por -1
        • Visto que o campo "% Desc. Pr. Tab." será fator de influência para o cálculo de preco de tabela, o campo "Preço tabela" deverá ser calculado em função da fórmula a seguir: PRECO_TABELA = PRECO_ORIGINAL * FATORES_ATUAIS_PRECOTABELA * [1 - ("% Desc. Pr. Tab." / 100)]
        • Uma vez que o campo "Preço tabela" será influenciado pelo novo fator de variação, o preço de venda também será influenciado, pois o preco de venda é calculado pela fórmula a seguir: PRECO_VENDA = PRECO_TABELA - DESCONTOVENDA
      • 2º Busca: Desconto aplicável no preço de venda (DESCONTOVENDA)
        • Aplicará a seleção no grupo de registros de desconto marcados com campo desconto.sglaplicacao = "PRCVEN" ou desconto.sglaplicacao is null
          • A lógica de influência do desconto sobre o preço de venda não será alterada, visto que somente a busca olhará para um universo de registros menor que anteriormente, onde considerava todos os registros.


  • Sem rótulos