commit cd98d068d97cb6a981d931898c5a230cd8efc0a2
Author: Niclas Zimmermann <niclas@kivitendo-premium.de>
Date:   Tue Sep 11 16:39:10 2012 +0200

    Filterung nach Kundennummer in Zahlungseingang
    
    Im Zahlungsverkehr-Zahlungseingang ist jetzt eine neue Filteroption
    Kundennummer vorhanden. Bei Eingabe der Kundennummer wird die
    Filterung für das Dropdown ausgeschaltet. Es funktioniert dann nur
    noch die Filterung von Rechnungsnummer und Kundennummer.

diff --git a/SL/AR.pm b/SL/AR.pm
index 002041ecf..8c72d3cf9 100644
--- a/SL/AR.pm
+++ b/SL/AR.pm
@@ -472,6 +472,10 @@ sub ar_transactions {
     qq|LEFT JOIN department d ON (d.id = a.department_id)|;
 
   my $where = "1 = 1";
+  if ($form->{customernumber}) {
+    $where .= " AND c.customernumber = ?";
+    push(@values, $form->{customernumber});
+  }
   if ($form->{customer_id}) {
     $where .= " AND a.customer_id = ?";
     push(@values, $form->{customer_id});
diff --git a/bin/mozilla/cp.pl b/bin/mozilla/cp.pl
index 1f061ad8e..885c88e62 100644
--- a/bin/mozilla/cp.pl
+++ b/bin/mozilla/cp.pl
@@ -36,6 +36,7 @@ use SL::IS;
 use SL::IR;
 use SL::AR;
 use SL::AP;
+use Data::Dumper;
 use strict;
 #use warnings;
 
@@ -71,13 +72,14 @@ sub payment {
   # für bugfix 1771 (doppelte Leerzeichen werden nicht 'gepostet')
   $form->{"select$form->{vc}"} = "";
 
+  $form->{selectcustomer} .= "<option value=\"\"></option>\n" if $form->{vc} eq "customer";
+
   if ($form->{"all_$form->{vc}"}) {
     # s.o. jb 12.10.2010
     $form->{"$form->{vc}_id"} = $form->{"all_$form->{vc}"}->[0]->{id};
     map { $form->{"select$form->{vc}"} .= "<option value=\"$_->{name}--$_->{id}\">$_->{name}--$_->{id}</option>\n" }
       @{ $form->{"all_$form->{vc}"} };
   }
-
   CP->paymentaccounts(\%myconfig, \%$form);
 
   # Standard Konto für Umlaufvermögen
@@ -135,6 +137,13 @@ sub form_header {
   if ($form->{ $form->{vc} } eq "") {
     map { $form->{"addr$_"} = "" } (1 .. 4);
   }
+
+  # sometimes it happens that values in customer arrive without the signs '--'
+  # but in order to select the right option field we need values with '--'
+  if ($form->{vc} eq "customer"){
+    my ($customername) = split /--/, $form->{ $form->{vc} };
+    $form->{ $form->{vc} } = $customername . "--" . $form->{customer_id};
+  }
   # bugfix 1771
   # geändert von <option>asdf--2929
   # nach:
@@ -252,15 +261,30 @@ sub update {
     }
   }
 
+  # search by customernumber
+  # the customernumber has to be correct otherwise nothing is found
+  if ($form->{vc} eq 'customer' and $form->{customernumber} and $form->{ARAP} eq 'AR') {
+    $form->{open} ='Y'; # only open invoices
+    # ar_transactions automatically searches by $form->{customer_id} or else
+    # $form->{customer} if available, and these variables will always be set
+    # so we have to empty these values first
+    $form->{customer_id} = '';
+    $form->{customer} = '';
+    AR->ar_transactions(\%myconfig, \%$form);
+
+    # Here we just take the first returned value even if the custumernumber
+    # may not be unique
+    $form->{customer} = $form->{AR}[0]{name};
+    $form->{customer_id} = $form->{AR}[0]{customer_id};
+  }
+
   # search by invoicenumber, 
   if ($form->{invnumber}) { 
-    $form->{open} ='Y'; # nur die offenen rechnungen
+    $form->{open} ='Y'; # only open invoices
     if ($form->{ARAP} eq 'AR'){
-
       # ar_transactions automatically searches by $form->{customer_id} or else
       # $form->{customer} if available, and these variables will always be set
-      # when we have a dropdown field rather than an input field, so we have to
-      # empty these values first
+      # so we have to empty these values first
       $form->{customer_id} = '';
       $form->{customer} = '';
       AR->ar_transactions(\%myconfig, \%$form);
@@ -296,7 +320,7 @@ sub update {
   }
 
   # determine customer/vendor
-  if ( $form->{customer_id} and $form->{invnumber} ) {
+  if ( $form->{customer_id} and ($form->{invnumber} or $form->{customernumber}) ) {
     # we already know the exact customer_id, so fill $form with customer data
     IS->get_customer(\%myconfig, \%$form);
     $updated = 1;
diff --git a/templates/webpages/cp/form_header.html b/templates/webpages/cp/form_header.html
index bc02918c5..c513eca9b 100644
--- a/templates/webpages/cp/form_header.html
+++ b/templates/webpages/cp/form_header.html
@@ -25,7 +25,7 @@
         <tr>
           <th align=right>[% is_customer ? LxERP.t8('Customer') : LxERP.t8('Vendor') %]</th>
           <td>[% vccontent %]</td>
-          [% IF vc == 'customer' %]
+         [% IF vc == 'customer' %]
            [% L.hidden_tag('selectcustomer', selectcustomer) %]
            [% L.hidden_tag('customer_id', customer_id) %]
            [% L.hidden_tag('oldcustomer', oldcustomer) %]
@@ -35,6 +35,12 @@
            [% L.hidden_tag('oldvendor', oldvendor) %]
           [% END %]
         </tr>
+        [% IF vc == 'customer' %]
+        <tr>
+          <th align=right>[% 'Customer Number' | $T8 %]</th>
+          <td><input name="customernumber" size="35"</td>
+        </tr>
+        [% END %]
         <tr>
           <th align=right>[% 'Invoice Number' | $T8 %]</th>
           <td><input name="invnumber" size="35"</td>
