X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FDO.pm;h=d657cca5c2380f10389b79a15cf978836864d4f4;hb=f521b94b94cbd7364006304546fc54c6815a48e2;hp=b5faeae8a646bbd18079b95d6b54cd35a85cf374;hpb=79783496069e3112eab9c74cf6060cd46a3ee6d3;p=kivitendo-erp.git diff --git a/SL/DO.pm b/SL/DO.pm index b5faeae8a..d657cca5c 100644 --- a/SL/DO.pm +++ b/SL/DO.pm @@ -258,8 +258,8 @@ sub save { my $h_item = prepare_query($form, $dbh, $q_item); my $q_item_stock = - qq|INSERT INTO delivery_order_items_stock (delivery_order_item_id, qty, unit, warehouse_id, bin_id, chargenumber) - VALUES (?, ?, ?, ?, ?, ?)|; + qq|INSERT INTO delivery_order_items_stock (delivery_order_item_id, qty, unit, warehouse_id, bin_id, chargenumber, bestbefore) + VALUES (?, ?, ?, ?, ?, ?, ?)|; my $h_item_stock = prepare_query($form, $dbh, $q_item_stock); my $in_out = $form->{type} =~ /^sales/ ? 'out' : 'in'; @@ -277,11 +277,10 @@ sub save { } my $baseqty = $form->{"qty_$i"} * $basefactor; - $form->{"lastcost_$i"} *= 1; - # set values to 0 if nothing entered $form->{"discount_$i"} = $form->parse_amount($myconfig, $form->{"discount_$i"}); $form->{"sellprice_$i"} = $form->parse_amount($myconfig, $form->{"sellprice_$i"}); + $form->{"lastcost_$i"} = $form->parse_amount($myconfig, $form->{"lastcost_$i"}); $price_factor = $price_factors{ $form->{"price_factor_id_$i"} } || 1; my $linetotal = $form->round_amount($form->{"sellprice_$i"} * $form->{"qty_$i"} / $price_factor, 2); @@ -309,7 +308,7 @@ sub save { foreach my $sinfo (@{ $stock_info }) { @values = ($item_id, $sinfo->{qty}, $sinfo->{unit}, conv_i($sinfo->{warehouse_id}), - conv_i($sinfo->{bin_id}), $sinfo->{chargenumber}); + conv_i($sinfo->{bin_id}), $sinfo->{chargenumber}, conv_date($sinfo->{bestbefore})); do_statement($form, $h_item_stock, $q_item_stock, @values); } @@ -624,6 +623,8 @@ sub retrieve { } $sth->finish(); + $form->{donumber_array} =~ s/\s*$//g; + $form->{saved_donumber} = $form->{donumber}; # if not given, fill transdate with current_date @@ -693,7 +694,7 @@ sub retrieve { my $in_out = $form->{type} =~ /^sales/ ? 'out' : 'in'; $query = - qq|SELECT qty, unit, bin_id, warehouse_id, chargenumber + qq|SELECT qty, unit, bin_id, warehouse_id, chargenumber, bestbefore FROM delivery_order_items_stock WHERE delivery_order_item_id = ?|; my $sth = prepare_query($form, $dbh, $query); @@ -740,7 +741,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"}); @@ -755,17 +756,20 @@ 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"}}; my $q_pg = qq|SELECT p.partnumber, p.description, p.unit, a.qty, pg.partsgroup FROM assembly a @@ -790,9 +794,9 @@ sub order_details { my @arrays = qw(runningnumber number description longdescription qty unit - partnotes serialnumber reqdate projectnumber + partnotes serialnumber reqdate projectnumber projectdescription si_runningnumber si_number si_description - si_warehouse si_bin si_chargenumber si_qty si_unit); + si_warehouse si_bin si_chargenumber si_bestbefore si_qty si_unit); map { $form->{TEMPLATE_ARRAYS}->{$_} = [] } (@arrays); @@ -832,6 +836,8 @@ sub order_details { push @{ $form->{TEMPLATE_ARRAYS}{serialnumber} }, $form->{"serialnumber_$i"}; push @{ $form->{TEMPLATE_ARRAYS}{reqdate} }, $form->{"reqdate_$i"}; push @{ $form->{TEMPLATE_ARRAYS}{projectnumber} }, $projectnumbers{$form->{"project_id_$i"}}; + push @{ $form->{TEMPLATE_ARRAYS}{projectdescription} }, + $projectdescriptions{$form->{"project_id_$i"}}; if ($form->{"assembly_$i"}) { $sameitem = ""; @@ -875,6 +881,7 @@ sub order_details { push @{ $form->{TEMPLATE_ARRAYS}{si_warehouse}[$position-1] }, $bin_wh->{warehouse}; push @{ $form->{TEMPLATE_ARRAYS}{si_bin}[$position-1] }, $bin_wh->{bin}; push @{ $form->{TEMPLATE_ARRAYS}{si_chargenumber}[$position-1] }, $si->{chargenumber}; + push @{ $form->{TEMPLATE_ARRAYS}{si_bestbefore}[$position-1] }, $si->{bestbefore}; push @{ $form->{TEMPLATE_ARRAYS}{si_qty}[$position-1] }, $form->format_amount($myconfig, $si->{qty} * 1); push @{ $form->{TEMPLATE_ARRAYS}{si_unit}[$position-1] }, $si->{unit}; } @@ -944,16 +951,16 @@ sub get_item_availability { my $myconfig = \%main::myconfig; my $query = - qq|SELECT i.warehouse_id, i.bin_id, i.chargenumber, SUM(qty) AS qty, i.parts_id, + qq|SELECT i.warehouse_id, i.bin_id, i.chargenumber, i.bestbefore, SUM(qty) AS qty, i.parts_id, w.description AS warehousedescription, b.description AS bindescription FROM inventory i LEFT JOIN warehouse w ON (i.warehouse_id = w.id) LEFT JOIN bin b ON (i.bin_id = b.id) WHERE (i.parts_id IN (| . join(', ', ('?') x scalar(@parts_ids)) . qq|)) - GROUP BY i.warehouse_id, i.bin_id, i.chargenumber, i.parts_id, w.description, b.description + GROUP BY i.warehouse_id, i.bin_id, i.chargenumber, i.bestbefore, i.parts_id, w.description, b.description HAVING SUM(qty) > 0 - ORDER BY LOWER(w.description), LOWER(b.description), LOWER(i.chargenumber) + ORDER BY LOWER(w.description), LOWER(b.description), LOWER(i.chargenumber), i.bestbefore |; my $contents = selectall_hashref_query($form, $form->get_standard_dbh($myconfig), $query, @parts_ids); @@ -991,7 +998,8 @@ sub check_stock_availability { foreach my $row (@contents) { next if (($row->{bin_id} != $sinfo->{bin_id}) || ($row->{warehouse_id} != $sinfo->{warehouse_id}) || - ($row->{chargenumber} ne $sinfo->{chargenumber})); + ($row->{chargenumber} ne $sinfo->{chargenumber}) || + ($row->{bestbefore} ne $sinfo->{bestbefore})); $found = 1; @@ -1039,6 +1047,7 @@ sub transfer_in_out { "${prefix}_warehouse_id" => $request->{warehouse_id}, "${prefix}_bin_id" => $request->{bin_id}, 'chargenumber' => $request->{chargenumber}, + 'bestbefore' => $request->{bestbefore}, 'qty' => $request->{qty}, 'unit' => $request->{unit}, 'oe_id' => $form->{id},