Inventory: allocate bevorzugt jetzt früherere Lagerbewegung
authorSven Schöling <sven.schoeling@opendynamic.de>
Wed, 20 Nov 2019 14:48:06 +0000 (15:48 +0100)
committerSven Schöling <s.schoeling@googlemail.com>
Fri, 27 Nov 2020 15:27:45 +0000 (16:27 +0100)
SL/Helper/Inventory.pm

index 9a5910d..a1a1428 100644 (file)
@@ -24,7 +24,10 @@ sub _get_stock_onhand {
 
   my $onhand_mode = !!$params{onhand};
 
-  my @selects = ('SUM(qty) as qty');
+  my @selects = (
+    'SUM(qty) AS qty',
+    'MIN(EXTRACT(epoch FROM inventory.itime)) AS itime',
+  );
   my @values;
   my @where;
   my @groups;
@@ -192,6 +195,7 @@ sub allocate {
     || exists $chargenumbers{$b->{chargenumber}}  <=> exists $chargenumbers{$a->{chargenumber}} # then prefer wanted chargenumbers
     || exists $bin_whitelist{$b->{bin_id}}        <=> exists $bin_whitelist{$a->{bin_id}}       # then prefer wanted bins
     || exists $wh_whitelist{$b->{warehouse_id}}   <=> exists $wh_whitelist{$a->{warehouse_id}}  # then prefer wanted bins
+    || $a->{itime}                                <=> $b->{itime}                               # and finally prefer earlier charges
   } @filtered_results;
   my @allocations;
   my $rest_qty = $qty;