Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 38b907c9

Von Bernd Bleßmann vor mehr als 9 Jahren hinzugefügt

  • ID 38b907c9866951e95c8741959b4ead1544e45011
  • Vorgänger 0b9fc4e6
  • Nachfolger ca00375c

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".

Unterschiede anzeigen:

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