Fix tooltips not readable on small screen
[order_line_extra.git] / includes / order_lines.inc
index 0c0b09763223e4110af391060ebb63692577d911..cd0f8602464591db5f883a2c8dbb937642d2267b 100644 (file)
 <?php
 include_once($path_to_root."/includes/ui/ui_input.inc");
+/* This utility function remove beginning <td> and </td> 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 <td>...</td>
+ * 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>(.*)<\/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('<br>', $comments);
+                       return "$first <span class='before-tooltip'>more<span class='tooltip'>&nbsp$tooltip</span><span>";
+               }
+       }
+       return '';
+}
+
 function input_date_details($row, $date) {
- return date_cells( null, 'name');
+$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 "
+<input type='text' value='$date' name='$name'>
+";
 }
 
 function input_comment_details($row, $comment) {
-       return label_cell($comment); 
+$row_id = $row['id'];
+       return "
+<input type='text' value='$comment' name='detail[$row_id][comment]'>
+";
 }
 
 function get_order_details_extra($customer_id) {
-       $sql = "SELECT so.order_no
+       $sql = "SELECT sod.id
+       , so.order_no
        , stk_code
        , quantity - qty_sent
        , required_date
-       , comment
+       ,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
@@ -36,4 +142,26 @@ function get_order_details_extra($customer_id) {
 
        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;
+}
 ?>