doc: first docs

This commit is contained in:
2025-06-06 13:59:52 -03:00
parent da59da79ae
commit 99d17db5e6
28 changed files with 3125 additions and 0 deletions

View 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.

View 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.

View 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".

View 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`.

View 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.

View 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`).

View 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.

View 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.

View 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`).

View File

@@ -0,0 +1,9 @@
| Key | Type | Name | Relacionamento |
| ------- | ------ | ----------- | -------------- |
| Primary | Int | Id | |
| | String | Name | |
| | String | Description | |
| | String | Category | |
| | Bool | Active | |
| | Bool | Cuisine | |