[Lohnrechner-commits] r81 - trunk

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Wed Feb 11 12:04:42 CET 2009


Author: frank
Date: 2009-02-11 12:04:42 +0100 (Wed, 11 Feb 2009)
New Revision: 81

Modified:
   trunk/LST2008.py
   trunk/lohnrechner.py
Log:
Sonstige Bezuege grundsaetzlich eingebunden, aber in der Eingabe deaktiviert.


Modified: trunk/LST2008.py
===================================================================
--- trunk/LST2008.py	2008-07-07 10:17:48 UTC (rev 80)
+++ trunk/LST2008.py	2009-02-11 11:04:42 UTC (rev 81)
@@ -856,6 +856,18 @@
         """Liefert Lohn in Euro.Cent"""
         return self.RE4 / 100.0
 
+    def GetLohnGesamt(self):
+        """Liefert Summe Arbeitslohn und sonstige Bezüge."""
+        return (self.RE4 + self.SONSTB) / 100.0
+
+    def SetSonstigeBezuege(self, sonstbez):
+        """Setzt Sonstige Bezüge in Euro.Cent"""
+        self.Set_SONSTB(round(sonstbez * 100.0))
+
+    def GetSonstigeBezuege(self):
+        """Setzt Sonstige Bezüge in Euro.Cent"""
+        return self.SONSTB / 100.0
+
     def SetZeitraum(self, lzz):
         """Setzt Berechnungszeitraum (JAHR, MONAT, WOCHE, TAG)"""
         self.Set_LZZ(lzz)
@@ -891,13 +903,26 @@
         return self.ZFK
 
     def GetLohnsteuer(self):
-        """Liefert Lohnsteuer in Euro.Cent"""
+        """Liefert Lohnsteuer für Lohnzahlungszeitraum in Euro.Cent"""
         return round(self.LSTLZZ / 100, 2)
 
+    def GetLohnsteuerGesamt(self):
+        """Gesamte Lohnsteuer auf Basis des Zahlungszeitraumes in Euro.Cent"""
+        return round((self.LSTLZZ + self.STS + self.STV) / 100, 2)
+
     def GetSoli(self):
-        """Liefert Solidaritätszuschlag in Euro.Cent"""
+        """Liefert Solidaritätszuschlag für Lohnzahlungszeitraum in Euro.Cent"""
         return FixedPointFloor(self.SOLZLZZ / 100, 2)
 
+    def GetSoliGesamt(self):
+        """Gesamten Solidaritätszuschlag auf Basis des ZZ in Euro.Cent"""
+        return FixedPointFloor((self.SOLZLZZ + self.SOLZS + self.SOLZV)/ 100, 2)
+
     def GetKirchensteuer(self):
-        """Liefert Kirchensteuer in Euro.Cent"""
+        """Liefert Kirchensteuer für Lohnzahlungszeitraum in Euro.Cent"""
         return FixedPointFloor(self.BK * self.R / 10000, 2)
+
+    def GetKirchensteuerGesamt(self):
+        """Gesamte Kirchensteuer auf Basis des ZZ in Euro.Cent"""
+        return FixedPointFloor((self.BK + self.BKS + self.BKV) \
+                                    * self.R / 10000, 2)

Modified: trunk/lohnrechner.py
===================================================================
--- trunk/lohnrechner.py	2008-07-07 10:17:48 UTC (rev 80)
+++ trunk/lohnrechner.py	2009-02-11 11:04:42 UTC (rev 81)
@@ -73,10 +73,20 @@
         self.lohn.bind("<Return>", self.NewInput)
         self.lohn.grid(row=1, column=1, sticky=W)
 
-        Label(frame, text="Steuerklasse:").grid(row=2, sticky=E)
+        sonstbezlabel = Label(frame, text="Sonstige Bezüge:")
+        self.sonstbez = Entry(frame)
+        self.sonstbez.bind("<Return>", self.NewInput)
+        # Sonstige Bezuege bisher nur unter Randbedingungen:
+        # - Einmalig im Kalenderjahr
+        # - Keine Berücksichtigung bei der Berechnung Sozialbeiträge
+        # Daher per Vorgabe "versteckt", bei Bedarf einfuegen:
+        # sonstbezlabel.grid(row=2, sticky=E)
+        # self.sonstbez.grid(row=2, column=1, sticky=W)
+        
+        Label(frame, text="Steuerklasse:").grid(row=3, sticky=E)
         self.stkl = IntVar()
         stklframe = Frame(frame)
-        stklframe.grid(row=2, column=1, sticky=W)
+        stklframe.grid(row=3, column=1, sticky=W)
         for text, val in [("I", 1),
                           ("II", 2),
                           ("III", 3),
@@ -90,24 +100,24 @@
                 stklradio.select()
             stklradio.pack(side=LEFT)
 
-        Label(frame, text="Kirchensteuer:").grid(row=3, sticky=E)
+        Label(frame, text="Kirchensteuer:").grid(row=4, sticky=E)
         self.kirche = IntVar()
         Checkbutton(frame, onvalue=1, offvalue=0, command=self.NewInput,
-                    variable=self.kirche).grid(row=3, column=1,sticky=W)
+                    variable=self.kirche).grid(row=4, column=1,sticky=W)
 
-        Label(frame, text="Kinderfreibetrag:").grid(row=4, sticky=E)
+        Label(frame, text="Kinderfreibetrag:").grid(row=5, sticky=E)
         self.kfb = Entry(frame)
         self.kfb.bind("<Return>", self.NewInput)
-        self.kfb.grid(row=4, column=1, sticky=W)
+        self.kfb.grid(row=5, column=1, sticky=W)
 
-        Label(frame, text="Kinder:").grid(row=5, sticky=E)
+        Label(frame, text="Kinder:").grid(row=6, sticky=E)
         self.kinder = IntVar()
         self.kinderradio = Checkbutton(frame, onvalue=1, offvalue=0,
                                        command=self.NewInput,
                                        variable=self.kinder)
-        self.kinderradio.grid(row=5, column=1, sticky=W)
+        self.kinderradio.grid(row=6, column=1, sticky=W)
         
-        Label(frame, text="Bundesland:").grid(row=6, sticky=NE)
+        Label(frame, text="Bundesland:").grid(row=7, sticky=NE)
         landframe = Frame(frame)
         scrollbar = Scrollbar(landframe, orient=VERTICAL)
         self.landbox = Listbox(landframe, height=4, selectmode=SINGLE,
@@ -119,7 +129,7 @@
         self.landbox.pack(side=RIGHT, fill=Y)
         scrollbar.config(command=self.landbox.yview)
         scrollbar.pack(side=LEFT, fill=BOTH, expand=1)
-        landframe.grid(row=6, rowspan=4, column=1, sticky=W)
+        landframe.grid(row=7, rowspan=4, column=1, sticky=W)
         
         Label(frame, text="Lohnsteuer:").grid(row=0, column=2, sticky=E)
         self.lst = Entry(frame)
@@ -138,24 +148,24 @@
         self.netto1.grid(row=3, column=3, sticky=W)
 
         # Sozialversicherung Ein/Ausgabe
-        Label(frame, text="Sozialversicherung:").grid(row=10, sticky=E)
+        Label(frame, text="Sozialversicherung:").grid(row=11, sticky=E)
         self.sozv = IntVar()
         sozvradio = Checkbutton(frame, onvalue=1, offvalue=0,
                                 command=self.NewInput, variable=self.sozv)
         sozvradio.select()
-        sozvradio.grid(row=10, column=1, sticky=W)
+        sozvradio.grid(row=11, column=1, sticky=W)
 
-        Label(frame, text="Krankenkassenbeitrag:").grid(row=11, sticky=E)
+        Label(frame, text="Krankenkassenbeitrag:").grid(row=12, sticky=E)
         self.kvsatz = Entry(frame)
         self.kvsatz.bind("<Return>", self.NewInput)
-        self.kvsatz.grid(row=11, column=1, sticky=W)
+        self.kvsatz.grid(row=12, column=1, sticky=W)
 
-        Label(frame, text="Krankenkassenzuschlag (0.9%):").grid(row=12, sticky=E)
+        Label(frame, text="Krankenkassenzuschlag (0.9%):").grid(row=13, sticky=E)
         self.kvsoli = IntVar()
         kvsoliradio = Checkbutton(frame, onvalue=1, offvalue=0,
                                   command=self.NewInput, variable=self.kvsoli)
         kvsoliradio.select()
-        kvsoliradio.grid(row=12, column=1, sticky=W)
+        kvsoliradio.grid(row=13, column=1, sticky=W)
 
 
         Label(frame, text="Rentenversicherung:").grid(row=4, column=2, sticky=E)
@@ -207,6 +217,7 @@
     def ResetInput(self):
         self.ResetInputGeb()
         self.ResetInputLohn()
+        self.ResetInputSonstBez()
         self.ResetInputKfb()
         self.ResetInputKVsatz()
         self.NewLandSel()
@@ -219,6 +230,10 @@
         self.lohn.delete(0, END)
         self.lohn.insert(0, "0")
 
+    def ResetInputSonstBez(self):
+        self.sonstbez.delete(0, END)
+        self.sonstbez.insert(0, "0")
+
     def ResetInputKfb(self):
         self.kfb.delete(0, END)
         self.kfb.insert(0, "0")
@@ -234,6 +249,24 @@
             self.ResetInputLohn()
 
         try:
+            self.SetSonstigeBezuege(float(self.sonstbez.get()))
+        except:
+            self.ResetInputSonstBez()
+
+        # JRE4: Nötig für Sonstige Bezüge. 
+        # Voraussichtlicher Jahresarbeitslohn ohne sonstige Bezüge und ohne
+        # Vergütung für mehrjährige Tätigkeit in Cent (ggf. 0)
+        # lohnrechner berechnet diesen aus dem monatlichen Lohn.
+        try:
+            self.Set_JRE4(round(float(self.lohn.get())*100.0,2)*12)
+        except:
+            pass
+
+        # JVBEZ: Nötig für Sonstige Bezüge. 
+        # lohnrechner berücksichtigt keine Versorgungsbezüge, daher 0.
+        self.Set_JVBEZ(0)
+
+        try:
             self.SetGeb(int(self.geb.get()))
         except:
             self.ResetInputGeb()
@@ -256,13 +289,14 @@
         self.InitCalc()
         self.Calc()
         self.lst.delete(0, END)
-        self.lst.insert(0, "%.2f" % self.GetLohnsteuer())
+        self.lst.insert(0, "%.2f" % self.GetLohnsteuerGesamt())
         self.soli.delete(0, END)
-        self.soli.insert(0, "%.2f" % self.GetSoli())
+        self.soli.insert(0, "%.2f" % self.GetSoliGesamt())
         self.kist.delete(0, END)
-        self.kist.insert(0, "%.2f" % self.GetKirchensteuer())
-        netto1 = self.GetLohn() - self.GetLohnsteuer() \
-                 - self.GetSoli() - self.GetKirchensteuer()
+        self.kist.insert(0, "%.2f" % self.GetKirchensteuerGesamt())
+        netto1 = self.GetLohn() + self.GetSonstigeBezuege() \
+                 - self.GetLohnsteuerGesamt() \
+                 - self.GetSoliGesamt() - self.GetKirchensteuerGesamt()
         self.netto1.delete(0, END)
         self.netto1.insert(0, "%.2f" % netto1)
         self.rv.delete(0, END)
@@ -312,20 +346,20 @@
         self.KVsatz = (value / 100.0)
 
     def GetAV(self):
-        lohn = self.GetLohn()
+        lohn = self.GetLohnGesamt() 
         BMG2 = self.laender[self.land][3]
         if lohn > BMG2 : lohn = BMG2
         return round(self.sozv.get() * self.AVsatz * lohn, 2)
 
     def GetRV(self):
-        lohn = self.GetLohn()
+        lohn = self.GetLohnGesamt()
         BMG2 = self.laender[self.land][3]
         if lohn > BMG2 : lohn = BMG2
         return round(self.sozv.get() * self.RVsatz * lohn, 2)
 
     def GetPV(self):
         self.PVsatz = self.laender[self.land][2]
-        lohn = self.GetLohn()
+        lohn = self.GetLohnGesamt()
         if lohn > self.BMG1 : lohn = self.BMG1
         PV =  self.PVsatz * lohn
         if self.kinder.get() == 0 :
@@ -334,7 +368,7 @@
 
     def GetKV(self):
         self.KVsoli = self.kvsoli.get()
-        lohn = self.GetLohn()
+        lohn = self.GetLohnGesamt()
         if lohn > self.BMG1 : lohn = self.BMG1
         if self.KVsoli :
             return round(self.sozv.get() * ((self.KVsatz / 2) + 0.009) * lohn, 2)



More information about the Lohnrechner-commits mailing list