fortnox-api 0.5.2 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (192) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -0
  3. data/.rubocop.yml +9 -1104
  4. data/.travis.yml +22 -2
  5. data/Gemfile +3 -1
  6. data/Guardfile +4 -2
  7. data/README.md +2 -2
  8. data/Rakefile +3 -1
  9. data/bin/console +17 -3
  10. data/fortnox-api.gemspec +32 -27
  11. data/lib/fortnox/api.rb +17 -16
  12. data/lib/fortnox/api/circular_queue.rb +13 -7
  13. data/lib/fortnox/api/mappers.rb +29 -25
  14. data/lib/fortnox/api/mappers/article.rb +7 -6
  15. data/lib/fortnox/api/mappers/base.rb +18 -16
  16. data/lib/fortnox/api/mappers/base/from_json.rb +37 -30
  17. data/lib/fortnox/api/mappers/base/to_json.rb +39 -37
  18. data/lib/fortnox/api/mappers/customer.rb +7 -7
  19. data/lib/fortnox/api/mappers/default_delivery_types.rb +4 -2
  20. data/lib/fortnox/api/mappers/default_templates.rb +5 -4
  21. data/lib/fortnox/api/mappers/edi_information.rb +5 -4
  22. data/lib/fortnox/api/mappers/email_information.rb +5 -4
  23. data/lib/fortnox/api/mappers/invoice.rb +10 -8
  24. data/lib/fortnox/api/mappers/invoice_row.rb +12 -7
  25. data/lib/fortnox/api/mappers/order.rb +10 -7
  26. data/lib/fortnox/api/mappers/order_row.rb +13 -6
  27. data/lib/fortnox/api/mappers/project.rb +6 -4
  28. data/lib/fortnox/api/mappers/terms_of_payments.rb +17 -0
  29. data/lib/fortnox/api/mappers/unit.rb +17 -0
  30. data/lib/fortnox/api/models.rb +9 -5
  31. data/lib/fortnox/api/models/article.rb +68 -67
  32. data/lib/fortnox/api/models/base.rb +52 -36
  33. data/lib/fortnox/api/models/customer.rb +95 -94
  34. data/lib/fortnox/api/models/document.rb +186 -0
  35. data/lib/fortnox/api/models/invoice.rb +44 -44
  36. data/lib/fortnox/api/models/label.rb +5 -3
  37. data/lib/fortnox/api/models/order.rb +8 -8
  38. data/lib/fortnox/api/models/project.rb +10 -8
  39. data/lib/fortnox/api/models/terms_of_payments.rb +28 -0
  40. data/lib/fortnox/api/models/unit.rb +24 -0
  41. data/lib/fortnox/api/repositories.rb +9 -5
  42. data/lib/fortnox/api/repositories/article.rb +6 -4
  43. data/lib/fortnox/api/repositories/base.rb +49 -46
  44. data/lib/fortnox/api/repositories/base/loaders.rb +32 -36
  45. data/lib/fortnox/api/repositories/base/savers.rb +23 -21
  46. data/lib/fortnox/api/repositories/customer.rb +6 -4
  47. data/lib/fortnox/api/repositories/invoice.rb +6 -4
  48. data/lib/fortnox/api/repositories/order.rb +6 -4
  49. data/lib/fortnox/api/repositories/project.rb +6 -4
  50. data/lib/fortnox/api/repositories/terms_of_payments.rb +17 -0
  51. data/lib/fortnox/api/repositories/unit.rb +17 -0
  52. data/lib/fortnox/api/request_handling.rb +12 -12
  53. data/lib/fortnox/api/types.rb +62 -11
  54. data/lib/fortnox/api/types/default_delivery_types.rb +5 -3
  55. data/lib/fortnox/api/types/default_templates.rb +3 -1
  56. data/lib/fortnox/api/types/defaulted.rb +2 -2
  57. data/lib/fortnox/api/types/document_row.rb +41 -42
  58. data/lib/fortnox/api/types/edi_information.rb +10 -8
  59. data/lib/fortnox/api/types/email_information.rb +10 -8
  60. data/lib/fortnox/api/types/enums.rb +60 -47
  61. data/lib/fortnox/api/types/invoice_row.rb +8 -8
  62. data/lib/fortnox/api/types/model.rb +14 -10
  63. data/lib/fortnox/api/types/nullable.rb +7 -7
  64. data/lib/fortnox/api/types/order_row.rb +5 -5
  65. data/lib/fortnox/api/types/required.rb +5 -5
  66. data/lib/fortnox/api/types/sized.rb +14 -6
  67. data/lib/fortnox/api/version.rb +3 -1
  68. data/spec/fortnox/api/mappers/article_spec.rb +3 -1
  69. data/spec/fortnox/api/mappers/base/from_json_spec.rb +15 -13
  70. data/spec/fortnox/api/mappers/base/to_json_spec.rb +4 -3
  71. data/spec/fortnox/api/mappers/base_spec.rb +40 -35
  72. data/spec/fortnox/api/mappers/contexts/json_conversion.rb +12 -11
  73. data/spec/fortnox/api/mappers/customer_spec.rb +3 -1
  74. data/spec/fortnox/api/mappers/default_delivery_types_spec.rb +3 -1
  75. data/spec/fortnox/api/mappers/edi_information_spec.rb +4 -2
  76. data/spec/fortnox/api/mappers/email_information_spec.rb +4 -2
  77. data/spec/fortnox/api/mappers/examples/mapper.rb +17 -9
  78. data/spec/fortnox/api/mappers/invoice_row_spec.rb +8 -3
  79. data/spec/fortnox/api/mappers/invoice_spec.rb +4 -1
  80. data/spec/fortnox/api/mappers/order_row_spec.rb +9 -2
  81. data/spec/fortnox/api/mappers/order_spec.rb +4 -1
  82. data/spec/fortnox/api/mappers/project_spec.rb +3 -1
  83. data/spec/fortnox/api/mappers/terms_of_payments_spec.rb +16 -0
  84. data/spec/fortnox/api/mappers/unit_spec.rb +57 -0
  85. data/spec/fortnox/api/models/article_spec.rb +2 -0
  86. data/spec/fortnox/api/models/base_spec.rb +46 -38
  87. data/spec/fortnox/api/models/customer_spec.rb +2 -0
  88. data/spec/fortnox/api/models/examples/document_base.rb +5 -3
  89. data/spec/fortnox/api/models/examples/model.rb +12 -9
  90. data/spec/fortnox/api/models/invoice_spec.rb +2 -0
  91. data/spec/fortnox/api/models/order_spec.rb +2 -0
  92. data/spec/fortnox/api/models/project_spec.rb +2 -0
  93. data/spec/fortnox/api/models/terms_of_payments_spec.rb +9 -0
  94. data/spec/fortnox/api/models/unit_spec.rb +31 -0
  95. data/spec/fortnox/api/repositories/article_spec.rb +7 -5
  96. data/spec/fortnox/api/repositories/base_spec.rb +121 -100
  97. data/spec/fortnox/api/repositories/customer_spec.rb +7 -5
  98. data/spec/fortnox/api/repositories/examples/all.rb +5 -4
  99. data/spec/fortnox/api/repositories/examples/find.rb +50 -41
  100. data/spec/fortnox/api/repositories/examples/only.rb +14 -13
  101. data/spec/fortnox/api/repositories/examples/save.rb +23 -29
  102. data/spec/fortnox/api/repositories/examples/save_with_nested_model.rb +11 -11
  103. data/spec/fortnox/api/repositories/examples/save_with_specially_named_attribute.rb +11 -10
  104. data/spec/fortnox/api/repositories/examples/search.rb +15 -15
  105. data/spec/fortnox/api/repositories/invoice_spec.rb +8 -6
  106. data/spec/fortnox/api/repositories/order_spec.rb +8 -6
  107. data/spec/fortnox/api/repositories/project_spec.rb +7 -5
  108. data/spec/fortnox/api/repositories/terms_of_payments_spec.rb +30 -0
  109. data/spec/fortnox/api/repositories/unit_spec.rb +34 -0
  110. data/spec/fortnox/api/types/account_number_spec.rb +12 -9
  111. data/spec/fortnox/api/types/default_delivery_types_spec.rb +6 -4
  112. data/spec/fortnox/api/types/edi_information_spec.rb +9 -7
  113. data/spec/fortnox/api/types/email_information_spec.rb +8 -6
  114. data/spec/fortnox/api/types/email_spec.rb +27 -14
  115. data/spec/fortnox/api/types/enums_spec.rb +3 -1
  116. data/spec/fortnox/api/types/examples/document_row.rb +10 -8
  117. data/spec/fortnox/api/types/examples/enum.rb +29 -22
  118. data/spec/fortnox/api/types/examples/types.rb +8 -4
  119. data/spec/fortnox/api/types/housework_types_spec.rb +68 -0
  120. data/spec/fortnox/api/types/invoice_row_spec.rb +3 -1
  121. data/spec/fortnox/api/types/model_spec.rb +12 -9
  122. data/spec/fortnox/api/types/nullable_spec.rb +8 -6
  123. data/spec/fortnox/api/types/order_row_spec.rb +4 -2
  124. data/spec/fortnox/api/types/required_spec.rb +4 -2
  125. data/spec/fortnox/api/types/sized_spec.rb +18 -16
  126. data/spec/fortnox/api_spec.rb +45 -43
  127. data/spec/spec_helper.rb +9 -6
  128. data/spec/support/helpers.rb +3 -1
  129. data/spec/support/helpers/configuration_helper.rb +2 -0
  130. data/spec/support/helpers/dummy_class_helper.rb +7 -8
  131. data/spec/support/helpers/repository_helper.rb +2 -0
  132. data/spec/support/helpers/when_performing_helper.rb +3 -1
  133. data/spec/support/matchers.rb +2 -0
  134. data/spec/support/matchers/type.rb +3 -1
  135. data/spec/support/matchers/type/attribute_matcher.rb +15 -14
  136. data/spec/support/matchers/type/enum_matcher.rb +9 -7
  137. data/spec/support/matchers/type/have_account_number_matcher.rb +11 -9
  138. data/spec/support/matchers/type/have_country_code_matcher.rb +6 -4
  139. data/spec/support/matchers/type/have_currency_matcher.rb +4 -2
  140. data/spec/support/matchers/type/have_customer_type_matcher.rb +6 -4
  141. data/spec/support/matchers/type/have_default_delivery_type_matcher.rb +4 -2
  142. data/spec/support/matchers/type/have_discount_type_matcher.rb +4 -2
  143. data/spec/support/matchers/type/have_email_matcher.rb +11 -9
  144. data/spec/support/matchers/type/have_housework_type_matcher.rb +9 -0
  145. data/spec/support/matchers/type/have_nullable_date_matcher.rb +29 -29
  146. data/spec/support/matchers/type/have_nullable_matcher.rb +23 -21
  147. data/spec/support/matchers/type/have_nullable_string_matcher.rb +30 -32
  148. data/spec/support/matchers/type/have_sized_float_matcher.rb +4 -2
  149. data/spec/support/matchers/type/have_sized_integer_matcher.rb +4 -2
  150. data/spec/support/matchers/type/have_sized_string_matcher.rb +16 -15
  151. data/spec/support/matchers/type/have_vat_type_matcher.rb +4 -2
  152. data/spec/support/matchers/type/numeric_matcher.rb +25 -23
  153. data/spec/support/matchers/type/require_attribute_matcher.rb +36 -37
  154. data/spec/support/matchers/type/type_matcher.rb +18 -16
  155. data/spec/support/vcr_setup.rb +2 -0
  156. data/spec/vcr_cassettes/orders/{house_work_type_babysitting.yml → housework_type_babysitting.yml} +9 -10
  157. data/spec/vcr_cassettes/orders/{house_work_type_cleaning.yml → housework_type_cleaning.yml} +9 -10
  158. data/spec/vcr_cassettes/orders/{house_work_type_construction.yml → housework_type_construction.yml} +9 -10
  159. data/spec/vcr_cassettes/orders/{house_work_type_cooking.yml → housework_type_cooking.yml} +7 -7
  160. data/spec/vcr_cassettes/orders/{house_work_type_electricity.yml → housework_type_electricity.yml} +9 -10
  161. data/spec/vcr_cassettes/orders/{house_work_type_gardening.yml → housework_type_gardening.yml} +9 -10
  162. data/spec/vcr_cassettes/orders/{house_work_type_glassmetalwork.yml → housework_type_glassmetalwork.yml} +9 -10
  163. data/spec/vcr_cassettes/orders/{house_work_type_grounddrainagework.yml → housework_type_grounddrainagework.yml} +9 -10
  164. data/spec/vcr_cassettes/orders/{house_work_type_hvac.yml → housework_type_hvac.yml} +9 -10
  165. data/spec/vcr_cassettes/orders/{house_work_type_masonry.yml → housework_type_masonry.yml} +9 -10
  166. data/spec/vcr_cassettes/orders/{house_work_type_othercare.yml → housework_type_othercare.yml} +9 -10
  167. data/spec/vcr_cassettes/orders/{house_work_type_othercosts.yml → housework_type_othercosts.yml} +9 -10
  168. data/spec/vcr_cassettes/orders/{house_work_type_paintingwallpapering.yml → housework_type_paintingwallpapering.yml} +9 -10
  169. data/spec/vcr_cassettes/orders/{house_work_type_snowplowing.yml → housework_type_snowplowing.yml} +9 -10
  170. data/spec/vcr_cassettes/orders/{house_work_type_textileclothing.yml → housework_type_textileclothing.yml} +9 -10
  171. data/spec/vcr_cassettes/orders/{house_work_type_tutoring.yml → housework_type_tutoring.yml} +7 -7
  172. data/spec/vcr_cassettes/termsofpayments/all.yml +51 -0
  173. data/spec/vcr_cassettes/termsofpayments/find_failure.yml +45 -0
  174. data/spec/vcr_cassettes/termsofpayments/find_id_1.yml +46 -0
  175. data/spec/vcr_cassettes/termsofpayments/find_new.yml +46 -0
  176. data/spec/vcr_cassettes/termsofpayments/save_new.yml +45 -0
  177. data/spec/vcr_cassettes/termsofpayments/save_old.yml +46 -0
  178. data/spec/vcr_cassettes/units/all.yml +48 -0
  179. data/spec/vcr_cassettes/units/find_failure.yml +45 -0
  180. data/spec/vcr_cassettes/units/find_id_1.yml +46 -0
  181. data/spec/vcr_cassettes/units/find_new.yml +48 -0
  182. data/spec/vcr_cassettes/units/save_new.yml +47 -0
  183. data/spec/vcr_cassettes/units/save_old.yml +48 -0
  184. data/spec/vcr_cassettes/units/save_with_specially_named_attribute.yml +47 -0
  185. metadata +127 -88
  186. data/docs/account.rb +0 -59
  187. data/docs/extraction_script.js +0 -23
  188. data/docs/generation_script.rb +0 -43
  189. data/docs/json/account.json +0 -77
  190. data/lib/fortnox/api/models/document_base.rb +0 -189
  191. data/spec/fortnox/api/types/house_work_types_spec.rb +0 -64
  192. data/spec/support/matchers/type/have_house_work_type_matcher.rb +0 -7
data/docs/account.rb DELETED
@@ -1,59 +0,0 @@
1
- require "fortnox/api/models/base"
2
-
3
- module Fortnox
4
- module API
5
- module Entities
6
- module Account
7
- class Entity < Fortnox::API::Model::Base
8
-
9
- # Direct URL to the record
10
- attribute :url, String
11
-
12
- # If the account is actve
13
- attribute :acitve, Boolean
14
-
15
- # Opening balance of the account
16
- attribute :balancebroughtforward, Float
17
-
18
- # Closing balance of the account
19
- attribute :balancecarriedforward, Float
20
-
21
- # Code of the proposed cost center. The code must be of an existing cost center.
22
- attribute :costcenter, String
23
-
24
- # Cost center settings for the account. Can be ALLOWED MANDATORY or NOTALLOWED
25
- attribute :costcentersettings, String
26
-
27
- # Account description
28
- attribute :description, String
29
-
30
- # Account number
31
- attribute :number, Integer
32
-
33
- # Number of the proposed project. The number must be of an existing project.
34
- attribute :project, Integer
35
-
36
- # Project settings for the account. Can be ALLOWED MANDATORY or NOTALLOWED
37
- attribute :projectsettings, String
38
-
39
- # SRU code
40
- attribute :sru, String
41
-
42
- # Proposed transaction information
43
- attribute :transactioninformation, String
44
-
45
- # Transaction information settings for the account. Can be ALLOWED MANDATORY or NOTALLOWED
46
- attribute :transactioninformationsettings, String
47
-
48
- # VAT code
49
- attribute :vatcode, String
50
-
51
- # Id of the financial year.
52
- attribute :year, Integer
53
-
54
- end
55
- end
56
- end
57
- end
58
- end
59
-
@@ -1,23 +0,0 @@
1
- o = {};
2
-
3
- $('table.target tr').each(function(index, row){
4
-
5
- first_column = $('td', row).first();
6
- name = first_column.text().toLowerCase();
7
-
8
- last_column = $('td', row).last().text();
9
-
10
- parts = last_column.split(/\n|,/);
11
- parts = parts.map( function( el ){ return el.trim(); });
12
-
13
- type = parts.shift();
14
- description = parts.pop();
15
- validations = parts.length > 0 ? parts.join(', ') : null;
16
- o[ name ] = {
17
- "type": type,
18
- "validations": validations,
19
- "description": description
20
- }
21
- });
22
-
23
- JSON.stringify(o);
@@ -1,43 +0,0 @@
1
- require 'json'
2
-
3
- filename = 'account.json'
4
- modelname = filename.split('.').first.capitalize
5
-
6
- json = File.read( 'json/account.json' )
7
- hash = JSON.parse( json )
8
-
9
- header = <<-RB
10
- require "fortnox/api/models/base"
11
-
12
- module Fortnox
13
- module API
14
- module Entities
15
- module {{ model_name }}
16
- class Entity < Fortnox::API::Model::Base
17
-
18
- RB
19
-
20
- footer = <<-RB
21
- end
22
- end
23
- end
24
- end
25
- end
26
-
27
- RB
28
-
29
- attribute = <<-RB
30
- # {{ description }}
31
- attribute :{{ name }}, {{ type }}
32
-
33
- RB
34
-
35
- generated_class = header.gsub( '{{ model_name }}', modelname )
36
-
37
- hash.each do |name, attributes|
38
- generated_class << attribute.gsub( '{{ description }}', attributes.fetch( 'description' ) ).gsub( '{{ name }}', name ).gsub( '{{ type }}', attributes.fetch( 'type' ).capitalize )
39
- end
40
-
41
- generated_class << footer
42
-
43
- File.write( "#{ modelname.downcase }.rb", generated_class )
@@ -1,77 +0,0 @@
1
- {
2
- "url": {
3
- "type": "string",
4
- "validations": "read-only",
5
- "description": "Direct URL to the record"
6
- },
7
- "acitve": {
8
- "type": "boolean",
9
- "validations": null,
10
- "description": "If the account is actve"
11
- },
12
- "balancebroughtforward": {
13
- "type": "float",
14
- "validations": null,
15
- "description": "Opening balance of the account"
16
- },
17
- "balancecarriedforward": {
18
- "type": "float",
19
- "validations": "read-only",
20
- "description": "Closing balance of the account"
21
- },
22
- "costcenter": {
23
- "type": "string",
24
- "validations": null,
25
- "description": "Code of the proposed cost center. The code must be of an existing cost center."
26
- },
27
- "costcentersettings": {
28
- "type": "string",
29
- "validations": null,
30
- "description": "Cost center settings for the account. Can be ALLOWED MANDATORY or NOTALLOWED"
31
- },
32
- "description": {
33
- "type": "string",
34
- "validations": "200 characters, required",
35
- "description": "Account description"
36
- },
37
- "number": {
38
- "type": "integer",
39
- "validations": "4 digits, sortable, required",
40
- "description": "Account number"
41
- },
42
- "project": {
43
- "type": "integer",
44
- "validations": null,
45
- "description": "Number of the proposed project. The number must be of an existing project."
46
- },
47
- "projectsettings": {
48
- "type": "string",
49
- "validations": null,
50
- "description": "Project settings for the account. Can be ALLOWED MANDATORY or NOTALLOWED"
51
- },
52
- "sru": {
53
- "type": "string",
54
- "validations": "4 or 5 digits, searchable",
55
- "description": "SRU code"
56
- },
57
- "transactioninformation": {
58
- "type": "string",
59
- "validations": "100 characters",
60
- "description": "Proposed transaction information"
61
- },
62
- "transactioninformationsettings": {
63
- "type": "string",
64
- "validations": null,
65
- "description": "Transaction information settings for the account. Can be ALLOWED MANDATORY or NOTALLOWED"
66
- },
67
- "vatcode": {
68
- "type": "string",
69
- "validations": null,
70
- "description": "VAT code"
71
- },
72
- "year": {
73
- "type": "integer",
74
- "validations": "read-only",
75
- "description": "Id of the financial year."
76
- }
77
- }
@@ -1,189 +0,0 @@
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, 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, 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, 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.9 ]
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,64 +0,0 @@
1
- require 'spec_helper'
2
- require 'fortnox/api'
3
- require 'fortnox/api/types'
4
- require 'fortnox/api/repositories/order'
5
- require 'fortnox/api/models/order'
6
- require 'fortnox/api/types/order_row'
7
-
8
- # rubocop:disable RSpec/DescribeClass
9
- describe 'HouseWorkTypes', integration: true do
10
- include Helpers::Configuration
11
-
12
- before{ set_api_test_configuration }
13
-
14
- let(:repository){ Fortnox::API::Repository::Order.new }
15
- let(:valid_model) do
16
- Fortnox::API::Model::Order.new(customer_number: '1', order_rows: [order_row])
17
- end
18
- let(:order_row){ Fortnox::API::Types::OrderRow.new(ordered_quantity: 1,
19
- article_number: '0000',
20
- house_work_type: house_work_type)}
21
-
22
- shared_examples_for 'house work type' do |type, legacy: false|
23
- subject do
24
- -> do
25
- VCR.use_cassette( "orders/house_work_type_#{ type.downcase }" ) do
26
- repository.save(valid_model)
27
- end
28
- end
29
- end
30
-
31
- let(:error_message){ 'Skattereduktion för en av de valda husarbetestyperna har upphört.' }
32
- let(:house_work_type){ Fortnox::API::Types::HouseWorkTypes[type] }
33
-
34
- context "when creating an OrderRow with house_work_type set to #{ type }" do
35
- if legacy
36
- it 'raises an error' do
37
- is_expected.to raise_error(Fortnox::API::RemoteServerError, error_message)
38
- end
39
- else
40
- it{ is_expected.not_to raise_error }
41
- end
42
- end
43
- end
44
-
45
- it_behaves_like 'house work type', 'CONSTRUCTION'
46
- it_behaves_like 'house work type', 'ELECTRICITY'
47
- it_behaves_like 'house work type', 'GLASSMETALWORK'
48
- it_behaves_like 'house work type', 'GROUNDDRAINAGEWORK'
49
- it_behaves_like 'house work type', 'MASONRY'
50
- it_behaves_like 'house work type', 'PAINTINGWALLPAPERING'
51
- it_behaves_like 'house work type', 'HVAC'
52
- it_behaves_like 'house work type', 'CLEANING'
53
- it_behaves_like 'house work type', 'TEXTILECLOTHING'
54
- it_behaves_like 'house work type', 'CLEANING'
55
- it_behaves_like 'house work type', 'SNOWPLOWING'
56
- it_behaves_like 'house work type', 'GARDENING'
57
- it_behaves_like 'house work type', 'BABYSITTING'
58
- it_behaves_like 'house work type', 'OTHERCARE'
59
- it_behaves_like 'house work type', 'OTHERCOSTS'
60
-
61
- it_behaves_like 'house work type', 'COOKING', legacy: true
62
- it_behaves_like 'house work type', 'TUTORING', legacy: true
63
- end
64
- # rubocop:enable RSpec/DescribeClass