""" Options: Date: 2026-05-19 10:45:12 Version: 8.22 Tip: To override a DTO option, remove "#" prefix before updating BaseUrl: https://dev-api-booster.richemont.com #GlobalNamespace: #AddServiceStackTypes: True #AddResponseStatus: False #AddImplicitVersion: #AddDescriptionAsComments: True IncludeTypes: SimulateOrderV2.* #ExcludeTypes: #DefaultImports: datetime,decimal,marshmallow.fields:*,servicestack:*,typing:*,dataclasses:dataclass/field,dataclasses_json:dataclass_json/LetterCase/Undefined/config,enum:Enum/IntEnum #DataClass: #DataClassJson: """ import datetime import decimal from marshmallow.fields import * from servicestack import * from typing import * from dataclasses import dataclass, field from dataclasses_json import dataclass_json, LetterCase, Undefined, config from enum import Enum, IntEnum @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Address: # @ApiMember(Description="Address type e.g. Home, Office, Shipping", IsRequired=true) address_type: Optional[str] = None """ Address type e.g. Home, Office, Shipping """ # @ApiMember(Description="Country Id e.g. it, cn, az, gb, de", IsRequired=true) country_id: Optional[str] = None """ Country Id e.g. it, cn, az, gb, de """ # @ApiMember(Description="House Number") house_number: Optional[str] = None """ House Number """ # @ApiMember(Description="Region/State") state_id: Optional[str] = None """ Region/State """ # @ApiMember(Description="City Name") city: Optional[str] = None """ City Name """ # @ApiMember(Description="Postal Code") zip_code: Optional[str] = None """ Postal Code """ # @ApiMember(Description="Street Name and Number") street: Optional[str] = None """ Street Name and Number """ # @ApiMember(Description="Street 2") street2: Optional[str] = None """ Street 2 """ # @ApiMember(Description="Street 3") street3: Optional[str] = None """ Street 3 """ # @ApiMember(Description="Street 4") street4: Optional[str] = None """ Street 4 """ # @ApiMember(Description="Street 5") street5: Optional[str] = None """ Street 5 """ # @ApiMember(Description="Main Address", IsRequired=true) is_main_address: bool = False """ Main Address """ # @ApiMember(Description="Post Office Box") po_box: Optional[str] = None """ Post Office Box """ # @ApiMember(Description="Additional Information") additional_information: Optional[str] = None """ Additional Information """ @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class StrapItem: # @ApiMember(Description="Article reference") speaking_article_code: Optional[str] = None """ Article reference """ # @ApiMember(Description="Buckle type Description") buckle_type_description: Optional[str] = None """ Buckle type Description """ # @ApiMember(Description="Buckle type") buckle_type_code: Optional[str] = None """ Buckle type """ # @ApiMember(Description="watch 6 Length") watch6_length: Optional[int] = None """ watch 6 Length """ # @ApiMember(Description="watch 12 Length") watch12_length: Optional[int] = None """ watch 12 Length """ # @ApiMember(Description="Article Material Code") material_code: Optional[str] = None """ Article Material Code """ # @ApiMember(Description="Article Material Description") material_description: Optional[str] = None """ Article Material Description """ # @ApiMember(Description="Article Color Code") color_code: Optional[str] = None """ Article Color Code """ # @ApiMember(Description="Article Color Description") color_description: Optional[str] = None """ Article Color Description """ # @ApiMember(Description="Buckle Witdh") buckle_width: Optional[str] = None """ Buckle Witdh """ # @ApiMember(Description="Article Lining Code") lining_code: Optional[str] = None """ Article Lining Code """ # @ApiMember(Description="Article Lining Description") lining_description: Optional[str] = None """ Article Lining Description """ # @ApiMember(Description="Article Stitching Code") stitching_code: Optional[str] = None """ Article Stitching Code """ # @ApiMember(Description="Article Stitching Description") stitching_description: Optional[str] = None """ Article Stitching Description """ # @ApiMember(Description="Article Edge Code") edge_code: Optional[str] = None """ Article Edge Code """ # @ApiMember(Description="Article Edge Description") edge_description: Optional[str] = None """ Article Edge Description """ # @ApiMember(Description="Article Padding Code") padding_code: Optional[str] = None """ Article Padding Code """ # @ApiMember(Description="Article Padding Description") padding_description: Optional[str] = None """ Article Padding Description """ # @ApiMember(Description="Article Speciality Code") specialty_code: Optional[str] = None """ Article Speciality Code """ # @ApiMember(Description="Article Speciality Description") specialty_description: Optional[str] = None """ Article Speciality Description """ # @ApiMember(Description="Nuancier Code") nuancier_code: Optional[str] = None """ Nuancier Code """ # @ApiMember(Description="Strap Vip Order") is_strap_vip_order: Optional[bool] = None """ Strap Vip Order """ @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class SimulateOrderItemRequestV2: # @ApiMember(Description="Line Number", IsRequired=true) line_number: int = 0 """ Line Number """ # @ApiMember(Description="Reference ID of the article/product, e.g. 'CRWB520003'", IsRequired=true) article_code: Optional[str] = None """ Reference ID of the article/product, e.g. 'CRWB520003' """ # @ApiMember(Description="Desired quantity of the article", IsRequired=true) quantity: int = 0 """ Desired quantity of the article """ # @ApiMember(Description="Requested Delivery Date of the Item, e.g. '2020-12-30'") requested_delivery_date: Optional[datetime.datetime] = None """ Requested Delivery Date of the Item, e.g. '2020-12-30' """ # @ApiMember(Description="Purchase order type, e.g. 'WCFS', null. Null for ordinary order") order_type: Optional[str] = None """ Purchase order type, e.g. 'WCFS', null. Null for ordinary order """ # @ApiMember(Description="Final Ship To Pos Code") final_ship_to_id: Optional[str] = None """ Final Ship To Pos Code """ # @ApiMember(Description="Strap definition") strap: Optional[StrapItem] = None """ Strap definition """ @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class EndCustomerDetails: # @ApiMember(Description="Title of the end Customer, e.g. 'MR', 'MRS'.") title: Optional[str] = None """ Title of the end Customer, e.g. 'MR', 'MRS'. """ # @ApiMember(Description="First Name of the end Customer", IsRequired=true) first_name: Optional[str] = None """ First Name of the end Customer """ # @ApiMember(Description="Last Name of the end Customer", IsRequired=true) last_name: Optional[str] = None """ Last Name of the end Customer """ # @ApiMember(Description="Email of the end Customer") email: Optional[str] = None """ Email of the end Customer """ # @ApiMember(Description="Phone number of the end Customer, e.g. '0032477123456'. ") phone: Optional[str] = None """ Phone number of the end Customer, e.g. '0032477123456'. """ # @ApiMember(Description="Countr code in the shipping address, e.g. 'BE' (ISO Code)", IsRequired=true) country: Optional[str] = None """ Countr code in the shipping address, e.g. 'BE' (ISO Code) """ # @ApiMember(Description="City name in the shipping address", IsRequired=true) city: Optional[str] = None """ City name in the shipping address """ # @ApiMember(Description="Street name in the shipping address", IsRequired=true) street: Optional[str] = None """ Street name in the shipping address """ # @ApiMember(Description="House number in the shipping address") house_number: Optional[str] = None """ House number in the shipping address """ # @ApiMember(Description="Building number in the shipping address") building: Optional[str] = None """ Building number in the shipping address """ # @ApiMember(Description="Postal code in the shipping address") postal_code: Optional[str] = None """ Postal code in the shipping address """ # @ApiMember(Description="Region code in the shipping address, e.g. 'VL' (ISO Code)") region: Optional[str] = None """ Region code in the shipping address, e.g. 'VL' (ISO Code) """ # @ApiMember(Description="District name in the shipping address") district: Optional[str] = None """ District name in the shipping address """ # @ApiMember(Description="Additional Info number to the shipping address") additional_info: Optional[str] = None """ Additional Info number to the shipping address """ @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Quantity: # @ApiMember(Description="Unit", IsRequired=true) unit: Optional[str] = None """ Unit """ # @ApiMember(Description="Value", IsRequired=true) value: Decimal = decimal.Decimal(0) """ Value """ @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Amount: # @ApiMember(Description="Value", IsRequired=true) value: Decimal = decimal.Decimal(0) """ Value """ # @ApiMember(Description="Currency", IsRequired=true) currency: Optional[str] = None """ Currency """ @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class AmountAndQuantity: # @ApiMember(Description="Amount", IsRequired=true) amount: Optional[Amount] = None """ Amount """ # @ApiMember(Description="Base Quantity", IsRequired=true) base_quantity: Optional[Quantity] = None """ Base Quantity """ @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ItemTotalValues: # @ApiMember(Description="Requested Quantity") requested_quantity: Optional[Quantity] = None """ Requested Quantity """ # @ApiMember(Description="Confirmed Quantity") confirmed_quantity: Optional[Quantity] = None """ Confirmed Quantity """ # @ApiMember(Description="Available Quantity") available_quantity: Optional[Quantity] = None """ Available Quantity """ # @ApiMember(Description="Gross Weight") gross_weight_measure: Optional[Quantity] = None """ Gross Weight """ # @ApiMember(Description="Net Weight") net_weight_measure: Optional[Quantity] = None """ Net Weight """ # @ApiMember(Description="Volume") volume_measure: Optional[Quantity] = None """ Volume """ # @ApiMember(Description="Net Amount Line Total") net_amount: Optional[Amount] = None """ Net Amount Line Total """ # @ApiMember(Description="Net Price Line Total") net_price: Optional[AmountAndQuantity] = None """ Net Price Line Total """ # @ApiMember(Description="Tax Amount Line Total") tax_amount: Optional[Amount] = None """ Tax Amount Line Total """ # @ApiMember(Description="Retail Sales Price Line Total") retail_sales_price_amount: Optional[Amount] = None """ Retail Sales Price Line Total """ @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Warning: # @ApiMember(Description="Id", IsRequired=true) id: Optional[str] = None """ Id """ # @ApiMember(Description="Message", IsRequired=true) message: Optional[str] = None """ Message """ # @ApiMember(Description="Severity code, possible values: 1, 2, 3, 4", IsRequired=true) severity_code: int = 0 """ Severity code, possible values: 1, 2, 3, 4 """ @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class SimulateOrderItemResponseV2: # @ApiMember(Description="Line Number, e.g 20, 40, 21, 41", IsRequired=true) line_number: int = 0 """ Line Number, e.g 20, 40, 21, 41 """ # @ApiMember(Description="Parent Line Number, e.g 20, 40", IsRequired=true) parent_line_number: Optional[int] = None """ Parent Line Number, e.g 20, 40 """ # @ApiMember(Description="Original line number in the request. Line numbers are remapped after the split", IsRequired=true) request_line_number: int = 0 """ Original line number in the request. Line numbers are remapped after the split """ # @ApiMember(Description="Reference No of item, e.g.: CRWB521234", IsRequired=true) article_code: Optional[str] = None """ Reference No of item, e.g.: CRWB521234 """ # @ApiMember(Description="Substituted reference No of item, e.g.: CRWB520003") substituted_article_code: Optional[str] = None """ Substituted reference No of item, e.g.: CRWB520003 """ # @ApiMember(Description="DeliveryPlantId of item, e.g.: CHD6", IsRequired=true) delivery_plant_id: Optional[str] = None """ DeliveryPlantId of item, e.g.: CHD6 """ # @ApiMember(Description="Expected Delivery Date, e.g. '2020-12-30'") expected_delivery_date: Optional[str] = None """ Expected Delivery Date, e.g. '2020-12-30' """ # @ApiMember(Description="Buckle Summary, need to be forwarded to order creation") buckle_summary: Optional[str] = None """ Buckle Summary, need to be forwarded to order creation """ # @ApiMember(Description="Material Summary, need to be forwarded to order creation") material_summary: Optional[str] = None """ Material Summary, need to be forwarded to order creation """ # @ApiMember(Description="Content Summary, need to be forwarded to order creation") content_summary: Optional[str] = None """ Content Summary, need to be forwarded to order creation """ # @ApiMember(Description="Strap Summary, need to be forwarded to order creation") strap_summary: Optional[str] = None """ Strap Summary, need to be forwarded to order creation """ # @ApiMember(Description="Item Total Values", IsRequired=true) total_values: Optional[ItemTotalValues] = None """ Item Total Values """ # @ApiMember(Description="Warning list", IsRequired=true) warnings: Optional[List[Warning]] = None """ Warning list """ @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class TotalValues: # @ApiMember(Description="Gross Weight", IsRequired=true) gross_weight_measure: Optional[Quantity] = None """ Gross Weight """ # @ApiMember(Description="Net Weight", IsRequired=true) net_weight_measure: Optional[Quantity] = None """ Net Weight """ # @ApiMember(Description="Gross Volume", IsRequired=true) gross_volume_measure: Optional[Quantity] = None """ Gross Volume """ # @ApiMember(Description="Gross Amount", IsRequired=true) gross_amount: Optional[Amount] = None """ Gross Amount """ # @ApiMember(Description="Net Amount", IsRequired=true) net_amount: Optional[Amount] = None """ Net Amount """ # @ApiMember(Description="Tax Amount", IsRequired=true) tax_amount: Optional[Amount] = None """ Tax Amount """ @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Party: # @ApiMember(Description="Internal ID of the Element", IsRequired=true) id: Optional[str] = None """ Internal ID of the Element """ # @ApiMember(Description="Formatted Name of the Element", IsRequired=true) name: Optional[str] = None """ Formatted Name of the Element """ # @ApiMember(Description="Geographic Address of the Element") address: Optional[Address] = None """ Geographic Address of the Element """ @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class SplittedSimulateOrderResponse: # @ApiMember(Description="Order Type", IsRequired=true) order_type: Optional[str] = None """ Order Type """ # @ApiMember(Description="Product Type", IsRequired=true) product_type: Optional[str] = None """ Product Type """ # @ApiMember(Description="List of Articles simulated", IsRequired=true) order_items: Optional[List[SimulateOrderItemResponseV2]] = None """ List of Articles simulated """ # @ApiMember(Description="Total Values", IsRequired=true) total_values: Optional[TotalValues] = None """ Total Values """ # @ApiMember(Description="Addresses which order can be shipped to", IsRequired=true) ship_to: Optional[List[Party]] = None """ Addresses which order can be shipped to """ # @ApiMember(Description="Addresses which order can be final shipped to") final_ship_to: Optional[List[Party]] = None """ Addresses which order can be final shipped to """ # @ApiMember(Description="Addresses which order can be billed to", IsRequired=true) bill_to: Optional[List[Party]] = None """ Addresses which order can be billed to """ # @ApiMember(Description="Address which order is made to", IsRequired=true) sold_to: Optional[Party] = None """ Address which order is made to """ # @ApiMember(Description="Sales Representative") sales_representative: Optional[Party] = None """ Sales Representative """ # @ApiMember(Description="Warning list", IsRequired=true) warnings: Optional[List[Warning]] = None """ Warning list """ @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Address: # @ApiMember(Description="Country ID") country_id: Optional[str] = None """ Country ID """ # @ApiMember(Description="State ID") state_id: Optional[str] = None """ State ID """ # @ApiMember(Description="City Name") city: Optional[str] = None """ City Name """ # @ApiMember(Description="Street Name and Number") street: Optional[str] = None """ Street Name and Number """ # @ApiMember(Description="Postal Code") zip_code: Optional[str] = None """ Postal Code """ @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class SimulateOrderResponseV2: # @ApiMember(Description="List of splitted order simulation results", IsRequired=true) results: Optional[Dict[str, SplittedSimulateOrderResponse]] = None """ List of splitted order simulation results """ # @ApiMember(Description="Addresses which order can be shipped to (common list for all splitted orders)") ship_to: Optional[List[Party]] = None """ Addresses which order can be shipped to (common list for all splitted orders) """ # @ApiMember(Description="Addresses which order can be final shipped to (common list for all splitted orders)") final_ship_to: Optional[List[Party]] = None """ Addresses which order can be final shipped to (common list for all splitted orders) """ # @ApiMember(Description="Addresses which order can be billed to (common list for all splitted orders)") bill_to: Optional[List[Party]] = None """ Addresses which order can be billed to (common list for all splitted orders) """ # @ApiMember(Description="Address which order is made to (common list for all splitted orders)") sold_to: Optional[Party] = None """ Address which order is made to (common list for all splitted orders) """ # @ApiMember(Description="Sales representatives (common list for all splitted orders)") sales_representative: Optional[Party] = None """ Sales representatives (common list for all splitted orders) """ # @Route("/purchase/simulate/v2", "POST") @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class SimulateOrderV2(IReturn[SimulateOrderResponseV2]): # @ApiMember(Description="Brand Trigram of the intended Order, e.g. 'IWC', 'CAR', etc.", IsRequired=true) brand: Optional[str] = None """ Brand Trigram of the intended Order, e.g. 'IWC', 'CAR', etc. """ # @ApiMember(Description="Global Pos Code for the intended Order e.g. ES100:102048", IsRequired=true) pos_code: Optional[str] = None """ Global Pos Code for the intended Order e.g. ES100:102048 """ # @ApiMember(Description="Customer Reference") customer_reference: Optional[str] = None """ Customer Reference """ # @ApiMember(Description="Additional Notes regarding the Order") notes: Optional[str] = None """ Additional Notes regarding the Order """ # @ApiMember(Description="Purchase order date, e.g. '2020-12-31'") order_date: Optional[datetime.datetime] = None """ Purchase order date, e.g. '2020-12-31' """ # @ApiMember(Description="List of Articles to be simulated", IsRequired=true) order_items: Optional[List[SimulateOrderItemRequestV2]] = None """ List of Articles to be simulated """ # @ApiMember(Description="Booster1 ID of the end Customer") end_customer_booster1_id: Optional[str] = None """ Booster1 ID of the end Customer """ # @ApiMember(Description="Details of the end Customer") end_customer_details: Optional[EndCustomerDetails] = None """ Details of the end Customer """