manuelbl / SwissQRBill

Java library for Swiss QR bill payment slips (aka QR-Rechnung)
https://www.codecrete.net/qrbill
MIT License
156 stars 37 forks source link

Configuration options for Lichtenstein #78

Open raphael-gosteli opened 2 years ago

raphael-gosteli commented 2 years ago

Various administrations (especially in Lichtenstein) also require a delivery instruction (c/o) in addition to the name. Therefore, there should be a possibility to use a separator which is displayed with a line break on the payment part.

The current implementation uses a comma for this. On the invoice, this is then displayed as a line break. An example name would be: Company XYZ, c/o Treuhand Fritz.

Since this is not officially defined in the standard and is irrelevant, the question arises whether this should be implemented in this library or not. What do you think @manuelbl?

manuelbl commented 2 years ago

Thanks for your contribution.

The address on the payment part is not used as a postal delivery address. The postal delivery address is usually printed at the top of the A4 sheet and/or on the envelope. What is the need to have a delivery instruction on the payment part? Do the banks require it in order to proper match the incoming payment?

raphael-gosteli commented 2 years ago

The delivery instruction is used in Lichtenstein to indicate the "Repräsentanz" of a corporation. A representative is necessary as soon as a company is active in Lichtenstein but does not have a domestic delivery address, which is the case for approx. ¾ of all public limited companies in Lichtenstein. This representative, i.e. the delivery note, must be mandatory on the invoice, as this is the only way to correctly identify the company. At the banks, this information is also checked and used for matching.

manuelbl commented 2 years ago

The need for specifying the representative in the invoice is clear. It will be present in the header of the invoice. I'm still not sure if it needs to be repeated in the payment part/slip at the bottom of the page. Is it used for the creditor or the debtor, or both?

And are you sure it's needed for a valid payment? If so, where would the banks expect it? Since the newline cannot be transmitted in the payment, the representative must either go into the name or the address.

In the current form, the PR breaks backward compatibility. Using the comma could have unexpected effects for users who already use the comma but don't want it to become a newline.

raphael-gosteli commented 2 years ago

for clients in lichtenstein the delivery instruction in indispensable. to ensure backward compatibility I have introduced new options for generation.

I have identified another necessary configuration option. the local country code for the foreign address check must also be configurable so that the lib can be used correctly in the context of Lichtenstein.

manuelbl commented 2 years ago

Thanks for the updated PR. I'm not generally opposed against having support for explicit line breaks. But I want to understand the underlying requirement. In particular, I'd like to understand (in the context of invoicing, as this is what is relevant for the Swiss QR bill):

manuelbl commented 2 years ago

In release 3.0.6, the local country code is now configurable. The option is part of the BillFormat class: https://www.codecrete.net/qrbill-javadoc/net/codecrete/qrbill/generator/BillFormat.html#setLocalCountryCode(java.lang.String)