jenner/LstGen

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