Order: mehr fehlende Sachen in Doku ergänzt
[kivitendo-erp.git] / SL / CP.pm
index 91e032f..3a29527 100644 (file)
--- a/SL/CP.pm
+++ b/SL/CP.pm
@@ -76,7 +76,7 @@ sub paymentaccounts {
     qq|FROM chart | .
     qq|WHERE link LIKE ? |.
     qq|ORDER BY accno|;
-  my $sth = prepare_execute_query($form, $dbh, $query, '%' . $ARAP . '%');
+  my $sth = prepare_execute_query($form, $dbh, $query, like($ARAP));
 
   $form->{PR}{ $form->{ARAP} } = ();
   $form->{PR}{"$form->{ARAP}_paid"} = ();
@@ -148,15 +148,22 @@ sub get_openinvoices {
   my $buysell = $form->{vc} eq 'customer' ? "buy" : "sell";
   my $arap = $form->{arap} eq "ar" ? "ar" : "ap";
 
+  my @values = (conv_i($form->{"${vc}_id"}), "$form->{currency}");
+  my $whereinvoice = '';
+  if ($::form->{invnumber}) {
+    $whereinvoice = ' AND a.invnumber LIKE ? ';
+    push @values, $::form->{invnumber};
+  }
+
   my $query =
-     qq|SELECT a.id, a.invnumber, a.transdate, a.amount, a.paid, cu.curr | .
+     qq|SELECT a.id, a.invnumber, a.transdate, a.amount, a.paid, cu.name AS curr | .
      qq|FROM $arap a | .
-     qq|LEFT JOIN currencies cu ON (cu.id=a.curr)| .
-     qq|WHERE (a.${vc}_id = ?) AND cu.curr = ? AND NOT (a.amount = a.paid)| .
+     qq|LEFT JOIN currencies cu ON (cu.id=a.currency_id)| .
+     qq|WHERE (a.${vc}_id = ?) AND cu.name = ? AND NOT (a.amount = a.paid)| .
+     $whereinvoice .
      qq|ORDER BY a.id|;
-  my $sth = prepare_execute_query($form, $dbh, $query,
-                                  conv_i($form->{"${vc}_id"}),
-                                  "$form->{currency}");
+
+  my $sth = prepare_execute_query($form, $dbh, $query, @values);
 
   $form->{PR} = [];
   while (my $ref = $sth->fetchrow_hashref("NAME_lc")) {
@@ -174,7 +181,7 @@ sub get_openinvoices {
     SELECT COUNT(*)
     FROM $arap
     WHERE (${vc}_id = ?)
-      AND ((SELECT cu.curr FROM currencies cu WHERE cu.id=${arap}.curr) <> ?)
+      AND ((SELECT cu.name FROM currencies cu WHERE cu.id=${arap}.currency_id) <> ?)
       AND (amount <> paid)
 SQL
   ($form->{openinvoices_other_currencies}) = selectfirst_array_query($form, $dbh, $query, conv_i($form->{"${vc}_id"}), "$form->{currency}");
@@ -250,7 +257,7 @@ sub process_payment {
         qq|SELECT $buysell | .
         qq|FROM exchangerate e | .
         qq|JOIN ${arap} a ON (a.transdate = e.transdate) | .
-        qq|WHERE (e.curr = (SELECT id FROM currencies WHERE curr = ?)) AND (a.id = ?)|;
+        qq|WHERE (e.currency_id = (SELECT id FROM currencies WHERE name = ?)) AND (a.id = ?)|;
       my ($exchangerate) =
         selectrow_query($form, $dbh, $query,
                         $form->{currency}, $form->{"id_$i"});
@@ -341,8 +348,9 @@ sub process_payment {
       # saving the history
       $form->{id} = $form->{"id_$i"};
       if(!exists $form->{addition}) {
-        $form->{snumbers} = qq|invnumber_| . $form->{"invnumber_$i"};
-        $form->{addition} = "POSTED";
+        $form->{snumbers}  = qq|invnumber_| . $form->{"invnumber_$i"};
+        $form->{what_done} = "invoice";
+        $form->{addition}  = "PAYMENT POSTED";
         $form->save_history;
       }
       # /saving the history