Bugfix zu 1421: Loeschen von Stornos bereitet eine Reihe von Problemen
authorJan Büren <jan@lx-office-hosting.de>
Wed, 29 Dec 2010 15:51:10 +0000 (16:51 +0100)
committerJan Büren <jan@lx-office-hosting.de>
Wed, 29 Dec 2010 15:51:10 +0000 (16:51 +0100)
Nach dem Loeschen der Stornorechnung verblieb aber die originale Rechnung als
"R(S)" und galt auch weiterhin als bezahlt anscheinend.
Lösung: Entsprechend die Felder wieder zurückgesetzt. Zu Überlegen wäre, ob man Stornos löschen nicht ganz verbieten sollte.

SL/IS.pm

index 3896277..3b031bd 100644 (file)
--- a/SL/IS.pm
+++ b/SL/IS.pm
@@ -1377,6 +1377,20 @@ sub delete_invoice {
 
   my @values = (conv_i($form->{id}));
 
+  # Falls wir ein Storno haben, müssen zwei Felder in der stornierten Rechnung wieder
+  # zurückgesetzt werden. Vgl:
+  #  id | storno | storno_id |  paid   |  amount   
+  #----+--------+-----------+---------+-----------
+  # 18 | f      |           | 0.00000 | 119.00000
+  # ZU:
+  # 18 | t      |           |  119.00000 |  119.00000
+  #
+  if($form->{storno}){
+    # storno_id auslesen und korrigieren
+    my ($invoice_id) = selectfirst_array_query($form, $dbh, qq|SELECT storno_id FROM ar WHERE id = ?|,@values);
+    do_query($form, $dbh, qq|UPDATE ar SET storno = 'f', paid = 0 WHERE id = ?|, $invoice_id);
+  }
+
   # delete AR record
   do_query($form, $dbh, qq|DELETE FROM ar WHERE id = ?|, @values);