/* Options: Date: 2026-02-14 10:19:08 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: GetCustomerMasterByIdentification.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: False //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack /** * Customer Master */ // @Route("/customerMaster/{OwnerGln}/{CustomerMasterIdentification}", "GET") // @Api(Description="Customer Master") // @ApiResponse(Description="Customer Master 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) public class GetCustomerMasterByIdentification : IReturn, Codable { public typealias Return = CustomerMasterMessage /** * Owner GLN */ // @ApiMember(Description="Owner GLN", ExcludeInSchema=true, ParameterType="path") public var ownerGln:String? /** * Customer Master Identification */ // @ApiMember(Description="Customer Master Identification", ExcludeInSchema=true, ParameterType="path") public var customerMasterIdentification:String? required public init(){} } public class CustomerMasterMessage : Codable { public var dataSource:TransactionalParty? public var dataRecipient:TransactionalParty? public var customerMasterIdentification:String? public var customer:[CustomerMasterType] = [] public var documentStatusCode:String? public var documentActionCode:String? public var creationDateTime:Date? public var lastUpdateDateTime:Date? 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 class AvpList : Codable { public var code:String? public var value:String? required public init(){} } public class CustomerMasterType : CustomerRecord { public var payByCustomer:CustomerRecord? public var billToCustomer:CustomerRecord? public var routingCode:String? public var storeType:String? public var currencyCode:String? public var type:String? public var group:String? public var region:String? public var zoneRate:String? public var taxRule:String? public var paymentTerm:String? public var shipmentSite:String? public var shipmentSiteName:String? public var shipmentSiteGln:String? public var accountingCode:String? public var commercialRepresentative:String? public var commercialTerritory:String? public var credit:CreditLimit? public var nod:[String] = [] public var ndd:[String] = [] required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case payByCustomer case billToCustomer case routingCode case storeType case currencyCode case type case group case region case zoneRate case taxRule case paymentTerm case shipmentSite case shipmentSiteName case shipmentSiteGln case accountingCode case commercialRepresentative case commercialTerritory case credit case nod case ndd } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) payByCustomer = try container.decodeIfPresent(CustomerRecord.self, forKey: .payByCustomer) billToCustomer = try container.decodeIfPresent(CustomerRecord.self, forKey: .billToCustomer) routingCode = try container.decodeIfPresent(String.self, forKey: .routingCode) storeType = try container.decodeIfPresent(String.self, forKey: .storeType) currencyCode = try container.decodeIfPresent(String.self, forKey: .currencyCode) type = try container.decodeIfPresent(String.self, forKey: .type) group = try container.decodeIfPresent(String.self, forKey: .group) region = try container.decodeIfPresent(String.self, forKey: .region) zoneRate = try container.decodeIfPresent(String.self, forKey: .zoneRate) taxRule = try container.decodeIfPresent(String.self, forKey: .taxRule) paymentTerm = try container.decodeIfPresent(String.self, forKey: .paymentTerm) shipmentSite = try container.decodeIfPresent(String.self, forKey: .shipmentSite) shipmentSiteName = try container.decodeIfPresent(String.self, forKey: .shipmentSiteName) shipmentSiteGln = try container.decodeIfPresent(String.self, forKey: .shipmentSiteGln) accountingCode = try container.decodeIfPresent(String.self, forKey: .accountingCode) commercialRepresentative = try container.decodeIfPresent(String.self, forKey: .commercialRepresentative) commercialTerritory = try container.decodeIfPresent(String.self, forKey: .commercialTerritory) credit = try container.decodeIfPresent(CreditLimit.self, forKey: .credit) nod = try container.decodeIfPresent([String].self, forKey: .nod) ?? [] ndd = try container.decodeIfPresent([String].self, forKey: .ndd) ?? [] } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if payByCustomer != nil { try container.encode(payByCustomer, forKey: .payByCustomer) } if billToCustomer != nil { try container.encode(billToCustomer, forKey: .billToCustomer) } if routingCode != nil { try container.encode(routingCode, forKey: .routingCode) } if storeType != nil { try container.encode(storeType, forKey: .storeType) } if currencyCode != nil { try container.encode(currencyCode, forKey: .currencyCode) } if type != nil { try container.encode(type, forKey: .type) } if group != nil { try container.encode(group, forKey: .group) } if region != nil { try container.encode(region, forKey: .region) } if zoneRate != nil { try container.encode(zoneRate, forKey: .zoneRate) } if taxRule != nil { try container.encode(taxRule, forKey: .taxRule) } if paymentTerm != nil { try container.encode(paymentTerm, forKey: .paymentTerm) } if shipmentSite != nil { try container.encode(shipmentSite, forKey: .shipmentSite) } if shipmentSiteName != nil { try container.encode(shipmentSiteName, forKey: .shipmentSiteName) } if shipmentSiteGln != nil { try container.encode(shipmentSiteGln, forKey: .shipmentSiteGln) } if accountingCode != nil { try container.encode(accountingCode, forKey: .accountingCode) } if commercialRepresentative != nil { try container.encode(commercialRepresentative, forKey: .commercialRepresentative) } if commercialTerritory != nil { try container.encode(commercialTerritory, forKey: .commercialTerritory) } if credit != nil { try container.encode(credit, forKey: .credit) } if nod.count > 0 { try container.encode(nod, forKey: .nod) } if ndd.count > 0 { try container.encode(ndd, forKey: .ndd) } } } 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 CustomerRecord : Codable { public var gln:String? public var code:String? public var name:String? public var buyerAssignedVendorNo:String? public var supplierAssignedVendorNo:String? public var dutyFeeTaxRegistration:String? public var entityIdentification:String? public var contact:[Contact] = [] public var address:CustomerMasterAddress? public var avpList:[AvpList] = [] required public init(){} } public class CreditLimit : Codable { public var limit:Double? public var balance:Double? public var available:Double? public var effectiveDateTime:Date? required public init(){} } public class CustomerMasterAddress : Address { public var addressType:String? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case addressType } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) addressType = try container.decodeIfPresent(String.self, forKey: .addressType) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if addressType != nil { try container.encode(addressType, forKey: .addressType) } } } 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(){} }