Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 4b2e8d68

Von Jan Büren vor mehr als 3 Jahren hinzugefügt

  • ID 4b2e8d6817f9240e9a1fe9e95afb73aaa337c3df
  • Vorgänger a258467b
  • Nachfolger 36867b7b

Feature: Auslagern über Rechnung inkl. Seriennummer Lagermenge berücksichtigen

Unterschiede anzeigen:

SL/IS.pm
1462 1462
  foreach my $i (1 .. $form->{rowcount}) {
1463 1463
    next if !$form->{"id_$i"};
1464 1464

  
1465
    my ($err, $wh_id, $bin_id, $chargenumber);
1465
    my ($err, $qty, $wh_id, $bin_id, $chargenumber);
1466 1466

  
1467 1467
    if ($::instance_conf->get_sales_serial_eq_charge) {
1468 1468
      next unless $form->{"serialnumber_$i"};
......
1472 1472
        last;
1473 1473
      }
1474 1474
      foreach my $serial (@serials) {
1475
        ($wh_id, $bin_id, $chargenumber) = WH->get_wh_and_bin_for_charge(chargenumber => $serial);
1476

  
1475
        ($qty, $wh_id, $bin_id, $chargenumber) = WH->get_wh_and_bin_for_charge(chargenumber => $serial);
1476
        if (!$qty) {
1477
          push @errors, $::locale->text("Not enough in stock for the serial number #1", $serial);
1478
          last;
1479
        }
1477 1480
        push @transfers, {
1478 1481
            'parts_id'         => $form->{"id_$i"},
1479 1482
            'qty'              => 1,
SL/WH.pm
1135 1135

  
1136 1136
  my $self     = shift;
1137 1137
  my %params   = @_;
1138
  my %bin_qty;
1138 1139

  
1139 1140
  croak t8('Need charge number!') unless $params{chargenumber};
1140 1141

  
1141
  my $inv_item= SL::DB::Manager::Inventory->get_first(where => [chargenumber => $params{chargenumber} ]);
1142
  my $inv_items = SL::DB::Manager::Inventory->get_all(where => [chargenumber => $params{chargenumber} ]);
1142 1143

  
1143
  croak t8("Invalid charge number: #1", $params{chargenumber}) unless (ref $inv_item eq 'SL::DB::Inventory');
1144
  croak t8("Invalid charge number: #1", $params{chargenumber}) unless (ref @{$inv_items}[0] eq 'SL::DB::Inventory');
1145
  # add all qty for one bin and add wh_id
1146
  ($bin_qty{$_->bin_id}{qty}, $bin_qty{$_->bin_id}{wh}) = ($bin_qty{$_->bin_id}{qty} + $_->qty, $_->warehouse_id) for @{ $inv_items };
1147

  
1148
  while (my ($bin, $value) = each (%bin_qty)) {
1149
    if ($value->{qty} > 0) {
1150
      $main::lxdebug->leave_sub();
1151
      return ($value->{qty}, $value->{wh}, $bin, $params{chargenumber});
1152
    }
1153
  }
1144 1154

  
1145 1155
  $main::lxdebug->leave_sub();
1146
  return ($inv_item->warehouse_id, $inv_item->bin_id, $inv_item->chargenumber);
1156
  return undef;
1147 1157
}
1148 1158
1;
1149 1159

  
......
1301 1311

  
1302 1312
=head2 get_wh_and_bin_for_charge C<$params{chargenumber}>
1303 1313

  
1304
Gets the first inventory entry with the mandatory chargenumber: C<$params{chargenumber}>.
1314
Gets the current qty from the inventory entries with the mandatory chargenumber: C<$params{chargenumber}>.
1305 1315
Croaks if the chargenumber is missing or no entry currently exists.
1306
From the found inventory entry the following values and in this order are returned:
1307
C<warehouse_id>, C<bin_id>, C<chargenumber>.
1316
If there is one bin and warehouse with a positive qty, this fields are returned:
1317
C<qty> C<warehouse_id>, C<bin_id>, C<chargenumber>.
1318
Otherwise returns undef.
1308 1319

  
1309 1320

  
1310 1321
=head3 Prerequisites
locale/de/all
2123 2123
  'Not Discountable'            => 'Nicht rabattierfähig',
2124 2124
  'Not delivered'               => 'Nicht geliefert',
2125 2125
  'Not done yet'                => 'Noch nicht fertig',
2126
  'Not enough in stock for the serial number #1' => 'Nicht genug auf Lager von der Seriennummer #1',
2126 2127
  'Not obsolete'                => 'Gültig',
2127 2128
  'Note'                        => 'Hinweis',
2128 2129
  'Note that parameter names must not be quoted.' => 'Beachten Sie, dass Parameternamen nicht in Anführungszeichen stehen dürfen.',

Auch abrufbar als: Unified diff