Einkaufsrechnungen: Vor dem Stornieren die Daten aus der Datenbank holen und nicht...
[kivitendo-erp.git] / SL / IR.pm
index e75fd30..553e782 100644 (file)
--- a/SL/IR.pm
+++ b/SL/IR.pm
@@ -100,6 +100,8 @@ sub post_invoice {
     ? $exchangerate
     : $form->parse_amount($myconfig, $form->{exchangerate});
 
+  $form->{exchangerate} = 1 unless ($form->{exchangerate} * 1);
+
   for my $i (1 .. $form->{rowcount}) {
     $form->{"qty_$i"} = $form->parse_amount($myconfig, $form->{"qty_$i"});
     
@@ -383,12 +385,14 @@ sub post_invoice {
                  VALUES ($form->{id}, $form->{"id_$i"},
                  '$form->{"description_$i"}', | . ($form->{"qty_$i"} * -1) . qq|,  | . ($baseqty * -1) . qq|,
                  $form->{"sellprice_$i"}, $fxsellprice, $allocated,
-                 '$form->{"unit_$i"}', $deliverydate, | . conv_i($form->{"project_id_$i"}) . qq|,
+                 '$form->{"unit_$i"}', $deliverydate, | . conv_i($form->{"project_id_$i"}, 'NULL') . qq|,
                  '$form->{"serialnumber_$i"}')|;
       $dbh->do($query) || $form->dberror($query);
     }
   }
 
+  $project_id = conv_i($form->{"globalproject_id"});
+
   $form->{datepaid} = $form->{invdate};
 
   # all amounts are in natural state, netamount includes the taxes
@@ -476,12 +480,12 @@ sub post_invoice {
           ) != 0
         ) {
         $query = qq|INSERT INTO acc_trans (trans_id, chart_id, amount,
-                   transdate, taxkey)
+                   transdate, taxkey, project_id)
                    VALUES ($trans_id, (SELECT c.id FROM chart c
                                         WHERE c.accno = '$accno'),
                    $form->{amount}{$trans_id}{$accno}, '$form->{invdate}',
-                   (SELECT taxkey_id  FROM chart WHERE accno = '$accno'))|;
-        $dbh->do($query) || $form->dberror($query);
+                   (SELECT taxkey_id  FROM chart WHERE accno = '$accno'), ?)|;
+        do_query($form, $dbh, $query, $project_id);
       }
     }
   }
@@ -518,22 +522,22 @@ sub post_invoice {
 
       if ($form->{amount}{ $form->{id} }{ $form->{AP} } != 0) {
         $query = qq|INSERT INTO acc_trans (trans_id, chart_id, amount,
-                   transdate)
+                   transdate, project_id)
                    VALUES ($form->{id}, (SELECT c.id FROM chart c
                                        WHERE c.accno = '$form->{AP}'),
-                   $amount, '$form->{"datepaid_$i"}')|;
-        $dbh->do($query) || $form->dberror($query);
+                   $amount, '$form->{"datepaid_$i"}', ?)|;
+        do_query($form, $dbh, $query, $project_id);
       }
 
       # record payment
 
       $query = qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate,
-                  source, memo)
+                  source, memo, project_id)
                   VALUES ($form->{id}, (SELECT c.id FROM chart c
                                      WHERE c.accno = '$accno'),
                   $form->{"paid_$i"}, '$form->{"datepaid_$i"}',
-                 '$form->{"source_$i"}', '$form->{"memo_$i"}')|;
-      $dbh->do($query) || $form->dberror($query);
+                 '$form->{"source_$i"}', '$form->{"memo_$i"}', ?)|;
+      do_query($form, $dbh, $query, $project_id);
 
       $exchangerate = 0;
 
@@ -587,11 +591,11 @@ sub post_invoice {
         ) {
 
         $query = qq|INSERT INTO acc_trans (trans_id, chart_id, amount,
-                   transdate, cleared, fx_transaction)
+                   transdate, cleared, fx_transaction, project_id)
                    VALUES ($form->{id}, (SELECT c.id FROM chart c
                                        WHERE c.accno = '$accno'),
-                    $form->{fx}{$accno}{$transdate}, '$transdate', '0', '1')|;
-        $dbh->do($query) || $form->dberror($query);
+                    $form->{fx}{$accno}{$transdate}, '$transdate', '0', '1', ?)|;
+        do_query($form, $dbh, $query, $project_id);
       }
     }
   }
@@ -1302,6 +1306,8 @@ sub post_payment {
       $form->get_exchangerate($dbh, $form->{currency}, $form->{invdate},
                               "buy");
 
+  my $project_id = conv_i($form->{"globalproject_id"});
+
   # record payments and offsetting AP
   for my $i (1 .. $form->{paidaccounts}) {
 
@@ -1336,11 +1342,11 @@ sub post_payment {
       $dbh->do($query) || $form->dberror($query);
 
       $query = qq|INSERT INTO acc_trans (trans_id, chart_id, amount,
-                  transdate)
+                  transdate, project_id)
                   VALUES ($form->{id}, (SELECT c.id FROM chart c
                                       WHERE c.accno = '$form->{AP}'),
-                  $amount, '$form->{"datepaid_$i"}')|;
-      $dbh->do($query) || $form->dberror($query);
+                  $amount, '$form->{"datepaid_$i"}', ?)|;
+      do_query($form, $dbh, $query, $project_id);
 
 
 
@@ -1349,12 +1355,12 @@ sub post_payment {
       $dbh->do($query) || $form->dberror($query);
 
       $query = qq|INSERT INTO acc_trans (trans_id, chart_id, amount, transdate,
-                  source, memo)
+                  source, memo, project_id)
                   VALUES ($form->{id}, (SELECT c.id FROM chart c
                                      WHERE c.accno = '$accno'),
                  $form->{"paid_$i"}, '$form->{"datepaid_$i"}',
-                 '$form->{"source_$i"}', '$form->{"memo_$i"}')|;
-      $dbh->do($query) || $form->dberror($query);
+                 '$form->{"source_$i"}', '$form->{"memo_$i"}', ?)|;
+      do_query($form, $dbh, $query, $project_id);
 
 
       # gain/loss
@@ -1392,12 +1398,12 @@ sub post_payment {
                                         WHERE c.accno = '$accno') AND amount=$form->{fx}{$accno}{$transdate} AND transdate='$transdate' AND cleared='0' AND fx_transaction='1'|;
         $dbh->do($query) || $form->dberror($query);
         $query = qq|INSERT INTO acc_trans (trans_id, chart_id, amount,
-                   transdate, cleared, fx_transaction)
+                   transdate, cleared, fx_transaction, project_id)
                    VALUES ($form->{id},
                           (SELECT c.id FROM chart c
                            WHERE c.accno = '$accno'),
-                   $form->{fx}{$accno}{$transdate}, '$transdate', '0', '1')|;
-        $dbh->do($query) || $form->dberror($query);
+                   $form->{fx}{$accno}{$transdate}, '$transdate', '0', '1', ?)|;
+        do_query($form, $dbh, $query, $project_id);
       }
     }
   }
@@ -1419,4 +1425,23 @@ sub post_payment {
   return $rc;
 }
 
+sub has_storno {
+  $main::lxdebug->enter_sub();
+
+  my ($self, $myconfig, $form) = @_;
+
+  $main::lxdebug->leave_sub() and return 0 unless ($form->{id});
+
+  my $dbh = $form->dbconnect($myconfig);
+
+  my $query = qq|SELECT storno FROM ap WHERE id = ?|;
+  my ($result) = selectrow_query($form, $dbh, $query, $form->{id});
+
+  $dbh->disconnect();
+
+  $main::lxdebug->leave_sub();
+
+  return $result;
+}
+
 1;