LstGen
Project description
LstGen
Mittels LstGen kann man aus den sgn. PAP (Programmablaufplan) Dateien, die unter https://www.bmf-steuerrechner.de zur Verfügung stehen, validen Code generieren, mit dem man ohne weitere Abhängigkeiten (wie z.B. einem externen Service) die Lohnsteuer berechnen kann.
Zur Zeit werden vier Sprachen unterstützt: * PHP * Python * Java * Javascript
Installation
Mit pip oder easy_install aus PyPI:
pip install lstgen
oder
easy_install lstgen
Danach ist das Program lstgen (für gewöhnlich) unter /usr/local/bin/lstgen verfügbar.
Beispiel 1: Erzeugen einer PHP-Datei zur Berechnung der Lohnsteuer für das Jahr 2016
lstgen -p 2016_1 -l php --class-name Lohnsteuer2016 --outfile Lohnsteuer2016.php
Der generierte Code benötigt für die Berechnung die Brick:raw-latex:Math Bibliothek und geht davon aus, dass sie mittels Composer installiert wurde.
Danach kann die generierte Klasse einfach importiert und folgendermassen in eigenem Code verwendet werden:
<?php
require "Lohnsteuer2016.php";
$brutto = 500000; // Brutto in ¢ent
$lst = new Lohnsteuer2015Big();
$lst->setRe4($brutto);
$lst->setPkv(1);
$lst->setAlter1(0);
$lst->setAf(0);
$lst->setF(1);
$lst->setPvs(0);
$lst->setR(0);
$lst->setLzzhinzu(0);
$lst->setPvz(0);
$lst->setStkl(1);
$lst->setLzz(2);
$lst->setKrv(2);
$lst->main();
$steuer = floor($lst->getLstlzz()->toFloat() + $lst->getStv()->toFloat() + $lst->getSts()->toFloat());
$soli = floor($lst->getSolzlzz()->toFloat() + $lst->getSolzs()->toFloat() + $lst->getSolzv()->toFloat()) / 100;
$stges = $steuer + $soli;
echo "steuer: $steuer\nsoli: $soli\nstges: $stges\n";
Oberes Beispiel zeigt die Berechnung der Lohnsteuer und Solidaritätszuschlags für einen Arbeitnehmer mit Steuerklasse 1, monatlichem Brutto von 5000€, privat versichert und ohne Arbeitgeberzuschuss für PKV.
Eine detaillierte Erklärung zu den jeweiligen Eingabeparametern findet man entweder im generierten Code in Form von Kommentaren oder in der PDF Version des PAP unter https://www.bmf-steuerrechner.de/interface/programmablauf.xhtml
Beispiel 2: Erzeugen einer Python-Datei zur Berechnung der Lohnsteuer für das Jahr 2014 (gleiche Voraussetzungen wie im PHP Beispiel)
lstgen -p 2014_1 -l python --class-name Lohnsteuer2014 --outfile lst2014.py
Der generierte Code kann dann so verwendet werden:
import math
from lst2014 import Lohnsteuer2014
def print_lst(lst):
steuer = math.floor(float(lst.getLstlzz()) + float(lst.getStv()) + float(lst.getSts())) / 100.0
soli = math.floor(float(lst.getSolzlzz()) + float(lst.getSolzs()) + float(lst.getSolzv())) / 100
stges = steuer + soli
print("steuer: {steuer}\nsoli: {soli}\nstges: {stges}".format(
steuer=steuer,
soli=soli,
stges=stges
))
brutto = 500000 # Brutto in ¢ent
# Setzen der Parameter mit Settern
lst2014 = Lohnsteuer2014()
lst2014.setRe4(brutto) # cent
lst2014.setPkv(1)
lst2014.setAlter1(0)
lst2014.setAf(0)
lst2014.setF(1)
lst2014.setPvs(0)
lst2014.setR(0)
lst2014.setLzzhinzu(0)
lst2014.setPvz(0)
lst2014.setStkl(1)
lst2014.setLzz(2)
lst2014.setKrv(2)
lst2014.MAIN()
print_lst(lst2014)
# Setzen der Parameter mittels Konstruktor-Argumente
lst2014 = Lohnsteuer2014(
RE4=brutto,
PKV=1,
ALTER1=0,
af=0,
f=1,
PVS=0,
R=0,
LZZHINZU=0,
PVZ=0,
STKL=1,
LZZ=2,
KRV=2
)
lst2014.MAIN()
print_lst(lst2014)
0.4.3
fix default value for “double” numbers
remove size literals (L/D) in python code
improve PAP naming (thanks knipknap)
0.4.2
add resources for year 2020 (thanks csarn)
fix README python example (thanks csarn)
0.4.1
Fixed CLI examples in README
0.4.0
Added PAP for 2018 and 2019
Fixed BMF URIs
Added “version” cli option
0.3.2
Make pypi happy
0.3.1
Added support for 2017 PAP
Fixed unary operator conversion
Replaced Decimal._rescale with Decimal.quantize to remain python3 compliant
0.3.0
Added JS support
Refactored generators for java-like languages
Cleaned up a bit to satisfy pylint
0.2.0
Refactored writers to generators
Added basic tests
Added BigDecimal PHP proxy class
0.1.1
Fixed packaging issues for README.md and CHANGES.md
0.1.0
Initial version
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.