/* Options: Date: 2024-06-17 05:12:10 SwiftVersion: 5.0 Version: 8.23 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://testapi.bokamera.se //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True IncludeTypes: EaccountingInvoiceQuery.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/eaccounting/invoices", "GET") public class EaccountingInvoiceQuery : EAccountingPagination, IReturn, ICompany { public typealias Return = InvoiceQueryResponse public var bookingId:Int? public var paid:Bool? public var includeInvoiceLines:Bool public var includeInvoiceNotes:Bool public var includePaymentTermData:Bool public var includeInvoiceAddress:Bool public var companyId:String? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case bookingId case paid case includeInvoiceLines case includeInvoiceNotes case includePaymentTermData case includeInvoiceAddress case companyId } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) bookingId = try container.decodeIfPresent(Int.self, forKey: .bookingId) paid = try container.decodeIfPresent(Bool.self, forKey: .paid) includeInvoiceLines = try container.decodeIfPresent(Bool.self, forKey: .includeInvoiceLines) includeInvoiceNotes = try container.decodeIfPresent(Bool.self, forKey: .includeInvoiceNotes) includePaymentTermData = try container.decodeIfPresent(Bool.self, forKey: .includePaymentTermData) includeInvoiceAddress = try container.decodeIfPresent(Bool.self, forKey: .includeInvoiceAddress) companyId = try container.decodeIfPresent(String.self, forKey: .companyId) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if bookingId != nil { try container.encode(bookingId, forKey: .bookingId) } if paid != nil { try container.encode(paid, forKey: .paid) } if includeInvoiceLines != nil { try container.encode(includeInvoiceLines, forKey: .includeInvoiceLines) } if includeInvoiceNotes != nil { try container.encode(includeInvoiceNotes, forKey: .includeInvoiceNotes) } if includePaymentTermData != nil { try container.encode(includePaymentTermData, forKey: .includePaymentTermData) } if includeInvoiceAddress != nil { try container.encode(includeInvoiceAddress, forKey: .includeInvoiceAddress) } if companyId != nil { try container.encode(companyId, forKey: .companyId) } } } public class InvoiceQueryResponse : Codable { public var invoiceId:String public var createdDate:Date public var totalAmount:Double public var totalVatAmount:Double public var customerId:String public var rows:[InvoiceLineQueryResponse] = [] public var vatSpecification:[VatSpecificationQueryResponse] = [] public var invoiceDate:String public var dueDate:String public var deliveryDate:Date? public var persons:[Person] = [] public var invoiceCustomerName:String public var invoiceAddress:InvoiceAddress public var customerIsPrivatePerson:Bool public var termsOfPaymentId:String public var termsOfPaymentData:EAccountingTermsOfPaymentQueryResponse public var customerEmail:String public var invoiceNumber:Int public var customerNumber:String public var notes:[NoteQueryResponse] = [] public var noteIds:[String] = [] public var createdUtc:Date public var modifiedUtc:Date public var includesVat:Bool public var sendType:EAccountingInvoiceSendTypes? public var isSold:Bool public var paymentDate:Date? public var paymentStatus:PaymentStatus public var paymentStatusTitle:String public var creditedBy:[CreditedBy] = [] public var priceSign:String public var bookingId:String required public init(){} } public protocol ICompany { var companyId:String? { get set } } public class InvoiceAddress : Codable { public var corporateIdentityNumber:String public var invoiceAddress1:String public var invoiceAddress2:String public var invoiceCity:String public var invoicePostalCode:String public var invoiceCountryCode:String required public init(){} } public class EAccountingPagination : Codable { /** * Page number that will be fetched to e-accounting client; Default 1 */ // @DataMember(Order=1) // @ApiMember(Description="Page number that will be fetched to e-accounting client; Default 1") public var pageNumber:Int? /** * Page size that will be fetched to e-accounting client; Default 75~ */ // @DataMember(Order=2) // @ApiMember(Description="Page size that will be fetched to e-accounting client; Default 75~") public var pageSize:Int? required public init(){} } public enum EAccountingInvoiceSendTypes : String, Codable { case None case AutoInvoiceElectronic case AutoInvoicePrint case AutoInvoiceB2C } public class InvoiceLineQueryResponse : Codable { public var articleNumber:String public var articleId:String public var isServiceArticle:Bool public var amountNoVat:Double public var percentVat:Double? public var lineNumber:Int public var isTextRow:Bool public var text:String public var unitPrice:Double public var unitAbbreviation:String public var unitAbbreviationEnglish:String public var discountPercentage:Double public var quantity:Float public var isWorkCost:Bool public var isVatFree:Bool public var costCenterItemId1:String public var costCenterItemId2:String public var costCenterItemId3:String public var unitId:String public var projectId:String public var workCostType:Int? public var workHours:Float? public var materialCosts:Double? public var greenTechnologyType:GreenTechnologyType? public var contributionMargin:ContributionMargin required public init(){} } public class VatSpecificationQueryResponse : Codable { public var amountInvoiceCurrency:Double public var vatAmountInvoiceCurrency:Double public var vatPercent:Double required public init(){} } public class Person : Codable { public var ssn:String public var amount:Int required public init(){} } public enum PaymentStatus : String, Codable { case Paid case Unpaid case Overdue } public class CreditedBy : Codable { public var creditInvoiceId:String required public init(){} } public enum GreenTechnologyType : String, Codable { case None case SolarCellInstallation case ElectricEnergyStorageInstallation case ElectricVehicleChargingPointInstallation } public class ContributionMargin : Codable { public var amount:Int? public var percentage:Int? required public init(){} } public class NoteQueryResponse : Codable { public var id:String public var text:String public var createdUtc:Date public var modifiedUtc:Date required public init(){} } public class EAccountingTermsOfPaymentQueryResponse : Codable { public var id:String public var name:String public var nameEnglish:String public var numberOfDays:Int public var termsOfPaymentTypeId:Int public var termsOfPaymentTypeText:String public var availableForSales:Bool public var availableForPurchase:Bool required public init(){} }