X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FOE.pm;h=93848b9fc197cf7a65652e729b9287733166b6be;hb=87e65e6c1cc64bfb2d73b6914ed2ef136861dd42;hp=969402692a43173f70fd527335a75a4dbdadb6d2;hpb=74fca575d438232002756175338c23f55b8a6c12;p=kivitendo-erp.git diff --git a/SL/OE.pm b/SL/OE.pm index 969402692..93848b9fc 100644 --- a/SL/OE.pm +++ b/SL/OE.pm @@ -78,7 +78,7 @@ sub transactions { $query = qq|SELECT o.id, o.ordnumber, o.transdate, o.reqdate, | . - qq| o.amount, ct.name, o.netamount, o.${vc}_id, o.globalproject_id, | . + qq| o.amount, ct.${vc}number, ct.name, o.netamount, o.${vc}_id, o.globalproject_id, | . qq| o.closed, o.delivered, o.quonumber, o.shippingpoint, o.shipvia, | . qq| o.transaction_description, | . qq| o.marge_total, o.marge_percent, | . @@ -115,11 +115,11 @@ sub transactions { if ($form->{"projectnumber"}) { $query .= <{"projectnumber"} . "%", "%" . $form->{"projectnumber"} . "%" ; } @@ -204,7 +204,7 @@ SQL "quonumber" => "o.quonumber", "name" => "ct.name", "employee" => "e.name", - "salesman" => "e.name", + "salesman" => "s.name", "shipvia" => "o.shipvia", "transaction_description" => "o.transaction_description" ); @@ -419,9 +419,13 @@ sub save { $reqdate = ($form->{"reqdate_$i"}) ? $form->{"reqdate_$i"} : undef; - # get pricegroup_id and save ist + # Get pricegroup_id and save it. Unfortunately the interface + # also uses ID "0" for signalling that none is selected, but "0" + # must not be stored in the database. Therefore we cannot simply + # use conv_i(). ($null, my $pricegroup_id) = split(/--/, $form->{"sellprice_pg_$i"}); $pricegroup_id *= 1; + $pricegroup_id = undef if !$pricegroup_id; # save detail record in orderitems table my $orderitems_id = $form->{"orderitems_id_$i"}; @@ -441,7 +445,7 @@ sub save { $form->{"qty_$i"}, $baseqty, $fxsellprice, $form->{"discount_$i"}, $form->{"unit_$i"}, conv_date($reqdate), conv_i($form->{"project_id_$i"}), - $form->{"serialnumber_$i"}, $form->{"ship_$i"}, conv_i($pricegroup_id), + $form->{"serialnumber_$i"}, $form->{"ship_$i"}, $pricegroup_id, $form->{"ordnumber_$i"}, conv_date($form->{"transdate_$i"}), $form->{"cusordnumber_$i"}, $form->{"subtotal_$i"} ? 't' : 'f', $form->{"marge_percent_$i"}, $form->{"marge_absolut_$i"}, @@ -725,9 +729,6 @@ sub retrieve { my ($query, $query_add, @values, @ids, $sth); - my $ic_cvar_configs = CVar->get_configs(module => 'IC', - dbh => $dbh); - # translate the ids (given by id_# and trans_id_#) into one array of ids, so we can join them later map { push @ids, $form->{"trans_id_$_"} @@ -1184,12 +1185,18 @@ sub order_details { my ($dec) = ($sellprice =~ /\.(\d+)/); my $decimalplaces = max 2, length($dec); - my $parsed_discount = $form->parse_amount($myconfig, $form->{"discount_$i"}); - my $linetotal_exact = $form->{"qty_$i"} * $sellprice * (100 - $parsed_discount) / 100 / $price_factor->{factor}; - my $linetotal = $form->round_amount($linetotal_exact, 2); - my $discount = $form->round_amount($form->{"qty_$i"} * $sellprice * $parsed_discount / 100 / $price_factor->{factor} - ($linetotal - $linetotal_exact), - $decimalplaces); - my $nodiscount_linetotal = $form->round_amount($form->{"qty_$i"} * $sellprice / $price_factor->{factor}, 2); + my $parsed_discount = $form->parse_amount($myconfig, $form->{"discount_$i"}); + + my $linetotal_exact = $form->{"qty_$i"} * $sellprice * (100 - $parsed_discount) / 100 / $price_factor->{factor}; + my $linetotal = $form->round_amount($linetotal_exact, 2); + + my $nodiscount_exact_linetotal = $form->{"qty_$i"} * $sellprice / $price_factor->{factor}; + my $nodiscount_linetotal = $form->round_amount($nodiscount_exact_linetotal,2); + + my $discount = $nodiscount_linetotal - $linetotal; # is always rounded because $nodiscount_linetotal and $linetotal are rounded + + my $discount_round_error = $discount + ($linetotal_exact - $nodiscount_exact_linetotal); # not used + $form->{"netprice_$i"} = $form->round_amount($form->{"qty_$i"} ? ($linetotal / $form->{"qty_$i"}) : 0, 2); push @{ $form->{TEMPLATE_ARRAYS}->{netprice} }, ($form->{"netprice_$i"} != 0) ? $form->format_amount($myconfig, $form->{"netprice_$i"}, $decimalplaces) : ''; @@ -1221,8 +1228,7 @@ sub order_details { $subtotal_header = 0; } else { - push @{ $form->{TEMPLATE_ARRAYS}->{discount_sub} }, ""; - push @{ $form->{TEMPLATE_ARRAYS}->{nodiscount_sub} }, ""; + push @{ $form->{TEMPLATE_ARRAYS}->{$_} }, "" for qw(discount_sub nodiscount_sub discount_sub_nofmt nodiscount_sub_nofmt); } if (!$form->{"discount_$i"}) {