Mudanças entre as edições de "Projeto/Ourolux/Documentação/Normalizar Pedido"

De GeoSales
Ir para navegação Ir para pesquisar
 
(26 revisões intermediárias por 2 usuários não estão sendo mostradas)
Linha 1: Linha 1:
== Definição do que é normalizado ==
+
=Necessidade=
 +
Cliente precisa copiar um determinado pedido. Se o pedido a ser copiado tiver alguma pendência que impeça sua criação (Ex: estoque impeditivo), este pedido precisa ser normalizado para que possa ser criado no GeoSales.
  
Na necessidade da normalização tem isso:
+
== Definição do que é um pedido normalizado ==
 +
Um pedido normalizado '''A''' é a cópia de um pedido '''B''' sendo tratadas quaisquer pendências de criação, de maneira que o pedido '''A''' surja no GeoSales.
  
Se o pedido a ser copiado tiver alguma pendência [...], este pedido precisa ser normalizado para que possa ser criado no GeoSales. <sic>
+
== Solução declarativa ==
 +
Todo pedido deve poder ser normalizado pelo GeoSales. A normalização de um pedido só não resultará na criação de um novo pedido se o pedido a ser normalizado não possuir nenhum item sem alguma pendência.
  
Foi bem cíclica a definição. Eu esperava alguma coisa mais ou menos com esse sentido:
+
== Solução imperativa ==
  
Se o pedido a ser copiado tiver alguma pendência [...], essas pendências de criação são tratadas de modo que o um novo pedido surja no GeoSales. Esse '''novo pedido''' é o que é chamado de '''pedido normalizado'''.
 
  
== Autor? ==
+
== Cenários ==
 +
===Cenário Feliz===
 +
João normaliza um pedido que não tem nenhuma pendência
  
Caras, se liguem, façam login!
+
====Dado====
 +
*Vendedor: João
 +
*Pedido a ser normalizado: X
 +
*Itens:
 +
# Item '''A'''
 +
## Produto '''Cadeira de rodinhas'''
 +
## Quantidade 15
 +
# Organização '''SoftSite''' com estoque '''Copa'''
 +
# O estoque '''Copa''' tem o seguinte produto:
 +
## '''Cadeira de rodinhas''' com 20 unidades em estoque
  
É de graça e fácil
+
====Operação====
 +
João aciona o botão de normalizar pedido para normalizar o pedido X
  
== Solução vs implementação ==
+
====Assertivas====
 +
Foi criado um novo pedido '''X''''
 +
# O cabeçalho do pedido '''X'''' é idêntico ao do '''X''' nos seguintes campos:
 +
## Org Venda
 +
## Tab Preço
 +
## Cliente
 +
## Vendedor
 +
## Meio de pagamento
 +
## Condição de pagamento
 +
## Tipo movimento pedido
 +
# O cabeçalho do pedido '''X'''' difere do cabeçalho do '''X''' nos seguintes campos:
 +
## Data de emissão
 +
## Código do pedido
 +
## Data de entrega
 +
# A situação do pedido '''X'''' é nula
 +
# O pedido '''X'''' tem o item '''A''''
 +
# O item '''A'''' é idêntico ao item '''A''' do pedido '''X''' nos seguintes campos:
 +
## Produto
 +
## Referência usada
 +
## Quantidade
 +
## Desconto
 +
## Tipo de venda
 +
# '''X'''' não tem pendências
  
É sempre bom definir de modo separado a solução da implementação. Por exemplo, [[Validade de sincronismo de acordo com fuso horário do vendedor]] trata essa separação, onde a [[Validade de sincronismo de acordo com fuso horário do vendedor#Solução declarativa|solução]] dita as regras que devem ser seguidas na criação da implementação, enquanto que a [[Validade de sincronismo de acordo com fuso horário do vendedor#Pré-detalhes da informação imperativa|implementação]] trata de detalhes de como essas regras serão tratadas em um nível mais baixo, desde distribuição dos dados, explicação da estrutura das tabelas até mudanças necessárias em consultas no sistema.
+
===Cenário Feliz Alternativo===
 +
João normaliza um pedido que possui um item com desconto
  
== Cenário confuso ==
+
====Dado====
 +
*Vendedor: João
 +
*Pedido a ser normalizado: X
 +
*Itens:
 +
# Item '''A'''
 +
## Produto '''Cadeira de rodinhas'''
 +
## Desconto 10 %
 +
# Faixa de Preço (no momento da tiragem)
 +
## Valor Mínimo R$9,00
 +
## Valor Sugerido R$10,00
 +
## Valor Máximo R$12,00
 +
# Preço de Venda R$9,00
 +
*Produto '''Cadeira de rodinhas'''
 +
# Faixa de Preço atual (no momento de interação do vendedor)
 +
## Valor Mínimo R$45,00
 +
## Valor Sugerido R$50,00
 +
## Valor Máximo R$50,00
  
Cara, esses cenários estão pessimamente testáveis... Assim, eles não ajudam na capacidade de escrita do teste.
+
====Operação====
 +
João aciona o botão de normalizar pedido para normalizar o pedido X
  
Para ser facilmente testável, é melhor separar o cenário em Dados, Operação e Assertiva, como nos exemplos:
+
====Assertivas====
* [[Inserção Motivo de Cadastro de Pedidos#Cenários]]
+
Foi criado um novo pedido '''X''''
* [[Bonificação com Saldo Fixo#Cenários]]
+
# O cabeçalho do pedido '''X'''' é idêntico ao do '''X''' nos seguintes campos:
* [[Desconto negociado#Cenários]]
+
## Org Venda
* [[Observação de Nota Fiscal#Cenários]]
+
## Tab Preço
* [[Funcionalidade/Limite de crédito#Cenários de fluxo]]
+
## Cliente
 +
## Vendedor
 +
## Meio de pagamento
 +
## Condição de pagamento
 +
## Tipo movimento pedido
 +
# O cabeçalho do pedido '''X'''' difere do cabeçalho do '''X''' nos seguintes campos:
 +
## Data de emissão
 +
## Código do pedido
 +
## Data de entrega
 +
# A situação do pedido '''X'''' é nula
 +
# O pedido '''X'''' tem o item '''A''''
 +
# O item '''A'''' é idêntico ao item '''A''' do pedido '''X''' nos seguintes campos:
 +
## Produto
 +
## Referência usada
 +
## Quantidade
 +
## Desconto
 +
## Tipo de venda
 +
# O item '''A'''' difere do item '''A''' do pedido '''X''' nos seguintes campos:
 +
##Faixa Preço
 +
## Valor Mínimo R$45,00
 +
## Valor Sugerido R$50,00
 +
## Valor Máximo R$50,00
 +
## Preço de Venda R$45,00
 +
# '''X'''' não tem pendências
  
== Nome da página ==
+
===Cenário com um item com alguma pendência===
 +
João normaliza um pedido que possui alguma pendência
  
Gentes, o nome da página está <code>Projeto/Ourolux/Documentação/NormalizarPedido</code>, quando eu creio que deveria ser <code>Projeto/Ourolux/Documentação/Normalizar Pedido</code>, não?
+
====Dado====
 +
*Vendedor: João
 +
*Pedido a ser normalizado: X
 +
*Itens:
 +
# Item '''A'''
 +
## Produto '''Cadeira de rodinhas'''
 +
## Quantidade 15
 +
# Item '''B'''
 +
## Produto '''Banquinho'''
 +
## Quantidade 10
 +
# Organização '''SoftSite''' com estoque '''Copa'''
 +
# O estoque '''Copa''' tem os seguintes produtos:
 +
## '''Cadeira de rodinhas''' com 20 unidades em estoque
 +
## '''Banquinho''' com 5 unidades
 +
 
 +
====Operação====
 +
João aciona o botão de normalizar pedido para normalizar o pedido X
 +
 
 +
====Assertivas====
 +
# Foi criado um novo pedido '''X''''
 +
# O cabeçalho do pedido '''X'''' é idêntico ao do '''X''' nos seguintes campos:
 +
## Org Venda
 +
## Tab Preço
 +
## Cliente
 +
## Vendedor
 +
## Meio de pagamento
 +
## Condição de pagamento
 +
## Tipo movimento pedido
 +
# O cabeçalho do pedido '''X'''' difere do cabeçalho do '''X''' nos seguintes campos:
 +
## Data de emissão
 +
## Código de pedido
 +
## Data de entrega
 +
# A situação do pedido '''X'''' é nula
 +
# O pedido '''X'''' tem o item '''A''''
 +
# O item '''A'''' é idêntico ao item '''A''' do pedido '''X''' nos seguintes campos:
 +
## Produto
 +
## Referência usada
 +
## Quantidade
 +
## Desconto
 +
## Tipo de venda
 +
# '''X'''' não tem pendências
 +
 
 +
===Cenário com todos os itens com alguma pendência===
 +
João normaliza um pedido em que todos os itens possuem alguma pendência
 +
 
 +
====Dado====
 +
*Vendedor: João
 +
*Pedido a ser normalizado: X
 +
*Itens:
 +
# Item '''A'''
 +
## Produto '''Cadeira de rodinhas'''
 +
## Quantidade 15
 +
# Item '''B'''
 +
## Produto '''Banquinho'''
 +
## Quantidade 10
 +
# Organização '''SoftSite''' com estoque '''Copa'''
 +
# O estoque '''Copa''' tem os seguintes produtos:
 +
## '''Cadeira de rodinhas''' com 10 unidades em estoque
 +
## '''Banquinho''' com 5 unidades
 +
 
 +
====Operação====
 +
João aciona o botão de normalizar pedido para normalizar o pedido X
 +
 
 +
====Assertivas====
 +
# Novo pedido '''X'''' não foi criado

Edição atual tal como às 18h54min de 9 de dezembro de 2016

Necessidade

Cliente precisa copiar um determinado pedido. Se o pedido a ser copiado tiver alguma pendência que impeça sua criação (Ex: estoque impeditivo), este pedido precisa ser normalizado para que possa ser criado no GeoSales.

Definição do que é um pedido normalizado

Um pedido normalizado A é a cópia de um pedido B sendo tratadas quaisquer pendências de criação, de maneira que o pedido A surja no GeoSales.

Solução declarativa

Todo pedido deve poder ser normalizado pelo GeoSales. A normalização de um pedido só não resultará na criação de um novo pedido se o pedido a ser normalizado não possuir nenhum item sem alguma pendência.

Solução imperativa

Cenários

Cenário Feliz

João normaliza um pedido que não tem nenhuma pendência

Dado

  • Vendedor: João
  • Pedido a ser normalizado: X
  • Itens:
  1. Item A
    1. Produto Cadeira de rodinhas
    2. Quantidade 15
  2. Organização SoftSite com estoque Copa
  3. O estoque Copa tem o seguinte produto:
    1. Cadeira de rodinhas com 20 unidades em estoque

Operação

João aciona o botão de normalizar pedido para normalizar o pedido X

Assertivas

Foi criado um novo pedido X'

  1. O cabeçalho do pedido X' é idêntico ao do X nos seguintes campos:
    1. Org Venda
    2. Tab Preço
    3. Cliente
    4. Vendedor
    5. Meio de pagamento
    6. Condição de pagamento
    7. Tipo movimento pedido
  2. O cabeçalho do pedido X' difere do cabeçalho do X nos seguintes campos:
    1. Data de emissão
    2. Código do pedido
    3. Data de entrega
  3. A situação do pedido X' é nula
  4. O pedido X' tem o item A'
  5. O item A' é idêntico ao item A do pedido X nos seguintes campos:
    1. Produto
    2. Referência usada
    3. Quantidade
    4. Desconto
    5. Tipo de venda
  6. X' não tem pendências

Cenário Feliz Alternativo

João normaliza um pedido que possui um item com desconto

Dado

  • Vendedor: João
  • Pedido a ser normalizado: X
  • Itens:
  1. Item A
    1. Produto Cadeira de rodinhas
    2. Desconto 10 %
  2. Faixa de Preço (no momento da tiragem)
    1. Valor Mínimo R$9,00
    2. Valor Sugerido R$10,00
    3. Valor Máximo R$12,00
  3. Preço de Venda R$9,00
  • Produto Cadeira de rodinhas
  1. Faixa de Preço atual (no momento de interação do vendedor)
    1. Valor Mínimo R$45,00
    2. Valor Sugerido R$50,00
    3. Valor Máximo R$50,00

Operação

João aciona o botão de normalizar pedido para normalizar o pedido X

Assertivas

Foi criado um novo pedido X'

  1. O cabeçalho do pedido X' é idêntico ao do X nos seguintes campos:
    1. Org Venda
    2. Tab Preço
    3. Cliente
    4. Vendedor
    5. Meio de pagamento
    6. Condição de pagamento
    7. Tipo movimento pedido
  2. O cabeçalho do pedido X' difere do cabeçalho do X nos seguintes campos:
    1. Data de emissão
    2. Código do pedido
    3. Data de entrega
  3. A situação do pedido X' é nula
  4. O pedido X' tem o item A'
  5. O item A' é idêntico ao item A do pedido X nos seguintes campos:
    1. Produto
    2. Referência usada
    3. Quantidade
    4. Desconto
    5. Tipo de venda
  6. O item A' difere do item A do pedido X nos seguintes campos:
    1. Faixa Preço
    2. Valor Mínimo R$45,00
    3. Valor Sugerido R$50,00
    4. Valor Máximo R$50,00
    5. Preço de Venda R$45,00
  7. X' não tem pendências

Cenário com um item com alguma pendência

João normaliza um pedido que possui alguma pendência

Dado

  • Vendedor: João
  • Pedido a ser normalizado: X
  • Itens:
  1. Item A
    1. Produto Cadeira de rodinhas
    2. Quantidade 15
  2. Item B
    1. Produto Banquinho
    2. Quantidade 10
  3. Organização SoftSite com estoque Copa
  4. O estoque Copa tem os seguintes produtos:
    1. Cadeira de rodinhas com 20 unidades em estoque
    2. Banquinho com 5 unidades

Operação

João aciona o botão de normalizar pedido para normalizar o pedido X

Assertivas

  1. Foi criado um novo pedido X'
  2. O cabeçalho do pedido X' é idêntico ao do X nos seguintes campos:
    1. Org Venda
    2. Tab Preço
    3. Cliente
    4. Vendedor
    5. Meio de pagamento
    6. Condição de pagamento
    7. Tipo movimento pedido
  3. O cabeçalho do pedido X' difere do cabeçalho do X nos seguintes campos:
    1. Data de emissão
    2. Código de pedido
    3. Data de entrega
  4. A situação do pedido X' é nula
  5. O pedido X' tem o item A'
  6. O item A' é idêntico ao item A do pedido X nos seguintes campos:
    1. Produto
    2. Referência usada
    3. Quantidade
    4. Desconto
    5. Tipo de venda
  7. X' não tem pendências

Cenário com todos os itens com alguma pendência

João normaliza um pedido em que todos os itens possuem alguma pendência

Dado

  • Vendedor: João
  • Pedido a ser normalizado: X
  • Itens:
  1. Item A
    1. Produto Cadeira de rodinhas
    2. Quantidade 15
  2. Item B
    1. Produto Banquinho
    2. Quantidade 10
  3. Organização SoftSite com estoque Copa
  4. O estoque Copa tem os seguintes produtos:
    1. Cadeira de rodinhas com 10 unidades em estoque
    2. Banquinho com 5 unidades

Operação

João aciona o botão de normalizar pedido para normalizar o pedido X

Assertivas

  1. Novo pedido X' não foi criado