Este documento fornece instruções para construir e executar a aplicação usando Docker e Docker Compose. A aplicação está configurada com Django REST Framework (DRF).
- Docker (versão recomendada 27.1.2 ou superior)
- Docker Compose (versão recomendada 2.29.2 ou superior)
Se você ainda não clonou o repositório, faça isso com o comando:
git clone [email protected]:MrHoss/django-sales-project.git
cd django-sales-project
Para construir a imagem Docker e iniciar os containers, execute:
docker-compose up --build
Após os containers estarem em execução, execute as seguintes migrações para configurar o banco de dados:
docker-compose exec web python manage.py makemigrations
docker-compose exec web python manage.py migrate
makemigrations
cria novas migrações com base nas alterações feitas nos modelos.migrate
aplica essas migrações ao banco de dados.
Se você precisar criar um superusuário para acessar o painel de administração do Django, use o comando:
docker-compose exec web python manage.py createsuperuser
Siga as instruções no terminal para definir um nome de usuário, e-mail e senha para o superusuário.
Para parar os containers em execução e remover os containers, redes e volumes criados, use:
docker-compose down
Para visualizar os logs dos containers, execute:
docker-compose logs
Ou para um container específico:
docker-compose logs <nome-do-serviço>
Substitua <nome-do-serviço>
pelo nome do serviço definido no docker-compose.yml
, como web.
GET /api/produtos/
Exemplo de Resposta:
[
{
"id": 1,
"nome": "Produto A",
"preco": "100.00",
"descricao": "Descrição do Produto A"
},
...
]
POST /api/produtos/
Corpo da Requisição:
{
"nome": "Produto Novo",
"preco": "150.00",
"descricao": "Descrição do Novo Produto"
}
PUT /api/produtos/{id}/
Corpo da Requisição:
{
"nome": "Produto Atualizado",
"preco": "200.00",
"descricao": "Descrição Atualizada"
}
DELETE /api/produtos/{id}/
GET /api/clientes/
Exemplo de Resposta:
[
{
"id": 1,
"nome": "Cliente A",
"email": "[email protected]"
},
...
]
POST /api/clientes/
Corpo da Requisição:
{
"nome": "Cliente Novo",
"email": "[email protected]"
}
PUT /api/clientes/{id}/
Corpo da Requisição:
{
"nome": "Cliente Atualizado",
"email": "[email protected]"
}
DELETE /api/clientes/{id}/
GET /api/grupo_produto/
Exemplo de Resposta:
[
{
"id": 1,
"nome": "Grupo A"
},
...
]
POST /api/grupo_produto/
Corpo da Requisição:
{
"nome": "Grupo Novo"
}
PUT /api/grupo_produto/{id}/
Corpo da Requisição:
{
"nome": "Grupo Atualizado"
}
DELETE /api/grupo_produto/{id}/
GET /api/vendas/
Exemplo de Resposta:
[
{
"id": 1,
"cliente": 1,
"vendedor": 1,
"data_venda": "2024-08-20",
"total": "500.00",
"itens": [
{
"produto": 1,
"quantidade": 2,
"preco": "100.00"
},
...
]
},
...
]
POST /api/vendas/
Corpo da Requisição:
{
"cliente": 1,
"vendedor": 1,
"data_venda": "2024-08-20",
"itens": [
{
"produto": 1,
"quantidade": 2
},
...
]
}
PUT /api/vendas/{id}/
Corpo da Requisição:
{
"cliente": 1,
"vendedor": 1,
"data_venda": "2024-08-20",
"itens": [
{
"id": 1,
"produto": 1,
"quantidade": 3
},
...
]
}
DELETE /api/vendas/{id}/
GET /api/vendedores/
Exemplo de Resposta:
[
{
"id": 1,
"nome": "Vendedor A",
"email": "[email protected]"
},
...
]
POST /api/vendedores/
Corpo da Requisição:
{
"nome": "Vendedor Novo",
"email": "[email protected]"
}
PUT /api/vendedores/{id}/
Corpo da Requisição:
{
"nome": "Vendedor Atualizado",
"email": "[email protected]"
}
DELETE /api/vendedores/{id}/
Para gerar um relatório em PDF das vendas, use a seguinte rota:
GET /api/relatorios/vendas/?data_inicial=2024-01-01&data_final=2024-12-31&vendedor=Shirley&cliente=Maria&format=pdf
Parâmetros:
data_inicial
(opcional): Data inicial para o filtro de vendas no formatoYYYY-MM-DD
.data_final
(opcional): Data final para o filtro de vendas no formatoYYYY-MM-DD
.vendedor
(opcional): Nome do vendedor para filtrar as vendas.cliente
(opcional): Nome do cliente para filtrar as vendas.format
(opcional): O formato do relatório. Pode serpdf
ouexcel
. O padrão épdf
.
Para gerar um relatório em Excel das vendas, use a seguinte rota:
GET /api/relatorios/vendas/?data_inicial=2024-01-01&data_final=2024-12-31&vendedor=Shirley&cliente=Maria&format=excel
Parâmetros:
data_inicial
(opcional): Data inicial para o filtro de vendas no formatoYYYY-MM-DD
.data_final
(opcional): Data final para o filtro de vendas no formatoYYYY-MM-DD
.vendedor
(opcional): Nome do vendedor para filtrar as vendas.cliente
(opcional): Nome do cliente para filtrar as vendas.format
(opcional): O formato do relatório. Pode serpdf
ouexcel
. O padrão épdf
.