Bonificação com Saldo Fixo
Necessidade
É preciso que um vendedor possa tirar pedidos de bonificação para clientes consumindo um saldo específico para bonificação de cada cliente. Quando esse saldo for consumido por completo o sistema não permitirá a tiragem de pedidos de bonificação para o cliente cujo saldo esteja zerado.
Solução Declarativa
Será preciso criar uma estrutura de saldo de bonificação por cliente. Esse saldo será consumido de acordo com que os pedidos de bonificações forem utilizados. Para deixar a solução mais genérica e flexível pode-se vincular a tabela do saldo o tipo de movimento pedido em vez de forçar o saldo somente para bonificação.
Deve-se criar um listener para fazer a validação do saldo no momento de salvar o pedido. Caso não aja saldo suficiente deve-se mostra um alerta e impedir que o pedido seja salvo (Os fluxos explicam melhor essa situação).
Será preciso também criar no portal um crud para que o saldo de bonificação seja mantido pelo próprio usuário do sistema, não necessitando assim de trabalho da integração e passando a gerência para o usuário.
Regras de Negócio
- [RN1] - Saldo de Bonificação: Como forma de incentivar a compra por parte de novos clientes é dado ao cliente um valor para ser usado como bonificação. Então deve ser possível cadastrar um saldo de bonificação para o cliente que poderá ser utilizado pelo vendedor. Esse saldo não será incrementado, apenas será decrescido conforme for sendo efetuado a tiragem de pedidos de bonificação;
- [RN2] - Validação: Caso o cliente não tenha saldo disponível para bonificar o pedido que está sendo efetuado, o sistema não poderá salvar o pedido. Essa regra se aplicará a todos os pedidos de bonificação;
- [RN3] - Utilização do Saldo: o vendedor poderá utilizar o saldo de bonificação enquanto houver saldo, ou seja, o sistema validará somente se existe saldo disponível para a bonificação.
Pré Detalhes da Solução Imperativa
- TABELA
SALDO_BONI_CLIENTE
- CAMPOS
- CD_CLIENTE INT PK
- CD_TIPO_MOVIMENTO_PEDIDO INT PK
- SALDO DECIMAL(18,6) NOT NULL
Cenários
Happy Day
- O usuário acessa o Sistema Geosales Mobile e efetua login;
- O usuário escolhe o cliente que deseja efetuar uma bonificação e acessa a tela de pedido, insere as informações necessárias do cabeçalho do pedido;
- O Usuário seleciona a opção de cadastro de itens do pedido;
- O Usuário acessa a aba de produtos;
- O Sistema Geosales Mobile mostra os produtos cadastrados para o cliente escolhido.
- O Usuário escolhe os produtos desejados e os insere no pedido [RE1].
- O Usuário verifica se todos os dados do pedido estão corretos e tudo estando correto ele clica em finalizar o pedido.
- O Sistema Geosales Mobile | Sistema Geosales Portal verifica se o cliente apresenta saldo de bonificação maior ou igual que o valor do pedido [RN1] [RN2] [RN3] [A1];
- O Sistema Geosales Mobile | Sistema Geosales Portal debita do saldo de bonificação do cliente o valor do pedido;
- O Sistema Geosales Mobile | Sistema Geosales Portal salva o pedido;
- Fim do caso de uso;
Fluxos Alternativos
- [A1] - Saldo de Bonificação Insuficiente
- Este fluxo alternativo se inicia quando o Sistema Geosales Mobile | Sistema Geosales Portal verifica que o cliente não apresenta saldo de bonificação suficiente para a tiragem do pedido;
- O Sistema Geosales Mobile | Sistema Geosales Portal retorna uma mensagem informando ao usuário que não existe saldo de bonificação suficiente para que o pedido seja salvo;
- O usuário remove os itens do pedido para que o valor do pedido atinja o valor permitido pelo saldo de bonificação que o cliente ao qual ele está tirando pedido tem;
- O Sistema Geosales Mobile | Sistema Geosales Portal verifica se o cliente apresenta saldo de bonificação maior ou igual que o valor do pedido [RN1] [RN2] [RN3] [A1];
- O Sistema Geosales Mobile | Sistema Geosales Portal debita do saldo de bonificação do cliente o valor do pedido;
- O Sistema Geosales Mobile | Sistema Geosales Portal salva o pedido;
- Fim do caso de uso;
- [A2] - Edição de pedidos
- Este fluxo alternativo se inicia quando o Usuário decide alterar alguma informação de um pedido já salvo que não foi exportado para o ERP;
- O Usuário acessa a tela de listagem de pedidos, seleciona um pedido de bonificação não exportado e clica em editar pedido;
- O Sistema Geosales Mobile | Sistema Geosales Portal identifica que é uma edição e recupera o saldo que tinha sido utilizado pelo pedido que estava sendo salvo;
- O usuário faz as alterações no pedido e clica em salvar;
- O Sistema Geosales Mobile | Sistema Geosales Portal verifica se o cliente apresenta saldo de bonificação maior ou igual que o valor do pedido [RN1] [RN2] [RN3] [A1];
- O Sistema Geosales Mobile | Sistema Geosales Portal debita do saldo de bonificação do cliente o valor do pedido;
- O Sistema Geosales Mobile | Sistema Geosales Portal salva o pedido;
- Fim do caso de uso;
- [A3] - Exclusão de pedidos
- Este fluxo alternativo se inicia quando o Usuário decide excluir um pedido já salvo que não foi exportado para o ERP;
- O Usuário acessa a tela de listagem de pedidos, seleciona um pedido de bonificação e clica em excluir o pedido;
- O Sistema Geosales Mobile | Sistema Geosales Portal pede uma confirmação para a exclusão do pedido;
- O Usuário confirma a exclusão do pedido;
- O Sistema Geosales Mobile | Sistema Geosales Portal exclui o pedido da base de dados e atualiza o saldo de bonificação para aquele cliente somando o valor do pedido excluído ao saldo;
- Fim do caso de uso;