from typing import Optional from pydantic import BaseModel, Field class WeighingSlipBase(BaseModel): vehicle_no: str = Field(max_length=255, alias="vehicleNo") plan_no: Optional[str] = Field(default=None, max_length=255, alias="planNo") product_id: Optional[str] = Field(default=None, alias="productId") cargo_name: str = Field(max_length=255, alias="cargoName") specification: Optional[str] = Field(default=None, max_length=255) business_type: str = Field(max_length=255, alias="businessType") batch_no: Optional[str] = Field(default=None, max_length=255, alias="batchNo") supplier: str = Field(max_length=255) consignee: str = Field(max_length=255) gross_weight: float = Field(alias="grossWeight") gross_weight_time: str = Field(max_length=255, alias="grossWeightTime") tare_weight: float = Field(alias="tareWeight") tare_weight_time: str = Field(max_length=255, alias="tareWeightTime") deduction: Optional[float] = Field(default=0) net_weight: float = Field(alias="netWeight") planned_quantity: Optional[float] = Field(default=None, alias="plannedQuantity") executed_quantity: Optional[float] = Field(default=None, alias="executedQuantity") purchase_plan_id: Optional[str] = Field(default=None, alias="purchasePlanId") inbound_outbound_id: Optional[str] = Field(default=None, alias="inboundOutboundId") weighing_point: Optional[str] = Field(default="山峡地磅", max_length=255, alias="weighingPoint") remarks: Optional[str] = Field(default=None) current_quantity: Optional[float] = Field(default=None, alias="currentQuantity") model_config = {"from_attributes": True, "populate_by_name": True} class WeighingSlipCreate(BaseModel): vehicle_no: str = Field(max_length=255, alias="vehicleNo") plan_no: Optional[str] = Field(default=None, max_length=255, alias="planNo") product_id: str = Field(alias="productId") business_type: str = Field(max_length=255, alias="businessType") batch_no: Optional[str] = Field(default=None, max_length=255, alias="batchNo") supplier: str = Field(max_length=255) consignee: str = Field(max_length=255) gross_weight: float = Field(default=0, alias="grossWeight") gross_weight_time: str = Field(default="", max_length=255, alias="grossWeightTime") tare_weight: float = Field(default=0, alias="tareWeight") tare_weight_time: str = Field(default="", max_length=255, alias="tareWeightTime") deduction: Optional[float] = Field(default=0) net_weight: float = Field(default=0, alias="netWeight") planned_quantity: Optional[float] = Field(default=None, alias="plannedQuantity") executed_quantity: Optional[float] = Field(default=None, alias="executedQuantity") purchase_plan_id: Optional[str] = Field(default=None, alias="purchasePlanId") inbound_outbound_id: Optional[str] = Field(default=None, alias="inboundOutboundId") weighing_point: Optional[str] = Field(default="山峡地磅", max_length=255, alias="weighingPoint") remarks: Optional[str] = Field(default=None) current_quantity: Optional[float] = Field(default=None, alias="currentQuantity") model_config = {"populate_by_name": True} class WeighingSlipUpdate(BaseModel): vehicle_no: Optional[str] = Field(default=None, max_length=255, alias="vehicleNo") plan_no: Optional[str] = Field(default=None, max_length=255, alias="planNo") product_id: Optional[str] = Field(default=None, alias="productId") cargo_name: Optional[str] = Field(default=None, max_length=255, alias="cargoName") specification: Optional[str] = Field(default=None, max_length=255) business_type: Optional[str] = Field(default=None, max_length=255, alias="businessType") batch_no: Optional[str] = Field(default=None, max_length=255, alias="batchNo") supplier: Optional[str] = Field(default=None, max_length=255) consignee: Optional[str] = Field(default=None, max_length=255) gross_weight: Optional[float] = Field(default=None, alias="grossWeight") gross_weight_time: Optional[str] = Field(default=None, max_length=255, alias="grossWeightTime") tare_weight: Optional[float] = Field(default=None, alias="tareWeight") tare_weight_time: Optional[str] = Field(default=None, max_length=255, alias="tareWeightTime") deduction: Optional[float] = Field(default=None) net_weight: Optional[float] = Field(default=None, alias="netWeight") planned_quantity: Optional[float] = Field(default=None, alias="plannedQuantity") executed_quantity: Optional[float] = Field(default=None, alias="executedQuantity") purchase_plan_id: Optional[str] = Field(default=None, alias="purchasePlanId") inbound_outbound_id: Optional[str] = Field(default=None, alias="inboundOutboundId") weighing_point: Optional[str] = Field(default=None, max_length=255, alias="weighingPoint") remarks: Optional[str] = Field(default=None) current_quantity: Optional[float] = Field(default=None, alias="currentQuantity") is_voided: Optional[int] = Field(default=None, alias="isVoided") model_config = {"populate_by_name": True} class WeighingSlipRead(WeighingSlipBase): id: str is_voided: int = Field(default=0, alias="isVoided") created_at: str = Field(alias="createdAt") create_by: Optional[str] = Field(default=None, alias="createBy") create_by_name: Optional[str] = Field(default=None, alias="createByName") inventory_date: Optional[str] = Field(default=None, alias="inventoryDate")