Überflüssigen Code entfernt.
[kivitendo-erp.git] / SL / AP.pm
index cb5f65b..a3b7d1e 100644 (file)
--- a/SL/AP.pm
+++ b/SL/AP.pm
@@ -90,7 +90,7 @@ sub post_transaction {
   $form->{taxincluded} = 0 if ($form->{amount} == 0);
 
   for $i (1 .. $form->{rowcount}) {
-   ($form->{"tax_id_$i"}, $NULL) = split /--/, $form->{"taxchart_$i"};
+    ($form->{"tax_id_$i"}, $NULL) = split /--/, $form->{"taxchart_$i"};
 
     $query =
       qq|SELECT c.accno, t.taxkey, t.rate | .
@@ -189,27 +189,18 @@ sub post_transaction {
   my $datepaid = ($form->{invpaid} != 0) ? $form->{datepaid} : undef;
 
   $query = qq|UPDATE ap SET
-              invnumber = ?,
-              transdate = ?,
-              ordnumber = ?,
-              vendor_id = ?,
-              taxincluded = ?,
-              amount = ?,
-              duedate = ?,
-              paid = ?,
-              datepaid = ?,
-              netamount = ?,
-              curr = ?,
-              notes = ?,
-              department_id = ?
-              WHERE id = ?|;
+              invnumber = ?, transdate = ?, ordnumber = ?, vendor_id = ?, taxincluded = ?,
+              amount = ?, duedate = ?, paid = ?, datepaid = ?, netamount = ?,
+              curr = ?, notes = ?, department_id = ?, storno = ?, storno_id = ?
+             WHERE id = ?|;
   my @values = ($form->{invnumber}, conv_date($form->{transdate}),
                 $form->{ordnumber}, conv_i($form->{vendor_id}),
-                $form->{taxincluded}, $form->{invtotal},
+                $form->{taxincluded} ? 't' : 'f', $form->{invtotal},
                 conv_date($form->{duedate}), $form->{invpaid},
                 conv_date($datepaid), $form->{netamount},
                 $form->{currency}, $form->{notes},
-                conv_i($form->{department_id}), $form->{id});
+                conv_i($form->{department_id}), $form->{storno},
+                $form->{storno_id}, $form->{id});
   do_query($form, $dbh, $query, @values);
 
   # update exchangerate
@@ -254,10 +245,11 @@ sub post_transaction {
 
   # add payables
   $query =
-    qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate) | .
-    qq|VALUES (?, (SELECT c.id FROM chart c WHERE c.accno = ?), ?, ?)|;
+    qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, taxkey) | .
+    qq|VALUES (?, (SELECT id FROM chart WHERE accno = ?), ?, ?, | .
+    qq|        (SELECT taxkey_id FROM chart WHERE accno = ?))|;
   @values = ($form->{id}, $form->{AP_amounts}{payables}, $form->{payables},
-             conv_date($form->{transdate}));
+             conv_date($form->{transdate}), $form->{AP_amounts}{payables});
   do_query($form, $dbh, $query, @values);
 
   # if there is no amount but a payment record a payable
@@ -268,6 +260,7 @@ sub post_transaction {
   # add paid transactions
   for my $i (1 .. $form->{paidaccounts}) {
     if ($form->{"paid_$i"} != 0) {
+      my $project_id = conv_i($form->{"paid_project_id_$i"});
 
       $exchangerate = 0;
       if ($form->{currency} eq $form->{defaultcurrency}) {
@@ -300,21 +293,24 @@ sub post_transaction {
                             2);
       if ($form->{payables}) {
         $query =
-          qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate) | .
-          qq|VALUES (?, (SELECT c.id FROM chart c WHERE c.accno = ?), ?, ?)|;
+          qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, project_id, taxkey) | .
+          qq|VALUES (?, (SELECT id FROM chart WHERE accno = ?), ?, ?, ?, | .
+          qq|        (SELECT taxkey_id FROM chart WHERE accno = ?))|;
         @values = ($form->{id}, $form->{AP}{payables}, $amount,
-                   conv_date($form->{"datepaid_$i"}));
+                   conv_date($form->{"datepaid_$i"}), $project_id,
+                   $form->{AP}{payables});
         do_query($form, $dbh, $query, @values);
       }
       $form->{payables} = $amount;
 
       # add payment
       $query =
-        qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, source, memo) | .
-        qq|VALUES (?, (SELECT c.id FROM chart c WHERE c.accno = ?), ?, ?, ?, ?)|;
+        qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, source, memo, project_id, taxkey) | .
+        qq|VALUES (?, (SELECT id FROM chart WHERE accno = ?), ?, ?, ?, ?, ?, | .
+        qq|        (SELECT taxkey_id FROM chart WHERE accno = ?))|;
       @values = ($form->{id}, $form->{AP}{"paid_$i"}, $form->{"paid_$i"},
                  conv_date($form->{"datepaid_$i"}), $form->{"source_$i"},
-                 $form->{"memo_$i"});
+                 $form->{"memo_$i"}, $project_id, $form->{AP}{"paid_$i"});
       do_query($form, $dbh, $query, @values);
 
       # add exchange rate difference
@@ -323,10 +319,12 @@ sub post_transaction {
                             ($form->{"exchangerate_$i"} - 1), 2);
       if ($amount != 0) {
         $query =
-          qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, fx_transaction, cleared) | .
-          qq|VALUES (?, (SELECT c.id FROM chart c WHERE c.accno = ?), ?, ?, 't', 'f')|;
+          qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, fx_transaction, cleared, project_id, taxkey) | .
+          qq|VALUES (?, (SELECT id FROM chart WHERE accno = ?), ?, ?, 't', 'f', ?, | .
+          qq|        (SELECT taxkey_id FROM chart WHERE accno = ?))|;
         @values = ($form->{id}, $form->{AP}{"paid_$i"}, $amount,
-                   conv_date($form->{"datepaid_$i"}));
+                   conv_date($form->{"datepaid_$i"}), $project_id,
+                   $form->{AP}{"paid_$i"});
         do_query($form, $dbh, $query, @values);
       }
 
@@ -338,11 +336,14 @@ sub post_transaction {
 
       if ($amount != 0) {
         $query =
-          qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, fx_transaction, cleared) | .
-          qq|VALUES (?, (SELECT c.id FROM chart c WHERE c.accno = ?), ?, ?, 't', 'f')|;
+          qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, fx_transaction, cleared, project_id, taxkey) | .
+          qq|VALUES (?, (SELECT id FROM chart WHERE accno = ?), ?, ?, 't', 'f', ?, | .
+          qq|        (SELECT taxkey_id FROM chart WHERE accno = ?))|;
         @values = ($form->{id}, ($amount > 0) ?
                    $form->{fxgain_accno} : $form->{fxloss_accno},
-                   $amount, conv_date($form->{"datepaid_$i"}));
+                   $amount, conv_date($form->{"datepaid_$i"}), $project_id,
+                   ($amount > 0) ?
+                   $form->{fxgain_accno} : $form->{fxloss_accno});
         do_query($form, $dbh, $query, @values);
       }
 
@@ -405,7 +406,7 @@ sub ap_transactions {
     qq|LEFT JOIN employee e ON (a.employee_id = e.id) | .
     qq|LEFT JOIN project pr ON (a.globalproject_id = pr.id) |;
 
-  my $where;
+  my $where = qq| WHERE storno != true |;
   my @values;
 
   if ($form->{vendor_id}) {
@@ -456,7 +457,7 @@ sub ap_transactions {
   }
 
   if ($where) {
-    substr($where, 0, 4) = "WHERE";
+    substr($where, 0, 4) = "WHERE";
     $query .= $where;
   }
 
@@ -571,11 +572,12 @@ sub post_payment {
       do_query($form, $dbh, $query, @values);
 
       $query =
-        qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, project_id) | .
-        qq|VALUES (?, (SELECT c.id FROM chart c WHERE c.accno = ?), ?, ?, ?)|;
+        qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, project_id, taxkey) | .
+        qq|VALUES (?, (SELECT id FROM chart WHERE accno = ?), ?, ?, ?, | .
+        qq|        (SELECT taxkey_id FROM chart WHERE accno = ?))|;
       @values = ($form->{id}, $accno_ap, $amount,
                  conv_date($form->{"datepaid_$i"}),
-                 conv_i($form->{"paid_project_id_$i"}));
+                 conv_i($form->{"paid_project_id_$i"}), $accno_ap);
       do_query($form, $dbh, $query, @values);
 
       $query =
@@ -589,12 +591,13 @@ sub post_payment {
       do_query($form, $dbh, $query, @values);
 
       $query =
-        qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, source, memo, project_id) | .
-        qq|VALUES (?, (SELECT c.id FROM chart c WHERE c.accno = ?), ?, ?, ?, ?, ?)|;
+        qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, source, memo, project_id, taxkey) | .
+        qq|VALUES (?, (SELECT id FROM chart WHERE accno = ?), ?, ?, ?, ?, ?, | .
+        qq|        (SELECT taxkey_id FROM chart WHERE accno = ?))|;
       @values = ($form->{id}, $accno, $form->{"paid_$i"},
                  $form->{"datepaid_$i"},
                  $form->{"source_$i"}, $form->{"memo_$i"},
-                 conv_i($form->{"paid_project_id_$i"}));
+                 conv_i($form->{"paid_project_id_$i"}), $accno);
       do_query($form, $dbh, $query, @values);
 
       # gain/loss
@@ -638,10 +641,11 @@ sub post_payment {
         do_query($form, $dbh, $query, @values);
 
         $query =
-          qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, cleared, fx_transaction) | .
-          qq|VALUES (?, (SELECT c.id FROM chart c WHERE c.accno = ?), ?, ?, 'f', 't')|;
+          qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, cleared, fx_transaction, taxkey) | .
+          qq|VALUES (?, (SELECT c.id FROM chart c WHERE c.accno = ?), ?, ?, 'f', 't', | .
+          qq|        (SELECT taxkey_id FROM chart WHERE accno = ?))|;
         @values = ($form->{id}, $accno, $form->{fx}{$accno}{$transdate},
-                   conv_date($transdate));
+                   conv_date($transdate), $accno);
         do_query($form, $dbh, $query, @values);
       }
     }