function generateTablex(): Void {
for(location in locations()) {
- formatLocation(location);
+ formatLocation(location, null);
}
for(order in this.orders()) {
this.formatRow(order);
}
function generateTable(): Void {
- var schedules = [];
var startDate = Date.fromTime(0);
for(order in orders()) {
var obj = php.Lib.objectOfAssociativeArray(order);
- schedules.push({date: Date.fromString(obj.delivery_date), order:order, location:null});
+
}
- for(location in locations()) {
- schedules.push({date: if(location.code == startLocation) startDate else location.delivery, order:null, location:location});
+
+ // Sort location by datae
+ var locations = this.locations();
+ locations.sort(function(a, b) {
+ return cast(a.delivery.getTime() - b.delivery.getTime(), Int );
+ });
+
+ // Get the start location, it should be the first one
+ var locationIter = locations.iterator();
+ var location = locationIter.next();
+ var qoh : Int = location.quantityOnHand(stock_id, null);
+ var left = qoh;
+ formatLocation(location, left);
+
+ // We display the order ordered by priority
+ // But insert the location when needed (meaning
+ // when we run out of item available
+ for(orderRow in orders()) {
+ var order = php.Lib.objectOfAssociativeArray(orderRow);
+ var quantity : Int = Std.parseInt(order.quantity);
+
+ while(quantity > left && locationIter.hasNext()) {
+ location = locationIter.next();
+ var quantityForLocation : Int = location.quantityOnHand(stock_id, null);
+ if(quantityForLocation == null || quantityForLocation == 0) continue;
+ left += quantityForLocation;
+ trace(quantityForLocation);
+ formatLocation(location, left);
}
+ left -= quantity;
+
+ formatOrder(order, left);
- schedules.sort(function(a,b ) { return cast(a.date.getTime() - b.date.getTime(), Int) ; });
- for(schedule in schedules) {
- if(schedule.order != null) formatRow(schedule.order);
- if(schedule.location != null) formatLocation(schedule.location);
- }
+ }
+
+ }
+
+ function printRow(tds : Array<Dynamic>, attributes : Array<String>) {
+ php.Lib.print('<tr "'+attributes.join(' ')+'">');
+ for(td in tds) {
+ php.Lib.print('<td>');
+ php.Lib.print(td);
+ php.Lib.print('</td>');
+ }
+ php.Lib.print('</tr>');
+ }
+
+ function formatOrder(order : Dynamic, left : Int) {
+ var attributes = [];
+ var cells : Array <Dynamic> = [
+ order.order_id
+ ,order.deliver_to
+ ,order.quantity
+ ,left
+ ,left+order.quantity
+ ,order.from_stk_code
+ ,order.delivery_date
+ ];
+ printRow(cells, attributes);
+
}
function formatRow(row) {
}
- function formatLocation(location : Location) {
+ function formatLocation(location : Location, left : Int) {
var cells = [
location.code
,location.name
,location.quantityOnHand(stock_id, null)
+ ,left
,location.delivery
];
var status = 'header';
FROM '+TB+'locations';
var _locs = [];
for(row in FA.query(sql)) {
- _locs.push(new Location(row));
+ var location = new Location(row);
+ if(location.code == startLocation) {
+ location.delivery = Date.fromTime(0);
+ }
+ _locs.push(location);
}
return _locs;