static public function tb() : String {
return untyped __php__('TB_PREF');
}
+
+ static public function sql2date(sqlDate:Dynamic) : Null<Date> {
+ return sqlDate == null ? null : Date.fromString(sqlDate);
+ }
}
class ItemScheduler {
var stock_id:String;
}
function tableHeader() {
- return ["Order", "Customer", "Quantity", "Before", "After", "Loc", "Required Date"];
+ return ["Order", "Customer", "Quantity", "Before", "After", "Loc", "From", "Required Date", "Comment"];
}
/*
var order = php.Lib.objectOfAssociativeArray(orderRow);
var quantity : Int = Std.parseInt(order.quantity);
- while(quantity > left && locationIter.hasNext()) {
+ while(0 > left && locationIter.hasNext()) {
location = locationIter.next();
var quantityForLocation : Int = location.quantityOnHand(stock_id, null);
if(quantityForLocation == null || quantityForLocation == 0) continue;
}
left -= quantity;
- formatOrder(order, left);
+ formatOrder(order, left, location.delivery);
}
}
function printRow(tds : Array<Dynamic>, attributes : Array<String>) {
- php.Lib.print('<tr "'+attributes.join(' ')+'">');
+ php.Lib.print('<tr '+attributes.join(' ')+'>');
+ var position : Int = 1;
for(td in tds) {
- php.Lib.print('<td>');
- php.Lib.print(td);
+ php.Lib.print('<td class="cell_'+position+'">');
+ if(td) php.Lib.print(td);
php.Lib.print('</td>');
+ position++;
}
php.Lib.print('</tr>');
}
- function formatOrder(order : Dynamic, left : Int) {
- var attributes = [];
+ function formatOrder(order : Dynamic, left : Int, date : Date) {
+ var row_id = 'order_'+order.id;
+ var attributes = ['id = "'+row_id+'"'];
+ var classes = [];
+ var before : Int = left + order.quantity;
+ /* We have basically 3 different cases;
+ * - the order can be fullfilled
+ * - the order can be partially
+ * - not at all
+ */
+ if (before < 0 ) {
+ classes.push('soldout');
+ }
+ else if(left < 0) {
+ classes.push('partial');
+ }
+ else {
+ classes.push('full');
+ }
+
+ /* The order can also be late if we need
+ * to wait for a delivery to get it
+ */
+ var required_by : Date = FA.sql2date(order.required_date);
+ if(required_by == null) required_by = FA.sql2date(order.delivery_date);
+ if(required_by.getTime() < date.getTime()) {
+ classes.push('late');
+ }
+ else {
+ classes.push('on_time');
+ }
var cells : Array <Dynamic> = [
order.order_id
- ,order.deliver_to
- ,order.quantity
+ , '<a href="/modules/order_line_extra/order_lines_view.php?customer_id='+Std.string(order.debtor_no)+'">'+order.deliver_to+'</a>'
+ ,'<input type="text" name="'+row_id+'[quantity]" value="'+order.quantity+'">'
+ ,before
,left
- ,left+order.quantity
- ,order.from_stk_code
+ ,order.from_stk_loc
,order.delivery_date
+ ,order.required_date
+ ,order.comment
];
+
+ attributes.push('class="'+classes.join(' ')+'"');
printRow(cells, attributes);
}
var cells : Array<Dynamic> = [
array.get('order_id')
,array.get('deliver_to')
- ,quantity
+ ,'<input type="text" name="quantity">'+quantity+'</input>'
,quantity_available-quantity
,quantity_available
,array.get('from_stk_loc')
,left
,location.code
,location.delivery
+ ,""
+ ,""
];
- var status = 'header';
- php.Lib.print('<tr class="'+status+'">');
- for(cell in cells) {
- php.Lib.print('<td>');
- php.Lib.print(cell);
- php.Lib.print('</td>');
- }
- php.Lib.print('</tr>');
+
+ printRow(cells, ['class = "tableheader location"', 'id = "loc_'+location.code+'"']);
}
/*
function orders() {
var tb : String = untyped __php__('TB_PREF');
var sql : String = "SELECT *
- FROM "+tb+"denorm_order_details_queue
- JOIN "+tb+"sales_orders ON (order_no = order_id)
+ 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)
WHERE stock_id = '"+this.stock_id+"'
+ AND od.trans_type = 30
ORDER by quantity_before";
return FA.query(sql);