X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FOE.pm;h=b9aba5c03c27d33e138a54a23f58f1b0c98040e8;hb=9bfcf6a0d67d2210065de7d907d46c3e2715e06b;hp=3f7dbaa75d3f14c97337b88ca245225cd4cc5437;hpb=1465da30be12244675541d59b22e94a0f90e0b33;p=kivitendo-erp.git diff --git a/SL/OE.pm b/SL/OE.pm index 3f7dbaa75..b9aba5c03 100644 --- a/SL/OE.pm +++ b/SL/OE.pm @@ -43,20 +43,6 @@ use SL::IC; use strict; -=head1 NAME - -OE.pm - Order entry module - -=head1 DESCRIPTION - -OE.pm is part of the OE module. OE is responsible for sales and purchase orders, as well as sales quotations and purchase requests. This file abstracts the database tables C and C. - -=head1 FUNCTIONS - -=over 4 - -=cut - sub transactions { $main::lxdebug->enter_sub(); @@ -136,6 +122,10 @@ SQL push(@values, '%' . $form->{$vc} . '%'); } + if (!$main::auth->assert('sales_all_edit', 1)) { + $query .= " AND o.employee_id = (select id from employee where login= ?)"; + push @values, $form->{login}; + } if ($form->{employee_id}) { $query .= " AND o.employee_id = ?"; push @values, conv_i($form->{employee_id}); @@ -347,8 +337,9 @@ sub save { my $baseqty = $form->{"qty_$i"} * $basefactor; $form->{"marge_percent_$i"} = $form->parse_amount($myconfig, $form->{"marge_percent_$i"}) * 1; - $form->{"marge_total_$i"} = $form->parse_amount($myconfig, $form->{"marge_total_$i"}) * 1; - $form->{"lastcost_$i"} = $form->{"lastcost_$i"} * 1; + $form->{"marge_absolut_$i"} = $form->parse_amount($myconfig, $form->{"marge_absolut_$i"}) * 1; + + $form->{"lastcost_$i"} = $form->parse_amount($myconfig, $form->{"lastcost_$i"}); # set values to 0 if nothing entered $form->{"discount_$i"} = $form->parse_amount($myconfig, $form->{"discount_$i"}) / 100; @@ -438,7 +429,7 @@ sub save { $form->{"serialnumber_$i"}, $form->{"ship_$i"}, conv_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_total_$i"}, + $form->{"marge_percent_$i"}, $form->{"marge_absolut_$i"}, $form->{"lastcost_$i"}, conv_i($form->{"price_factor_id_$i"}), conv_i($form->{"price_factor_id_$i"}), conv_i($form->{"marge_price_factor_$i"})); @@ -676,7 +667,7 @@ sub retrieve { my ($self, $myconfig, $form) = @_; # connect to database - my $dbh = $form->dbconnect_noauto($myconfig); + my $dbh = $form->get_standard_dbh; my ($query, $query_add, @values, @ids, $sth); @@ -957,22 +948,6 @@ sub retrieve { return $rc; } -=item retrieve_simple PARAMS - -simple OE retrieval by id. does not look up customer, vendor, units or any other stuff. only oe and orderitems. - - my $order = retrieve_simple(id => 2); - - $order => { - %_OE_CONTENT, - orderitems => [ - %_ORDERITEM_ROW_1, - %_ORDERITEM_ROW_2, - ... - ] - } - -=cut sub retrieve_simple { $main::lxdebug->enter_sub(); @@ -1027,7 +1002,7 @@ sub order_details { my %oid = ('Pg' => 'oid', 'Oracle' => 'rowid'); - my (@project_ids, %projectnumbers); + my (@project_ids, %projectnumbers, %projectdescriptions); push(@project_ids, $form->{"globalproject_id"}) if ($form->{"globalproject_id"}); @@ -1059,16 +1034,18 @@ sub order_details { } if (@project_ids) { - $query = "SELECT id, projectnumber FROM project WHERE id IN (" . + $query = "SELECT id, projectnumber, description FROM project WHERE id IN (" . join(", ", map("?", @project_ids)) . ")"; $sth = prepare_execute_query($form, $dbh, $query, @project_ids); while (my $ref = $sth->fetchrow_hashref()) { $projectnumbers{$ref->{id}} = $ref->{projectnumber}; + $projectdescriptions{$ref->{id}} = $ref->{description}; } $sth->finish(); } $form->{"globalprojectnumber"} = $projectnumbers{$form->{"globalproject_id"}}; + $form->{"globalprojectdescription"} = $projectdescriptions{$form->{"globalproject_id"}}; $form->{discount} = []; @@ -1081,7 +1058,7 @@ sub order_details { qw(runningnumber number description longdescription qty ship unit bin partnotes serialnumber reqdate sellprice listprice netprice discount p_discount discount_sub nodiscount_sub - linetotal nodiscount_linetotal tax_rate projectnumber + linetotal nodiscount_linetotal tax_rate projectnumber projectdescription price_factor price_factor_name partsgroup); push @arrays, map { "ic_cvar_$_->{name}" } @{ $ic_cvar_configs }; @@ -1189,6 +1166,7 @@ sub order_details { push @{ $form->{TEMPLATE_ARRAYS}->{nodiscount_linetotal} }, $form->format_amount($myconfig, $nodiscount_linetotal, 2); push(@{ $form->{TEMPLATE_ARRAYS}->{projectnumber} }, $projectnumbers{$form->{"project_id_$i"}}); + push(@{ $form->{TEMPLATE_ARRAYS}->{projectdescription} }, $projectdescriptions{$form->{"project_id_$i"}}); my ($taxamount, $taxbase); my $taxrate = 0; @@ -1227,13 +1205,13 @@ sub order_details { } $query = qq|SELECT p.partnumber, p.description, p.unit, a.qty, | . - qq|pg.partsgroup | . - qq|FROM assembly a | . - qq| JOIN parts p ON (a.parts_id = p.id) | . - qq| LEFT JOIN partsgroup pg ON (p.partsgroup_id = pg.id) | . - qq| WHERE a.bom = '1' | . - qq| AND a.id = ? | . $sortorder; - @values = ($form->{"id_$i"}); + qq|pg.partsgroup | . + qq|FROM assembly a | . + qq| JOIN parts p ON (a.parts_id = p.id) | . + qq| LEFT JOIN partsgroup pg ON (p.partsgroup_id = pg.id) | . + qq| WHERE a.bom = '1' | . + qq| AND a.id = ? | . $sortorder; + @values = ($form->{"id_$i"}); $sth = $dbh->prepare($query); $sth->execute(@values) || $form->dberror($query); @@ -1341,3 +1319,36 @@ SQL } 1; + +__END__ + +=head1 NAME + +OE.pm - Order entry module + +=head1 DESCRIPTION + +OE.pm is part of the OE module. OE is responsible for sales and purchase orders, as well as sales quotations and purchase requests. This file abstracts the database tables C and C. + +=head1 FUNCTIONS + +=over 4 + +=item retrieve_simple PARAMS + +simple OE retrieval by id. does not look up customer, vendor, units or any other stuff. only oe and orderitems. + + my $order = retrieve_simple(id => 2); + + $order => { + %_OE_CONTENT, + orderitems => [ + %_ORDERITEM_ROW_1, + %_ORDERITEM_ROW_2, + ... + ] + } + +=back + +=cut