X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/19e4022642c1fd958850244ec4896f964519e563..d0a22ba8bf8e2016ab378a27dd149fdd97ecc057:/SL/OE.pm diff --git a/SL/OE.pm b/SL/OE.pm index 5b7c16dba..079b14b13 100644 --- a/SL/OE.pm +++ b/SL/OE.pm @@ -50,6 +50,8 @@ use SL::DBUtils; use SL::HTML::Restrict; use SL::IC; use SL::TransNumber; +use SL::Util qw(trim); +use Text::ParseWords; use strict; @@ -171,12 +173,12 @@ SQL } elsif ($form->{$vc}) { $query .= " AND ct.name ILIKE ?"; - push(@values, '%' . $form->{$vc} . '%'); + push(@values, '%' . trim($form->{$vc}) . '%'); } if ($form->{"cp_name"}) { $query .= " AND (cp.cp_name ILIKE ? OR cp.cp_givenname ILIKE ?)"; - push(@values, ('%' . $form->{"cp_name"} . '%')x2); + push(@values, ('%' . trim($form->{"cp_name"}) . '%')x2); } if (!$main::auth->assert('sales_all_edit', 1)) { @@ -207,12 +209,12 @@ SQL if ($form->{$ordnumber}) { $query .= qq| AND o.$ordnumber ILIKE ?|; - push(@values, '%' . $form->{$ordnumber} . '%'); + push(@values, '%' . trim($form->{$ordnumber}) . '%'); } if ($form->{cusordnumber}) { $query .= qq| AND o.cusordnumber ILIKE ?|; - push(@values, '%' . $form->{cusordnumber} . '%'); + push(@values, '%' . trim($form->{cusordnumber}) . '%'); } if($form->{transdatefrom}) { @@ -247,7 +249,7 @@ SQL if ($form->{shippingpoint}) { $query .= qq| AND o.shippingpoint ILIKE ?|; - push(@values, '%' . $form->{shippingpoint} . '%'); + push(@values, '%' . trim($form->{shippingpoint}) . '%'); } if ($form->{taxzone_id} ne '') { # taxzone_id could be 0 @@ -257,7 +259,7 @@ SQL if ($form->{transaction_description}) { $query .= qq| AND o.transaction_description ILIKE ?|; - push(@values, '%' . $form->{transaction_description} . '%'); + push(@values, '%' . trim($form->{transaction_description}) . '%'); } if ($form->{periodic_invoices_active} ne $form->{periodic_invoices_inactive}) { @@ -272,7 +274,7 @@ SQL if (($form->{order_probability_value} || '') ne '') { my $op = $form->{order_probability_value} eq 'le' ? '<=' : '>='; $query .= qq| AND (o.order_probability ${op} ?)|; - push @values, $form->{order_probability_value}; + push @values, trim($form->{order_probability_value}); } if ($form->{expected_billing_date_from}) { @@ -285,6 +287,18 @@ SQL push @values, conv_date($form->{expected_billing_date_to}); } + if ($form->{all}) { + my @tokens = parse_line('\s+', 0, $form->{all}); + # ordnumber quonumber customer.name vendor.name transaction_description + $query .= qq| AND ( + o.ordnumber ILIKE ? OR + o.quonumber ILIKE ? OR + ct.name ILIKE ? OR + o.transaction_description ILIKE ? + )| for @tokens; + push @values, ("%$_%")x4 for @tokens; + } + my ($cvar_where, @cvar_values) = CVar->build_filter_query('module' => 'CT', 'trans_id_field' => 'ct.id', 'filter' => $form, @@ -537,9 +551,13 @@ sub save { # force new project, if not set yet if ($::instance_conf->get_order_always_project && !$form->{"globalproject_id"} && ($form->{type} eq 'sales_order')) { + require SL::DB::Customer; + my $customer = SL::DB::Manager::Customer->find_by(id => $form->{customer_id}); + die "Can't find customer" unless $customer; my $new_project = SL::DB::Project->new( projectnumber => $form->{ordnumber}, - description => $form->{customer}, + description => $customer->name, + customer_id => $customer->id, active => 1, project_type_id => $::instance_conf->get_project_type_id, project_status_id => $::instance_conf->get_project_status_id, @@ -640,7 +658,7 @@ SQL my $tax = 0; map { $tax += $form->round_amount($taxaccounts{$_}, 2) } keys %taxaccounts; - $amount = $form->round_amount($netamount + $tax, 2); + $amount = $form->round_amount($netamount + $tax, 2, 1); $netamount = $form->round_amount($netamount, 2); if ($form->{currency} eq $form->{defaultcurrency}) { @@ -649,7 +667,10 @@ SQL $exchangerate = $form->check_exchangerate($myconfig, $form->{currency}, $form->{transdate}, ($form->{vc} eq 'customer') ? 'buy' : 'sell'); } - $form->{exchangerate} = $exchangerate || $form->parse_amount($myconfig, $form->{exchangerate}); + # from inputfield (exchangerate) or hidden (forex) + my $exchangerate_from_form = $form->{forex} || $form->parse_amount($myconfig, $form->{exchangerate}); + + $form->{exchangerate} = $exchangerate || $exchangerate_from_form; my $quotation = $form->{type} =~ /_order$/ ? 'f' : 't'; @@ -689,6 +710,8 @@ SQL conv_i($form->{id})); do_query($form, $dbh, $query, @values); + $form->new_lastmtime('oe'); + $form->{ordtotal} = $amount; $form->{name} = $form->{ $form->{vc} }; @@ -901,7 +924,9 @@ sub retrieve { (SELECT c.accno FROM chart c WHERE d.income_accno_id = c.id) AS income_accno, (SELECT c.accno FROM chart c WHERE d.expense_accno_id = c.id) AS expense_accno, (SELECT c.accno FROM chart c WHERE d.fxgain_accno_id = c.id) AS fxgain_accno, - (SELECT c.accno FROM chart c WHERE d.fxloss_accno_id = c.id) AS fxloss_accno + (SELECT c.accno FROM chart c WHERE d.fxloss_accno_id = c.id) AS fxloss_accno, + (SELECT c.accno FROM chart c WHERE d.rndgain_accno_id = c.id) AS rndgain_accno, + (SELECT c.accno FROM chart c WHERE d.rndloss_accno_id = c.id) AS rndloss_accno $query_add FROM defaults d|; my $ref = selectfirst_hashref_query($form, $dbh, $query);