Ergebnisse der generierten py-Datei entsprechen nicht Validierungstests
MartinPyka opened this issue · 5 comments
Ich hab mittels
lstgen -x Lohnsteuer2017.xml -l python --class-name Lohnsteuer2017 --outfile lst2017.py
die Lohnsteuer-Datei geniert und teste sie, wie hier beschrieben, gegen die externe Programmierschnittstelle
https://www.bmf-steuerrechner.de/interface/schnittstelle.jsp
und bekomme leider nicht die selben Ergebnisse. Mein Code
from lst.lst2017 import Lohnsteuer2017
def print_lst(lst):
BK = lst.getBk()
BKS = lst.getBks()
LSTLZZ = lst.getLstlzz()
SOLZLZZ = lst.getSolzlzz()
WVFRB = lst.getWvfrb()
print(('BK: %i\n' +
'BKS: %i\n' +
'LSTLZZ: %i\n' +
'SOLZLZZ: %i\n' +
'WVFRB: %i') % (BK, BKS, LSTLZZ, SOLZLZZ, WVFRB))
def test_simple():
brutto = 2500000 # Brutto in ¢ent
lst2017 = Lohnsteuer2017(
RE4=brutto,
LZZ=1,
STKL=1
)
lst2017.MAIN()
print_lst(lst2017)
if __name__ == '__main__':
test_simple()
liefert zum Beispiel
LSTLZZ: -1782700
aber
https://www.bmf-steuerrechner.de/interface/LSt2017.jsp?LZZ=1&RE4=2500000&STKL=1
liefert
LSTLZZ: 260100
Irgendeine Idee, was ich falsch mache?
Du machst nichts falsch, sieht nach einem Fehler im generierten Code aus. Bin mir nicht ganz sicher, aber ich glaube BMF hat in PAP für 2017 neue Elemente eingeführt die ich nicht beachte.
Habs gefunden. Bei den compare-Anweisungen wird -1 in +1 konvertiert. Ein einfaches find and replace fixte das Problem in der generierten py Datei. Bin mir allerdings nicht sicher wo im Code der Fehler ist
Kannst du einen Ausschnitt zeigen?
Ich denke, Du hast das Problem bereits gefunden, wenn ich Dein anderes Issue sehe, aber hier eine Passage, in der man das Problem sieht. In der XML-Datei steht zum Beispiel
<IF expr="ZRE4.compareTo (BigDecimal.ZERO) == -1">
im Python dann aber
if self.ZRE4.compareTo(BigDecimal.ZERO) == +1:
Wenn man das korrigiert, klappt die Validierung mit der externen Programmschnittstelle und den Testtabellen.
Super, danke für den Tipp, hier ist der Fehler: 5094a90#diff-4779331738cea8d497c55ce3164fb201