/[lohnrechner]/trunk/LST2008.py
ViewVC logotype

Diff of /trunk/LST2008.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 66 by wilde, Thu Jan 25 08:19:44 2007 UTC revision 67 by wilde, Thu Jan 25 11:13:08 2007 UTC
# Line 1  Line 1 
1  # -*- coding: iso-8859-1 -*-  # -*- coding: iso-8859-1 -*-
2  # --------------------------------------------------------------------  # --------------------------------------------------------------------
3  # LST2006 -- Python Modul zur Berechnung der Deutschen Lohnsteuer 2006  # LST2007 -- Python Modul zur Berechnung der Deutschen Lohnsteuer 2007
4  # $Id$  # $Id$
5  # --------------------------------------------------------------------  # --------------------------------------------------------------------
6  #  #
7  # Copyright (c) 2005, 2006 by Intevation GmbH  # Copyright (c) 2005, 2006, 2007 by Intevation GmbH
8  # Authors:  # Authors:
9  # Sascha Wilde <[email protected]>  # Sascha Wilde <[email protected]>
10  #  #
# Line 410  class LST: Line 410  class LST:
410              self._ZRE4 = FixedPointFloor((self._RE4LZZ + 0.56) * 3.6)              self._ZRE4 = FixedPointFloor((self._RE4LZZ + 0.56) * 3.6)
411              self._ZRE4VP = FixedPointFloor((self._RE4LZZV + 0.56) * 3.6)              self._ZRE4VP = FixedPointFloor((self._RE4LZZV + 0.56) * 3.6)
412              self._ZVBEZ = FixedPointFloor((self.VBEZ - self._FVB + 0.56) * 3.6)              self._ZVBEZ = FixedPointFloor((self.VBEZ - self._FVB + 0.56) * 3.6)
413          if self._ZRE4 < 0:          if self._RE4LZZ < 0:
414              self._ZRE4 = 0.0              self._ZRE4 = 0.0
415          if self._ZVBEZ < 0:          if self._RE4LZZV < 0:
416              self._ZVBEZ = 0.0              self._ZRE4VP = 0.0
417            if (self.VBEZ == 0) and (self._FVB == 0):
418                self._ZVBEZ = 0
419            elif (self.VBEZ - self._FVB) < 0:
420                self._ZVBEZ = 0
421    
422      def _MZTABFB(self):      def _MZTABFB(self):
423          self._ANP = 0          self._ANP = 0
424          if (self._ZVBEZ > 0) and (self._ZVBEZ < self._FVBZ):          if (self._ZVBEZ >= 0) and (self._ZVBEZ < self._FVBZ):
425              self._FVBZ = self._ZVBEZ              self._FVBZ = self._ZVBEZ
426          if (self.STKL < 6) and (self._ZVBEZ > 0):          if (self.STKL < 6) and (self._ZVBEZ > 0):
427              if (self._ZVBEZ - self._FVBZ) < 102:              if (self._ZVBEZ - self._FVBZ) < 102:
# Line 459  class LST: Line 463  class LST:
463          else:          else:
464              self._X = floor(float(self._ZVE) / self._KZTAB)              self._X = floor(float(self._ZVE) / self._KZTAB)
465          if self.STKL < 5:          if self.STKL < 5:
466              self._UPTAB05()              self._UPTAB07()
467          else:          else:
468              self._MST5_6()              self._MST5_6()
469    
# Line 469  class LST: Line 473  class LST:
473          else:          else:
474              if self._ZRE4VP > 63000:              if self._ZRE4VP > 63000:
475                  self._ZRE4VP = 63000                  self._ZRE4VP = 63000
476              self._VSP1 = 0.24 * self._ZRE4VP              self._VSP1 = 0.28 * self._ZRE4VP
477              self._VSP1 = FixedPointFloor(self._VSP1 * 0.0975)              self._VSP1 = FixedPointFloor(self._VSP1 * 0.0995)
478          self._VSP2 = FixedPointFloor(0.11 * self._ZRE4VP)          self._VSP2 = FixedPointFloor(0.11 * self._ZRE4VP)
479          self._VHB = 1500 * self._KZTAB          self._VHB = 1500 * self._KZTAB
480          if self._VSP2 > self._VHB:          if self._VSP2 > self._VHB:
# Line 493  class LST: Line 497  class LST:
497              if self._VSPO > self._VSPKURZ:              if self._VSPO > self._VSPKURZ:
498                  self._VSP = self._VSPKURZ                  self._VSP = self._VSPKURZ
499              else:              else:
500                  self._VSP = ceil(self._VSPO)                  self._VSP = floor(self._VSPO)
501          else:          else:
502              self._UMVSP()              self._UMVSP()
503    
# Line 511  class LST: Line 515  class LST:
515                  self._VSP += self._VSPMAX1                  self._VSP += self._VSPMAX1
516                  self._VSPREST = FixedPointCeil((self._VSPREST - self._VSPMAX1) / 2.0)                  self._VSPREST = FixedPointCeil((self._VSPREST - self._VSPMAX1) / 2.0)
517                  if self._VSPREST > self._VSPMAX2:                  if self._VSPREST > self._VSPMAX2:
518                      self._VSP = ceil(self._VSP + self._VSPMAX2)                      self._VSP = floor(self._VSP + self._VSPMAX2)
519                  else:                  else:
520                      self._VSP = ceil(self._VSP + self._VSPREST)                      self._VSP = floor(self._VSP + self._VSPREST)
521              else:              else:
522                  self._VSP = ceil(self._VSP + self._VSPREST)                  self._VSP = floor(self._VSP + self._VSPREST)
523          else:          else:
524              self._VSP = ceil(self._VSPO)              self._VSP = floor(self._VSPO)
525    
526      def _MST5_6(self):      def _MST5_6(self):
527          self._ZZX = self._X          self._ZZX = self._X
528          if self._ZZX > 25812:          if self._ZZX > 25812:
529              self._ZX = 25812              self._ZX = 25812
530              self._UP5_6()              self._UP5_6()
531              self._ST = floor(self._ST + (self._ZZX - 25812) * 0.42)              if self._ZZX > 200000:
532                    self._ST = self._ST + (200000 - 25812) * 0.42
533                    self._ST = floor(self._ST + (self._ZZX - 200000) * 0.45)
534                else:
535                    self._ST = floor(self._ST + (self._ZZX - 25812) * 0.42)
536          else:          else:
537              self._ZX = self._ZZX              self._ZX = self._ZZX
538              self._UP5_6()              self._UP5_6()
# Line 540  class LST: Line 548  class LST:
548    
549      def _UP5_6(self):      def _UP5_6(self):
550          self._X = self._ZX * 1.25          self._X = self._ZX * 1.25
551          self._UPTAB05()          self._UPTAB07()
552          self._ST1 = self._ST          self._ST1 = self._ST
553          self._X = self._ZX * 0.75          self._X = self._ZX * 0.75
554          self._UPTAB05()          self._UPTAB07()
555          self._ST2 = self._ST          self._ST2 = self._ST
556          self._DIFF = (self._ST1 - self._ST2) * 2          self._DIFF = (self._ST1 - self._ST2) * 2
557          self._MIST = floor(self._ZX * 0.15)          self._MIST = floor(self._ZX * 0.15)
# Line 585  class LST: Line 593  class LST:
593              self._ANTEIL1 = floor(self._JW / 360.0)              self._ANTEIL1 = floor(self._JW / 360.0)
594              self._ANTEIL2 = ceil(self._JW / 360.0)              self._ANTEIL2 = ceil(self._JW / 360.0)
595    
596      def _UPTAB05(self):      def _UPTAB07(self):
597          if self._X < 7665:          if self._X < 7665:
598              self._ST = 0              self._ST = 0
599          elif self._X < 12740:          elif self._X < 12740:
# Line 599  class LST: Line 607  class LST:
607              self._RW += 2397              self._RW += 2397
608              self._RW *= self._Y              self._RW *= self._Y
609              self._ST = floor(self._RW + 989)              self._ST = floor(self._RW + 989)
610          else:          elif self._X < 250001:
611              self._ST = floor(self._X * 0.42 - 7914)              self._ST = floor(self._X * 0.42 - 7914)
612            else:
613                self._ST = floor(self._X * 0.45 - 15414)
614          self._ST *= self._KZTAB          self._ST *= self._KZTAB
615    
616      def _MSONST(self):      def _MSONST(self):
617          if self.SONSTB > 0:          if self.SONSTB == 0:
618                self.STS = 0
619                self.SOLZS = 0
620                self.BKS = 0
621            else:
622              # ------------------------------              # ------------------------------
623              # Nicht im offiziellen Programm-              # Nicht im offiziellen Programm-
624              # ablaufplan: Attribute sichern              # ablaufplan: Attribute sichern
# Line 627  class LST: Line 641  class LST:
641              self._MLSTJAHR()              self._MLSTJAHR()
642              self._LST2 = self._ST * 100              self._LST2 = self._ST * 100
643              self.STS = self._LST2 - self._LST1              self.STS = self._LST2 - self._LST1
644                if (self.SONSTB > 0) and (self.STS < 0):
645                    self.STS = 0
646              self.SOLZS = floor(self.STS * 5.5 / 100)              self.SOLZS = floor(self.STS * 5.5 / 100)
647              if self.R > 0:              if self.R > 0:
648                  self.BKS = self.STS                  self.BKS = self.STS
# Line 640  class LST: Line 656  class LST:
656              self.VBEZ = old_vbez              self.VBEZ = old_vbez
657              self.RE4 = old_re4              self.RE4 = old_re4
658              # ------------------------------              # ------------------------------
         else:  
             self.STS = 0  
             self.SOLZS = 0  
             self.BKS = 0  
659    
660      def _MRE4LZZ2(self):      def _MRE4LZZ2(self):
661          self._RE4LZZ = self.RE4 - self._FVB - self._ALTE \          self._RE4LZZ = self.RE4 - self._FVB - self._ALTE \
# Line 660  class LST: Line 672  class LST:
672          old_vbez = self.VBEZ          old_vbez = self.VBEZ
673          old_re4 = self.RE4          old_re4 = self.RE4
674          # ------------------------------          # ------------------------------
675            if self.VKAPA < 0:
676                self.VKAPA = 0
677          if (self.VMT + self.VKAPA) > 0:          if (self.VMT + self.VKAPA) > 0:
678              self.LZZ = 1              self.LZZ = 1
679              self.VBEZ = self.JVBEZ + self.VBS              self.VBEZ = self.JVBEZ + self.VBS
# Line 679  class LST: Line 693  class LST:
693              self._MLSTJAHR()              self._MLSTJAHR()
694              self._LST3 = self._ST * 100              self._LST3 = self._ST * 100
695              self.VBEZ = self.VBEZ - self.VKAPA              self.VBEZ = self.VBEZ - self.VKAPA
696                self.VBEZS = self.VBEZS - self.VKAPA
697              self.RE4 = self.JRE4 + self.SONSTB              self.RE4 = self.JRE4 + self.SONSTB
698              self._MRE4LZZ()              self._MRE4LZZ()
699              if (self.RE4 - self.JFREIB + self.JHINZU) < 0:              if (self.RE4 - self.JFREIB + self.JHINZU) < 0:
# Line 813  class LST: Line 828  class LST:
828  # Berechnungen, es fehlen insbesondere die Berechnungen zu Mehrj�hrigen  # Berechnungen, es fehlen insbesondere die Berechnungen zu Mehrj�hrigen
829  # Bez�gen und Sonstigen Leistungen.  # Bez�gen und Sonstigen Leistungen.
830    
831  class LStRechner2006(LST):  class LStRechner2007(LST):
832      def __init__(self):      def __init__(self):
833          LST.__init__(self)          LST.__init__(self)
834    
835      def SetGeb(self, geb):      def SetGeb(self, geb):
836          """Setzt das Geburtsjahr"""          """Setzt das Geburtsjahr"""
837          self.Set_AJAHR(geb + 65)          self.Set_AJAHR(geb + 65)
838          if self.AJAHR <= 2006:          if self.AJAHR <= 2007:
839              self.Set_ALTER1(1)              self.Set_ALTER1(1)
840          else:          else:
841              self.Set_ALTER1(0)              self.Set_ALTER1(0)

Legend:
Removed from v.66  
changed lines
  Added in v.67

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26