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

Contents of /trunk/lohnrechner2007.py

Parent Directory Parent Directory | Revision Log Revision Log


Revision 23 - (show annotations)
Fri Jan 14 13:46:49 2005 UTC (20 years, 3 months ago) by wilde
Original Path: trunk/RCS/lohnrechner.py
File MIME type: text/x-python
File size: 6601 byte(s)
Zwei kleine Bugfixes

1 #! /usr/bin/python
2 # -*- coding: iso-8859-1 -*-
3 # --------------------------------------------------------------------
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 __version__ = "$Revision$"
18 # $Source$
19
20 _release_version = "0.%s beta" % __version__[11:-2]
21
22 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 # 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)
50 root.resizable(NO, NO)
51 self.root = root
52
53 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 self.lohn.bind("<Return>", self.NewInput)
59 self.lohn.grid(row=0, column=1, sticky=W)
60
61 Label(frame, text="Steuerklasse:").grid(row=1, sticky=E)
62 self.stkl = IntVar()
63 stklframe = Frame(frame)
64 stklframe.grid(row=1, column=1, sticky=W)
65 for text, val in [("I", 1),
66 ("II", 2),
67 ("III", 3),
68 ("IV", 4),
69 ("V", 5),
70 ("VI", 6)]:
71 stklradio = Radiobutton(stklframe, text=text, value=val,
72 indicatoron=0, command=self.CalcOutput,
73 variable=self.stkl)
74 if text == "I":
75 stklradio.select()
76 stklradio.pack(side=LEFT)
77
78 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
84 Label(frame, text="Kinderfreibetrag:").grid(row=3, sticky=E)
85 self.kfb = Entry(frame)
86 self.kfb.bind("<Return>", self.NewInput)
87 self.kfb.grid(row=3, column=1, sticky=W)
88
89 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("<<ListboxSelect>>", 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 self.ResetInput()
104
105 Label(frame, text="Lohnsteuer:").grid(row=0, column=2, sticky=E)
106 self.lst = Entry(frame)
107 self.lst.grid(row=0, column=3, sticky=W)
108
109 Label(frame, text="Solidaritätszuschlag:").grid(row=1, column=2, sticky=E)
110 self.soli = Entry(frame)
111 self.soli.grid(row=1, column=3, sticky=W)
112
113 Label(frame, text="Kirchensteuer:").grid(row=2, column=2, sticky=E)
114 self.kist = Entry(frame)
115 self.kist.grid(row=2, column=3, sticky=W)
116
117 buttons = Frame(frame)
118 buttons.grid(row=4, column=2, columnspan=2)
119 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
123 self.CalcOutput()
124
125 def NewInput(self, event):
126 self.CalcOutput()
127
128 def ResetInput(self):
129 self.ResetInputLohn()
130 self.ResetInputKfb()
131
132 def ResetInputLohn(self):
133 self.lohn.delete(0, END)
134 self.lohn.insert(0, "0")
135
136 def ResetInputKfb(self):
137 self.kfb.delete(0, END)
138 self.kfb.insert(0, "0")
139
140 def InitCalc(self):
141 try:
142 self.SetLohn(float(self.lohn.get()))
143 except:
144 self.ResetInputLohn()
145
146 try:
147 self.SetKinderfreibetrag(float(self.kfb.get()))
148 except:
149 self.ResetInputKfb()
150
151 self.SetSteuerklasse(self.stkl.get())
152 self.SetKirchensteuer(self.kirche.get() *
153 self.laender[int(self.land.curselection()[0])][1])
154
155 def CalcOutput(self):
156 self.InitCalc()
157 self.Calc()
158 self.lst.delete(0, END)
159 self.lst.insert(0, "%.2f" % self.GetLohnsteuer())
160 self.soli.delete(0, END)
161 self.soli.insert(0, "%.2f" % self.GetSoli())
162 self.kist.delete(0, END)
163 self.kist.insert(0, "%.2f" % self.GetKirchensteuer())
164
165 def Info(self):
166 infowin = Toplevel(self.root)
167 infowin.title("Info")
168 Label(infowin, text="Lohnrechner 2005 v%s" % _release_version,
169 font=("Times", 14, "bold italic")).grid(row=0, pady=20)
170 Label(infowin, text=
171 "Copyright (C) 2005 Intevation GmbH \n\n\
172 Lohnrechner 2005 comes with ABSOLUTELY NO WARRANTY.\n\
173 This is free software, and you are welcome to redistribute it\n\
174 under the terms of the GNU General Public License.\n\
175 For more information about these matters, see the file named COPYING.\n\n\
176 Dieses Programm verwendet LST2005 %s" % LST2005._ModulVersion()).grid(row=1, padx=10)
177 Button(infowin, text="Ok", command=infowin.destroy).grid(row=2, pady=10)
178
179
180 if __name__ == "__main__":
181 root = Tk()
182 lr = Lohnrechner(root)
183 root.mainloop()
184

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