plans.py 4.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. from typing import Optional
  2. from pydantic import BaseModel, Field
  3. class PurchasePlanBase(BaseModel):
  4. plan_no: Optional[str] = Field(default=None, max_length=255, alias="planNo")
  5. plan_date: str = Field(max_length=255, alias="planDate")
  6. start_date: Optional[str] = Field(default=None, max_length=255, alias="startDate")
  7. end_date: Optional[str] = Field(default=None, max_length=255, alias="endDate")
  8. business_type: str = Field(max_length=255, alias="businessType")
  9. product_id: Optional[str] = Field(default=None, alias="productId")
  10. product: str = Field(max_length=255)
  11. specification: Optional[str] = Field(default=None, max_length=255)
  12. planned_quantity: float = Field(alias="plannedQuantity")
  13. vehicle_no: Optional[str] = Field(default="", max_length=255, alias="vehicleNo")
  14. customer_name: Optional[str] = Field(default=None, max_length=255, alias="customerName")
  15. remarks: Optional[str] = Field(default=None)
  16. execution_status: Optional[str] = Field(default=None, max_length=50, alias="executionStatus")
  17. executed_at: Optional[str] = Field(default=None, max_length=255, alias="executedAt")
  18. last_weighing_slip_id: Optional[str] = Field(default=None, alias="lastWeighingSlipId")
  19. executed_quantity: Optional[float] = Field(default=0, alias="executedQuantity")
  20. auto_generate_enabled: int = Field(default=0, alias="autoGenerateEnabled")
  21. auto_generate_end_month: Optional[str] = Field(
  22. default=None, max_length=7, alias="autoGenerateEndMonth"
  23. )
  24. auto_generate_last_month: Optional[str] = Field(
  25. default=None, max_length=7, alias="autoGenerateLastMonth"
  26. )
  27. model_config = {"from_attributes": True, "populate_by_name": True}
  28. class PurchasePlanCreate(BaseModel):
  29. plan_no: Optional[str] = Field(default=None, max_length=255, alias="planNo")
  30. plan_date: str = Field(max_length=255, alias="planDate")
  31. start_date: Optional[str] = Field(default=None, max_length=255, alias="startDate")
  32. end_date: Optional[str] = Field(default=None, max_length=255, alias="endDate")
  33. business_type: str = Field(max_length=255, alias="businessType")
  34. product_id: str = Field(alias="productId")
  35. planned_quantity: float = Field(alias="plannedQuantity")
  36. vehicle_no: Optional[str] = Field(default="", max_length=255, alias="vehicleNo")
  37. customer_name: Optional[str] = Field(default=None, max_length=255, alias="customerName")
  38. remarks: Optional[str] = Field(default=None)
  39. execution_status: Optional[str] = Field(default=None, max_length=50, alias="executionStatus")
  40. auto_generate_enabled: Optional[int] = Field(default=0, alias="autoGenerateEnabled")
  41. auto_generate_end_month: Optional[str] = Field(
  42. default=None, max_length=7, alias="autoGenerateEndMonth"
  43. )
  44. model_config = {"populate_by_name": True}
  45. class PurchasePlanUpdate(BaseModel):
  46. plan_no: Optional[str] = Field(default=None, max_length=255, alias="planNo")
  47. plan_date: Optional[str] = Field(default=None, max_length=255, alias="planDate")
  48. start_date: Optional[str] = Field(default=None, max_length=255, alias="startDate")
  49. end_date: Optional[str] = Field(default=None, max_length=255, alias="endDate")
  50. business_type: Optional[str] = Field(default=None, max_length=255, alias="businessType")
  51. product_id: Optional[str] = Field(default=None, alias="productId")
  52. product: Optional[str] = Field(default=None, max_length=255)
  53. specification: Optional[str] = Field(default=None, max_length=255)
  54. planned_quantity: Optional[float] = Field(default=None, alias="plannedQuantity")
  55. vehicle_no: Optional[str] = Field(default=None, max_length=255, alias="vehicleNo")
  56. customer_name: Optional[str] = Field(default=None, max_length=255, alias="customerName")
  57. remarks: Optional[str] = Field(default=None)
  58. execution_status: Optional[str] = Field(default=None, max_length=50, alias="executionStatus")
  59. executed_at: Optional[str] = Field(default=None, max_length=255, alias="executedAt")
  60. last_weighing_slip_id: Optional[str] = Field(default=None, alias="lastWeighingSlipId")
  61. executed_quantity: Optional[float] = Field(default=None, alias="executedQuantity")
  62. auto_generate_enabled: Optional[int] = Field(default=None, alias="autoGenerateEnabled")
  63. auto_generate_end_month: Optional[str] = Field(
  64. default=None, max_length=7, alias="autoGenerateEndMonth"
  65. )
  66. auto_generate_last_month: Optional[str] = Field(
  67. default=None, max_length=7, alias="autoGenerateLastMonth"
  68. )
  69. model_config = {"populate_by_name": True}
  70. class PurchasePlanRead(PurchasePlanBase):
  71. id: str
  72. is_deleted: int = Field(default=0, alias="isDeleted")
  73. created_at: str = Field(alias="createdAt")
  74. create_by: Optional[str] = Field(default=None, alias="createBy")
  75. create_by_name: Optional[str] = Field(default=None, alias="createByName")
  76. class PurchasePlanWithFillLink(PurchasePlanRead):
  77. fill_link_inventory_id: Optional[str] = Field(default=None, alias="fillLinkInventoryId")