Call hooks on split.
[order_line_extra.git] / hooks.php
index 308a9419d9303d0007931e99ee4e477901da3983..1df1ef5cc4387d555dc9908bdd4f0ec53794a7b9 100644 (file)
--- a/hooks.php
+++ b/hooks.php
@@ -6,10 +6,12 @@
 // Title:   Order Line Extra
 // Free software under GNU GPL
 // ----------------------------------------------------------------
-define ('SS_ORDERLINEX', 131<<8);
+define ('SS_ORDERLINEX', 100<<8);
 
-class hooks_orderline_extra extends hooks {
-       var $module_name = 'Order Line Extra';
+include_once('includes/db_order_lines.inc');
+
+class hooks_order_line_extra extends hooks {
+       var $module_name = 'order_line_extra';
 
        /*
                Install additonal menu options provided by module
@@ -21,11 +23,17 @@ class hooks_orderline_extra extends hooks {
 
     function install_options($app) {
         global $path_to_root;
+                               switch($app->id) {
+                                       case 'orders':
+                                               $app->add_rapp_function(0, _('Order Extra'), 
+                                                       $path_to_root.'/modules/order_line_extra/order_lines_view.php', 'SA_SALESTRANSVIEW');
+                               }
     }
 
     function install_access()
        {
-        $security_sections[SS_ORDERLINEX] =  _("Order Line eXtra");
+        $security_sections[SS_ORDERLINEX] =  _("Order Line Extra");
+               $security_areas['SA_ORDERLINEX_EDIT'] = array(SS_ORDERLINEX|1, _("Edit lines"));
 
                return array($security_areas, $security_sections);
        }
@@ -36,10 +44,16 @@ class hooks_orderline_extra extends hooks {
         global $db_connections;
 
         $updates = array(
-            'alter_sales_order_details.sql' => array('0_sales_order_details', )
+                                               'alter_sales_order_details.sql' => array('sales_order_details','required_date'),
+                                               'alter_sales_order_details_2.sql' => array('sales_order_details','expiry_date'),
+                                               'create_denorm_order_details_queue.sql' => array('denorm_order_details_queue'),
+                                               'create_denorm_qoh.sql' => array('denorm_qoh'),
+                                               'create_order_summary_view.sql' => array('order_summary_view'),
         );
 
-        return $this->update_databases($company, $updates, $check_only);
+                               return $this->update_databases($company, $updates, $check_only)
+                                                               && update_queue_quantities()
+                                                               && update_qoh_for_item();;
     }
 
     function deactivate_extension($company, $check_only=true)
@@ -52,5 +66,49 @@ class hooks_orderline_extra extends hooks {
 
         return $this->update_databases($company, $updates, $check_only);
     }
+
+               function get_allowed_quantity($detail_id, $opts) {
+                       $location = array_shift($opts);
+                       $date = array_shift($opts);
+                       $qoh = array_shift($opts);
+
+                       $sql = "select quantity_before from ".TB_PREF."denorm_order_details_queue where id = $detail_id";
+                       $result = db_query($sql);
+                       $quantity_before = 0;
+                       if($row=db_fetch($result)) {
+                               $quantity_before = $row['quantity_before'];
+                               }
+
+                       return max($qoh - $quantity_before, 0);
+               }
+
+               function db_postwrite($cart, $trans_type) {
+                       if(is_a($cart, "Cart")) {
+
+                       // It's a cart. Find all the stock_id and update the cache table 
+                       foreach($cart->line_items as $line_no => $item) {
+                               $stock_id = $item->stock_id;
+                               update_queue_quantity_for_item($stock_id);
+                               update_qoh_for_item($stock_id);
+                       }
+                       }
+
+                       // update null fields of new entered orders.
+                       //
+               $types = array(ST_SALESORDER, 'order_xtra');
+               if(in_array($trans_type, $types)) update_order_detail_defaults();
+       
+               }
+
+
+               function db_prevoid($cart, $trans_type) {
+               // Simple version, rebuild everything
+               $types = array(ST_CUSTCREDIT, ST_CUSTDELIVERY, ST_INVADJUST, ST_PURCHORDER, ST_WORKORDER, ST_MANUISSUE,
+                               ST_SALESORDER, ST_SALESQUOTE, ST_MANURECEIVE);
+               if(in_array($trans_type, $types)) {
+                       update_queue_quantities();
+                       update_qoh_for_item();
+               }
+               }
 }
 ?>