X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=sidebyside;f=SL%2FOE.pm;h=4599443180abe803a66267c31c07d0bd20eab84c;hb=3f924c0fc876c2133e5ba22f25a45a484885ee0b;hp=ceca51a4f7e6d7e22cc5fb88e59bada8dbe1341b;hpb=c2eb03d45b1602b75a2a3074d5baaf650f1eb631;p=kivitendo-erp.git diff --git a/SL/OE.pm b/SL/OE.pm index ceca51a4f..459944318 100644 --- a/SL/OE.pm +++ b/SL/OE.pm @@ -535,14 +535,18 @@ sub save { $pricegroup_id *= 1; $pricegroup_id = undef if !$pricegroup_id; - if ( $::instance_conf->get_order_always_project && !$form->{"globalproject_id"} && ( $form->{type} eq 'sales_order' ) ) { + # 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}, - active => 1, - project_type_id => $::instance_conf->get_project_type_id, + projectnumber => $form->{ordnumber}, + 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, - # id => $form->{globalproject_id} ); $new_project->save; $form->{"globalproject_id"} = $new_project->id; @@ -640,7 +644,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 +653,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 +696,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 +910,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);