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_areas['SA_ORDERLINEX_EDIT'] = array(SS_ORDERLINEX|1, _("Edit lines")); return array($security_areas, $security_sections); } /* This method is called on extension activation for company. */ function activate_extension($company, $check_only=true) { global $db_connections; $updates = array( '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) && update_queue_quantities() && update_qoh_for_item();; } function deactivate_extension($company, $check_only=true) { global $db_connections; $updates = array( 'clean_sales_order_details.sql' => array('ugly_hack') // FIXME: just an ugly hack to clean database on deactivation ); 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(); } } } ?>