Add denorm_qoh
authorMaxime Bourget <bmx007@gmail.com>
Mon, 3 Jun 2013 14:27:11 +0000 (15:27 +0100)
committerMaxime Bourget <bmx007@gmail.com>
Mon, 3 Jun 2013 17:11:10 +0000 (18:11 +0100)
hooks.php
includes/db_order_lines.inc
sql/clean_sales_order_details.sql
sql/create_denorm_qoh.sql [new file with mode: 0644]

index 778ee8eaa63a4f367185f21a159d13dcc89cf21a..8a177c4128d06eac7c9af95ccf0fe092d20c796a 100644 (file)
--- a/hooks.php
+++ b/hooks.php
@@ -44,11 +44,14 @@ class hooks_order_line_extra extends hooks {
         global $db_connections;
 
         $updates = array(
-                                               'alter_sales_order_details.sql' => array('sales_order_details'),// ,'required_date'),
+                                               'alter_sales_order_details.sql' => array('sales_order_details','required_date'),
                                                'create_denorm_order_details_queue.sql' => array('denorm_order_details_queue'),
+                                               'create_denorm_qoh.sql' => array('denorm_qoh'),
         );
 
-        return $this->update_databases($company, $updates, $check_only) && update_queue_quantities();
+                               return $this->update_databases($company, $updates, $check_only)
+                                                               && update_queue_quantities()
+                                                               && update_qoh_for_item();;
     }
 
     function deactivate_extension($company, $check_only=true)
index e6a682442aed1323fedba2b9105273b3f91f0be6..f4913bf262c644acc1db814ff99b79d2df724e92 100644 (file)
@@ -73,7 +73,7 @@ function update_queue_quantity_for_item($stock_id) {
 }
 
 function update_queue_quantities() {
-       $sql = "SELECT DISTINCT stk_code from 0_sales_order_details WHERE quantity > qty_sent";
+       $sql = "SELECT DISTINCT stk_code from ".TB_PREF."sales_order_details WHERE quantity > qty_sent";
        $result = db_query($sql);
        while($row=db_fetch($result)) {
                $stock_id = $row['stk_code'];
@@ -87,4 +87,33 @@ function update_order_detail_priority($detail_id, $priority) {
                db_query($sql, "can't set priorti to order details $detail_id");
 }
 
+function update_qoh_for_item($stock_id=null) {
+       clear_qoh_for_item($stock_id);
+       $sql  = "INSERT INTO ".TB_PREF."denorm_qoh(stock_id, loc_code, quantity)
+                                       SELECT 
+                                               stock_id
+                                               ,loc_code
+                                               ,sum(qty) as quantity
+                                       FROM ".TB_PREF."stock_moves
+                                       WHERE tran_date <= NOW()";
+       if(isset($stock_id)) $sql.= " AND stock_id = '$stock_id'";
+       $sql .= " GROUP BY stock_id, loc_code";
+       
+
+       return db_query($sql, $sql);
+       
+}
+function clear_qoh_for_item($stock_id=null) {
+       if(isset($stock_id)) {
+       $sql = "DELETE FROM ".TB_PREF."denorm_qoh
+                                       WHERE stock_id = \"$stock_id\"
+";
+       }
+       else {
+       $sql = "TRUNCATE TABLE ".TB_PREF."denorm_qoh";
+       }
+
+       return db_query($sql, 'Error when trying to clean ".TB_PREF."denorm_qoh');
+}
+
 ?>
index d8ebd99b9c4cda6d436e4ac8463f8f91af59ccab..9636d2834b34d4991612e5e15455391cf29ff699 100644 (file)
@@ -4,3 +4,4 @@ ALTER TABlE 0_sales_order_details
 # DROP COLUMN priority;
 
 DROP TABLE IF EXISTS 0_denorm_order_details_queue;
+DROP TABLE IF EXISTS 0_denorm_qoh;
diff --git a/sql/create_denorm_qoh.sql b/sql/create_denorm_qoh.sql
new file mode 100644 (file)
index 0000000..431a05b
--- /dev/null
@@ -0,0 +1,9 @@
+CREATE TABLE 0_denorm_qoh (
+       id INT AUTO_INCREMENT,
+       stock_id VARCHAR(20),
+       loc_code VARCHAR(20),
+       quantity DOUBLE, -- quantity in the order
+       primary key (id),
+       key stock_id (stock_id, loc_code)
+)
+;