feat: residues accounting
This commit is contained in:
		
							
								
								
									
										157
									
								
								routers/residues.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										157
									
								
								routers/residues.py
									
									
									
									
									
										Normal 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")
 | 
			
		||||
		Reference in New Issue
	
	Block a user