Skip to main content

Lohnsteuer-Generator für BMF XML-Codes

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.

Folgende Programmiersprachen werden zur Zeit unterstützt:

  • PHP
  • Python
  • Java
  • Javascript
  • Go

Installation

  • Mit pip aus PyPI:
pip 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\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)

Beispiel 3: Erzeugen eines Go-Moduls zur Berechnung der Lohnsteuer für das Jahr 2014

Folgende Dateistruktur wird benötigt:

.
├── cmd/
│   ├── main.go
│   └── start
├── go.mod
├── go.sum
└── tax/
    └── 2014.go

tax-Modul erzeugen:

mkdir tax
lstgen -p 2014_1 -l go --go-package-name Lohnsteuer2014 --outfile tax/2014.go
mkdir cmd

alternativ für 2022 via python das gen Verzeichnis:
python cli.py -p 2022_1 -l golang --go-package-name income_tax --outfile ../gen/2022.go

Erstellen von main.go:

package main

import (
	"fmt"
	"github.com/shopspring/decimal"
	"yourpackage.com/tax"
)

func main() {
	lst := tax.NewLohnsteuer2014()
	lst.SetRe4(decimal.NewFromInt(50_000_00))  // in cents
	lst.SetPkv(1)
	lst.SetAlter1(0)
	lst.SetAf(0)
	lst.SetF(1)
	lst.SetPvs(0)
	lst.SetR(0)
	lst.SetLzzhinzu(decimal.NewFromInt(0))
	lst.SetPvz(0)
	lst.SetStkl(1)
	lst.SetLzz(2)
	lst.SetKrv(2)
	lst.MAIN()
	steuer := lst.GetLstlzz().Add(lst.GetStv().Add(lst.GetSts()))
	soli := lst.GetSolzlzz().Add(lst.GetSolzs().Add(lst.GetSolzv()))
	res := steuer.Add(soli).Div(decimal.NewFromInt(100))
	fmt.Printf("%v\n", res.StringFixed(2))
}

Ausführung:

go mod init yourpackage.com
go mod download
go build -o cmd/start cmd/main.go
cmd/start

Beispiel 4: Erzeugen einer Javascript Funktion zur Berechnung der Lohnsteuer für das Jahr 2022

lstgen -p 2022_1 -l javascript --class-name Lohnsteuer2022 --outfile Lohnsteuer2022.js

Das generierte Node Module erfordert eine BigDecimal Implementierung.

Dafür kann man zum Beispiel folgendes npm installieren: npm install bigdecimal

Um eine ordungsgemäße Nutzung der Klasse zu garantieren, muss man das BigDecimal des NPM wie folgt neu definieren

const big = require('../node_modules/bigdecimal')
const BigDecimal = big.BigDecimal;

Anschliessend kann man das Modul wie folgt nutzen:

const Lohnsteuer2022 = require('Lohnsteuer2022');

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lstgen-0.7.1.tar.gz (18.2 kB view details)

Uploaded Source

File details

Details for the file lstgen-0.7.1.tar.gz.

File metadata

  • Download URL: lstgen-0.7.1.tar.gz
  • Upload date:
  • Size: 18.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.17 {"installer":{"name":"uv","version":"0.9.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for lstgen-0.7.1.tar.gz
Algorithm Hash digest
SHA256 aa5a75bfd6d93dac85d2081cc69acdb7716dbaa7da55c446adfcf6689d4f9c09
MD5 67c15412e84b6883b07683bdb35af5b6
BLAKE2b-256 6afbbc93aad08e2ad6c1f42f39b7fae43b6ada228f27bab33f5ff12faf9450d7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page