/* Options: Date: 2024-06-17 07:41:58 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: AddBillingInformation.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/billing/company/", "POST") // @ApiResponse(Description="You were unauthorized to call this service", StatusCode=401) // @ValidateRequest(Validator="IsAuthenticated") public class AddBillingInformation : IReturn, ICompany, Codable { public typealias Return = BillingInformationResponse /** * 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? /** * The prefered billing method. */ // @ApiMember(Description="The prefered billing method.", IsRequired=true) public var billingMethodId:Int /** * The name that should be printed on the billing information, normally this would be your company name. */ // @ApiMember(Description="The name that should be printed on the billing information, normally this would be your company name.") public var name:String /** * If you want to add the attention to the billing address. */ // @ApiMember(Description="If you want to add the attention to the billing address.") public var attention:String /** * The street for the billing adress. This is required when having postal invoice as billing method. */ // @ApiMember(Description="The street for the billing adress. This is required when having postal invoice as billing method.") public var street1:String /** * The street for the billing adress. */ // @ApiMember(Description="The street for the billing adress.") public var street2:String /** * The zip code (postal code) for the billing adress. This is required when having postal invoice as billing method. */ // @ApiMember(Description="The zip code (postal code) for the billing adress. This is required when having postal invoice as billing method.") public var zipCode:String /** * The city for the billing adress. This is required when having postal invoice as billing method. */ // @ApiMember(Description="The city for the billing adress. This is required when having postal invoice as billing method.") public var city:String /** * The country for the billing adress. This is required when having postal invoice as billing method. */ // @ApiMember(Description="The country for the billing adress. This is required when having postal invoice as billing method.") public var countryId:String /** * The billing email. This is required when having email invoice as billing method. */ // @ApiMember(Description="The billing email. This is required when having email invoice as billing method.") public var email:String /** * The billing payment terms in days. This is default 15 days. */ // @ApiMember(Description="The billing payment terms in days. This is default 15 days.") public var paymentTermsDays:Int? /** * The company vat registration number. */ // @ApiMember(Description="The company vat registration number.") public var vatRegistrationNumber:String /** * The company global location number. */ // @ApiMember(Description="The company global location number.") public var gln:String /** * You're internal rereference. */ // @ApiMember(Description="You're internal rereference.") public var referenceLine1:String /** * You're internal rereference. */ // @ApiMember(Description="You're internal rereference.") public var referenceLine2:String required public init(){} } public class BillingInformationResponse : Codable { /** * The company id. */ // @ApiMember(Description="The company id.") public var companyId:String /** * The prefered billing method. */ // @ApiMember(Description="The prefered billing method.", IsRequired=true) public var billingMethodId:Int /** * The name that should be printed on the billing information, normally this would be your company name. */ // @ApiMember(Description="The name that should be printed on the billing information, normally this would be your company name.") public var name:String /** * If you want to add the attention to the billing address. */ // @ApiMember(Description="If you want to add the attention to the billing address.") public var attention:String /** * The street for the billing adress. This is required when having postal invoice as billing method. */ // @ApiMember(Description="The street for the billing adress. This is required when having postal invoice as billing method.") public var street1:String /** * The street for the billing adress. */ // @ApiMember(Description="The street for the billing adress.") public var street2:String /** * The zip code (postal code) for the billing adress. This is required when having postal invoice as billing method. */ // @ApiMember(Description="The zip code (postal code) for the billing adress. This is required when having postal invoice as billing method.") public var zipCode:String /** * The city for the billing adress. This is required when having postal invoice as billing method. */ // @ApiMember(Description="The city for the billing adress. This is required when having postal invoice as billing method.") public var city:String /** * The country for the billing adress. This is required when having postal invoice as billing method. */ // @ApiMember(Description="The country for the billing adress. This is required when having postal invoice as billing method.") public var countryId:String /** * The billing email. This is required when having email invoice as billing method. */ // @ApiMember(Description="The billing email. This is required when having email invoice as billing method.") public var email:String /** * The company global location number. */ // @ApiMember(Description="The company global location number.") public var gln:String /** * You're internal rereference. */ // @ApiMember(Description="You're internal rereference.") public var referenceLine1:String /** * You're internal rereference. */ // @ApiMember(Description="You're internal rereference.") public var referenceLine2:String /** * The billing payment terms in days. This is default 15 days. */ // @ApiMember(Description="The billing payment terms in days. This is default 15 days.") public var paymentTermsDays:Int /** * The company vat registration number. */ // @ApiMember(Description="The company vat registration number.") public var vatRegistrationNumber:String /** * The billing method options to choose from */ // @ApiMember(Description="The billing method options to choose from") public var billingMethodOptions:[BillingMethod] = [] required public init(){} } public protocol ICompany { var companyId:String? { get set } } public class BillingMethod : BaseModel { public var billingMethodCountriesRelation:[BillingMethodCountriesRelation] = [] // @Required() public var name:String? // @Required() public var Description:String? public var modifiedDate:Date? public var id:Int required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case billingMethodCountriesRelation case name case Description case modifiedDate case id } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) billingMethodCountriesRelation = try container.decodeIfPresent([BillingMethodCountriesRelation].self, forKey: .billingMethodCountriesRelation) ?? [] name = try container.decodeIfPresent(String.self, forKey: .name) Description = try container.decodeIfPresent(String.self, forKey: .Description) modifiedDate = try container.decodeIfPresent(Date.self, forKey: .modifiedDate) id = try container.decodeIfPresent(Int.self, forKey: .id) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if billingMethodCountriesRelation.count > 0 { try container.encode(billingMethodCountriesRelation, forKey: .billingMethodCountriesRelation) } if name != nil { try container.encode(name, forKey: .name) } if Description != nil { try container.encode(Description, forKey: .Description) } if modifiedDate != nil { try container.encode(modifiedDate, forKey: .modifiedDate) } if id != nil { try container.encode(id, forKey: .id) } } } public class BaseModel : Codable { required public init(){} } public class BillingMethodCountriesRelation : BaseModel { // @Required() public var billingMethodId:Int? // @Required() public var countryId:String? public var modifiedDate:Date? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case billingMethodId case countryId case modifiedDate } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) billingMethodId = try container.decodeIfPresent(Int.self, forKey: .billingMethodId) countryId = try container.decodeIfPresent(String.self, forKey: .countryId) modifiedDate = try container.decodeIfPresent(Date.self, forKey: .modifiedDate) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if billingMethodId != nil { try container.encode(billingMethodId, forKey: .billingMethodId) } if countryId != nil { try container.encode(countryId, forKey: .countryId) } if modifiedDate != nil { try container.encode(modifiedDate, forKey: .modifiedDate) } } }