X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=inline;f=bin%2Fmozilla%2Fcp.pl;h=ccecac3063cc1da063c7a8d00611b7e277185f92;hb=34035b33f21af21316df798b19f2a758aa86b3a8;hp=86a5890bd5153c9c50689497fd486e99e73d9f60;hpb=df5d9efd810efd8bd01349d22e3fd4f356cc99ac;p=kivitendo-erp.git
diff --git a/bin/mozilla/cp.pl b/bin/mozilla/cp.pl
index 86a5890bd..ccecac306 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;
@@ -66,25 +67,31 @@ 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}"}) {
+ $form->{"select$form->{vc}"} .= "\n";
# 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}"} };
}
-
CP->paymentaccounts(\%myconfig, \%$form);
# 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
@@ -102,13 +109,14 @@ sub payment {
# geben und hier reinparsen, oder besser multibox oder html auslagern?
# Antwort: form->currency wird mit oldcurrency oder curr[0] überschrieben
# Wofür macht das Sinn?
- @curr = split(/:/, $form->{currencies});
- chomp $curr[0];
+ @curr = $form->get_all_currencies();
$form->{defaultcurrency} = $form->{currency} = $form->{oldcurrency} =
- $curr[0];
+ $form->get_default_currency(\%myconfig);
+ # 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;
@@ -123,15 +131,26 @@ sub form_header {
$auth->assert('cash');
my ($vc, $arap, $exchangerate);
- my ($onload);
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" && $form->{"all_$form->{vc}"}){
+ my ($customername) = split /--/, $form->{ $form->{vc} };
+ $form->{ $form->{vc} } = $customername . "--" . $form->{customer_id};
+ }
+ # bugfix 1771
+ # geändert von
+ # offen: $form->{ARAP} kann raus?
for my $item ($form->{vc}, "account", "currency", $form->{ARAP}) {
+ $form->{$item} = H($form->{$item});
$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 =
@@ -147,14 +166,10 @@ sub form_header {
$form->header;
$arap = lc $form->{ARAP};
- $onload = qq|focus()|;
- $onload .= qq|;setupDateFormat('|. $myconfig{dateformat} .qq|', '|. $locale->text("Falsches Datumsformat!") .qq|')|;
- $onload .= qq|;setupPoints('|. $myconfig{numberformat} .qq|', '|. $locale->text("wrongformat") .qq|')|;
print $::form->parse_html_template('cp/form_header', {
is_customer => $form->{vc} eq 'customer',
is_receipt => $form->{type} eq 'receipt',
- onload => $onload,
arap => $arap,
vccontent => $vc,
});
@@ -241,15 +256,30 @@ sub update {
}
}
- # search by invoicenumber,
- if ($form->{invnumber}) {
- $form->{open} ='Y'; # nur die offenen rechnungen
- if ($form->{ARAP} eq 'AR'){
+ # 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'; # 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);
@@ -285,7 +315,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;
@@ -311,6 +341,9 @@ sub update {
}
}
+ if (!$form->{forex}) { # read exchangerate from input field (not hidden)
+ $form->{exchangerate} = $form->parse_amount(\%myconfig, $form->{exchangerate});
+ }
$form->{forex} = $form->check_exchangerate( \%myconfig, $form->{currency}, $form->{datepaid}, $buysell);
$form->{exchangerate} = $form->{forex} if $form->{forex};
@@ -426,19 +459,16 @@ sub check_form {
if ($form->{currency} ne $form->{oldcurrency}) {
&update;
- ::end_of_request();
+ $::dispatcher->end_request;
}
$form->error($locale->text('Date missing!')) unless $form->{datepaid};
my $selected_check = 1;
for my $i (1 .. $form->{rowcount}) {
- if ($form->{"checked_$i"}) {
- if ($form->parse_amount(\%myconfig, $form->{"paid_$i"}, 2) <= 0) { # negativen Betrag eingegeben
- $form->error($locale->text('Amount has to be greater then zero! Wrong row number: ') . $i);
- }
- undef($selected_check);
- # last; # ich muss doch über alle buchungen laufen, da ich noch
- # die freitext-eingabe der werte prüfen will
+ next unless $form->{"checked_$i"};
+ if (abs($form->parse_amount(\%myconfig, $form->{"paid_$i"}, 2)) < 0.01) {
+ $form->error($locale->text('Row #1: amount has to be different from zero.', $i));
}
+ undef $selected_check;
}
$form->error($locale->text('No transaction selected!')) if $selected_check;