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

@@ -4,6 +4,7 @@ from pydantic import field_validator
from schemas.barcode import BarcodeTemplateSchema
from schemas.base import BaseSchema, OkMessageSchema
from schemas.residues import ResidualBoxSchema, ResidualPalletSchema
# region Entities
@@ -27,6 +28,10 @@ class ClientSchema(BaseSchema):
details: ClientDetailsSchema | None = None
class ClientDetailedSchema(ClientSchema):
pallets: List[ResidualPalletSchema] = []
boxes: List[ResidualBoxSchema] = []
# endregion
# region Requests
@@ -66,6 +71,10 @@ class ClientGetAllResponse(BaseSchema):
clients: List[ClientSchema]
class ClientGetResponse(BaseSchema):
client: ClientDetailedSchema
class ClientCreateResponse(OkMessageSchema):
pass

133
schemas/residues.py Normal file
View File

@@ -0,0 +1,133 @@
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