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

Diff of /trunk/lohnrechner2007.py

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

revision 17 by wilde, Thu Jan 13 15:51:34 2005 UTC revision 24 by wilde, Mon Jan 17 14:30:00 2005 UTC
# Line 1  Line 1 
1  #! /usr/bin/python  #! /usr/bin/python
2    # -*- coding: iso-8859-1 -*-
3  # --------------------------------------------------------------------  # --------------------------------------------------------------------
4  # Lohnsteuer und Sozialabgaben Rechner  # Lohnsteuer und Sozialabgaben Rechner
5  # $Id$  # $Id$
# Line 16  Line 17 
17  __version__ = "$Revision$"  __version__ = "$Revision$"
18  # $Source$  # $Source$
19                    
20  _release_version = "0.1alpha"  _release_version = "0.%s beta" % __version__[11:-2]
21    
22  import LST2005  import LST2005
23  from Tkinter import *  from Tkinter import *
# Line 26  class Lohnrechner(LST2005.LStRechner2005 Line 27  class Lohnrechner(LST2005.LStRechner2005
27      def __init__(self, root):      def __init__(self, root):
28          LST2005.LStRechner2005.__init__(self)          LST2005.LStRechner2005.__init__(self)
29    
30            # Land, Kirchensteuersatz
31            self.laender = [("Baden-W�rttemberg", 8),
32                            ("Bayern", 8),
33                            ("Berlin", 9),
34                            ("Brandenburg", 9),
35                            ("Bremen", 9),
36                            ("Bremerhaven", 9),
37                            ("Hamburg", 9),
38                            ("Hessen", 9),
39                            ("Mecklenburg-Vorpommern", 9),
40                            ("Niedersachsen" ,9),
41                            ("Nordrhein-Westfalen", 9),
42                            ("Rheinland-Pfalz", 9),
43                            ("Saarland", 9),
44                            ("Sachsen", 9),
45                            ("Sachsen-Anhalt", 9),
46                            ("Schleswig-Holstein", 9),
47                            ("Th�ringen", 9)]
48    
49          root.title("Lohnrechner 2005 - v%s" % _release_version)          root.title("Lohnrechner 2005 - v%s" % _release_version)
50          root.resizable(NO, NO)          root.resizable(NO, NO)
51          self.root = root          self.root = root
52    
53          Label(root, text="Lohn:").grid(row=0, sticky=E)          frame = Frame(root)
54          self.lohn = Entry(root)          frame.grid(padx=10, pady=10)
55    
56            Label(frame, text="Lohn:").grid(row=0, sticky=E)
57            self.lohn = Entry(frame)
58          self.lohn.bind("<Return>", self.NewInput)          self.lohn.bind("<Return>", self.NewInput)
59          self.lohn.grid(row=0, column=1, sticky=W)          self.lohn.grid(row=0, column=1, sticky=W)
60    
61          Label(root, text="Steuerklasse:").grid(row=1, sticky=E)          Label(frame, text="Steuerklasse:").grid(row=1, sticky=E)
62          self.stkl = StringVar()          self.stkl = IntVar()
63          stklframe = Frame(root)          stklframe = Frame(frame)
64          stklframe.grid(row=1, column=1, sticky=W)          stklframe.grid(row=1, column=1, sticky=W)
65          for text, val in [("I", "1"),          for text, val in [("I", 1),
66                            ("II", "2"),                            ("II", 2),
67                            ("III", "3"),                            ("III", 3),
68                            ("IV", "4"),                            ("IV", 4),
69                            ("V", "5"),                            ("V", 5),
70                            ("VI", "6")]:                            ("VI", 6)]:
71              stklradio = Radiobutton(stklframe, text=text, value=val,              stklradio = Radiobutton(stklframe, text=text, value=val,
72                                      indicatoron=0, command=self.CalcOutput,                                      indicatoron=0, command=self.CalcOutput,
73                                      variable=self.stkl)                                      variable=self.stkl)
# Line 52  class Lohnrechner(LST2005.LStRechner2005 Line 75  class Lohnrechner(LST2005.LStRechner2005
75                  stklradio.select()                  stklradio.select()
76              stklradio.pack(side=LEFT)              stklradio.pack(side=LEFT)
77    
78          Label(root, text="Kirchensteuer (%):").grid(row=2, sticky=E)          Label(frame, text="Kirchensteuer:").grid(row=2, sticky=E)
79          self.kirche = StringVar()          self.kirche = IntVar()
80          kircheframe = Frame(root)          kircheradio = Checkbutton(frame, onvalue=1, offvalue=0,
81          kircheframe.grid(row=2, column=1, sticky=W)                                    command=self.CalcOutput,
82          for text, val in [("keine", "0"),                                    variable=self.kirche).grid(row=2, column=1, sticky=W)
83                            ("8 %", "8"),  
84                            ("9 %", "9")]:          Label(frame, text="Kinderfreibetrag:").grid(row=3, sticky=E)
85              kircheradio = Radiobutton(kircheframe, text=text, value=val,          self.kfb = Entry(frame)
86                                      indicatoron=0, command=self.CalcOutput,          self.kfb.bind("<Return>", self.NewInput)
87                                      variable=self.kirche)          self.kfb.grid(row=3, column=1, sticky=W)
88              if val == "0":  
89                  kircheradio.select()          Label(frame, text="Bundesland:").grid(row=4, sticky=E)
90              kircheradio.pack(side=LEFT)          landframe = Frame(frame)
91            scrollbar = Scrollbar(landframe, orient=VERTICAL)
92            self.landbox = Listbox(landframe, height=4, selectmode=SINGLE,
93                                   yscrollcommand=scrollbar.set)
94            for land in self.laender:
95                self.landbox.insert(END, land[0])
96            self.landbox.bind("<<ListboxSelect>>", self.NewLandSel)
97            self.landbox.select_set(0)
98            self.landbox.pack(side=RIGHT, fill=Y)
99            scrollbar.config(command=self.landbox.yview)
100            scrollbar.pack(side=LEFT, fill=BOTH, expand=1)
101            landframe.grid(row=4, column=1, sticky=W)
102            self.NewLandSel()
103            
104          self.ResetInput()          self.ResetInput()
105    
106          Label(root, text="Lohnsteuer:").grid(row=0, column=2, sticky=E)          Label(frame, text="Lohnsteuer:").grid(row=0, column=2, sticky=E)
107          self.lst = Entry(root)          self.lst = Entry(frame)
108          self.lst.grid(row=0, column=3, sticky=W)          self.lst.grid(row=0, column=3, sticky=W)
109    
110          Label(root, text="Solidarit�tszuschlag:").grid(row=1, column=2, sticky=E)          Label(frame, text="Solidarit�tszuschlag:").grid(row=1, column=2, sticky=E)
111          self.soli = Entry(root)          self.soli = Entry(frame)
112          self.soli.grid(row=1, column=3, sticky=W)          self.soli.grid(row=1, column=3, sticky=W)
113    
114          Label(root, text="Kirchensteuer:").grid(row=2, column=2, sticky=E)          Label(frame, text="Kirchensteuer:").grid(row=2, column=2, sticky=E)
115          self.kist = Entry(root)          self.kist = Entry(frame)
116          self.kist.grid(row=2, column=3, sticky=W)          self.kist.grid(row=2, column=3, sticky=W)
117    
118          buttons = Frame()          buttons = Frame(frame)
119          buttons.grid(row=3, columnspan=4)          buttons.grid(row=4, column=2, columnspan=2)
120          Button(buttons, text="Quit", command=root.quit).pack(side=LEFT)          Button(buttons, text="Quit", command=root.quit).pack(side=LEFT)
121          Button(buttons, text="Info", command=self.Info).pack(side=LEFT)          Button(buttons, text="Info", command=self.Info).pack(side=LEFT)
122          Button(buttons, text="Berechnen", command=self.CalcOutput).pack(side=LEFT)          Button(buttons, text="Berechnen", command=self.CalcOutput).pack(side=LEFT)
# Line 89  class Lohnrechner(LST2005.LStRechner2005 Line 124  class Lohnrechner(LST2005.LStRechner2005
124          self.CalcOutput()          self.CalcOutput()
125    
126      def NewInput(self, event):      def NewInput(self, event):
127            # Es ist m�glich alle Eintr�ge in der Listbox zu deselektieren,
128            # es ist aber immer genau ein Eintrag aktuell, darum wird er ggf.
129            # zwangsselektiert:
130            # FIX ME: eigendlich w�re das ein Fall f�r ein custom widget!
131            if len(self.landbox.curselection()) == 0:
132                self.landbox.select_set(self.land)            
133          self.CalcOutput()          self.CalcOutput()
134    
135        def NewLandSel(self, event=0):
136            self.land = int(self.landbox.curselection()[0])
137    
138      def ResetInput(self):      def ResetInput(self):
139          self.ResetInputLohn()          self.ResetInputLohn()
140            self.ResetInputKfb()
141    
142      def ResetInputLohn(self):      def ResetInputLohn(self):
143          self.lohn.delete(0, END)          self.lohn.delete(0, END)
144          self.lohn.insert(0, "0")          self.lohn.insert(0, "0")
145    
146        def ResetInputKfb(self):
147            self.kfb.delete(0, END)
148            self.kfb.insert(0, "0")
149    
150      def InitCalc(self):      def InitCalc(self):
151          try:          try:
152              self.SetLohn(float(self.lohn.get()))              self.SetLohn(float(self.lohn.get()))
153          except:          except:
154              self.ResetInputLohn()              self.ResetInputLohn()
155    
156          self.SetSteuerklasse(int(self.stkl.get()))          try:
157          self.SetKirchensteuer(int(self.kirche.get()))              self.SetKinderfreibetrag(float(self.kfb.get()))
158            except:
159                self.ResetInputKfb()
160    
161            self.SetSteuerklasse(self.stkl.get())
162            self.SetKirchensteuer(self.kirche.get() *
163                                  self.laender[self.land][1])
164    
165      def CalcOutput(self):      def CalcOutput(self):
166          self.InitCalc()          self.InitCalc()
# Line 120  class Lohnrechner(LST2005.LStRechner2005 Line 175  class Lohnrechner(LST2005.LStRechner2005
175      def Info(self):      def Info(self):
176          infowin = Toplevel(self.root)          infowin = Toplevel(self.root)
177          infowin.title("Info")          infowin.title("Info")
178          Label(infowin, text="Lohnrechner 2005 %s" % _release_version,          Label(infowin, text="Lohnrechner 2005 v%s" % _release_version,
179                font=("Times", 14, "bold italic")).grid(row=0, pady=20)                font=("Times", 14, "bold italic")).grid(row=0, pady=20)
180          Label(infowin, text=          Label(infowin, text=
181                "Copyright (C) 2005 Intevation GmbH \n\n\                "Copyright (C) 2005 Intevation GmbH \n\n\

Legend:
Removed from v.17  
changed lines
  Added in v.24

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26