/* Options: Date: 2024-12-03 18:37:06 SwiftVersion: 5.0 Version: 8.23 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://api.bokamera.se //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True IncludeTypes: CreateInvoiceDraft.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/eaccounting/invoicedraft", "POST") public class CreateInvoiceDraft : InvoiceAddress, IReturn, ICompany { public typealias Return = CreateInvoiceDraftQueryResponse /** * The booking id, to be used to create the customer. */ // @ApiMember(Description="The booking id, to be used to create the customer.", IsRequired=true) public var bookingId:Int /** * The Term of payment Id, to be used to create the invoice. */ // @ApiMember(Description="The Term of payment Id, to be used to create the invoice.", IsRequired=true) public var termsOfPaymentId:String /** * Note id's to add to this invoice */ // @ApiMember(Description="Note id's to add to this invoice") public var notes:[String] = [] /** * Invoice Customer name */ // @ApiMember(Description="Invoice Customer name") public var invoiceCustomerName:String /** * 1 = Apartment, 2 = Property Leave blank or set to null if you do not intend to use ROT or Green Technology functionality. */ // @ApiMember(Description="1 = Apartment, 2 = Property Leave blank or set to null if you do not intend to use ROT or Green Technology functionality.", IsRequired=true) public var rotPropertyType:RotPropertyTypes? /** * 0 = Normal, 1 = Rot, 2 = Rut = ['0', '1', '2'] */ // @ApiMember(Description="0 = Normal, 1 = Rot, 2 = Rut = ['0', '1', '2']", IsRequired=true) public var rotReducedInvoicingType:RotReducedInvoicingTypes? /** * The company id, if empty will use the company id for the user you are logged in with. */ // @ApiMember(Description="The company id, if empty will use the company id for the user you are logged in with.") public var companyId:String? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case bookingId case termsOfPaymentId case notes case invoiceCustomerName case rotPropertyType case rotReducedInvoicingType 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) termsOfPaymentId = try container.decodeIfPresent(String.self, forKey: .termsOfPaymentId) notes = try container.decodeIfPresent([String].self, forKey: .notes) ?? [] invoiceCustomerName = try container.decodeIfPresent(String.self, forKey: .invoiceCustomerName) rotPropertyType = try container.decodeIfPresent(RotPropertyTypes.self, forKey: .rotPropertyType) rotReducedInvoicingType = try container.decodeIfPresent(RotReducedInvoicingTypes.self, forKey: .rotReducedInvoicingType) 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 termsOfPaymentId != nil { try container.encode(termsOfPaymentId, forKey: .termsOfPaymentId) } if notes.count > 0 { try container.encode(notes, forKey: .notes) } if invoiceCustomerName != nil { try container.encode(invoiceCustomerName, forKey: .invoiceCustomerName) } if rotPropertyType != nil { try container.encode(rotPropertyType, forKey: .rotPropertyType) } if rotReducedInvoicingType != nil { try container.encode(rotReducedInvoicingType, forKey: .rotReducedInvoicingType) } if companyId != nil { try container.encode(companyId, forKey: .companyId) } } } public class CreateInvoiceDraftQueryResponse : Codable { public var invoice:InvoiceDraftQueryResponse public var invoiceUri:String public var responseStatus:ResponseStatus 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 enum RotPropertyTypes : Int, Codable { case Apartment = 1 case Property = 2 } public enum RotReducedInvoicingTypes : String, Codable { case Normal case Rot case Rut } public class InvoiceDraftQueryResponse : Codable { public var invoiceId:String public var createdDate:Date? public var totalAmount:Double? public var totalVatAmount:Double? public var customerId:String public var rows:[InvoiceDraftLineQueryResponse] = [] 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 customerNumber:String public var notes:[NoteQueryResponse] = [] public var noteIds:[String] = [] public var createdUtc:Date public var includesVat:Bool public var priceSign:String public var bookingId:String required public init(){} }