Skip to content

Commit 02c01e4

Browse files
committed
Bedenken gegen die ITZBund Implementierung
1 parent b60aaae commit 02c01e4

File tree

2 files changed

+50
-4
lines changed

2 files changed

+50
-4
lines changed

README.md

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,17 @@
11
# LStXML2Code
22

3-
Program is inspired by nice project https://github.com/MarcelLehmann/Lohnsteuer but implemented in Swift and a side project because I want a LSt implementation for an other project.
3+
Dieses Programm ist inspiert bei [Marcel Lehmanns Lohnsteuer Projekt](https://github.com/MarcelLehmann/Lohnsteuer), jedoch in Swift implementiert da ich für ein anderes Projekt auf dem fachlichen Use Case Lohnsteuer aufsetze.
4+
5+
**Achtung:**
6+
(Stand 17.12.2023)
7+
Die BMF Webschnittstelle ist nicht vollständig und korrekt implementiert. Folgendes wurde festgestellt:
8+
9+
* Wenn nicht anders gesetzt wird LZZ mit Wert 4 angenommen und nicht geprüft (Wert 1234 wird auch als gültig betrachtet). In der textuellen Beschreibung wird hingegen z.B. vorgeschrieben, dass LZZ nur 1-4 sein darf.
10+
* Die STKL wird mit 1 angenommen. Gleichzeitig weist das ITZBund / BMF darauf hin, dass die Werte per Default mit 0 initialisiert werden.
11+
12+
Entsprechend kommt es zu Abweichungen bei generierten Code nicht nur bei hiesiger Generierung sondern auch bei anderen getesteten Implementierungen.
13+
14+
Als Folge dessen ist unklar, ob die Ergebnisse der Webschnittstelle des BMF deren Ansprüche als Referenz zum testen des eigenes Quelltextes uneingeschränkt erfüllt. *Für meine Zielsetzung ist dies jedoch nicht weiter relevant.*
415

516
## License
617

@@ -12,7 +23,7 @@ The generated source is **not** under this license.
1223
## CLI
1324

1425
```bash
15-
swift run -c release BMF2Code --lang=Java -o test.txt ./Tests/LStXML2CodeTests/xml/Lohnsteuer2023AbJuli.xml
26+
swift run -c release BMF2Code --lang=Swift -o AnswerIs42.swift ./Tests/LStXML2CodeTests/xml/Lohnsteuer2023AbJuli.xml
1627
```
1728

18-
Do not run in DEBUG mode.
29+
**Bei der Ausführung im Debug Modus werden Zusatzangaben ausgegeben, so das der Quelltext nicht ohne Anpassungen kompilierbar ist.

Tests/LStXML2CodeTests/LStXML2CodeTests.swift

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,13 @@ import XCTest
33

44
import JavApi
55

6+
67
// Coverage: 89.8 %
78

89
/// Business object test case
9-
/// - Note Code coverage 89.8%
10+
/// - Note: Code coverage 89.8%
11+
/// - Note: Die BMF Webschnittstelle ist nicht vollständig und korrekt implementiert. Wenn nicht anders gesetzt wird LZZ mit Wert 4 angenommen und nicht geprüft (Wert 1234 wird auch als gültig betrachtet). Die STKL wird mit 1 angenommen. In der textuellen Beschreibung wird hingegen z.B. vorgeschrieben, dass LZZ nur 1-4 sein darf. Gleichzeitig weist das ITZBund / BMF darauf hin, dass die Werte per Default mit 0 initialisiert werden.
12+
/// Entsprechend kommt es zu Abweichungen bei generierten Code nicht nur bei hiesiger Generierung sondern auch bei anderen getesteten Implemntierungen.
1013
final class LStXML2CodeTests: XCTestCase {
1114

1215

@@ -713,6 +716,8 @@ final class LStXML2CodeTests: XCTestCase {
713716
XCTAssertEqual(calculator.WVFRBM, 0)
714717
}
715718

719+
720+
716721
// https://www.bmf-steuerrechner.de/interface/2023AbJuliVersion1.xhtml?code=ext2023&AJAHR=1&RE4=12345699&LZZ=1&VJAHR=2006&VKAPA=1000000
717722
func testLZZ1VJAHR2006VKAPA1000000() throws {
718723
let calculator = Lohnsteuer2023AbJuliBig(
@@ -1001,6 +1006,36 @@ final class LStXML2CodeTests: XCTestCase {
10011006
XCTAssertEqual(calculator.WVFRBO, 0)
10021007
XCTAssertEqual(calculator.WVFRBM, 0)
10031008
}
1009+
// https://www.bmf-steuerrechner.de/interface/2023AbJuliVersion1.xhtml?code=ext2023&SONSTB=-100000&STS=-200000&RE4=22345
1010+
func testSTSminus() throws {
1011+
let calculator = Lohnsteuer2023AbJuliBig(
1012+
RE4: java.math.BigDecimal.valueOf("22345")!,
1013+
SONSTB: java.math.BigDecimal(-100000) // Cent
1014+
)
1015+
calculator.STS = java.math.BigDecimal(-200000) // Cent
1016+
1017+
calculator.MAIN()
1018+
1019+
// must be set
1020+
XCTAssertEqual(calculator.VFRB, 123000)
1021+
XCTAssertEqual(calculator.LSTLZZ, 4990)
1022+
XCTAssertEqual(calculator.WVFRB, 5561500)
1023+
XCTAssertEqual(calculator.SOLZLZZ, 13)
1024+
XCTAssertEqual(calculator.VFRBS2, 0)
1025+
// must be zero
1026+
XCTAssertEqual(calculator.BK, 0)
1027+
XCTAssertEqual(calculator.BKS, 0)
1028+
XCTAssertEqual(calculator.BKV, 0)
1029+
XCTAssertEqual(calculator.SOLZS, 0)
1030+
XCTAssertEqual(calculator.SOLZV, 0)
1031+
XCTAssertEqual(calculator.STS, 0)
1032+
XCTAssertEqual(calculator.STV, 0)
1033+
XCTAssertEqual(calculator.VKVLZZ, 0)
1034+
XCTAssertEqual(calculator.VKVSONST, 0)
1035+
XCTAssertEqual(calculator.VFRBS1, 0)
1036+
XCTAssertEqual(calculator.WVFRBO, 0)
1037+
XCTAssertEqual(calculator.WVFRBM, 0)
1038+
}
10041039

10051040
// https://www.bmf-steuerrechner.de/interface/2023AbJuliVersion1.xhtml?code=ext2023&STKL=5&SONSTB=100000&STS=200000&RE4=22345
10061041
func testSTKL5STS() throws {

0 commit comments

Comments
 (0)