- # if we switched to all_vc
- # funktioniert derzeit nicht 12.10.2010 jb
- if ($form->{all_vc} ne $form->{oldall_vc}) {
-
- $form->{openinvoices} = ($form->{all_vc}) ? 0 : 1;
-
- $form->{"select$form->{vc}"} = "";
-
- if ($form->{all_vc}) {
- $form->all_vc(\%myconfig, $form->{vc}, $form->{ARAP});
-
- if ($form->{"all_$form->{vc}"}) {
- map {
- $form->{"select$form->{vc}"} .=
- "<option>$_->{name}--$_->{id}\n"
- } @{ $form->{"all_$form->{vc}"} };
- }
- } else { # ab hier wieder ausgeführter code (s.o.):
- CP->get_openvc(\%myconfig, \%$form);
-
- if ($form->{"all_$form->{vc}"}) {
- $newvc =
- qq|$form->{"all_$form->{vc}"}[0]->{name}--$form->{"all_$form->{vc}"}[0]->{id}|;
- map {
- $form->{"select$form->{vc}"} .=
- "<option>$_->{name}--$_->{id}\n"
- } @{ $form->{"all_$form->{vc}"} };
- }
-
- # if the name is not the same
- if ($form->{"select$form->{vc}"} !~ /$form->{$form->{vc}}/) {
- $form->{ $form->{vc} } = $newvc;
- }
- }
- }
- # Falls Suche über Rechnungsnummer und kein Kundenname vorhanden
- if ($form->{invnumber} && !($form->{$form->{vc}})){
- $form->{open} ='Y'; # nur die offenen rechnungen
- if ($form->{ARAP} eq 'AR'){
- AR->ar_transactions(\%myconfig, \%$form);
-
- # if you search for invoice '11' ar_transactions will also match invoices
- # 112, 211, ... due to the LIKE
-
- # so there is now an extra loop that tries to match the invoice number
- # exactly among all returned results, and then passes the customer_id instead of the name
- # because the name may not be unique
-
- my $found_exact_invnumber_match = 0;
- foreach my $i ( @{ $form->{AR} } ) {
- next unless $i->{invnumber} eq $form->{invnumber};
- # found exactly matching invnumber
- $form->{$form->{vc}} = $i->{name};
- $form->{customer_id} = $i->{customer_id};
- $found_exact_invnumber_match = 1;
- };
-
- unless ( $found_exact_invnumber_match ) {
- # use first returned entry, may not be the correct one if invnumber doesn't match uniquely
- $form->{$form->{vc}} = $form->{AR}[0]{name};
- $form->{customer_id} = $form->{AR}[0]{customer_id};
- };
- } else {
- # s.o. nur für zahlungsausgang
- AP->ap_transactions(\%myconfig, \%$form);
- $form->{$form->{vc}} = $form->{AP}[0]{name};
+ # search by invoicenumber,
+ if ($form->{invnumber}) {
+ $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
+ # so we have to empty these values first
+ $form->{customer_id} = '';
+ $form->{customer} = '';
+ AR->ar_transactions(\%myconfig, \%$form);
+
+ # if you search for invoice '11' ar_transactions will also match invoices
+ # 112, 211, ... due to the LIKE
+
+ # so there is now an extra loop that tries to match the invoice number
+ # exactly among all returned results, and then passes the customer_id instead of the name
+ # because the name may not be unique
+
+ my $found_exact_invnumber_match = 0;
+ foreach my $i ( @{ $form->{AR} } ) {
+ next unless $i->{invnumber} eq $form->{invnumber};
+ # found exactly matching invnumber
+ $form->{customer_id} = $i->{customer_id};
+ $found_exact_invnumber_match = 1;
+ };
+
+ unless ( $found_exact_invnumber_match ) {
+ # use first returned entry, may not be the correct one if invnumber doesn't
+ # match uniquely
+ $form->{customer_id} = $form->{AR}[0]{customer_id};
+ };
+ } else {
+ # s.o. nur für zahlungsausgang
+ AP->ap_transactions(\%myconfig, \%$form);
+ $form->{vendor_id} = $form->{AP}[0]{vendor_id};