Revision 38b907c9
Von Bernd Bleßmann vor mehr als 9 Jahren hinzugefügt
SL/Controller/CsvImport/Inventory.pm | ||
---|---|---|
35 | 35 |
my ($self) = @_; |
36 | 36 |
|
37 | 37 |
my $profile = $self->SUPER::init_profile; |
38 |
delete @{$profile}{qw(trans_id oe_id delivery_order_items_stock_id bestbefore trans_type_id project_id)}; |
|
38 |
delete @{$profile}{qw(trans_id oe_id delivery_order_items_stock_id trans_type_id project_id)}; |
|
39 |
delete @{$profile}{qw(bestbefore)} if !$::instance_conf->get_show_bestbefore; |
|
39 | 40 |
|
40 | 41 |
return $profile; |
41 | 42 |
} |
... | ... | |
116 | 117 |
{ name => 'warehouse', description => $::locale->text('Warehouse') }, |
117 | 118 |
{ name => 'warehouse_id', description => $::locale->text('Warehouse (database ID)') }, |
118 | 119 |
); |
120 |
if ($::instance_conf->get_show_bestbefore) { |
|
121 |
$self->add_displayable_columns({ name => 'bestbefore', description => $::locale->text('Best Before') }); |
|
122 |
} |
|
119 | 123 |
} |
120 | 124 |
|
121 | 125 |
sub check_warehouse { |
... | ... | |
289 | 293 |
} |
290 | 294 |
|
291 | 295 |
# Actual quantity is read from stock or is the result of transfers for the |
292 |
# same part, warehouse, bin and chargenumber done before. |
|
296 |
# same part, warehouse, bin, chargenumber and bestbefore date (if |
|
297 |
# show_bestbefore is enabled) done before. |
|
293 | 298 |
my $key = join '+', $object->parts_id, $object->warehouse_id, $object->bin_id, $object->chargenumber; |
294 |
if (!exists $self->{resulting_quantities}->{$key}) { |
|
295 |
my $query = <<SQL; |
|
296 |
SELECT sum(qty) FROM inventory |
|
297 |
WHERE parts_id = ? AND warehouse_id = ? AND bin_id = ? AND chargenumber = ? |
|
298 |
GROUP BY warehouse_id, bin_id, chargenumber |
|
299 |
SQL |
|
299 |
$key .= join '+', $key, $object->bestbefore if $::instance_conf->get_show_bestbefore; |
|
300 | 300 |
|
301 |
my ($stocked_qty) = selectrow_query($::form, $::form->get_standard_dbh, $query, |
|
302 |
$object->parts_id, $object->warehouse_id, $object->bin_id, $object->chargenumber); |
|
303 |
$self->{resulting_quantities}->{$key} = $stocked_qty; |
|
301 |
if (!exists $self->{resulting_quantities}->{$key}) { |
|
302 |
$self->{resulting_quantities}->{$key} = _get_stocked_qty($object); |
|
304 | 303 |
} |
305 | 304 |
my $actual_qty = $self->{resulting_quantities}->{$key}; |
306 | 305 |
|
... | ... | |
403 | 402 |
$self->SUPER::save_objects(%params); |
404 | 403 |
} |
405 | 404 |
|
405 |
sub _get_stocked_qty { |
|
406 |
my ($object) = @_; |
|
407 |
|
|
408 |
my $bestbefore_filter = ''; |
|
409 |
my $bestbefore_val_cnt = 0; |
|
410 |
if ($::instance_conf->get_show_bestbefore) { |
|
411 |
$bestbefore_filter = ($object->bestbefore) ? 'AND bestbefore = ?' : 'AND bestbefore IS NULL'; |
|
412 |
$bestbefore_val_cnt = ($object->bestbefore) ? 1 : 0; |
|
413 |
} |
|
414 |
|
|
415 |
my $query = <<SQL; |
|
416 |
SELECT sum(qty) FROM inventory |
|
417 |
WHERE parts_id = ? AND warehouse_id = ? AND bin_id = ? AND chargenumber = ? $bestbefore_filter |
|
418 |
GROUP BY warehouse_id, bin_id, chargenumber |
|
419 |
SQL |
|
420 |
|
|
421 |
my @values = ($object->parts_id, |
|
422 |
$object->warehouse_id, |
|
423 |
$object->bin_id, |
|
424 |
$object->chargenumber); |
|
425 |
push @values, $object->bestbefore if $bestbefore_val_cnt; |
|
426 |
|
|
427 |
my ($stocked_qty) = selectrow_query($::form, $::form->get_standard_dbh, $query, @values); |
|
428 |
|
|
429 |
return $stocked_qty; |
|
430 |
} |
|
431 |
|
|
406 | 432 |
sub _wh_id_and_description_ident { |
407 | 433 |
return 'wh_id+description'; |
408 | 434 |
} |
Auch abrufbar als: Unified diff
Lagerbewegungen/-bestände auch mit Mindesthaltbarkeitsdatum importieren können.
Auch hier kann es Probleme geben, wenn eine Installation zuerst das
Mindeshaltbarkeitsdatum aktiviert hatte und es dann deaktiviert wird (siehe auch
"System->Mandantenkonfiguration", Reiter "Lager" unter "Mindesthaltbarkeit
anzeigen".