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 git@github.com:MrHoss/django-sales-project.git cd django-sales-projectPara construir a imagem Docker e iniciar os containers, execute:
docker-compose up --buildApó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 migratemakemigrationscria novas migrações com base nas alterações feitas nos modelos.migrateaplica 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 createsuperuserSiga 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 downPara visualizar os logs dos containers, execute:
docker-compose logsOu 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": "clientea@example.com" }, ... ]POST /api/clientes/Corpo da Requisição:
{ "nome": "Cliente Novo", "email": "clientenovo@example.com" }PUT /api/clientes/{id}/Corpo da Requisição:
{ "nome": "Cliente Atualizado", "email": "clienteatualizado@example.com" }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": "vendedora@example.com" }, ... ]POST /api/vendedores/Corpo da Requisição:
{ "nome": "Vendedor Novo", "email": "vendedornovo@example.com" }PUT /api/vendedores/{id}/Corpo da Requisição:
{ "nome": "Vendedor Atualizado", "email": "vendedoratualizado@example.com" }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=pdfParâ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 serpdfouexcel. 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=excelParâ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 serpdfouexcel. O padrão épdf.