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

Diff of /trunk/lohnrechner2007.py

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

trunk/RCS/lohnrechner.py revision 33 by wilde, Fri Feb 4 13:25:36 2005 UTC lohnrechner.py revision 54 by wilde, Wed Jan 25 11:43:04 2006 UTC
# Line 5  Line 5 
5  # $Id$  # $Id$
6  # --------------------------------------------------------------------  # --------------------------------------------------------------------
7  #  #
8  # Copyright (c) 2005 by Intevation GmbH  # Copyright (c) 2005,2006 by Intevation GmbH
9  # Authors:  # Authors:
10  # Sascha Wilde <[email protected]>  # Sascha Wilde <[email protected]>
11  #  #
12  # This program is free software under the GPL (>=v2)  # This program is free software under the GPL (>=v2)
13  # Read the file COPYING coming with this package for details.  # Read the file COPYING coming with this package for details.
14    
15  """Lohn/Gehaltsrechner f�r das Jahr 2005"""  """Lohn/Gehaltsrechner f�r das Jahr 2006"""
16    
17  __version__ = "$Revision$"  __version__ = "$Revision$"
18  # $Source$  # $Source$
19                    
20  _release_version = "0.%s beta" % __version__[11:-2]  _release_version = "0.%s beta" % __version__[11:-2]
21    
22  import LST2005  import LST2006
23  from Tkinter import *  from Tkinter import *
24    
25  class Lohnrechner(LST2005.LStRechner2005):  class Lohnrechner(LST2006.LStRechner2006):
26    
27      def __init__(self, root):      def __init__(self, root):
28          LST2005.LStRechner2005.__init__(self)          LST2006.LStRechner2006.__init__(self)
29    
30          # Land, Kirchensteuersatz          # Land, Kirchensteuersatz, Pflegeversicherung AG-Anteil
31          self.laender = [("Baden-W�rttemberg", 8),          self.laender = [("Baden-W�rttemberg", 8, 0.0085),
32                          ("Bayern", 8),                          ("Bayern", 8, 0.0085),
33                          ("Berlin", 9),                          ("Berlin", 9, 0.0085),
34                          ("Brandenburg", 9),                          ("Brandenburg", 9, 0.0085),
35                          ("Bremen", 9),                          ("Bremen", 9, 0.0085),
36                          ("Bremerhaven", 9),                          ("Bremerhaven", 9, 0.0085),
37                          ("Hamburg", 9),                          ("Hamburg", 9, 0.0085),
38                          ("Hessen", 9),                          ("Hessen", 9, 0.0085),
39                          ("Mecklenburg-Vorpommern", 9),                          ("Mecklenburg-Vorpommern", 9, 0.0085),
40                          ("Niedersachsen" ,9),                          ("Niedersachsen" ,9, 0.0085),
41                          ("Nordrhein-Westfalen", 9),                          ("Nordrhein-Westfalen", 9, 0.0085),
42                          ("Rheinland-Pfalz", 9),                          ("Rheinland-Pfalz", 9, 0.0085),
43                          ("Saarland", 9),                          ("Saarland", 9, 0.0085),
44                          ("Sachsen", 9),                          ("Sachsen", 9, 0.0135),
45                          ("Sachsen-Anhalt", 9),                          ("Sachsen-Anhalt", 9, 0.0085),
46                          ("Schleswig-Holstein", 9),                          ("Schleswig-Holstein", 9, 0.0085),
47                          ("Th�ringen", 9)]                          ("Th�ringen", 9, 0.0085)]
   
         self.InitSozv()  
48                    
49          self.root = root          self.root = root
50    
51          self.root.title("Lohnrechner 2005 - v%s" % _release_version)          self.root.title("Lohnrechner 2006 - v%s" % _release_version)
52    
53          self.SetupUI()          self.SetupUI()
54            self.UpdateLand()
55            self.InitSozv()
56          self.ResetInput()          self.ResetInput()
57    
58      def SetupUI(self):      def SetupUI(self):
# Line 62  class Lohnrechner(LST2005.LStRechner2005 Line 62  class Lohnrechner(LST2005.LStRechner2005
62          frame.grid(padx=10, pady=10)          frame.grid(padx=10, pady=10)
63    
64          # Steuern Ein/Ausgabe          # Steuern Ein/Ausgabe
65          Label(frame, text="Lohn:").grid(row=0, sticky=E)          Label(frame, text="Geburtsjahr:").grid(row=0, sticky=E)
66            self.geb = Entry(frame)
67            self.geb.bind("<Return>", self.NewInput)
68            self.geb.grid(row=0, column=1, sticky=W)
69    
70            Label(frame, text="Lohn (monatlich):").grid(row=1, sticky=E)
71          self.lohn = Entry(frame)          self.lohn = Entry(frame)
72          self.lohn.bind("<Return>", self.NewInput)          self.lohn.bind("<Return>", self.NewInput)
73          self.lohn.grid(row=0, column=1, sticky=W)          self.lohn.grid(row=1, column=1, sticky=W)
74    
75          Label(frame, text="Steuerklasse:").grid(row=1, sticky=E)          Label(frame, text="Steuerklasse:").grid(row=2, sticky=E)
76          self.stkl = IntVar()          self.stkl = IntVar()
77          stklframe = Frame(frame)          stklframe = Frame(frame)
78          stklframe.grid(row=1, column=1, sticky=W)          stklframe.grid(row=2, column=1, sticky=W)
79          for text, val in [("I", 1),          for text, val in [("I", 1),
80                            ("II", 2),                            ("II", 2),
81                            ("III", 3),                            ("III", 3),
# Line 84  class Lohnrechner(LST2005.LStRechner2005 Line 89  class Lohnrechner(LST2005.LStRechner2005
89                  stklradio.select()                  stklradio.select()
90              stklradio.pack(side=LEFT)              stklradio.pack(side=LEFT)
91    
92          Label(frame, text="Kirchensteuer:").grid(row=2, sticky=E)          Label(frame, text="Kirchensteuer:").grid(row=3, sticky=E)
93          self.kirche = IntVar()          self.kirche = IntVar()
94          Checkbutton(frame, onvalue=1, offvalue=0, command=self.NewInput,          Checkbutton(frame, onvalue=1, offvalue=0, command=self.NewInput,
95                      variable=self.kirche).grid(row=2, column=1,sticky=W)                      variable=self.kirche).grid(row=3, column=1,sticky=W)
96    
97          Label(frame, text="Kinderfreibetrag:").grid(row=3, sticky=E)          Label(frame, text="Kinderfreibetrag:").grid(row=4, sticky=E)
98          self.kfb = Entry(frame)          self.kfb = Entry(frame)
99          self.kfb.bind("<Return>", self.NewInput)          self.kfb.bind("<Return>", self.NewInput)
100          self.kfb.grid(row=3, column=1, sticky=W)          self.kfb.grid(row=4, column=1, sticky=W)
101    
102          Label(frame, text="Bundesland:").grid(row=4, sticky=NE)          Label(frame, text="Bundesland:").grid(row=5, sticky=NE)
103          landframe = Frame(frame)          landframe = Frame(frame)
104          scrollbar = Scrollbar(landframe, orient=VERTICAL)          scrollbar = Scrollbar(landframe, orient=VERTICAL)
105          self.landbox = Listbox(landframe, height=4, selectmode=SINGLE,          self.landbox = Listbox(landframe, height=4, selectmode=SINGLE,
# Line 106  class Lohnrechner(LST2005.LStRechner2005 Line 111  class Lohnrechner(LST2005.LStRechner2005
111          self.landbox.pack(side=RIGHT, fill=Y)          self.landbox.pack(side=RIGHT, fill=Y)
112          scrollbar.config(command=self.landbox.yview)          scrollbar.config(command=self.landbox.yview)
113          scrollbar.pack(side=LEFT, fill=BOTH, expand=1)          scrollbar.pack(side=LEFT, fill=BOTH, expand=1)
114          landframe.grid(row=4, rowspan=4, column=1, sticky=W)          landframe.grid(row=5, rowspan=4, column=1, sticky=W)
115                    
116          Label(frame, text="Lohnsteuer:").grid(row=0, column=2, sticky=E)          Label(frame, text="Lohnsteuer:").grid(row=0, column=2, sticky=E)
117          self.lst = Entry(frame)          self.lst = Entry(frame)
# Line 125  class Lohnrechner(LST2005.LStRechner2005 Line 130  class Lohnrechner(LST2005.LStRechner2005
130          self.netto1.grid(row=3, column=3, sticky=W)          self.netto1.grid(row=3, column=3, sticky=W)
131    
132          # Sozialversicherung Ein/Ausgabe          # Sozialversicherung Ein/Ausgabe
133          Label(frame, text="Sozialversicherung:").grid(row=8, sticky=E)          Label(frame, text="Sozialversicherung:").grid(row=9, sticky=E)
134          self.sozv = IntVar()          self.sozv = IntVar()
135          sozvradio = Checkbutton(frame, onvalue=1, offvalue=0,          sozvradio = Checkbutton(frame, onvalue=1, offvalue=0,
136                                  command=self.NewInput, variable=self.sozv)                                  command=self.NewInput, variable=self.sozv)
137          sozvradio.select()          sozvradio.select()
138          sozvradio.grid(row=8, column=1, sticky=W)          sozvradio.grid(row=9, column=1, sticky=W)
139    
140          Label(frame, text="Krankenkassenbeitrag:").grid(row=9, sticky=E)          Label(frame, text="Krankenkassenbeitrag:").grid(row=10, sticky=E)
141          self.kvsatz = Entry(frame)          self.kvsatz = Entry(frame)
142          self.kvsatz.bind("<Return>", self.NewInput)          self.kvsatz.bind("<Return>", self.NewInput)
143          self.kvsatz.grid(row=9, column=1, sticky=W)          self.kvsatz.grid(row=10, column=1, sticky=W)
144    
145            Label(frame, text="Krankenkassenzuschlag (0.9%):").grid(row=11, sticky=E)
146            self.kvsoli = IntVar()
147            kvsoliradio = Checkbutton(frame, onvalue=1, offvalue=0,
148                                    command=self.NewInput, variable=self.kvsoli)
149            kvsoliradio.select()
150            kvsoliradio.grid(row=11, column=1, sticky=W)
151    
152    
153          Label(frame, text="Rentenversicherung:").grid(row=4, column=2, sticky=E)          Label(frame, text="Rentenversicherung:").grid(row=4, column=2, sticky=E)
154          self.rv = Entry(frame)          self.rv = Entry(frame)
# Line 160  class Lohnrechner(LST2005.LStRechner2005 Line 173  class Lohnrechner(LST2005.LStRechner2005
173    
174          # Allgemeine UI Elemente          # Allgemeine UI Elemente
175          buttons = Frame(frame)          buttons = Frame(frame)
176          buttons.grid(row=9, column=2, columnspan=2)          buttons.grid(row=10, column=2, rowspan=2, columnspan=2)
177          Button(buttons, text="Quit", command=self.root.quit).pack(side=LEFT)          Button(buttons, text="Quit", command=self.root.quit).pack(side=LEFT)
178          Button(buttons, text="Info", command=self.Info).pack(side=LEFT)          Button(buttons, text="Info", command=self.Info).pack(side=LEFT)
179          Button(buttons, text="Berechnen", command=self.CalcOutput).pack(side=LEFT)          Button(buttons, text="Berechnen", command=self.CalcOutput).pack(side=LEFT)
# Line 182  class Lohnrechner(LST2005.LStRechner2005 Line 195  class Lohnrechner(LST2005.LStRechner2005
195          self.CalcOutput()          self.CalcOutput()
196    
197      def ResetInput(self):      def ResetInput(self):
198            self.ResetInputGeb()
199          self.ResetInputLohn()          self.ResetInputLohn()
200          self.ResetInputKfb()          self.ResetInputKfb()
201          self.ResetInputKVsatz()          self.ResetInputKVsatz()
202          self.NewLandSel()          self.NewLandSel()
203    
204        def ResetInputGeb(self):
205            self.geb.delete(0, END)
206            self.geb.insert(0, "1964")
207    
208      def ResetInputLohn(self):      def ResetInputLohn(self):
209          self.lohn.delete(0, END)          self.lohn.delete(0, END)
210          self.lohn.insert(0, "0")          self.lohn.insert(0, "0")
# Line 197  class Lohnrechner(LST2005.LStRechner2005 Line 215  class Lohnrechner(LST2005.LStRechner2005
215    
216      def ResetInputKVsatz(self):      def ResetInputKVsatz(self):
217          self.kvsatz.delete(0, END)          self.kvsatz.delete(0, END)
218          self.kvsatz.insert(0, "14.7")          self.kvsatz.insert(0, "13.8")
219    
220      def InitCalc(self):      def InitCalc(self):
221          try:          try:
# Line 205  class Lohnrechner(LST2005.LStRechner2005 Line 223  class Lohnrechner(LST2005.LStRechner2005
223          except:          except:
224              self.ResetInputLohn()              self.ResetInputLohn()
225    
226            self.SetGeb(int(self.geb.get()))
227            try:
228                self.SetGeb(int(self.geb.get()))
229            except:
230                self.ResetInputGeb()
231    
232          try:          try:
233              self.SetKinderfreibetrag(float(self.kfb.get()))              self.SetKinderfreibetrag(float(self.kfb.get()))
234          except:          except:
# Line 248  class Lohnrechner(LST2005.LStRechner2005 Line 272  class Lohnrechner(LST2005.LStRechner2005
272      def Info(self):      def Info(self):
273          infowin = Toplevel(self.root)          infowin = Toplevel(self.root)
274          infowin.title("Info")          infowin.title("Info")
275          Label(infowin, text="Lohnrechner 2005 v%s" % _release_version,          Label(infowin, text="Lohnrechner 2006 v%s" % _release_version,
276                font=("Times", 14, "bold italic")).grid(row=0, pady=20)                font=("Times", 14, "bold italic")).grid(row=0, pady=20)
277          Label(infowin, text=          Label(infowin, text=
278                "Copyright (C) 2005 Intevation GmbH \n\n\                "Copyright (C) 2005,2006 Intevation GmbH \n\n\
279  Lohnrechner 2005 comes with ABSOLUTELY NO WARRANTY.\n\  Lohnrechner 2006 comes with ABSOLUTELY NO WARRANTY.\n\
280  This is free software, and you are welcome to redistribute it\n\  This is free software, and you are welcome to redistribute it\n\
281  under the terms of the GNU General Public License.\n\  under the terms of the GNU General Public License.\n\
282  For more information about these matters, see the file named COPYING.\n\n\  For more information about these matters, see the file named COPYING.\n\n\
283  Dieses Programm verwendet LST2005 %s" % LST2005._ModulVersion()).grid(row=1, padx=10)  Dieses Programm verwendet LST2006 %s" % LST2006._ModulVersion()).grid(row=1, padx=10)
284          Button(infowin, text="Ok", command=infowin.destroy).grid(row=2, pady=10)          Button(infowin, text="Ok", command=infowin.destroy).grid(row=2, pady=10)
285    
286      #      #
# Line 266  Dieses Programm verwendet LST2005 %s" % Line 290  Dieses Programm verwendet LST2005 %s" %
290      #      #
291    
292      def InitSozv(self):      def InitSozv(self):
293          self.AVsatz = 0.065          self.AVsatz = 0.065 / 2
294          self.RVsatz = 0.195          self.RVsatz = 0.195 / 2
295          self.PVsatz = 0.017          # PVsatz ist in self.laender definiert!
296          self.PVkinderlose = 0.0025          self.PVkinderlose = 0.0025
297          self.BMG1 = 3525          self.BMG1 = 3525
298          self.BMG2 = 5200          self.BMG2 = 5200
# Line 281  Dieses Programm verwendet LST2005 %s" % Line 305  Dieses Programm verwendet LST2005 %s" %
305      def GetAV(self):      def GetAV(self):
306          lohn = self.GetLohn()          lohn = self.GetLohn()
307          if lohn > self.BMG2 : lohn = self.BMG2          if lohn > self.BMG2 : lohn = self.BMG2
308          return round(self.sozv.get() * self.AVsatz * lohn / 2, 2)          return round(self.sozv.get() * self.AVsatz * lohn, 2)
309    
310      def GetRV(self):      def GetRV(self):
311          lohn = self.GetLohn()          lohn = self.GetLohn()
312          if lohn > self.BMG2 : lohn = self.BMG2          if lohn > self.BMG2 : lohn = self.BMG2
313          return round(self.sozv.get() * self.RVsatz * lohn / 2, 2)          return round(self.sozv.get() * self.RVsatz * lohn, 2)
314    
315      def GetPV(self):      def GetPV(self):
316            self.PVsatz = self.laender[self.land][2]
317          lohn = self.GetLohn()          lohn = self.GetLohn()
318          if lohn > self.BMG1 : lohn = self.BMG1          if lohn > self.BMG1 : lohn = self.BMG1
319          PV =  self.PVsatz * lohn / 2          PV =  self.PVsatz * lohn
320          if float(self.kfb.get()) == 0.0 :          if float(self.kfb.get()) == 0.0 :
321              PV += lohn * self.PVkinderlose              PV += lohn * self.PVkinderlose
322          return round(self.sozv.get() * PV, 2)          return round(self.sozv.get() * PV, 2)
323    
324      def GetKV(self):      def GetKV(self):
325            self.KVsoli = self.kvsoli.get()
326          lohn = self.GetLohn()          lohn = self.GetLohn()
327          if lohn > self.BMG1 : lohn = self.BMG1          if lohn > self.BMG1 : lohn = self.BMG1
328          return round(self.sozv.get() * self.KVsatz * lohn / 2, 2)          if self.KVsoli :
329                return round(self.sozv.get() * ((self.KVsatz / 2) + 0.009) * lohn, 2)
330            else :
331                return round(self.sozv.get() * self.KVsatz * lohn / 2, 2)
332            
333    
334  if __name__ == "__main__":  if __name__ == "__main__":

Legend:
Removed from v.33  
changed lines
  Added in v.54

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26