IS::get_customer: ersten Kunden zurückliefern, wenn keine Id vorgegeben ist.
authorBernd Bleßmann <bernd@kivitendo-premium.de>
Sun, 20 Aug 2017 11:19:54 +0000 (13:19 +0200)
committerBernd Bleßmann <bernd@kivitendo-premium.de>
Sun, 20 Aug 2017 14:37:28 +0000 (16:37 +0200)
Durch Umstellung auf den Customer/Vendor-Picker der Belegmasken konnte der
Picker unter bestimmten Umständen initial leer sein. Dadurch wurden dann bei
einem Wechsel von leer auf einen Kunden nicht alle Form-Variablen richtig
gefüllt (z.B. taxzone_id) und z.B. ein Lieferschein konnte nicht gespeichert
werden.

Das jetzige Verhalten gleicht dann dem von IR::get_vendor.

SL/IS.pm

index bbf53e3..1df0eb2 100644 (file)
--- a/SL/IS.pm
+++ b/SL/IS.pm
@@ -2130,6 +2130,11 @@ sub get_customer {
   my $payment_id;
 
   # get customer
+  my $where = '';
+  if ($cid) {
+    $where .= 'AND c.id = ?';
+    push @values, $cid;
+  }
   $query =
     qq|SELECT
          c.id AS customer_id, c.name AS customer, c.discount as customer_discount, c.creditlimit,
@@ -2141,8 +2146,7 @@ sub get_customer {
        FROM customer c
        LEFT JOIN business b ON (b.id = c.business_id)
        LEFT JOIN currencies cu ON (c.currency_id=cu.id)
-       WHERE c.id = ?|;
-  push @values, $cid;
+       WHERE 1 = 1 $where|;
   $ref = selectfirst_hashref_query($form, $dbh, $query, @values);
 
   delete $ref->{salesman_id} if !$ref->{salesman_id};