""" Options: Date: 2026-02-14 11:39:20 Version: 10.04 Tip: To override a DTO option, remove "#" prefix before updating BaseUrl: https://stf-api-uat.data-xchange.co.za #GlobalNamespace: #AddServiceStackTypes: True #AddResponseStatus: False #AddImplicitVersion: #AddDescriptionAsComments: True IncludeTypes: GetReceivingAdviceById.* #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 Object = TypeVar('Object') class IGetDocumentById(ISingleEntityQuery): pass class ISingleEntityQuery: id: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class DocumentIdentification: identifier: Optional[str] = None type: Optional[str] = None creation_date_and_time: datetime.datetime = datetime.datetime(1, 1, 1) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Identifier: authority: Optional[str] = None text: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ContactInformation: pass @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Partner: identifier: Optional[Identifier] = None contact_information: List[ContactInformation] = field(default_factory=list) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Header: document_identification: Optional[DocumentIdentification] = None sender: Optional[Partner] = None receiver: Optional[Partner] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class AvpList: code: Optional[str] = None value: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Ecom_PartyIdentificationType: gln: Optional[str] = None name: Optional[str] = None additional_party_identification: List[AvpList] = field(default_factory=list) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CommunicationChannel: communication_channel_code: Optional[str] = None communication_channel_name: Optional[str] = None communication_value: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Contact: contact_type_code: Optional[str] = None person_name: Optional[str] = None department_name: Optional[str] = None job_title: Optional[str] = None responsibility: Optional[str] = None communication_channel: List[CommunicationChannel] = field(default_factory=list) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Address: street_address_one: Optional[str] = None street_address_two: Optional[str] = None street_address_three: Optional[str] = None city: Optional[str] = None postal_code: Optional[str] = None province_code: Optional[str] = None country_code: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class FinancialRoutingNumber: number: Optional[str] = None number_type_code: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class FinancialAccount: number: Optional[str] = None number_type_code: Optional[str] = None name: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class FinancialInstitutionInformation: financial_institution_branch_name: Optional[str] = None financial_institution_name: Optional[str] = None financial_routing_number: Optional[FinancialRoutingNumber] = None financial_account: Optional[FinancialAccount] = None swift_code: Optional[str] = None exporters_code: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class TransactionalParty(Ecom_PartyIdentificationType): contact: List[Contact] = field(default_factory=list) address: Optional[Address] = None communication_channel: List[AvpList] = field(default_factory=list) financial_institution_information: Optional[FinancialInstitutionInformation] = None duty_fee_tax_registration: Optional[str] = None entity_identification: Optional[str] = None class DocumentAction(str, Enum): ADD = 'ADD' CHANGE_BY_REFRESH = 'CHANGE_BY_REFRESH' DELETE = 'DELETE' REJECTED = 'REJECTED' class DocumentStatus(str, Enum): ADDITIONAL_TRANSMISSION = 'ADDITIONAL_TRANSMISSION' COPY = 'COPY' ORIGINAL = 'ORIGINAL' @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class BaseDocument: currency_code: Optional[str] = None creation_date_time: datetime.datetime = datetime.datetime(1, 1, 1) document_action_code: Optional[DocumentAction] = None document_status_code: Optional[DocumentStatus] = None document_structure_version: Optional[str] = None last_update_date_time: Optional[datetime.datetime] = None revision_number: Optional[int] = None avp_list: List[AvpList] = field(default_factory=list) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class IdentityDocument: identity_document_issuer: Optional[str] = None identity_document_number: Optional[str] = None identity_document_type: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Person: date_of_birth: Optional[datetime.datetime] = None gender: Optional[str] = None nationality: Optional[str] = None person_name: Optional[str] = None identity_document: List[IdentityDocument] = field(default_factory=list) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ReceivingAdviceTransportInformation: route_i_d: Optional[Identifier] = None transport_means_i_d: Optional[Identifier] = None transport_means_name: Optional[str] = None driver: Optional[Contact] = None driver_i_d: Optional[Person] = None receiver: Optional[Contact] = None receiver_i_d: Optional[Person] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class DocumentReference: creation_date_time: Optional[datetime.datetime] = None revision_number: Optional[int] = None line_item_number: Optional[int] = None entity_identification: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class AdditionalConsignmentIdentification: text: Optional[str] = None additional_consignment_identification_type_code: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ConsignmentIdentification: ginc: Optional[str] = None additional_consignment_identification: Optional[AdditionalConsignmentIdentification] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Measurement: value: Optional[Decimal] = None code_list_version: Optional[str] = None measurement_unit_code: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Dimension: depth: Optional[Measurement] = None height: Optional[Measurement] = None width: Optional[Measurement] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class UnitMeasurement: measurement_type: Optional[str] = None measurement_value: Optional[Measurement] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class LogisticUnitMeasurement: dimension: Optional[Dimension] = None unit_measurement: Optional[UnitMeasurement] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class AdditionalReturnableAssetIdentification: value: Optional[str] = None additional_returnable_asset_identification_type_code: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ReturnableAssetIdentification: additional_returnable_asset_identification: List[AdditionalReturnableAssetIdentification] = field(default_factory=list) grai: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ReturnablePackaging: current_holder_registration: Optional[Identifier] = None new_holder_registration: Optional[Identifier] = None packaging_condition_code: Optional[str] = None packaging_quantity: Optional[int] = None individual_returnable_asset_identification: List[ReturnableAssetIdentification] = field(default_factory=list) returnable_asset_identification: Optional[ReturnableAssetIdentification] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class CarrierTrackAndTraceInformation: carrier_track_and_trace_u_r_l: Optional[str] = None package_tracking_number: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class AdditionalIndividualAssetIdentification: value: Optional[Decimal] = None additional_individual_asset_identification_type_code: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Ecom_IndividualAssetIdentification: additional_individual_asset_identification: List[AdditionalIndividualAssetIdentification] = field(default_factory=list) giai: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class AdditionalLogisticUnitIdentification: value: Optional[Decimal] = None additional_logistic_unit_identification_type_code: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Ecom_LogisticUnitIdentification: additional_logisitic_unit_identification: List[AdditionalLogisticUnitIdentification] = field(default_factory=list) sscc: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class LogisticUnits: child_package_type_code: Optional[str] = None level_identification: Optional[int] = None package_type_code: Optional[str] = None parent_level_identification: Optional[int] = None quantity_of_children: Optional[int] = None quantity_of_logistic_units: Optional[int] = None logistic_unit_measurement: Optional[LogisticUnitMeasurement] = None returnable_packaging: List[ReturnablePackaging] = field(default_factory=list) carrier_track_and_trace_information: Optional[CarrierTrackAndTraceInformation] = None avp_list: Optional[AvpList] = None individual_asset_identification: List[Ecom_IndividualAssetIdentification] = field(default_factory=list) logistic_unit_identification: Optional[Ecom_LogisticUnitIdentification] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Quantity: value: Optional[Decimal] = None measurement_unit_code: Optional[str] = None code_list_version: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ReceivingConditionInformation: received_goods_disposition: Optional[str] = None receiving_condition_code: Optional[str] = None receiving_condition_quantity: Optional[Quantity] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class TransactionalItem: measurement_unit_code: Optional[str] = None measurement_type: Optional[str] = None measurement_value: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class SerialNumberRange: maximum_value: Optional[str] = None minimum_value: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class TransactionalItemDimension: measurement_unit_code: Optional[str] = None depth: Optional[str] = None height: Optional[str] = None width: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class TransactionalItemLogisticUnitInformation: number_of_layers: Optional[int] = None number_of_units_per_layer: Optional[int] = None number_of_units_per_pallet: Optional[int] = None packaging_terms: Optional[str] = None package_type_code: Optional[str] = None maximum_stacking_factor: Optional[int] = None returnable_package_transport_cost_payment: Optional[str] = None dimensions_of_logistic_unit: List[TransactionalItemDimension] = field(default_factory=list) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class TransactionalItemDataCarrierAndIdentification: gs1_transactional_item_identification_key: Optional[str] = None data_carrier: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class TradeItemWaste: waste_identification: Optional[str] = None type_of_waste: List[AvpList] = field(default_factory=list) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class TransactionalItemOrganicInformation: is_trade_item_organic: Optional[bool] = None organic_certification: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class TransactionalItemData: available_for_sale_date: Optional[datetime.datetime] = None batch_number: Optional[str] = None best_before_date: Optional[datetime.datetime] = None country_of_origin: Optional[str] = None item_expiration_date: Optional[datetime.datetime] = None lot_number: Optional[str] = None packaging_date: Optional[datetime.datetime] = None production_date: Optional[datetime.datetime] = None product_quality_indication: Optional[str] = None sell_by_date: Optional[datetime.datetime] = None serial_number: List[str] = field(default_factory=list) shelf_life: Optional[str] = None trade_item_quantity: Optional[int] = None item_in_contact_with_food_product: Optional[bool] = None transactional_item_weight: List[TransactionalItem] = field(default_factory=list) transactional_item_volume: List[TransactionalItem] = field(default_factory=list) serial_number_range: List[SerialNumberRange] = field(default_factory=list) transactional_item_dimensions: List[TransactionalItemDimension] = field(default_factory=list) transactional_item_logistic_unit_information: Optional[TransactionalItemLogisticUnitInformation] = None transactional_item_data_carrier_and_identification: Optional[TransactionalItemDataCarrierAndIdentification] = None trade_item_waste: List[TradeItemWaste] = field(default_factory=list) transactional_item_organic_information: Optional[TransactionalItemOrganicInformation] = None avp_list: List[AvpList] = field(default_factory=list) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Colour: colour_code: Optional[str] = None colour_description: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class Size: descriptive_size: Optional[str] = None size_code: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class TradeItemClassification: gpc_category_code: Optional[str] = None additional_trade_item_classification_code: List[AvpList] = field(default_factory=list) gpc_category_name: Optional[str] = None gpc_attribute: List[AvpList] = field(default_factory=list) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class TransactionalTradeItem: gtin: Optional[str] = None additional_trade_item_identification: List[AvpList] = field(default_factory=list) trade_item_quantity: Optional[Decimal] = None trade_item_description: Optional[str] = None product_variant_identifier: Optional[str] = None item_type_code: Optional[str] = None trade_item_data_owner: Optional[str] = None butter_fat_reference: Optional[str] = None transactional_item_data: List[TransactionalItemData] = field(default_factory=list) colour: List[Colour] = field(default_factory=list) size: Optional[Size] = None trade_item_classification: Optional[TradeItemClassification] = None avp_list: List[AvpList] = field(default_factory=list) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class TradeItemIdentification: additional_trade_item_identification: List[AvpList] = field(default_factory=list) gtin: Optional[str] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ReceivingAdviceLineItem: extension: Optional[str] = None line_item_number: Optional[int] = None note: Optional[str] = None parent_line_item_number: Optional[int] = None quantity_accepted: Optional[Quantity] = None quantity_despatched: Optional[Quantity] = None quantity_received: Optional[Quantity] = None receiving_condition_information: List[ReceivingConditionInformation] = field(default_factory=list) transactional_trade_item: Optional[TransactionalTradeItem] = None consignment_identification: Optional[ConsignmentIdentification] = None avp_list: Optional[AvpList] = None contract: Optional[DocumentReference] = None customer_reference: Optional[DocumentReference] = None delivery_note: Optional[DocumentReference] = None despatch_advice: Optional[DocumentReference] = None product_certification: Optional[DocumentReference] = None promotional_deal: Optional[DocumentReference] = None purchase_conditions: Optional[DocumentReference] = None purchase_order: Optional[DocumentReference] = None requested_item_identification: Optional[TradeItemIdentification] = None specification: Optional[DocumentReference] = None @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ReceivingAdviceLogisticUnit(LogisticUnits): receiving_advice_line_item: List[ReceivingAdviceLineItem] = field(default_factory=list) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ReceivingAdvice(BaseDocument): despatch_advice_delivery_date_time: Optional[datetime.datetime] = None note: Optional[str] = None payment_date_time: Optional[datetime.datetime] = None receiving_date_time: Optional[datetime.datetime] = None reporting_code: Optional[str] = None total_deposit_amount: Optional[Decimal] = None receiving_advice_transport_information: Optional[ReceivingAdviceTransportInformation] = None bill_of_lading_number: Optional[DocumentReference] = None buyer: Optional[TransactionalParty] = None carrier: Optional[TransactionalParty] = None consignment_identification: Optional[ConsignmentIdentification] = None delivery_note: Optional[DocumentReference] = None despatch_advice: Optional[str] = None inventory_location: Optional[TransactionalParty] = None purchase_order: Optional[DocumentReference] = None receiver: Optional[TransactionalParty] = None receiving_advice_identification: Optional[str] = None seller: Optional[TransactionalParty] = None ship_from: Optional[TransactionalParty] = None shipment_identification: Optional[ConsignmentIdentification] = None shipper: Optional[TransactionalParty] = None ship_to: Optional[TransactionalParty] = None receiving_advice_logistic_unit: List[ReceivingAdviceLogisticUnit] = field(default_factory=list) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class ReceivingAdviceMessage: header: Optional[Header] = None receiving_advice: Optional[ReceivingAdvice] = None # @Route("/receivingAdvice/{Id}", "GET") # @Api(Description="Receiving Advice") # @ApiResponse(Description="ReceivingAdvice data", IsDefaultResponse=true, StatusCode=200) # @ApiResponse(Description="No Content", ResponseType=typeof(IReturnVoid), StatusCode=204) # @ApiResponse(Description="Specified argument was out of the range of valid values.", ResponseType=typeof(ArgumentOutOfRangeException), StatusCode=400) @dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE) @dataclass class GetReceivingAdviceById(IReturn[ReceivingAdviceMessage], IGetDocumentById): """ Receiving Advice """ # @ApiMember(Description="ReceivingAdvice ID or Token", ExcludeInSchema=true, ParameterType="path") id: Optional[str] = None """ ReceivingAdvice ID or Token """