/* Options: Date: 2025-05-10 04:16:35 SwiftVersion: 5.0 Version: 8.40 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://active-ewebservice.biz/aeservices30/api //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True IncludeTypes: InvoiceDetailRequest.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack /** * InvoiceDetailRequires active-e Customer Service. */ // @Route("/InvoiceDetail", "GET") // @DataContract public class InvoiceDetailRequest : BaseSecureRequest, IReturn { public typealias Return = InvoiceDetailResponse // @DataMember public var acct:Int? // @DataMember public var invoiceStartDate:Date? // @DataMember public var invoiceEndDate:Date? /** * The Starting Offset. Defaults to 0 if not sent. */ // @DataMember // @ApiMember(DataType="integer", Description="The Starting Offset. Defaults to 0 if not sent.", Format="int64", Name="StartOffset") public var startOffset:Int? /** * The # of records to be returned. Defaults to 100 if not sent. */ // @DataMember // @ApiMember(DataType="integer", Description="The # of records to be returned. Defaults to 100 if not sent.", Format="int64", Name="RecordCount") public var recordCount:Int? /** * The Invoice Ref# to be looked up. If sent, do not send WebRef, Acct, InvoiceStartDate, InvoiceEndDate, StartOffset, or RecordCount */ // @DataMember // @ApiMember(DataType="string", Description="The Invoice Ref# to be looked up. If sent, do not send WebRef, Acct, InvoiceStartDate, InvoiceEndDate, StartOffset, or RecordCount", Name="AIMRef") public var aimRef:String /** * The WebRef to be looked up. If sent, do not send AIMRef, Acct, InvoiceStartDate, InvoiceEndDate, StartOffset, or RecordCount */ // @DataMember // @ApiMember(DataType="string", Description="The WebRef to be looked up. If sent, do not send AIMRef, Acct, InvoiceStartDate, InvoiceEndDate, StartOffset, or RecordCount", Name="WebRef") public var webRef:String required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case acct case invoiceStartDate case invoiceEndDate case startOffset case recordCount case aimRef case webRef } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) acct = try container.decodeIfPresent(Int.self, forKey: .acct) invoiceStartDate = try container.decodeIfPresent(Date.self, forKey: .invoiceStartDate) invoiceEndDate = try container.decodeIfPresent(Date.self, forKey: .invoiceEndDate) startOffset = try container.decodeIfPresent(Int.self, forKey: .startOffset) recordCount = try container.decodeIfPresent(Int.self, forKey: .recordCount) aimRef = try container.decodeIfPresent(String.self, forKey: .aimRef) webRef = try container.decodeIfPresent(String.self, forKey: .webRef) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if acct != nil { try container.encode(acct, forKey: .acct) } if invoiceStartDate != nil { try container.encode(invoiceStartDate, forKey: .invoiceStartDate) } if invoiceEndDate != nil { try container.encode(invoiceEndDate, forKey: .invoiceEndDate) } if startOffset != nil { try container.encode(startOffset, forKey: .startOffset) } if recordCount != nil { try container.encode(recordCount, forKey: .recordCount) } if aimRef != nil { try container.encode(aimRef, forKey: .aimRef) } if webRef != nil { try container.encode(webRef, forKey: .webRef) } } } // @DataContract public class InvoiceDetailResponse : BaseResponse { // @DataMember public var invoices:[InvoiceInfo] = [] // @DataMember public var remainingRecords:Int required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case invoices case remainingRecords } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) invoices = try container.decodeIfPresent([InvoiceInfo].self, forKey: .invoices) ?? [] remainingRecords = try container.decodeIfPresent(Int.self, forKey: .remainingRecords) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if invoices.count > 0 { try container.encode(invoices, forKey: .invoices) } if remainingRecords != nil { try container.encode(remainingRecords, forKey: .remainingRecords) } } } // @DataContract public class BaseRequest : Codable { /** * This is your AIM API Key provided by Tri-Tech */ // @DataMember // @ApiMember(DataType="string", Description="This is your AIM API Key provided by Tri-Tech", IsRequired=true, Name="ApiKey", ParameterType="header") public var apiKey:String // @DataMember // @ApiMember(DataType="string", Name="OAuthToken", ParameterType="header") public var oAuthToken:String required public init(){} } // @DataContract public class BaseSecureRequest : BaseRequest { /** * */ // @DataMember // @ApiMember(DataType="string", Description="", Name="Token", ParameterType="Header") public var token:String /** * */ // @DataMember // @ApiMember(DataType="string", Description="", Name="DeviceId", ParameterType="Header") public var deviceId:String /** * */ // @DataMember // @ApiMember(DataType="string", Description="", IsRequired=true, Name="AppId", ParameterType="Header") public var appId:String required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case token case deviceId case appId } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) token = try container.decodeIfPresent(String.self, forKey: .token) deviceId = try container.decodeIfPresent(String.self, forKey: .deviceId) appId = try container.decodeIfPresent(String.self, forKey: .appId) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if token != nil { try container.encode(token, forKey: .token) } if deviceId != nil { try container.encode(deviceId, forKey: .deviceId) } if appId != nil { try container.encode(appId, forKey: .appId) } } } // @DataContract public class InvoiceInfo : Codable { // @DataMember public var invoiceNumber:String // @DataMember public var dateTime:Date // @DataMember public var soldToAcct:Int // @DataMember public var soldToName:String // @DataMember public var billToAcct:Int // @DataMember public var billToName:String // @DataMember public var type:String // @DataMember public var po:String // @DataMember public var originalAmount:Double // @DataMember public var balance:Double // @DataMember public var location:String // @DataMember public var shipToName:String // @DataMember public var shipToAddress:String // @DataMember public var shipToId:Int? // @DataMember public var lineItems:[InvoiceLineItem] = [] // @DataMember public var payments:[InvoicePaymentItem] = [] required public init(){} } // @DataContract public class InvoiceLineItem : Codable { // @DataMember public var quantity:Double // @DataMember public var sku:String // @DataMember public var Description:String // @DataMember public var priceEach:Double // @DataMember public var extended:Double // @DataMember public var discount:Double // @DataMember public var total:Double // @DataMember public var originalRef:String // @DataMember public var notes:String // @DataMember public var source:String required public init(){} } // @DataContract public class InvoicePaymentItem : Codable { // @DataMember public var payRef:String // @DataMember public var dateTime:Date // @DataMember public var amount:Double // @DataMember public var notes:String // @DataMember public var source:String required public init(){} } // @DataContract public class BaseResponse : Codable { /** * */ // @DataMember // @ApiMember(DataType="BaseResponseResult", Description="", Name="Status", ParameterType="body") public var status:BaseResponseResult required public init(){} }