feat: modules, products, services, services kits
This commit is contained in:
74
modules/fulfillment_base/schemas/deal_product.py
Normal file
74
modules/fulfillment_base/schemas/deal_product.py
Normal file
@ -0,0 +1,74 @@
|
||||
from modules.fulfillment_base.schemas.product import ProductSchema
|
||||
from modules.fulfillment_base.schemas.product_service import ProductServiceSchema
|
||||
from schemas.base import BaseSchema, BaseResponse
|
||||
|
||||
|
||||
# region Entity
|
||||
|
||||
|
||||
class DealProductSchema(BaseSchema):
|
||||
deal_id: int
|
||||
product_id: int
|
||||
product: ProductSchema
|
||||
quantity: int
|
||||
comment: str
|
||||
product_services: list[ProductServiceSchema]
|
||||
|
||||
|
||||
class CreateDealProductSchema(BaseSchema):
|
||||
deal_id: int
|
||||
product_id: int
|
||||
quantity: int
|
||||
comment: str
|
||||
|
||||
|
||||
class UpdateDealProductSchema(BaseSchema):
|
||||
quantity: int
|
||||
comment: str
|
||||
|
||||
|
||||
# endregion
|
||||
|
||||
# region Request
|
||||
|
||||
|
||||
class CreateDealProductRequest(BaseSchema):
|
||||
entity: CreateDealProductSchema
|
||||
|
||||
|
||||
class UpdateDealProductRequest(BaseSchema):
|
||||
entity: UpdateDealProductSchema
|
||||
|
||||
|
||||
class DealProductAddKitRequest(BaseSchema):
|
||||
deal_id: int
|
||||
product_id: int
|
||||
kit_id: int
|
||||
|
||||
|
||||
# endregion
|
||||
|
||||
# region Response
|
||||
|
||||
|
||||
class GetDealProductsResponse(BaseSchema):
|
||||
items: list[DealProductSchema]
|
||||
|
||||
|
||||
class CreateDealProductResponse(BaseResponse):
|
||||
entity: DealProductSchema
|
||||
|
||||
|
||||
class UpdateDealProductResponse(BaseResponse):
|
||||
pass
|
||||
|
||||
|
||||
class DeleteDealProductResponse(BaseResponse):
|
||||
pass
|
||||
|
||||
|
||||
class DealProductAddKitResponse(BaseResponse):
|
||||
pass
|
||||
|
||||
|
||||
# endregion
|
||||
64
modules/fulfillment_base/schemas/deal_service.py
Normal file
64
modules/fulfillment_base/schemas/deal_service.py
Normal file
@ -0,0 +1,64 @@
|
||||
from modules.fulfillment_base.schemas.service import ServiceSchema
|
||||
from schemas.base import BaseSchema, BaseResponse
|
||||
|
||||
|
||||
# region Entity
|
||||
|
||||
|
||||
class DealServiceSchema(BaseSchema):
|
||||
deal_id: int
|
||||
service_id: int
|
||||
service: ServiceSchema
|
||||
quantity: int
|
||||
price: float
|
||||
is_fixed_price: bool
|
||||
|
||||
|
||||
class CreateDealServiceSchema(BaseSchema):
|
||||
deal_id: int
|
||||
service_id: int
|
||||
quantity: int
|
||||
price: float
|
||||
|
||||
|
||||
class UpdateDealServiceSchema(BaseSchema):
|
||||
quantity: int
|
||||
price: float
|
||||
is_fixed_price: bool
|
||||
|
||||
|
||||
# endregion
|
||||
|
||||
# region Request
|
||||
|
||||
|
||||
class CreateDealServiceRequest(BaseSchema):
|
||||
entity: CreateDealServiceSchema
|
||||
|
||||
|
||||
class UpdateDealServiceRequest(BaseSchema):
|
||||
entity: UpdateDealServiceSchema
|
||||
|
||||
|
||||
# endregion
|
||||
|
||||
# region Response
|
||||
|
||||
|
||||
class GetDealServicesResponse(BaseSchema):
|
||||
items: list[DealServiceSchema]
|
||||
|
||||
|
||||
class CreateDealServiceResponse(BaseResponse):
|
||||
entity: DealServiceSchema
|
||||
|
||||
|
||||
class UpdateDealServiceResponse(BaseResponse):
|
||||
pass
|
||||
|
||||
|
||||
class DeleteDealServiceResponse(BaseResponse):
|
||||
pass
|
||||
|
||||
|
||||
# endregion
|
||||
77
modules/fulfillment_base/schemas/product.py
Normal file
77
modules/fulfillment_base/schemas/product.py
Normal file
@ -0,0 +1,77 @@
|
||||
from typing import Optional
|
||||
|
||||
from schemas.base import BaseSchema, BaseResponse
|
||||
|
||||
|
||||
# region Entity
|
||||
|
||||
|
||||
class ProductImageSchema(BaseSchema):
|
||||
id: int
|
||||
product_id: int
|
||||
image_url: str
|
||||
|
||||
|
||||
class CreateProductSchema(BaseSchema):
|
||||
name: str
|
||||
article: str
|
||||
factory_article: str
|
||||
brand: Optional[str]
|
||||
color: Optional[str]
|
||||
composition: Optional[str]
|
||||
size: Optional[str]
|
||||
additional_info: Optional[str]
|
||||
|
||||
|
||||
class ProductSchema(CreateProductSchema):
|
||||
id: int
|
||||
|
||||
|
||||
class UpdateProductSchema(BaseSchema):
|
||||
name: Optional[str] = None
|
||||
article: Optional[str] = None
|
||||
factory_article: Optional[str] = None
|
||||
brand: Optional[str] = None
|
||||
color: Optional[str] = None
|
||||
composition: Optional[str] = None
|
||||
size: Optional[str] = None
|
||||
additional_info: Optional[str] = None
|
||||
|
||||
images: list[ProductImageSchema] | None = []
|
||||
|
||||
|
||||
# endregion
|
||||
|
||||
# region Request
|
||||
|
||||
|
||||
class CreateProductRequest(BaseSchema):
|
||||
entity: CreateProductSchema
|
||||
|
||||
|
||||
class UpdateProductRequest(BaseSchema):
|
||||
entity: UpdateProductSchema
|
||||
|
||||
|
||||
# endregion
|
||||
|
||||
# region Response
|
||||
|
||||
|
||||
class GetProductsResponse(BaseSchema):
|
||||
items: list[ProductSchema]
|
||||
|
||||
|
||||
class CreateProductResponse(BaseResponse):
|
||||
entity: ProductSchema
|
||||
|
||||
|
||||
class UpdateProductResponse(BaseResponse):
|
||||
pass
|
||||
|
||||
|
||||
class DeleteProductResponse(BaseResponse):
|
||||
pass
|
||||
|
||||
|
||||
# endregion
|
||||
69
modules/fulfillment_base/schemas/product_service.py
Normal file
69
modules/fulfillment_base/schemas/product_service.py
Normal file
@ -0,0 +1,69 @@
|
||||
from modules.fulfillment_base.schemas.service import ServiceSchema
|
||||
from schemas.base import BaseSchema, BaseResponse
|
||||
|
||||
|
||||
# region Entity
|
||||
|
||||
|
||||
class ProductServiceSchema(BaseSchema):
|
||||
deal_id: int
|
||||
product_id: int
|
||||
service_id: int
|
||||
service: ServiceSchema
|
||||
price: float
|
||||
is_fixed_price: bool
|
||||
|
||||
|
||||
class CreateProductServiceSchema(BaseSchema):
|
||||
deal_id: int
|
||||
product_id: int
|
||||
service_id: int
|
||||
price: float
|
||||
|
||||
|
||||
class UpdateProductServiceSchema(BaseSchema):
|
||||
price: float
|
||||
is_fixed_price: bool
|
||||
|
||||
|
||||
# endregion
|
||||
|
||||
# region Request
|
||||
|
||||
|
||||
class CreateProductServiceRequest(BaseSchema):
|
||||
entity: CreateProductServiceSchema
|
||||
|
||||
|
||||
class UpdateProductServiceRequest(BaseSchema):
|
||||
entity: UpdateProductServiceSchema
|
||||
|
||||
|
||||
class ProductServicesDuplicateRequest(BaseSchema):
|
||||
deal_id: int
|
||||
source_deal_product_id: int
|
||||
target_deal_product_ids: list[int]
|
||||
|
||||
|
||||
# endregion
|
||||
|
||||
# region Response
|
||||
|
||||
|
||||
class CreateProductServiceResponse(BaseResponse):
|
||||
entity: ProductServiceSchema
|
||||
|
||||
|
||||
class UpdateProductServiceResponse(BaseResponse):
|
||||
pass
|
||||
|
||||
|
||||
class DeleteProductServiceResponse(BaseResponse):
|
||||
pass
|
||||
|
||||
|
||||
class ProductServicesDuplicateResponse(BaseResponse):
|
||||
pass
|
||||
|
||||
|
||||
# endregion
|
||||
76
modules/fulfillment_base/schemas/service.py
Normal file
76
modules/fulfillment_base/schemas/service.py
Normal file
@ -0,0 +1,76 @@
|
||||
from typing import Optional
|
||||
|
||||
from schemas.base import BaseSchema, BaseResponse
|
||||
|
||||
|
||||
# region Entity
|
||||
|
||||
|
||||
class ServicePriceRangeSchema(BaseSchema):
|
||||
id: int | None
|
||||
from_quantity: int
|
||||
to_quantity: int
|
||||
price: float
|
||||
|
||||
|
||||
class ServiceCategorySchema(BaseSchema):
|
||||
id: int
|
||||
name: str
|
||||
deal_service_rank: str
|
||||
product_service_rank: str
|
||||
|
||||
|
||||
class ServiceSchema(BaseSchema):
|
||||
id: int
|
||||
name: str
|
||||
category: ServiceCategorySchema
|
||||
price: float
|
||||
service_type: int
|
||||
price_ranges: list[ServicePriceRangeSchema]
|
||||
cost: Optional[float]
|
||||
lexorank: str
|
||||
|
||||
|
||||
class UpdateServiceSchema(ServiceSchema):
|
||||
pass
|
||||
|
||||
|
||||
class CreateServiceSchema(ServiceSchema):
|
||||
pass
|
||||
|
||||
|
||||
# endregion
|
||||
|
||||
# region Request
|
||||
|
||||
|
||||
class CreateServiceRequest(BaseSchema):
|
||||
entity: CreateServiceSchema
|
||||
|
||||
|
||||
class UpdateServiceRequest(BaseSchema):
|
||||
entity: UpdateServiceSchema
|
||||
|
||||
|
||||
# endregion
|
||||
|
||||
# region Response
|
||||
|
||||
|
||||
class GetServicesResponse(BaseSchema):
|
||||
items: list[ServiceSchema]
|
||||
|
||||
|
||||
class CreateServiceResponse(BaseResponse):
|
||||
entity: ServiceSchema
|
||||
|
||||
|
||||
class UpdateServiceResponse(BaseResponse):
|
||||
pass
|
||||
|
||||
|
||||
class DeleteServiceResponse(BaseResponse):
|
||||
pass
|
||||
|
||||
|
||||
# endregion
|
||||
60
modules/fulfillment_base/schemas/services_kit.py
Normal file
60
modules/fulfillment_base/schemas/services_kit.py
Normal file
@ -0,0 +1,60 @@
|
||||
from modules.fulfillment_base.schemas.service import ServiceSchema
|
||||
from schemas.base import BaseSchema, BaseResponse
|
||||
|
||||
|
||||
# region Entity
|
||||
|
||||
|
||||
class BaseServicesKitSchema(BaseSchema):
|
||||
name: str
|
||||
service_type: int
|
||||
|
||||
|
||||
class ServicesKitSchema(BaseServicesKitSchema):
|
||||
id: int
|
||||
services: list[ServiceSchema]
|
||||
|
||||
|
||||
class CreateServicesKitSchema(BaseServicesKitSchema):
|
||||
services_ids: list[int]
|
||||
|
||||
|
||||
class UpdateServicesKitSchema(BaseServicesKitSchema):
|
||||
services_ids: list[int]
|
||||
|
||||
|
||||
# endregion
|
||||
|
||||
# region Request
|
||||
|
||||
|
||||
class CreateServicesKitRequest(BaseSchema):
|
||||
entity: CreateServicesKitSchema
|
||||
|
||||
|
||||
class UpdateServicesKitRequest(BaseSchema):
|
||||
entity: UpdateServicesKitSchema
|
||||
|
||||
|
||||
# endregion
|
||||
|
||||
# region Response
|
||||
|
||||
|
||||
class GetServicesKitResponse(BaseSchema):
|
||||
items: list[ServicesKitSchema]
|
||||
|
||||
|
||||
class CreateServicesKitResponse(BaseResponse):
|
||||
entity: ServicesKitSchema
|
||||
|
||||
|
||||
class UpdateServicesKitResponse(BaseResponse):
|
||||
pass
|
||||
|
||||
|
||||
class DeleteServicesKitResponse(BaseResponse):
|
||||
pass
|
||||
|
||||
|
||||
# endregion
|
||||
Reference in New Issue
Block a user