[Lohnrechner-commits] r67 - trunk

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Thu Jan 25 12:13:09 CET 2007


Author: wilde
Date: 2007-01-25 12:13:08 +0100 (Thu, 25 Jan 2007)
New Revision: 67

Modified:
   trunk/LST2007.py
   trunk/lohnrechner.py
Log:
Anpassungen f?\195?\188r 2007 gem?\195?\164?\195?\159 neuem Programmablaufplan.


Modified: trunk/LST2007.py
===================================================================
--- trunk/LST2007.py	2007-01-25 10:26:33 UTC (rev 66)
+++ trunk/LST2007.py	2007-01-25 11:13:08 UTC (rev 67)
@@ -1,10 +1,10 @@
 # -*- coding: iso-8859-1 -*-
 # --------------------------------------------------------------------
-# LST2006 -- Python Modul zur Berechnung der Deutschen Lohnsteuer 2006
+# LST2007 -- Python Modul zur Berechnung der Deutschen Lohnsteuer 2007
 # $Id$
 # --------------------------------------------------------------------
 #
-# Copyright (c) 2005, 2006 by Intevation GmbH
+# Copyright (c) 2005, 2006, 2007 by Intevation GmbH
 # Authors:
 # Sascha Wilde <wilde at intevation.de>
 #
@@ -410,14 +410,18 @@
             self._ZRE4 = FixedPointFloor((self._RE4LZZ + 0.56) * 3.6)
             self._ZRE4VP = FixedPointFloor((self._RE4LZZV + 0.56) * 3.6)
             self._ZVBEZ = FixedPointFloor((self.VBEZ - self._FVB + 0.56) * 3.6)
-        if self._ZRE4 < 0:
+        if self._RE4LZZ < 0:
             self._ZRE4 = 0.0
-        if self._ZVBEZ < 0:
-            self._ZVBEZ = 0.0
+        if self._RE4LZZV < 0:
+            self._ZRE4VP = 0.0
+        if (self.VBEZ == 0) and (self._FVB == 0):
+            self._ZVBEZ = 0
+        elif (self.VBEZ - self._FVB) < 0:
+            self._ZVBEZ = 0
 
     def _MZTABFB(self):
         self._ANP = 0
-        if (self._ZVBEZ > 0) and (self._ZVBEZ < self._FVBZ):
+        if (self._ZVBEZ >= 0) and (self._ZVBEZ < self._FVBZ):
             self._FVBZ = self._ZVBEZ
         if (self.STKL < 6) and (self._ZVBEZ > 0):
             if (self._ZVBEZ - self._FVBZ) < 102:
@@ -459,7 +463,7 @@
         else:
             self._X = floor(float(self._ZVE) / self._KZTAB)
         if self.STKL < 5:
-            self._UPTAB05()
+            self._UPTAB07()
         else:
             self._MST5_6()
 
@@ -469,8 +473,8 @@
         else:
             if self._ZRE4VP > 63000:
                 self._ZRE4VP = 63000
-            self._VSP1 = 0.24 * self._ZRE4VP
-            self._VSP1 = FixedPointFloor(self._VSP1 * 0.0975)
+            self._VSP1 = 0.28 * self._ZRE4VP
+            self._VSP1 = FixedPointFloor(self._VSP1 * 0.0995)
         self._VSP2 = FixedPointFloor(0.11 * self._ZRE4VP)
         self._VHB = 1500 * self._KZTAB
         if self._VSP2 > self._VHB:
@@ -493,7 +497,7 @@
             if self._VSPO > self._VSPKURZ:
                 self._VSP = self._VSPKURZ
             else:
-                self._VSP = ceil(self._VSPO)
+                self._VSP = floor(self._VSPO)
         else:
             self._UMVSP()
 
@@ -511,20 +515,24 @@
                 self._VSP += self._VSPMAX1
                 self._VSPREST = FixedPointCeil((self._VSPREST - self._VSPMAX1) / 2.0)
                 if self._VSPREST > self._VSPMAX2:
-                    self._VSP = ceil(self._VSP + self._VSPMAX2)
+                    self._VSP = floor(self._VSP + self._VSPMAX2)
                 else:
-                    self._VSP = ceil(self._VSP + self._VSPREST)
+                    self._VSP = floor(self._VSP + self._VSPREST)
             else:
-                self._VSP = ceil(self._VSP + self._VSPREST)
+                self._VSP = floor(self._VSP + self._VSPREST)
         else:
-            self._VSP = ceil(self._VSPO)
+            self._VSP = floor(self._VSPO)
 
     def _MST5_6(self):
         self._ZZX = self._X
         if self._ZZX > 25812:
             self._ZX = 25812
             self._UP5_6()
-            self._ST = floor(self._ST + (self._ZZX - 25812) * 0.42)
+            if self._ZZX > 200000:
+                self._ST = self._ST + (200000 - 25812) * 0.42
+                self._ST = floor(self._ST + (self._ZZX - 200000) * 0.45)
+            else:
+                self._ST = floor(self._ST + (self._ZZX - 25812) * 0.42)
         else:
             self._ZX = self._ZZX
             self._UP5_6()
@@ -540,10 +548,10 @@
 
     def _UP5_6(self):
         self._X = self._ZX * 1.25
-        self._UPTAB05()
+        self._UPTAB07()
         self._ST1 = self._ST
         self._X = self._ZX * 0.75
-        self._UPTAB05()
+        self._UPTAB07()
         self._ST2 = self._ST
         self._DIFF = (self._ST1 - self._ST2) * 2
         self._MIST = floor(self._ZX * 0.15)
@@ -585,7 +593,7 @@
             self._ANTEIL1 = floor(self._JW / 360.0)
             self._ANTEIL2 = ceil(self._JW / 360.0)
 
-    def _UPTAB05(self):
+    def _UPTAB07(self):
         if self._X < 7665:
             self._ST = 0
         elif self._X < 12740:
@@ -599,12 +607,18 @@
             self._RW += 2397
             self._RW *= self._Y
             self._ST = floor(self._RW + 989)
+        elif self._X < 250001:
+            self._ST = floor(self._X * 0.42 - 7914)
         else:
-            self._ST = floor(self._X * 0.42 - 7914)
+            self._ST = floor(self._X * 0.45 - 15414)
         self._ST *= self._KZTAB
 
     def _MSONST(self):
-        if self.SONSTB > 0:
+        if self.SONSTB == 0:
+            self.STS = 0
+            self.SOLZS = 0
+            self.BKS = 0
+        else:
             # ------------------------------
             # Nicht im offiziellen Programm-
             # ablaufplan: Attribute sichern
@@ -627,6 +641,8 @@
             self._MLSTJAHR()
             self._LST2 = self._ST * 100
             self.STS = self._LST2 - self._LST1
+            if (self.SONSTB > 0) and (self.STS < 0):
+                self.STS = 0
             self.SOLZS = floor(self.STS * 5.5 / 100)
             if self.R > 0:
                 self.BKS = self.STS
@@ -640,10 +656,6 @@
             self.VBEZ = old_vbez
             self.RE4 = old_re4
             # ------------------------------
-        else:
-            self.STS = 0
-            self.SOLZS = 0
-            self.BKS = 0
 
     def _MRE4LZZ2(self):
         self._RE4LZZ = self.RE4 - self._FVB - self._ALTE \
@@ -660,6 +672,8 @@
         old_vbez = self.VBEZ
         old_re4 = self.RE4
         # ------------------------------
+        if self.VKAPA < 0:
+            self.VKAPA = 0
         if (self.VMT + self.VKAPA) > 0:
             self.LZZ = 1
             self.VBEZ = self.JVBEZ + self.VBS
@@ -679,6 +693,7 @@
             self._MLSTJAHR()
             self._LST3 = self._ST * 100
             self.VBEZ = self.VBEZ - self.VKAPA
+            self.VBEZS = self.VBEZS - self.VKAPA
             self.RE4 = self.JRE4 + self.SONSTB
             self._MRE4LZZ()
             if (self.RE4 - self.JFREIB + self.JHINZU) < 0:
@@ -813,14 +828,14 @@
 # Berechnungen, es fehlen insbesondere die Berechnungen zu Mehrjährigen
 # Bezügen und Sonstigen Leistungen.
 
-class LStRechner2006(LST):
+class LStRechner2007(LST):
     def __init__(self):
         LST.__init__(self)
 
     def SetGeb(self, geb):
         """Setzt das Geburtsjahr"""
         self.Set_AJAHR(geb + 65)
-        if self.AJAHR <= 2006:
+        if self.AJAHR <= 2007:
             self.Set_ALTER1(1)
         else:
             self.Set_ALTER1(0)

Modified: trunk/lohnrechner.py
===================================================================
--- trunk/lohnrechner.py	2007-01-25 10:26:33 UTC (rev 66)
+++ trunk/lohnrechner.py	2007-01-25 11:13:08 UTC (rev 67)
@@ -5,27 +5,27 @@
 # $Id$
 # --------------------------------------------------------------------
 #
-# Copyright (c) 2005,2006 by Intevation GmbH
+# Copyright (c) 2005,2006,2007 by Intevation GmbH
 # Authors:
 # Sascha Wilde <wilde at intevation.de>
 #
 # This program is free software under the GPL (>=v2)
 # Read the file COPYING coming with this package for details.
 
-"""Lohn/Gehaltsrechner für das Jahr 2006"""
+"""Lohn/Gehaltsrechner für das Jahr 2007"""
 
 __version__ = "$Revision$"
 # $Source$
         
 _release_version = "0.%s" % __version__[11:-2]
 
-import LST2006
+import LST2007
 from Tkinter import *
 
-class Lohnrechner(LST2006.LStRechner2006):
+class Lohnrechner(LST2007.LStRechner2007):
 
     def __init__(self, root):
-        LST2006.LStRechner2006.__init__(self)
+        LST2007.LStRechner2007.__init__(self)
 
         # Land, Kirchensteuersatz, Pflegeversicherung AG-Anteil
         self.laender = [("Baden-Württemberg", 8, 0.0085),
@@ -48,7 +48,7 @@
         
         self.root = root
 
-        self.root.title("Lohnrechner 2006 - v%s" % _release_version)
+        self.root.title("Lohnrechner 2007 - v%s" % _release_version)
 
         self.SetupUI()
         self.UpdateLand()
@@ -271,15 +271,15 @@
     def Info(self):
         infowin = Toplevel(self.root)
         infowin.title("Info")
-        Label(infowin, text="Lohnrechner 2006 v%s" % _release_version, 
+        Label(infowin, text="Lohnrechner 2007 v%s" % _release_version, 
               font=("Times", 14, "bold italic")).grid(row=0, pady=20)
         Label(infowin, text=
-              "Copyright (C) 2005,2006 Intevation GmbH \n\n\
-Lohnrechner 2006 comes with ABSOLUTELY NO WARRANTY.\n\
+              "Copyright (C) 2005,2006,2007 Intevation GmbH \n\n\
+Lohnrechner 2007 comes with ABSOLUTELY NO WARRANTY.\n\
 This is free software, and you are welcome to redistribute it\n\
 under the terms of the GNU General Public License.\n\
 For more information about these matters, see the file named COPYING.\n\n\
-Dieses Programm verwendet LST2006 %s" % LST2006._ModulVersion()).grid(row=1, padx=10)
+Dieses Programm verwendet LST2007 %s" % LST2007._ModulVersion()).grid(row=1, padx=10)
         Button(infowin, text="Ok", command=infowin.destroy).grid(row=2, pady=10)
 
     #



More information about the Lohnrechner-commits mailing list