gobl 0.16.0 → 0.18.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (108) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +11 -7
  3. data/data/regimes/ca.json +77 -0
  4. data/data/regimes/co.json +2831 -2763
  5. data/data/regimes/de.json +173 -0
  6. data/data/regimes/es.json +1300 -1277
  7. data/data/regimes/fr.json +116 -10
  8. data/data/regimes/gb.json +62 -1
  9. data/data/regimes/it.json +1765 -1703
  10. data/data/regimes/mx.json +119 -10
  11. data/data/regimes/nl.json +62 -1
  12. data/data/regimes/pt.json +235 -187
  13. data/data/regimes/us.json +46 -2
  14. data/lib/generated/gobl/bill/charge.rb +1 -1
  15. data/lib/generated/gobl/bill/correction_options.rb +8 -8
  16. data/lib/generated/gobl/bill/delivery.rb +6 -1
  17. data/lib/generated/gobl/bill/discount.rb +1 -1
  18. data/lib/generated/gobl/bill/document_reference.rb +1 -1
  19. data/lib/generated/gobl/bill/invoice.rb +6 -1
  20. data/lib/generated/gobl/bill/line.rb +1 -1
  21. data/lib/generated/gobl/bill/line_charge.rb +1 -1
  22. data/lib/generated/gobl/bill/line_discount.rb +1 -1
  23. data/lib/generated/gobl/bill/ordering.rb +6 -1
  24. data/lib/generated/gobl/bill/outlay.rb +1 -1
  25. data/lib/generated/gobl/bill/payment.rb +1 -1
  26. data/lib/generated/gobl/bill/preceding.rb +9 -9
  27. data/lib/generated/gobl/bill/tax.rb +1 -1
  28. data/lib/generated/gobl/bill/totals.rb +6 -1
  29. data/lib/generated/gobl/cal/date.rb +1 -1
  30. data/lib/generated/gobl/cal/date_time.rb +18 -0
  31. data/lib/generated/gobl/cal/period.rb +1 -1
  32. data/lib/generated/gobl/cbc/code.rb +1 -1
  33. data/lib/generated/gobl/cbc/code_map.rb +1 -1
  34. data/lib/generated/gobl/cbc/key.rb +1 -1
  35. data/lib/generated/gobl/cbc/meta.rb +1 -1
  36. data/lib/generated/gobl/cbc/note.rb +1 -1
  37. data/lib/generated/gobl/currency/code.rb +1 -1
  38. data/lib/generated/gobl/currency/exchange_rate.rb +1 -1
  39. data/lib/generated/gobl/dsig/digest.rb +1 -1
  40. data/lib/generated/gobl/dsig/signature.rb +1 -1
  41. data/lib/generated/gobl/envelope.rb +5 -5
  42. data/lib/generated/gobl/head/header.rb +54 -0
  43. data/lib/generated/gobl/{cbc → head}/stamp.rb +3 -3
  44. data/lib/generated/gobl/i18n/string.rb +1 -1
  45. data/lib/generated/gobl/l10n/code.rb +1 -1
  46. data/lib/generated/gobl/l10n/country_code.rb +1 -1
  47. data/lib/generated/gobl/note/message.rb +1 -1
  48. data/lib/generated/gobl/org/address.rb +1 -1
  49. data/lib/generated/gobl/org/coordinates.rb +1 -1
  50. data/lib/generated/gobl/org/email.rb +1 -1
  51. data/lib/generated/gobl/org/identity.rb +6 -1
  52. data/lib/generated/gobl/org/image.rb +6 -1
  53. data/lib/generated/gobl/org/inbox.rb +1 -1
  54. data/lib/generated/gobl/org/item.rb +1 -1
  55. data/lib/generated/gobl/org/name.rb +1 -1
  56. data/lib/generated/gobl/org/party.rb +1 -1
  57. data/lib/generated/gobl/org/person.rb +1 -1
  58. data/lib/generated/gobl/org/registration.rb +1 -1
  59. data/lib/generated/gobl/org/telephone.rb +1 -1
  60. data/lib/generated/gobl/org/unit.rb +1 -1
  61. data/lib/generated/gobl/org/website.rb +1 -1
  62. data/lib/generated/gobl/pay/advance.rb +1 -1
  63. data/lib/generated/gobl/pay/card.rb +1 -1
  64. data/lib/generated/gobl/pay/credit_transfer.rb +1 -1
  65. data/lib/generated/gobl/pay/direct_debit.rb +1 -1
  66. data/lib/generated/gobl/pay/due_date.rb +1 -1
  67. data/lib/generated/gobl/pay/instructions.rb +1 -1
  68. data/lib/generated/gobl/pay/online.rb +1 -1
  69. data/lib/generated/gobl/pay/terms.rb +1 -1
  70. data/lib/generated/gobl/regimes/mx/food_vouchers.rb +41 -0
  71. data/lib/generated/gobl/regimes/mx/food_vouchers_employee.rb +42 -0
  72. data/lib/generated/gobl/regimes/mx/food_vouchers_line.rb +42 -0
  73. data/lib/generated/gobl/regimes/mx/fuel_account_balance.rb +41 -0
  74. data/lib/generated/gobl/regimes/mx/fuel_account_item.rb +42 -0
  75. data/lib/generated/gobl/regimes/mx/fuel_account_line.rb +73 -0
  76. data/lib/generated/gobl/regimes/mx/fuel_account_tax.rb +37 -0
  77. data/lib/generated/gobl/schema/object.rb +15 -0
  78. data/lib/generated/gobl/tax/category.rb +14 -1
  79. data/lib/generated/gobl/tax/category_total.rb +1 -1
  80. data/lib/generated/gobl/tax/code_definition.rb +1 -1
  81. data/lib/generated/gobl/tax/combo.rb +1 -1
  82. data/lib/generated/gobl/tax/correction_definition.rb +48 -0
  83. data/lib/generated/gobl/tax/identity.rb +1 -1
  84. data/lib/generated/gobl/tax/key_definition.rb +3 -2
  85. data/lib/generated/gobl/tax/rate.rb +1 -1
  86. data/lib/generated/gobl/tax/rate_total.rb +1 -1
  87. data/lib/generated/gobl/tax/rate_total_surcharge.rb +1 -1
  88. data/lib/generated/gobl/tax/rate_value.rb +1 -1
  89. data/lib/generated/gobl/tax/regime.rb +20 -10
  90. data/lib/generated/gobl/tax/scenario.rb +1 -1
  91. data/lib/generated/gobl/tax/scenario_set.rb +1 -1
  92. data/lib/generated/gobl/tax/set.rb +1 -1
  93. data/lib/generated/gobl/tax/source.rb +28 -0
  94. data/lib/generated/gobl/tax/total.rb +1 -1
  95. data/lib/generated/gobl/tax/zone.rb +1 -1
  96. data/lib/generated/gobl/uuid/uuid.rb +1 -1
  97. data/lib/gobl/extensions/envelope_helper.rb +1 -1
  98. data/lib/gobl/extensions/schema/object_helper.rb +49 -0
  99. data/lib/gobl/operations.rb +12 -12
  100. data/lib/gobl/struct.rb +1 -1
  101. data/lib/gobl/version.rb +1 -1
  102. data/lib/gobl.rb +2 -2
  103. metadata +19 -9
  104. data/lib/generated/gobl/cbc/code_set.rb +0 -15
  105. data/lib/generated/gobl/document.rb +0 -16
  106. data/lib/generated/gobl/header.rb +0 -52
  107. data/lib/generated/gobl/tax/preceding_definitions.rb +0 -37
  108. data/lib/gobl/extensions/document_helper.rb +0 -47
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 14bd34289a0ba3fff84bdefe4fd1fedb84fcf914f446c1c6f2911aa322909154
4
- data.tar.gz: fff37f189098fa49e3f01cb526cf1985321c068e99bd424fd1d21642daac299e
3
+ metadata.gz: 63b2dd9fcdb9215de25168e5aac158d06b54eaec29af7a347d72dc5709cc1f0f
4
+ data.tar.gz: 5c83ab6304a80028904d96a5152bd4a10e38fe84fccf2d8e058314df08d1a676
5
5
  SHA512:
6
- metadata.gz: c48f0af106b03682ccabd1191db9ee2c00205719c8dfa809e4fb1437c9bc3b8340ca76e0989ac4743b25e14479995feeb6cce6ac3394cbe147d8ef958a9a17ec
7
- data.tar.gz: 0a4a47d068d70aa46717be6a34a50f3a694a1bc2de618e46c6005be1059a9ab1a696e10116ce59bdd6335d097d418ad936b973bfcc7d4880c5d7691fbe1c56d7
6
+ metadata.gz: 5b32311778224d58772f77eea900e7b35984048832ca49bd33d59cc1128e27985d08304eaf655863a55d19854446a4abef306d96dc8d2359c76a778145b4ee71
7
+ data.tar.gz: ac1836afe39e78a07854767590cd08f0bbc720eeaa4d25f5ce7b582d5db0fe3b1ad263759be07485363e519034c8e51e2dfac07bcd930bfa681d1fe376c4e317
data/README.md CHANGED
@@ -81,12 +81,12 @@ GOBL is a JSON format. So, you'll probably need to read or produce valid GOBL JS
81
81
 
82
82
  ```ruby
83
83
  json = '{"$schema":"https://gobl.org/draft-0/note/message", "content":"Hello World!"}'
84
- document = GOBL::Document.from_json!(json) #=> #<GOBL::Document _value={"$schema"=>"https://gobl.org/draft-0/note/message", "content"=>"Hello World!"}>
84
+ document = GOBL::Schema::Object.from_json!(json) #=> #<GOBL::Schema::Object _value={"$schema"=>"https://gobl.org/draft-0/note/message", "content"=>"Hello World!"}>
85
85
  message = document.extract #=> #<GOBL::Note::Message title=nil content="Hello World!" meta=nil>
86
86
  message.content #=> "Hello World!"
87
87
  ```
88
88
 
89
- Note that, in the previous example, we parsed the JSON fragment as a document. A [document](https://docs.gobl.org/core/documents) is one of the fundamental entities of GOBL, and it represents a business document in an abstract way. To get the specific document type instantiated –a message, in the example above–, we needed to call the [`#extract`](https://rubydoc.info/github/invopop/gobl.ruby/GOBL%2FExtensions%2FDocumentHelper:extract) method of the document object.
89
+ Note that, in the previous example, we parsed the JSON fragment as a document. A [document](https://docs.gobl.org/core/documents) is one of the fundamental entities of GOBL, and it represents a business document in an abstract way. To get the specific document type instantiated –a message, in the example above–, we needed to call the [`#extract`](https://rubydoc.info/github/invopop/gobl.ruby/GOBL%2FExtensions%2FSchema%2FObjectHelper:extract) method of the document object.
90
90
 
91
91
  The previous instantiation method is useful if you don't know the document type in advance. If you do, you could also instantiate the object in this more direct way:
92
92
 
@@ -103,15 +103,15 @@ message = GOBL::Note::Message.new(content: 'Hello World!')
103
103
  message.to_json #=> "{\"content\":\"Hello World!\"}"
104
104
  ```
105
105
 
106
- Note that, in the previous example, the generated JSON doesn't include a `$schema` attribute. This is because the GOBL schema doesn't require that attribute in a standalone message structure. If you want to use that structure as a document, you will need a `$schema` to be present. You can get that from your Ruby code by simply [_embedding_](https://rubydoc.info/github/invopop/gobl.ruby/GOBL%2FExtensions%2FDocumentHelper%2FClassMethods:embed) the struct in a document:
106
+ Note that, in the previous example, the generated JSON doesn't include a `$schema` attribute. This is because the GOBL schema doesn't require that attribute in a standalone message structure. If you want to use that structure as a document, you will need a `$schema` to be present. You can get that from your Ruby code by simply [_embedding_](https://rubydoc.info/github/invopop/gobl.ruby/GOBL%2FExtensions%2FSchema%2FObjectHelper%2FClassMethods:embed) the struct in a document:
107
107
 
108
108
  ```ruby
109
109
  message = GOBL::Note::Message.new(content: 'Hello World!')
110
- document = GOBL::Document.embed(message)
110
+ document = GOBL::Schema::Object.embed(message)
111
111
  document.to_json #=> "{\"content\":\"Hello World!\",\"$schema\":\"https://gobl.org/draft-0/note/message\"}"
112
112
  ```
113
113
 
114
- _See also [`GOBL::Struct.from_json!`](https://rubydoc.info/github/invopop/gobl.ruby/GOBL%2FStruct%2Efrom_json!), [`GOBL::Struct#to_json`](https://rubydoc.info/github/invopop/gobl.ruby/GOBL%2FStruct:to_json), [`GOBL::Document#embed`](https://rubydoc.info/github/invopop/gobl.ruby/GOBL%2FExtensions%2FDocumentHelper%2FClassMethods:embed), [`GOBL::Document.extract`](https://rubydoc.info/github/invopop/gobl.ruby/GOBL%2FExtensions%2FDocumentHelper:extract)_
114
+ _See also [`GOBL::Struct.from_json!`](https://rubydoc.info/github/invopop/gobl.ruby/GOBL%2FStruct%2Efrom_json!), [`GOBL::Struct#to_json`](https://rubydoc.info/github/invopop/gobl.ruby/GOBL%2FStruct:to_json), [`GOBL::Schema::Object#embed`](https://rubydoc.info/github/invopop/gobl.ruby/GOBL%2FExtensions%2FSchema%2FObjectHelper%2FClassMethods:embed), [`GOBL::Schema::Object.extract`](https://rubydoc.info/github/invopop/gobl.ruby/GOBL%2FExtensions%2FSchema%2FObjectHelper:extract)_
115
115
 
116
116
  ### Handling value objects and enumerations
117
117
 
@@ -179,7 +179,7 @@ invoice = GOBL::Bill::Invoice.new(
179
179
  taxes: [ { cat: 'VAT', rate: :standard } ]
180
180
  }]
181
181
  )
182
- document = GOBL::Document.embed(invoice)
182
+ document = GOBL::Schema::Object.embed(invoice)
183
183
  calculated_document = GOBL.build(document)
184
184
  calculated_invoice = calculated_document.extract
185
185
  calculated_invoice.totals.total_with_tax #=> "2178.00"
@@ -213,13 +213,17 @@ You can avoid mage and the docker container if you prefer so. Take a look at the
213
213
 
214
214
  The command `mage setup` fetches and installs all the required dependencies to use the gem.
215
215
 
216
+ If you run into any problems with dependencies, don't forget this is a library, so the Gemfile.lock is not included. Delete any local versions you may already have and re-run.
217
+
216
218
  #### Code generation
217
219
 
218
220
  Ensure all the GOBL JSON Schema and Regime files are available by manually copying the [base GOBL project](https://github.com/invopop/gobl)'s `build/` path to the `data/` path in this repository. For example, assuming you have GOBL at `../gobl/`, you can run this:
219
221
 
220
222
  ```bash
221
223
  rm -rf ./data/*
222
- cp -r ../gobl/build/* ./data
224
+ cd ../gobl
225
+ find ./data -name '*.json' -type f | cpio -pdm ../gobl.ruby/
226
+ cd ../gobl.ruby
223
227
  ```
224
228
 
225
229
  Please note that `schemas` is _.gitignored_ as we only need it to generate the code. However, the previous command also copies `regimes` which content is used by the library and so, it is part of the git repo and the gem.
@@ -0,0 +1,77 @@
1
+ {
2
+ "$schema": "https://gobl.org/draft-0/tax/regime",
3
+ "name": {
4
+ "en": "Canada"
5
+ },
6
+ "time_zone": "America/Toronto",
7
+ "country": "CA",
8
+ "currency": "CAD",
9
+ "categories": [
10
+ {
11
+ "code": "GST",
12
+ "name": {
13
+ "en": "GST"
14
+ },
15
+ "title": {
16
+ "en": "General Sales Tax"
17
+ },
18
+ "rates": [
19
+ {
20
+ "key": "zero",
21
+ "name": {
22
+ "en": "Zero Rate"
23
+ },
24
+ "desc": {
25
+ "en": "Some supplies are zero-rated under the GST, mainly: basic groceries, agricultural products, farm livestock, most fishery products such, prescription drugs and drug-dispensing services, certain medical devices, feminine hygiene products, exports, many transportation services where the origin or destination is outside Canada"
26
+ },
27
+ "values": [
28
+ {
29
+ "percent": "0.0%"
30
+ }
31
+ ]
32
+ },
33
+ {
34
+ "key": "standard",
35
+ "name": {
36
+ "en": "Standard rate"
37
+ },
38
+ "desc": {
39
+ "en": "For the majority of sales of goods and services: it applies to all products or services for which no other rate is expressly provided."
40
+ },
41
+ "values": [
42
+ {
43
+ "since": "2022-01-01",
44
+ "percent": "5%"
45
+ }
46
+ ]
47
+ }
48
+ ],
49
+ "sources": [
50
+ {
51
+ "title": {
52
+ "en": "GST/HST provincial rates table"
53
+ },
54
+ "url": "https://www.canada.ca/en/revenue-agency/services/tax/businesses/topics/gst-hst-businesses/charge-collect-which-rate/calculator.html"
55
+ }
56
+ ]
57
+ },
58
+ {
59
+ "code": "HST",
60
+ "name": {
61
+ "en": "HST"
62
+ },
63
+ "title": {
64
+ "en": "Harmonized Sales Tax"
65
+ }
66
+ },
67
+ {
68
+ "code": "PST",
69
+ "name": {
70
+ "en": "PST"
71
+ },
72
+ "title": {
73
+ "en": "Provincial Sales Tax"
74
+ }
75
+ }
76
+ ]
77
+ }