mirror of
https://github.com/welton89/RRBEC.git
synced 2026-04-05 13:35:42 +00:00
doc: first docs
This commit is contained in:
9
doc/Banco de dados/Classes/Users.md
Normal file
9
doc/Banco de dados/Classes/Users.md
Normal file
@@ -0,0 +1,9 @@
|
||||
|
||||
| Key | Type | Name | Relacionamento |
|
||||
| ------- | ------ | ----------- | -------------- |
|
||||
| Primary | Int | Id | |
|
||||
| | String | Name | |
|
||||
| | String | Description | |
|
||||
| | String | Category | |
|
||||
| | Bool | Active | |
|
||||
| | Bool | Cuisine | |
|
||||
26
doc/Banco de dados/Diagrama de relacionamento.canvas
Normal file
26
doc/Banco de dados/Diagrama de relacionamento.canvas
Normal file
@@ -0,0 +1,26 @@
|
||||
{
|
||||
"nodes":[
|
||||
{"id":"51b34003d02babfc","type":"file","file":"Projeto_RRBEC/Banco de dados/Tabelas/Product.md","x":-1760,"y":-1800,"width":475,"height":340},
|
||||
{"id":"cfd2916b5847fd87","type":"file","file":"Projeto_RRBEC/Banco de dados/Tabelas/ProductComanda.md","x":-1760,"y":-1220,"width":475,"height":360},
|
||||
{"id":"4d7f06a28a8a7057","type":"file","file":"Projeto_RRBEC/Banco de dados/Tabelas/Category.md","x":-2440,"y":-1800,"width":460,"height":340},
|
||||
{"id":"374cb381ea448aa0","type":"file","file":"Projeto_RRBEC/Banco de dados/Tabelas/Orders.md","x":-2440,"y":-1220,"width":460,"height":360},
|
||||
{"id":"8fce51b4dd94dcec","type":"file","file":"Projeto_RRBEC/Banco de dados/Tabelas/Payments.md","x":-1040,"y":-1800,"width":520,"height":340},
|
||||
{"id":"28728857b04ab577","type":"file","file":"Projeto_RRBEC/Banco de dados/Tabelas/TypePay.md","x":-240,"y":-1800,"width":480,"height":340},
|
||||
{"id":"0921648553d53818","type":"file","file":"Projeto_RRBEC/Banco de dados/Tabelas/Client.md","x":-240,"y":-1220,"width":480,"height":360},
|
||||
{"id":"21e9a170de244d60","type":"file","file":"Projeto_RRBEC/Banco de dados/Tabelas/Comanda.md","x":-1040,"y":-1220,"width":520,"height":360},
|
||||
{"id":"e91a1fe3b7eb8aae","type":"file","file":"Projeto_RRBEC/Banco de dados/Tabelas/Users.md","x":-1040,"y":-640,"width":520,"height":360},
|
||||
{"id":"4c481d9434b816c3","type":"file","file":"Projeto_RRBEC/Banco de dados/Tabelas/Mesas.md","x":-240,"y":-640,"width":480,"height":360}
|
||||
],
|
||||
"edges":[
|
||||
{"id":"a4e5113b603c3e36","fromNode":"21e9a170de244d60","fromSide":"right","toNode":"4c481d9434b816c3","toSide":"left"},
|
||||
{"id":"b5c5875d1d735f4f","fromNode":"8fce51b4dd94dcec","fromSide":"bottom","toNode":"21e9a170de244d60","toSide":"top"},
|
||||
{"id":"85a77721fe0ea358","fromNode":"8fce51b4dd94dcec","fromSide":"right","toNode":"28728857b04ab577","toSide":"left"},
|
||||
{"id":"815b116a7bfc0e10","fromNode":"51b34003d02babfc","fromSide":"left","toNode":"4d7f06a28a8a7057","toSide":"right"},
|
||||
{"id":"70432be0f116ce71","fromNode":"cfd2916b5847fd87","fromSide":"right","toNode":"21e9a170de244d60","toSide":"left"},
|
||||
{"id":"6ef30263dbfc831e","fromNode":"cfd2916b5847fd87","fromSide":"top","toNode":"51b34003d02babfc","toSide":"bottom"},
|
||||
{"id":"0f74530a3a3ed84d","fromNode":"374cb381ea448aa0","fromSide":"right","toNode":"cfd2916b5847fd87","toSide":"left"},
|
||||
{"id":"4bc60b99bf9db9e0","fromNode":"21e9a170de244d60","fromSide":"right","toNode":"0921648553d53818","toSide":"left"},
|
||||
{"id":"d7656439c4fe066a","fromNode":"8fce51b4dd94dcec","fromSide":"right","toNode":"0921648553d53818","toSide":"left"},
|
||||
{"id":"ef9e50c93a92c176","fromNode":"21e9a170de244d60","fromSide":"bottom","toNode":"e91a1fe3b7eb8aae","toSide":"top"}
|
||||
]
|
||||
}
|
||||
425
doc/Banco de dados/Modelagem de Banco de Dados.md
Normal file
425
doc/Banco de dados/Modelagem de Banco de Dados.md
Normal file
@@ -0,0 +1,425 @@
|
||||
# Modelagem de Banco de Dados para BarApp, GarçomApp e Gestão do Bar
|
||||
|
||||
Este documento apresenta a modelagem de banco de dados proposta para suportar as funcionalidades dos aplicativos BarApp (cliente), GarçomApp (interno) e o novo Aplicativo de Gestão do Bar, incluindo as entidades, seus atributos e os relacionamentos entre elas.
|
||||
|
||||
## 1. Visão Geral do Modelo
|
||||
|
||||
O modelo de dados é projetado para ser relacional, utilizando chaves primárias (PK) e chaves estrangeiras (FK) para estabelecer os relacionamentos. Os tipos de dados são genéricos e devem ser adaptados ao SGBD (Sistema Gerenciador de Banco de Dados) escolhido (e.g., PostgreSQL, MySQL, SQL Server).
|
||||
|
||||
## 2. Tabelas e Atributos
|
||||
|
||||
### 2.1. `Usuarios` (Clientes do BarApp)
|
||||
|
||||
Armazena as informações dos usuários que utilizam o aplicativo cliente.
|
||||
|
||||
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||
|---|---|---|
|
||||
|`id_usuario`|UUID|PK (Chave Primária)|
|
||||
|`nome_completo`|VARCHAR(255)|NOT NULL|
|
||||
|`email`|VARCHAR(255)|NOT NULL, UNIQUE|
|
||||
|`senha_hash`|VARCHAR(255)|NOT NULL (Armazenar hash da senha)|
|
||||
|`id_google`|VARCHAR(255)|NULLABLE, UNIQUE (Para login social)|
|
||||
|`data_cadastro`|TIMESTAMP|NOT NULL, DEFAULT CURRENT_TIMESTAMP|
|
||||
|`ultimo_login`|TIMESTAMP|NULLABLE|
|
||||
|`limite_tickets_produto`|INTEGER|DEFAULT 10 (Regra de negócio: limite de tickets por produto)|
|
||||
|
||||
### 2.2. `Garcons` (Usuários do GarçomApp)
|
||||
|
||||
Armazena as informações dos funcionários do bar que utilizam o aplicativo interno.
|
||||
|
||||
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||
|---|---|---|
|
||||
|`id_garcom`|UUID|PK|
|
||||
|`nome_completo`|VARCHAR(255)|NOT NULL|
|
||||
|`usuario`|VARCHAR(50)|NOT NULL, UNIQUE (Nome de usuário para login)|
|
||||
|`senha_hash`|VARCHAR(255)|NOT NULL (Armazenar hash da senha)|
|
||||
|`data_cadastro`|TIMESTAMP|NOT NULL, DEFAULT CURRENT_TIMESTAMP|
|
||||
|`ativo`|BOOLEAN|NOT NULL, DEFAULT TRUE|
|
||||
|
||||
### 2.3. `Produtos`
|
||||
![[Product]]
|
||||
|
||||
Armazena os itens do cardápio do bar.
|
||||
|
||||
| Atributo | Tipo de Dado | Restrições/Observações |
|
||||
| ---------------- | -------------- | --------------------------------------------------------- |
|
||||
| `id_produto` | UUID | PK |
|
||||
| `nome` | VARCHAR(255) | NOT NULL |
|
||||
| `descricao` | TEXT | NULLABLE |
|
||||
| `preco` | DECIMAL(10, 2) | NOT NULL |
|
||||
| `custo_unitario` | DECIMAL(10, 2) | NULLABLE (Para cálculo de lucratividade) |
|
||||
| `estoque_atual` | INTEGER | NOT NULL, DEFAULT 0 |
|
||||
| `estoque_minimo` | INTEGER | DEFAULT 0 (Para alertas de estoque baixo) |
|
||||
| `url_imagem` | VARCHAR(255) | NULLABLE |
|
||||
| `disponivel` | BOOLEAN | NOT NULL, DEFAULT TRUE (Indica se está no cardápio ativo) |
|
||||
| `id_categoria` | UUID | FK para `CategoriasProduto` |
|
||||
|
||||
### 2.4. `CategoriasProduto`
|
||||
|
||||
Armazena as categorias dos produtos do cardápio.
|
||||
|
||||
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||
|---|---|---|
|
||||
|`id_categoria`|UUID|PK|
|
||||
|`nome_categoria`|VARCHAR(100)|NOT NULL, UNIQUE|
|
||||
|
||||
### 2.5. `Tickets`
|
||||
|
||||
Armazena os tickets comprados pelos clientes.
|
||||
|
||||
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||
|---|---|---|
|
||||
|`id_ticket`|UUID|PK|
|
||||
|`id_usuario`|UUID|FK para `Usuarios` (Usuário que comprou o ticket)|
|
||||
|`id_produto`|UUID|FK para `Produtos`|
|
||||
|`data_compra`|TIMESTAMP|NOT NULL, DEFAULT CURRENT_TIMESTAMP|
|
||||
|`data_validade`|TIMESTAMP|NULLABLE (Prazo de validade do ticket)|
|
||||
|`status`|ENUM|NOT NULL ('comprado', 'utilizado', 'transferido')|
|
||||
|`data_uso`|TIMESTAMP|NULLABLE (Data e hora em que o ticket foi utilizado)|
|
||||
|`id_comanda_origem`|UUID|NULLABLE, FK para `Comandas` (Se o ticket foi gerado de uma comanda paga)|
|
||||
|
||||
### 2.6. `HistoricoTickets`
|
||||
|
||||
Registra o histórico de eventos de cada ticket (compra, uso, transferência).
|
||||
|
||||
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||
|---|---|---|
|
||||
|`id_historico`|UUID|PK|
|
||||
|`id_ticket`|UUID|FK para `Tickets`|
|
||||
|`tipo_evento`|ENUM|NOT NULL ('compra', 'uso', 'transferencia_enviada', 'transferencia_recebida')|
|
||||
|`data_evento`|TIMESTAMP|NOT NULL, DEFAULT CURRENT_TIMESTAMP|
|
||||
|`id_usuario_origem`|UUID|NULLABLE, FK para `Usuarios` (Usuário que enviou/usou)|
|
||||
|`id_usuario_destino`|UUID|NULLABLE, FK para `Usuarios` (Usuário que recebeu)|
|
||||
|`observacoes`|TEXT|NULLABLE|
|
||||
|
||||
### 2.7. `CestasCompras`
|
||||
|
||||
Representa a cesta de compras temporária de um usuário.
|
||||
|
||||
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||
|---|---|---|
|
||||
|`id_cesta`|UUID|PK|
|
||||
|`id_usuario`|UUID|FK para `Usuarios`|
|
||||
|`data_criacao`|TIMESTAMP|NOT NULL, DEFAULT CURRENT_TIMESTAMP|
|
||||
|`status`|ENUM|NOT NULL ('ativa', 'finalizada', 'cancelada')|
|
||||
|
||||
### 2.8. `ItensCesta`
|
||||
|
||||
Armazena os produtos dentro de uma cesta de compras.
|
||||
|
||||
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||
|---|---|---|
|
||||
|`id_item_cesta`|UUID|PK|
|
||||
|`id_cesta`|UUID|FK para `CestasCompras`|
|
||||
|`id_produto`|UUID|FK para `Produtos`|
|
||||
|`quantidade`|INTEGER|NOT NULL, > 0|
|
||||
|`preco_unitario`|DECIMAL(10, 2)|NOT NULL|
|
||||
|
||||
### 2.9. `MetodosPagamento`
|
||||
|
||||
Tabela de lookup para os métodos de pagamento aceitos.
|
||||
|
||||
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||
|---|---|---|
|
||||
|`id_metodo`|INTEGER|PK|
|
||||
|`nome_metodo`|VARCHAR(50)|NOT NULL, UNIQUE ('Pix', 'Credito', 'Debito')|
|
||||
|
||||
### 2.10. `CartoesCadastrados`
|
||||
|
||||
Armazena os tokens de cartões de crédito/débito para pagamentos futuros. **Importante: Nunca armazenar dados sensíveis do cartão diretamente.**
|
||||
|
||||
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||
|---|---|---|
|
||||
|`id_cartao`|UUID|PK|
|
||||
|`id_usuario`|UUID|FK para `Usuarios`|
|
||||
|`ultimos_digitos`|VARCHAR(4)|NULLABLE (Para exibição ao usuário)|
|
||||
|`bandeira`|VARCHAR(50)|NULLABLE|
|
||||
|`token_pagamento`|VARCHAR(255)|NOT NULL (Token gerado pelo gateway de pagamento)|
|
||||
|`data_cadastro`|TIMESTAMP|NOT NULL, DEFAULT CURRENT_TIMESTAMP|
|
||||
|`ativo`|BOOLEAN|NOT NULL, DEFAULT TRUE|
|
||||
|
||||
### 2.11. `Eventos`
|
||||
|
||||
Armazena as informações dos eventos do bar.
|
||||
|
||||
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||
|---|---|---|
|
||||
|`id_evento`|UUID|PK|
|
||||
|`nome_evento`|VARCHAR(255)|NOT NULL|
|
||||
|`data_evento`|TIMESTAMP|NOT NULL|
|
||||
|`descricao`|TEXT|NULLABLE|
|
||||
|`preco_ingresso`|DECIMAL(10, 2)|NOT NULL|
|
||||
|`url_imagem`|VARCHAR(255)|NULLABLE|
|
||||
|`ativo`|BOOLEAN|NOT NULL, DEFAULT TRUE|
|
||||
|
||||
### 2.12. `Ingressos`
|
||||
|
||||
Armazena os ingressos comprados pelos clientes para eventos.
|
||||
|
||||
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||
|---|---|---|
|
||||
|`id_ingresso`|UUID|PK|
|
||||
|`id_usuario`|UUID|FK para `Usuarios`|
|
||||
|`id_evento`|UUID|FK para `Eventos`|
|
||||
|`nome_ingresso`|VARCHAR(255)|NULLABLE (Ex: "Ingresso Pista", "Ingresso VIP")|
|
||||
|`data_compra`|TIMESTAMP|NOT NULL, DEFAULT CURRENT_TIMESTAMP|
|
||||
|`data_uso`|TIMESTAMP|NULLABLE (Data e hora em que o ingresso foi validado)|
|
||||
|`status`|ENUM|NOT NULL ('comprado', 'utilizado')|
|
||||
|
||||
### 2.13. `FilaKaraoke`
|
||||
|
||||
Gerencia a fila de pessoas para o karaokê.
|
||||
|
||||
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||
|---|---|---|
|
||||
|`id_fila_karaoke`|UUID|PK|
|
||||
|`nome_cantor`|VARCHAR(255)|NOT NULL|
|
||||
|`nome_musica`|VARCHAR(255)|NULLABLE|
|
||||
|`posicao`|INTEGER|NOT NULL, UNIQUE (Ordem na fila)|
|
||||
|`data_entrada`|TIMESTAMP|NOT NULL, DEFAULT CURRENT_TIMESTAMP|
|
||||
|`status`|ENUM|NOT NULL ('na_fila', 'cantando', 'cantou')|
|
||||
|
||||
### 2.14. `Comandas`
|
||||
|
||||
Armazena as comandas de consumo dos clientes.
|
||||
|
||||
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||
|---|---|---|
|
||||
|`id_comanda`|UUID|PK|
|
||||
|`id_garcom`|UUID|FK para `Garcons` (Garçom que abriu a comanda)|
|
||||
|`id_usuario_cliente`|UUID|NULLABLE, FK para `Usuarios` (Se o cliente for identificado no app)|
|
||||
|`numero_mesa`|VARCHAR(50)|NULLABLE|
|
||||
|`nome_cliente`|VARCHAR(255)|NULLABLE (Nome do cliente, se não for usuário do app)|
|
||||
|`data_abertura`|TIMESTAMP|NOT NULL, DEFAULT CURRENT_TIMESTAMP|
|
||||
|`data_fechamento`|TIMESTAMP|NULLABLE|
|
||||
|`status`|ENUM|NOT NULL ('aberta', 'aguardando_pagamento', 'paga', 'fechada')|
|
||||
|`valor_total`|DECIMAL(10, 2)|NOT NULL, DEFAULT 0.00|
|
||||
|
||||
### 2.15. `ItensComanda`
|
||||
|
||||
Armazena os produtos adicionados a cada comanda.
|
||||
|
||||
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||
|---|---|---|
|
||||
|`id_item_comanda`|UUID|PK|
|
||||
|`id_comanda`|UUID|FK para `Comandas`|
|
||||
|`id_produto`|UUID|FK para `Produtos`|
|
||||
|`quantidade`|INTEGER|NOT NULL, > 0|
|
||||
|`preco_unitario`|DECIMAL(10, 2)|NOT NULL|
|
||||
|`status_cozinha`|ENUM|NOT NULL ('na_fila', 'preparando', 'pronto', 'entregue')|
|
||||
|`observacoes`|TEXT|NULLABLE|
|
||||
|
||||
### 2.16. `PagamentosComanda`
|
||||
|
||||
Registra os pagamentos efetuados para as comandas (total ou parcial).
|
||||
|
||||
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||
|---|---|---|
|
||||
|`id_pagamento_comanda`|UUID|PK|
|
||||
|`id_comanda`|UUID|FK para `Comandas`|
|
||||
|`id_usuario`|UUID|NULLABLE, FK para `Usuarios` (Se pago via BarApp)|
|
||||
|`valor_pago`|DECIMAL(10, 2)|NOT NULL|
|
||||
|`id_metodo_pagamento`|INTEGER|FK para `MetodosPagamento`|
|
||||
|`data_pagamento`|TIMESTAMP|NOT NULL, DEFAULT CURRENT_TIMESTAMP|
|
||||
|`tipo_pagamento`|ENUM|NOT NULL ('total', 'parcial')|
|
||||
|`id_transacao_gateway`|VARCHAR(255)|NULLABLE (ID da transação no gateway de pagamento)|
|
||||
|
||||
### 2.17. `Notificacoes`
|
||||
|
||||
Armazena as notificações para usuários (clientes ou garçons).
|
||||
|
||||
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||
|---|---|---|
|
||||
|`id_notificacao`|UUID|PK|
|
||||
|`id_usuario_destino`|UUID|NOT NULL (FK para `Usuarios` ou `Garcons` ou `Funcionarios`)|
|
||||
|`tipo_usuario_destino`|ENUM|NOT NULL ('cliente', 'garcom', 'gestao')|
|
||||
|`tipo_notificacao`|ENUM|NOT NULL ('pagamento_comanda', 'pedido_pronto', 'transferencia_ticket_recebida', 'estoque_baixo', 'novo_cadastro_cliente', 'novo_evento_criado')|
|
||||
|`mensagem`|TEXT|NOT NULL|
|
||||
|`data_envio`|TIMESTAMP|NOT NULL, DEFAULT CURRENT_TIMESTAMP|
|
||||
|`lida`|BOOLEAN|NOT NULL, DEFAULT FALSE|
|
||||
|`referencia_id`|UUID|NULLABLE (ID do ticket, comanda, etc. relacionado)|
|
||||
|
||||
### 2.18. `Funcionarios` (Usuários do Aplicativo de Gestão)
|
||||
|
||||
Armazena informações de todos os funcionários, incluindo aqueles que usam o GarçomApp e os administrativos.
|
||||
|
||||
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||
|---|---|---|
|
||||
|`id_funcionario`|UUID|PK|
|
||||
|`nome_completo`|VARCHAR(255)|NOT NULL|
|
||||
|`cpf`|VARCHAR(14)|NOT NULL, UNIQUE|
|
||||
|`data_contratacao`|DATE|NOT NULL|
|
||||
|`salario_base`|DECIMAL(10, 2)|NOT NULL|
|
||||
|`cargo`|VARCHAR(100)|NOT NULL|
|
||||
|`dados_bancarios`|TEXT|NULLABLE (Informações para pagamento, criptografadas)|
|
||||
|`usuario_sistema`|VARCHAR(50)|NULLABLE, UNIQUE (Para login no app de gestão)|
|
||||
|`senha_hash_sistema`|VARCHAR(255)|NULLABLE (Hash da senha para login no app de gestão)|
|
||||
|`ativo`|BOOLEAN|NOT NULL, DEFAULT TRUE|
|
||||
|`id_garcom_associado`|UUID|NULLABLE, FK para `Garcons` (Se for também um garçom)|
|
||||
|
||||
### 2.19. `PagamentosSalario`
|
||||
|
||||
Registra os pagamentos de salário efetuados aos funcionários.
|
||||
|
||||
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||
|---|---|---|
|
||||
|`id_pagamento`|UUID|PK|
|
||||
|`id_funcionario`|UUID|FK para `Funcionarios`|
|
||||
|`valor_bruto`|DECIMAL(10, 2)|NOT NULL|
|
||||
|`descontos`|DECIMAL(10, 2)|NOT NULL, DEFAULT 0.00|
|
||||
|`valor_liquido`|DECIMAL(10, 2)|NOT NULL|
|
||||
|`data_pagamento`|DATE|NOT NULL|
|
||||
|`periodo_referencia`|VARCHAR(20)|NOT NULL (Ex: "2025-05")|
|
||||
|`holerite_url`|VARCHAR(255)|NULLABLE (URL para PDF do holerite, se gerado)|
|
||||
|
||||
### 2.20. `Fornecedores`
|
||||
|
||||
Armazena informações dos fornecedores de mercadorias.
|
||||
|
||||
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||
|---|---|---|
|
||||
|`id_fornecedor`|UUID|PK|
|
||||
|`nome_fantasia`|VARCHAR(255)|NOT NULL|
|
||||
|`razao_social`|VARCHAR(255)|NULLABLE|
|
||||
|`cnpj`|VARCHAR(18)|NULLABLE, UNIQUE|
|
||||
|`contato`|VARCHAR(255)|NULLABLE (Telefone, E-mail)|
|
||||
|`endereco`|TEXT|NULLABLE|
|
||||
|
||||
### 2.21. `EntradasMercadoria`
|
||||
|
||||
Registra as entradas de mercadorias no estoque.
|
||||
|
||||
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||
|---|---|---|
|
||||
|`id_entrada`|UUID|PK|
|
||||
|`id_fornecedor`|UUID|FK para `Fornecedores`|
|
||||
|`data_entrada`|TIMESTAMP|NOT NULL, DEFAULT CURRENT_TIMESTAMP|
|
||||
|`numero_nota_fiscal`|VARCHAR(100)|NULLABLE|
|
||||
|`valor_total`|DECIMAL(10, 2)|NOT NULL|
|
||||
|`observacoes`|TEXT|NULLABLE|
|
||||
|`id_funcionario_responsavel`|UUID|FK para `Funcionarios` (Quem registrou a entrada)|
|
||||
|
||||
### 2.22. `ItensEntradaMercadoria`
|
||||
|
||||
Detalha os itens de cada entrada de mercadoria.
|
||||
|
||||
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||
|---|---|---|
|
||||
|`id_item_entrada`|UUID|PK|
|
||||
|`id_entrada`|UUID|FK para `EntradasMercadoria`|
|
||||
|`id_produto`|UUID|FK para `Produtos`|
|
||||
|`quantidade`|INTEGER|NOT NULL, > 0|
|
||||
|`custo_unitario_compra`|DECIMAL(10, 2)|NOT NULL (Custo na data da compra)|
|
||||
|
||||
### 2.23. `Permissoes`
|
||||
|
||||
Define os tipos de permissão para os usuários do aplicativo de gestão.
|
||||
|
||||
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||
|---|---|---|
|
||||
|`id_permissao`|UUID|PK|
|
||||
|`nome_permissao`|VARCHAR(100)|NOT NULL, UNIQUE (Ex: 'gerenciar_produtos', 'ver_dashboard_vendas')|
|
||||
|`descricao`|TEXT|NULLABLE|
|
||||
|
||||
### 2.24. `FuncionarioPermissoes`
|
||||
|
||||
Tabela de ligação para atribuir permissões a funcionários.
|
||||
|
||||
|Atributo|Tipo de Dado|Restrições/Observações|
|
||||
|---|---|---|
|
||||
|`id_funcionario_permissao`|UUID|PK|
|
||||
|`id_funcionario`|UUID|FK para `Funcionarios`|
|
||||
|`id_permissao`|UUID|FK para `Permissoes`|
|
||||
|
||||
## 3. Relacionamentos
|
||||
|
||||
Abaixo estão os principais relacionamentos entre as tabelas, incluindo as novas adições:
|
||||
|
||||
- **`Usuarios`**
|
||||
|
||||
- `Usuarios.id_usuario` 1:N `Tickets.id_usuario`
|
||||
|
||||
- `Usuarios.id_usuario` 1:N `CartoesCadastrados.id_usuario`
|
||||
|
||||
- `Usuarios.id_usuario` 1:N `Ingressos.id_usuario`
|
||||
|
||||
- `Usuarios.id_usuario` 1:N `HistoricoTickets.id_usuario_origem`
|
||||
|
||||
- `Usuarios.id_usuario` 1:N `HistoricoTickets.id_usuario_destino`
|
||||
|
||||
- `Usuarios.id_usuario` 1:N `CestasCompras.id_usuario`
|
||||
|
||||
- `Usuarios.id_usuario` 1:N `Comandas.id_usuario_cliente` (Opcional)
|
||||
|
||||
- `Usuarios.id_usuario` 1:N `PagamentosComanda.id_usuario` (Opcional)
|
||||
|
||||
- `Usuarios.id_usuario` 1:N `Notificacoes.id_usuario_destino` (quando `tipo_usuario_destino` é 'cliente')
|
||||
|
||||
- **`Garcons`**
|
||||
|
||||
- `Garcons.id_garcom` 1:N `Comandas.id_garcom`
|
||||
|
||||
- `Garcons.id_garcom` 1:N `Notificacoes.id_usuario_destino` (quando `tipo_usuario_destino` é 'garcom')
|
||||
|
||||
- `Garcons.id_garcom` 1:1 `Funcionarios.id_garcom_associado` (Opcional, se um garçom também for um funcionário de gestão)
|
||||
|
||||
- **`Produtos`**
|
||||
|
||||
- `Produtos.id_produto` 1:N `Tickets.id_produto`
|
||||
|
||||
- `Produtos.id_produto` 1:N `ItensCesta.id_produto`
|
||||
|
||||
- `Produtos.id_produto` 1:N `ItensComanda.id_produto`
|
||||
|
||||
- `Produtos.id_produto` 1:N `ItensEntradaMercadoria.id_produto`
|
||||
|
||||
- `Produtos.id_categoria` N:1 `CategoriasProduto.id_categoria`
|
||||
|
||||
- **`Tickets`**
|
||||
|
||||
- `Tickets.id_ticket` 1:N `HistoricoTickets.id_ticket`
|
||||
|
||||
- **`CestasCompras`**
|
||||
|
||||
- `CestasCompras.id_cesta` 1:N `ItensCesta.id_cesta`
|
||||
|
||||
- **`Eventos`**
|
||||
|
||||
- `Eventos.id_evento` 1:N `Ingressos.id_evento`
|
||||
|
||||
- **`Comandas`**
|
||||
|
||||
- `Comandas.id_comanda` 1:N `ItensComanda.id_comanda`
|
||||
|
||||
- `Comandas.id_comanda` 1:N `PagamentosComanda.id_comanda`
|
||||
|
||||
- `Comandas.id_comanda` 1:N `Tickets.id_comanda_origem` (Opcional)
|
||||
|
||||
- **`MetodosPagamento`**
|
||||
|
||||
- `MetodosPagamento.id_metodo` 1:N `PagamentosComanda.id_metodo_pagamento`
|
||||
|
||||
- **`Funcionarios`**
|
||||
|
||||
- `Funcionarios.id_funcionario` 1:N `PagamentosSalario.id_funcionario`
|
||||
|
||||
- `Funcionarios.id_funcionario` 1:N `EntradasMercadoria.id_funcionario_responsavel`
|
||||
|
||||
- `Funcionarios.id_funcionario` 1:N `FuncionarioPermissoes.id_funcionario`
|
||||
|
||||
- `Funcionarios.id_funcionario` 1:N `Notificacoes.id_usuario_destino` (quando `tipo_usuario_destino` é 'gestao')
|
||||
|
||||
- **`Fornecedores`**
|
||||
|
||||
- `Fornecedores.id_fornecedor` 1:N `EntradasMercadoria.id_fornecedor`
|
||||
|
||||
- **`EntradasMercadoria`**
|
||||
|
||||
- `EntradasMercadoria.id_entrada` 1:N `ItensEntradaMercadoria.id_entrada`
|
||||
|
||||
- **`Permissoes`**
|
||||
|
||||
- `Permissoes.id_permissao` 1:N `FuncionarioPermissoes.id_permissao`
|
||||
|
||||
|
||||
Esta modelagem expandida fornece uma base robusta para o desenvolvimento de todos os três aplicativos, garantindo a integridade, a organização e a escalabilidade dos dados para as operações do bar.
|
||||
16
doc/Banco de dados/Tabelas/Category.md
Normal file
16
doc/Banco de dados/Tabelas/Category.md
Normal file
@@ -0,0 +1,16 @@
|
||||
| Atributo | Tipo | Modificadores |
|
||||
| -------- | --------- | ---------------- |
|
||||
| id | AutoField | primary_key=True |
|
||||
| name | CharField | max_length=255 |
|
||||
|
||||
|
||||
**Modelo: `Category`**
|
||||
|
||||
Este modelo representa uma categoria de produto. Cada categoria possui os seguintes atributos:
|
||||
|
||||
* `id`: Um identificador único para cada categoria (chave primária). Este campo é preenchido automaticamente.
|
||||
* `name`: O nome da categoria (texto curto, máximo de 255 caracteres).
|
||||
|
||||
**Relacionamento:**
|
||||
|
||||
Os modelos `Product` e `Category` estão relacionados por meio de uma chave estrangeira. Cada produto pertence a uma categoria, e uma categoria pode ter vários produtos associados a ela.
|
||||
19
doc/Banco de dados/Tabelas/Client.md
Normal file
19
doc/Banco de dados/Tabelas/Client.md
Normal file
@@ -0,0 +1,19 @@
|
||||
|
||||
| Atributo | Tipo | Modificadores |
|
||||
| ---------- | ------------- | ------------------------------------- |
|
||||
| id | AutoField | primary_key=True |
|
||||
| name | CharField | max_length=255 |
|
||||
| debt | DecimalField | max_digits=10, decimal_places=2 |
|
||||
| created_at | DateTimeField | auto_now_add=True |
|
||||
| active | BooleanField | default=True |
|
||||
| contact | CharField | max_length=255, null=True, blank=True |
|
||||
|
||||
|
||||
A classe [[Client]] define um modelo de dados para representar um cliente no sistema. Ela contém os seguintes atributos:
|
||||
|
||||
* **id**: Um campo AutoField que serve como chave primária, identificando unicamente cada cliente. O Django gerencia esse campo automaticamente.
|
||||
* **name**: Um campo CharField que armazena o nome do cliente, com um limite máximo de 255 caracteres.
|
||||
* **debt**: Um campo DecimalField que representa o débito do cliente. Ele permite armazenar números decimais com precisão de até 10 dígitos, com 2 casas decimais.
|
||||
* **created\_at**: Um campo DateTimeField que registra a data e hora de criação do cliente. O valor é definido automaticamente quando o cliente é criado (auto\_now\_add=True).
|
||||
* **active**: Um campo BooleanField que indica se o cliente está ativo ou não. Por padrão, o valor é True.
|
||||
* **contact**: Um campo CharField para armazenar informações de contato do cliente, como telefone ou e-mail. Pode ser nulo (null=True) e em branco (blank=True) no banco de dados.
|
||||
27
doc/Banco de dados/Tabelas/Comanda.md
Normal file
27
doc/Banco de dados/Tabelas/Comanda.md
Normal file
@@ -0,0 +1,27 @@
|
||||
|
||||
| Atributo | Tipo | Modificadores |
|
||||
| -------- | ------------- | ------------------------------------------------------------- |
|
||||
| id | AutoField | primary_key=True |
|
||||
| mesa | ForeignKey | on_delete=models.CASCADE ([[Mesas]]) |
|
||||
| user | ForeignKey | on_delete=models.CASCADE ([[Projeto_RRBEC/Banco de dados/Tabelas/Users]]), null=False, blank=True |
|
||||
| type_pay | ForeignKey | on_delete=models.SET_NULL (TypePay), null=True |
|
||||
| dt_open | DateTimeField | auto_now_add=True |
|
||||
| dt_close | DateTimeField | null=True, blank=True |
|
||||
| client | ForeignKey | on_delete=models.SET_NULL ([[Client]]), null=True, blank=True |
|
||||
| name | CharField | max_length=255 |
|
||||
| status | CharField | max_length=255, default="OPEN" |
|
||||
|
||||
|
||||
A classe [[Comanda]] representa um pedido ou conta em um restaurante. Ela contém informações sobre a mesa em que o pedido foi feito, o usuário (garçom) responsável, a forma de pagamento, horários de abertura e fechamento, o cliente associado (se houver), um nome para a comanda e seu status.
|
||||
|
||||
**Atributos:**
|
||||
|
||||
* `id`: Identificador único da comanda (chave primária).
|
||||
* `mesa`: Mesa à qual a comanda está associada (chave estrangeira para a classe [[Mesas]]). Se a mesa for excluída, a comanda também será excluída (on\_delete=models.CASCADE).
|
||||
* `user`: Usuário (garçom) que abriu a comanda (chave estrangeira para a classe [[Projeto_RRBEC/Banco de dados/Tabelas/Users]]). Se o usuário for excluído, a comanda também será excluída (on\_delete=models.CASCADE). Pode ser nulo e em branco.
|
||||
* `type_pay`: Forma de pagamento utilizada na comanda (chave estrangeira para a classe TypePay ). Se a forma de pagamento for excluída, o campo `type_pay` da comanda será definido como `NULL` (on_delete=models.SET_NULL).
|
||||
* `dt_open`: Data e hora em que a comanda foi aberta. O valor é definido automaticamente ao criar a comanda (auto\_now\_add=True).
|
||||
* `dt_close`: Data e hora em que a comanda foi fechada. Pode ser nulo e em branco.
|
||||
* `client`: Cliente associado à comanda (chave estrangeira para a classe [[Client]]). Se o cliente for excluído, o campo `client` da comanda será definido como `NULL` (on\_delete=models.SET\_NULL). Pode ser nulo e em branco.
|
||||
* `name`: Nome da comanda (por exemplo, "Comanda da Mesa 5").
|
||||
* `status`: Status da comanda (por exemplo, "ABERTA", "FECHADA"). O valor padrão é "OPEN".
|
||||
14
doc/Banco de dados/Tabelas/Mesas.md
Normal file
14
doc/Banco de dados/Tabelas/Mesas.md
Normal file
@@ -0,0 +1,14 @@
|
||||
| Atributo | Tipo | Modificadores |
|
||||
| -------- | ------------ | ------------------------------------- |
|
||||
| id | AutoField | primary_key=True |
|
||||
| name | CharField | max_length=100 |
|
||||
| location | CharField | max_length=255, null=True, blank=True |
|
||||
| active | BooleanField | default=False |
|
||||
|
||||
|
||||
A classe [[Mesas]] representa uma mesa dentro do sistema. Cada mesa possui os seguintes atributos:
|
||||
|
||||
* `id`: Um identificador único para cada mesa, gerado automaticamente. Este campo é a chave primária da tabela.
|
||||
* `name`: O nome da mesa. Este campo é do tipo texto, com um limite de 100 caracteres.
|
||||
* `location`: A localização da mesa. Este campo é do tipo texto, com um limite de 255 caracteres. Pode ser nulo ou vazio.
|
||||
* `active`: Um indicador booleano que indica se a mesa está ativa ou não. Por padrão, é definido como `False`.
|
||||
40
doc/Banco de dados/Tabelas/Orders.md
Normal file
40
doc/Banco de dados/Tabelas/Orders.md
Normal file
@@ -0,0 +1,40 @@
|
||||
| Atributo | Tipo | Modificadores |
|
||||
| -------------- | ------------- | --------------------------------------------------------- |
|
||||
| id | AutoField | primary_key=True |
|
||||
| productComanda | ForeignKey | on_delete=models.SET_NULL ([[ProductComanda]]), null=True |
|
||||
| id_product | ForeignKey | on_delete=models.CASCADE ([[Product]]) |
|
||||
| id_comanda | ForeignKey | on_delete=models.CASCADE ([[Comanda]]) |
|
||||
| obs | TextField | blank=True, null=True |
|
||||
| queue | DateTimeField | auto_now_add=True |
|
||||
| preparing | DateTimeField | null=True, blank=True |
|
||||
| finished | DateTimeField | null=True, blank=True |
|
||||
| delivered | DateTimeField | null=True, blank=True |
|
||||
| canceled | DateTimeField | null=True, blank=True |
|
||||
|
||||
**Modelo: `Orders`**
|
||||
|
||||
A classe apresentada no arquivo [[Orders]] representa um modelo para rastrear o status de um pedido ao longo do tempo.
|
||||
|
||||
**Atributos:**
|
||||
|
||||
* `id`: Um identificador único para cada atualização de status do pedido (chave primária).
|
||||
* `productComanda`: Uma chave estrangeira que referencia o modelo [[ProductComanda]]. Se o `ProductComanda` for excluído, este campo será definido como `NULL`.
|
||||
* `id_product`: Uma chave estrangeira que referencia o modelo [[Product]]. Se o produto for excluído, o `ProductComanda` e, portanto, este pedido serão excluídos.
|
||||
* `id_comanda`: Uma chave estrangeira que referencia o modelo [[Comanda]]. Se a comanda for excluída, este pedido será excluído.
|
||||
* `obs`: Campo de texto para observações sobre o pedido.
|
||||
* `queue`: Data e hora em que o pedido foi colocado na fila.
|
||||
* `preparing`: Data e hora em que o pedido começou a ser preparado.
|
||||
* `finished`: Data e hora em que o pedido foi finalizado.
|
||||
* `delivered`: Data e hora em que o pedido foi entregue.
|
||||
* `canceled`: Data e hora se o pedido for cancelado. Campo pode ser nulo
|
||||
|
||||
**Relacionamentos:**
|
||||
|
||||
* `Orders` possui um relacionamento ForeignKey com [[ProductComanda]].
|
||||
* `Orders` possui um relacionamento ForeignKey com [[Product]].
|
||||
* `Orders` possui um relacionamento ForeignKey com [[Comanda]].
|
||||
|
||||
**Uso:**
|
||||
|
||||
Este modelo permite rastrear o progresso de um pedido desde o momento em que é colocado na fila até a entrega ou cancelamento. Ele fornece informações valiosas para análise de tempo de preparo, gargalos no processo e eficiência da equipe.
|
||||
|
||||
22
doc/Banco de dados/Tabelas/Payments.md
Normal file
22
doc/Banco de dados/Tabelas/Payments.md
Normal file
@@ -0,0 +1,22 @@
|
||||
| Atributo | Tipo | Modificadores |
|
||||
| ----------- | ------------- | ------------------------------------------------ |
|
||||
| id | AutoField | primary_key=True |
|
||||
| value | DecimalField | max_digits=10, decimal_places=2 |
|
||||
| type_pay | ForeignKey | on_delete=models.PROTECT ([[TypePay]]) |
|
||||
| comanda | ForeignKey | on_delete=models.PROTECT ([[Comanda]]) |
|
||||
| client | ForeignKey | null=True, on_delete=models.PROTECT ([[Client]]) |
|
||||
| description | CharField | max_length=255 |
|
||||
| datetime | DateTimeField | auto_now_add=True |
|
||||
|
||||
|
||||
A classe `Payments` é um modelo Django que representa os pagamentos realizados no sistema.
|
||||
|
||||
**Atributos:**
|
||||
|
||||
* `id`: Campo de identificação único para cada pagamento. É um `AutoField`, o que significa que é um campo que se incrementa automaticamente, definido como chave primária (`primary_key=True`).
|
||||
* `value`: Campo que armazena o valor do pagamento. É um `DecimalField` com um máximo de 10 dígitos, sendo 2 casas decimais (`max_digits=10, decimal_places=2`).
|
||||
* `type_pay`: Campo que armazena o tipo de pagamento. É um `ForeignKey` que se relaciona com o modelo [[TypePay]]. Quando um tipo de pagamento é excluído, o campo `type_pay` é protegido, impedindo a exclusão do tipo de pagamento se houver pagamentos associados a ele (`on_delete=models.PROTECT (TypePay)`).
|
||||
* `comanda`: Campo que armazena a comanda relacionada ao pagamento. É um `ForeignKey` que se relaciona com o modelo [[Comanda]]. Quando uma comanda é excluída, o campo `comanda` é protegido, impedindo a exclusão da comanda se houver pagamentos associados a ela (`on_delete=models.PROTECT (Comanda)`).
|
||||
* `client`: Campo que armazena o cliente relacionado ao pagamento. É um `ForeignKey` que se relaciona com o modelo [[Client]]. Pode ser nulo e, quando um cliente é excluído, o campo `client` é protegido, definindo o campo como `NULL` (`null=True, on_delete=models.PROTECT (Client)`).
|
||||
* `description`: Campo que armazena uma descrição do pagamento. É um `CharField` com um comprimento máximo de 255 caracteres (`max_length=255`).
|
||||
* `datetime`: Campo que armazena a data e hora em que o pagamento foi realizado. O valor é definido automaticamente ao criar o pagamento (`auto_now_add=True`).
|
||||
55
doc/Banco de dados/Tabelas/Product.md
Normal file
55
doc/Banco de dados/Tabelas/Product.md
Normal file
@@ -0,0 +1,55 @@
|
||||
|
||||
| Atributo | Tipo de Dado | Restrições/Observações |
|
||||
| ---------------- | -------------- | --------------------------------------------------------- |
|
||||
| `id_produto` | UUID | PK |
|
||||
| `nome` | VARCHAR(255) | NOT NULL |
|
||||
| `descricao` | TEXT | NULLABLE |
|
||||
| `preco` | DECIMAL(10, 2) | NOT NULL |
|
||||
| `custo_unitario` | DECIMAL(10, 2) | NULLABLE (Para cálculo de lucratividade) |
|
||||
| `estoque_atual` | INTEGER | NOT NULL, DEFAULT 0 |
|
||||
| `estoque_minimo` | INTEGER | DEFAULT 0 (Para alertas de estoque baixo) |
|
||||
| `url_imagem` | VARCHAR(255) | NULLABLE |
|
||||
| `disponivel` | BOOLEAN | NOT NULL, DEFAULT TRUE (Indica se está no cardápio ativo) |
|
||||
| `id_categoria` | UUID | FK para `CategoriasProduto` |
|
||||
|
||||
| Atributo | Tipo | Modificadores |
|
||||
| ----------- | ------------ | --------------------------------------- |
|
||||
| id | AutoField | primary_key=True |
|
||||
| name | CharField | max_length=100 |
|
||||
| description | TextField | null=True, blank=True |
|
||||
| image | ImageField | null=True, blank=True |
|
||||
| price | DecimalField | max_digits=10, decimal_places=2 |
|
||||
| quantity | IntegerField | null=False, default=0 |
|
||||
| category | ForeignKey | on_delete=models.CASCADE ([[Category]]) |
|
||||
| cuisine | BooleanField | default=False |
|
||||
| active | BooleanField | default=True |
|
||||
|
||||
|
||||
**Modelo: `Product`**
|
||||
|
||||
Este modelo representa um produto no sistema. Cada produto possui os seguintes atributos:
|
||||
|
||||
* `id`: Um identificador único para cada produto (chave primária). Este campo é preenchido automaticamente.
|
||||
* `name`: O nome do produto (texto curto, máximo de 100 caracteres).
|
||||
* `description`: Uma descrição detalhada do produto (texto longo). Pode ser deixada em branco.
|
||||
* `image`: Uma imagem associada ao produto. Pode ser deixada em branco.
|
||||
* `price`: O preço do produto (valor decimal com um total de 10 dígitos, incluindo 2 casas decimais).
|
||||
* `quantity`: A quantidade disponível em estoque (número inteiro). Por padrão, é 0.
|
||||
* `category`: A categoria à qual o produto pertence. É uma chave estrangeira que se relaciona ao modelo [[Category]]. Se uma categoria for excluída, todos os produtos associados a essa categoria também serão excluídos (`on_delete=models.CASCADE`).
|
||||
* `cuisine`: Um campo booleano que indica se o produto é preparado na cozinha. O valor padrão é `False`.
|
||||
* `active`: Um campo booleano que indica se o produto está ativo e disponível para venda. O valor padrão é `True`.
|
||||
|
||||
**Modelo: `Category`**
|
||||
|
||||
Este modelo representa uma categoria de produto. Cada categoria possui os seguintes atributos:
|
||||
|
||||
* `id`: Um identificador único para cada categoria (chave primária). Este campo é preenchido automaticamente.
|
||||
* `name`: O nome da categoria (texto curto, máximo de 255 caracteres).
|
||||
|
||||
**Relacionamento:**
|
||||
|
||||
Os modelos `Product` e `Category` estão relacionados por meio de uma chave estrangeira. Cada produto pertence a uma categoria, e uma categoria pode ter vários produtos associados a ela.
|
||||
|
||||
**Uso:**
|
||||
|
||||
Esses modelos são usados para definir a estrutura do banco de dados e facilitar a criação, leitura, atualização e exclusão (CRUD) de produtos e categorias no sistema. Eles são componentes essenciais para gerenciar o catálogo de produtos.
|
||||
31
doc/Banco de dados/Tabelas/ProductComanda.md
Normal file
31
doc/Banco de dados/Tabelas/ProductComanda.md
Normal file
@@ -0,0 +1,31 @@
|
||||
|
||||
| Atributo | Tipo | Modificadores |
|
||||
| --------- | ------------- | -------------------------------------- |
|
||||
| id | AutoField | primary_key=True |
|
||||
| comanda | ForeignKey | on_delete=models.CASCADE ([[Comanda]]) |
|
||||
| data_time | DateTimeField | auto_now_add=True |
|
||||
| product | ForeignKey | on_delete=models.PROTECT ([[Product]]) |
|
||||
| applicant | CharField | max_length=255, null=True, blank=True |
|
||||
|
||||
|
||||
|
||||
**Modelo: `ProductComanda`**
|
||||
|
||||
Este modelo representa um item individual dentro de um pedido (comanda). Ele atua como uma tabela de junção entre os modelos `Product` e `Comanda`, permitindo que uma comanda contenha múltiplos produtos e que um produto possa aparecer em múltiplas comandas.
|
||||
|
||||
**Atributos:**
|
||||
|
||||
* `id`: Um identificador único para cada entrada de produto em um pedido (chave primária). Este campo é preenchido automaticamente.
|
||||
* `comanda`: Uma chave estrangeira que referencia o modelo [[Comanda]]. Define a qual comanda este produto está associado. Se a comanda relacionada for excluída, todos os `ProductComanda` associados a ela também serão excluídos (`on_delete=models.CASCADE`).
|
||||
* `data_time`: A data e hora em que o produto foi adicionado à comanda. Este campo é preenchido automaticamente no momento da criação (`auto_now_add=True`).
|
||||
* `product`: Uma chave estrangeira que referencia o modelo [[Product]]. Define qual produto está sendo incluído na comanda. Se o produto relacionado for excluído, o `ProductComanda` permanecerá, mas o produto será protegido contra exclusão (`on_delete=models.PROTECT`).
|
||||
* `applicant`: Um campo de texto (CharField) que armazena o nome de quem solicitou o produto. Pode ser nulo ou em branco.
|
||||
|
||||
**Relacionamentos:**
|
||||
|
||||
* `ProductComanda` possui um relacionamento ForeignKey com [[Comanda]] (uma comanda pode ter vários produtos).
|
||||
* `ProductComanda` possui um relacionamento ForeignKey com [[Product]] (um produto pode estar em vários pedidos).
|
||||
|
||||
**Uso:**
|
||||
|
||||
Este modelo é crucial para rastrear quais produtos foram incluídos em cada pedido, bem como quando cada produto foi adicionado. Ele permite gerar relatórios de vendas por produto, analisar quais produtos são mais populares em determinados horários e gerenciar o estoque de forma eficiente. Através do campo `applicant` é possível saber quem solicitou o produto dentro da comanda.
|
||||
10
doc/Banco de dados/Tabelas/TypePay.md
Normal file
10
doc/Banco de dados/Tabelas/TypePay.md
Normal file
@@ -0,0 +1,10 @@
|
||||
| Atributo | Tipo | Modificadores |
|
||||
| -------- | --------- | ---------------- |
|
||||
| id | AutoField | primary_key=True |
|
||||
| name | CharField | max_length=255 |
|
||||
|
||||
|
||||
A classe [[TypePay]] (TipoPagamento) é um modelo Django que representa as formas de pagamento aceitas no sistema.
|
||||
|
||||
* **`id`**: Campo de identificação único para cada forma de pagamento. É um `AutoField`, o que significa que é um campo que se incrementa automaticamente, definido como chave primária (`primary_key=True`).
|
||||
* **`name`**: Campo que armazena o nome da forma de pagamento (ex: "Cartão de Crédito", "Boleto Bancário", "Pix"). É um `CharField` com um comprimento máximo de 255 caracteres (`max_length=255`).
|
||||
9
doc/Banco de dados/Tabelas/Users.md
Normal file
9
doc/Banco de dados/Tabelas/Users.md
Normal file
@@ -0,0 +1,9 @@
|
||||
|
||||
| Key | Type | Name | Relacionamento |
|
||||
| ------- | ------ | ----------- | -------------- |
|
||||
| Primary | Int | Id | |
|
||||
| | String | Name | |
|
||||
| | String | Description | |
|
||||
| | String | Category | |
|
||||
| | Bool | Active | |
|
||||
| | Bool | Cuisine | |
|
||||
Reference in New Issue
Block a user