Steuern nach Steuerschlüssel und Steuersatz ordnen
[kivitendo-erp.git] / SL / AP.pm
index 53607ff..54abcd1 100644 (file)
--- a/SL/AP.pm
+++ b/SL/AP.pm
@@ -186,7 +186,7 @@ sub post_transaction {
                 invnumber = ?, transdate = ?, ordnumber = ?, vendor_id = ?, taxincluded = ?,
                 amount = ?, duedate = ?, paid = ?, netamount = ?,
                 curr = ?, notes = ?, department_id = ?, storno = ?, storno_id = ?,
-                globalproject_id = ?
+                globalproject_id = ?, direct_debit = ?
                WHERE id = ?|;
     @values = ($form->{invnumber}, conv_date($form->{transdate}),
                   $form->{ordnumber}, conv_i($form->{vendor_id}),
@@ -196,6 +196,7 @@ sub post_transaction {
                   $form->{currency}, $form->{notes},
                   conv_i($form->{department_id}), $form->{storno},
                   $form->{storno_id}, conv_i($form->{globalproject_id}),
+                  $form->{direct_debit} ? 't' : 'f',
                   $form->{id});
     do_query($form, $dbh, $query, @values);
 
@@ -208,24 +209,28 @@ sub post_transaction {
         # insert detail records in acc_trans
         $query =
           qq|INSERT INTO acc_trans | .
-          qq|  (trans_id, chart_id, amount, transdate, project_id, taxkey, tax_id)| .
+          qq|  (trans_id, chart_id, amount, transdate, project_id, taxkey, tax_id, chart_link)| .
           qq|VALUES (?, (SELECT c.id FROM chart c WHERE c.accno = ?), | .
-          qq|  ?, ?, ?, ?, ?)|;
+          qq|  ?, ?, ?, ?, ?,| .
+          qq| (SELECT c.link FROM chart c WHERE c.accno = ?))|;
         @values = ($form->{id}, $form->{AP_amounts}{"amount_$i"},
                    $form->{"amount_$i"}, conv_date($form->{transdate}),
-                   $project_id, $form->{"taxkey_$i"}, conv_i($form->{"tax_id_$i"}));
+                   $project_id, $form->{"taxkey_$i"}, conv_i($form->{"tax_id_$i"}),
+                   $form->{AP_amounts}{"amount_$i"});
         do_query($form, $dbh, $query, @values);
 
         if ($form->{"tax_$i"} != 0) {
           # insert detail records in acc_trans
           $query =
             qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, | .
-            qq|  project_id, taxkey, tax_id) | .
+            qq|  project_id, taxkey, tax_id, chart_link) | .
             qq|VALUES (?, (SELECT c.id FROM chart c WHERE c.accno = ?), | .
-            qq|  ?, ?, ?, ?, ?)|;
+            qq|  ?, ?, ?, ?, ?,| .
+            qq| (SELECT c.link FROM chart c WHERE c.accno = ?))|;
           @values = ($form->{id}, $form->{AP_amounts}{"tax_$i"},
                      $form->{"tax_$i"}, conv_date($form->{transdate}),
-                     $project_id, $form->{"taxkey_$i"}, conv_i($form->{"tax_id_$i"}));
+                     $project_id, $form->{"taxkey_$i"}, conv_i($form->{"tax_id_$i"}),
+                     $form->{AP_amounts}{"tax_$i"});
           do_query($form, $dbh, $query, @values);
         }
 
@@ -234,7 +239,7 @@ sub post_transaction {
 
     # add payables
     $query =
-      qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, taxkey, tax_id) | .
+      qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, taxkey, tax_id, chart_link) | .
       qq|VALUES (?, (SELECT id FROM chart WHERE accno = ?), ?, ?, | .
       qq|        (SELECT taxkey_id FROM chart WHERE accno = ?),| . 
       qq|        (SELECT tax_id| . 
@@ -243,9 +248,11 @@ sub post_transaction {
       qq|                          FROM chart| . 
       qq|                          WHERE accno = ?)| . 
       qq|         AND startdate <= ?| . 
-      qq|         ORDER BY startdate DESC LIMIT 1))|;
+      qq|         ORDER BY startdate DESC LIMIT 1),| .
+      qq|        (SELECT c.link FROM chart c WHERE c.accno = ?))|;
     @values = ($form->{id}, $form->{AP_amounts}{payables}, $form->{payables},
-               conv_date($form->{transdate}), $form->{AP_amounts}{payables}, $form->{AP_amounts}{payables}, conv_date($form->{transdate}));
+               conv_date($form->{transdate}), $form->{AP_amounts}{payables}, $form->{AP_amounts}{payables}, conv_date($form->{transdate}),
+               $form->{AP_amounts}{payables});
     do_query($form, $dbh, $query, @values);
   }
 
@@ -289,7 +296,7 @@ sub post_transaction {
                             2);
       if ($form->{payables}) {
         $query =
-          qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, project_id, taxkey, tax_id) | .
+          qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, project_id, taxkey, tax_id, chart_link) | .
           qq|VALUES (?, (SELECT id FROM chart WHERE accno = ?), ?, ?, ?, | .
           qq|        (SELECT taxkey_id FROM chart WHERE accno = ?),| .
           qq|        (SELECT tax_id| . 
@@ -298,10 +305,12 @@ sub post_transaction {
           qq|                          FROM chart| . 
           qq|                          WHERE accno = ?)| . 
           qq|         AND startdate <= ?| . 
-          qq|         ORDER BY startdate DESC LIMIT 1))|;
+          qq|         ORDER BY startdate DESC LIMIT 1),| .
+          qq|        (SELECT c.link FROM chart c WHERE c.accno = ?))|;
         @values = ($form->{id}, $form->{AP_payables}, $amount,
                    conv_date($form->{"datepaid_$i"}), $project_id,
-                   $form->{AP_payables}, $form->{AP_payables}, conv_date($form->{"datepaid_$i"}));
+                   $form->{AP_payables}, $form->{AP_payables}, conv_date($form->{"datepaid_$i"}),
+                   $form->{AP_payables});
         do_query($form, $dbh, $query, @values);
       }
       $form->{payables} = $amount;
@@ -309,7 +318,7 @@ sub post_transaction {
       # add payment
       my $gldate = (conv_date($form->{"gldate_$i"}))? conv_date($form->{"gldate_$i"}) : conv_date($form->current_date($myconfig));
       $query =
-        qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, gldate, source, memo, project_id, taxkey, tax_id) | .
+        qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, gldate, source, memo, project_id, taxkey, tax_id, chart_link) | .
         qq|VALUES (?, (SELECT id FROM chart WHERE accno = ?), ?, ?, ?, ?, ?, ?, | .
         qq|        (SELECT taxkey_id FROM chart WHERE accno = ?), | . 
         qq|        (SELECT tax_id| .
@@ -318,11 +327,13 @@ sub post_transaction {
         qq|                          FROM chart| . 
         qq|                          WHERE accno = ?)| . 
         qq|         AND startdate <= ?| . 
-        qq|         ORDER BY startdate DESC LIMIT 1))|;
+        qq|         ORDER BY startdate DESC LIMIT 1),| .
+        qq|        (SELECT c.link FROM chart c WHERE c.accno = ?))|;
       @values = ($form->{id}, $form->{"AP_paid_account_$i"}, $form->{"paid_$i"},
                  conv_date($form->{"datepaid_$i"}), $gldate, $form->{"source_$i"},
                  $form->{"memo_$i"}, $project_id, $form->{"AP_paid_account_$i"},
-                 $form->{"AP_paid_account_$i"}, conv_date($form->{"datepaid_$i"}));
+                 $form->{"AP_paid_account_$i"}, conv_date($form->{"datepaid_$i"}),
+                 $form->{"AP_paid_account_$i"});
       do_query($form, $dbh, $query, @values);
 
       # add exchange rate difference
@@ -331,7 +342,7 @@ 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, project_id, taxkey, tax_id) | .
+          qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, fx_transaction, cleared, project_id, taxkey, tax_id, chart_link) | .
           qq|VALUES (?, (SELECT id FROM chart WHERE accno = ?), ?, ?, 't', 'f', ?, | .
           qq|        (SELECT taxkey_id FROM chart WHERE accno = ?), | .
           qq|        (SELECT tax_id| . 
@@ -340,11 +351,13 @@ sub post_transaction {
           qq|                          FROM chart| . 
           qq|                          WHERE accno = ?)| . 
           qq|         AND startdate <= ?| . 
-          qq|         ORDER BY startdate DESC LIMIT 1))|;
+          qq|         ORDER BY startdate DESC LIMIT 1),| .
+          qq|        (SELECT c.link FROM chart c WHERE c.accno = ?))|;
         @values = ($form->{id}, $form->{"AP_paid_account_$i"}, $amount,
                    conv_date($form->{"datepaid_$i"}), $project_id,
                    $form->{"AP_paid_account_$i"},
-                   $form->{"AP_paid_account_$i"}, conv_date($form->{"datepaid_$i"}));
+                   $form->{"AP_paid_account_$i"}, conv_date($form->{"datepaid_$i"}),
+                   $form->{"AP_paid_account_$i"});
         do_query($form, $dbh, $query, @values);
       }
 
@@ -356,7 +369,7 @@ sub post_transaction {
 
       if ($amount != 0) {
         $query =
-          qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, fx_transaction, cleared, project_id, taxkey, tax_id) | .
+          qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate, fx_transaction, cleared, project_id, taxkey, tax_id, chart_link) | .
           qq|VALUES (?, (SELECT id FROM chart WHERE accno = ?), ?, ?, 't', 'f', ?, | .
           qq|        (SELECT taxkey_id FROM chart WHERE accno = ?)| .
           qq|        (SELECT tax_id| . 
@@ -365,13 +378,14 @@ sub post_transaction {
           qq|                          FROM chart| . 
           qq|                          WHERE accno = ?)| . 
           qq|         AND startdate <= ?| . 
-          qq|         ORDER BY startdate DESC LIMIT 1))|;
-        @values = ($form->{id}, ($amount > 0) ?
-                   $form->{fxgain_accno} : $form->{fxloss_accno},
+          qq|         ORDER BY startdate DESC LIMIT 1),| .
+          qq|        (SELECT c.link FROM chart c WHERE c.accno = ?))|;
+        @values = ($form->{id}, 
+                   ($amount > 0) ? $form->{fxgain_accno} : $form->{fxloss_accno},
                    $amount, conv_date($form->{"datepaid_$i"}), $project_id,
-                   ($amount > 0) ?
-                   $form->{fxgain_accno} : $form->{fxloss_accno},
-                   ($amount > 0) ? $form->{fxgain_accno} : $form->{fxloss_accno}, conv_date($form->{"datepaid_$i"}));
+                   ($amount > 0) ? $form->{fxgain_accno} : $form->{fxloss_accno},
+                   ($amount > 0) ? $form->{fxgain_accno} : $form->{fxloss_accno}, conv_date($form->{"datepaid_$i"}),
+                   ($amount > 0) ? $form->{fxgain_accno} : $form->{fxloss_accno});
         do_query($form, $dbh, $query, @values);
       }