/* Options: Date: 2026-02-14 11:50:41 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: GetReceivingAdvice.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: False //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack /** * Receiving Advice */ // @Route("/receivingAdvice", "GET") // @Api(Description="Receiving Advice") // @ApiResponse(Description="ReceivingAdvice message", IsDefaultResponse=true, StatusCode=200) // @ApiResponse(Description="No Content", ResponseType=typeof(IReturnVoid), StatusCode=204) public class GetReceivingAdvice : IReturn, Codable { public typealias Return = ResultItem required public init(){} } public class ResultItem : IDocument, Codable { public var token:String? public var item:ReceivingAdviceMessage? 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 ReceivingAdvice : BaseDocument { public var despatchAdviceDeliveryDateTime:Date? public var note:String? public var paymentDateTime:Date? public var receivingDateTime:Date? public var reportingCode:String? public var totalDepositAmount:Double? public var receivingAdviceTransportInformation:ReceivingAdviceTransportInformation? public var billOfLadingNumber:DocumentReference? public var buyer:TransactionalParty? public var carrier:TransactionalParty? public var consignmentIdentification:ConsignmentIdentification? public var deliveryNote:DocumentReference? public var despatchAdvice:String? public var inventoryLocation:TransactionalParty? public var purchaseOrder:DocumentReference? public var receiver:TransactionalParty? public var receivingAdviceIdentification:String? public var seller:TransactionalParty? public var shipFrom:TransactionalParty? public var shipmentIdentification:ConsignmentIdentification? public var shipper:TransactionalParty? public var shipTo:TransactionalParty? public var receivingAdviceLogisticUnit:[ReceivingAdviceLogisticUnit] = [] required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case despatchAdviceDeliveryDateTime case note case paymentDateTime case receivingDateTime case reportingCode case totalDepositAmount case receivingAdviceTransportInformation case billOfLadingNumber case buyer case carrier case consignmentIdentification case deliveryNote case despatchAdvice case inventoryLocation case purchaseOrder case receiver case receivingAdviceIdentification case seller case shipFrom case shipmentIdentification case shipper case shipTo case receivingAdviceLogisticUnit } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) despatchAdviceDeliveryDateTime = try container.decodeIfPresent(Date.self, forKey: .despatchAdviceDeliveryDateTime) note = try container.decodeIfPresent(String.self, forKey: .note) paymentDateTime = try container.decodeIfPresent(Date.self, forKey: .paymentDateTime) receivingDateTime = try container.decodeIfPresent(Date.self, forKey: .receivingDateTime) reportingCode = try container.decodeIfPresent(String.self, forKey: .reportingCode) totalDepositAmount = try container.decodeIfPresent(Double.self, forKey: .totalDepositAmount) receivingAdviceTransportInformation = try container.decodeIfPresent(ReceivingAdviceTransportInformation.self, forKey: .receivingAdviceTransportInformation) billOfLadingNumber = try container.decodeIfPresent(DocumentReference.self, forKey: .billOfLadingNumber) buyer = try container.decodeIfPresent(TransactionalParty.self, forKey: .buyer) carrier = try container.decodeIfPresent(TransactionalParty.self, forKey: .carrier) consignmentIdentification = try container.decodeIfPresent(ConsignmentIdentification.self, forKey: .consignmentIdentification) deliveryNote = try container.decodeIfPresent(DocumentReference.self, forKey: .deliveryNote) despatchAdvice = try container.decodeIfPresent(String.self, forKey: .despatchAdvice) inventoryLocation = try container.decodeIfPresent(TransactionalParty.self, forKey: .inventoryLocation) purchaseOrder = try container.decodeIfPresent(DocumentReference.self, forKey: .purchaseOrder) receiver = try container.decodeIfPresent(TransactionalParty.self, forKey: .receiver) receivingAdviceIdentification = try container.decodeIfPresent(String.self, forKey: .receivingAdviceIdentification) seller = try container.decodeIfPresent(TransactionalParty.self, forKey: .seller) shipFrom = try container.decodeIfPresent(TransactionalParty.self, forKey: .shipFrom) shipmentIdentification = try container.decodeIfPresent(ConsignmentIdentification.self, forKey: .shipmentIdentification) shipper = try container.decodeIfPresent(TransactionalParty.self, forKey: .shipper) shipTo = try container.decodeIfPresent(TransactionalParty.self, forKey: .shipTo) receivingAdviceLogisticUnit = try container.decodeIfPresent([ReceivingAdviceLogisticUnit].self, forKey: .receivingAdviceLogisticUnit) ?? [] } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if despatchAdviceDeliveryDateTime != nil { try container.encode(despatchAdviceDeliveryDateTime, forKey: .despatchAdviceDeliveryDateTime) } if note != nil { try container.encode(note, forKey: .note) } if paymentDateTime != nil { try container.encode(paymentDateTime, forKey: .paymentDateTime) } if receivingDateTime != nil { try container.encode(receivingDateTime, forKey: .receivingDateTime) } if reportingCode != nil { try container.encode(reportingCode, forKey: .reportingCode) } if totalDepositAmount != nil { try container.encode(totalDepositAmount, forKey: .totalDepositAmount) } if receivingAdviceTransportInformation != nil { try container.encode(receivingAdviceTransportInformation, forKey: .receivingAdviceTransportInformation) } if billOfLadingNumber != nil { try container.encode(billOfLadingNumber, forKey: .billOfLadingNumber) } if buyer != nil { try container.encode(buyer, forKey: .buyer) } if carrier != nil { try container.encode(carrier, forKey: .carrier) } if consignmentIdentification != nil { try container.encode(consignmentIdentification, forKey: .consignmentIdentification) } if deliveryNote != nil { try container.encode(deliveryNote, forKey: .deliveryNote) } if despatchAdvice != nil { try container.encode(despatchAdvice, forKey: .despatchAdvice) } if inventoryLocation != nil { try container.encode(inventoryLocation, forKey: .inventoryLocation) } if purchaseOrder != nil { try container.encode(purchaseOrder, forKey: .purchaseOrder) } if receiver != nil { try container.encode(receiver, forKey: .receiver) } if receivingAdviceIdentification != nil { try container.encode(receivingAdviceIdentification, forKey: .receivingAdviceIdentification) } if seller != nil { try container.encode(seller, forKey: .seller) } if shipFrom != nil { try container.encode(shipFrom, forKey: .shipFrom) } if shipmentIdentification != nil { try container.encode(shipmentIdentification, forKey: .shipmentIdentification) } if shipper != nil { try container.encode(shipper, forKey: .shipper) } if shipTo != nil { try container.encode(shipTo, forKey: .shipTo) } if receivingAdviceLogisticUnit.count > 0 { try container.encode(receivingAdviceLogisticUnit, forKey: .receivingAdviceLogisticUnit) } } } // @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 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 ReceivingAdviceTransportInformation : Codable { public var routeID:Identifier? public var transportMeansID:Identifier? public var transportMeansName:String? public var driver:Contact? public var driverID:Person? public var receiver:Contact? public var receiverID:Person? required public init(){} } public class ConsignmentIdentification : Codable { public var ginc:String? public var additionalConsignmentIdentification:AdditionalConsignmentIdentification? required public init(){} } public class ReceivingAdviceLogisticUnit : LogisticUnits { public var receivingAdviceLineItem:[ReceivingAdviceLineItem] = [] required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case receivingAdviceLineItem } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) receivingAdviceLineItem = try container.decodeIfPresent([ReceivingAdviceLineItem].self, forKey: .receivingAdviceLineItem) ?? [] } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if receivingAdviceLineItem.count > 0 { try container.encode(receivingAdviceLineItem, forKey: .receivingAdviceLineItem) } } } // @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 Person : Codable { public var dateOfBirth:Date? public var gender:String? public var nationality:String? public var personName:String? public var identityDocument:[IdentityDocument] = [] required public init(){} } public class AdditionalConsignmentIdentification : Codable { public var text:String? public var additionalConsignmentIdentificationTypeCode:String? required public init(){} } public class ReceivingAdviceLineItem : Codable { public var `extension`:String? public var lineItemNumber:Int? public var note:String? public var parentLineItemNumber:Int? public var quantityAccepted:Quantity? public var quantityDespatched:Quantity? public var quantityReceived:Quantity? public var receivingConditionInformation:[ReceivingConditionInformation] = [] public var transactionalTradeItem:TransactionalTradeItem? public var consignmentIdentification:ConsignmentIdentification? public var avpList:AvpList? public var contract:DocumentReference? public var customerReference:DocumentReference? public var deliveryNote:DocumentReference? public var despatchAdvice:DocumentReference? public var productCertification:DocumentReference? public var promotionalDeal:DocumentReference? public var purchaseConditions:DocumentReference? public var purchaseOrder:DocumentReference? public var requestedItemIdentification:TradeItemIdentification? public var specification:DocumentReference? required public init(){} } public class LogisticUnitMeasurement : Codable { public var dimension:Dimension? public var unitMeasurement:UnitMeasurement? required public init(){} } public class ReturnablePackaging : Codable { public var currentHolderRegistration:Identifier? public var newHolderRegistration:Identifier? public var packagingConditionCode:String? public var packagingQuantity:Int? public var individualReturnableAssetIdentification:[ReturnableAssetIdentification] = [] public var returnableAssetIdentification:ReturnableAssetIdentification? required public init(){} } public class CarrierTrackAndTraceInformation : Codable { public var carrierTrackAndTraceURL:String? public var packageTrackingNumber:String? required public init(){} } public class Ecom_IndividualAssetIdentification : Codable { public var additionalIndividualAssetIdentification:[AdditionalIndividualAssetIdentification] = [] public var giai:String? required public init(){} } public class Ecom_LogisticUnitIdentification : Codable { public var additionalLogisiticUnitIdentification:[AdditionalLogisticUnitIdentification] = [] public var sscc:String? required public init(){} } public class LogisticUnits : Codable { public var childPackageTypeCode:String? public var levelIdentification:Int? public var packageTypeCode:String? public var parentLevelIdentification:Int? public var quantityOfChildren:Int? public var quantityOfLogisticUnits:Int? public var logisticUnitMeasurement:LogisticUnitMeasurement? public var returnablePackaging:[ReturnablePackaging] = [] public var carrierTrackAndTraceInformation:CarrierTrackAndTraceInformation? public var avpList:AvpList? public var individualAssetIdentification:[Ecom_IndividualAssetIdentification] = [] public var logisticUnitIdentification:Ecom_LogisticUnitIdentification? 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 Measurement : Codable { public var value:Double? public var codeListVersion:String? public var measurementUnitCode:String? required public init(){} } public class Dimension : Codable { public var depth:Measurement? public var height:Measurement? public var width:Measurement? required public init(){} } public class IdentityDocument : Codable { public var identityDocumentIssuer:String? public var identityDocumentNumber:String? public var identityDocumentType:String? required public init(){} } public class ReceivingConditionInformation : Codable { public var receivedGoodsDisposition:String? public var receivingConditionCode:String? public var receivingConditionQuantity:Quantity? required public init(){} } public class TradeItemIdentification : Codable { public var additionalTradeItemIdentification:[AvpList] = [] public var gtin:String? required public init(){} } public class UnitMeasurement : Codable { public var measurementType:String? public var measurementValue:Measurement? required public init(){} } public class ReturnableAssetIdentification : Codable { public var additionalReturnableAssetIdentification:[AdditionalReturnableAssetIdentification] = [] public var grai:String? required public init(){} } public class AdditionalIndividualAssetIdentification : Codable { public var value:Double? public var additionalIndividualAssetIdentificationTypeCode:String? required public init(){} } public class AdditionalLogisticUnitIdentification : Codable { public var value:Double? public var additionalLogisticUnitIdentificationTypeCode:String? 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 AdditionalReturnableAssetIdentification : Codable { public var value:String? public var additionalReturnableAssetIdentificationTypeCode:String? required public init(){} } public class ReceivingAdviceMessage : Codable { public var header:Header? public var receivingAdvice:ReceivingAdvice? required public init(){} }