finvoice3 1.0

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 (114) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +0 -0
  3. data/README.md +46 -0
  4. data/Rakefile +8 -0
  5. data/lib/finvoice3/any_party_communication_details.rb +19 -0
  6. data/lib/finvoice3/any_party_details/any_party_communication_details.rb +19 -0
  7. data/lib/finvoice3/any_party_details/any_party_postal_address_details.rb +34 -0
  8. data/lib/finvoice3/any_party_details.rb +46 -0
  9. data/lib/finvoice3/attachment_message_details/attachment_message_identifier.rb +5 -0
  10. data/lib/finvoice3/attachment_message_details.rb +14 -0
  11. data/lib/finvoice3/buyer_communication_details.rb +19 -0
  12. data/lib/finvoice3/buyer_party_details/buyer_postal_address_details.rb +32 -0
  13. data/lib/finvoice3/buyer_party_details.rb +46 -0
  14. data/lib/finvoice3/country_code.rb +7 -0
  15. data/lib/finvoice3/delivery_communication_details.rb +19 -0
  16. data/lib/finvoice3/delivery_details/delivery_period_details.rb +19 -0
  17. data/lib/finvoice3/delivery_details/destination_name.rb +13 -0
  18. data/lib/finvoice3/delivery_details/package_details.rb +31 -0
  19. data/lib/finvoice3/delivery_details/shipment_party_details/shipment_postal_address_details.rb +34 -0
  20. data/lib/finvoice3/delivery_details/shipment_party_details.rb +34 -0
  21. data/lib/finvoice3/delivery_details.rb +112 -0
  22. data/lib/finvoice3/delivery_party_details/delivery_postal_address_details.rb +34 -0
  23. data/lib/finvoice3/delivery_party_details.rb +31 -0
  24. data/lib/finvoice3/direct_debit_info.rb +22 -0
  25. data/lib/finvoice3/electronic_addr_id.rb +14 -0
  26. data/lib/finvoice3/epi_account_id.rb +13 -0
  27. data/lib/finvoice3/epi_details/epi_identification_details/epi_reference.rb +7 -0
  28. data/lib/finvoice3/epi_details/epi_identification_details.rb +28 -0
  29. data/lib/finvoice3/epi_details/epi_party_details/epi_beneficiary_party_details.rb +22 -0
  30. data/lib/finvoice3/epi_details/epi_party_details/epi_bfi_party_details/epi_bfi_identifier.rb +14 -0
  31. data/lib/finvoice3/epi_details/epi_party_details/epi_bfi_party_details.rb +19 -0
  32. data/lib/finvoice3/epi_details/epi_party_details.rb +19 -0
  33. data/lib/finvoice3/epi_details/epi_payment_instruction_details/epi_amount.rb +7 -0
  34. data/lib/finvoice3/epi_details/epi_payment_instruction_details/epi_charge.rb +14 -0
  35. data/lib/finvoice3/epi_details/epi_payment_instruction_details/epi_remittance_info_identifier.rb +14 -0
  36. data/lib/finvoice3/epi_details/epi_payment_instruction_details.rb +40 -0
  37. data/lib/finvoice3/epi_details.rb +22 -0
  38. data/lib/finvoice3/factoring_agreement_details/factoring_party_postal_address_details.rb +34 -0
  39. data/lib/finvoice3/factoring_agreement_details.rb +37 -0
  40. data/lib/finvoice3/finvoice.rb +187 -0
  41. data/lib/finvoice3/invoice.rb +33 -0
  42. data/lib/finvoice3/invoice_details/definition_details/definition_header_text.rb +14 -0
  43. data/lib/finvoice3/invoice_details/definition_details.rb +19 -0
  44. data/lib/finvoice3/invoice_details/discount_details.rb +34 -0
  45. data/lib/finvoice3/invoice_details/invoice_charge_details.rb +32 -0
  46. data/lib/finvoice3/invoice_details/invoice_classification.rb +19 -0
  47. data/lib/finvoice3/invoice_details/invoice_type_code_fi.rb +13 -0
  48. data/lib/finvoice3/invoice_details/origin_code.rb +4 -0
  49. data/lib/finvoice3/invoice_details/payment_terms_details/cash_discount_vat_details.rb +19 -0
  50. data/lib/finvoice3/invoice_details/payment_terms_details/header_value.rb +16 -0
  51. data/lib/finvoice3/invoice_details/payment_terms_details/payment_over_due_fine_details.rb +22 -0
  52. data/lib/finvoice3/invoice_details/payment_terms_details.rb +46 -0
  53. data/lib/finvoice3/invoice_details/vat_point.rb +19 -0
  54. data/lib/finvoice3/invoice_details/vat_specification_details.rb +31 -0
  55. data/lib/finvoice3/invoice_details.rb +211 -0
  56. data/lib/finvoice3/invoice_recipient_communication_details.rb +19 -0
  57. data/lib/finvoice3/invoice_recipient_party_details/invoice_recipient_postal_address_details.rb +34 -0
  58. data/lib/finvoice3/invoice_recipient_party_details.rb +31 -0
  59. data/lib/finvoice3/invoice_row/article_group_identifier.rb +13 -0
  60. data/lib/finvoice3/invoice_row/customs_info.rb +28 -0
  61. data/lib/finvoice3/invoice_row/ean_code.rb +9 -0
  62. data/lib/finvoice3/invoice_row/row_any_party_details/row_any_party_postal_address_details.rb +34 -0
  63. data/lib/finvoice3/invoice_row/row_any_party_details.rb +40 -0
  64. data/lib/finvoice3/invoice_row/row_charge_details.rb +28 -0
  65. data/lib/finvoice3/invoice_row/row_definition_details/row_definition_header_text.rb +9 -0
  66. data/lib/finvoice3/invoice_row/row_definition_details.rb +14 -0
  67. data/lib/finvoice3/invoice_row/row_delivery_details/row_package_details.rb +34 -0
  68. data/lib/finvoice3/invoice_row/row_delivery_details.rb +97 -0
  69. data/lib/finvoice3/invoice_row/row_over_due_payment_details.rb +73 -0
  70. data/lib/finvoice3/invoice_row/row_progressive_discount_details.rb +28 -0
  71. data/lib/finvoice3/invoice_row/sub_invoice_row/sub_row_any_party_details/sub_row_any_party_postal_address_details.rb +34 -0
  72. data/lib/finvoice3/invoice_row/sub_invoice_row/sub_row_any_party_details.rb +40 -0
  73. data/lib/finvoice3/invoice_row/sub_invoice_row/sub_row_definition_details/sub_row_definition_header_text.rb +9 -0
  74. data/lib/finvoice3/invoice_row/sub_invoice_row/sub_row_definition_details.rb +19 -0
  75. data/lib/finvoice3/invoice_row/sub_invoice_row/sub_row_delivery_details/sub_row_package_details.rb +34 -0
  76. data/lib/finvoice3/invoice_row/sub_invoice_row/sub_row_delivery_details.rb +73 -0
  77. data/lib/finvoice3/invoice_row/sub_invoice_row/sub_row_over_due_payment_details.rb +73 -0
  78. data/lib/finvoice3/invoice_row/sub_invoice_row/sub_row_progressive_discount_details.rb +28 -0
  79. data/lib/finvoice3/invoice_row/sub_invoice_row.rb +250 -0
  80. data/lib/finvoice3/invoice_row/transaction_details.rb +22 -0
  81. data/lib/finvoice3/invoice_row.rb +255 -0
  82. data/lib/finvoice3/invoice_sender_party_details.rb +25 -0
  83. data/lib/finvoice3/invoiced_object_id.rb +13 -0
  84. data/lib/finvoice3/message_transmission_details/message_details.rb +29 -0
  85. data/lib/finvoice3/message_transmission_details/message_receiver_details.rb +19 -0
  86. data/lib/finvoice3/message_transmission_details/message_sender_details.rb +19 -0
  87. data/lib/finvoice3/message_transmission_details.rb +22 -0
  88. data/lib/finvoice3/original_invoice_reference.rb +19 -0
  89. data/lib/finvoice3/partial_payment_details.rb +43 -0
  90. data/lib/finvoice3/party_identifier.rb +17 -0
  91. data/lib/finvoice3/party_legal_reg_id.rb +13 -0
  92. data/lib/finvoice3/payment_card_info.rb +19 -0
  93. data/lib/finvoice3/payment_status_details/payment_status_code.rb +5 -0
  94. data/lib/finvoice3/payment_status_details.rb +19 -0
  95. data/lib/finvoice3/seller_communication_details.rb +19 -0
  96. data/lib/finvoice3/seller_information_details/invoice_recipient_details.rb +19 -0
  97. data/lib/finvoice3/seller_information_details/seller_account_details/seller_account_id.rb +15 -0
  98. data/lib/finvoice3/seller_information_details/seller_account_details/seller_bic.rb +14 -0
  99. data/lib/finvoice3/seller_information_details/seller_account_details.rb +22 -0
  100. data/lib/finvoice3/seller_information_details/seller_official_postal_address_details.rb +31 -0
  101. data/lib/finvoice3/seller_information_details.rb +61 -0
  102. data/lib/finvoice3/seller_party_details/seller_postal_address_details.rb +32 -0
  103. data/lib/finvoice3/seller_party_details.rb +46 -0
  104. data/lib/finvoice3/soap_envelope.rb +82 -0
  105. data/lib/finvoice3/specification_details/external_specification_details.rb +5 -0
  106. data/lib/finvoice3/specification_details.rb +19 -0
  107. data/lib/finvoice3/tag/complex.rb +22 -0
  108. data/lib/finvoice3/tag/simple.rb +13 -0
  109. data/lib/finvoice3/tag.rb +27 -0
  110. data/lib/finvoice3/templates/fi_b2b.rb +232 -0
  111. data/lib/finvoice3/vat_category_code.rb +4 -0
  112. data/lib/finvoice3/version.rb +5 -0
  113. data/lib/finvoice3.rb +135 -0
  114. metadata +225 -0
@@ -0,0 +1,232 @@
1
+ module Finvoice3
2
+ module Templates
3
+ class FiB2b
4
+ attr_reader :invoice
5
+
6
+ ACCOUNT_ID_SCHEME = "IBAN"
7
+ BIC_SCHEME = "BIC"
8
+ CHARGE_OPTION = "SLEV"
9
+ COUNTRY_CODE = "FI"
10
+ COUNTRY_NAME = "Suomi"
11
+ CURRENCY = "EUR"
12
+ DATE_FORMAT = "CCYYMMDD"
13
+ FIN_TAX_ID_PREFIX = "0037"
14
+ INVOICE_TYPE_FI = "INV01"
15
+ INVOICE_TYPE_TEXT = "Invoice"
16
+ INVOICE_TYPE_UN = "380"
17
+ ORIGIN_CODE = "Original"
18
+ OVERDUE_FINE_PERCENT = "8,5"
19
+ OVERDUE_FINE_TEXT = "Viivästyskorko"
20
+ PAYMENT_TERMS_DAYS = 14
21
+ PAYMENT_TERMS_TEXT = "#{PAYMENT_TERMS_DAYS} päivää netto"
22
+ QUANTITY_UNIT_FI = "kpl"
23
+ QUANTITY_UNIT_UN = "C62"
24
+ REMITTANCE_IDENTIFICATION_SCHEME = "ISO"
25
+ SEPA_CODE = "58"
26
+ SPECIFICATION_IDENTIFIER = "EN16931"
27
+ VAT_CODE = "S"
28
+ VAT_PERCENT = 25.5
29
+
30
+ INTERMEDIATORS = {
31
+ maventa: "MAVENTA",
32
+ apix: "003723327487",
33
+ basware: "BAWCFI22",
34
+ op: "OKOYFIHH",
35
+ opus_capita: "E204503",
36
+ open_text: "003708599126",
37
+ cgi: "003703575029",
38
+ pagero: "PAGERO",
39
+ nordea: "NDEAFIHH",
40
+ danske: "DABAFIHH",
41
+ handelsbanken: "HANDFIHH",
42
+ netbox: "003726044706",
43
+ oma_sp: "ITELFIHH",
44
+ pop: "POPFFI22",
45
+ ropo: "003714377140",
46
+ postnord: "003701150617",
47
+ telia: "003703575029",
48
+ aktia: "HELSFIHH",
49
+ spankki: "SBANFIHH",
50
+ tietoevry: "003701011385",
51
+ aland_post: "003722207029",
52
+ posti: "FI28768767",
53
+ sp: "ITELFIHH",
54
+ inexchange: "INEXCHANGE",
55
+ kofax: "EXPSYS"
56
+ }
57
+
58
+ def initialize(
59
+ seller_name:,
60
+ seller_y:,
61
+ seller_street_name:,
62
+ seller_town_name:,
63
+ seller_post_code:,
64
+ seller_intermediator:,
65
+ seller_iban:,
66
+ seller_bic:,
67
+ buyer_name:,
68
+ buyer_y:,
69
+ buyer_street_name:,
70
+ buyer_town_name:,
71
+ buyer_post_code:,
72
+ buyer_intermediator:,
73
+ invoice_number:,
74
+ remittance_id:
75
+ )
76
+ @invoice = Finvoice3::Invoice.new
77
+ @finvoice = @invoice.finvoice
78
+
79
+ @seller_name = seller_name
80
+ @seller_y = seller_y
81
+ @seller_street_name = seller_street_name
82
+ @seller_town_name = seller_town_name
83
+ @seller_post_code = seller_post_code
84
+ @seller_intermediator = seller_intermediator.is_a?(Symbol) ? INTERMEDIATORS[seller_intermediator] : seller_intermediator.to_s
85
+ @seller_iban = seller_iban
86
+ @seller_bic = seller_bic
87
+ @from_identifier = "#{FIN_TAX_ID_PREFIX}#{seller_y.tr("-", "")}"
88
+ @seller_tax_code = "#{COUNTRY_CODE}#{seller_y.tr("-", "")}"
89
+
90
+ @buyer_name = buyer_name
91
+ @buyer_y = buyer_y
92
+ @buyer_street_name = buyer_street_name
93
+ @buyer_town_name = buyer_town_name
94
+ @buyer_post_code = buyer_post_code
95
+ @buyer_intermediator = buyer_intermediator.is_a?(Symbol) ? INTERMEDIATORS[buyer_intermediator] : buyer_intermediator.to_s
96
+ @to_identifier = "#{FIN_TAX_ID_PREFIX}#{buyer_y.tr("-", "")}"
97
+ @buyer_tax_code = "#{COUNTRY_CODE}#{buyer_y.tr("-", "")}"
98
+
99
+ @invoice_number = invoice_number
100
+ @remittance_id = remittance_id
101
+
102
+ @timestamp = Time.now
103
+ @due_date = @timestamp.to_date + PAYMENT_TERMS_DAYS
104
+
105
+ @total_excluding_vat = 0
106
+ @total_vat = 0
107
+
108
+ build
109
+ end
110
+
111
+ def add_row(id: nil, name: nil, quantity: 1, unit_price: 0)
112
+ position = @finvoice.invoice_rows.size
113
+ invoice_row = Finvoice3::InvoiceRow.new
114
+ total_amount = quantity * unit_price
115
+ vat_amount = total_amount * VAT_PERCENT / 100.0
116
+
117
+ @total_excluding_vat += total_amount
118
+ @total_vat += vat_amount
119
+
120
+ invoice_row.article_identifier.value = id
121
+ invoice_row.article_name.value = name
122
+ invoice_row.delivered_quantity.set_attribute("QuantityUnitCode", QUANTITY_UNIT_FI)
123
+ invoice_row.delivered_quantity.set_attribute("QuantityUnitCodeUN", QUANTITY_UNIT_UN)
124
+ invoice_row.delivered_quantity.value = quantity.to_s
125
+ invoice_row.invoiced_quantity.set_attribute("QuantityUnitCode", QUANTITY_UNIT_FI)
126
+ invoice_row.invoiced_quantity.set_attribute("QuantityUnitCodeUN", QUANTITY_UNIT_UN)
127
+ invoice_row.invoiced_quantity.value = quantity.to_s
128
+ invoice_row.unit_price_amount.set_attribute("AmountCurrencyIdentifier", CURRENCY)
129
+ invoice_row.unit_price_amount.value = f_to_s(unit_price)
130
+ invoice_row.unit_price_net_amount.set_attribute("AmountCurrencyIdentifier", CURRENCY)
131
+ invoice_row.unit_price_net_amount.value = f_to_s(unit_price)
132
+ invoice_row.row_position_identifier.value = position.to_s
133
+ invoice_row.row_vat_rate_percent.value = f_to_s(VAT_PERCENT)
134
+ invoice_row.row_vat_code.value = VAT_CODE
135
+ invoice_row.row_vat_amount.set_attribute("AmountCurrencyIdentifier", CURRENCY)
136
+ invoice_row.row_vat_amount.value = f_to_s(vat_amount)
137
+ invoice_row.row_vat_excluded_amount.set_attribute("AmountCurrencyIdentifier", CURRENCY)
138
+ invoice_row.row_vat_excluded_amount.value = f_to_s(vat_amount)
139
+
140
+ @finvoice.invoice_rows << invoice_row
141
+
142
+ calculate
143
+ invoice_row
144
+ end
145
+
146
+ private
147
+
148
+ def build
149
+ @finvoice.seller_party_details.seller_party_identifier.value = @seller_y
150
+ @finvoice.seller_party_details.add_seller_organisation_name @seller_name
151
+ @finvoice.seller_party_details.seller_organisation_tax_code.value = @seller_tax_code
152
+ @finvoice.seller_party_details.seller_postal_address_details.seller_street_name.value = @seller_street_name
153
+ @finvoice.seller_party_details.seller_postal_address_details.seller_town_name.value = @seller_town_name
154
+ @finvoice.seller_party_details.seller_postal_address_details.seller_post_code_identifier.value = @seller_post_code
155
+ @finvoice.seller_party_details.seller_postal_address_details.country_code.value = COUNTRY_CODE
156
+ @finvoice.seller_party_details.seller_postal_address_details.country_name.value = COUNTRY_NAME
157
+ @finvoice.seller_information_details.add_seller_account(
158
+ account_id_scheme: ACCOUNT_ID_SCHEME,
159
+ account_id: @seller_iban,
160
+ bic_scheme: BIC_SCHEME,
161
+ bic: @seller_bic
162
+ )
163
+
164
+ @finvoice.buyer_party_details.buyer_party_identifier.value = @buyer_y
165
+ @finvoice.buyer_party_details.add_buyer_organisation_name @buyer_name
166
+ @finvoice.buyer_party_details.buyer_organisation_tax_code.value = @buyer_tax_code
167
+ @finvoice.buyer_party_details.buyer_postal_address_details.buyer_street_name.value = @buyer_street_name
168
+ @finvoice.buyer_party_details.buyer_postal_address_details.buyer_town_name.value = @buyer_town_name
169
+ @finvoice.buyer_party_details.buyer_postal_address_details.buyer_post_code_identifier.value = @buyer_post_code
170
+ @finvoice.buyer_party_details.buyer_postal_address_details.country_code.value = COUNTRY_CODE
171
+ @finvoice.buyer_party_details.buyer_postal_address_details.country_name.value = COUNTRY_NAME
172
+
173
+ @finvoice.delivery_details.delivery_date.set_attribute("Format", DATE_FORMAT)
174
+ @finvoice.delivery_details.delivery_date.value = @timestamp.strftime("%Y%m%d")
175
+
176
+ @finvoice.invoice_details.invoice_type_code.value = INVOICE_TYPE_FI
177
+ @finvoice.invoice_details.invoice_type_code_un.value = INVOICE_TYPE_UN
178
+ @finvoice.invoice_details.invoice_type_text.value = INVOICE_TYPE_TEXT
179
+ @finvoice.invoice_details.origin_code.value = ORIGIN_CODE
180
+ @finvoice.invoice_details.invoice_number.value = @invoice_number.to_s
181
+ @finvoice.invoice_details.invoice_date.set_attribute("Format", DATE_FORMAT)
182
+ @finvoice.invoice_details.invoice_date.value = @timestamp.strftime("%Y%m%d")
183
+ @finvoice.invoice_details.rows_total_vat_excluded_amount.set_attribute("AmountCurrencyIdentifier", CURRENCY)
184
+ @finvoice.invoice_details.invoice_total_vat_excluded_amount.set_attribute("AmountCurrencyIdentifier", CURRENCY)
185
+ @finvoice.invoice_details.invoice_total_vat_amount.set_attribute("AmountCurrencyIdentifier", CURRENCY)
186
+ @finvoice.invoice_details.invoice_total_vat_included_amount.set_attribute("AmountCurrencyIdentifier", CURRENCY)
187
+ @finvoice.invoice_details.vat_specification_details.vat_base_amount.set_attribute("AmountCurrencyIdentifier", CURRENCY)
188
+ @finvoice.invoice_details.vat_specification_details.vat_rate_percent.value = f_to_s(VAT_PERCENT)
189
+ @finvoice.invoice_details.vat_specification_details.vat_code.value = VAT_CODE
190
+ @finvoice.invoice_details.vat_specification_details.vat_rate_amount.set_attribute("AmountCurrencyIdentifier", CURRENCY)
191
+ @finvoice.invoice_details.payment_terms_details.payment_terms_free_text.value = PAYMENT_TERMS_TEXT
192
+ @finvoice.invoice_details.payment_terms_details.invoice_due_date.set_attribute("Format", DATE_FORMAT)
193
+ @finvoice.invoice_details.payment_terms_details.invoice_due_date.value = @due_date.strftime("%Y%m%d")
194
+ @finvoice.invoice_details.payment_terms_details.payment_over_due_fine_details.payment_over_due_fine_free_text.value = OVERDUE_FINE_TEXT
195
+ @finvoice.invoice_details.payment_terms_details.payment_over_due_fine_details.payment_over_due_fine_percent.value = OVERDUE_FINE_PERCENT
196
+
197
+ @finvoice.epi_details.epi_identification_details.epi_date.set_attribute("Format", DATE_FORMAT)
198
+ @finvoice.epi_details.epi_identification_details.epi_date.value = @timestamp.strftime("%Y%m%d")
199
+ @finvoice.epi_details.epi_party_details.epi_bfi_party_details.epi_bfi_identifier.identification_scheme_name = BIC_SCHEME
200
+ @finvoice.epi_details.epi_party_details.epi_bfi_party_details.epi_bfi_identifier.value = @seller_bic
201
+ @finvoice.epi_details.epi_party_details.epi_beneficiary_party_details.epi_name_address_details.value = @seller_name
202
+ @finvoice.epi_details.epi_party_details.epi_beneficiary_party_details.epi_account_id.identification_scheme_name = ACCOUNT_ID_SCHEME
203
+ @finvoice.epi_details.epi_party_details.epi_beneficiary_party_details.epi_account_id.value = @seller_iban
204
+ @finvoice.epi_details.epi_payment_instruction_details.epi_remittance_info_identifier.identification_scheme_name = REMITTANCE_IDENTIFICATION_SCHEME
205
+ @finvoice.epi_details.epi_payment_instruction_details.epi_remittance_info_identifier.value = @remittance_id
206
+ @finvoice.epi_details.epi_payment_instruction_details.epi_instructed_amount.set_attribute("AmountCurrencyIdentifier", CURRENCY)
207
+ @finvoice.epi_details.epi_payment_instruction_details.epi_charge.charge_option = CHARGE_OPTION
208
+ @finvoice.epi_details.epi_payment_instruction_details.epi_date_option_date.set_attribute("Format", DATE_FORMAT)
209
+ @finvoice.epi_details.epi_payment_instruction_details.epi_date_option_date.value = @due_date.strftime("%Y%m%d")
210
+ @finvoice.epi_details.epi_payment_instruction_details.epi_payment_means_code.value = SEPA_CODE
211
+
212
+ @invoice
213
+ end
214
+
215
+ def calculate
216
+ total_including_vat = @total_excluding_vat + @total_vat
217
+
218
+ @finvoice.invoice_details.rows_total_vat_excluded_amount.value = f_to_s(@total_excluding_vat)
219
+ @finvoice.invoice_details.invoice_total_vat_excluded_amount.value = f_to_s(@total_excluding_vat)
220
+ @finvoice.invoice_details.invoice_total_vat_amount.value = f_to_s(@total_vat)
221
+ @finvoice.invoice_details.invoice_total_vat_included_amount.value = f_to_s(total_including_vat)
222
+ @finvoice.invoice_details.vat_specification_details.vat_base_amount.value = f_to_s(@total_excluding_vat)
223
+ @finvoice.invoice_details.vat_specification_details.vat_rate_amount.value = f_to_s(@total_vat)
224
+ @finvoice.epi_details.epi_payment_instruction_details.epi_instructed_amount.value = f_to_s(total_including_vat)
225
+ end
226
+
227
+ def f_to_s(f)
228
+ ("%.2f" % f).tr(".", ",")
229
+ end
230
+ end
231
+ end
232
+ end
@@ -0,0 +1,4 @@
1
+ module Finvoice3
2
+ class VatCategoryCode < Tag::Simple
3
+ end
4
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Finvoice3
4
+ VERSION = "1.0"
5
+ end
data/lib/finvoice3.rb ADDED
@@ -0,0 +1,135 @@
1
+ require_relative "finvoice3/version"
2
+
3
+ require_relative "finvoice3/tag"
4
+ require_relative "finvoice3/tag/simple"
5
+ require_relative "finvoice3/tag/complex"
6
+
7
+ require_relative "finvoice3/any_party_communication_details"
8
+ require_relative "finvoice3/buyer_communication_details"
9
+ require_relative "finvoice3/country_code"
10
+ require_relative "finvoice3/delivery_communication_details"
11
+ require_relative "finvoice3/direct_debit_info"
12
+ require_relative "finvoice3/electronic_addr_id"
13
+ require_relative "finvoice3/epi_account_id"
14
+ require_relative "finvoice3/invoice_recipient_communication_details"
15
+ require_relative "finvoice3/invoice_sender_party_details"
16
+ require_relative "finvoice3/invoiced_object_id"
17
+ require_relative "finvoice3/original_invoice_reference"
18
+ require_relative "finvoice3/partial_payment_details"
19
+ require_relative "finvoice3/party_identifier"
20
+ require_relative "finvoice3/party_legal_reg_id"
21
+ require_relative "finvoice3/payment_card_info"
22
+ require_relative "finvoice3/seller_communication_details"
23
+ require_relative "finvoice3/vat_category_code"
24
+
25
+ require_relative "finvoice3/any_party_details"
26
+ require_relative "finvoice3/any_party_details/any_party_communication_details"
27
+ require_relative "finvoice3/any_party_details/any_party_postal_address_details"
28
+
29
+ require_relative "finvoice3/attachment_message_details"
30
+ require_relative "finvoice3/attachment_message_details/attachment_message_identifier"
31
+
32
+ require_relative "finvoice3/delivery_party_details"
33
+ require_relative "finvoice3/delivery_party_details/delivery_postal_address_details"
34
+
35
+ require_relative "finvoice3/factoring_agreement_details"
36
+ require_relative "finvoice3/factoring_agreement_details/factoring_party_postal_address_details"
37
+
38
+ require_relative "finvoice3/invoice_recipient_party_details"
39
+ require_relative "finvoice3/invoice_recipient_party_details/invoice_recipient_postal_address_details"
40
+
41
+ require_relative "finvoice3/message_transmission_details"
42
+ require_relative "finvoice3/message_transmission_details/message_sender_details"
43
+ require_relative "finvoice3/message_transmission_details/message_receiver_details"
44
+ require_relative "finvoice3/message_transmission_details/message_details"
45
+
46
+ require_relative "finvoice3/seller_information_details"
47
+ require_relative "finvoice3/seller_information_details/invoice_recipient_details"
48
+ require_relative "finvoice3/seller_information_details/seller_account_details"
49
+ require_relative "finvoice3/seller_information_details/seller_account_details/seller_account_id"
50
+ require_relative "finvoice3/seller_information_details/seller_account_details/seller_bic"
51
+ require_relative "finvoice3/seller_information_details/seller_official_postal_address_details"
52
+
53
+ require_relative "finvoice3/seller_party_details"
54
+ require_relative "finvoice3/seller_party_details/seller_postal_address_details"
55
+
56
+ require_relative "finvoice3/buyer_party_details"
57
+ require_relative "finvoice3/buyer_party_details/buyer_postal_address_details"
58
+
59
+ require_relative "finvoice3/delivery_details"
60
+ require_relative "finvoice3/delivery_details/delivery_period_details"
61
+ require_relative "finvoice3/delivery_details/destination_name"
62
+ require_relative "finvoice3/delivery_details/package_details"
63
+ require_relative "finvoice3/delivery_details/shipment_party_details"
64
+ require_relative "finvoice3/delivery_details/shipment_party_details/shipment_postal_address_details"
65
+
66
+ require_relative "finvoice3/invoice_details"
67
+ require_relative "finvoice3/invoice_details/definition_details"
68
+ require_relative "finvoice3/invoice_details/definition_details/definition_header_text"
69
+ require_relative "finvoice3/invoice_details/discount_details"
70
+ require_relative "finvoice3/invoice_details/invoice_charge_details"
71
+ require_relative "finvoice3/invoice_details/invoice_classification"
72
+ require_relative "finvoice3/invoice_details/invoice_type_code_fi"
73
+ require_relative "finvoice3/invoice_details/origin_code"
74
+ require_relative "finvoice3/invoice_details/payment_terms_details"
75
+ require_relative "finvoice3/invoice_details/payment_terms_details/cash_discount_vat_details"
76
+ require_relative "finvoice3/invoice_details/payment_terms_details/header_value"
77
+ require_relative "finvoice3/invoice_details/payment_terms_details/payment_over_due_fine_details"
78
+ require_relative "finvoice3/invoice_details/vat_point"
79
+ require_relative "finvoice3/invoice_details/vat_specification_details"
80
+
81
+ require_relative "finvoice3/invoice_row"
82
+ require_relative "finvoice3/invoice_row/article_group_identifier"
83
+ require_relative "finvoice3/invoice_row/customs_info"
84
+ require_relative "finvoice3/invoice_row/ean_code"
85
+ require_relative "finvoice3/invoice_row/row_any_party_details"
86
+ require_relative "finvoice3/invoice_row/row_any_party_details/row_any_party_postal_address_details"
87
+ require_relative "finvoice3/invoice_row/row_charge_details"
88
+ require_relative "finvoice3/invoice_row/row_definition_details"
89
+ require_relative "finvoice3/invoice_row/row_definition_details/row_definition_header_text"
90
+ require_relative "finvoice3/invoice_row/row_delivery_details"
91
+ require_relative "finvoice3/invoice_row/row_delivery_details/row_package_details"
92
+ require_relative "finvoice3/invoice_row/row_over_due_payment_details"
93
+ require_relative "finvoice3/invoice_row/row_progressive_discount_details"
94
+ require_relative "finvoice3/invoice_row/sub_invoice_row"
95
+ require_relative "finvoice3/invoice_row/transaction_details"
96
+
97
+ require_relative "finvoice3/invoice_row/sub_invoice_row/sub_row_any_party_details"
98
+ require_relative "finvoice3/invoice_row/sub_invoice_row/sub_row_any_party_details/sub_row_any_party_postal_address_details"
99
+ require_relative "finvoice3/invoice_row/sub_invoice_row/sub_row_definition_details"
100
+ require_relative "finvoice3/invoice_row/sub_invoice_row/sub_row_definition_details/sub_row_definition_header_text"
101
+ require_relative "finvoice3/invoice_row/sub_invoice_row/sub_row_delivery_details"
102
+ require_relative "finvoice3/invoice_row/sub_invoice_row/sub_row_delivery_details/sub_row_package_details"
103
+ require_relative "finvoice3/invoice_row/sub_invoice_row/sub_row_over_due_payment_details"
104
+ require_relative "finvoice3/invoice_row/sub_invoice_row/sub_row_progressive_discount_details"
105
+
106
+ require_relative "finvoice3/epi_details"
107
+ require_relative "finvoice3/epi_details/epi_identification_details"
108
+ require_relative "finvoice3/epi_details/epi_identification_details/epi_reference"
109
+ require_relative "finvoice3/epi_details/epi_party_details"
110
+ require_relative "finvoice3/epi_details/epi_party_details/epi_beneficiary_party_details"
111
+ require_relative "finvoice3/epi_details/epi_party_details/epi_bfi_party_details"
112
+ require_relative "finvoice3/epi_details/epi_party_details/epi_bfi_party_details/epi_bfi_identifier"
113
+ require_relative "finvoice3/epi_details/epi_payment_instruction_details"
114
+ require_relative "finvoice3/epi_details/epi_payment_instruction_details/epi_charge"
115
+ require_relative "finvoice3/epi_details/epi_payment_instruction_details/epi_amount"
116
+ require_relative "finvoice3/epi_details/epi_payment_instruction_details/epi_remittance_info_identifier"
117
+
118
+ require_relative "finvoice3/payment_status_details"
119
+ require_relative "finvoice3/payment_status_details/payment_status_code"
120
+
121
+ require_relative "finvoice3/specification_details"
122
+ require_relative "finvoice3/specification_details/external_specification_details"
123
+
124
+ require_relative "finvoice3/finvoice"
125
+ require_relative "finvoice3/invoice"
126
+
127
+ require_relative "finvoice3/templates/fi_b2b"
128
+
129
+ require_relative "finvoice3/soap_envelope"
130
+
131
+
132
+ module Finvoice3
133
+ XSD_SCHEMA = "Finvoice3.0.xsd"
134
+ FINVOICE_VERSION = "3.0"
135
+ end
metadata ADDED
@@ -0,0 +1,225 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: finvoice3
3
+ version: !ruby/object:Gem::Version
4
+ version: '1.0'
5
+ platform: ruby
6
+ authors:
7
+ - Mika Haulo
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2025-02-27 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: nokogiri
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '2'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '13'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '13'
55
+ - !ruby/object:Gem::Dependency
56
+ name: minitest
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '5'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '5'
69
+ - !ruby/object:Gem::Dependency
70
+ name: byebug
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '11'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '11'
83
+ description: Finvoice 3 xml generator
84
+ email: mika@hey.com
85
+ executables: []
86
+ extensions: []
87
+ extra_rdoc_files: []
88
+ files:
89
+ - CHANGELOG.md
90
+ - README.md
91
+ - Rakefile
92
+ - lib/finvoice3.rb
93
+ - lib/finvoice3/any_party_communication_details.rb
94
+ - lib/finvoice3/any_party_details.rb
95
+ - lib/finvoice3/any_party_details/any_party_communication_details.rb
96
+ - lib/finvoice3/any_party_details/any_party_postal_address_details.rb
97
+ - lib/finvoice3/attachment_message_details.rb
98
+ - lib/finvoice3/attachment_message_details/attachment_message_identifier.rb
99
+ - lib/finvoice3/buyer_communication_details.rb
100
+ - lib/finvoice3/buyer_party_details.rb
101
+ - lib/finvoice3/buyer_party_details/buyer_postal_address_details.rb
102
+ - lib/finvoice3/country_code.rb
103
+ - lib/finvoice3/delivery_communication_details.rb
104
+ - lib/finvoice3/delivery_details.rb
105
+ - lib/finvoice3/delivery_details/delivery_period_details.rb
106
+ - lib/finvoice3/delivery_details/destination_name.rb
107
+ - lib/finvoice3/delivery_details/package_details.rb
108
+ - lib/finvoice3/delivery_details/shipment_party_details.rb
109
+ - lib/finvoice3/delivery_details/shipment_party_details/shipment_postal_address_details.rb
110
+ - lib/finvoice3/delivery_party_details.rb
111
+ - lib/finvoice3/delivery_party_details/delivery_postal_address_details.rb
112
+ - lib/finvoice3/direct_debit_info.rb
113
+ - lib/finvoice3/electronic_addr_id.rb
114
+ - lib/finvoice3/epi_account_id.rb
115
+ - lib/finvoice3/epi_details.rb
116
+ - lib/finvoice3/epi_details/epi_identification_details.rb
117
+ - lib/finvoice3/epi_details/epi_identification_details/epi_reference.rb
118
+ - lib/finvoice3/epi_details/epi_party_details.rb
119
+ - lib/finvoice3/epi_details/epi_party_details/epi_beneficiary_party_details.rb
120
+ - lib/finvoice3/epi_details/epi_party_details/epi_bfi_party_details.rb
121
+ - lib/finvoice3/epi_details/epi_party_details/epi_bfi_party_details/epi_bfi_identifier.rb
122
+ - lib/finvoice3/epi_details/epi_payment_instruction_details.rb
123
+ - lib/finvoice3/epi_details/epi_payment_instruction_details/epi_amount.rb
124
+ - lib/finvoice3/epi_details/epi_payment_instruction_details/epi_charge.rb
125
+ - lib/finvoice3/epi_details/epi_payment_instruction_details/epi_remittance_info_identifier.rb
126
+ - lib/finvoice3/factoring_agreement_details.rb
127
+ - lib/finvoice3/factoring_agreement_details/factoring_party_postal_address_details.rb
128
+ - lib/finvoice3/finvoice.rb
129
+ - lib/finvoice3/invoice.rb
130
+ - lib/finvoice3/invoice_details.rb
131
+ - lib/finvoice3/invoice_details/definition_details.rb
132
+ - lib/finvoice3/invoice_details/definition_details/definition_header_text.rb
133
+ - lib/finvoice3/invoice_details/discount_details.rb
134
+ - lib/finvoice3/invoice_details/invoice_charge_details.rb
135
+ - lib/finvoice3/invoice_details/invoice_classification.rb
136
+ - lib/finvoice3/invoice_details/invoice_type_code_fi.rb
137
+ - lib/finvoice3/invoice_details/origin_code.rb
138
+ - lib/finvoice3/invoice_details/payment_terms_details.rb
139
+ - lib/finvoice3/invoice_details/payment_terms_details/cash_discount_vat_details.rb
140
+ - lib/finvoice3/invoice_details/payment_terms_details/header_value.rb
141
+ - lib/finvoice3/invoice_details/payment_terms_details/payment_over_due_fine_details.rb
142
+ - lib/finvoice3/invoice_details/vat_point.rb
143
+ - lib/finvoice3/invoice_details/vat_specification_details.rb
144
+ - lib/finvoice3/invoice_recipient_communication_details.rb
145
+ - lib/finvoice3/invoice_recipient_party_details.rb
146
+ - lib/finvoice3/invoice_recipient_party_details/invoice_recipient_postal_address_details.rb
147
+ - lib/finvoice3/invoice_row.rb
148
+ - lib/finvoice3/invoice_row/article_group_identifier.rb
149
+ - lib/finvoice3/invoice_row/customs_info.rb
150
+ - lib/finvoice3/invoice_row/ean_code.rb
151
+ - lib/finvoice3/invoice_row/row_any_party_details.rb
152
+ - lib/finvoice3/invoice_row/row_any_party_details/row_any_party_postal_address_details.rb
153
+ - lib/finvoice3/invoice_row/row_charge_details.rb
154
+ - lib/finvoice3/invoice_row/row_definition_details.rb
155
+ - lib/finvoice3/invoice_row/row_definition_details/row_definition_header_text.rb
156
+ - lib/finvoice3/invoice_row/row_delivery_details.rb
157
+ - lib/finvoice3/invoice_row/row_delivery_details/row_package_details.rb
158
+ - lib/finvoice3/invoice_row/row_over_due_payment_details.rb
159
+ - lib/finvoice3/invoice_row/row_progressive_discount_details.rb
160
+ - lib/finvoice3/invoice_row/sub_invoice_row.rb
161
+ - lib/finvoice3/invoice_row/sub_invoice_row/sub_row_any_party_details.rb
162
+ - lib/finvoice3/invoice_row/sub_invoice_row/sub_row_any_party_details/sub_row_any_party_postal_address_details.rb
163
+ - lib/finvoice3/invoice_row/sub_invoice_row/sub_row_definition_details.rb
164
+ - lib/finvoice3/invoice_row/sub_invoice_row/sub_row_definition_details/sub_row_definition_header_text.rb
165
+ - lib/finvoice3/invoice_row/sub_invoice_row/sub_row_delivery_details.rb
166
+ - lib/finvoice3/invoice_row/sub_invoice_row/sub_row_delivery_details/sub_row_package_details.rb
167
+ - lib/finvoice3/invoice_row/sub_invoice_row/sub_row_over_due_payment_details.rb
168
+ - lib/finvoice3/invoice_row/sub_invoice_row/sub_row_progressive_discount_details.rb
169
+ - lib/finvoice3/invoice_row/transaction_details.rb
170
+ - lib/finvoice3/invoice_sender_party_details.rb
171
+ - lib/finvoice3/invoiced_object_id.rb
172
+ - lib/finvoice3/message_transmission_details.rb
173
+ - lib/finvoice3/message_transmission_details/message_details.rb
174
+ - lib/finvoice3/message_transmission_details/message_receiver_details.rb
175
+ - lib/finvoice3/message_transmission_details/message_sender_details.rb
176
+ - lib/finvoice3/original_invoice_reference.rb
177
+ - lib/finvoice3/partial_payment_details.rb
178
+ - lib/finvoice3/party_identifier.rb
179
+ - lib/finvoice3/party_legal_reg_id.rb
180
+ - lib/finvoice3/payment_card_info.rb
181
+ - lib/finvoice3/payment_status_details.rb
182
+ - lib/finvoice3/payment_status_details/payment_status_code.rb
183
+ - lib/finvoice3/seller_communication_details.rb
184
+ - lib/finvoice3/seller_information_details.rb
185
+ - lib/finvoice3/seller_information_details/invoice_recipient_details.rb
186
+ - lib/finvoice3/seller_information_details/seller_account_details.rb
187
+ - lib/finvoice3/seller_information_details/seller_account_details/seller_account_id.rb
188
+ - lib/finvoice3/seller_information_details/seller_account_details/seller_bic.rb
189
+ - lib/finvoice3/seller_information_details/seller_official_postal_address_details.rb
190
+ - lib/finvoice3/seller_party_details.rb
191
+ - lib/finvoice3/seller_party_details/seller_postal_address_details.rb
192
+ - lib/finvoice3/soap_envelope.rb
193
+ - lib/finvoice3/specification_details.rb
194
+ - lib/finvoice3/specification_details/external_specification_details.rb
195
+ - lib/finvoice3/tag.rb
196
+ - lib/finvoice3/tag/complex.rb
197
+ - lib/finvoice3/tag/simple.rb
198
+ - lib/finvoice3/templates/fi_b2b.rb
199
+ - lib/finvoice3/vat_category_code.rb
200
+ - lib/finvoice3/version.rb
201
+ homepage: https://github.com/mhaulo/finvoice3
202
+ licenses:
203
+ - MIT
204
+ metadata:
205
+ rubygems_mfa_required: 'true'
206
+ post_install_message:
207
+ rdoc_options: []
208
+ require_paths:
209
+ - lib
210
+ required_ruby_version: !ruby/object:Gem::Requirement
211
+ requirements:
212
+ - - ">="
213
+ - !ruby/object:Gem::Version
214
+ version: '2.7'
215
+ required_rubygems_version: !ruby/object:Gem::Requirement
216
+ requirements:
217
+ - - ">="
218
+ - !ruby/object:Gem::Version
219
+ version: '0'
220
+ requirements: []
221
+ rubygems_version: 3.5.22
222
+ signing_key:
223
+ specification_version: 4
224
+ summary: Finvoice 3 xml generator
225
+ test_files: []