ZUGFeRD / mustangproject

Open Source Java e-Invoicing library, validator and tool (Factur-X/ZUGFeRD, UNCEFACT/CII XRechnung)
http://www.mustangproject.org
Apache License 2.0
227 stars 124 forks source link

BuyerOrderReferencedDocument / IssuerAssignedID #466

Open J-N-K opened 1 month ago

J-N-K commented 1 month ago

In #247 wurde die Möglichkeit geschaffen, die Zeilennummer der Bestellung anzugeben. Das reicht für uns leider nicht, da wir häufig mehrere Bestellungen (nicht mehrere Lieferungen zu einer Bestellung) auf einer Rechnung haben. Wir lösen das im Augenblick mit einem Freitext (in getNotes), das ist allerdings eher eine Notlösung.

Prinzipiell könnte man das natürlich genauso lösen wie in #247, das ist aber etwas unschön, weil die API damit zukünftig sehr unübersichtlich wird (wenn jemand auch FormattedIssueDateTime oder etwas aus dem Bereich QuotationReferencedDocument nutzen möchte). IMO wäre die saubere Implementierung hier in IDatedReferencedDocument mit getIssuerAssignedId, getLineID und getFormattedDate. Technisch ist das nicht wahnsinnig kompliziert, würde aber entweder zu doppelter Funktionalität führen (wenn getBuyerOrderReferencedDocumentLineID erhalten bleibt) oder wäre nicht backward-compatible.

Edit: added translation

247 added the option to use the order line id. Unfortunately that is not enough for us since we often include different orders (not just several shipments related to one order) in one invoice. We currently use a free text (in getNotes) but this is only a workaround.

In principle this could be solved similar to #247, but that's not very nice, it clutters the API (especially if future additions for FormattedIssueDateTime or something from QuotationReferencedDocument are requested). IMO the cleanest implementation would be a IDatedReferencedDocument with getIssuerAssignedId, getLineID and getFormattedDate. Technically that's not challenging, but it either duplicates existing functionality (if getBuyerOrderReferencedDocumentLineID stays in API) or is nor backward-compatible.

jstaerk commented 1 month ago

confirm it's possible and document it (also on the website), see also https://zugferd.org/e-invoicing/1.0.0/faq.en.html#_how_do_collective_invoices_work_in_factur_x_extended

J-N-K commented 1 month ago

I would volunteer to implement a change if an agreement can be reached how code should look like.

jstaerk commented 1 month ago

We need a solution in

we do already have a getBuyerOrderReferencedDocumentLineID() so I would pragmatically settle for a item's getBuyerOrderReferencedDocument. (getReferencedDocuments() is fairly new but it only covers additionalReferencedDocuments not BuyerOrderReferencedDocuments)