X-Git-Url: https://delta.frontaccounting.com/gitweb/?a=blobdiff_plain;f=includes%2Forder_lines.inc;h=00c1193b67220be696c5f020cf83b80bc1512526;hb=ee3469d3ffd74d2a6be87d3dd0a9541a14bcdfde;hp=5102966594bc05796c74359a72c4891626e0d741;hpb=9dc9e5956ed5c6979f39b8f36e6c7ce8c3efe8ba;p=order_line_extra.git diff --git a/includes/order_lines.inc b/includes/order_lines.inc index 5102966..00c1193 100644 --- a/includes/order_lines.inc +++ b/includes/order_lines.inc @@ -23,46 +23,100 @@ function extract_cell($td) { return $matches[1]; } else { -print_r('cacou'); return $td; } } +/* remove unchecked data so each + * funcion doesn't to check what's been checked or not. + */ +function filter_data(&$data) { + if(!isset($data['detail'])) return; + $new_details = array(); + foreach(@$data['detail'] as $detail_id => $values) { + if(@$values['check'] === 'on') $new_details[$detail_id]=$values; + } + $data['detail'] = $new_details; +} + +function post_to_detail_ids() { + if(!isset($_POST['detail'])) return; + $detail_ids = array(); + foreach($_POST['detail'] as $detail_id => $values) { + array_push($detail_ids, $detail_id); + } + + return $detail_ids; +} function update_extra_order_details() { if(!isset($_POST['Update']) || $_POST['Update'] != 'Update') return; + $cart = post_to_detail_ids(); + if($cart === null) return; begin_transaction(); + hook_db_prewrite($cart, 'order_xtra'); // update in database all field + $date_fields = array('hold_until_date', 'required_date', 'expiry_date', 'priority'); foreach($_POST['detail'] as $detail_id => $values) { $set = array(); - if($comment = $values['comment']) array_push($set, " comment='$comment' "); - if(isset($values['required_date'])) { - $required_date = trim($values['required_date']); - if($required_date == "") { - array_push($set," required_date = NULL"); - } else { - $date = date2sql($required_date); - array_push($set," required_date='$date' "); + $comment=$values['comment']; + array_push($set, " comment='$comment' "); // erase comment if needed. + foreach($date_fields as $date_field) { + if(isset($values[$date_field])) { + $input_date = trim($values[$date_field]); + if($input_date == "") { + // Only the priority field can be set to null. + if($date_field == 'priority') array_push($set," $date_field = NULL"); + } else { + $date = date2sql($input_date); + array_push($set," $date_field='$date' "); + } } } if(!empty($set)) { $sql = "UPDATE ".TB_PREF."sales_order_details SET ".implode($set,', ')." WHERE id = $detail_id "; - + if(!db_query($sql)) { display_error('Problem while updating order details. Try again'); cancel_transaction(); return; } } - } + hook_db_postwrite($cart, 'order_xtra'); + commit_transaction(); + display_notification('Order details updated'); } +function split_order_details() { + if(!isset($_POST['Split']) || $_POST['Split'] != 'Split') return; + $splitter = new Splitter($_POST); + begin_transaction(); + $cart = post_to_detail_ids(); + if($cart === null) return; + hook_db_prewrite($cart, 'order_xtra'); + if($splitter->splitAll()) display_warning("Items have been split."); + hook_db_postwrite($cart, 'order_xtra'); + commit_transaction(); +} + +function bulk_update_order_details() { + if(!isset($_POST['Bulk']) || $_POST['Bulk'] != 'Bulk') return; + $bulk_updater = new BulkUpdater($_POST); + begin_transaction(); + $cart = post_to_detail_ids(); + if($cart === null) return; + hook_db_prewrite($cart, 'order_xtra'); + $bulk_updater->update(); + hook_db_postwrite($cart, 'order_xtra'); + commit_transaction(); +} + function compute_input_name($row, $field) { $row_id = $row['id']; return "detail[$row_id][$field]"; @@ -73,16 +127,25 @@ function view_link($dummy, $order_no) return get_customer_trans_view_str(ST_SALESORDER, $order_no); } +function item_link($dummy, $stock_id) +{ + return pager_link( _($stock_id), + "/modules/order_line_extra/item_schedule.php?stock_id=" .$stock_id); +} function order_link($row) { - return pager_link( _("Sales Order"), + return pager_link( _("Sales Order"), "/sales/sales_order_entry.php?NewQuoteToSalesOrder=" .$row['order_no'], ICON_DOC); } function customer_link($row) { - return pager_link(_($row['debtor_ref']), "/modules/order_line_extra/order_lines_view.php?customer_id=${row['debtor_no']}"); - + return customer_link2($row['debtor_ref'], $row['debtor_no']); +} + +function customer_link2($name, $id) { + return pager_link(_($name), "/modules/order_line_extra/order_lines_view.php?customer_id=${id}"); + } function aggregate_comment($row) { @@ -101,9 +164,18 @@ function aggregate_comment($row) { return ''; } -function input_date_details($row, $date) { +function available_quantity($row, $available) { + $quantity = $row['quantity']; + $class = ''; + if($available== 0) $class = 'limited'; + else if($quantity > $available) $class = 'partial'; + + return "$available"; +} + +function input_date_details($row, $field_name, $date) { $row_id = $row['id']; - $name = compute_input_name($row, 'required_date'); + $name = compute_input_name($row, $field_name); $_POST[$name] = sql2date($date); @@ -117,6 +189,22 @@ $_POST[$name] = sql2date($date); "; } +function input_priority_date_details($row, $date) { + return input_date_details($row, 'priority', $date); +} + +function input_hold_until_date_details($row, $date) { + return input_date_details($row, 'hold_until_date', $date); +} + +function input_required_date_details($row, $date) { + return input_date_details($row, 'required_date', $date); +} + +function input_expiry_date_details($row, $date) { + return input_date_details($row, 'expiry_date', $date); +} + function input_comment_details($row, $comment) { $row_id = $row['id']; return " @@ -124,12 +212,23 @@ $row_id = $row['id']; "; } -function get_order_details_extra($customer_id) { +function input_check_details($row, $dummy) { + $row_id = $row['id']; + return " + "; +} + +function get_order_details_extra($customer_id, $location, $item_like) { $sql = "SELECT sod.id , so.order_no , stk_code - , quantity - qty_sent + , sod.quantity - qty_sent quantity + , GREATEST(0, LEAST(qoh.quantity - quantity_before, sod.quantity - qty_sent)) + , quantity_before + , sod.`priority` + , hold_until_date , required_date + , expiry_date ,comment FROM ".TB_PREF."sales_order_details sod JOIN ".TB_PREF."sales_orders so ON (so.order_no = sod.order_no @@ -137,20 +236,33 @@ function get_order_details_extra($customer_id) { AND so.trans_type = ".ST_SALESORDER." AND so.debtor_no = $customer_id ) - WHERE quantity > qty_sent + JOIN ".TB_PREF."denorm_qoh qoh ON (stock_id = stk_code AND loc_code = '$location') + LEFT JOIN ".TB_PREF."denorm_order_details_queue d ON (d.id = sod.id) + WHERE sod.quantity > qty_sent "; + if($item_like) { + if($item_like[0]=='/') { + $regexp = substr($item_like, 1); + $sql .= " AND stk_code RLIKE '$regexp'"; + } + else + $sql .= " AND stk_code LIKE '$item_like'"; + } + return $sql; } -function get_order_summary() { - $sql = "SELECT debtor_no, debtor_ref, branch_ref +function get_order_summary($location) { +/* + $sub = "SELECT debtor_no, debtor_ref, branch_ref, stk_code , min(delivery_date) - , sum(quantity - qty_sent) as quantity - , sum((quantity - qty_sent)*unit_price*(1-discount_percent/100)) as amount + , sum(sod.quantity - qty_sent) as quantity + , sum((sod.quantity - qty_sent)*unit_price*(1-discount_percent/100)) as amount , min(required_date) , group_concat(distinct comments separator ';') as order_comment , group_concat(distinct comment separator ';') as detail_comment + , max(quantity_before) as quantity_before FROM ".TB_PREF."sales_order_details sod JOIN ".TB_PREF."sales_orders so ON (so.order_no = sod.order_no AND so.trans_type = sod.trans_type @@ -158,8 +270,26 @@ function get_order_summary() { ) NATURAL JOIN ".TB_PREF."debtors_master NATURAL JOIN ".TB_PREF."cust_branch - WHERE quantity > qty_sent AND ".ST_SALESORDER." - GROUP BY debtor_no, branch_code + JOIN ".TB_PREF."denorm_order_details_queue d ON (d.id = sod.id) + WHERE sod.quantity > qty_sent AND ".ST_SALESORDER." + GROUP BY debtor_no, branch_code, stk_code + "; +*/ + + $sub = TB_PREF."order_summary_view"; + + $sql = "SELECT debtor_no, debtor_ref, branch_ref + , `min(delivery_date)` + , sum(sub.quantity) as quantity + , sum(sub.amount) as amount + , sum(greatest(least(sub.quantity, qoh.quantity - quantity_before), 0)) + , sum(sub.amount*greatest(least(sub.quantity, qoh.quantity - quantity_before), 0)/sub.quantity) + , min(`min(required_date)`) + , group_concat(distinct order_comment separator ';') as order_comment + , group_concat(distinct detail_comment separator ';') as detail_comment + FROM $sub sub + LEFT JOIN ".TB_PREF."denorm_qoh qoh ON (stock_id = stk_code AND loc_code = '$location') + GROUP BY debtor_no, debtor_ref "; return $sql;