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;
}
?>