);
 
       if ($unit) {
-        $qty *= $unit->factor           || 1;
-        $qty /= $part->unit_obj->factor || 1 if $part->unit;
+        $qty = $unit->convert_to($qty, $part->unit_obj);
       }
 
+      $params{chargenumber} ||= '';
+
       if ($direction & 1) {
         SL::DB::Inventory->new(
           %params,
     push @filter_ary, "i.itime <= ?";
     push @filter_vars, $filter{date};
   }
+  if (!$filter{include_invalid_warehouses}){
+    push @filter_ary,  "NOT (w.invalid)";
+  }
 
   # prepare qty comparison for later filtering
   my ($f_qty_op, $f_qty, $f_qty_base_unit);
 
 =head1 BUGS
 
+None yet.
+
 =head1 AUTHOR
 
 =cut