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

Contents of /trunk/lohnrechner2007.py

Parent Directory Parent Directory | Revision Log Revision Log


Revision 22 - (show 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 #! /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("<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 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
131 def ResetInputLohn(self):
132 self.lohn.delete(0, END)
133 self.lohn.insert(0, "0")
134
135 def ResetInputKfb(self):
136 self.kfb.delete(0, END)
137 self.kfb.insert(0, "0")
138
139 def InitCalc(self):
140 try:
141 self.SetLohn(float(self.lohn.get()))
142 except:
143 self.ResetInputLohn()
144
145 try:
146 self.SetKinderfreibetrag(float(self.kfb.get()))
147 except:
148 self.ResetInputKfb()
149
150 self.SetSteuerklasse(self.stkl.get())
151 self.SetKirchensteuer(self.kirche.get() *
152 self.laender[int(self.land.curselection()[0])][1])
153
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 self.kist.delete(0, END)
162 self.kist.insert(0, "%.2f" % self.GetKirchensteuer())
163
164 def Info(self):
165 infowin = Toplevel(self.root)
166 infowin.title("Info")
167 Label(infowin, text="Lohnrechner 2005 v%s" % _release_version,
168 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
178
179 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