Após realizar todos os outros mapeamentos você deve mapear como o PlugFoods irá tratar os seus pedidos.
Mapeando seus dados no PlugFoods:
- Usuários
- Categorias
- Produtos
- Exceções
- Mesas e Cartões
Para os exemplos abaixo, foi levada em conta a seguinte estrutura de dados e tabelas no banco de dados:
Obtendo os produtos da mesa/cartão
Ao abrir uma mesa/cartão que já tenha produtos inseridos, esse SQL será executado para retornar esses itens.
Esse campo deve receber uma query SQL que retorne os produtos incluídos no pedido da mesa/cartão.
O formato dos registros retornados por essa query devem seguir esse padrão:
ID | PRODUTO | NOME | DESCRICAO | PRECO | QUANTIDADE | OBSERVACAO |
Número inteiro | Mesmo tipo da chave primária da tabela de produtos - ID do produto | Texto - nome do produto | Texto - descrição do produto |
Número real (float/decimal) - valor do produto |
Número inteiro |
Texto |
Para escrever a query SQL que retorna esses registros corretamente, o PlugFoods disponibiliza um parâmetro que deve ser utilizado no SELECT:
- [NUMERO_MESA_CARTAO]: esse parâmetro retorna o número da mesa que o PlugFoods precisa exibir os produtos.
Exemplo:
select produtos_pedido.ID, produtos_pedido.ID_PRODUTO as PRODUTO, produtos.NOME as NOME, produtos.DESCRICAO as DESCRICAO, produtos_pedido.QUANTIDADE as QUANTIDADE, produtos_pedido.OBSERVACAO as OBSERVACAO from produtos_pedido inner join produtos on produtos.id = produtos_pedido.id_produto inner join pedidos on pedidos.id = produtos_pedido.id_pedido where produtos_pedido.MESA = [NUMERO_MESA_CARTAO] and pedidos.status = 'ABERTO'
Obtendo as exceções dos produtos pedidos
Quando os produtos do pedido de uma mesa/cartão são exibidos, também serão exibidas as exceções desses produtos.
Exemplos de exceções: remover algum ingrediente, ponto da carne, adicionais, etc.
Para que as exceções solicitadas sejam exibidas corretamente junto aos produtos, é necessário que você informe um SELECT que retorne registros no seguinte formato:
ID | PRODUTO_PEDIDO | EXCECAO | NOME |
Número inteiro | Número inteiro - ID do produto do pedido | Número inteiro - ID da exceção solicitada | Texto - nome da exceção solicitada |
Para escrever a query SQL que retorna esses registros corretamente, o PlugFoods disponibiliza um parâmetro que deve ser utilizado no SELECT:
- [NUMERO_MESA_CARTAO]: esse parâmetro retorna o número da mesa que o PlugFoods precisa exibir as exceções.
Exemplo:
select distinct excecoes_produtos_pedido.ID, excecoes_produtos_pedido.ID_PRODUTO_PEDIDO as PRODUTO_PEDIDO, excecoes_produtos_pedido.ID_EXCECAO as EXCECAO, excecoes.NOME from excecoes_produtos_pedido inner join excecoes on excecoes.id = excecoes_produtos_pedido.ID_EXCECAO inner join pedidos on excecoes_produtos_pedido.ID_PEDIDO = pedidos.ID inner join produtos_pedido on produtos_pedido.id_pedido where pedidos.mesa = [NUMERO_MESA_CARTAO] and pedidos.`STATUS` = 'ABERTO'
Verificando se a mesa já tem um pedido aberto
Quando um usuário informar o número de uma mesa/cartão para lançar novos produtos, o PlugFoods fará uma verificação para confirmar se a mesa já possui um pedido em aberto ou se trata de um novo pedido.
Para verificar isso, o PlugBot executa a SQL informada e, caso a query não retorne resultados, o sistema assume que é um novo pedido e executa a query de criar um novo pedido. Caso contrário, será executada somente a query de inserir itens ao pedido.
Para que a verificação ocorra corretamente, os registros retornados devem ser do seguinte formato:
ID | PESSOAS |
Número inteiro | Número inteiro - valor informado no momento de criação da mesa/cartão. |
Para escrever a query SQL que retorna esses registros corretamente, o PlugFoods disponibiliza um parâmetro que deve ser utilizado no SELECT:
- [NUMERO_MESA_CARTAO]: esse parâmetro retorna o número da mesa que o PlugFoods precisa verificar se já existe um pedido.
Exemplo:
select id, pessoas from pedidos where mesa = [NUMERO_MESA_CARTAO]
and status = 'ABERTO'
Criando uma nova mesa/cartão
Caso a verificação anterior confirme que é necessário criar um novo pedido para a mesa/cartão, essa query será executada.
O PlugFoods disponibiliza alguns parâmetros para que você possa armazenar os dados necessários em seu banco de dados:
- NUMERO_MESA_CARTAO
- Número da mesa/cartão que está sendo criada.
- PESSOAS
- Número de pessoas que estão na mesa (ou utilizarão o cartão).
- ID_USUARIO
- ID do usuário que está criando o pedido da mesa/cartão.
- OBSERVAÇÃO
- Texto auxiliar caso necessite fazer alguma observação sobre o pedido.
- NOME_COMANDA
- Texto com o nome que o usuário definir para a comanda.
Exemplo de INSERT:
insert into pedidos (mesa, status, pessoas, observacao, comanda) values ([NUMERO_MESA_CARTAO], 'ABERTO', [PESSOAS],'[OBSERVACAO]','[NOME_COMANDA]')
Adicionando itens ao pedido de uma mesa/cartão
Durante a utilização do PlugFoods e o atendimento às mesas/cartões, os usuários precisarão adicionar os produtos ao pedido da mesa/cartão.
Para fazer essas inserções corretamente, o PlugFoods fornece os seguintes parâmetros acessíveis de dentro do INSERT:
- NUMERO_MESA_CARTAO
- Número da mesa/cartão que está sendo atendida.
- PESSOAS
- Número de pessoas que estão na mesa (ou utilizarão o cartão).
- PEDIDO
- ID do pedido que receberá o novo produto.
- PRODUTO
- ID do produto que será adicionado ao pedido.
- QUANTIDADE
- Quantidade (número inteiro) do produto solicitado.
- OBSERVACAO
- Texto auxiliar caso necessite fazer alguma observação sobre o produto ou pedido.
- ID_USUARIO
- ID do usuário que está atendendo e adicionando o produto ao pedido.
Nota: Os campos PRECO, PIZZA, ID_TAMANHO_PIZZA, são configurados conforme a utilização do MÓDULO DE PIZZA
Exemplo de INSERT de itens ao pedido de uma mesa/cartão:
insert into produtos_pedido ( id_pedido, id_produto, mesa, quantidade, observacao,
id_usuario ) values ( [PEDIDO], [PRODUTO], [NUMERO_MESA_CARTAO], [QUANTIDADE], '[OBSERVACAO]',
[ID_USUARIO] )
Definindo exceções para um produto
Com o PlugFoods você pode oferecer a seus clientes exceções sobre determinados produtos, como remover algum ingrediente ou solicitar adicionais a um produto.
Nota: leia mais sobre exceções em O que são exceções? e aprenda a mapeá-las em Como mapear exceções?
Depois que você mapeou as exceções, você pode associá-las a um produto de um pedido. Para isso, é necessário que você informe uma query SQL que insere um registro na tabela que armazena essas exceções específicas de um pedido.
Ao realizar o envio ou a leitura desse produto, o PlugFoods já o associará com a sua exceção solicitada.
Para fazer o INSERT corretamente, o PlugFoods disponibiliza os seguintes parâmetros acessíveis no SQL:
- NUMERO_MESA_CARTAO
- Número da mesa que o produto está sendo adicionado.
- PESSOAS
- Quantidade de pessoas na mesa/cartão.
- PEDIDO
- ID do pedido que o produto e exceção serão associados.
- PRODUTO
- ID do produto, o qual terá uma exceção associada a ele.
- PRODUTO_PEDIDO
- ID do registro da tabela PRODUTOS_PEDIDO
- EXCECAO
- ID da exceção que será associada ao produto
- QUANTIDADE
- Quantidade (número inteiro) do produto solicitado.
Exemplo de INSERT:
insert into excecoes_produtos_pedido (id_produto_pedido, id_excecao, id_pedido) values ( ( SELECT MAX(pp.ID) FROM produtos_pedido pp INNER JOIN pedidos p ON pp.id_pedido = p.id WHERE p.id = [PEDIDO] ), [EXCECAO], [PEDIDO] )
Obtendo o ID do último Pedido
Ao clicar em Salvar Pedido, essa SQL será executada após a SQL de criar pedido ser executada, com o valor desse retorno (ID_PEDIDO), as próximas execuções saberão em qual pedido deverão agir.
Esse SELECT deve retornar um registro com o seguinte formato:
ID_PEDIDO |
Número inteiro |
Segue um exemplo da query:
select max(id) as ID_PEDIDO from pedidos
Obtendo o ID_PEDIDO_PRODUTO do último Pedido
Ao clicar em Salvar pedido essa SQL será executado após o SQL de inserir itens ao pedido ser executado, com o valor do retorno desse (ID_PEDIDO_PRODUTO) sendo retornado as exceções serão inseridas.
Esse SELECT deve retornar um registro com o seguinte formato:
ID_PEDIDO_PRODUTO |
Número inteiro |
Segue um exemplo da query:
select max(id) as ID_PEDIDO_PRODUTO from produtos_pedido
Comentários
0 comentário
Por favor, entre para comentar.