]> wagnertech.de Git - kivitendo-erp.git/commitdiff
4. Überarbeitung Prüfen beim Speichern, ob Dokument geändert ist
authorMartin Helmling mh@waldpark.octosoft.eu <martin.helmling@octosoft.eu>
Mon, 29 Feb 2016 09:17:12 +0000 (10:17 +0100)
committerMartin Helmling mh@waldpark.octosoft.eu <martin.helmling@octosoft.eu>
Mon, 29 Feb 2016 09:17:12 +0000 (10:17 +0100)
An einigen Stellen wird nach dem Speichern nicht neu gelesen,
sondern die alten Forms-Variablen zum Aufbau der Webseite verwendet, z.B. "Auslagern".

Deshalb wird $form->lastmtime nun nach jedem Speichern aktualisiert.

SL/AP.pm
SL/AR.pm
SL/DO.pm
SL/Form.pm
SL/IC.pm
SL/IR.pm
SL/IS.pm
SL/OE.pm

index f551b34ae19c42e9d382a91fc2d50b6c0ed52e09..7db5649f6856c90af12e1f4e3c154f0f01a83114 100644 (file)
--- a/SL/AP.pm
+++ b/SL/AP.pm
@@ -148,6 +148,8 @@ sub post_transaction {
                   $form->{id});
     do_query($form, $dbh, $query, @values);
 
+    $form->new_lastmtime('ap');
+
     # add individual transactions
     for my $i (1 .. $form->{rowcount}) {
       if ($form->{"amount_$i"} != 0) {
@@ -349,6 +351,7 @@ sub post_transaction {
   if ($payments_only) {
     $query = qq|UPDATE ap SET paid = ?, datepaid = ? WHERE id = ?|;
     do_query($form, $dbh, $query,  $form->{invpaid}, $form->{invpaid} ? conv_date($form->{datepaid}) : undef, conv_i($form->{id}));
+    $form->new_lastmtime('ap');
   }
 
   IO->set_datepaid(table => 'ap', id => $form->{id}, dbh => $dbh);
@@ -808,6 +811,8 @@ sub storno {
   $query = qq|UPDATE ap SET paid = amount + paid, storno = 't' WHERE id = ?|;
   do_query($form, $dbh, $query, $id);
 
+  $form->new_lastmtime('ap') if $id == $form->{id};
+
   # now copy acc_trans entries
   $query = qq|SELECT a.*, c.link FROM acc_trans a LEFT JOIN chart c ON a.chart_id = c.id WHERE a.trans_id = ? ORDER BY a.acc_trans_id|;
   my $rowref = selectall_hashref_query($form, $dbh, $query, $id);
@@ -827,6 +832,8 @@ sub storno {
 
   map { IO->set_datepaid(table => 'ap', id => $_, dbh => $dbh) } ($id, $new_id);
 
+  $form->new_lastmtime('ap') if $storno_id == $form->{id};
+
   $dbh->commit;
 
   $main::lxdebug->leave_sub();
index 2841743965fc432c39f08ec9a3b558ca9fa775ca..3362c2e42361c8dce4ac611fd0a379fd85f55946 100644 (file)
--- a/SL/AR.pm
+++ b/SL/AR.pm
@@ -183,6 +183,8 @@ sub post_transaction {
     do_query($form, $dbh, $query,  $form->{paid}, $form->{paid} ? conv_date($form->{datepaid}) : undef, conv_i($form->{id}));
   }
 
+  $form->new_lastmtime('ar');
+
   # add paid transactions
   for my $i (1 .. $form->{paidaccounts}) {
 
@@ -770,6 +772,8 @@ sub storno {
   $query = qq|UPDATE ar SET paid = amount + paid, storno = 't' WHERE id = ?|;
   do_query($form, $dbh, $query, $id);
 
+  $form->new_lastmtime('ar') if $id == $form->{id};
+
   # now copy acc_trans entries
   $query = qq|SELECT a.*, c.link FROM acc_trans a LEFT JOIN chart c ON a.chart_id = c.id WHERE a.trans_id = ? ORDER BY a.acc_trans_id|;
   my $rowref = selectall_hashref_query($form, $dbh, $query, $id);
@@ -789,6 +793,8 @@ sub storno {
 
   map { IO->set_datepaid(table => 'ar', id => $_, dbh => $dbh) } ($id, $new_id);
 
+  $form->new_lastmtime('ar') if $storno_id == $form->{id};
+
   $dbh->commit;
 
   $main::lxdebug->leave_sub();
index 7db091011e424b9760632dd17ac733013a2ca072..3ab2ffa6a0a030ec751d1bed303b6cb69b5766d0 100644 (file)
--- a/SL/DO.pm
+++ b/SL/DO.pm
@@ -477,6 +477,8 @@ SQL
              conv_i($form->{id}));
   do_query($form, $dbh, $query, @values);
 
+  $form->new_lastmtime('delivery_orders');
+
   $form->{name} = $form->{ $form->{vc} };
   $form->{name} =~ s/--$form->{"$form->{vc}_id"}//;
 
@@ -605,6 +607,7 @@ sub close_orders {
   do_query($form, $dbh, $query, map { conv_i($_) } @{ $params{ids} });
 
   $dbh->commit() unless ($params{dbh});
+  $form->new_lastmtime('delivery_orders');
 
   $main::lxdebug->leave_sub();
 }
index 610f545eb117d911f9b7325bb0f766fba45a2d8e..cc988141303b0d07f95cf59d553fae0e3601b989 100644 (file)
@@ -2590,6 +2590,19 @@ sub all_vc {
   $main::lxdebug->leave_sub();
 }
 
+sub new_lastmtime {
+  my ($self, $table, $option) = @_;
+
+  return                                       unless $self->{id};
+  croak ("wrong call, no valid table defined") unless $table =~ /^(oe|ar|ap|delivery_orders|parts)$/;
+
+  my $query       = "SELECT mtime, itime FROM " . $table . " WHERE id = ?";
+  my $ref         = selectfirst_hashref_query($self, $self->get_standard_dbh, $query, $self->{id});
+  $ref->{mtime} ||= $ref->{itime};
+  $self->{lastmtime} = $ref->{mtime};
+  $main::lxdebug->message(LXDebug->DEBUG2(),"new lastmtime=".$self->{lastmtime});
+}
+
 sub mtime_ischanged {
   my ($self, $table, $option) = @_;
 
index 45604b0c9768e83d5db5a08f2b35a5f5eab940d6..d4b341340ea720a865e87890e15266d6ef02bb2d 100644 (file)
--- a/SL/IC.pm
+++ b/SL/IC.pm
@@ -399,6 +399,8 @@ sub save {
   );
   do_query($form, $dbh, $query, @values);
 
+  $form->new_lastmtime('parts');
+
   # delete translation records
   do_query($form, $dbh, qq|DELETE FROM translation WHERE parts_id = ?|, conv_i($form->{id}));
 
@@ -570,6 +572,8 @@ sub update_assembly {
              $qty * ($form->{weight} - $weight), conv_i($id));
   do_query($form, $dbh, $query, @values);
 
+  $form->new_lastmtime('parts') if $id == $form->{id};
+
   $main::lxdebug->leave_sub();
 }
 
index e2f65753c537e31f367e3c9343af00943787f0d4..ae3e45b09d49f07b98580ae5fa1fd6f3ac98b107 100644 (file)
--- a/SL/IR.pm
+++ b/SL/IR.pm
@@ -690,7 +690,7 @@ SQL
   if ($payments_only) {
     $query = qq|UPDATE ap SET paid = ? WHERE id = ?|;
     do_query($form, $dbh, $query, $form->{paid}, conv_i($form->{id}));
-
+    $form->new_lastmtime('ap');
     if (!$provided_dbh) {
       $dbh->commit();
       $dbh->disconnect();
@@ -745,6 +745,7 @@ SQL
     do_query($form, $dbh, $query, conv_i($form->{id}));
   }
 
+  $form->new_lastmtime('ap');
 
   $form->{name} = $form->{vendor};
   $form->{name} =~ s/--\Q$form->{vendor_id}\E//;
index 6e9e9601276386bcd65ee1ca9f339268e82ff528..7d641309488e367406e1729d7b8967c7b31638b1 100644 (file)
--- a/SL/IS.pm
+++ b/SL/IS.pm
@@ -1244,6 +1244,8 @@ SQL
     $query = qq|UPDATE ar SET paid = ? WHERE id = ?|;
     do_query($form, $dbh, $query,  $form->{paid}, conv_i($form->{id}));
 
+    $form->new_lastmtime('ar');
+
     $dbh->commit if !$provided_dbh;
 
     $main::lxdebug->leave_sub();
@@ -1299,6 +1301,8 @@ SQL
     do_query($form, $dbh, qq|UPDATE ar SET paid = amount WHERE id = ?|, conv_i($form->{"id"}));
   }
 
+  $form->new_lastmtime('ar');
+
   $form->{name} = $form->{customer};
   $form->{name} =~ s/--\Q$form->{customer_id}\E//;
 
index f192c1d101bda7154c80ca504abd0bb959945c77..4599443180abe803a66267c31c07d0bd20eab84c 100644 (file)
--- a/SL/OE.pm
+++ b/SL/OE.pm
@@ -696,6 +696,8 @@ SQL
              conv_i($form->{id}));
   do_query($form, $dbh, $query, @values);
 
+  $form->new_lastmtime('oe');
+
   $form->{ordtotal} = $amount;
 
   $form->{name} = $form->{ $form->{vc} };