Árvore de páginas

Versões comparadas

Chave

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

...

  • Separação de descontos em abas: preço venda / preço tabela, 
    • Preço tabela:
        • descrição
        • sigla
        • classe desconto (novo)
        • vigência
        • faixa quantidade
        • novo campo Modelo de faixa = "Valor / percentual" (  desconto.sglmodelofaixa = 'perc' ou 'val')
        • percentual
        • valor
      • Validações
        • Valor aplicado automaticamente não editável, quando modelo = percentual
        • Percentual aplicado automaticamente não editável, quando modelo = percentual
        • faixaquantidade persistir null quando não informado, ao invés de 0
        • faixaquantidadeinicial <> <= faixaquantidadefinal
        • Faixa percentual e faixa quantidade precisam aceitar até 6 casas
        • Permitir valor negativo mesmo com conteúdo preenchido
    • Preço venda
      • remover "aplicado em"
      • Faixa percentual e faixa quantidade precisam aceitar até 6 casas
      • Remoção do conceito de ponteiro
        • novo campo Modelo de faixa = "Valor / percentual" 
        • Fixar filtro faixapercentual faixapercentual / faixavalor
        • Alterar posicionamento campos percentual e valor para a direita do "aplicar automaticamente", editáveis somente quando aplicar auto = sim 
        • Opção "Selecione" alterada para "Permitir"
        • Coluna "Lógica ao exceder" alterada para "Lógica aplicação"
        • Coluna "Faixa percentual" alterada para "Faixa aplicação"
        • Analisar impacto de clientes que já possuem ponteiro > faixa mínima e < faixa mínima
          • Para APR,
            • Clone de registro de desconto com lógica vazia, faixa minima = faixa minima registro clonado, faixa máxima = ponteiro registro clonado
            • update faixaminima para ponteiro
      • Validações
        • Percentual aplicado automaticamente between faixa inicial e final, quando modelo = percentual
        • Valor aplicado automaticamente não editável, quando modelo = percentual
        • /Valor aplicado automaticamente between faixa aplicação inicial e final, quando modelo = valor
        • Percentual aplicado automaticamente não editável, quando modelo = percentual
        • faixainicial <= faixainicial <> faixafinal
        • faixaquantidade persistir null quando não informado, ao invés de 0
        • faixaquantidadeinicial <> <= faixaquantidadefinal
        • Permitir valor negativo mesmo com conteúdo preenchido
  • Separação em níveis desconto preço tabela / desconto preço venda
    • Copiar configuração de desconto preço tabela do desconto preço venda, via tools
  • Comportamento alterado quando não encontra-se registros de desconto
    • Antes, permitia a inserção de desconto, agora, bloqueia

...

Painel
borderColorlightgray

03.01.01 Adição de colunas na tabela desconto

Contexto / Gatilho:

  • Pelo tools, opção 3

Lógica:

  • O sistema deve adicionar as seguintes colunas na tabela desconto:

Sem Formato
sglmodeloaplicacao: varchar(10), nullable, default "PERC"
  • O sistema deverá atualizar os valores da coluna uma vez segundo o script:
Sem Formato
update desconto set sglmodeloaplicacao = case when valor > 0 then 'VAL' else 'PERC' end 
Painel
borderColorlightgray

03.02.01 Separação de tela de desconto em abas

Contexto / Gatilho:

  • No ambiente Web, ao clicar na opção do menu Cadastro → Venda → Desconto

Lógica:

  • O sistema deverá carregar tela com duas abas:

    • Âncora
      campo_precotabela
      campo_precotabela
      "Preço de tabela"

      • Quando clicado sobre a aba, o sistema deve carregar o conteúdo descrito pela seção Aba "Preço tabela"
    • Âncora
      campo_precovenda
      campo_precovenda
      "Preço de venda"

      • Selecionada por padrão
      • Quando clicado sobre a aba, o sistema deve carregar o conteúdo descrito pela seção Aba "Preço venda"
  • Visto que o conteúdo de cada uma das abas será diferente, os botões de ação:
      • "Adicionar"
      • "Gravar"
    • que anteriormente ficavam no canto superior da tela, deverão ser removidos, para serem reposicionados dentro do escopo da grid, dentro do conteúdo das abas.
Painel
borderColorlightgray

Âncora
aba_precotabela
aba_precotabela
03.02.02 Aba "Preço tabela"

Contexto / Gatilho:

Lógica:

  • O sistema deverá exibir conteúdo referenciado conforme o protótipo a seguir:

    • Image RemovedImage Added
  • O conteúdo da aba deverá exibir os seguintes elementos visuais:
  • Cabeçalho de pesquisa:
    • "Pesquisa rápida": Campo de entrada textual
      • Quando pesquisado, a informação do campo é utilizada para comparar com:
        • desconto.descricao
        • desconto.sigla
    • "Vigência de": Campo de entrada, data
    • "Até": Campo de entrada, data
    • "Pesquisa avançada": Texto clicável, para exibir/ocultar os seguintes campos :de filtros avançados
      • /* Visto que não terá alteração nos filtros avançados, essa documentação não teve como objetivo detalhar todos os campos */
    • Botões de ação:
      • Pesquisar: Quando clicado, dispara a requisição de pesquisa de registros da entidade
      • Limpar: Limpa os valores dos campos de pesquisa
  • Grid de informações de controle de cota, contendo
    • Botões de ação
      • Adicionar: Botão que, quando clicado, adiciona nova linha na grid de desconto.
      • Cancelar alteração: cancela alterações da grid ainda não commitadas em banco
      • Gravar: commita as alterações da grid nos respectivos campos
        • Quando gravado, o registro deverá ser persistido na tabela desconto, sendo o detalhe do objeto a seguir:

          Sem Formato
          {
          	descricao: Valor do campo "Descrição"
          	siglasgltipodesconto: Valor do campo "Sigla"
          	idclassedesconto: identificador da entidade selecionada no campo "Classe desconto"
          	datainiciovigecia: Valor do campo "Data início vigência"
          	datafimvigencia: Valor do campo "Data fim vigência"
          	faixaquantidademinima: Valor do campo "Faixa quantidade mínima" 
           	faixaquantidademaxima: Valor do campo "Faixa quantidade máxima"
          	sglmodeloaplicacao: Valor do campo "Modelo aplicação" (Se "Percentual" = "percPERC", se "Valor"= "valVAL")
          	sglaplicacao: "PRCTAB"
          	percentual: Se sglmodeloaplicacao = percPERC, Valor do campo "Percentual/Valor"
           	valor: Se sglmodeloaplicacao = valVAL, Valor do campo "Percentual/Valor" 
          }
    • Lista de colunas da grid:
      • "Descrição": campo texto, editável, obrigatório
        • O valor do campo da coluna é buscado a partir do / persistido com base no campo desconto.descricao
      • "Sigla": campo texto, editável, obrigatório, aceitando até 20 caracteres
        • O valor da coluna é buscado / persistido com base no campo desconto.sgltipodesconto
      • "Classe desconto": campo do tipo pesquisa seleção simples, editável, obrigatório
        • As opções do campo deverão seguir conforme implementação atual, definido nesta documentação
        • O valor da coluna é buscado / persistido com base no campo desconto.idclassedesconto
      • "Data início vigência": Campo tipo data, não obrigatório, editável
        • O valor da coluna é buscado / persistido com base no campo desconto.datainiciovigencia
        • O campo não pode ter valor maior que o campo "Data fim vigência", se informado
      • "Data fim vigência"Campo tipo data, não obrigatório, editável
        • O valor da coluna é buscado / persistido com base no campo desconto.datafimvigencia
        • O campo não pode ter valor maior que o campo "Data inicio vigência", se informado
      • "Faixa quantidade mínima": campo numérico, não obrigatório, editável
        • O campo deve aceitar apenas valores positivos
        • O campo deve aceitar valores fracionados, com precisão de até 6 casas decimais
        • O valor da coluna é buscado / persistido com base no campo desconto.faixaquantidademinina
        • O campo, quando não informado, deve persistir valor nulo
      • "Faixa quantidade máxima"campo numérico, não obrigatório, editável
        • O campo deve aceitar apenas valores positivos
        • O campo deve aceitar valores fracionados, com precisão de até 6 casas decimais
        • O valor da coluna é buscado / persistido com base no campo desconto.faixaquantidademaxima
        • O campo, quando não informado, deve persistir valor nulo
      • "Modelo aplicação": campo de opções selecionáveis, obrigatório, editável, seleção única, com as seguintes opções selecionáveis:
          • "Percentual", valor padrão
            • Visto que há possibilidade de o campo estar null no banco, se estiver, considerar 'PERC'
          • "Valor"
      • "Percentual / Valor": campo numérico, editável, obrigatório
        • O campo deve aceitar valores positivos e negativos (ainda que o campo esteja preenchido)
        • O valor da coluna é buscado / persistido com base na lógica a seguir:
          • Se sglmodeloaplicacao = PERC,
            • persistir/consultar do campo desconto.percentual
          • Se sglmodeloaplicacao = VAL
            • persistir/consultar do campo desconto.valor
      • "Editar": ícone clicável.
        • Quanto clicado, abre modal de vínculos de desconto com outras entidades
          • /* A modal já existe e não terá sua lógica alterada, portanto, não será detalhada na presente documentação */
      • "Remover": ícone clicável
        • Quando clicado, marca o registro da grid para deleção. A deleção efetiva ocorre após o acionamento do botão de ação "Gravar"


Painel
borderColorlightgray

Âncora
aba_precovenda
aba_precovenda
03.02.02 Aba "Preço Venda"

Contexto / Gatilho:

Lógica:

  • O sistema deverá exibir conteúdo referenciado conforme o protótipo a seguir:

    • Image RemovedImage Added
  • O conteúdo da aba deverá exibir os seguintes elementos visuais:
  • Cabeçalho de pesquisa:
    • "Pesquisa rápida": Campo de entrada textual
      • Quando pesquisado, a informação do campo é utilizada para comparar com:
        • desconto.descricao
        • desconto.sigla
    • "Vigência de": Campo de entrada, data
    • "Até": Campo de entrada, data
    • "Pesquisa avançada": Texto clicável, para exibir/ocultar os campos de filtros avançados
      • /* Visto que não terá alteração nos filtros avançados, essa documentação não teve como objetivo detalhar todos os campos */
    • Botões de ação:
      • Pesquisar: Quando clicado, dispara a requisição de pesquisa de registros da entidade
      • Limpar: Limpa os valores dos campos de pesquisa
  • Grid de informações de controle de cota, contendo
    • Botões de ação
      • Adicionar: Botão que, quando clicado, adiciona nova linha na grid de desconto.
      • Cancelar alteração: cancela alterações da grid ainda não commitadas em banco
      • Gravar: commita as alterações da grid nos respectivos campos
        • Quando gravado, o registro deverá ser persistido na tabela desconto, sendo o detalhe do objeto a seguir:

          Sem Formato
          {
          	descricao: Valor do campo "Descrição"
          	sgltipodesconto: Valor do campo "Sigla"
          	idclassedesconto: identificador da entidade selecionada no campo "Classe desconto"
          	datainiciovigecia: Valor do campo "Data início vigência"
          	datafimvigencia: Valor do campo "Data fim vigência"
          	faixaquantidademinima: Valor do campo "Faixa quantidade mínima" 
           	faixaquantidademaxima: Valor do campo "Faixa quantidade máxima"
          	sgllogicaexceder: Valor do campo "Lógica aplicação" (Se "Permitir" = null, "Gerar aprovação" = 'APR', "Gerar aprovação com itens" = "APR_ITENS") 		
          	idtipoaprovacao: Identificador da entidade selecionada no campo "Tipo aprovação" 
          	sglmodeloaplicacao: Valor do campo "Modelo aplicação" (Se "Percentual" = "PERC", se "Valor"= "VAL")
          	faixapercentualinicial: Se sglmodeloaplicacao = PERC, Valor do campo "Faixa aplicação inicial"
          	faixapercentualfinal: Se sglmodeloaplicacao = PERC, Valor do campo "Faixa aplicação final"
          	faixavalorminimo: Se sglmodeloaplicacao = VAL, Valor do campo "Faixa aplicação inicial"
          	faixavalormaximo: Se sglmodeloaplicacao = VAL, Valor do campo "Faixa aplicação final"
          	idnaplicaautomatico: Valor do campo "Aplica automático?" (1 se marcado, 0 se desmarcado)
          	percentual: Se sglmodeloaplicacao = PERC, Valor do campo "Percentual/Valor"
           	valor: Se sglmodeloaplicacao = VAL, Valor do campo "Percentual/Valor"
          	sglaplicacao: "PRCVEN"
          }
    • Lista de colunas da grid:
      • "Descrição": campo texto, editável, obrigatório
        • O valor da coluna é buscado / persistido com base no campo desconto.descricao
      • "Sigla": campo texto, editável, obrigatório, aceitando até 20 caracteres
        • O valor da coluna é buscado / persistido com base no campo desconto.sgltipodesconto
      • "Classe desconto": campo do tipo pesquisa seleção simples, editável, obrigatório
        • As opções do campo deverão seguir conforme implementação atual, definido nesta documentação
        • O valor da coluna é buscado / persistido com base no campo desconto.idclassedesconto
      • "Data início vigência": Campo tipo data, não obrigatório, editável
        • O valor da coluna é buscado / persistido com base no campo desconto.datainiciovigencia
        • O campo não pode ter valor maior que o campo "Data fim vigência", se informado
      • "Data fim vigência": Campo tipo data, não obrigatório, editável
        • O valor da coluna é buscado / persistido com base no campo desconto.datafimvigencia
        • O campo não pode ter valor maior que o campo "Data inicio vigência", se informado
      • "Faixa quantidade mínima": campo numérico, não obrigatório, editável
        • O campo deve aceitar apenas valores positivos
        • O campo deve aceitar valores fracionados, com precisão de até 6 casas decimais
        • O valor da coluna é buscado / persistido com base no campo desconto.faixaquantidademinina
        • O campo, quando não informado, deve persistir valor nulo
      • "Faixa quantidade máxima": campo numérico, não obrigatório, editável
        • O campo deve aceitar apenas valores positivos
        • O campo deve aceitar valores fracionados, com precisão de até 6 casas decimais
        • O valor da coluna é buscado / persistido com base no campo desconto.faixaquantidademaxima
        • O campo, quando não informado, deve persistir valor nulo
        • Quando informado o campo "Faixa quantidade mínima" for informado, o sistema deverá validar se "Faixa quantidade máxima" >= "Faixa quantidade mínima"
      • "Lógica aplicação": campo de opções selecionáveis, obrigatório, editável, seleção única, com as seguintes opções:
          • "Permitir": valor nulo
          • "Bloquear": valor "BLQ"
          • "Gerar aprovação": valor "APR"
          • "Gerar aprovação por itens": valor "APR_ITENS"
      • "Tipo aprovação": campo do tipo pesquisa seleção simples, editável
        • O campo deverá ser obrigatório quando a opção selecionada do campo "Lógica aplicação" for "Gerar aprovação" ou "Gerar aprovação por itens"
        • As opções do campo deverão seguir conforme implementação atual
        • O valor da coluna é buscado / persistido com base no campo desconto.idtipoaprovacao
      • "Modelo aplicação": campo de opções selecionáveis, obrigatório, editável, seleção única, com as seguintes opções:
          • "Percentual", valor padrão
            • Visto que há possibilidade de o campo estar null no banco, se estiver, considerar 'PERC'
          • "Valor"
      • "Faixa aplicação inicial": campo numérico, obrigatório, editável
        • O campo deve aceitar valores positivos e negativos
        • O campo deve aceitar valores fracionados, com precisão de até 6 casas decimais
        • O valor da coluna é buscado / persistido com base na lógica a seguir:
          • Se sglmodeloaplicacao = PERC,
            • persistir/consultar do campo desconto.faixapercentualinicial
          • Se sglmodeloaplicacao = VAL
            • persistir/consultar do campo desconto.faixavalorminimo
      • "Faixa aplicação final": campo numérico, obrigatório, editável
        • O campo deve aceitar valores positivos e negativos
        • O campo deve aceitar valores fracionados, com precisão de até 6 casas decimais
        • O valor da coluna é buscado / persistido com base na lógica a seguir:
          • Se sglmodeloaplicacao = PERC,
            • persistir/consultar do campo desconto.faixapercentualfinal
          • Se sglmodeloaplicacao = VAL
            • persistir/consultar do campo desconto.faixavalormaximo
      • "Aplica automático?": campo texto, editável exibindo Ativo/Inativo quando o campo desconto.idnaplicaautomatico estiver com respectivos valores 1/0. Ao editar o campo, o tipo do campo vira check-box marcada/desmarcada quando o campo desconto.idnaplicaautomatico estiver com respectivos valores 1/0
        • O valor da coluna é buscado / persistido com base no campo desconto.idnaplicaautomatico
      • "Percentual / Valor": campo numérico
        • O campo deve ser editável e obrigatório somente quando o campo "Aplica automático?" estiver marcado
        • O campo deve aceitar valores positivos e negativos (ainda que o campo esteja preenchido)
        • O valor da coluna é buscado / persistido com base na lógica a seguir:
          • Se sglmodeloaplicacao = PERC,
            • persistir/consultar do campo desconto.percentual
          • Se sglmodeloaplicacao = VAL
            • persistir/consultar do campo desconto.valor
      • Image Added "Oferta / Vitrine": Ícone clicável, que será implementado por esta documentação
      • Image Added "Editar": ícone clicável.
        • Quanto clicado, abre modal de vínculos de desconto com outras entidades
          • /* A modal já existe e não terá sua lógica alterada, portanto, não será detalhada na presente documentação */
      • Image Added"Remover": ícone clicável
        • Quando clicado, marca o registro da grid para deleção. A deleção efetiva ocorre após o acionamento do botão de ação "Gravar"
Painel
borderColorlightgray

03.03.01.01.01 Aplicação de filtro de faixapercentual de maneira fixa na busca de descontos

Contexto / Gatilho:

  • No ambiente Web, na configuração de busca de descontos (Configuração → Configuração pedido → Busca Produto → registro de DESCONTO)
    • Ao verificar os campos de filtro, tanto de busca por níveis como pelos filtros gerais

Lógica:

  • O sistema deverá remover a possibilidade de selecionar o registro "FAIXAPERCENTUAL", que atualmente pode ser selecionado opcionalmente.

Painel
borderColorlightgray

03.03.01.

02 Migration para diminuir impacto legado na aplicação de filtro fixo de faixapercentual

01.02 Implementação de filtragem fixa de descontos por faixa de aplicação

Contexto / Gatilho:

  • No ambiente Web / Mobile, no pedido de venda, na busca de cache de descontos dos produtos

Lógica:

  • O sistema deve em todas as buscas de níveis, e filtro geral, aplicar a cláusula WHERE a seguir:

Sem Formato
/* 
from desconto d
where case when sglmodeloaplicacao = 'PERC' then ${Campo % Desconto do contexto de item} between d.faixapercentualinicial and d.faixapercentualfinal 
else when sglmodeloaplicacao = 'VAL' then ${Campo R$ Desconto do contexto de item} between d.faixavalorminimo and d.faixavalormaximo end
*/
Painel
borderColorlightgray

03.03.02 Alteração de lógica de bloqueio de descontos na ausência de políticas encontradas

Contexto / Gatilho:

  • Nos ambientes Web/Mobile, no pedido de venda,
    • Ao alterar os campos de preço de venda / % desconto / R$ Desconto / Valor total desconto no contexto de itens

Lógica:

  • O sistema anteriormente, quando não encontrava registros de descontos no cache do item do pedido, permitia a inserção do desconto / acréscimo, desde que não superasse os campos tabelaprecoproduto.precominimo e tabelaprecoproduto.precomaximo

  • Agora, na ausência de um registro encontrado no cache de descontos do produto,
    • O sistema deverá bloquear a inserção de descontos / acréscimos (rollback), retornando mensagem: "Não há políticas de desconto cadastradas"