5 include($path_to_root . "/includes/session.inc");
7 include($path_to_root . "/sales/includes/sales_ui.inc");
8 include_once($path_to_root . "/reporting/includes/reporting.inc");
11 if ($use_popup_windows)
12 $js .= get_js_open_window(900, 600);
14 $js .= get_js_date_picker();
16 if (isset($_GET['OutstandingOnly']) && ($_GET['OutstandingOnly'] == true))
18 $_POST['order_view_mode'] = 'OutstandingOnly';
19 $_SESSION['page_title'] = _("Search Outstanding Sales Orders");
21 elseif (isset($_GET['InvoiceTemplates']) && ($_GET['InvoiceTemplates'] == true))
23 $_POST['order_view_mode'] = 'InvoiceTemplates';
24 $_SESSION['page_title'] = _("Search Template for Invoicing");
26 elseif (isset($_GET['DeliveryTemplates']) && ($_GET['DeliveryTemplates'] == true))
28 $_POST['order_view_mode'] = 'DeliveryTemplates';
29 $_SESSION['page_title'] = _("Select Template for Delivery");
31 elseif (!isset($_POST['order_view_mode']))
33 $_POST['order_view_mode'] = false;
34 $_SESSION['page_title'] = _("Search All Sales Orders");
37 page($_SESSION['page_title'], false, false, "", $js);
39 if (isset($_GET['selected_customer']))
41 $selected_customer = $_GET['selected_customer'];
43 elseif (isset($_POST['selected_customer']))
45 $selected_customer = $_POST['selected_customer'];
48 $selected_customer = -1;
50 //-----------------------------------------------------------------------------------
53 if (get_post('SearchOrders'))
55 $Ajax->activate('orders_tbl');
56 } elseif (get_post('_OrderNumber_changed'))
58 $disable = get_post('OrderNumber') !== '';
60 if ($_POST['order_view_mode']!='DeliveryTemplates'
61 && $_POST['order_view_mode']!='InvoiceTemplates') {
62 $Ajax->addDisable(true, 'OrdersAfterDate', $disable);
63 $Ajax->addDisable(true, 'OrdersToDate', $disable);
65 $Ajax->addDisable(true, 'StockLocation', $disable);
66 $Ajax->addDisable(true, '_SelectStockFromList_edit', $disable);
67 $Ajax->addDisable(true, 'SelectStockFromList', $disable);
70 $Ajax->addFocus(true, 'OrderNumber');
72 $Ajax->addFocus(true, 'OrdersAfterDate');
74 $Ajax->activate('orders_tbl');
77 start_form(false, false, $_SERVER['PHP_SELF'] .SID);
79 start_table("class='tablestyle_noborder'");
81 ref_cells(_("#:"), 'OrderNumber', '',null, '', true);
82 if ($_POST['order_view_mode'] != 'DeliveryTemplates' && $_POST['order_view_mode'] != 'InvoiceTemplates')
84 date_cells(_("from:"), 'OrdersAfterDate', '', null, -30);
85 date_cells(_("to:"), 'OrdersToDate', '', null, 1);
87 locations_list_cells(_("Location:"), 'StockLocation', null, true);
89 stock_items_list_cells(_("Item:"), 'SelectStockFromList', null, true);
91 submit_cells('SearchOrders', _("Search"),'',_('Select documents'), true);
93 hidden('order_view_mode', $_POST['order_view_mode']);
100 //---------------------------------------------------------------------------------------------
102 if (isset($_POST['SelectStockFromList']) && ($_POST['SelectStockFromList'] != "") &&
103 ($_POST['SelectStockFromList'] != reserved_words::get_all()))
105 $selected_stock_item = $_POST['SelectStockFromList'];
109 unset($selected_stock_item);
112 //---------------------------------------------------------------------------------------------
113 if (isset($_POST['ChangeTmpl']) && $_POST['ChangeTmpl'] != 0)
115 $sql = "UPDATE ".TB_PREF."sales_orders SET type = !type WHERE order_no=".$_POST['ChangeTmpl'];
117 db_query($sql, "Can't change sales order type");
118 $Ajax->activate('orders_tbl');
120 //---------------------------------------------------------------------------------------------
122 $sql = "SELECT ".TB_PREF."sales_orders.order_no, ".TB_PREF."debtors_master.curr_code, ".TB_PREF."debtors_master.name, ".TB_PREF."cust_branch.br_name,
123 ".TB_PREF."sales_orders.ord_date, ".TB_PREF."sales_orders.deliver_to, ".TB_PREF."sales_orders.delivery_date,
124 ".TB_PREF."sales_orders.type, ";
125 $sql .= " Sum(".TB_PREF."sales_order_details.qty_sent) AS TotDelivered, ";
126 $sql .= " Sum(".TB_PREF."sales_order_details.quantity) AS TotQuantity, ";
127 $sql .= " Sum(".TB_PREF."sales_order_details.unit_price*".TB_PREF."sales_order_details.quantity*(1-".TB_PREF."sales_order_details.discount_percent)) AS OrderValue, ";
129 //if ($_POST['order_view_mode']=='InvoiceTemplates' || $_POST['order_view_mode']=='DeliveryTemplates')
130 $sql .= TB_PREF."sales_orders.comments, ";
132 $sql .= TB_PREF."sales_orders.customer_ref";
134 $sql .= " FROM ".TB_PREF."sales_orders, ".TB_PREF."sales_order_details, ".TB_PREF."debtors_master, ".TB_PREF."cust_branch
135 WHERE ".TB_PREF."sales_orders.order_no = ".TB_PREF."sales_order_details.order_no
136 AND ".TB_PREF."sales_orders.debtor_no = ".TB_PREF."debtors_master.debtor_no
137 AND ".TB_PREF."sales_orders.branch_code = ".TB_PREF."cust_branch.branch_code
138 AND ".TB_PREF."debtors_master.debtor_no = ".TB_PREF."cust_branch.debtor_no ";
140 //figure out the sql required from the inputs available
141 if (isset($_POST['OrderNumber']) && $_POST['OrderNumber'] != "")
143 // if ($_POST['OrderNumber'] != '*') // TODO paged table
144 $sql .= " AND ".TB_PREF."sales_orders.order_no LIKE '%". $_POST['OrderNumber'] ."'";
145 $sql .= " GROUP BY ".TB_PREF."sales_orders.order_no";
149 if ($_POST['order_view_mode']!='DeliveryTemplates' && $_POST['order_view_mode']!='InvoiceTemplates')
151 $date_after = date2sql($_POST['OrdersAfterDate']);
152 $date_before = date2sql($_POST['OrdersToDate']);
154 $sql .= " AND ".TB_PREF."sales_orders.ord_date >= '$date_after'";
155 $sql .= " AND ".TB_PREF."sales_orders.ord_date <= '$date_before'";
157 if ($selected_customer != -1)
158 $sql .= " AND ".TB_PREF."sales_orders.debtor_no='" . $selected_customer . "'";
160 if (isset($selected_stock_item))
161 $sql .= " AND ".TB_PREF."sales_order_details.stk_code='". $selected_stock_item ."'";
163 if (isset($_POST['StockLocation']) && $_POST['StockLocation'] != reserved_words::get_all())
164 $sql .= " AND ".TB_PREF."sales_orders.from_stk_loc = '". $_POST['StockLocation'] . "' ";
166 if ($_POST['order_view_mode']=='OutstandingOnly')
167 $sql .= " AND ".TB_PREF."sales_order_details.qty_sent < ".TB_PREF."sales_order_details.quantity";
168 elseif ($_POST['order_view_mode']=='InvoiceTemplates' || $_POST['order_view_mode']=='DeliveryTemplates')
169 $sql .= " AND ".TB_PREF."sales_orders.type=1";
171 $sql .= " GROUP BY ".TB_PREF."sales_orders.order_no, ".TB_PREF."sales_orders.debtor_no, ".TB_PREF."sales_orders.branch_code,
172 ".TB_PREF."sales_orders.customer_ref, ".TB_PREF."sales_orders.ord_date, ".TB_PREF."sales_orders.deliver_to";
174 } //end not order number selected
175 $result = db_query($sql,"No orders were returned");
176 //-----------------------------------------------------------------------------------
179 print_hidden_script(30);
182 /*show a table of the orders returned by the sql */
183 div_start('orders_tbl');
185 start_table("$table_style colspan=6 width=95%");
186 $th = array(_("Order #"), _("Customer"), _("Branch"), _("Cust Order #"), _("Order Date"),
187 _("Required By"), _("Delivery To"), _("Order Total"), _("Currency"), "");
189 if($_POST['order_view_mode']=='InvoiceTemplates' || $_POST['order_view_mode']=='DeliveryTemplates')
191 $th[3] = _('Description');
192 } elseif ($_POST['order_view_mode'] != 'OutstandingOnly') {
194 $th[] =''; $th[] ='';
200 $k = 0; //row colour counter
201 $overdue_items = false;
202 while ($myrow = db_fetch($result))
204 $view_page = get_customer_trans_view_str(systypes::sales_order(), $myrow["order_no"]);
205 $formated_del_date = sql2date($myrow["delivery_date"]);
206 $formated_order_date = sql2date($myrow["ord_date"]);
207 // $not_closed = $myrow['type'] && ($myrow["TotDelivered"] < $myrow["TotQuantity"]);
209 // if overdue orders, then highlight as so
210 if ($myrow['type'] == 0 && date1_greater_date2(Today(), $formated_del_date))
212 start_row("class='overduebg'");
213 $overdue_items = true;
217 alt_table_row_color($k);
220 label_cell($view_page);
221 label_cell($myrow["name"]);
222 label_cell($myrow["br_name"]);
223 if($_POST['order_view_mode']=='InvoiceTemplates' || $_POST['order_view_mode']=='DeliveryTemplates')
224 label_cell($myrow["comments"]);
226 label_cell($myrow["customer_ref"]);
227 label_cell($formated_order_date);
228 label_cell($formated_del_date);
229 label_cell($myrow["deliver_to"]);
230 amount_cell($myrow["OrderValue"]);
231 label_cell($myrow["curr_code"]);
232 if ($_POST['order_view_mode']=='OutstandingOnly'/* || $not_closed*/)
234 $delivery_note = $path_to_root . "/sales/customer_delivery.php?" . SID . "OrderNumber=" .$myrow["order_no"];
235 label_cell("<a href='$delivery_note'>" . _("Dispatch") . "</a>");
237 elseif ($_POST['order_view_mode']=='InvoiceTemplates')
239 $select_order= $path_to_root . "/sales/sales_order_entry.php?" . SID . "NewInvoice=" .$myrow["order_no"];
240 label_cell("<a href='$select_order'>" . _("Invoice") . "</a>");
242 elseif ($_POST['order_view_mode']=='DeliveryTemplates')
244 $select_order= $path_to_root . "/sales/sales_order_entry.php?" . SID . "NewDelivery=" .$myrow["order_no"];
245 label_cell("<a href='$select_order'>" . _("Delivery") . "</a>");
249 echo "<td><input ".($myrow["type"]==1 ? 'checked' : '')." type='checkbox' name='chgtpl" .$myrow["order_no"]. "' value='1'
250 onclick='this.form.ChangeTmpl.value= this.name.substr(6);
251 JsHttpRequest.request(this);' ></td>";
253 $modify_page = $path_to_root . "/sales/sales_order_entry.php?" . SID . "ModifyOrderNumber=" . $myrow["order_no"];
254 label_cell("<a href='$modify_page'>" . _("Edit") . "</a>");
255 label_cell(print_document_link($myrow['order_no'], _("Print")));
265 //end of page full new headings if
268 hidden('ChangeTmpl', 0);
272 display_note(_("Marked items are overdue."), 0, 1, "class='overduefg'");