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

Annotation of /trunk/lohnrechner2006.py

Parent Directory Parent Directory | Revision Log Revision Log


Revision 22 - (hide annotations)
Fri Jan 14 13:04:09 2005 UTC (20 years, 3 months ago) by wilde
Original Path: trunk/RCS/lohnrechner.py
File MIME type: text/x-python
File size: 6572 byte(s)
Neues Feld: Bundesland
Kirchensteuer wird jetzt automatisch der L�ndertabelle entnommen

1 wilde 6 #! /usr/bin/python
2 wilde 19 # -*- coding: iso-8859-1 -*-
3 wilde 6 # --------------------------------------------------------------------
4     # Lohnsteuer und Sozialabgaben Rechner
5     # $Id$
6     # --------------------------------------------------------------------
7     #
8     # Copyright (c) 2005 by Intevation GmbH
9     # Authors:
10     # Sascha Wilde <[email protected]>
11     #
12     # This program is free software under the GPL (>=v2)
13     # Read the file COPYING coming with this package for details.
14    
15     """Lohn/Gehaltsrechner für das Jahr 2005"""
16    
17 wilde 7 __version__ = "$Revision$"
18     # $Source$
19    
20 wilde 21 _release_version = "0.%s beta" % __version__[11:-2]
21 wilde 7
22 wilde 6 import LST2005
23     from Tkinter import *
24    
25     class Lohnrechner(LST2005.LStRechner2005):
26    
27     def __init__(self, root):
28     LST2005.LStRechner2005.__init__(self)
29    
30 wilde 22 # 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 wilde 7 root.title("Lohnrechner 2005 - v%s" % _release_version)
50 wilde 17 root.resizable(NO, NO)
51     self.root = root
52 wilde 7
53 wilde 22 frame = Frame(root)
54     frame.grid(padx=10, pady=10)
55    
56     Label(frame, text="Lohn:").grid(row=0, sticky=E)
57     self.lohn = Entry(frame)
58 wilde 9 self.lohn.bind("<Return>", self.NewInput)
59 wilde 6 self.lohn.grid(row=0, column=1, sticky=W)
60    
61 wilde 22 Label(frame, text="Steuerklasse:").grid(row=1, sticky=E)
62 wilde 21 self.stkl = IntVar()
63 wilde 22 stklframe = Frame(frame)
64 wilde 6 stklframe.grid(row=1, column=1, sticky=W)
65 wilde 21 for text, val in [("I", 1),
66     ("II", 2),
67     ("III", 3),
68     ("IV", 4),
69     ("V", 5),
70     ("VI", 6)]:
71 wilde 6 stklradio = Radiobutton(stklframe, text=text, value=val,
72 wilde 9 indicatoron=0, command=self.CalcOutput,
73 wilde 6 variable=self.stkl)
74     if text == "I":
75     stklradio.select()
76     stklradio.pack(side=LEFT)
77    
78 wilde 22 Label(frame, text="Kirchensteuer:").grid(row=2, sticky=E)
79     self.kirche = IntVar()
80     kircheradio = Checkbutton(frame, onvalue=1, offvalue=0,
81     command=self.CalcOutput,
82     variable=self.kirche).grid(row=2, column=1, sticky=W)
83 wilde 10
84 wilde 22 Label(frame, text="Kinderfreibetrag:").grid(row=3, sticky=E)
85     self.kfb = Entry(frame)
86 wilde 19 self.kfb.bind("<Return>", self.NewInput)
87     self.kfb.grid(row=3, column=1, sticky=W)
88    
89 wilde 22 Label(frame, text="Bundesland:").grid(row=4, sticky=E)
90     landframe = Frame(frame)
91     scrollbar = Scrollbar(landframe, orient=VERTICAL)
92     self.land = Listbox(landframe, height=4, selectmode=SINGLE,
93     yscrollcommand=scrollbar.set)
94     for land in self.laender:
95     self.land.insert(END, land[0])
96     self.land.select_set(0)
97     self.land.bind("<ButtonRelease-1>", self.NewInput)
98     self.land.pack(side=RIGHT, fill=Y)
99     scrollbar.config(command=self.land.yview)
100     scrollbar.pack(side=LEFT, fill=BOTH, expand=1)
101     landframe.grid(row=4, column=1, sticky=W)
102    
103 wilde 6 self.ResetInput()
104    
105 wilde 22 Label(frame, text="Lohnsteuer:").grid(row=0, column=2, sticky=E)
106     self.lst = Entry(frame)
107 wilde 6 self.lst.grid(row=0, column=3, sticky=W)
108    
109 wilde 22 Label(frame, text="Solidaritätszuschlag:").grid(row=1, column=2, sticky=E)
110     self.soli = Entry(frame)
111 wilde 6 self.soli.grid(row=1, column=3, sticky=W)
112    
113 wilde 22 Label(frame, text="Kirchensteuer:").grid(row=2, column=2, sticky=E)
114     self.kist = Entry(frame)
115 wilde 16 self.kist.grid(row=2, column=3, sticky=W)
116 wilde 10
117 wilde 22 buttons = Frame(frame)
118     buttons.grid(row=4, column=2, columnspan=2)
119 wilde 17 Button(buttons, text="Quit", command=root.quit).pack(side=LEFT)
120     Button(buttons, text="Info", command=self.Info).pack(side=LEFT)
121     Button(buttons, text="Berechnen", command=self.CalcOutput).pack(side=LEFT)
122 wilde 6
123     self.CalcOutput()
124 wilde 9
125     def NewInput(self, event):
126     self.CalcOutput()
127    
128 wilde 6 def ResetInput(self):
129 wilde 9 self.ResetInputLohn()
130    
131     def ResetInputLohn(self):
132     self.lohn.delete(0, END)
133 wilde 6 self.lohn.insert(0, "0")
134 wilde 10
135 wilde 19 def ResetInputKfb(self):
136     self.kfb.delete(0, END)
137     self.kfb.insert(0, "0")
138    
139 wilde 6 def InitCalc(self):
140 wilde 9 try:
141     self.SetLohn(float(self.lohn.get()))
142     except:
143     self.ResetInputLohn()
144 wilde 10
145 wilde 19 try:
146     self.SetKinderfreibetrag(float(self.kfb.get()))
147     except:
148     self.ResetInputKfb()
149    
150 wilde 21 self.SetSteuerklasse(self.stkl.get())
151 wilde 22 self.SetKirchensteuer(self.kirche.get() *
152     self.laender[int(self.land.curselection()[0])][1])
153 wilde 6
154     def CalcOutput(self):
155     self.InitCalc()
156     self.Calc()
157     self.lst.delete(0, END)
158     self.lst.insert(0, "%.2f" % self.GetLohnsteuer())
159     self.soli.delete(0, END)
160     self.soli.insert(0, "%.2f" % self.GetSoli())
161 wilde 16 self.kist.delete(0, END)
162     self.kist.insert(0, "%.2f" % self.GetKirchensteuer())
163 wilde 6
164 wilde 17 def Info(self):
165     infowin = Toplevel(self.root)
166     infowin.title("Info")
167 wilde 18 Label(infowin, text="Lohnrechner 2005 v%s" % _release_version,
168 wilde 17 font=("Times", 14, "bold italic")).grid(row=0, pady=20)
169     Label(infowin, text=
170     "Copyright (C) 2005 Intevation GmbH \n\n\
171     Lohnrechner 2005 comes with ABSOLUTELY NO WARRANTY.\n\
172     This is free software, and you are welcome to redistribute it\n\
173     under the terms of the GNU General Public License.\n\
174     For more information about these matters, see the file named COPYING.\n\n\
175     Dieses Programm verwendet LST2005 %s" % LST2005._ModulVersion()).grid(row=1, padx=10)
176     Button(infowin, text="Ok", command=infowin.destroy).grid(row=2, pady=10)
177 wilde 6
178 wilde 17
179 wilde 6 if __name__ == "__main__":
180     root = Tk()
181     lr = Lohnrechner(root)
182     root.mainloop()
183    

Properties

Name Value
svn:eol-style native
svn:executable *
svn:keywords Author Date Id Revision

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26