X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fcp.pl;h=1f061ad8e6c44bad3a660e10471c9882fa0176bc;hb=15c3d13829af434873b0a3a1efe4ab6fa2e00b19;hp=c6910ba8542f499b0ec2ab2e19b8a5867ad5f3b7;hpb=5f0c4f2d9d5c087cd763f53f6dc0c67e5ca938b5;p=kivitendo-erp.git diff --git a/bin/mozilla/cp.pl b/bin/mozilla/cp.pl index c6910ba85..1f061ad8e 100644 --- a/bin/mozilla/cp.pl +++ b/bin/mozilla/cp.pl @@ -66,13 +66,15 @@ sub payment { } else { CP->get_openvc(\%myconfig, \%$form); } - + # Auswahlliste für vc zusammenbauen + # Erweiterung für schliessende option und erweiterung um value + # für bugfix 1771 (doppelte Leerzeichen werden nicht 'gepostet') $form->{"select$form->{vc}"} = ""; 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}"} .= "\n" } @{ $form->{"all_$form->{vc}"} }; } @@ -80,11 +82,14 @@ sub payment { # Standard Konto für Umlaufvermögen my $accno_arap = IS->get_standard_accno_current_assets(\%myconfig, \%$form); - + # Entsprechend präventiv die Auswahlliste für Kontonummer + # auch mit value= zusammenbauen (s.a. oben bugfix 1771) + # Wichtig: Auch das Template anpassen, damit hidden input korrekt die " + # escaped. $form->{selectaccount} = ""; $form->{"select$form->{ARAP}"} = ""; - map { $form->{selectaccount} .= "\n"; $form->{account} = "$_->{accno}--$_->{description}" if ($_->{accno} eq $accno_arap) } @{ $form->{PR}{"$form->{ARAP}_paid"} }; # Braucht man das hier überhaupt? Erstmal auskommentieren .. jan 18.12.2010 @@ -107,8 +112,10 @@ sub payment { $form->{defaultcurrency} = $form->{currency} = $form->{oldcurrency} = $curr[0]; + # Entsprechend präventiv die Auswahlliste für Währungen + # auch mit value= zusammenbauen (s.a. oben bugfix 1771) $form->{selectcurrency} = ""; - map { $form->{selectcurrency} .= "\n" } @curr; &form_header; @@ -128,10 +135,14 @@ sub form_header { if ($form->{ $form->{vc} } eq "") { map { $form->{"addr$_"} = "" } (1 .. 4); } - + # bugfix 1771 + # geändert von + # offen: $form->{ARAP} kann raus? for my $item ($form->{vc}, "account", "currency", $form->{ARAP}) { $form->{"select$item"} =~ s/ selected//; - $form->{"select$item"} =~ s/option>\Q$form->{$item}\E/option selected>$form->{$item}/; + $form->{"select$item"} =~ s/option value="\Q$form->{$item}\E">\Q$form->{$item}\E/option selected value="$form->{$item}">$form->{$item}/; } $vc = @@ -240,50 +251,63 @@ sub update { } } } - # 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'; # nur die offenen rechnungen + 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 + $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->{$form->{vc}} = $i->{name}; + $form->{customer_id} = $i->{customer_id}; + #$form->{"old${form->{vc}"} = $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}; } } - # get customer and invoices - $updated = &check_name($form->{vc}) unless $form->{customer_id}; - if ( $form->{customer_id} ) { - # we already know the exact customer_id, fill $form with customer data + # determine customer/vendor + if ( $form->{customer_id} and $form->{invnumber} ) { + # we already know the exact customer_id, so fill $form with customer data IS->get_customer(\%myconfig, \%$form); $updated = 1; + } else { + # check_name is called with "customer" or "vendor" and otherwise uses contents of $form + # check_name also runs get_customer/get_vendor + $updated = &check_name($form->{vc}); }; if ($new_name_selected || $updated) { - # get open invoices from ar/ap using $form->{vc} and a.${vc}_id + # get open invoices from ar/ap using $form->{vc} and a.${vc}_id, i.e. customer_id CP->get_openinvoices(\%myconfig, \%$form); ($newvc) = split /--/, $form->{ $form->{vc} }; $form->{"old$form->{vc}"} = qq|$newvc--$form->{"$form->{vc}_id"}|; @@ -442,10 +466,10 @@ sub check_form { if ($form->parse_amount(\%myconfig, $form->{"paid_$i"})) { $amount -= $form->parse_amount(\%myconfig, $form->{"paid_$i"}); - push(@{ $form->{paid} }, $form->{"paid_$i"}); - push(@{ $form->{due} }, $form->{"due_$i"}); - push(@{ $form->{invnumber} }, $form->{"invnumber_$i"}); - push(@{ $form->{invdate} }, $form->{"transdate_$i"}); + push(@{ $form->{paid} ||= [] }, $form->{"paid_$i"}); + push(@{ $form->{due} ||= [] }, $form->{"due_$i"}); + push(@{ $form->{invnumber} ||= [] }, $form->{"invnumber_$i"}); + push(@{ $form->{invdate} ||= [] }, $form->{"transdate_$i"}); } }