Subversion Repositories public

Rev

Rev 46 | Rev 60 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
43 root 1
/***************************************************************************
52 andreas 2
 *   Copyright (C) 2007 by Andreas Theofilu                                *
3
 *   andreas@TheoSys.at                                                    *
43 root 4
 *                                                                         *
5
 *   This program is free software; you can redistribute it and/or modify  *
6
 *   it under the terms of the GNU General Public License as published by  *
52 andreas 7
 *   the Free Software Foundation version 3 of the License.                *
43 root 8
 *                                                                         *
9
 *   This program is distributed in the hope that it will be useful,       *
10
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
11
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
12
 *   GNU General Public License for more details.                          *
13
 *                                                                         *
14
 *   You should have received a copy of the GNU General Public License     *
15
 *   along with this program; if not, write to the                         *
16
 *   Free Software Foundation, Inc.,                                       *
17
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
18
 ***************************************************************************/
19
 
52 andreas 20
#ifndef _ZINSAENDERUNG
21
   #define _ZINSAENDERUNG
22
#endif
23
 
43 root 24
#include <klineedit.h>
25
#include <kmessagebox.h>
26
#include <klocale.h>
27
#include <kdatewidget.h>
28
#include <kcombobox.h>
29
#include <knuminput.h>
30
#include <qcheckbox.h>
52 andreas 31
#include <qradiobutton.h>
43 root 32
 
33
#include <stdlib.h>
34
#include <iostream.h>
35
#include "helper.h"
36
#include "tilgungsplanwidget.h"
37
#include "ziaendwidget.h"
38
 
39
tilgungsplanWidget::tilgungsplanWidget ( QWidget* parent, const char* name, WFlags fl )
40
		: tilgungsplanWidgetBase ( parent,name,fl )
41
{
42
QDate dt;
43
 
44
	// Maske mit sinnvollen Parametern versorgen
45
	comboBox_tageber->setCurrentItem(3);
46
	comboBox_Ratart->setCurrentItem(1);
47
	comboBox_Abschl->setCurrentItem(10);
48
	kDoubleNumInput_Zinssatz->setValue(5.5);
49
	kDateWidget_Auszahlung->setDate(QDate::currentDate());
50
	// Datum: Der 5. des nächsten Monats
51
	dt = QDate::currentDate();
52
	dt = dt.addMonths(1);
53
	dt.setYMD(dt.year(), dt.month(), 5);
54
	kDateWidget_RaVon->setDate(dt);
55
	dt = dt.addYears(1);
56
	kDateWidget_RaBis->setDate(dt);
57
	kDateWidget_ZiGiltAb->setDate(QDate::currentDate());
58
	kDoubleNumInput_Betrag->setValue(100000.0);
44 andreas 59
	checkBox_RaJan->setChecked(TRUE);
60
	checkBox_RaFeb->setChecked(TRUE);
61
	checkBox_RaMar->setChecked(TRUE);
62
	checkBox_RaApr->setChecked(TRUE);
63
	checkBox_RaMai->setChecked(TRUE);
64
	checkBox_RaJun->setChecked(TRUE);
65
	checkBox_RaJul->setChecked(TRUE);
66
	checkBox_RaAug->setChecked(TRUE);
67
	checkBox_RaSep->setChecked(TRUE);
68
	checkBox_RaOkt->setChecked(TRUE);
69
	checkBox_RaNov->setChecked(TRUE);
70
	checkBox_RaDez->setChecked(TRUE);
52 andreas 71
#ifndef _ZINSAENDERUNG
72
	checkBox_ZiChange->setProperty("enabled", QVariant("FALSE"));
73
#endif
43 root 74
}
75
 
76
tilgungsplanWidget::~tilgungsplanWidget()
77
{}
78
 
79
/*$SPECIALIZATION$*/
80
void tilgungsplanWidget::mnCalcTPSumSlot()
81
{
82
QDate dt, dt1;
83
QString str, zia;
84
TRech *tp;
85
int ret, day1, day2, mon1, mon2, year1, year2;
86
char hv0[255];
87
 
88
	// Zuweisen der Inhalte der Widgets zur internen Parameterstruktur.
89
	TpPars.effformel = 0.0;
90
	TpPars.gewicht = 0.0;
52 andreas 91
	TpPars.tageb = comboBox_tageber->currentItem() + 1;
92
 
93
	switch (comboBox_verzart->currentItem())
94
	{
95
	   case 0: TpPars.verzart = 0; break;	// Dekursiv
96
	   case 1: TpPars.verzart = 3; break;	// Antizipativ
97
	   case 2: TpPars.verzart = 7; break;	// Dekursiv; Zinsen am Beg.d. Absclussp.
98
	   case 3: TpPars.verzart = 4; break;	// Unverzinst
99
	}
100
 
43 root 101
	TpPars.ratenart = comboBox_Ratart->currentItem();
102
	TpPars.valuta = comboBox_valuta->currentItem();
103
	TpPars.zssoll = kDoubleNumInput_Zinssatz->value();
46 andreas 104
	TpPars.zuschfix = kDoubleNumInput_ZuschFix->value();
105
	TpPars.zuschprz = kDoubleNumInput_ZiZuschuss->value();
43 root 106
	TpPars.zuschannu = kDoubleNumInput_AnnZuschuss->value();
107
	dt = kDateWidget_Auszahlung->date();
108
	TpPars.ragab = make_date(dt.day(), dt.month(), dt.year());
109
	dt = kDateWidget_Abschluss->date();
110
	TpPars.abschl = make_date(dt.day(), dt.month(), dt.year());
111
	TpPars.ultimo = checkBox_RechUltimo->isChecked();
112
	TpPars.anzraten = kIntNumInput_AnzRaten->value();
113
	ret = comboBox_Abschl->currentItem();
114
 
115
	switch (ret)
116
	{
117
           case 0: TpPars.abschlry = 0; break;
118
	   case 1: TpPars.abschlry = 1; break;
119
	   case 2: TpPars.abschlry = 3; break;
120
	   case 3: TpPars.abschlry = 6; break;
121
	   case 4: TpPars.abschlry = 12; break;
122
	   case 5: TpPars.abschlry = 41; break;
123
	   case 6: TpPars.abschlry = 43; break;
124
	   case 7: TpPars.abschlry = 46; break;
125
	   case 8: TpPars.abschlry = 47; break;
126
	   case 9: TpPars.abschlry = 48; break;
127
	   case 10: TpPars.abschlry = 52; break;
128
        }
129
 
130
	TpPars.zuschver = 0;		// Zuschuss Verrechnung ??
131
	TpPars.spesen = kDoubleNumInput_Fixspesen->value();
132
	TpPars.rahmen = kDoubleNumInput_Betrag->value();
133
	TpPars.kapital = 0.0;
44 andreas 134
	TpPars.raplan[0] = checkBox_RaJan->isChecked();
135
	TpPars.raplan[1] = checkBox_RaFeb->isChecked();
136
	TpPars.raplan[2] = checkBox_RaMar->isChecked();
137
	TpPars.raplan[3] = checkBox_RaApr->isChecked();
138
	TpPars.raplan[4] = checkBox_RaMai->isChecked();
139
	TpPars.raplan[5] = checkBox_RaJun->isChecked();
140
	TpPars.raplan[6] = checkBox_RaJul->isChecked();
141
	TpPars.raplan[7] = checkBox_RaAug->isChecked();
142
	TpPars.raplan[8] = checkBox_RaSep->isChecked();
143
	TpPars.raplan[9] = checkBox_RaOkt->isChecked();
144
	TpPars.raplan[10] = checkBox_RaNov->isChecked();
145
	TpPars.raplan[11] = checkBox_RaDez->isChecked();
43 root 146
	TpPars.rate = kDoubleNumInput_Rate->value();
147
	dt = kDateWidget_RaVon->date();
148
	TpPars.dvon = make_date(dt.day(), dt.month(), dt.year());
149
	dt = kDateWidget_RaBis->date();
150
	TpPars.dbis = make_date(dt.day(), dt.month(), dt.year());
151
	dt = kDateWidget_Endfael->date();
152
	TpPars.endfaell = make_date(dt.day(), dt.month(), dt.year());
153
	TpPars.runden = checkBox_Runden->isChecked();
154
	TpPars.mehrfach = FALSE;
155
	TpPars.laufstop = FALSE;
52 andreas 156
#ifdef _ZINSAENDERUNG
157
	TpPars.ziaend = checkBox_ZiChange->isChecked();
158
#else
43 root 159
	TpPars.ziaend = FALSE;
52 andreas 160
#endif
43 root 161
	TpPars.effekt = TRUE;
162
	TpPars.fixrate = checkBox_Rate->isChecked();
163
 
164
	if (TpPars.dbis > TpPars.endfaell)
165
	   TpPars.endfaell = TpPars.dbis;
166
 
167
	// Berechnung anstossen
168
	tp = new TRech (&TpPars);
169
 
170
	if ((ret = tp->tilgpl()) != 0)
171
	{
172
	   switch (ret)
173
	   {
174
	      case 1: str = QString::fromUtf8("Fehler beim Erzeugen einer Temporärdatei!"); break;
175
	      case 2: str = QString::fromUtf8("Erste Einschränkung nicht vorhanden!"); break;
176
	      case 3:
177
		 date_int (&day1, &mon1, &year1, TpPars.ragab);
178
		 date_int (&day2, &mon2, &year2, TpPars.dvon);
179
		 sprintf (hv0, "Das Auszahlungsdatum (%02d.%02d.%d) muss kleiner als das Datum der ersten Einschränkung sein (%02d.%02d.%d)!",
180
			day1, mon1, year1, day2, mon2, year2);
181
		 str = QString::fromUtf8(hv0); break;
182
	      case 4:
183
		 date_int (&day1, &mon1, &year1, TpPars.abschl);
184
		 date_int (&day2, &mon2, &year2, TpPars.ragab);
185
		 sprintf (hv0, "Das Abschlussdatum (%02d.%02d.%d) darf nicht kleiner als das Auszahlungsdatum (%02d, %02d.%d) sein!",
186
			day1, mon1, year1, day2, mon2, year2);
187
		 str = QString::fromUtf8(hv0); break;
188
	      case 5:
189
		 date_int (&day1, &mon1, &year1, TpPars.dvon);
190
		 date_int (&day2, &mon2, &year2, TpPars.dbis);
191
		 sprintf (hv0, "Die erste Einschränkung (%02d.%02d.%d) darf nicht größer als die letzte Einschränkung (%02d.%02d.%d) sein!",
192
			day1, mon1, year1, day2, mon2, year2);
193
		 str = QString::fromUtf8(hv0); break;
194
	      case 6:
195
		 date_int (&day1, &mon1, &year1, TpPars.dbis);
196
		 date_int (&day2, &mon2, &year2, TpPars.endfaell);
197
		 sprintf (hv0, "Die letzte Einschränkung (%02d.%02d.%d) darf nicht größer die Endfälligkeit (%02d.%02d.%d) sein!",
198
			day1, mon1, year1, day2, mon2, year2);
199
		 str = QString::fromUtf8(hv0); break;
200
	      case 7: str = QString::fromUtf8("Es wurde keine Rate angegeben!"); break;
201
	      case 8: str = QString::fromUtf8("Kein, oder ungültiges Auszahlungsdatum!"); break;
202
	      case 9: str = QString::fromUtf8("Die Verzinsung in Bezug auf den Abschlussrythmus ist ungültig!"); break;
203
	      case 10: str = QString::fromUtf8("Das Abschlussdatum fehlt oder ist ungültig!"); break;
204
	      case 11:
205
		 sprintf(hv0, "Der Abschlussrythmus ist ungültig! (%d)",TpPars.abschlry);
206
		 str = QString::fromUtf8(hv0); break;
207
	      case 12: str = QString::fromUtf8("Die Verzinsungsart ist ungültig!"); break;
208
	      case 13: str = QString::fromUtf8("Die Ratenart ist ungültig!"); break;
209
	      case 14: str = QString::fromUtf8("Die Laufzeit ist über 100 Jahre!"); break;
210
	      case 15: str = QString::fromUtf8("Es wurde keine Rate vorgegeben!"); break;
211
	      case 16: str = QString::fromUtf8("Die vorgegebene Rate darf nicht kleiner als 0 sein!"); break;
212
	      case 18: str = QString::fromUtf8("Die erste Einschränkung oder die Ratenleiste ist ungültig!"); break;
213
	      case 19: str = QString::fromUtf8("Die letzte Einschränkung oder die Ratenleiste ist ungültig!"); break;
214
	      case 22: str = QString::fromUtf8("Nicht genügend Speicher!"); break;
215
	      case 23: str = QString::fromUtf8("\"Antizipativ\" erlaubt keine Zinssatzänderung!"); break;
44 andreas 216
	      case 24: 
217
	      case 25: str = QString::fromUtf8("Fehler beim Lesen der Zinssatzänderungen!"); break;
43 root 218
	      default:
219
		 sprintf (hv0, "Unbekannter Fehler \"%d\"! Prüfen Sie die Eingaben.", ret);
220
	         str = QString::fromUtf8(hv0);
221
	   }
222
 
223
	   KMessageBox::error(0, str, i18n("Fehler"));
224
	   lineEdit_EffZi->clear();
225
	   lineEdit_GesBelast->clear();
44 andreas 226
	   lineEdit_ErgRate->clear();
227
	   lineEdit_ErgLRate->clear();
228
	   lineEdit_ErgZinsen->clear();
229
	   lineEdit_ErgZiZusch->clear();
230
	   lineEdit_ErgAnnZusch->clear();
231
	   lineEdit_ErgSumAnnZusch->clear();
43 root 232
	   return;
233
	}
52 andreas 234
 
235
	if (TpPars.effformel > 0.0)
236
	   PointNumber(TpPars.effformel, 3, &hv0[0]);
237
	else
238
	   PointNumber(TpPars.gewicht, 3, &hv0[0]);
239
 
43 root 240
	lineEdit_EffZi->clear();
241
	lineEdit_EffZi->insert(hv0);
44 andreas 242
 
43 root 243
	PointNumber(TpPars.gesamt, 2, &hv0[0]);
244
	lineEdit_GesBelast->clear();
245
	lineEdit_GesBelast->insert(hv0);
44 andreas 246
 
247
//	kDoubleNumInput_Rate->setValue(TpPars.ergrate);
43 root 248
	kIntNumInput_AnzRaten->setValue(TpPars.anzraten);
44 andreas 249
 
43 root 250
	date_int(&day1, &mon1, &year1, TpPars.dbis);
251
	dt.setYMD(year1, mon1, day1);
252
	kDateWidget_RaBis->setDate(dt);
44 andreas 253
 
43 root 254
	date_int(&day1, &mon1, &year1, TpPars.endfaell);
255
	dt.setYMD(year1, mon1, day1);
256
	kDateWidget_Endfael->setDate(dt);
44 andreas 257
 
258
	PointNumber(TpPars.ergrate, 2, hv0);
259
	lineEdit_ErgRate->clear();
260
	lineEdit_ErgRate->insert(hv0);
261
 
262
	PointNumber(TpPars.lrate, 2, hv0);
263
	lineEdit_ErgLRate->clear();
264
	lineEdit_ErgLRate->insert(hv0);
265
 
266
	PointNumber(TpPars.ezins, 2, hv0);
267
	lineEdit_ErgZinsen->clear();
268
	lineEdit_ErgZinsen->insert(hv0);
269
 
270
	PointNumber(TpPars.zuschuss, 2, hv0);
271
	lineEdit_ErgZiZusch->clear();
272
	lineEdit_ErgZiZusch->insert(hv0);
273
 
274
	PointNumber(TpPars.anzuschuss, 2, hv0);
275
	lineEdit_ErgAnnZusch->clear();
276
	lineEdit_ErgAnnZusch->insert(hv0);
277
 
278
	PointNumber(TpPars.antotal, 2, hv0);
279
	lineEdit_ErgSumAnnZusch->clear();
280
	lineEdit_ErgSumAnnZusch->insert(hv0);
43 root 281
}
282
 
283
void tilgungsplanWidget::txRaDezSlot()
44 andreas 284
{}
43 root 285
 
286
void tilgungsplanWidget::txRaNovSlot()
44 andreas 287
{}
43 root 288
 
289
void tilgungsplanWidget::txRaOktSlot()
44 andreas 290
{}
43 root 291
 
292
void tilgungsplanWidget::txRaSepSlot()
44 andreas 293
{}
43 root 294
 
295
void tilgungsplanWidget::txRaAugSlot()
44 andreas 296
{}
43 root 297
 
298
void tilgungsplanWidget::txRaJulSlot()
44 andreas 299
{}
43 root 300
 
301
void tilgungsplanWidget::txRaJunSlot()
44 andreas 302
{}
43 root 303
 
304
void tilgungsplanWidget::txRaMaiSlot()
44 andreas 305
{}
43 root 306
 
307
void tilgungsplanWidget::txRaMarSlot()
44 andreas 308
{}
43 root 309
 
310
void tilgungsplanWidget::txRaFebSlot()
44 andreas 311
{}
43 root 312
 
313
void tilgungsplanWidget::txRaJanSlot()
44 andreas 314
{}
43 root 315
 
316
void tilgungsplanWidget::txRaAprSlot()
44 andreas 317
{}
43 root 318
 
319
void tilgungsplanWidget::txGesBelastSlot()
320
{}
321
 
322
void tilgungsplanWidget::txEffZiSlot()
323
{}
324
 
325
void tilgungsplanWidget::intAnzRatenSlot()
326
{}
327
 
328
void tilgungsplanWidget::numAnnZuschSlot()
329
{}
330
 
331
void tilgungsplanWidget::dtZiGiltAbSlot()
332
{}
333
 
334
void tilgungsplanWidget::dtRaVonSlot()
335
{}
336
 
337
void tilgungsplanWidget::dtRaBisSlot()
338
{}
339
 
340
void tilgungsplanWidget::dtEndfaelSlot()
341
{}
342
 
343
void tilgungsplanWidget::dtAuszahlSlot()
344
{}
345
 
346
void tilgungsplanWidget::dtAbschlussSlot()
347
{}
348
 
349
void tilgungsplanWidget::lbRatartSlot()
350
{}
351
 
352
void tilgungsplanWidget::cbZiChangeSlot()
353
{}
354
 
355
void tilgungsplanWidget::cbUltimoSlot()
356
{}
357
 
358
void tilgungsplanWidget::cbRateSlot()
359
{}
360
 
361
void tilgungsplanWidget::mnCalcTPSlot()
362
{}
363
 
44 andreas 364
void tilgungsplanWidget::mnInputZiSlot()
365
{
366
ziaendWidget *dlg = new ziaendWidget(this, "ziaendWidgetBase", TRUE, 0);
367
 
52 andreas 368
	dlg->exec();
44 andreas 369
	delete dlg;
370
}
371
 
43 root 372
void tilgungsplanWidget::lbVerzartSlot()
373
{}
374
 
375
void tilgungsplanWidget::lbTageberSlot()
376
{}
377
 
378
void tilgungsplanWidget::numZuzaehlSlot()
379
{}
380
 
381
void tilgungsplanWidget::numBeaGebSlot()
382
{}
383
 
384
void tilgungsplanWidget::numZisatzSlot()
385
{}
386
 
387
void tilgungsplanWidget::numZiZuschSlot()
388
{}
389
 
390
void tilgungsplanWidget::numRateSlot()
391
{}
392
 
393
void tilgungsplanWidget::numFixspesenSlot()
394
{}
395
 
52 andreas 396
void tilgungsplanWidget::rbZuschPSlot()
397
{
398
	if (radioButton_ZuschP->isChecked())
399
	{
400
	   kDoubleNumInput_ZiZuschuss->setProperty("enabled", QVariant("TRUE"));
401
	   kDoubleNumInput_ZuschFix->setProperty("enabled", QVariant("FALSE"));
402
	   radioButton_ZuschF->setChecked(FALSE);
403
	}
404
	else
405
	{
406
	   kDoubleNumInput_ZiZuschuss->setProperty("enabled", QVariant("FALSE"));
407
	   kDoubleNumInput_ZuschFix->setProperty("enabled", QVariant("TRUE"));
408
	   radioButton_ZuschF->setChecked(TRUE);
409
	}
410
}
411
 
412
void tilgungsplanWidget::rbZuschFSlot()
413
{
414
	if (radioButton_ZuschF->isChecked())
415
	{
416
	   kDoubleNumInput_ZiZuschuss->setProperty("enabled", QVariant("FALSE"));
417
	   kDoubleNumInput_ZuschFix->setProperty("enabled", QVariant("TRUE"));
418
	   radioButton_ZuschP->setChecked(FALSE);
419
	}
420
	else
421
	{
422
	   kDoubleNumInput_ZiZuschuss->setProperty("enabled", QVariant("TRUE"));
423
	   kDoubleNumInput_ZuschFix->setProperty("enabled", QVariant("FALSE"));
424
	   radioButton_ZuschP->setChecked(TRUE);
425
	}
426
}
427
 
43 root 428
void tilgungsplanWidget::cbRundenSlot()
429
{}
430
 
431
void tilgungsplanWidget::numBetragSlot()
432
{}
433
 
434
void tilgungsplanWidget::helpAbout()
435
{}
436
 
437
void tilgungsplanWidget::helpContents()
438
{}
439
 
440
void tilgungsplanWidget::helpIndex()
441
{}
442
 
443
void tilgungsplanWidget::editFind()
444
{}
445
 
446
void tilgungsplanWidget::editPaste()
447
{}
448
 
449
void tilgungsplanWidget::editCopy()
450
{}
451
 
452
void tilgungsplanWidget::editCut()
453
{}
454
 
455
void tilgungsplanWidget::editRedo()
456
{}
457
 
458
void tilgungsplanWidget::editUndo()
459
{}
460
 
461
void tilgungsplanWidget::fileExit()
44 andreas 462
{
43 root 463
 
44 andreas 464
}
465
 
43 root 466
void tilgungsplanWidget::filePrint()
467
{}
468
 
469
void tilgungsplanWidget::fileSaveAs()
470
{}
471
 
472
void tilgungsplanWidget::fileSave()
473
{}
474
 
475
void tilgungsplanWidget::fileOpen()
476
{}
477
 
478
void tilgungsplanWidget::fileNew()
479
{}
480
 
481
void tilgungsplanWidget::lbValutaSlot()
482
{}
483
 
484
void tilgungsplanWidget::cbAbschlSlot()
485
{
486
int item = comboBox_Abschl->currentItem();
487
char hv0[256];
488
 
489
	switch (item)
490
	{
491
           case 0: TpPars.abschlry = 0; break;
492
	   case 1: TpPars.abschlry = 1; break;
493
	   case 2: TpPars.abschlry = 3; break;
494
	   case 3: TpPars.abschlry = 6; break;
495
	   case 4: TpPars.abschlry = 12; break;
496
	   case 5: TpPars.abschlry = 41; break;
497
	   case 6: TpPars.abschlry = 43; break;
498
	   case 7: TpPars.abschlry = 46; break;
499
	   case 8: TpPars.abschlry = 47; break;
500
	   case 9: TpPars.abschlry = 48; break;
501
	   case 10: TpPars.abschlry = 52; break;
502
	   default:
503
	      sprintf (hv0, "Gewähltes Item: %d", item);
504
	      KMessageBox::information(0, i18n(hv0));
505
        }
506
}
507
 
508
#include "tilgungsplanwidget.moc"
509