Subversion Repositories public

Rev

Rev 46 | Rev 64 | 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 version 3 of the License.                *
 *                                                                         *
 *   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.             *
 ***************************************************************************/

#ifndef _ZINSAENDERUNG
   #define _ZINSAENDERUNG
#endif

#include <klineedit.h>
#include <kmessagebox.h>
#include <klocale.h>
#include <kdatewidget.h>
#include <kcombobox.h>
#include <knuminput.h>
#include <qcheckbox.h>
#include <qradiobutton.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);
        checkBox_RaJan->setChecked(TRUE);
        checkBox_RaFeb->setChecked(TRUE);
        checkBox_RaMar->setChecked(TRUE);
        checkBox_RaApr->setChecked(TRUE);
        checkBox_RaMai->setChecked(TRUE);
        checkBox_RaJun->setChecked(TRUE);
        checkBox_RaJul->setChecked(TRUE);
        checkBox_RaAug->setChecked(TRUE);
        checkBox_RaSep->setChecked(TRUE);
        checkBox_RaOkt->setChecked(TRUE);
        checkBox_RaNov->setChecked(TRUE);
        checkBox_RaDez->setChecked(TRUE);
#ifndef _ZINSAENDERUNG
        checkBox_ZiChange->setProperty("enabled", QVariant("FALSE"));
#endif
}

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];

        // Zuweisen der Inhalte der Widgets zur internen Parameterstruktur.
        TpPars.effformel = 0.0;
        TpPars.gewicht = 0.0;
        TpPars.tageb = comboBox_tageber->currentItem() + 1;

        switch (comboBox_verzart->currentItem())
        {
           case 0: TpPars.verzart = 0; break;    // Dekursiv
           case 1: TpPars.verzart = 3; break;   // Antizipativ
           case 2: TpPars.verzart = 7; break;   // Dekursiv; Zinsen am Beg.d. Absclussp.
           case 3: TpPars.verzart = 4; break;   // Unverzinst
        }

        TpPars.ratenart = comboBox_Ratart->currentItem();
        TpPars.valuta = comboBox_valuta->currentItem();
        TpPars.zssoll = kDoubleNumInput_Zinssatz->value();
        TpPars.zuschfix = kDoubleNumInput_ZuschFix->value();
        TpPars.zuschprz = kDoubleNumInput_ZiZuschuss->value();
        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] = checkBox_RaJan->isChecked();
        TpPars.raplan[1] = checkBox_RaFeb->isChecked();
        TpPars.raplan[2] = checkBox_RaMar->isChecked();
        TpPars.raplan[3] = checkBox_RaApr->isChecked();
        TpPars.raplan[4] = checkBox_RaMai->isChecked();
        TpPars.raplan[5] = checkBox_RaJun->isChecked();
        TpPars.raplan[6] = checkBox_RaJul->isChecked();
        TpPars.raplan[7] = checkBox_RaAug->isChecked();
        TpPars.raplan[8] = checkBox_RaSep->isChecked();
        TpPars.raplan[9] = checkBox_RaOkt->isChecked();
        TpPars.raplan[10] = checkBox_RaNov->isChecked();
        TpPars.raplan[11] = checkBox_RaDez->isChecked();
        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;
#ifdef _ZINSAENDERUNG
        TpPars.ziaend = checkBox_ZiChange->isChecked();
#else
        TpPars.ziaend = FALSE;
#endif
        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: 
              case 25: 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();
           lineEdit_ErgRate->clear();
           lineEdit_ErgLRate->clear();
           lineEdit_ErgZinsen->clear();
           lineEdit_ErgZiZusch->clear();
           lineEdit_ErgAnnZusch->clear();
           lineEdit_ErgSumAnnZusch->clear();
           return;
        }

        if (TpPars.effformel > 0.0)
           PointNumber(TpPars.effformel, 3, &hv0[0]);
        else
           PointNumber(TpPars.gewicht, 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);

        PointNumber(TpPars.ergrate, 2, hv0);
        lineEdit_ErgRate->clear();
        lineEdit_ErgRate->insert(hv0);

        PointNumber(TpPars.lrate, 2, hv0);
        lineEdit_ErgLRate->clear();
        lineEdit_ErgLRate->insert(hv0);

        PointNumber(TpPars.ezins, 2, hv0);
        lineEdit_ErgZinsen->clear();
        lineEdit_ErgZinsen->insert(hv0);

        PointNumber(TpPars.zuschuss, 2, hv0);
        lineEdit_ErgZiZusch->clear();
        lineEdit_ErgZiZusch->insert(hv0);

        PointNumber(TpPars.anzuschuss, 2, hv0);
        lineEdit_ErgAnnZusch->clear();
        lineEdit_ErgAnnZusch->insert(hv0);

        PointNumber(TpPars.antotal, 2, hv0);
        lineEdit_ErgSumAnnZusch->clear();
        lineEdit_ErgSumAnnZusch->insert(hv0);
}

void tilgungsplanWidget::txRaDezSlot()
{}

void tilgungsplanWidget::txRaNovSlot()
{}

void tilgungsplanWidget::txRaOktSlot()
{}

void tilgungsplanWidget::txRaSepSlot()
{}

void tilgungsplanWidget::txRaAugSlot()
{}

void tilgungsplanWidget::txRaJulSlot()
{}

void tilgungsplanWidget::txRaJunSlot()
{}

void tilgungsplanWidget::txRaMaiSlot()
{}

void tilgungsplanWidget::txRaMarSlot()
{}

void tilgungsplanWidget::txRaFebSlot()
{}

void tilgungsplanWidget::txRaJanSlot()
{}

void tilgungsplanWidget::txRaAprSlot()
{}

void tilgungsplanWidget::txGesBelastSlot()
{}

void tilgungsplanWidget::txEffZiSlot()
{}

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::mnInputZiSlot()
{
ziaendWidget *dlg = new ziaendWidget(this, "ziaendWidgetBase", TRUE, 0);

        dlg->exec();
        delete dlg;
}

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::rbZuschPSlot()
{
        if (radioButton_ZuschP->isChecked())
        {
           kDoubleNumInput_ZiZuschuss->setProperty("enabled", QVariant("TRUE"));
           kDoubleNumInput_ZuschFix->setProperty("enabled", QVariant("FALSE"));
           radioButton_ZuschF->setChecked(FALSE);
        }
        else
        {
           kDoubleNumInput_ZiZuschuss->setProperty("enabled", QVariant("FALSE"));
           kDoubleNumInput_ZuschFix->setProperty("enabled", QVariant("TRUE"));
           radioButton_ZuschF->setChecked(TRUE);
        }
}

void tilgungsplanWidget::rbZuschFSlot()
{
        if (radioButton_ZuschF->isChecked())
        {
           kDoubleNumInput_ZiZuschuss->setProperty("enabled", QVariant("FALSE"));
           kDoubleNumInput_ZuschFix->setProperty("enabled", QVariant("TRUE"));
           radioButton_ZuschP->setChecked(FALSE);
        }
        else
        {
           kDoubleNumInput_ZiZuschuss->setProperty("enabled", QVariant("TRUE"));
           kDoubleNumInput_ZuschFix->setProperty("enabled", QVariant("FALSE"));
           radioButton_ZuschP->setChecked(TRUE);
        }
}

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"