fortnox-api 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.codeclimate.yml +3 -2
- data/.env.test +3 -0
- data/.rubocop.yml +32 -23
- data/.travis.yml +3 -2
- data/Guardfile +2 -2
- data/LICENSE.txt +165 -22
- data/README.md +56 -37
- data/fortnox-api.gemspec +9 -6
- data/lib/fortnox/api.rb +18 -2
- data/lib/fortnox/api/base.rb +5 -3
- data/lib/fortnox/api/environment_validation.rb +51 -6
- data/lib/fortnox/api/mappers.rb +49 -0
- data/lib/fortnox/api/mappers/base.rb +47 -0
- data/lib/fortnox/api/mappers/base/from_json.rb +78 -0
- data/lib/fortnox/api/mappers/base/to_json.rb +65 -0
- data/lib/fortnox/api/mappers/customer.rb +27 -0
- data/lib/fortnox/api/mappers/default_delivery_types.rb +13 -0
- data/lib/fortnox/api/mappers/default_templates.rb +15 -0
- data/lib/fortnox/api/mappers/edi_information.rb +22 -0
- data/lib/fortnox/api/mappers/email_information.rb +18 -0
- data/lib/fortnox/api/mappers/invoice.rb +27 -0
- data/lib/fortnox/api/mappers/invoice_row.rb +20 -0
- data/lib/fortnox/api/mappers/order.rb +23 -0
- data/lib/fortnox/api/mappers/order_row.rb +16 -0
- data/lib/fortnox/api/models.rb +2 -0
- data/lib/fortnox/api/models/base.rb +56 -13
- data/lib/fortnox/api/models/customer.rb +112 -101
- data/lib/fortnox/api/models/document_base.rb +189 -0
- data/lib/fortnox/api/models/invoice.rb +29 -195
- data/lib/fortnox/api/models/label.rb +17 -0
- data/lib/fortnox/api/models/order.rb +27 -0
- data/lib/fortnox/api/repositories.rb +2 -0
- data/lib/fortnox/api/repositories/base.rb +4 -5
- data/lib/fortnox/api/repositories/base/loaders.rb +22 -14
- data/lib/fortnox/api/repositories/base/savers.rb +30 -16
- data/lib/fortnox/api/repositories/customer.rb +3 -25
- data/lib/fortnox/api/repositories/invoice.rb +3 -22
- data/lib/fortnox/api/repositories/order.rb +16 -0
- data/lib/fortnox/api/request_handling.rb +3 -3
- data/lib/fortnox/api/types.rb +44 -0
- data/lib/fortnox/api/types/default_delivery_types.rb +20 -0
- data/lib/fortnox/api/types/default_templates.rb +23 -0
- data/lib/fortnox/api/types/defaulted.rb +11 -0
- data/lib/fortnox/api/types/document_row.rb +65 -0
- data/lib/fortnox/api/types/edi_information.rb +29 -0
- data/lib/fortnox/api/types/email_information.rb +26 -0
- data/lib/fortnox/api/types/enums.rb +75 -0
- data/lib/fortnox/api/types/invoice_row.rb +19 -0
- data/lib/fortnox/api/types/model.rb +40 -0
- data/lib/fortnox/api/types/nullable.rb +21 -0
- data/lib/fortnox/api/types/order_row.rb +16 -0
- data/lib/fortnox/api/types/required.rb +13 -0
- data/lib/fortnox/api/types/sized.rb +25 -0
- data/lib/fortnox/api/version.rb +1 -1
- data/spec/fortnox/api/base_spec.rb +85 -14
- data/spec/fortnox/api/mappers/base/from_json_spec.rb +70 -0
- data/spec/fortnox/api/mappers/base/to_json_spec.rb +76 -0
- data/spec/fortnox/api/mappers/base_spec.rb +156 -0
- data/spec/fortnox/api/mappers/contexts/json_conversion.rb +56 -0
- data/spec/fortnox/api/mappers/customer_spec.rb +25 -0
- data/spec/fortnox/api/mappers/default_delivery_types_spec.rb +12 -0
- data/spec/fortnox/api/mappers/edi_information_spec.rb +21 -0
- data/spec/fortnox/api/mappers/email_information_spec.rb +17 -0
- data/spec/fortnox/api/mappers/examples/mapper.rb +26 -0
- data/spec/fortnox/api/mappers/invoice_row_spec.rb +19 -0
- data/spec/fortnox/api/mappers/invoice_spec.rb +24 -0
- data/spec/fortnox/api/mappers/order_row_spec.rb +14 -0
- data/spec/fortnox/api/mappers/order_spec.rb +20 -0
- data/spec/fortnox/api/models/base_spec.rb +44 -22
- data/spec/fortnox/api/models/customer_spec.rb +9 -0
- data/spec/fortnox/api/models/examples/document_base.rb +13 -0
- data/spec/fortnox/api/models/examples/model.rb +13 -0
- data/spec/fortnox/api/models/invoice_spec.rb +7 -31
- data/spec/fortnox/api/models/order_spec.rb +13 -0
- data/spec/fortnox/api/repositories/customer_spec.rb +20 -76
- data/spec/fortnox/api/repositories/examples/all.rb +17 -0
- data/spec/fortnox/api/repositories/examples/find.rb +25 -0
- data/spec/fortnox/api/repositories/examples/only.rb +42 -0
- data/spec/fortnox/api/repositories/examples/save.rb +69 -0
- data/spec/fortnox/api/repositories/examples/save_with_nested_model.rb +32 -0
- data/spec/fortnox/api/repositories/examples/save_with_specially_named_attribute.rb +27 -0
- data/spec/fortnox/api/repositories/examples/search.rb +31 -0
- data/spec/fortnox/api/repositories/invoice_spec.rb +36 -5
- data/spec/fortnox/api/repositories/order_spec.rb +35 -0
- data/spec/fortnox/api/types/account_number_spec.rb +28 -0
- data/spec/fortnox/api/types/default_delivery_types_spec.rb +10 -0
- data/spec/fortnox/api/types/edi_information_spec.rb +13 -0
- data/spec/fortnox/api/types/email_information_spec.rb +13 -0
- data/spec/fortnox/api/types/email_spec.rb +29 -0
- data/spec/fortnox/api/types/enums_spec.rb +13 -0
- data/spec/fortnox/api/types/examples/document_row.rb +15 -0
- data/spec/fortnox/api/types/examples/enum.rb +48 -0
- data/spec/fortnox/api/types/examples/types.rb +9 -0
- data/spec/fortnox/api/types/house_work_types_spec.rb +60 -0
- data/spec/fortnox/api/types/invoice_row_spec.rb +9 -0
- data/spec/fortnox/api/types/model_spec.rb +56 -0
- data/spec/fortnox/api/types/nullable_spec.rb +57 -0
- data/spec/fortnox/api/types/order_row_spec.rb +13 -0
- data/spec/fortnox/api/types/required_spec.rb +42 -0
- data/spec/fortnox/api/types/sized_spec.rb +74 -0
- data/spec/fortnox/api_spec.rb +16 -15
- data/spec/spec_helper.rb +19 -9
- data/spec/support/helpers/dummy_class_helper.rb +19 -0
- data/spec/support/helpers/environment_helper.rb +7 -0
- data/spec/support/helpers/repository_helper.rb +8 -0
- data/spec/support/helpers/when_performing_helper.rb +5 -0
- data/spec/support/matchers.rb +1 -1
- data/spec/support/matchers/type.rb +17 -0
- data/spec/support/matchers/type/attribute_matcher.rb +39 -0
- data/spec/support/matchers/type/enum_matcher.rb +21 -0
- data/spec/support/matchers/type/have_account_number_matcher.rb +21 -0
- data/spec/support/matchers/type/have_country_code_matcher.rb +13 -0
- data/spec/support/matchers/type/have_currency_matcher.rb +7 -0
- data/spec/support/matchers/type/have_customer_type_matcher.rb +13 -0
- data/spec/support/matchers/type/have_default_delivery_type_matcher.rb +7 -0
- data/spec/support/matchers/type/have_discount_type_matcher.rb +7 -0
- data/spec/support/matchers/type/have_email_matcher.rb +22 -0
- data/spec/support/matchers/type/have_house_work_type_matcher.rb +7 -0
- data/spec/support/matchers/type/have_nullable_date_matcher.rb +58 -0
- data/spec/support/matchers/type/have_nullable_matcher.rb +52 -0
- data/spec/support/matchers/type/have_nullable_string_matcher.rb +49 -0
- data/spec/support/matchers/type/have_sized_float_matcher.rb +8 -0
- data/spec/support/matchers/type/have_sized_integer_matcher.rb +8 -0
- data/spec/support/matchers/type/have_sized_string_matcher.rb +35 -0
- data/spec/support/matchers/type/have_vat_type_matcher.rb +7 -0
- data/spec/support/matchers/type/numeric_matcher.rb +50 -0
- data/spec/support/matchers/type/require_attribute_matcher.rb +69 -0
- data/spec/support/matchers/type/type_matcher.rb +38 -0
- data/spec/vcr_cassettes/customers/all.yml +119 -9
- data/spec/vcr_cassettes/customers/find_id_1.yml +8 -9
- data/spec/vcr_cassettes/customers/find_new.yml +46 -0
- data/spec/vcr_cassettes/customers/save_new.yml +9 -11
- data/spec/vcr_cassettes/customers/save_old.yml +9 -12
- data/spec/vcr_cassettes/customers/save_with_specially_named_attribute.yml +45 -0
- data/spec/vcr_cassettes/customers/search_by_name.yml +66 -0
- data/spec/vcr_cassettes/customers/search_miss.yml +45 -0
- data/spec/vcr_cassettes/invoices/all.yml +104 -0
- data/spec/vcr_cassettes/invoices/filter_hit.yml +46 -0
- data/spec/vcr_cassettes/invoices/filter_invalid.yml +42 -0
- data/spec/vcr_cassettes/invoices/find_id_1.yml +47 -0
- data/spec/vcr_cassettes/invoices/find_new.yml +49 -0
- data/spec/vcr_cassettes/invoices/save_new.yml +48 -0
- data/spec/vcr_cassettes/invoices/save_old.yml +49 -0
- data/spec/vcr_cassettes/invoices/save_with_nested_model.yml +47 -0
- data/spec/vcr_cassettes/invoices/save_with_specially_named_attribute.yml +47 -0
- data/spec/vcr_cassettes/invoices/search_by_name.yml +48 -0
- data/spec/vcr_cassettes/invoices/search_miss.yml +45 -0
- data/spec/vcr_cassettes/orders/all.yml +144 -0
- data/spec/vcr_cassettes/orders/filter_hit.yml +48 -0
- data/spec/vcr_cassettes/orders/filter_invalid.yml +42 -0
- data/spec/vcr_cassettes/orders/find_id_1.yml +48 -0
- data/spec/vcr_cassettes/orders/find_new.yml +49 -0
- data/spec/vcr_cassettes/orders/house_work_type_babysitting.yml +47 -0
- data/spec/vcr_cassettes/orders/house_work_type_cleaning.yml +47 -0
- data/spec/vcr_cassettes/orders/house_work_type_construction.yml +47 -0
- data/spec/vcr_cassettes/orders/house_work_type_cooking.yml +43 -0
- data/spec/vcr_cassettes/orders/house_work_type_electricity.yml +47 -0
- data/spec/vcr_cassettes/orders/house_work_type_gardening.yml +47 -0
- data/spec/vcr_cassettes/orders/house_work_type_glassmetalwork.yml +47 -0
- data/spec/vcr_cassettes/orders/house_work_type_grounddrainagework.yml +47 -0
- data/spec/vcr_cassettes/orders/house_work_type_hvac.yml +47 -0
- data/spec/vcr_cassettes/orders/house_work_type_masonry.yml +47 -0
- data/spec/vcr_cassettes/orders/house_work_type_othercare.yml +47 -0
- data/spec/vcr_cassettes/orders/house_work_type_othercosts.yml +47 -0
- data/spec/vcr_cassettes/orders/house_work_type_paintingwallpapering.yml +47 -0
- data/spec/vcr_cassettes/orders/house_work_type_snowplowing.yml +47 -0
- data/spec/vcr_cassettes/orders/house_work_type_textileclothing.yml +47 -0
- data/spec/vcr_cassettes/orders/house_work_type_tutoring.yml +43 -0
- data/spec/vcr_cassettes/orders/save_new.yml +48 -0
- data/spec/vcr_cassettes/orders/save_old.yml +49 -0
- data/spec/vcr_cassettes/orders/save_with_nested_model.yml +47 -0
- data/spec/vcr_cassettes/orders/search_by_name.yml +47 -0
- data/spec/vcr_cassettes/orders/search_miss.yml +45 -0
- metadata +301 -71
- data/lib/fortnox/api/models/attributes/country_code.rb +0 -17
- data/lib/fortnox/api/models/attributes/currency.rb +0 -17
- data/lib/fortnox/api/models/edi_information.rb +0 -28
- data/lib/fortnox/api/models/email_information.rb +0 -25
- data/lib/fortnox/api/models/row.rb +0 -82
- data/lib/fortnox/api/repositories/base/json_convertion.rb +0 -68
- data/lib/fortnox/api/repositories/base/options.rb +0 -33
- data/lib/fortnox/api/validators.rb +0 -1
- data/lib/fortnox/api/validators/attributes/country_code.rb +0 -42
- data/lib/fortnox/api/validators/attributes/currency.rb +0 -38
- data/lib/fortnox/api/validators/base.rb +0 -70
- data/lib/fortnox/api/validators/constant.rb +0 -21
- data/lib/fortnox/api/validators/customer.rb +0 -29
- data/lib/fortnox/api/validators/edi_information.rb +0 -11
- data/lib/fortnox/api/validators/email_information.rb +0 -19
- data/lib/fortnox/api/validators/invoice.rb +0 -33
- data/lib/fortnox/api/validators/row.rb +0 -22
- data/spec/fortnox/api/models/attributes/country_code_spec.rb +0 -23
- data/spec/fortnox/api/models/attributes/currency_spec.rb +0 -23
- data/spec/fortnox/api/models/attributes/dummy_model_context.rb +0 -9
- data/spec/fortnox/api/models/row_spec.rb +0 -13
- data/spec/fortnox/api/repositories/context.rb +0 -10
- data/spec/fortnox/api/repositories/examples.rb +0 -16
- data/spec/fortnox/api/validators/attributes/country_code_spec.rb +0 -9
- data/spec/fortnox/api/validators/attributes/currency_spec.rb +0 -9
- data/spec/fortnox/api/validators/attributes/examples_for_validate.rb +0 -29
- data/spec/fortnox/api/validators/base_spec.rb +0 -61
- data/spec/fortnox/api/validators/constant_spec.rb +0 -12
- data/spec/fortnox/api/validators/context.rb +0 -102
- data/spec/fortnox/api/validators/customer_spec.rb +0 -31
- data/spec/fortnox/api/validators/edi_information_spec.rb +0 -18
- data/spec/fortnox/api/validators/email_information_spec.rb +0 -26
- data/spec/fortnox/api/validators/invoice_spec.rb +0 -36
- data/spec/fortnox/api/validators/row_spec.rb +0 -27
- data/spec/fortnox/api/validators/validator_examples.rb +0 -20
- data/spec/support/matchers/models.rb +0 -27
- data/spec/support/matchers/validators.rb +0 -36
@@ -0,0 +1,189 @@
|
|
1
|
+
require "fortnox/api/types"
|
2
|
+
require "fortnox/api/models/label"
|
3
|
+
|
4
|
+
module Fortnox
|
5
|
+
module API
|
6
|
+
module Model
|
7
|
+
module DocumentBase
|
8
|
+
# Method length is ignored due to readability.
|
9
|
+
# rubocop:disable Metrics/MethodLength
|
10
|
+
def self.ify( base )
|
11
|
+
base.class_eval do
|
12
|
+
|
13
|
+
# Url Direct url to the record.
|
14
|
+
base.attribute :url, Types::Nullable::String.with( read_only: true )
|
15
|
+
|
16
|
+
# AdministrationFee The document administration fee.
|
17
|
+
base.attribute :administration_fee, Types::Nullable::Float
|
18
|
+
|
19
|
+
# AdministrationFeeVAT VAT of the document administration fee.
|
20
|
+
base.attribute :administration_fee_vat, Types::Nullable::Float.with( read_only: true )
|
21
|
+
|
22
|
+
# Address1 Document address 1. 1024 characters
|
23
|
+
base.attribute :address1, Types::Sized::String[ 1024 ]
|
24
|
+
|
25
|
+
# Address2 Document address 2. 1024 characters
|
26
|
+
base.attribute :address2, Types::Sized::String[ 1024 ]
|
27
|
+
|
28
|
+
# BasisTaxReduction Basis of tax reduction.
|
29
|
+
base.attribute :basis_tax_reduction, Types::Nullable::Float.with( read_only: true )
|
30
|
+
|
31
|
+
# Cancelled If the document is cancelled.
|
32
|
+
base.attribute :cancelled, Types::Nullable::Boolean.with( read_only: true )
|
33
|
+
|
34
|
+
# City City for the document address.
|
35
|
+
base.attribute :city, Types::Sized::String[ 1024 ]
|
36
|
+
|
37
|
+
# Comments Comments of the document
|
38
|
+
base.attribute :comments, Types::Sized::String[ 1024 ]
|
39
|
+
|
40
|
+
# ContributionPercent Document contribution in percent.
|
41
|
+
base.attribute :contribution_percent, Types::Nullable::Float.with( read_only: true )
|
42
|
+
|
43
|
+
# ContributionValue Document contribution in amount.
|
44
|
+
base.attribute :contribution_value, Types::Nullable::Float.with( read_only: true )
|
45
|
+
|
46
|
+
# Country Country for the document address.
|
47
|
+
base.attribute :country, Fortnox::API::Types::CountryCode
|
48
|
+
|
49
|
+
# CostCenter Code of the cost center.
|
50
|
+
base.attribute :cost_center, Types::Nullable::String
|
51
|
+
|
52
|
+
# Currency Code of the currency.
|
53
|
+
base.attribute :currency, Fortnox::API::Types::Currency
|
54
|
+
|
55
|
+
# CurrencyRate Currency rate used for the document
|
56
|
+
base.attribute :currency_rate, Types::Nullable::Float
|
57
|
+
|
58
|
+
# CurrencyUnit Currency unit used for the document
|
59
|
+
base.attribute :currency_unit, Types::Nullable::Float
|
60
|
+
|
61
|
+
# CustomerName Name of the customer. 1024 characters
|
62
|
+
base.attribute :customer_name, Types::Sized::String[ 1024 ]
|
63
|
+
|
64
|
+
# CustomerNumber Customer number of the customer. Required
|
65
|
+
base.attribute :customer_number, Types::Required::String
|
66
|
+
|
67
|
+
# DeliveryAddress1 Document delivery address 1.
|
68
|
+
base.attribute :delivery_address1, Types::Sized::String[ 1024 ]
|
69
|
+
|
70
|
+
# DeliveryAddress2 Document delivery address 2.
|
71
|
+
base.attribute :delivery_address2, Types::Sized::String[ 1024 ]
|
72
|
+
|
73
|
+
# DeliveryCity City for the document delivery address.
|
74
|
+
base.attribute :delivery_city, Types::Sized::String[ 1024 ]
|
75
|
+
|
76
|
+
# DeliveryCountry Country for the document delivery address.
|
77
|
+
base.attribute :delivery_country, Fortnox::API::Types::CountryCode
|
78
|
+
|
79
|
+
# DeliveryDate Date of delivery.
|
80
|
+
base.attribute :delivery_date, Types::Nullable::Date
|
81
|
+
|
82
|
+
# DeliveryName Name of the recipient of the delivery
|
83
|
+
base.attribute :delivery_name, Types::Sized::String[ 1024 ]
|
84
|
+
|
85
|
+
# DeliveryZipCode ZipCode for the document delivery address.
|
86
|
+
base.attribute :delivery_zip_code, Types::Sized::String[ 1024 ]
|
87
|
+
|
88
|
+
# DocumentNumber The document number.
|
89
|
+
base.attribute :document_number, Types::Nullable::Integer
|
90
|
+
|
91
|
+
# EmailInformation Separete EmailInformation object
|
92
|
+
base.attribute :email_information, Types::EmailInformation
|
93
|
+
|
94
|
+
# ExternalInvoiceReference1 External document reference 1. 80 characters
|
95
|
+
base.attribute :external_invoice_reference1, Types::Sized::String[ 80 ]
|
96
|
+
|
97
|
+
# ExternalInvoiceReference2 External document reference 2. 80 characters
|
98
|
+
base.attribute :external_invoice_reference2, Types::Sized::String[ 80 ]
|
99
|
+
|
100
|
+
# Freight Freight cost of the document. 12 digits (incl. decimals)
|
101
|
+
base.attribute :freight, Types::Sized::Float[ 0.0, 99_999_999_999.0 ]
|
102
|
+
|
103
|
+
# FreightVAT VAT of the freight cost.
|
104
|
+
base.attribute :freight_vat, Types::Nullable::Float.with( read_only: true )
|
105
|
+
|
106
|
+
# Gross Gross value of the document
|
107
|
+
base.attribute :gross, Types::Nullable::Float.with( read_only: true )
|
108
|
+
|
109
|
+
# HouseWork If there is any row of the document marked “house work”.
|
110
|
+
base.attribute :house_work, Types::Nullable::Boolean.with( read_only: true )
|
111
|
+
|
112
|
+
base.attribute :labels, Types::Strict::Array.member( Label )
|
113
|
+
|
114
|
+
# Net Net amount
|
115
|
+
base.attribute :net, Types::Nullable::Float.with( read_only: true )
|
116
|
+
|
117
|
+
# NotCompleted If the document is set as not completed.
|
118
|
+
base.attribute :not_completed, Types::Nullable::Boolean
|
119
|
+
|
120
|
+
# OfferReference Reference to the offer, if one exists.
|
121
|
+
base.attribute :offer_reference, Types::Nullable::Integer.with( read_only: true )
|
122
|
+
|
123
|
+
# OrganisationNumber Organisation number of the customer for the
|
124
|
+
# document.
|
125
|
+
base.attribute :organisation_number, Types::Nullable::String.with( read_only: true )
|
126
|
+
|
127
|
+
# OurReference Our reference. 50 characters
|
128
|
+
base.attribute :our_reference, Types::Sized::String[ 50 ]
|
129
|
+
|
130
|
+
# Phone1 Phone number 1 of the customer for the document. 1024 characters
|
131
|
+
base.attribute :phone1, Types::Sized::String[ 1024 ]
|
132
|
+
|
133
|
+
# Phone2 Phone number 2 of the customer for the document. 1024 characters
|
134
|
+
base.attribute :phone2, Types::Sized::String[ 1024 ]
|
135
|
+
|
136
|
+
# PriceList Code of the price list.
|
137
|
+
base.attribute :price_list, Types::Nullable::String
|
138
|
+
|
139
|
+
# PrintTemplate Print template of the document.
|
140
|
+
base.attribute :print_template, Types::Nullable::String
|
141
|
+
|
142
|
+
# Project Code of the project.
|
143
|
+
base.attribute :project, Types::Nullable::String
|
144
|
+
|
145
|
+
# Remarks Remarks of the document. 1024 characters
|
146
|
+
base.attribute :remarks, Types::Sized::String[ 1024 ]
|
147
|
+
|
148
|
+
# RoundOff Round off amount for the document.
|
149
|
+
base.attribute :round_off, Types::Nullable::Float.with( read_only: true )
|
150
|
+
|
151
|
+
# Sent If the document is printed or sent in any way.
|
152
|
+
base.attribute :sent, Types::Nullable::Boolean.with( read_only: true )
|
153
|
+
|
154
|
+
# TaxReduction The amount of tax reduction.
|
155
|
+
base.attribute :tax_reduction, Types::Nullable::Integer.with( read_only: true )
|
156
|
+
|
157
|
+
# TermsOfDelivery Code of the terms of delivery.
|
158
|
+
base.attribute :terms_of_delivery, Types::Nullable::String
|
159
|
+
|
160
|
+
# TermsOfPayment Code of the terms of payment.
|
161
|
+
base.attribute :terms_of_payment, Types::Nullable::String
|
162
|
+
|
163
|
+
# Total The total amount of the document.
|
164
|
+
base.attribute :total, Types::Nullable::Float.with( read_only: true )
|
165
|
+
|
166
|
+
# TotalVAT The total VAT amount of the document.
|
167
|
+
base.attribute :total_vat, Types::Nullable::Float.with( read_only: true )
|
168
|
+
|
169
|
+
# VATIncluded If the price of the document is including VAT.
|
170
|
+
base.attribute :vat_included, Types::Nullable::Boolean
|
171
|
+
|
172
|
+
# WayOfDelivery Code of the way of delivery.
|
173
|
+
base.attribute :way_of_delivery, Types::Nullable::String
|
174
|
+
|
175
|
+
# YourOrderNumber Your order number. 30 characters
|
176
|
+
base.attribute :your_order_number, Types::Sized::String[ 30 ]
|
177
|
+
|
178
|
+
# YourReference Your reference. 50 characters
|
179
|
+
base.attribute :your_reference, Types::Sized::String[ 50 ]
|
180
|
+
|
181
|
+
# ZipCode Zip code of the document. 1024 characters
|
182
|
+
base.attribute :zip_code, Types::Sized::String[ 1024 ]
|
183
|
+
end
|
184
|
+
end
|
185
|
+
# rubocop:enable Metrics/MethodLength
|
186
|
+
end
|
187
|
+
end
|
188
|
+
end
|
189
|
+
end
|
@@ -1,252 +1,86 @@
|
|
1
1
|
require "fortnox/api/models/base"
|
2
|
-
require "fortnox/api/models/
|
3
|
-
require "fortnox/api/models/email_information"
|
4
|
-
require "fortnox/api/models/row"
|
2
|
+
require "fortnox/api/models/document_base"
|
5
3
|
|
6
4
|
module Fortnox
|
7
5
|
module API
|
8
6
|
module Model
|
9
7
|
class Invoice < Fortnox::API::Model::Base
|
8
|
+
UNIQUE_ID = :document_number
|
9
|
+
STUB = { customer_number: '' }.freeze
|
10
10
|
|
11
|
-
|
12
|
-
attribute :url, String, writer: :private
|
11
|
+
DocumentBase.ify( self )
|
13
12
|
|
14
13
|
#UrlTaxReductionList Direct url to the tax reduction for the invoice.
|
15
|
-
attribute :url_tax_reduction_list, String
|
14
|
+
attribute :url_tax_reduction_list, Types::Nullable::String.with( read_only: true )
|
16
15
|
|
17
16
|
#AccountingMethod Accounting Method.
|
18
|
-
attribute :accounting_method, String
|
19
|
-
|
20
|
-
#AdministrationFee The invoice administration fee. 12 digits (incl. decimals)
|
21
|
-
attribute :administration_fee, Float
|
22
|
-
|
23
|
-
#AdministrationFeeVAT VAT of the invoice administration fee.
|
24
|
-
attribute :administration_fee_vat, Float, writer: :private
|
25
|
-
|
26
|
-
#Address1 Invoice address 1. 1024 characters
|
27
|
-
attribute :address1, String
|
28
|
-
|
29
|
-
#Address2 Invoice address 2. 1024 characters
|
30
|
-
attribute :address2, String
|
17
|
+
attribute :accounting_method, Types::Nullable::String
|
31
18
|
|
32
19
|
#Balance Balance of the invoice.
|
33
|
-
attribute :balance, Float
|
34
|
-
|
35
|
-
#BasisTaxReduction Basis of tax reduction.
|
36
|
-
attribute :basis_tax_reduction, Float, writer: :private
|
20
|
+
attribute :balance, Types::Nullable::Float.with( read_only: true )
|
37
21
|
|
38
22
|
#Booked If the invoice is bookkept.
|
39
|
-
attribute :booked, Boolean
|
40
|
-
|
41
|
-
#Cancelled If the invoice is cancelled.
|
42
|
-
attribute :cancelled, Boolean, writer: :private
|
23
|
+
attribute :booked, Types::Nullable::Boolean.with( read_only: true )
|
43
24
|
|
44
25
|
#Credit If the invoice is a credit invoice.
|
45
|
-
attribute :credit, Boolean
|
26
|
+
attribute :credit, Types::Nullable::Boolean.with( read_only: true )
|
46
27
|
|
47
28
|
#CreditInvoiceReference Reference to the credit invoice, if one exits.
|
48
|
-
attribute :credit_invoice_reference, Integer
|
49
|
-
|
50
|
-
#City City for the invoice address.
|
51
|
-
attribute :city, String
|
52
|
-
|
53
|
-
#Comments Comments of the invoice
|
54
|
-
attribute :comments, String
|
29
|
+
attribute :credit_invoice_reference, Types::Nullable::Integer
|
55
30
|
|
56
31
|
#ContractReference Reference to the contract, if one exists.
|
57
|
-
attribute :contract_reference, Integer
|
58
|
-
|
59
|
-
#ContributionPercent Invoice contribution in percent.
|
60
|
-
attribute :contribution_percent, Float, writer: :private
|
61
|
-
|
62
|
-
#ContributionValue Invoice contribution in amount.
|
63
|
-
attribute :contribution_value, Float, writer: :private
|
64
|
-
|
65
|
-
#Country Country for the invoice address.
|
66
|
-
attribute :country, String
|
67
|
-
|
68
|
-
# CostCenter Code of the cost center.
|
69
|
-
attribute :cost_center, String
|
70
|
-
|
71
|
-
#Currency Code of the currency.
|
72
|
-
attribute :currency, String
|
73
|
-
|
74
|
-
#CurrencyRate Currency rate used for the invoice. 16 digits
|
75
|
-
attribute :currency_rate, Float
|
76
|
-
|
77
|
-
#CurrencyUnit Currency unit used for the invoice. 16 digits
|
78
|
-
attribute :currency_unit, Float
|
79
|
-
|
80
|
-
#CustomerName Name of the customer. 1024 characters
|
81
|
-
attribute :customer_name, String
|
82
|
-
|
83
|
-
#CustomerNumber Customer number of the customer. Required
|
84
|
-
attribute :customer_number, String
|
85
|
-
|
86
|
-
#DeliveryAddress1 Invoice delivery address 1.
|
87
|
-
attribute :delivery_address1, String
|
88
|
-
|
89
|
-
#DeliveryAddress2 Invoice delivery address 2.
|
90
|
-
attribute :delivery_address2, String
|
91
|
-
|
92
|
-
#DeliveryCity City for the invoice delivery address.
|
93
|
-
attribute :delivery_city, String
|
94
|
-
|
95
|
-
#DeliveryCountry Country for the invoice delivery address.
|
96
|
-
attribute :delivery_country, String
|
97
|
-
|
98
|
-
#DeliveryDate Date of delivery.
|
99
|
-
attribute :delivery_date, Date
|
100
|
-
|
101
|
-
#DeliveryName Name of the recipient of the delivery
|
102
|
-
attribute :delivery_name, String
|
103
|
-
|
104
|
-
#DeliveryZipCode ZipCode for the invoice delivery address.
|
105
|
-
attribute :delivery_zip_code, String
|
106
|
-
|
107
|
-
#DocumentNumber The invoice number.
|
108
|
-
attribute :document_number, Integer
|
32
|
+
attribute :contract_reference, Types::Nullable::Integer.with( read_only: true )
|
109
33
|
|
110
34
|
#DueDate Due date of the invoice.
|
111
|
-
attribute :due_date, Date
|
35
|
+
attribute :due_date, Types::Nullable::Date
|
112
36
|
|
113
37
|
#EDIInformation Separate EDIInformation object
|
114
|
-
attribute :edi_information, EDIInformation
|
115
|
-
|
116
|
-
#EmailInformation Separete EmailInformation object
|
117
|
-
attribute :email_information, EmailInformation
|
38
|
+
attribute :edi_information, Types::EDIInformation
|
118
39
|
|
119
40
|
#EUQuarterlyReport EU Quarterly Report On / Off
|
120
|
-
attribute :eu_quarterly_report, Boolean
|
121
|
-
|
122
|
-
#ExternalInvoiceReference1 External invoice reference 1. 80 characters
|
123
|
-
attribute :external_invoice_reference1, String
|
124
|
-
|
125
|
-
#ExternalInvoiceReference2 External invoice reference 2. 80 characters
|
126
|
-
attribute :external_invoice_reference2, String
|
127
|
-
|
128
|
-
#Freight Freight cost of the invoice. 12 digits (incl. decimals)
|
129
|
-
attribute :freight, Float
|
130
|
-
|
131
|
-
#FreightVAT VAT of the freight cost.
|
132
|
-
attribute :freight_vat, Float, writer: :private
|
133
|
-
|
134
|
-
#Gross Gross value of the invoice
|
135
|
-
attribute :gross, Float, writer: :private
|
136
|
-
|
137
|
-
#HouseWork If there is any row of the invoice marked “house work”.
|
138
|
-
attribute :house_work, Boolean, writer: :private
|
41
|
+
attribute :eu_quarterly_report, Types::Nullable::Boolean
|
139
42
|
|
140
43
|
#InvoiceDate Invoice date.
|
141
|
-
attribute :invoice_date, Date
|
44
|
+
attribute :invoice_date, Types::Nullable::Date
|
142
45
|
|
143
46
|
#InvoicePeriodStart Start date of the invoice period.
|
144
|
-
attribute :invoice_period_start, Date
|
47
|
+
attribute :invoice_period_start, Types::Nullable::Date.with( read_only: true )
|
145
48
|
|
146
49
|
#InvoicePeriodEnd End date of the invoice period.
|
147
|
-
attribute :invoice_period_end, Date
|
50
|
+
attribute :invoice_period_end, Types::Nullable::Date.with( read_only: true )
|
148
51
|
|
149
|
-
#InvoiceRows Separate
|
150
|
-
attribute :invoice_rows, Array
|
52
|
+
#InvoiceRows Separate object
|
53
|
+
attribute :invoice_rows, Types::Strict::Array.member( Types::InvoiceRow )
|
151
54
|
|
152
55
|
#InvoiceType The type of invoice.
|
153
|
-
attribute :invoice_type, String
|
56
|
+
attribute :invoice_type, Types::Nullable::String
|
154
57
|
|
155
58
|
#Language Language code.
|
156
|
-
attribute :language, String
|
59
|
+
attribute :language, Types::Nullable::String
|
157
60
|
|
158
61
|
#LastRemindDate Date of last reminder.
|
159
|
-
attribute :last_remind_date, Date
|
160
|
-
|
161
|
-
#Net Net amount
|
162
|
-
attribute :net, Float, writer: :private
|
163
|
-
|
164
|
-
#NotCompleted If the invoice is set as not completed.
|
165
|
-
attribute :not_completed, Boolean
|
62
|
+
attribute :last_remind_date, Types::Nullable::Date.with( read_only: true )
|
166
63
|
|
167
64
|
#NoxFinans If the invoice is managed by NoxFinans
|
168
|
-
attribute :nox_finans, Boolean
|
65
|
+
attribute :nox_finans, Types::Nullable::Boolean.with( read_only: true )
|
169
66
|
|
170
67
|
#OCR OCR number of the invoice.
|
171
|
-
attribute :ocr, String
|
172
|
-
|
173
|
-
#OfferReference Reference to the offer, if one exists.
|
174
|
-
attribute :offer_reference, Integer, writer: :private
|
68
|
+
attribute :ocr, Types::Nullable::String
|
175
69
|
|
176
70
|
#OrderReference Reference to the order, if one exists.
|
177
|
-
attribute :order_reference, Integer
|
178
|
-
|
179
|
-
#OrganisationNumber Organisation number of the customer for the invoice.
|
180
|
-
attribute :organisation_number, String, writer: :private
|
181
|
-
|
182
|
-
#OurReference Our reference. 50 characters
|
183
|
-
attribute :our_reference, String
|
184
|
-
|
185
|
-
#Phone1 Phone number 1 of the customer for the invoice. 1024 characters
|
186
|
-
attribute :phone1, String
|
187
|
-
|
188
|
-
#Phone2 Phone number 2 of the customer for the invoice. 1024 characters
|
189
|
-
attribute :phone2, String
|
190
|
-
|
191
|
-
#PriceList Code of the price list.
|
192
|
-
attribute :price_list, String
|
193
|
-
|
194
|
-
#PrintTemplate Print template of the invoice.
|
195
|
-
attribute :print_template, String
|
196
|
-
|
197
|
-
#Project Code of the project.
|
198
|
-
attribute :project, String
|
199
|
-
|
200
|
-
#Remarks Remarks of the invoice. 1024 characters
|
201
|
-
attribute :remarks, String
|
71
|
+
attribute :order_reference, Types::Nullable::Integer.with( read_only: true )
|
202
72
|
|
203
73
|
#Reminders Number of reminders sent to the customer.
|
204
|
-
attribute :reminders, Integer
|
205
|
-
|
206
|
-
#RoundOff Round off amount for the invoice.
|
207
|
-
attribute :round_off, Float, writer: :private
|
208
|
-
|
209
|
-
#Sent If the document is printed or sent in any way.
|
210
|
-
attribute :sent, Boolean, writer: :private
|
211
|
-
|
212
|
-
#TaxReduction The amount of tax reduction.
|
213
|
-
attribute :tax_reduction, Integer, writer: :private
|
214
|
-
|
215
|
-
#TermsOfDelivery Code of the terms of delivery.
|
216
|
-
attribute :terms_of_delivery, String
|
217
|
-
|
218
|
-
#TermsOfPayment Code of the terms of payment.
|
219
|
-
attribute :terms_of_payment, String
|
220
|
-
|
221
|
-
#Total The total amount of the invoice.
|
222
|
-
attribute :total, Float, writer: :private
|
223
|
-
|
224
|
-
#TotalVAT The total VAT amount of the invoice.
|
225
|
-
attribute :total_vat, Float, writer: :private
|
226
|
-
|
227
|
-
#VATIncluded If the price of the invoice is including VAT.
|
228
|
-
attribute :vat_included, Boolean
|
74
|
+
attribute :reminders, Types::Nullable::Integer.with( read_only: true )
|
229
75
|
|
230
76
|
#VoucherNumber Voucher number for the invoice.
|
231
|
-
attribute :voucher_number, Integer
|
77
|
+
attribute :voucher_number, Types::Nullable::Integer.with( read_only: true )
|
232
78
|
|
233
79
|
#VoucherSeries Voucher series for the invoice.
|
234
|
-
attribute :voucher_series, String
|
80
|
+
attribute :voucher_series, Types::Nullable::String.with( read_only: true )
|
235
81
|
|
236
82
|
#VoucherYear Voucher year for the invoice.
|
237
|
-
attribute :voucher_year, Integer
|
238
|
-
|
239
|
-
#WayOfDelivery Code of the way of delivery.
|
240
|
-
attribute :way_of_delivery, String
|
241
|
-
|
242
|
-
#YourOrderNumber Your order number. 30 characters
|
243
|
-
attribute :your_order_number, String
|
244
|
-
|
245
|
-
#YourReference Your reference. 50 characters
|
246
|
-
attribute :your_reference, String
|
247
|
-
|
248
|
-
#ZipCode Zip code of the invoice. 1024 characters
|
249
|
-
attribute :zip_code, String
|
83
|
+
attribute :voucher_year, Types::Nullable::Integer.with( read_only: true )
|
250
84
|
end
|
251
85
|
end
|
252
86
|
end
|