--- lohnrechner.py 2005/11/02 08:56:13 41 +++ trunk/lohnrechner.py 2006/03/24 11:28:43 60 @@ -5,27 +5,27 @@ # $Id$ # -------------------------------------------------------------------- # -# Copyright (c) 2005 by Intevation GmbH +# Copyright (c) 2005,2006 by Intevation GmbH # Authors: # Sascha Wilde # # 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 2005""" +"""Lohn/Gehaltsrechner für das Jahr 2006""" __version__ = "$Revision$" # $Source$ -_release_version = "0.%s beta" % __version__[11:-2] +_release_version = "0.%s" % __version__[11:-2] -import LST2005 +import LST2006 from Tkinter import * -class Lohnrechner(LST2005.LStRechner2005): +class Lohnrechner(LST2006.LStRechner2006): def __init__(self, root): - LST2005.LStRechner2005.__init__(self) + LST2006.LStRechner2006.__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 2005 - v%s" % _release_version) + self.root.title("Lohnrechner 2006 - v%s" % _release_version) self.SetupUI() self.UpdateLand() @@ -62,15 +62,20 @@ frame.grid(padx=10, pady=10) # Steuern Ein/Ausgabe - Label(frame, text="Lohn (monatlich):").grid(row=0, sticky=E) + Label(frame, text="Geburtsjahr:").grid(row=0, sticky=E) + self.geb = Entry(frame) + self.geb.bind("", self.NewInput) + self.geb.grid(row=0, column=1, sticky=W) + + Label(frame, text="Lohn (monatlich):").grid(row=1, sticky=E) self.lohn = Entry(frame) self.lohn.bind("", self.NewInput) - self.lohn.grid(row=0, column=1, sticky=W) + self.lohn.grid(row=1, column=1, sticky=W) - Label(frame, text="Steuerklasse:").grid(row=1, sticky=E) + Label(frame, text="Steuerklasse:").grid(row=2, sticky=E) self.stkl = IntVar() stklframe = Frame(frame) - stklframe.grid(row=1, column=1, sticky=W) + stklframe.grid(row=2, column=1, sticky=W) for text, val in [("I", 1), ("II", 2), ("III", 3), @@ -84,17 +89,17 @@ stklradio.select() stklradio.pack(side=LEFT) - Label(frame, text="Kirchensteuer:").grid(row=2, sticky=E) + Label(frame, text="Kirchensteuer:").grid(row=3, sticky=E) self.kirche = IntVar() Checkbutton(frame, onvalue=1, offvalue=0, command=self.NewInput, - variable=self.kirche).grid(row=2, column=1,sticky=W) + variable=self.kirche).grid(row=3, column=1,sticky=W) - Label(frame, text="Kinderfreibetrag:").grid(row=3, sticky=E) + Label(frame, text="Kinderfreibetrag:").grid(row=4, sticky=E) self.kfb = Entry(frame) self.kfb.bind("", self.NewInput) - self.kfb.grid(row=3, column=1, sticky=W) + self.kfb.grid(row=4, column=1, sticky=W) - Label(frame, text="Bundesland:").grid(row=4, sticky=NE) + Label(frame, text="Bundesland:").grid(row=5, sticky=NE) landframe = Frame(frame) scrollbar = Scrollbar(landframe, orient=VERTICAL) self.landbox = Listbox(landframe, height=4, selectmode=SINGLE, @@ -106,7 +111,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=4, rowspan=4, column=1, sticky=W) + landframe.grid(row=5, rowspan=4, column=1, sticky=W) Label(frame, text="Lohnsteuer:").grid(row=0, column=2, sticky=E) self.lst = Entry(frame) @@ -125,17 +130,25 @@ self.netto1.grid(row=3, column=3, sticky=W) # Sozialversicherung Ein/Ausgabe - Label(frame, text="Sozialversicherung:").grid(row=8, sticky=E) + Label(frame, text="Sozialversicherung:").grid(row=9, sticky=E) self.sozv = IntVar() sozvradio = Checkbutton(frame, onvalue=1, offvalue=0, command=self.NewInput, variable=self.sozv) sozvradio.select() - sozvradio.grid(row=8, column=1, sticky=W) + sozvradio.grid(row=9, column=1, sticky=W) - Label(frame, text="Krankenkassenbeitrag:").grid(row=9, sticky=E) + Label(frame, text="Krankenkassenbeitrag:").grid(row=10, sticky=E) self.kvsatz = Entry(frame) self.kvsatz.bind("", self.NewInput) - self.kvsatz.grid(row=9, column=1, sticky=W) + self.kvsatz.grid(row=10, column=1, sticky=W) + + Label(frame, text="Krankenkassenzuschlag (0.9%):").grid(row=11, sticky=E) + self.kvsoli = IntVar() + kvsoliradio = Checkbutton(frame, onvalue=1, offvalue=0, + command=self.NewInput, variable=self.kvsoli) + kvsoliradio.select() + kvsoliradio.grid(row=11, column=1, sticky=W) + Label(frame, text="Rentenversicherung:").grid(row=4, column=2, sticky=E) self.rv = Entry(frame) @@ -160,7 +173,7 @@ # Allgemeine UI Elemente buttons = Frame(frame) - buttons.grid(row=9, column=2, columnspan=2) + buttons.grid(row=10, column=2, rowspan=2, columnspan=2) Button(buttons, text="Quit", command=self.root.quit).pack(side=LEFT) Button(buttons, text="Info", command=self.Info).pack(side=LEFT) Button(buttons, text="Berechnen", command=self.CalcOutput).pack(side=LEFT) @@ -182,11 +195,16 @@ self.CalcOutput() def ResetInput(self): + self.ResetInputGeb() self.ResetInputLohn() self.ResetInputKfb() self.ResetInputKVsatz() self.NewLandSel() + def ResetInputGeb(self): + self.geb.delete(0, END) + self.geb.insert(0, "1964") + def ResetInputLohn(self): self.lohn.delete(0, END) self.lohn.insert(0, "0") @@ -197,7 +215,7 @@ def ResetInputKVsatz(self): self.kvsatz.delete(0, END) - self.kvsatz.insert(0, "14.7") + self.kvsatz.insert(0, "13.8") def InitCalc(self): try: @@ -206,6 +224,11 @@ self.ResetInputLohn() try: + self.SetGeb(int(self.geb.get())) + except: + self.ResetInputGeb() + + try: self.SetKinderfreibetrag(float(self.kfb.get())) except: self.ResetInputKfb() @@ -248,15 +271,15 @@ def Info(self): infowin = Toplevel(self.root) infowin.title("Info") - Label(infowin, text="Lohnrechner 2005 v%s" % _release_version, + Label(infowin, text="Lohnrechner 2006 v%s" % _release_version, font=("Times", 14, "bold italic")).grid(row=0, pady=20) Label(infowin, text= - "Copyright (C) 2005 Intevation GmbH \n\n\ -Lohnrechner 2005 comes with ABSOLUTELY NO WARRANTY.\n\ + "Copyright (C) 2005,2006 Intevation GmbH \n\n\ +Lohnrechner 2006 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 LST2005 %s" % LST2005._ModulVersion()).grid(row=1, padx=10) +Dieses Programm verwendet LST2006 %s" % LST2006._ModulVersion()).grid(row=1, padx=10) Button(infowin, text="Ok", command=infowin.destroy).grid(row=2, pady=10) # @@ -298,8 +321,7 @@ return round(self.sozv.get() * PV, 2) def GetKV(self): - # KVsoli should be setable by the UI - self.KVsoli = 1 + self.KVsoli = self.kvsoli.get() lohn = self.GetLohn() if lohn > self.BMG1 : lohn = self.BMG1 if self.KVsoli :