Lieferdatum u. Auftragsdatum beim 'als neu speichern' von Aufträgen neuberechnen
authorThomas Heck <theck@linet-services.de>
Fri, 7 Sep 2012 11:46:36 +0000 (13:46 +0200)
committerThomas Heck <theck@linet-services.de>
Fri, 7 Sep 2012 11:46:36 +0000 (13:46 +0200)
* Auftragsdatum wird aufs aktuelle Datum gesetzt
* Lieferdatum wird genau so wie beim Erstellen eines neuen Auftrags gesetzt. Das ist: Auftragsdatum (sprich aktuelles Datum in unserem Fall) + 1 Tag aufgerundet auf den nächsten Arbeitstag (Freitag -> Montag)
fixt #1959

bin/mozilla/oe.pl

index 73c70b3..72ad0d7 100644 (file)
@@ -1629,11 +1629,25 @@ sub save_as_new {
     delete($form->{$idx});
   }
 
-  # clear reqdate unless changed
-  if ($form->{reqdate} && $form->{id}) {
+  # clear reqdate and transdate unless changed
+  if ( $form->{reqdate} && $form->{id} ) {
     my $saved_order = OE->retrieve_simple(id => $form->{id});
-    if ($saved_order && $saved_order->{reqdate} eq $form->{reqdate}) {
-      delete $form->{reqdate};
+    if ( $saved_order && $saved_order->{reqdate} eq $form->{reqdate} && $saved_order->{transdate} eq $form->{transdate} ) {
+
+      my $dbh = $form->get_standard_dbh;
+
+      my $wday         = (localtime(time))[6];
+      my $next_workday = $wday == 5 ? 3 : $wday == 6 ? 2 : 1;
+
+      my $query = 'SELECT
+                     date(current_date + interval \''. $next_workday .' days\') AS reqdate,
+                     date(current_date) AS transdate';
+      my $ref = selectfirst_hashref_query($form, $dbh, $query);
+
+      map(
+        { $form->{$_} = $ref->{$_} }
+        keys %{$ref}
+      );
     }
   }