X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=haxe%2FItemScheduler.hx;h=274f562b256a1999e3a04296c2a6d3686f73473c;hb=cac7335b5528b1eca9cc02ca7bc9760a080b676f;hp=d01c9602be47f960acb9378d5bd4330bcad1bae5;hpb=7a4c7c9512eb74d2f91ef7939cd435cb98b8114c;p=order_line_extra.git diff --git a/haxe/ItemScheduler.hx b/haxe/ItemScheduler.hx index d01c960..274f562 100644 --- a/haxe/ItemScheduler.hx +++ b/haxe/ItemScheduler.hx @@ -1,4 +1,5 @@ import php.Lib; +using DateTools; typedef Detail = { id : String, @@ -89,7 +90,7 @@ class ItemScheduler { this.stock_id = stock_id; this.startLocation = startLocation; this.parameters = parameters; - qoh = untyped __call__('get_qoh_on_date', this.stock_id, 'DEF'); + qoh = untyped __call__('get_qoh_on_date', this.stock_id, startLocation); } function tableHeader() { @@ -102,7 +103,13 @@ class ItemScheduler { // Sort location by date var locations = this.locations(); locations.sort(function(a, b) { - return cast(a.delivery.getTime() - b.delivery.getTime(), Int ); + var as = a.delivery.getTime(); + var bs = b.delivery.getTime(); + if(as < bs) + return -1; + else if(as > bs) + return 1; + else return 0; }); // Get the start location, it should be the first one @@ -118,10 +125,10 @@ class ItemScheduler { for(order in orders()) { var quantity : Int = Std.parseInt(order.quantity); - while(0 > 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; + var quantityForLocation : Int = location.quantityOnHand(stock_id, null) + location.quantityOnOrder(stock_id); + if(quantityForLocation == null || quantityForLocation == 0 || location.delivery == null) continue; left += quantityForLocation; formatLocation(location, "Delivery", left); } @@ -131,7 +138,7 @@ class ItemScheduler { } // display the left locations - while(0 > 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; @@ -213,7 +220,7 @@ class ItemScheduler { ,left-location.quantityOnHand(stock_id, null) ,left ,location.code - ,location.delivery + ,location.delivery.getTime() == 0 ? '' : location.delivery.format("%F") ,"" ,"" ]; @@ -232,7 +239,7 @@ return cast(locations(), Array); private function loadOrders() { var tb : String = untyped __php__('TB_PREF'); - var sql : String = "SELECT * , d.priority AS pp + var sql : String = "SELECT * , d.quantity as qty, 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) @@ -252,6 +259,7 @@ function orders():Array { var a:Dynamic = php.Lib.objectOfAssociativeArray(row); var order:Order = a; order.priority = Date.fromString(a.pp); + order.quantity = a.qty; orderList.push(order); }; @@ -277,6 +285,9 @@ function locations() { if(location.code == startLocation) { location.delivery = Date.fromTime(0); } + else if(location.delivery == null) { + continue; + } _locs.push(location); } @@ -286,6 +297,17 @@ function locations() { function purcharseOrders() { + var TB = FA.tb(); + var sql = 'SELECT SUM(quantity_ordered - quantity_received) as quantity + into_stock_location AS location + FROM '+TB+'purch_order_details + NATURAL JOIN '+TB+'purch_orders + WHERE item_code = "'+this.stock_id+'" + AND quantity_ordered > quantity_received + GROUP by item_code,delivery_date, into_stock_location + ORDER by delivery_date' ; + + return FA.query(sql); } public function needsUpdate():Bool {