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"