134 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			134 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
from datetime import datetime
 | 
						|
from typing import Optional
 | 
						|
 | 
						|
from schemas.base import BaseSchema, OkMessageSchema
 | 
						|
from schemas.product import ProductSchema
 | 
						|
 | 
						|
 | 
						|
# region Entities
 | 
						|
 | 
						|
class ProductAndQuantitySchema(BaseSchema):
 | 
						|
    product_id: Optional[int]
 | 
						|
    quantity: Optional[int]
 | 
						|
 | 
						|
 | 
						|
class ResidualProductSchema(BaseSchema):
 | 
						|
    id: int
 | 
						|
    quantity: int
 | 
						|
    product: ProductSchema
 | 
						|
    pallet_id: Optional[int]
 | 
						|
    box_id: Optional[int]
 | 
						|
 | 
						|
 | 
						|
class ResidualBoxSchema(BaseSchema):
 | 
						|
    id: int
 | 
						|
    created_at: datetime
 | 
						|
    pallet_id: Optional[int]
 | 
						|
    client_id: Optional[int]
 | 
						|
    residual_products: list[ResidualProductSchema]
 | 
						|
 | 
						|
 | 
						|
class ResidualPalletSchema(BaseSchema):
 | 
						|
    id: int
 | 
						|
    created_at: datetime
 | 
						|
    boxes: list[ResidualBoxSchema]
 | 
						|
    residual_products: list[ResidualProductSchema]
 | 
						|
 | 
						|
 | 
						|
class CreateResidualProductSchema(ProductAndQuantitySchema):
 | 
						|
    pallet_id: Optional[int]
 | 
						|
    box_id: Optional[int]
 | 
						|
 | 
						|
 | 
						|
class UpdateResidualProductSchema(ProductAndQuantitySchema):
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
class ReceiptBoxSchema(BaseSchema):
 | 
						|
    products: list[ProductAndQuantitySchema]
 | 
						|
 | 
						|
 | 
						|
class ReceiptPalletSchema(BaseSchema):
 | 
						|
    products: list[ProductAndQuantitySchema]
 | 
						|
    boxes: list[ReceiptBoxSchema]
 | 
						|
 | 
						|
 | 
						|
# endregion
 | 
						|
 | 
						|
# region Requests
 | 
						|
 | 
						|
class CreateResidualPalletRequest(BaseSchema):
 | 
						|
    client_id: int
 | 
						|
 | 
						|
 | 
						|
class CreateResidualProductRequest(BaseSchema):
 | 
						|
    data: CreateResidualProductSchema
 | 
						|
 | 
						|
 | 
						|
class UpdateResidualProductRequest(BaseSchema):
 | 
						|
    data: UpdateResidualProductSchema
 | 
						|
 | 
						|
 | 
						|
class CreateResidualBoxRequest(BaseSchema):
 | 
						|
    client_id: Optional[int]
 | 
						|
    pallet_id: Optional[int]
 | 
						|
 | 
						|
 | 
						|
class LoadReceiptRequest(BaseSchema):
 | 
						|
    pallets: list[ReceiptPalletSchema]
 | 
						|
    boxes: list[ReceiptBoxSchema]
 | 
						|
    client_id: int
 | 
						|
 | 
						|
 | 
						|
class GetPdfRequest(BaseSchema):
 | 
						|
    pallet_ids: list[int]
 | 
						|
    box_ids: list[int]
 | 
						|
 | 
						|
 | 
						|
# endregion
 | 
						|
 | 
						|
# region Responses
 | 
						|
 | 
						|
class GetResidualPalletResponse(BaseSchema):
 | 
						|
    pallet: ResidualPalletSchema
 | 
						|
    client_id: int
 | 
						|
 | 
						|
 | 
						|
class CreateResidualPalletResponse(OkMessageSchema):
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
class DeleteResidualPalletResponse(OkMessageSchema):
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
class CreateResidualProductResponse(OkMessageSchema):
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
class UpdateResidualProductResponse(OkMessageSchema):
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
class GetResidualBoxResponse(BaseSchema):
 | 
						|
    box: ResidualBoxSchema
 | 
						|
    client_id: int
 | 
						|
 | 
						|
 | 
						|
class CreateResidualBoxResponse(OkMessageSchema):
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
class DeleteResidualBoxResponse(OkMessageSchema):
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
class DeleteResidualProductResponse(OkMessageSchema):
 | 
						|
    pass
 | 
						|
 | 
						|
 | 
						|
class LoadReceiptResponse(OkMessageSchema):
 | 
						|
    pass
 | 
						|
 | 
						|
# endregion
 |