diff --git a/lib/xrechnung.rb b/lib/xrechnung.rb index 48a6deb..c848f30 100644 --- a/lib/xrechnung.rb +++ b/lib/xrechnung.rb @@ -21,6 +21,7 @@ require "xrechnung/price" require "xrechnung/invoice_line" require "xrechnung/invoice_document_reference" +require "xrechnung/invoice_period" require "builder" module Xrechnung @@ -168,6 +169,10 @@ class Document # @return [Xrechnung::InvoiceDocumentReference] member :billing_reference, type: Xrechnung::InvoiceDocumentReference, optional: true + # @!attribute invoice_period + # @return [Xrechnung::InvoicePeriod] + member :invoice_period, type: Xrechnung::InvoicePeriod, optional: true + # Contract reference BT-12 # # Eine eindeutige Bezeichnung des Vertrages (z. B. Vertragsnummer). @@ -260,11 +265,15 @@ def to_xml(indent: 2, target: "") xml.cbc :Note, note end - xml.cbc :TaxPointDate, tax_point_date + xml.cbc :TaxPointDate, tax_point_date unless tax_point_date.nil? xml.cbc :DocumentCurrencyCode, document_currency_code xml.cbc :TaxCurrencyCode, tax_currency_code xml.cbc :BuyerReference, buyer_reference + unless members[:invoice_period][:optional] && invoice_period.nil? + invoice_period&.to_xml(xml) + end + xml.cac :OrderReference do xml.cbc :ID, purchase_order_reference unless members[:sales_order_reference][:optional] && sales_order_reference.nil? diff --git a/lib/xrechnung/invoice_period.rb b/lib/xrechnung/invoice_period.rb new file mode 100644 index 0000000..55f8f8f --- /dev/null +++ b/lib/xrechnung/invoice_period.rb @@ -0,0 +1,20 @@ +module Xrechnung + class InvoicePeriod + include MemberContainer + + # @!attribute start_date + # @return [Date] + member :start_date, type: Date + + # @!attribute end_date + # @return [Date] + member :end_date, type: Date + + def to_xml(xml) + xml.cac :InvoicePeriod do + xml.cbc :StartDate, start_date + xml.cbc :EndDate, end_date + end + end + end +end diff --git a/spec/fixtures/xrechnung.xml b/spec/fixtures/xrechnung.xml index 436c047..658fb27 100644 --- a/spec/fixtures/xrechnung.xml +++ b/spec/fixtures/xrechnung.xml @@ -12,6 +12,10 @@ EUR EUR 9900 0000 - 1234 56 - 23 + + 2021-04-01 + 2021-04-30 + 0815-99-1 diff --git a/spec/xrechnung_spec.rb b/spec/xrechnung_spec.rb index 2acb167..9f547f3 100644 --- a/spec/xrechnung_spec.rb +++ b/spec/xrechnung_spec.rb @@ -29,6 +29,10 @@ doc.billing_reference.id = "Vorangegangene Rechnung 23423" doc.billing_reference.issue_date = Date.new(2020, 4, 23) + doc.invoice_period = Xrechnung::InvoicePeriod.new + doc.invoice_period.start_date = Date.new(2021, 4, 1) + doc.invoice_period.end_date = Date.new(2021, 4, 30) + doc.contract_document_reference_id = "23871349" doc.project_reference_id = "Bauvorhaben Glücksstraße 4"