Replies: 2 comments 1 reply
-
|
@stephanstapel FYI |
Beta Was this translation helpful? Give feedback.
-
|
At the beginning of this year, I've implemented for my employer a C++ wrapper DLL and tests (using the Google Testing Framework). While doing this work, I've noticed that the functions of this ZUGFeRD-csharp library has a lot of redundant input parameters. I went through all the business rules (Geschäftsregeln) in DIN EN 16931-1:2020-12 and removed in our C++ wrapper DLL all the redundant parameters. All the parameters which can be calculated automatically from other input parameters are now gone. At the end, the user has to call a function I think having values calculated automatically, reduces the risk of producing e-invoices which are invalid or have warnings. Therefore, I prefer it this way. As we normally work with gross prices (including VAT) and the e-invoices are based on net prices (without VAT), we will get occasionally rounding errors. This means not all values will be exactly the same as in the PDF invoice. There can be a few cent difference. We just have to live with this. We are going to specify the rounding error as rounding amount BT-114. Even this is calculated automatically by our C++ wrapper DLL. I feed in the total gross amount that we've calculated and which will be shown in the PDF and the C++ wrapper DLL calculates BT-114 automatically and also adds a note regarding this to the invoice. On the other side, there are people who want to be in control about all values in the e-invoice, even if they may produce warnings. Some want even a higher number of decimal places, as EN 16931 or the ZUGFeRD standard define. In my opinion, it would be nice, if the ZUGFeRD-csharp library would calculate as much as possible automatically (like our C++ wrapper DLL does). Maybe it can provide overloaded functions without the redundant parameters which can be calculated automatically. @danvy @stephanstapel FYI |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
In its actual state, the component is mainly a reader and writer of various e-invoicing formats.
Should it stay in his prime role or get enhanced with calculation ?
Here are my thoughts.
First, some might give different meaning to calculation : Is it pure calculation (IE : Calculate the total amount based on lines detail) or validation (IE : Ensure that the produced output is compliant with the selected standard).
Those two aspects have their challenges.
Pros :
Cons :
Pros :
Cons :
Please, comments with your additional pros and cons
Beta Was this translation helpful? Give feedback.
All reactions