gobl 0.24.1 → 0.24.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. checksums.yaml +4 -4
  2. data/data/addons/br-nfe-v4.json +481 -0
  3. data/data/addons/br-nfse-v1.json +235 -0
  4. data/data/addons/co-dian-v2.json +311 -0
  5. data/data/addons/de-xrechnung-v3.json +16 -0
  6. data/data/addons/de-zugferd-v2.json +16 -0
  7. data/data/addons/es-facturae-v3.json +359 -0
  8. data/data/addons/es-tbai-v1.json +225 -0
  9. data/data/addons/es-verifactu-v1.json +609 -0
  10. data/data/addons/eu-en16931-v2017.json +92 -0
  11. data/data/addons/fr-choruspro-v1.json +260 -0
  12. data/data/addons/fr-facturx-v1.json +16 -0
  13. data/data/addons/gr-mydata-v1.json +1495 -0
  14. data/data/addons/it-sdi-v1.json +1570 -0
  15. data/data/addons/it-ticket-v1.json +144 -0
  16. data/data/addons/mx-cfdi-v4.json +908 -0
  17. data/data/addons/pl-favat-v2.json +235 -0
  18. data/data/addons/pt-saft-v1.json +950 -0
  19. data/data/catalogues/cef.json +374 -0
  20. data/data/catalogues/iso.json +19 -0
  21. data/data/catalogues/untdid.json +10669 -0
  22. data/data/currency/iso.json +2378 -0
  23. data/data/currency/non-iso.json +128 -0
  24. data/data/schemas/bill/charge.json +125 -0
  25. data/data/schemas/bill/correction-options.json +54 -0
  26. data/data/schemas/bill/delivery-details.json +41 -0
  27. data/data/schemas/bill/delivery.json +412 -0
  28. data/data/schemas/bill/discount.json +137 -0
  29. data/data/schemas/bill/invoice.json +423 -0
  30. data/data/schemas/bill/line.json +433 -0
  31. data/data/schemas/bill/order.json +401 -0
  32. data/data/schemas/bill/ordering.json +107 -0
  33. data/data/schemas/bill/payment-details.json +36 -0
  34. data/data/schemas/bill/payment.json +424 -0
  35. data/data/schemas/bill/tax.json +45 -0
  36. data/data/schemas/bill/totals.json +84 -0
  37. data/data/schemas/cal/date-time.json +13 -0
  38. data/data/schemas/cal/date.json +13 -0
  39. data/data/schemas/cal/period.json +32 -0
  40. data/data/schemas/cal/time.json +13 -0
  41. data/data/schemas/cbc/code-map.json +16 -0
  42. data/data/schemas/cbc/code.json +15 -0
  43. data/data/schemas/cbc/definition.json +67 -0
  44. data/data/schemas/cbc/key.json +15 -0
  45. data/data/schemas/cbc/meta.json +16 -0
  46. data/data/schemas/cbc/source.json +37 -0
  47. data/data/schemas/currency/amount.json +32 -0
  48. data/data/schemas/currency/code.json +734 -0
  49. data/data/schemas/currency/exchange-rate.json +43 -0
  50. data/data/schemas/dsig/digest.json +27 -0
  51. data/data/schemas/dsig/signature.json +12 -0
  52. data/data/schemas/envelope.json +41 -0
  53. data/data/schemas/head/header.json +62 -0
  54. data/data/schemas/head/link.json +42 -0
  55. data/data/schemas/head/stamp.json +27 -0
  56. data/data/schemas/i18n/string.json +18 -0
  57. data/data/schemas/l10n/code.json +13 -0
  58. data/data/schemas/l10n/iso-country-code.json +1010 -0
  59. data/data/schemas/l10n/tax-country-code.json +1022 -0
  60. data/data/schemas/note/message.json +43 -0
  61. data/data/schemas/num/amount.json +13 -0
  62. data/data/schemas/num/percentage.json +13 -0
  63. data/data/schemas/org/address.json +105 -0
  64. data/data/schemas/org/attachment.json +58 -0
  65. data/data/schemas/org/coordinates.json +33 -0
  66. data/data/schemas/org/document-ref.json +117 -0
  67. data/data/schemas/org/email.json +37 -0
  68. data/data/schemas/org/identity.json +57 -0
  69. data/data/schemas/org/image.json +70 -0
  70. data/data/schemas/org/inbox.json +49 -0
  71. data/data/schemas/org/item.json +96 -0
  72. data/data/schemas/org/name.json +59 -0
  73. data/data/schemas/org/note.json +184 -0
  74. data/data/schemas/org/party.json +129 -0
  75. data/data/schemas/org/person.json +90 -0
  76. data/data/schemas/org/registration.json +66 -0
  77. data/data/schemas/org/telephone.json +32 -0
  78. data/data/schemas/org/unit.json +350 -0
  79. data/data/schemas/org/website.json +38 -0
  80. data/data/schemas/pay/advance.json +211 -0
  81. data/data/schemas/pay/instructions.json +245 -0
  82. data/data/schemas/pay/terms.json +128 -0
  83. data/data/schemas/regimes/mx/food-vouchers.json +111 -0
  84. data/data/schemas/regimes/mx/fuel-account-balance.json +179 -0
  85. data/data/schemas/schema/object.json +12 -0
  86. data/data/schemas/tax/addon-def.json +288 -0
  87. data/data/schemas/tax/catalogue-def.json +37 -0
  88. data/data/schemas/tax/extensions.json +16 -0
  89. data/data/schemas/tax/identity.json +45 -0
  90. data/data/schemas/tax/regime-def.json +513 -0
  91. data/data/schemas/tax/set.json +139 -0
  92. data/data/schemas/tax/total.json +135 -0
  93. data/lib/gobl/extensions/tax/addon_helper.rb +37 -0
  94. data/lib/gobl/version.rb +1 -1
  95. data/lib/gobl.rb +1 -0
  96. metadata +93 -1
@@ -0,0 +1,135 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://gobl.org/draft-0/tax/total",
4
+ "$ref": "#/$defs/Total",
5
+ "$defs": {
6
+ "CategoryTotal": {
7
+ "properties": {
8
+ "code": {
9
+ "$ref": "https://gobl.org/draft-0/cbc/code",
10
+ "title": "Code"
11
+ },
12
+ "retained": {
13
+ "type": "boolean",
14
+ "title": "Retained"
15
+ },
16
+ "informative": {
17
+ "type": "boolean",
18
+ "title": "Informative"
19
+ },
20
+ "rates": {
21
+ "items": {
22
+ "$ref": "#/$defs/RateTotal"
23
+ },
24
+ "type": "array",
25
+ "title": "Rates"
26
+ },
27
+ "amount": {
28
+ "$ref": "https://gobl.org/draft-0/num/amount",
29
+ "title": "Amount"
30
+ },
31
+ "surcharge": {
32
+ "$ref": "https://gobl.org/draft-0/num/amount",
33
+ "title": "Surcharge"
34
+ }
35
+ },
36
+ "type": "object",
37
+ "required": [
38
+ "code",
39
+ "rates",
40
+ "amount"
41
+ ],
42
+ "description": "CategoryTotal groups together all rates inside a given category."
43
+ },
44
+ "RateTotal": {
45
+ "properties": {
46
+ "country": {
47
+ "$ref": "https://gobl.org/draft-0/l10n/tax-country-code",
48
+ "title": "Country",
49
+ "description": "Country code override when issuing with taxes applied from different countries,\nit'd be very strange to mix rates from different countries, but in theory\nthis would be possible."
50
+ },
51
+ "key": {
52
+ "$ref": "https://gobl.org/draft-0/cbc/key",
53
+ "title": "Key",
54
+ "description": "Tax key if supported by the category."
55
+ },
56
+ "ext": {
57
+ "$ref": "https://gobl.org/draft-0/tax/extensions",
58
+ "title": "Extensions",
59
+ "description": "If the rate is defined with extensions, they'll be used to group by also."
60
+ },
61
+ "base": {
62
+ "$ref": "https://gobl.org/draft-0/num/amount",
63
+ "title": "Base",
64
+ "description": "Base amount that the percentage is applied to."
65
+ },
66
+ "percent": {
67
+ "$ref": "https://gobl.org/draft-0/num/percentage",
68
+ "title": "Percent",
69
+ "description": "Percentage of the rate. Will be nil when taxes are **exempt**."
70
+ },
71
+ "surcharge": {
72
+ "$ref": "#/$defs/RateTotalSurcharge",
73
+ "title": "Surcharge",
74
+ "description": "Surcharge applied to the rate."
75
+ },
76
+ "amount": {
77
+ "$ref": "https://gobl.org/draft-0/num/amount",
78
+ "title": "Amount",
79
+ "description": "Total amount of rate, excluding surcharges"
80
+ }
81
+ },
82
+ "type": "object",
83
+ "required": [
84
+ "base",
85
+ "amount"
86
+ ],
87
+ "description": "RateTotal contains a sum of all the tax rates in the document with a matching category and rate."
88
+ },
89
+ "RateTotalSurcharge": {
90
+ "properties": {
91
+ "percent": {
92
+ "$ref": "https://gobl.org/draft-0/num/percentage",
93
+ "title": "Percent"
94
+ },
95
+ "amount": {
96
+ "$ref": "https://gobl.org/draft-0/num/amount",
97
+ "title": "Amount"
98
+ }
99
+ },
100
+ "type": "object",
101
+ "required": [
102
+ "percent",
103
+ "amount"
104
+ ],
105
+ "description": "RateTotalSurcharge reflects the sum surcharges inside the rate."
106
+ },
107
+ "Total": {
108
+ "properties": {
109
+ "categories": {
110
+ "items": {
111
+ "$ref": "#/$defs/CategoryTotal"
112
+ },
113
+ "type": "array",
114
+ "title": "Categories",
115
+ "description": "Grouping of all the taxes by their category"
116
+ },
117
+ "sum": {
118
+ "$ref": "https://gobl.org/draft-0/num/amount",
119
+ "title": "Sum",
120
+ "description": "Total value of all non-retained or indirect taxes."
121
+ },
122
+ "retained": {
123
+ "$ref": "https://gobl.org/draft-0/num/amount",
124
+ "title": "Retained",
125
+ "description": "Sum of retained or withheld tax amounts"
126
+ }
127
+ },
128
+ "type": "object",
129
+ "required": [
130
+ "sum"
131
+ ],
132
+ "description": "Total contains a set of Category Totals which in turn contain all the accumulated taxes contained in the document."
133
+ }
134
+ }
135
+ }
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module GOBL
4
+ module Extensions
5
+ module Tax
6
+ # Additional methods for the generated {GOBL::Tax::Regime} class
7
+ module AddonHelper
8
+ module ClassMethods
9
+ # Loads a {GOBL::Tax::Regime} object identified by the given code with all its data
10
+ #
11
+ # @param code [String] the code of the regime to load
12
+ #
13
+ # @return [Regime] the requested regime
14
+ def fetch(code)
15
+ addons[code] ||= load_addon(code)
16
+ end
17
+
18
+ protected
19
+
20
+ # map of regime ID to regime instance
21
+ def addons
22
+ @addons ||= {}
23
+ end
24
+
25
+ def load_addon(code)
26
+ path = File.join("#{__dir__}/../../../../data/addons", "#{code.to_s.downcase}.json")
27
+ msg = "addon definition for #{code} does not exist at #{path}"
28
+ raise StandardError, msg unless File.exist?(path)
29
+
30
+ data = File.read(path)
31
+ from_json!(data)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
data/lib/gobl/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GOBL
4
- VERSION = '0.24.1'
4
+ VERSION = '0.24.3'
5
5
  end
data/lib/gobl.rb CHANGED
@@ -51,4 +51,5 @@ GOBL::Schema::Object.include GOBL::Extensions::Schema::ObjectHelper
51
51
  GOBL::Schema::Object.extend GOBL::Extensions::Schema::ObjectHelper::ClassMethods
52
52
  GOBL::Envelope.include GOBL::Extensions::EnvelopeHelper
53
53
  GOBL::Tax::RegimeDef.extend GOBL::Extensions::Tax::RegimeHelper::ClassMethods
54
+ GOBL::Tax::AddonDef.extend GOBL::Extensions::Tax::AddonHelper::ClassMethods
54
55
  GOBL::Bill::Invoice.include GOBL::Extensions::Bill::InvoiceHelper
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gobl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.24.1
4
+ version: 0.24.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luismi Cavalle
@@ -62,6 +62,28 @@ extensions: []
62
62
  extra_rdoc_files: []
63
63
  files:
64
64
  - README.md
65
+ - data/addons/br-nfe-v4.json
66
+ - data/addons/br-nfse-v1.json
67
+ - data/addons/co-dian-v2.json
68
+ - data/addons/de-xrechnung-v3.json
69
+ - data/addons/de-zugferd-v2.json
70
+ - data/addons/es-facturae-v3.json
71
+ - data/addons/es-tbai-v1.json
72
+ - data/addons/es-verifactu-v1.json
73
+ - data/addons/eu-en16931-v2017.json
74
+ - data/addons/fr-choruspro-v1.json
75
+ - data/addons/fr-facturx-v1.json
76
+ - data/addons/gr-mydata-v1.json
77
+ - data/addons/it-sdi-v1.json
78
+ - data/addons/it-ticket-v1.json
79
+ - data/addons/mx-cfdi-v4.json
80
+ - data/addons/pl-favat-v2.json
81
+ - data/addons/pt-saft-v1.json
82
+ - data/catalogues/cef.json
83
+ - data/catalogues/iso.json
84
+ - data/catalogues/untdid.json
85
+ - data/currency/iso.json
86
+ - data/currency/non-iso.json
65
87
  - data/regimes/ae.json
66
88
  - data/regimes/at.json
67
89
  - data/regimes/be.json
@@ -85,6 +107,75 @@ files:
85
107
  - data/regimes/se.json
86
108
  - data/regimes/sg.json
87
109
  - data/regimes/us.json
110
+ - data/schemas/bill/charge.json
111
+ - data/schemas/bill/correction-options.json
112
+ - data/schemas/bill/delivery-details.json
113
+ - data/schemas/bill/delivery.json
114
+ - data/schemas/bill/discount.json
115
+ - data/schemas/bill/invoice.json
116
+ - data/schemas/bill/line.json
117
+ - data/schemas/bill/order.json
118
+ - data/schemas/bill/ordering.json
119
+ - data/schemas/bill/payment-details.json
120
+ - data/schemas/bill/payment.json
121
+ - data/schemas/bill/tax.json
122
+ - data/schemas/bill/totals.json
123
+ - data/schemas/cal/date-time.json
124
+ - data/schemas/cal/date.json
125
+ - data/schemas/cal/period.json
126
+ - data/schemas/cal/time.json
127
+ - data/schemas/cbc/code-map.json
128
+ - data/schemas/cbc/code.json
129
+ - data/schemas/cbc/definition.json
130
+ - data/schemas/cbc/key.json
131
+ - data/schemas/cbc/meta.json
132
+ - data/schemas/cbc/source.json
133
+ - data/schemas/currency/amount.json
134
+ - data/schemas/currency/code.json
135
+ - data/schemas/currency/exchange-rate.json
136
+ - data/schemas/dsig/digest.json
137
+ - data/schemas/dsig/signature.json
138
+ - data/schemas/envelope.json
139
+ - data/schemas/head/header.json
140
+ - data/schemas/head/link.json
141
+ - data/schemas/head/stamp.json
142
+ - data/schemas/i18n/string.json
143
+ - data/schemas/l10n/code.json
144
+ - data/schemas/l10n/iso-country-code.json
145
+ - data/schemas/l10n/tax-country-code.json
146
+ - data/schemas/note/message.json
147
+ - data/schemas/num/amount.json
148
+ - data/schemas/num/percentage.json
149
+ - data/schemas/org/address.json
150
+ - data/schemas/org/attachment.json
151
+ - data/schemas/org/coordinates.json
152
+ - data/schemas/org/document-ref.json
153
+ - data/schemas/org/email.json
154
+ - data/schemas/org/identity.json
155
+ - data/schemas/org/image.json
156
+ - data/schemas/org/inbox.json
157
+ - data/schemas/org/item.json
158
+ - data/schemas/org/name.json
159
+ - data/schemas/org/note.json
160
+ - data/schemas/org/party.json
161
+ - data/schemas/org/person.json
162
+ - data/schemas/org/registration.json
163
+ - data/schemas/org/telephone.json
164
+ - data/schemas/org/unit.json
165
+ - data/schemas/org/website.json
166
+ - data/schemas/pay/advance.json
167
+ - data/schemas/pay/instructions.json
168
+ - data/schemas/pay/terms.json
169
+ - data/schemas/regimes/mx/food-vouchers.json
170
+ - data/schemas/regimes/mx/fuel-account-balance.json
171
+ - data/schemas/schema/object.json
172
+ - data/schemas/tax/addon-def.json
173
+ - data/schemas/tax/catalogue-def.json
174
+ - data/schemas/tax/extensions.json
175
+ - data/schemas/tax/identity.json
176
+ - data/schemas/tax/regime-def.json
177
+ - data/schemas/tax/set.json
178
+ - data/schemas/tax/total.json
88
179
  - lib/generated/gobl/bill/charge.rb
89
180
  - lib/generated/gobl/bill/correction_options.rb
90
181
  - lib/generated/gobl/bill/delivery.rb
@@ -188,6 +279,7 @@ files:
188
279
  - lib/gobl/extensions/envelope_helper.rb
189
280
  - lib/gobl/extensions/i18n/value_keys_helper.rb
190
281
  - lib/gobl/extensions/schema/object_helper.rb
282
+ - lib/gobl/extensions/tax/addon_helper.rb
191
283
  - lib/gobl/extensions/tax/regime_helper.rb
192
284
  - lib/gobl/id.rb
193
285
  - lib/gobl/map.rb