Hallo Martin,

anbei ein Patch fuer QBankManager und AqBanking, der die Verwaltung des
Datums der letzten Ausfuehrung von Dauerauftraegen ermoeglicht (bei
Neuanlage und Aenderung von Dauerauftraegen).

Bisher war dies nicht moeglich und ein evtl. anderweitig vergebenes
Endedatum (z.B. ueber das Webinterface der Bank) verschwand bei einer
Aenderung des Dauerauftrages mit QbankManager.

Gleichzeitig wird auch die Aenderung des Tages des Ausfuehrung im Monat
verbessert.

Gruss,
Manfred




Index: /aqbanking/trunk/src/plugins/backends/aqhbci/plugin/accountjobs/jobsingletransfer.c
===================================================================
--- /aqbanking/trunk/src/plugins/backends/aqhbci/plugin/accountjobs/jobsingletransfer.c	(Revision 1461)
+++ /aqbanking/trunk/src/plugins/backends/aqhbci/plugin/accountjobs/jobsingletransfer.c	(Arbeitskopie)
@@ -1425,8 +1425,6 @@
 	  GWEN_Buffer_free(tbuf);
 	}
 
-#if 0
-	/* don't ever set lastExecutionDate */
 	/* lastExecutionDate */
 	ti=AB_Transaction_GetLastExecutionDate(t);
 	if (ti) {
@@ -1440,7 +1438,6 @@
 			       GWEN_Buffer_GetStart(tbuf));
 	  GWEN_Buffer_free(tbuf);
 	}
-#endif
 
 #if 0
 	/* don't ever set nextExecutionDate */


Index: /qbankmanager/trunk/src/kbanking/libs/dialogs/editsto.ui
===================================================================
--- /qbankmanager/trunk/src/kbanking/libs/dialogs/editsto.ui	(Revision 437)
+++ /qbankmanager/trunk/src/kbanking/libs/dialogs/editsto.ui	(Arbeitskopie)
@@ -531,54 +531,48 @@
                     <property name="name">
                         <cstring>layout38</cstring>
                     </property>
-                    <vbox>
+                    <grid>
                         <property name="name">
                             <cstring>unnamed</cstring>
                         </property>
-                        <widget class="QLayoutWidget">
+                        <widget class="QLabel" row="0" column="1">
                             <property name="name">
-                                <cstring>layout37</cstring>
+                                <cstring>startDateLabel</cstring>
                             </property>
-                            <hbox>
-                                <property name="name">
-                                    <cstring>unnamed</cstring>
-                                </property>
-                                <widget class="QLabel">
-                                    <property name="name">
-                                        <cstring>startDateLabel</cstring>
-                                    </property>
-                                    <property name="text">
-                                        <string>Start Date</string>
-                                    </property>
-                                    <property name="alignment">
-                                        <set>AlignVCenter|AlignRight</set>
-                                    </property>
-                                </widget>
-                                <widget class="QDateEdit">
-                                    <property name="name">
-                                        <cstring>startDateEdit</cstring>
-                                    </property>
-                                </widget>
-                            </hbox>
+                            <property name="text">
+                                <string>Start Date</string>
+                            </property>
+                            <property name="alignment">
+                                <set>AlignVCenter|AlignRight</set>
+                            </property>
                         </widget>
-                        <spacer>
+                        <widget class="QDateEdit" row="0" column="3">
                             <property name="name">
-                                <cstring>spacer8</cstring>
+                                <cstring>startDateEdit</cstring>
                             </property>
-                            <property name="orientation">
-                                <enum>Vertical</enum>
+                        </widget>
+                        <widget class="QLabel" row="1" column="1">
+                            <property name="name">
+                                <cstring>lastDateLabel</cstring>
                             </property>
-                            <property name="sizeType">
-                                <enum>Expanding</enum>
+                            <property name="text">
+                                <string>Last Date</string>
                             </property>
-                            <property name="sizeHint">
-                                <size>
-                                    <width>20</width>
-                                    <height>31</height>
-                                </size>
+                            <property name="alignment">
+                                <set>AlignVCenter|AlignRight</set>
                             </property>
-                        </spacer>
-                    </vbox>
+                        </widget>
+                        <widget class="QCheckBox" row="1" column="2">
+                            <property name="name">
+                                <cstring>lastDateEditCheck</cstring>
+                            </property>
+                        </widget>
+                        <widget class="QDateEdit" row="1" column="3">
+                            <property name="name">
+                                <cstring>lastDateEdit</cstring>
+                            </property>
+                        </widget>
+                    </grid>
                 </widget>
             </hbox>
         </widget>
@@ -683,6 +677,8 @@
     <tabstop>monthlyRadio</tabstop>
     <tabstop>cycleMonthCombo</tabstop>
     <tabstop>dayMonthCombo</tabstop>
+    <tabstop>lastDateEditCheck</tabstop>
+    <tabstop>lastDateEdit</tabstop>
     <tabstop>okButton</tabstop>
     <tabstop>abortButton</tabstop>
 </tabstops>
Index: /qbankmanager/trunk/src/kbanking/libs/dialogs/editsto.h
===================================================================
--- /qbankmanager/trunk/src/kbanking/libs/dialogs/editsto.h	(Revision 437)
+++ /qbankmanager/trunk/src/kbanking/libs/dialogs/editsto.h	(Arbeitskopie)
@@ -57,6 +57,7 @@
   void slotGetPayee();
   void slotMonthlyToggled(bool on);
   void slotWeeklyToggled(bool on);
+  void slotLastDateEditCheckToggled(bool on);
   void slotAdjustStartDate(int idx);
 
 private:
Index: /qbankmanager/trunk/src/kbanking/libs/dialogs/editsto.cpp
===================================================================
--- /qbankmanager/trunk/src/kbanking/libs/dialogs/editsto.cpp	(Revision 437)
+++ /qbankmanager/trunk/src/kbanking/libs/dialogs/editsto.cpp	(Arbeitskopie)
@@ -37,6 +37,7 @@
 #include <qdatetimeedit.h>
 #include <qtimer.h>
 #include <qpushbutton.h>
+#include <qcheckbox.h>
 
 #include <list>
 #include <string>
@@ -112,11 +113,16 @@
     resize(nsi);
   }
 
-  if (createMode)
+  if (createMode) {
     startDateEdit->setMinValue(QDate::currentDate());
+    lastDateEditCheck->setChecked( false );
+    lastDateEdit->hide();
+  }
   else {
+    /*  Next execution date should be visible
     startDateLabel->hide();
     startDateEdit->hide();
+    */
   }
 
   /* set validators */
@@ -220,7 +226,7 @@
   monthlyRadio->setChecked(false);
   weeklyRadio->setChecked(false);
 
-  ti=_transfer.ref().getFirstExecutionDate();
+  ti=_transfer.ref().getNextExecutionDate();
   if (ti) {
     int days, months, year;
 
@@ -228,7 +234,16 @@
     startDateEdit->setDate(QDate(year, months+1, days));
   }
   else {
-    startDateEdit->setDate(QDate::currentDate());
+    ti=_transfer.ref().getFirstExecutionDate();
+    if (ti) {
+      int days, months, year;
+  
+      GWEN_Time_GetBrokenDownUtcDate(ti, &days, &months, &year);
+      startDateEdit->setDate(QDate(year, months+1, days));
+    }
+    else {
+      startDateEdit->setDate(QDate::currentDate());
+    }
   }
 
   switch(t.ref().getPeriod()) {
@@ -280,7 +295,21 @@
   } // switch
   slotMonthlyToggled(monthlyRadio->isOn());
 
+  ti=_transfer.ref().getLastExecutionDate();
+  if (ti) {
+    int days, months, year;
 
+    GWEN_Time_GetBrokenDownUtcDate(ti, &days, &months, &year);
+    lastDateEdit->setDate(QDate(year, months+1, days));
+    lastDateEditCheck->setChecked( true );
+    lastDateEdit->setMinValue(startDateEdit->date());
+  }
+  else {
+    lastDateEdit->setDate(QDate());
+    lastDateEditCheck->setChecked( false );
+    lastDateEdit->hide();
+  }
+
   // connect buttons
   QObject::connect(bankCodeButton, SIGNAL(clicked()),
                    this, SLOT(slotBankCode()));
@@ -296,13 +325,18 @@
 		   this, SLOT(slotMonthlyToggled(bool)));
   QObject::connect(weeklyRadio, SIGNAL(toggled(bool)),
 		   this, SLOT(slotWeeklyToggled(bool)));
+  
+  QObject::connect(lastDateEditCheck, SIGNAL(toggled(bool)),
+		   this, SLOT(slotLastDateEditCheckToggled(bool)));
 
-  if (_isCreateMode) {
+  /* if (_isCreateMode) { 
+    // always adjust start date otherwise error appears that start date does not fit  
+  */ 
     QObject::connect(dayMonthCombo, SIGNAL(activated(int)),
 		     this, SLOT(slotAdjustStartDate(int)));
     QObject::connect(dayWeekCombo, SIGNAL(activated(int)),
 		     this, SLOT(slotAdjustStartDate(int)));
-  }
+  /* } */
 
 
   QTimer::singleShot(0, this, SLOT(adjustSize()));
@@ -598,6 +632,21 @@
 	  }
 	}
       }
+      if (lastDateEditCheck->isChecked()) {
+        if (lastDateEdit->date() < startDateEdit->date()) {
+          QMessageBox::critical(this,
+                                _tr("Invalid Input"),
+                                _tr("<qt>"
+                                    "<p>"
+                                    "Last date is earlier than start date."
+                                    "</p>"
+                                    "</qt>"
+                                   ),
+                                _tr("Dismiss"), QString::null);
+          AB_Job_free(j);
+          return;
+        }
+      }
       AB_Job_free(j);
     } // if ba
   } // if a
@@ -788,6 +837,19 @@
   _transfer.ref().setFirstExecutionDate(ti);
   GWEN_Time_free(ti);
 
+  if (lastDateEditCheck->isChecked()) {
+    qd=lastDateEdit->date();
+    ti=GWEN_Time_new(qd.year(),
+                     qd.month()-1,
+                     qd.day(),
+                     12, 00, 00, 1);
+    _transfer.ref().setLastExecutionDate(ti);
+    GWEN_Time_free(ti);
+  }
+  else {
+    _transfer.ref().setLastExecutionDate(0);
+  }
+  
   return QDialog::accept();
 }
 
@@ -851,6 +913,22 @@
   monthlyRadio->setChecked(!on);
 }
 
+void EditStandingOrder::slotLastDateEditCheckToggled(bool on) {
+  
+  QDate qd;
+  
+  if (lastDateEditCheck->isChecked()) {
+    qd=lastDateEdit->date();
+    if (qd.isValid()==false) {
+      lastDateEdit->setDate(startDateEdit->date());
+    }
+    lastDateEdit->setMinValue(startDateEdit->date());
+    lastDateEdit->show();
+  }
+  else {
+    lastDateEdit->hide();
+  }
+}
 
 
 void EditStandingOrder::slotAccountChanged(int i){
@@ -1181,7 +1259,9 @@
       }
 
       if (!_isCreateMode) {
+        /* 
 	startDateEdit->setEnabled(false);
+        */
         localAccountCombo->setEnabled(false);
       }
 
@@ -1435,11 +1515,22 @@
 	  td=tdFirst.addDays(-2);
 	else if (i==99)
 	  td=tdFirst.addDays(-1);
-
-
       }
       startDateEdit->setDate(td);
     }
+      
+    if ( lastDateEdit->date().isValid() ) {
+      
+      if ( lastDateEdit->date().day() != startDateEdit->date().day() ) {
+        lastDateEdit->setDate( QDate(lastDateEdit->date().year(),
+                                     lastDateEdit->date().month(),
+                                     startDateEdit->date().day() ) );
+      }
+      
+      if ( lastDateEdit->date() < startDateEdit->date() ) {
+        lastDateEdit->setDate( startDateEdit->date() );
+      }
+    }
   }
   else {
     // weekly
Index: /qbankmanager/trunk/po/de.po
===================================================================
--- /qbankmanager/trunk/po/de.po	(Revision 437)
+++ /qbankmanager/trunk/po/de.po	(Arbeitskopie)
@@ -2237,6 +2237,10 @@
 msgid "Start Date"
 msgstr "Anfangsdatum"
 
+#: src/kbanking/libs/dialogs/editsto.ui.cpp:559
+msgid "Last Date"
+msgstr "Enddatum"
+
 #: src/kbanking/libs/dialogs/editpayee.ui.cpp:198
 msgid "Address"
 msgstr "Adresse"

-------------------------------------------------------------------------
Check out the new SourceForge.net Marketplace.
It's the best place to buy or sell services for
just about anything Open Source.
http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace
_______________________________________________
Aqbanking-devel mailing list
Aqbanking-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/aqbanking-devel

Reply via email to