typedef Order = {
id:String
,quantity:String
- ,priority:Int
+ ,priority:Date
,delivery_date:String
}
}
- public function priority(order : {id: String, priority: Int}) : Int {
+ public function priority(order : {id: String, priority: Date}) : Int {
var orderId = ItemScheduler.orderId(order);
var orderPosition = position(orderId);
- return orderPosition != null ? orderPosition : order.priority;
+ return orderPosition != null ? orderPosition : cast(order.priority.getTime(), Int);
}
}
private function loadOrders() {
var tb : String = untyped __php__('TB_PREF');
- var sql : String = "SELECT *
+ var sql : String = "SELECT * , d.priority AS pp
FROM "+tb+"denorm_order_details_queue d
JOIN "+tb+"sales_order_details od ON (od.id = d.id)
JOIN "+tb+"sales_orders so ON (so.order_no = d.order_id)
var rows = loadOrders();
var orderList = [];
for(row in rows) {
- var order:Order = php.Lib.objectOfAssociativeArray(row);
+ // for some reason, priority is null
+ // so we use the pp field
+ var a:Dynamic = php.Lib.objectOfAssociativeArray(row);
+ var order:Order = a;
+ order.priority = Date.fromString(a.pp);
orderList.push(order);
};
}
-function purcharseOrders() {
-}
+ function purcharseOrders() {
+ }
public function needsUpdate():Bool {
return parameters != null && parameters.mode == ScheduleMode.Move;
}
+
+ function update() {
+ var orders = this.orders();
+ var priorities = Lambda.array(Lambda.map(orders, function(o) { return o.priority;}));
+ priorities.sort(function(a,b) {
+ var as = a.toString();
+ var bs = b.toString();
+ if (as < bs) return -1;
+ if( as > bs) return 1;
+ return 0;
+ });
+
+ var iter = priorities.iterator();
+ var p = iter.next();
+ var position:Int = 0-priorities.length;
+ for(order in orders) {
+ var new_priority = DateTools.delta(p, 1000*position);
+ untyped __call__ ('update_order_detail_priority', order.id, new_priority.toString());
+
+ position +=1;
+ p = iter.next();
+ }
+ untyped __call__ ('update_queue_quantity_for_item', stock_id);
+
+ }
+ public function action() {
+ if(parameters != null && parameters.mode == ScheduleMode.Update) {
+ update();
+ }
+ }
}
* This function update the denormalisation table for
* a given stock id.
*/
+
function update_queue_quantity_for_item($stock_id) {
begin_transaction();
clear_queue_quantity_for_item($stock_id);
}
}
+function update_order_detail_priority($detail_id, $priority) {
+ $sql = "UPDATE ".TB_PREF."sales_order_details SET priority='".$priority."' WHERE id = $detail_id ";
+ print($sql);
+ db_query($sql, "can't set priorti to order details $detail_id");
+}
?>
//include_once("includes/item_scheduler.inc");
include_once("hincludes/lib/php/Boot.class.php");
+include_once("includes/db_order_lines.inc");
$page_security = 'SA_ORDERLINEX_EDIT';
add_access_extensions();
$Ajax->activate('item_schedule');
echo 'youpiii';
// Restore the parameters
- /*
- $params = $_SESSION['schedule_parameters'];
+ $params = new ScheduleParameters($_SESSION['schedule_parameters']);
$params->setMode('update');
- */
- $params = null;
}
else {
$params = in_ajax() && $stock_id == @$_POST['last_stock_id'] ? new ScheduleParameters($_POST) : null;
// save parameters form update
- $_SESSION['schedule_parameters'] = $params;
+ $_SESSION['schedule_parameters'] = $_POST;
}
$scheduler = new ItemScheduler($stock_id, 'DEF', $params);
+$scheduler->action();
start_table(TABLESTYLE);
$th = $scheduler->tableHeader();