}
- public function to_pick(order: {id:String}) : Null<Int> {
+ public function toPick(order: {id:String}) : Null<Int> {
var orderId = ItemScheduler.orderId(order);
if(rowDetails == null) return null;
return rowDetails.get(orderId).to_pick;
var orders = this.orders();
var total_picked = 0;
for(order in orders) {
- var picked : Int = Std.parseInt(order.to_pick);
- var user_picked : Int = 0;
- if(parameters != null) user_picked = parameters.to_pick(order);
- total_picked += user_picked == null ? picked : user_picked;
+ total_picked += toPick(order);
}
left -= total_picked;
+ if(left<0) FA.error('There is more items to pick than in stock');
formatLocation(location, "Initial", left);
// We display the order ordered by priority
for(order in orders) {
var quantity : Int = Std.parseInt(order.quantity);
+ // We don't need to remove the quantity which is picked
+ // as we have already counted it in the initial location calculation.
+ quantity -= toPick(order);
while(0 >= left && locationIter.hasNext()) {
location = locationIter.next();
var row_id = orderId(order);
var attributes = ['id = "'+row_id+'"'];
var classes = [];
- var before : Int = left + order.quantity;
+ var to_pick = toPick(order);
+ var before : Int = left + order.quantity- to_pick;
/* We have basically 3 different cases;
* - the order can be fullfilled
* - the order can be partially
*/
var required_by : Date = FA.sql2date(order.required_date);
if(required_by == null) required_by = FA.sql2date(order.expiry_date);
- if(required_by != null && required_by.getTime() < date.getTime()) {
+ if(to_pick > 0) {
+ classes.push('picked');
+ }
+ else if(required_by != null && required_by.getTime() < date.getTime()) {
classes.push('late');
}
else {
var maxQuantity = order.quantity;
var quantity = order.to_pick;
var available = order.quantity > left ? left : order.quantity;
- var user_pick = parameters == null ? quantity : parameters.to_pick(order);
+ var user_pick = parameters == null ? quantity : parameters.toPick(order);
if (user_pick == null) user_pick = 0;
if(maxQuantity > 12) {
return '<input type="text" name="'+row_id+'[to_pick]" value="'+user_pick+'">';
}
}
+public function toPick(order) {
+ var picked : Int = Std.parseInt(order.to_pick);
+ var user_picked : Int = null;
+ if(parameters != null) user_picked = parameters.toPick(order);
+ return user_picked == null ? picked : user_picked ;
+}
+
}
$this->parameters = $parameters;
$this->qoh = get_qoh_on_date($this->stock_id, $startLocation);
}}
+ public function toPick($order) {
+ $picked = Std::parseInt($order->to_pick);
+ $user_picked = null;
+ if($this->parameters !== null) {
+ $user_picked = $this->parameters->toPick($order);
+ }
+ return (($user_picked === null) ? $picked : $user_picked);
+ }
public function action() {
if($this->parameters !== null && $this->parameters->mode == ScheduleMode::$Update) {
$this->update();
$maxQuantity = $order->quantity;
$quantity = $order->to_pick;
$available = ItemScheduler_3($this, $left, $maxQuantity, $order, $quantity, $row_id);
- $user_pick = (($this->parameters === null) ? $quantity : $this->parameters->to_pick($order));
+ $user_pick = (($this->parameters === null) ? $quantity : $this->parameters->toPick($order));
if($user_pick === null) {
$user_pick = 0;
}
$row_id = ItemScheduler::orderId($order);
$attributes = new _hx_array(array("id = \"" . $row_id . "\""));
$classes = new _hx_array(array());
- $before = $left + $order->quantity;
+ $to_pick = $this->toPick($order);
+ $before = $left + $order->quantity - $to_pick;
if($before < 0) {
$classes->push("soldout");
} else {
if($required_by === null) {
$required_by = FA::sql2date($order->expiry_date);
}
- if($required_by !== null && $required_by->getTime() < $date->getTime()) {
- $classes->push("late");
+ if($to_pick > 0) {
+ $classes->push("picked");
} else {
- $hold_until = FA::sql2date($order->hold_until_date);
- if($hold_until === null) {
- $hold_until = FA::sql2date($order->delivery_date);
- }
- if($hold_until->getTime() - FA::preHoldOffset() > $date->getTime()) {
- $classes->push("early");
+ if($required_by !== null && $required_by->getTime() < $date->getTime()) {
+ $classes->push("late");
} else {
- $classes->push("on_time");
+ $hold_until = FA::sql2date($order->hold_until_date);
+ if($hold_until === null) {
+ $hold_until = FA::sql2date($order->delivery_date);
+ }
+ if($hold_until->getTime() - FA::preHoldOffset() > $date->getTime()) {
+ $classes->push("early");
+ } else {
+ $classes->push("on_time");
+ }
}
}
$expiry_date = FA::sql2date($order->expiry_date);
while($_g < $orders->length) {
$order = $orders[$_g];
++$_g;
- $picked = Std::parseInt($order->to_pick);
- $user_picked = 0;
- if($this->parameters !== null) {
- $user_picked = $this->parameters->to_pick($order);
- }
- $total_picked += (($user_picked === null) ? $picked : $user_picked);
- unset($user_picked,$picked,$order);
+ $total_picked += $this->toPick($order);
+ unset($order);
}
}
$left -= $total_picked;
+ if($left < 0) {
+ FA::error("There is more items to pick than in stock");
+ }
$this->formatLocation($location, "Initial", $left);
{
$_g = 0;
$order = $orders[$_g];
++$_g;
$quantity = Std::parseInt($order->quantity);
+ $quantity -= $this->toPick($order);
while(0 >= $left && $locationIter->hasNext()) {
$location = $locationIter->next();
$quantityForLocation = $location->quantityOnHand($this->stock_id, null) + $location->quantityOnOrder($this->stock_id);