and from a string * generated by the above *_cell function. * This is usefull to use the result of the function within a pager * which already include the ... * However, for function which doesn't return a string * but echo, we need to capture the output of the echo first. */ function start_extract_cell() { // We need ob_start(); } function end_extract_cell() { $content = ob_get_contents(); ob_end_clean(); return extract_cell($content); } function extract_cell($td) { if(preg_match('/\s*(.*)<\/td>\s*/s', $td, $matches)) { return $matches[1]; } else { print_r('cacou'); return $td; } } ?> function update_extra_order_details() { if(!isset($_POST['Update']) || $_POST['Update'] != 'Update') return; begin_transaction(); // update in database all field 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' "); } } 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; } } } display_notification('Order details updated'); } function compute_input_name($row, $field) { $row_id = $row['id']; return "detail[$row_id][$field]"; } function view_link($dummy, $order_no) { return get_customer_trans_view_str(ST_SALESORDER, $order_no); } function order_link($row) { 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']}"); } function aggregate_comment($row) { $comment = $row['order_comment'].$row['detail_comment']; if($comment) { $comments = array_map('trim', explode(';', $comment)); $comments = array_filter($comments); $first = array_shift($comments); if(count($comments) == 0) return $first; else { $tooltip = implode('
', $comments); return "$first more $tooltip"; } } return ''; } function input_date_details($row, $date) { $row_id = $row['id']; $name = compute_input_name($row, 'required_date'); $_POST[$name] = sql2date($date); start_extract_cell(); date_cells (null, $name, 'title', null, 0,0,1001); return end_extract_cell(); return " "; } function input_comment_details($row, $comment) { $row_id = $row['id']; return " "; } function get_order_details_extra($customer_id) { $sql = "SELECT sod.id , so.order_no , stk_code , quantity - qty_sent , required_date ,comment 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 AND so.trans_type = ".ST_SALESORDER." AND so.debtor_no = $customer_id ) WHERE quantity > qty_sent "; return $sql; } function get_order_summary() { $sql = "SELECT debtor_no, debtor_ref, branch_ref , min(delivery_date) , sum(quantity - qty_sent) as quantity , sum((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 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 AND so.trans_type = ".ST_SALESORDER." ) 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 "; return $sql; } ?>