feat: residues accounting

This commit is contained in:
2025-01-14 21:35:39 +04:00
parent 1f26f94d96
commit d609c10edb
15 changed files with 776 additions and 10 deletions

View File

@@ -18,3 +18,4 @@ from .statistics import statistics_router
from .transaction import transaction_router
from .shipping import shipping_router
from .department import department_router
from .residues import residues_router

View File

@@ -16,8 +16,6 @@ client_router = APIRouter(
)
@client_router.get('/search', operation_id='search_clients')
async def search_clients(
name: str,
@@ -52,6 +50,18 @@ async def get_all_clients(
return await ClientService(session).get_all()
@client_router.get(
'/get/{client_id}',
operation_id='get_client',
response_model=ClientGetResponse
)
async def get_client(
session: Annotated[AsyncSession, Depends(get_session)],
client_id: int,
):
return await ClientService(session).get_by_id(client_id)
@client_router.post(
'/create',
operation_id='create_client_api',

157
routers/residues.py Normal file
View File

@@ -0,0 +1,157 @@
from io import BytesIO
from fastapi import APIRouter, Depends, Response, Query
from backend.dependecies import SessionDependency
from generators.residual_qr_code_generator import ResidualQRCodeGenerator
from schemas.residues import *
from services.auth import authorized_user
from services.residues import ResiduesService
residues_router = APIRouter(
prefix="/residues",
tags=["residues"],
)
@residues_router.get(
'/pallet/{pallet_id}',
response_model=GetResidualPalletResponse,
operation_id='get_residual_pallet',
dependencies=[Depends(authorized_user)],
)
async def get_pallet(
session: SessionDependency,
pallet_id: int,
):
return await ResiduesService(session).get_pallet(pallet_id)
@residues_router.post(
'/pallet',
response_model=CreateResidualPalletResponse,
operation_id='create_residual_pallet',
dependencies=[Depends(authorized_user)],
)
async def create_pallet(
session: SessionDependency,
request: CreateResidualPalletRequest,
):
return await ResiduesService(session).create_pallet(request)
@residues_router.delete(
'/pallet/{pallet_id}',
response_model=DeleteResidualPalletResponse,
operation_id='delete_residual_pallet',
dependencies=[Depends(authorized_user)],
)
async def delete_pallet(
session: SessionDependency,
pallet_id: int,
):
return await ResiduesService(session).delete_pallet(pallet_id)
@residues_router.post(
'/product',
response_model=CreateResidualProductResponse,
operation_id='create_residual_product',
dependencies=[Depends(authorized_user)],
)
async def create_residual_product(
session: SessionDependency,
request: CreateResidualProductRequest,
):
return await ResiduesService(session).create_residual_product(request)
@residues_router.post(
'/product/{residual_product_id}',
response_model=UpdateResidualProductResponse,
operation_id='update_residual_product',
dependencies=[Depends(authorized_user)],
)
async def update_residual_product(
session: SessionDependency,
request: UpdateResidualProductRequest,
residual_product_id: int,
):
return await ResiduesService(session).update_residual_product(request, residual_product_id)
@residues_router.delete(
'/product/{residual_product_id}',
response_model=DeleteResidualProductResponse,
operation_id='delete_residual_product',
dependencies=[Depends(authorized_user)],
)
async def delete_residual_product(
session: SessionDependency,
residual_product_id: int,
):
return await ResiduesService(session).delete_residual_product(residual_product_id)
@residues_router.get(
'/box/{box_id}',
response_model=GetResidualBoxResponse,
operation_id='get_residual_box',
dependencies=[Depends(authorized_user)],
)
async def get_box(
session: SessionDependency,
box_id: int,
):
return await ResiduesService(session).get_box(box_id)
@residues_router.post(
'/box',
response_model=CreateResidualBoxResponse,
operation_id='create_residual_box',
dependencies=[Depends(authorized_user)],
)
async def create_box(
session: SessionDependency,
request: CreateResidualBoxRequest,
):
return await ResiduesService(session).create_box(request)
@residues_router.delete(
'/box/{box_id}',
response_model=DeleteResidualBoxResponse,
operation_id='delete_residual_box',
dependencies=[Depends(authorized_user)],
)
async def delete_box(
session: SessionDependency,
box_id: int,
):
return await ResiduesService(session).delete_box(box_id)
@residues_router.post(
'/receipt',
response_model=LoadReceiptResponse,
operation_id='receipt',
)
async def receipt(
session: SessionDependency,
request: LoadReceiptRequest,
):
return await ResiduesService(session).load_receipt(request)
@residues_router.get(
"/pdf/",
operation_id="get_pdf",
)
async def generate_pdf(
session: SessionDependency,
pallet_ids: str = Query(""),
box_ids: str = Query(""),
):
pdf_file: BytesIO = await ResidualQRCodeGenerator(session).generate(pallet_ids, box_ids)
return Response(pdf_file.getvalue(), media_type="application/pdf")