/* Options: Date: 2026-02-14 10:15:51 SwiftVersion: 6.0 Version: 10.04 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://stf-api-uat.data-xchange.co.za //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True //MakePropertiesOptional: True IncludeTypes: GetOrderResponse.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: False //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack /** * Order Response */ // @Route("/orderResponse", "GET") // @Api(Description="Order Response") // @ApiResponse(Description="OrderResponse message", IsDefaultResponse=true, StatusCode=200) // @ApiResponse(Description="No Content", ResponseType=typeof(IReturnVoid), StatusCode=204) public class GetOrderResponse : IReturn, Codable { public typealias Return = ResultItem required public init(){} } public class ResultItem : IDocument, Codable { public var token:String? public var item:OrderResponseMessage? required public init(){} } public protocol IDocument : IHaveToken { } public protocol IHaveToken { var token:String? { get set } } // @DataContract public class Header : Codable { // @DataMember(Name="documentIdentification") public var documentIdentification:DocumentIdentification? // @DataMember(Name="sender") public var sender:Partner? // @DataMember(Name="receiver") public var receiver:Partner? required public init(){} } public class TransactionalParty : Ecom_PartyIdentificationType { public var contact:[Contact] = [] public var address:Address? public var communicationChannel:[AvpList] = [] public var financialInstitutionInformation:FinancialInstitutionInformation? public var dutyFeeTaxRegistration:String? public var entityIdentification:String? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case contact case address case communicationChannel case financialInstitutionInformation case dutyFeeTaxRegistration case entityIdentification } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) contact = try container.decodeIfPresent([Contact].self, forKey: .contact) ?? [] address = try container.decodeIfPresent(Address.self, forKey: .address) communicationChannel = try container.decodeIfPresent([AvpList].self, forKey: .communicationChannel) ?? [] financialInstitutionInformation = try container.decodeIfPresent(FinancialInstitutionInformation.self, forKey: .financialInstitutionInformation) dutyFeeTaxRegistration = try container.decodeIfPresent(String.self, forKey: .dutyFeeTaxRegistration) entityIdentification = try container.decodeIfPresent(String.self, forKey: .entityIdentification) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if contact.count > 0 { try container.encode(contact, forKey: .contact) } if address != nil { try container.encode(address, forKey: .address) } if communicationChannel.count > 0 { try container.encode(communicationChannel, forKey: .communicationChannel) } if financialInstitutionInformation != nil { try container.encode(financialInstitutionInformation, forKey: .financialInstitutionInformation) } if dutyFeeTaxRegistration != nil { try container.encode(dutyFeeTaxRegistration, forKey: .dutyFeeTaxRegistration) } if entityIdentification != nil { try container.encode(entityIdentification, forKey: .entityIdentification) } } } public enum DocumentAction : String, Codable { case ADD case CHANGE_BY_REFRESH case DELETE case REJECTED } public enum DocumentStatus : String, Codable { case ADDITIONAL_TRANSMISSION case COPY case ORIGINAL } public class AvpList : Codable { public var code:String? public var value:String? required public init(){} } public class BaseDocument : Codable { public var currencyCode:String? public var creationDateTime:Date? public var documentActionCode:DocumentAction? public var documentStatusCode:DocumentStatus? public var documentStructureVersion:String? public var lastUpdateDateTime:Date? public var revisionNumber:Int? public var avpList:[AvpList] = [] required public init(){} } public class OrderResponse : BaseDocument { public var note:String? public var orderResponseReasonCode:[String] = [] public var responseStatusCode:String? public var totalMonetaryAmountExcludingTaxes:Double? public var totalMonetaryAmountIncludingTaxes:Double? public var totalTaxAmount:Double? public var allowanceCharge:[AllowanceCharge] = [] public var deliveryTerms:DeliveryTerms? public var amendedDateTimeValue:OrderLogisticalDateInformation? public var orderResponseIdentification:String? public var originalOrder:DocumentReference? public var salesOrder:DocumentReference? public var billTo:TransactionalParty? public var buyer:TransactionalParty? public var seller:TransactionalParty? public var shipTo:TransactionalParty? public var orderResponseLineItem:[OrderResponseLineItem] = [] required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case note case orderResponseReasonCode case responseStatusCode case totalMonetaryAmountExcludingTaxes case totalMonetaryAmountIncludingTaxes case totalTaxAmount case allowanceCharge case deliveryTerms case amendedDateTimeValue case orderResponseIdentification case originalOrder case salesOrder case billTo case buyer case seller case shipTo case orderResponseLineItem } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) note = try container.decodeIfPresent(String.self, forKey: .note) orderResponseReasonCode = try container.decodeIfPresent([String].self, forKey: .orderResponseReasonCode) ?? [] responseStatusCode = try container.decodeIfPresent(String.self, forKey: .responseStatusCode) totalMonetaryAmountExcludingTaxes = try container.decodeIfPresent(Double.self, forKey: .totalMonetaryAmountExcludingTaxes) totalMonetaryAmountIncludingTaxes = try container.decodeIfPresent(Double.self, forKey: .totalMonetaryAmountIncludingTaxes) totalTaxAmount = try container.decodeIfPresent(Double.self, forKey: .totalTaxAmount) allowanceCharge = try container.decodeIfPresent([AllowanceCharge].self, forKey: .allowanceCharge) ?? [] deliveryTerms = try container.decodeIfPresent(DeliveryTerms.self, forKey: .deliveryTerms) amendedDateTimeValue = try container.decodeIfPresent(OrderLogisticalDateInformation.self, forKey: .amendedDateTimeValue) orderResponseIdentification = try container.decodeIfPresent(String.self, forKey: .orderResponseIdentification) originalOrder = try container.decodeIfPresent(DocumentReference.self, forKey: .originalOrder) salesOrder = try container.decodeIfPresent(DocumentReference.self, forKey: .salesOrder) billTo = try container.decodeIfPresent(TransactionalParty.self, forKey: .billTo) buyer = try container.decodeIfPresent(TransactionalParty.self, forKey: .buyer) seller = try container.decodeIfPresent(TransactionalParty.self, forKey: .seller) shipTo = try container.decodeIfPresent(TransactionalParty.self, forKey: .shipTo) orderResponseLineItem = try container.decodeIfPresent([OrderResponseLineItem].self, forKey: .orderResponseLineItem) ?? [] } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if note != nil { try container.encode(note, forKey: .note) } if orderResponseReasonCode.count > 0 { try container.encode(orderResponseReasonCode, forKey: .orderResponseReasonCode) } if responseStatusCode != nil { try container.encode(responseStatusCode, forKey: .responseStatusCode) } if totalMonetaryAmountExcludingTaxes != nil { try container.encode(totalMonetaryAmountExcludingTaxes, forKey: .totalMonetaryAmountExcludingTaxes) } if totalMonetaryAmountIncludingTaxes != nil { try container.encode(totalMonetaryAmountIncludingTaxes, forKey: .totalMonetaryAmountIncludingTaxes) } if totalTaxAmount != nil { try container.encode(totalTaxAmount, forKey: .totalTaxAmount) } if allowanceCharge.count > 0 { try container.encode(allowanceCharge, forKey: .allowanceCharge) } if deliveryTerms != nil { try container.encode(deliveryTerms, forKey: .deliveryTerms) } if amendedDateTimeValue != nil { try container.encode(amendedDateTimeValue, forKey: .amendedDateTimeValue) } if orderResponseIdentification != nil { try container.encode(orderResponseIdentification, forKey: .orderResponseIdentification) } if originalOrder != nil { try container.encode(originalOrder, forKey: .originalOrder) } if salesOrder != nil { try container.encode(salesOrder, forKey: .salesOrder) } if billTo != nil { try container.encode(billTo, forKey: .billTo) } if buyer != nil { try container.encode(buyer, forKey: .buyer) } if seller != nil { try container.encode(seller, forKey: .seller) } if shipTo != nil { try container.encode(shipTo, forKey: .shipTo) } if orderResponseLineItem.count > 0 { try container.encode(orderResponseLineItem, forKey: .orderResponseLineItem) } } } // @DataContract public class DocumentIdentification : Codable { // @DataMember(Name="identifier") public var identifier:String? // @DataMember(Name="type") public var type:String? // @DataMember(Name="creationDateAndTime") public var creationDateAndTime:Date? required public init(){} } // @DataContract public class Partner : Codable { // @DataMember(Name="identifier") public var identifier:Identifier? // @DataMember(Name="contactInformation") public var contactInformation:[ContactInformation] = [] required public init(){} } public class DocumentReference : Codable { public var creationDateTime:Date? public var revisionNumber:Int? public var lineItemNumber:Int? public var entityIdentification:String? required public init(){} } public class ShipmentTransportationInformation : Codable { public var carrier:TransactionalParty? public var freightForwarder:TransactionalParty? required public init(){} } public class Contact : Codable { public var contactTypeCode:String? public var personName:String? public var departmentName:String? public var jobTitle:String? public var responsibility:String? public var communicationChannel:[CommunicationChannel] = [] required public init(){} } public class Address : Codable { public var streetAddressOne:String? public var streetAddressTwo:String? public var streetAddressThree:String? public var city:String? public var postalCode:String? public var provinceCode:String? public var countryCode:String? required public init(){} } public class FinancialInstitutionInformation : Codable { public var financialInstitutionBranchName:String? public var financialInstitutionName:String? public var financialRoutingNumber:FinancialRoutingNumber? public var financialAccount:FinancialAccount? public var swiftCode:String? public var exportersCode:String? required public init(){} } public class Ecom_PartyIdentificationType : Codable { public var gln:String? public var name:String? public var additionalPartyIdentification:[AvpList] = [] required public init(){} } public class AllowanceCharge : Codable { public var allowanceChargeAmount:Double? public var allowanceChargePercentage:Double? public var allowanceChargeType:String? public var allowanceOrChargeType:String? public var amountPerUnit:Double? public var baseAmount:Double? public var baseNumberOfUnits:String? public var bracketIdentifier:String? public var effectiveDateType:Date? public var sequenceNumber:String? public var settlementType:String? public var specialServiceType:String? public var allowanceChargeDescription:String? required public init(){} } public class DeliveryTerms : Codable { public var incotermsCode:String? public var alternateDeliveryTermsCode:String? public var deliveryInstructions:String? public var deliveryCostPayment:String? public var isSignatureRequired:String? public var deliveryTermsLocation:DeliveryTermsLocation? required public init(){} } public class OrderLogisticalDateInformation : Codable { public var dateRangeDeliveryDateRange:DateRange? public var dateRangeShipDateRange:DateRange? public var dateRangeDeliveryDateRangeAtUltimateConsignee:DateRange? public var requestedDeliveryDateTime:Date? public var requestedShipDateTime:String? public var requestedPickUpDateTime:Date? public var requestedDeliveryDateTimeAtUltimateConsignee:Date? required public init(){} } public class OrderResponseLineItem : Codable { public var additionalOrderLineInstruction:[String] = [] public var confirmedQuantity:Quantity? public var deliveryDateTime:Date? public var lineItemActionCode:String? public var lineItemChangeIndicator:String? public var lineItemNumber:Int? public var monetaryAmountExcludingTaxes:Double? public var monetaryAmountIncludingTaxes:Double? public var netAmount:Double? public var netPrice:Double? public var note:String? public var orderResponseReasonCode:String? public var responseStatusCode:String? public var originalOrderLineItemNumber:Int? public var parentLineItemNumber:Int? public var orderResponseLineItemDetail:[OrderResponseLineItemDetail] = [] public var allowanceCharge:[AllowanceCharge] = [] public var transactionalTradeItem:TransactionalTradeItem? public var leviedDutyFeeTax:LeviedDutyFeeTax? public var avpList:[AvpList] = [] public var backOrderInformation:OrderResponseLineItemDetail? public var substituteItemInformation:TransactionalTradeItem? public var shipmentTransportationInformation:ShipmentTransportationInformation? required public init(){} } public class OrderLogisticalInformation : Codable { public var commodityTypeCode:Code? public var orderLogisticalDateInformation:OrderLogisticalDateInformation? public var inventoryLocation:TransactionalParty? public var shipFrom:TransactionalParty? public var shipTo:TransactionalParty? public var ultimateConsignee:TransactionalParty? public var shipmentTransportationInformation:ShipmentTransportationInformation? required public init(){} } // @DataContract public class Identifier : Codable { // @DataMember(Name="authority") public var authority:String? // @DataMember(Name="text") public var text:String? required public init(){} } // @DataContract public class ContactInformation : Codable { required public init(){} } public class Quantity : Codable { public var value:Double? public var measurementUnitCode:String? public var codeListVersion:String? required public init(){} } public class TransactionalTradeItem : Codable { public var gtin:String? public var additionalTradeItemIdentification:[AvpList] = [] public var tradeItemQuantity:Double? public var tradeItemDescription:String? public var productVariantIdentifier:String? public var itemTypeCode:String? public var tradeItemDataOwner:String? public var butterFatReference:String? public var transactionalItemData:[TransactionalItemData] = [] public var colour:[Colour] = [] public var size:Size? public var tradeItemClassification:TradeItemClassification? public var avpList:[AvpList] = [] required public init(){} } public class CommunicationChannel : Codable { public var communicationChannelCode:String? public var communicationChannelName:String? public var communicationValue:String? required public init(){} } public class FinancialRoutingNumber : Codable { public var number:String? public var numberTypeCode:String? required public init(){} } public class FinancialAccount : Codable { public var number:String? public var numberTypeCode:String? public var name:String? required public init(){} } public class DeliveryTermsLocation : Codable { public var unLocationCode:String? public var gln:String? public var additionalLocationIdentification:[AvpList] = [] public var sublocationIdentification:String? public var locationName:String? public var locationSpecificInstructions:String? required public init(){} } public class DateRange : Codable { public var beginDate:Date? public var beginTime:Date? public var endDate:Date? public var endTime:Date? required public init(){} } public class OrderResponseLineItemDetail : Codable { public var confirmedQuantity:Quantity? public var orderLogisticalInformation:OrderLogisticalInformation? public var avpList:AvpList? public var purchaseConditions:DocumentReference? required public init(){} } public class LeviedDutyFeeTax : Codable { public var dutyFeeTaxAmount:Double? public var dutyFeeTaxBasisAmount:Double? public var dutyFeeTaxDescription:String? public var dutyFeeTaxPercentage:Double? required public init(){} } public class Code : Codable { public var value:String? public var codeDescription:String? public var codeListAgencyCodeListVersion:String? public var codeListAgencyName:String? public var codeListName:String? public var codeListUri:String? required public init(){} } public class TransactionalItemData : Codable { public var availableForSaleDate:Date? public var batchNumber:String? public var bestBeforeDate:Date? public var countryOfOrigin:String? public var itemExpirationDate:Date? public var lotNumber:String? public var packagingDate:Date? public var productionDate:Date? public var productQualityIndication:String? public var sellByDate:Date? public var serialNumber:[String] = [] public var shelfLife:String? public var tradeItemQuantity:Int? public var itemInContactWithFoodProduct:Bool? public var transactionalItemWeight:[TransactionalItem] = [] public var transactionalItemVolume:[TransactionalItem] = [] public var serialNumberRange:[SerialNumberRange] = [] public var transactionalItemDimensions:[TransactionalItemDimension] = [] public var transactionalItemLogisticUnitInformation:TransactionalItemLogisticUnitInformation? public var transactionalItemDataCarrierAndIdentification:TransactionalItemDataCarrierAndIdentification? public var tradeItemWaste:[TradeItemWaste] = [] public var transactionalItemOrganicInformation:TransactionalItemOrganicInformation? public var avpList:[AvpList] = [] required public init(){} } public class Colour : Codable { public var colourCode:String? public var colourDescription:String? required public init(){} } public class Size : Codable { public var descriptiveSize:String? public var sizeCode:String? required public init(){} } public class TradeItemClassification : Codable { public var gpcCategoryCode:String? public var additionalTradeItemClassificationCode:[AvpList] = [] public var gpcCategoryName:String? public var gpcAttribute:[AvpList] = [] required public init(){} } public class TransactionalItem : Codable { public var measurementUnitCode:String? public var measurementType:String? public var measurementValue:String? required public init(){} } public class SerialNumberRange : Codable { public var maximumValue:String? public var minimumValue:String? required public init(){} } public class TransactionalItemDimension : Codable { public var measurementUnitCode:String? public var depth:String? public var height:String? public var width:String? required public init(){} } public class TransactionalItemLogisticUnitInformation : Codable { public var numberOfLayers:Int? public var numberOfUnitsPerLayer:Int? public var numberOfUnitsPerPallet:Int? public var packagingTerms:String? public var packageTypeCode:String? public var maximumStackingFactor:Int? public var returnablePackageTransportCostPayment:String? public var dimensionsOfLogisticUnit:[TransactionalItemDimension] = [] required public init(){} } public class TransactionalItemDataCarrierAndIdentification : Codable { public var gs1TransactionalItemIdentificationKey:String? public var dataCarrier:String? required public init(){} } public class TradeItemWaste : Codable { public var wasteIdentification:String? public var typeOfWaste:[AvpList] = [] required public init(){} } public class TransactionalItemOrganicInformation : Codable { public var isTradeItemOrganic:Bool? public var organicCertification:String? required public init(){} } public class OrderResponseMessage : Codable { public var header:Header? public var orderResponse:OrderResponse? required public init(){} }