Rev 44 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
/***************************************************************************
* Copyright (C) 2007 by Andreas Theofilu *
* andreas@TheoSys.at *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include <klineedit.h>
#include <kmessagebox.h>
#include <klocale.h>
#include <kdatewidget.h>
#include <kcombobox.h>
#include <knuminput.h>
#include <qcheckbox.h>
#include <stdlib.h>
#include <iostream.h>
#include "helper.h"
#include "tilgungsplanwidget.h"
#include "ziaendwidget.h"
tilgungsplanWidget::tilgungsplanWidget ( QWidget* parent, const char* name, WFlags fl )
: tilgungsplanWidgetBase ( parent,name,fl )
{
QDate dt;
// Maske mit sinnvollen Parametern versorgen
comboBox_tageber->setCurrentItem(3);
comboBox_Ratart->setCurrentItem(1);
comboBox_Abschl->setCurrentItem(10);
kDoubleNumInput_Zinssatz->setValue(5.5);
kDateWidget_Auszahlung->setDate(QDate::currentDate());
// Datum: Der 5. des nächsten Monats
dt = QDate::currentDate();
dt = dt.addMonths(1);
dt.setYMD(dt.year(), dt.month(), 5);
kDateWidget_RaVon->setDate(dt);
dt = dt.addYears(1);
kDateWidget_RaBis->setDate(dt);
kDateWidget_ZiGiltAb->setDate(QDate::currentDate());
kDoubleNumInput_Betrag->setValue(100000.0);
}
tilgungsplanWidget::~tilgungsplanWidget()
{}
/*$SPECIALIZATION$*/
void tilgungsplanWidget::mnCalcTPSumSlot()
{
QDate dt, dt1;
QString str, zia;
TRech *tp;
int ret, day1, day2, mon1, mon2, year1, year2;
char hv0[255];
// Wurde eine Zinssatzänderung gewünscht, dann rufen wird die
// Dialogbox dazu auf.
if (checkBox_ZiChange->isChecked())
{
ziaendWidgetBase *dlg = new ziaendWidgetBase(this, "ziaendWidgetBase", TRUE, 0);
if (dlg->exec() == QDialog::Accepted)
zia = QString::fromUtf8(".zinstbl.dat");
else
zia = QString::fromUtf8("");
delete dlg;
}
// Zuweisen der Inhalte der Widgets zur internen Parameterstruktur.
TpPars.effformel = 0.0;
TpPars.gewicht = 0.0;
TpPars.tageb = comboBox_tageber->currentItem();
TpPars.verzart = comboBox_verzart->currentItem();
TpPars.ratenart = comboBox_Ratart->currentItem();
TpPars.valuta = comboBox_valuta->currentItem();
TpPars.zssoll = kDoubleNumInput_Zinssatz->value();
TpPars.zuschfix = kDoubleNumInput_ZiZuschuss->value();
TpPars.zuschprz = 0.0;
TpPars.zuschannu = kDoubleNumInput_AnnZuschuss->value();
dt = kDateWidget_Auszahlung->date();
TpPars.ragab = make_date(dt.day(), dt.month(), dt.year());
dt = kDateWidget_Abschluss->date();
TpPars.abschl = make_date(dt.day(), dt.month(), dt.year());
TpPars.ultimo = checkBox_RechUltimo->isChecked();
TpPars.anzraten = kIntNumInput_AnzRaten->value();
ret = comboBox_Abschl->currentItem();
switch (ret)
{
case 0: TpPars.abschlry = 0; break;
case 1: TpPars.abschlry = 1; break;
case 2: TpPars.abschlry = 3; break;
case 3: TpPars.abschlry = 6; break;
case 4: TpPars.abschlry = 12; break;
case 5: TpPars.abschlry = 41; break;
case 6: TpPars.abschlry = 43; break;
case 7: TpPars.abschlry = 46; break;
case 8: TpPars.abschlry = 47; break;
case 9: TpPars.abschlry = 48; break;
case 10: TpPars.abschlry = 52; break;
}
TpPars.zuschver = 0; // Zuschuss Verrechnung ??
TpPars.spesen = kDoubleNumInput_Fixspesen->value();
TpPars.rahmen = kDoubleNumInput_Betrag->value();
TpPars.kapital = 0.0;
TpPars.raplan[0] = atoi(lineEdit_RaJan->text());
TpPars.raplan[1] = atoi(lineEdit_RaFeb->text());
TpPars.raplan[2] = atoi(lineEdit_RaMar->text());
TpPars.raplan[3] = atoi(lineEdit_RaApr->text());
TpPars.raplan[4] = atoi(lineEdit_RaMai->text());
TpPars.raplan[5] = atoi(lineEdit_RaJun->text());
TpPars.raplan[6] = atoi(lineEdit_RaJul->text());
TpPars.raplan[7] = atoi(lineEdit_RaAug->text());
TpPars.raplan[8] = atoi(lineEdit_RaSep->text());
TpPars.raplan[9] = atoi(lineEdit_RaOkt->text());
TpPars.raplan[10] = atoi(lineEdit_RaNov->text());
TpPars.raplan[11] = atoi(lineEdit_RaDez->text());
TpPars.rate = kDoubleNumInput_Rate->value();
dt = kDateWidget_RaVon->date();
TpPars.dvon = make_date(dt.day(), dt.month(), dt.year());
dt = kDateWidget_RaBis->date();
TpPars.dbis = make_date(dt.day(), dt.month(), dt.year());
dt = kDateWidget_Endfael->date();
TpPars.endfaell = make_date(dt.day(), dt.month(), dt.year());
TpPars.runden = checkBox_Runden->isChecked();
TpPars.mehrfach = FALSE;
TpPars.laufstop = FALSE;
TpPars.ziaend = FALSE;
TpPars.effekt = TRUE;
TpPars.fixrate = checkBox_Rate->isChecked();
if (TpPars.dbis > TpPars.endfaell)
TpPars.endfaell = TpPars.dbis;
// Berechnung anstossen
tp = new TRech (&TpPars);
if ((ret = tp->tilgpl()) != 0)
{
switch (ret)
{
case 1: str = QString::fromUtf8("Fehler beim Erzeugen einer Temporärdatei!"); break;
case 2: str = QString::fromUtf8("Erste Einschränkung nicht vorhanden!"); break;
case 3:
date_int (&day1, &mon1, &year1, TpPars.ragab);
date_int (&day2, &mon2, &year2, TpPars.dvon);
sprintf (hv0, "Das Auszahlungsdatum (%02d.%02d.%d) muss kleiner als das Datum der ersten Einschränkung sein (%02d.%02d.%d)!",
day1, mon1, year1, day2, mon2, year2);
str = QString::fromUtf8(hv0); break;
case 4:
date_int (&day1, &mon1, &year1, TpPars.abschl);
date_int (&day2, &mon2, &year2, TpPars.ragab);
sprintf (hv0, "Das Abschlussdatum (%02d.%02d.%d) darf nicht kleiner als das Auszahlungsdatum (%02d, %02d.%d) sein!",
day1, mon1, year1, day2, mon2, year2);
str = QString::fromUtf8(hv0); break;
case 5:
date_int (&day1, &mon1, &year1, TpPars.dvon);
date_int (&day2, &mon2, &year2, TpPars.dbis);
sprintf (hv0, "Die erste Einschränkung (%02d.%02d.%d) darf nicht größer als die letzte Einschränkung (%02d.%02d.%d) sein!",
day1, mon1, year1, day2, mon2, year2);
str = QString::fromUtf8(hv0); break;
case 6:
date_int (&day1, &mon1, &year1, TpPars.dbis);
date_int (&day2, &mon2, &year2, TpPars.endfaell);
sprintf (hv0, "Die letzte Einschränkung (%02d.%02d.%d) darf nicht größer die Endfälligkeit (%02d.%02d.%d) sein!",
day1, mon1, year1, day2, mon2, year2);
str = QString::fromUtf8(hv0); break;
case 7: str = QString::fromUtf8("Es wurde keine Rate angegeben!"); break;
case 8: str = QString::fromUtf8("Kein, oder ungültiges Auszahlungsdatum!"); break;
case 9: str = QString::fromUtf8("Die Verzinsung in Bezug auf den Abschlussrythmus ist ungültig!"); break;
case 10: str = QString::fromUtf8("Das Abschlussdatum fehlt oder ist ungültig!"); break;
case 11:
sprintf(hv0, "Der Abschlussrythmus ist ungültig! (%d)",TpPars.abschlry);
str = QString::fromUtf8(hv0); break;
case 12: str = QString::fromUtf8("Die Verzinsungsart ist ungültig!"); break;
case 13: str = QString::fromUtf8("Die Ratenart ist ungültig!"); break;
case 14: str = QString::fromUtf8("Die Laufzeit ist über 100 Jahre!"); break;
case 15: str = QString::fromUtf8("Es wurde keine Rate vorgegeben!"); break;
case 16: str = QString::fromUtf8("Die vorgegebene Rate darf nicht kleiner als 0 sein!"); break;
case 18: str = QString::fromUtf8("Die erste Einschränkung oder die Ratenleiste ist ungültig!"); break;
case 19: str = QString::fromUtf8("Die letzte Einschränkung oder die Ratenleiste ist ungültig!"); break;
case 22: str = QString::fromUtf8("Nicht genügend Speicher!"); break;
case 23: str = QString::fromUtf8("\"Antizipativ\" erlaubt keine Zinssatzänderung!"); break;
case 24: str = QString::fromUtf8("Fehler beim Lesen der Zinssatzänderungen!"); break;
default:
sprintf (hv0, "Unbekannter Fehler \"%d\"! Prüfen Sie die Eingaben.", ret);
str = QString::fromUtf8(hv0);
}
KMessageBox::error(0, str, i18n("Fehler"));
lineEdit_EffZi->clear();
lineEdit_GesBelast->clear();
return;
}
// cout << "Effektivzinssätze: " << TpPars.effformel << ", " << TpPars.gewicht << endl;
PointNumber(TpPars.effformel, 3, &hv0[0]);
lineEdit_EffZi->clear();
lineEdit_EffZi->insert(hv0);
PointNumber(TpPars.gesamt, 2, &hv0[0]);
lineEdit_GesBelast->clear();
lineEdit_GesBelast->insert(hv0);
kDoubleNumInput_Rate->setValue(TpPars.ergrate);
kIntNumInput_AnzRaten->setValue(TpPars.anzraten);
date_int(&day1, &mon1, &year1, TpPars.dbis);
dt.setYMD(year1, mon1, day1);
kDateWidget_RaBis->setDate(dt);
date_int(&day1, &mon1, &year1, TpPars.endfaell);
dt.setYMD(year1, mon1, day1);
kDateWidget_Endfael->setDate(dt);
}
void tilgungsplanWidget::txRaDezSlot()
{
QString svalue = lineEdit_RaDez->text();
if (!svalue.isEmpty() && svalue.compare("0") && svalue.compare("1"))
{
lineEdit_RaDez->clear();
KMessageBox::information(0, i18n("Es sind nur die Ziffern 0 und 1 erlabt!"), i18n("Warnung"));
}
}
void tilgungsplanWidget::txRaNovSlot()
{
QString svalue = lineEdit_RaNov->text();
if (!svalue.isEmpty() && svalue.compare("0") && svalue.compare("1"))
{
lineEdit_RaNov->clear();
KMessageBox::information(0, i18n("Es sind nur die Ziffern 0 und 1 erlabt!"), i18n("Warnung"));
}
}
void tilgungsplanWidget::txRaOktSlot()
{
QString svalue = lineEdit_RaOkt->text();
if (!svalue.isEmpty() && svalue.compare("0") && svalue.compare("1"))
{
lineEdit_RaOkt->clear();
KMessageBox::information(0, i18n("Es sind nur die Ziffern 0 und 1 erlabt!"), i18n("Warnung"));
}
}
void tilgungsplanWidget::txRaSepSlot()
{
QString svalue = lineEdit_RaSep->text();
if (!svalue.isEmpty() && svalue.compare("0") && svalue.compare("1"))
{
lineEdit_RaSep->clear();
KMessageBox::information(0, i18n("Es sind nur die Ziffern 0 und 1 erlabt!"), i18n("Warnung"));
}
}
void tilgungsplanWidget::txRaAugSlot()
{
QString svalue = lineEdit_RaAug->text();
if (!svalue.isEmpty() && svalue.compare("0") && svalue.compare("1"))
{
lineEdit_RaAug->clear();
KMessageBox::information(0, i18n("Es sind nur die Ziffern 0 und 1 erlabt!"), i18n("Warnung"));
}
}
void tilgungsplanWidget::txRaJulSlot()
{
QString svalue = lineEdit_RaJul->text();
if (!svalue.isEmpty() && svalue.compare("0") && svalue.compare("1"))
{
lineEdit_RaJul->clear();
KMessageBox::information(0, i18n("Es sind nur die Ziffern 0 und 1 erlabt!"), i18n("Warnung"));
}
}
void tilgungsplanWidget::txRaJunSlot()
{
QString svalue = lineEdit_RaJun->text();
if (!svalue.isEmpty() && svalue.compare("0") && svalue.compare("1"))
{
lineEdit_RaJun->clear();
KMessageBox::information(0, i18n("Es sind nur die Ziffern 0 und 1 erlabt!"), i18n("Warnung"));
}
}
void tilgungsplanWidget::txRaMaiSlot()
{
QString svalue = lineEdit_RaMai->text();
if (!svalue.isEmpty() && svalue.compare("0") && svalue.compare("1"))
{
lineEdit_RaMai->clear();
KMessageBox::information(0, i18n("Es sind nur die Ziffern 0 und 1 erlabt!"), i18n("Warnung"));
}
}
void tilgungsplanWidget::txRaMarSlot()
{
QString svalue = lineEdit_RaMar->text();
if (!svalue.isEmpty() && svalue.compare("0") && svalue.compare("1"))
{
lineEdit_RaMar->clear();
KMessageBox::information(0, i18n("Es sind nur die Ziffern 0 und 1 erlabt!"), i18n("Warnung"));
}
}
void tilgungsplanWidget::txRaFebSlot()
{
QString svalue = lineEdit_RaFeb->text();
if (!svalue.isEmpty() && svalue.compare("0") && svalue.compare("1"))
{
lineEdit_RaFeb->clear();
KMessageBox::information(0, i18n("Es sind nur die Ziffern 0 und 1 erlabt!"), i18n("Warnung"));
}
}
void tilgungsplanWidget::txRaJanSlot()
{
QString svalue = lineEdit_RaJan->text();
if (!svalue.isEmpty() && svalue.compare("0") && svalue.compare("1"))
{
lineEdit_RaJan->clear();
KMessageBox::information(0, i18n("Es sind nur die Ziffern 0 und 1 erlabt!"), i18n("Warnung"));
}
}
void tilgungsplanWidget::txRaAprSlot()
{
QString svalue = lineEdit_RaApr->text();
if (!svalue.isEmpty() && svalue.compare("0") && svalue.compare("1"))
{
lineEdit_RaApr->clear();
KMessageBox::information(0, i18n("Es sind nur die Ziffern 0 und 1 erlabt!"), i18n("Warnung"));
}
}
void tilgungsplanWidget::txGesBelastSlot()
{}
void tilgungsplanWidget::txEffZiSlot()
{}
void tilgungsplanWidget::txAbDezSlot()
{
QString svalue = lineEdit_AbDez->text();
if (!svalue.isEmpty() && svalue.compare("0") && svalue.compare("1"))
{
lineEdit_AbDez->clear();
KMessageBox::information(0, i18n("Es sind nur die Ziffern 0 und 1 erlabt!"), i18n("Warnung"));
}
}
void tilgungsplanWidget::txAbNovSlot()
{
QString svalue = lineEdit_AbNov->text();
if (!svalue.isEmpty() && svalue.compare("0") && svalue.compare("1"))
{
lineEdit_AbNov->clear();
KMessageBox::information(0, i18n("Es sind nur die Ziffern 0 und 1 erlabt!"), i18n("Warnung"));
}
}
void tilgungsplanWidget::txAbOktSlot()
{
QString svalue = lineEdit_AbOkt->text();
if (!svalue.isEmpty() && svalue.compare("0") && svalue.compare("1"))
{
lineEdit_AbOkt->clear();
KMessageBox::information(0, i18n("Es sind nur die Ziffern 0 und 1 erlabt!"), i18n("Warnung"));
}
}
void tilgungsplanWidget::txAbSepSlot()
{
QString svalue = lineEdit_AbSep->text();
if (!svalue.isEmpty() && svalue.compare("0") && svalue.compare("1"))
{
lineEdit_AbSep->clear();
KMessageBox::information(0, i18n("Es sind nur die Ziffern 0 und 1 erlabt!"), i18n("Warnung"));
}
}
void tilgungsplanWidget::txAbAugSlot()
{
QString svalue = lineEdit_AbAug->text();
if (!svalue.isEmpty() && svalue.compare("0") && svalue.compare("1"))
{
lineEdit_AbAug->clear();
KMessageBox::information(0, i18n("Es sind nur die Ziffern 0 und 1 erlabt!"), i18n("Warnung"));
}
}
void tilgungsplanWidget::txAbJulSlot()
{
QString svalue = lineEdit_AbJul->text();
if (!svalue.isEmpty() && svalue.compare("0") && svalue.compare("1"))
{
lineEdit_AbJul->clear();
KMessageBox::information(0, i18n("Es sind nur die Ziffern 0 und 1 erlabt!"), i18n("Warnung"));
}
}
void tilgungsplanWidget::txAbJunSlot()
{
QString svalue = lineEdit_AbJun->text();
if (!svalue.isEmpty() && svalue.compare("0") && svalue.compare("1"))
{
lineEdit_AbJun->clear();
KMessageBox::information(0, i18n("Es sind nur die Ziffern 0 und 1 erlabt!"), i18n("Warnung"));
}
}
void tilgungsplanWidget::txAbMaiSlot()
{QString svalue = lineEdit_AbMai->text();
if (!svalue.isEmpty() && svalue.compare("0") && svalue.compare("1"))
{
lineEdit_AbMai->clear();
KMessageBox::information(0, i18n("Es sind nur die Ziffern 0 und 1 erlabt!"), i18n("Warnung"));
}}
void tilgungsplanWidget::txAbMarSlot()
{
QString svalue = lineEdit_AbMar->text();
if (!svalue.isEmpty() && svalue.compare("0") && svalue.compare("1"))
{
lineEdit_AbMar->clear();
KMessageBox::information(0, i18n("Es sind nur die Ziffern 0 und 1 erlabt!"), i18n("Warnung"));
}
}
void tilgungsplanWidget::txAbFebSlot()
{
QString svalue = lineEdit_AbFeb->text();
if (!svalue.isEmpty() && svalue.compare("0") && svalue.compare("1"))
{
lineEdit_AbFeb->clear();
KMessageBox::information(0, i18n("Es sind nur die Ziffern 0 und 1 erlabt!"), i18n("Warnung"));
}
}
void tilgungsplanWidget::txAbJanSlot()
{
QString svalue = lineEdit_AbJan->text();
if (!svalue.isEmpty() && svalue.compare("0") && svalue.compare("1"))
{
lineEdit_AbJan->clear();
KMessageBox::information(0, i18n("Es sind nur die Ziffern 0 und 1 erlabt!"), i18n("Warnung"));
}
}
void tilgungsplanWidget::txAbAprSlot()
{
QString svalue = lineEdit_AbApr->text();
if (!svalue.isEmpty() && svalue.compare("0") && svalue.compare("1"))
{
lineEdit_AbApr->clear();
KMessageBox::information(0, i18n("Es sind nur die Ziffern 0 und 1 erlabt!"), i18n("Warnung"));
}
}
void tilgungsplanWidget::intAnzRatenSlot()
{}
void tilgungsplanWidget::numAnnZuschSlot()
{}
void tilgungsplanWidget::dtZiGiltAbSlot()
{}
void tilgungsplanWidget::dtRaVonSlot()
{}
void tilgungsplanWidget::dtRaBisSlot()
{}
void tilgungsplanWidget::dtEndfaelSlot()
{}
void tilgungsplanWidget::dtAuszahlSlot()
{}
void tilgungsplanWidget::dtAbschlussSlot()
{}
void tilgungsplanWidget::lbRatartSlot()
{}
void tilgungsplanWidget::cbZiChangeSlot()
{}
void tilgungsplanWidget::cbUltimoSlot()
{}
void tilgungsplanWidget::cbRateSlot()
{}
void tilgungsplanWidget::mnCalcTPSlot()
{}
void tilgungsplanWidget::lbVerzartSlot()
{}
void tilgungsplanWidget::lbTageberSlot()
{}
void tilgungsplanWidget::numZuzaehlSlot()
{}
void tilgungsplanWidget::numBeaGebSlot()
{}
void tilgungsplanWidget::numZisatzSlot()
{}
void tilgungsplanWidget::numZiZuschSlot()
{}
void tilgungsplanWidget::numRateSlot()
{}
void tilgungsplanWidget::numFixspesenSlot()
{}
void tilgungsplanWidget::cbRundenSlot()
{}
void tilgungsplanWidget::numBetragSlot()
{}
void tilgungsplanWidget::helpAbout()
{}
void tilgungsplanWidget::helpContents()
{}
void tilgungsplanWidget::helpIndex()
{}
void tilgungsplanWidget::editFind()
{}
void tilgungsplanWidget::editPaste()
{}
void tilgungsplanWidget::editCopy()
{}
void tilgungsplanWidget::editCut()
{}
void tilgungsplanWidget::editRedo()
{}
void tilgungsplanWidget::editUndo()
{}
void tilgungsplanWidget::fileExit()
{}
void tilgungsplanWidget::filePrint()
{}
void tilgungsplanWidget::fileSaveAs()
{}
void tilgungsplanWidget::fileSave()
{}
void tilgungsplanWidget::fileOpen()
{}
void tilgungsplanWidget::fileNew()
{}
void tilgungsplanWidget::lbValutaSlot()
{}
void tilgungsplanWidget::cbAbschlSlot()
{
int item = comboBox_Abschl->currentItem();
char hv0[256];
switch (item)
{
case 0: TpPars.abschlry = 0; break;
case 1: TpPars.abschlry = 1; break;
case 2: TpPars.abschlry = 3; break;
case 3: TpPars.abschlry = 6; break;
case 4: TpPars.abschlry = 12; break;
case 5: TpPars.abschlry = 41; break;
case 6: TpPars.abschlry = 43; break;
case 7: TpPars.abschlry = 46; break;
case 8: TpPars.abschlry = 47; break;
case 9: TpPars.abschlry = 48; break;
case 10: TpPars.abschlry = 52; break;
default:
sprintf (hv0, "Gewähltes Item: %d", item);
KMessageBox::information(0, i18n(hv0));
}
}
#include "tilgungsplanwidget.moc"