Added update of Units of Measure and converting of deptor_trans records from release...
[fa-stable.git] / sales / inquiry / sales_orders_view.php
1 <?php
2
3 $page_security = 2;
4 $path_to_root="../..";
5 include($path_to_root . "/includes/session.inc");
6
7 include($path_to_root . "/sales/includes/sales_ui.inc");
8
9 $js = "";
10 if ($use_popup_windows)
11         $js .= get_js_open_window(900, 600);
12 if ($use_date_picker)
13         $js .= get_js_date_picker();
14
15 if (isset($_GET['OutstandingOnly']) && ($_GET['OutstandingOnly'] == true)) 
16 {
17         $_POST['order_view_mode'] = 'OutstandingOnly';
18         $_SESSION['page_title'] = _("Search Outstanding Sales Orders");
19
20 elseif (isset($_GET['InvoiceTemplates']) && ($_GET['InvoiceTemplates'] == true)) 
21 {
22         $_POST['order_view_mode'] = 'InvoiceTemplates';
23         $_SESSION['page_title'] = _("Search Template for Invoicing");
24
25 elseif (isset($_GET['DeliveryTemplates']) && ($_GET['DeliveryTemplates'] == true)) 
26 {
27         $_POST['order_view_mode'] = 'DeliveryTemplates';
28         $_SESSION['page_title'] = _("Select Template for Delivery");
29 }
30 elseif (!isset($_POST['order_view_mode']))
31 {
32         $_POST['order_view_mode'] = false;
33         $_SESSION['page_title'] = _("Search All Sales Orders");
34 }
35
36 page($_SESSION['page_title'], false, false, "", $js);
37
38 if (isset($_GET['selected_customer']))
39 {
40         $selected_customer = $_GET['selected_customer'];
41
42 elseif (isset($_POST['selected_customer']))
43 {
44         $selected_customer = $_POST['selected_customer'];
45 }
46 else
47         $selected_customer = -1;
48         
49 //-----------------------------------------------------------------------------------
50 /*
51 $action = $_SERVER['PHP_SELF'];
52
53 if ($_POST['order_view_mode']=='OutstandingOnly')
54 {
55   $action .= "?OutstandingOnly=" . $_POST['order_view_mode']$_PO;
56 }
57 elseif ($_POST['order_view_mode']=='InvoiceTemplates')
58 {
59   $action .= "?InvoiceTemplates=" . $_POST['InvoiceTemplates'];
60 }
61 elseif ($_POST['order_view_mode']=='DeliveryTemplates')
62 {
63   $action .= "?DeliveryTemplates=" . $_POST['InvoiceTemplates'];
64 }
65 */
66 start_form(false, false, $_SERVER['PHP_SELF'] .SID);
67
68 start_table("class='tablestyle_noborder'");
69 start_row();
70 ref_cells(_("#:"), 'OrderNumber');
71 if ($_POST['order_view_mode']!='DeliveryTemplates' && $_POST['order_view_mode']!='InvoiceTemplates')
72 {
73   date_cells(_("from:"), 'OrdersAfterDate', null, -30);
74   date_cells(_("to:"), 'OrdersToDate', null, 1);
75 }
76 locations_list_cells(_("Location:"), 'StockLocation', null, true);
77
78 stock_items_list_cells(_("Item:"), 'SelectStockFromList', null, true);
79
80 submit_cells('SearchOrders', _("Search"));
81
82 hidden('order_view_mode', $_POST['order_view_mode']);
83
84 end_row();
85
86 end_table();
87 end_form();
88
89 //---------------------------------------------------------------------------------------------
90
91 if (isset($_POST['SelectStockFromList']) && ($_POST['SelectStockFromList'] != "") &&
92         ($_POST['SelectStockFromList'] != reserved_words::get_all()))
93 {
94         $selected_stock_item = $_POST['SelectStockFromList'];
95
96 else 
97 {
98         unset($selected_stock_item);
99 }
100
101 //---------------------------------------------------------------------------------------------
102 if (isset($_POST['ChangeTmpl']) && $_POST['ChangeTmpl']!=0) {
103   $sql = "UPDATE ".TB_PREF."sales_orders SET type = !type WHERE order_no=".$_POST['ChangeTmpl'];
104
105   db_query($sql, "Can't change sales order type");
106 }
107 //---------------------------------------------------------------------------------------------
108
109 $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,
110         ".TB_PREF."sales_orders.ord_date, ".TB_PREF."sales_orders.deliver_to, ".TB_PREF."sales_orders.delivery_date,
111         ".TB_PREF."sales_orders.type, ";
112 $sql .= " Sum(".TB_PREF."sales_order_details.qty_sent) AS TotDelivered, ";
113 $sql .= " Sum(".TB_PREF."sales_order_details.quantity) AS TotQuantity, ";
114 $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, ";
115
116 //if ($_POST['order_view_mode']=='InvoiceTemplates' || $_POST['order_view_mode']=='DeliveryTemplates')
117   $sql .= TB_PREF."sales_orders.comments, ";
118 //else
119   $sql .= TB_PREF."sales_orders.customer_ref";
120   
121 $sql .= " FROM ".TB_PREF."sales_orders, ".TB_PREF."sales_order_details, ".TB_PREF."debtors_master, ".TB_PREF."cust_branch
122                 WHERE ".TB_PREF."sales_orders.order_no = ".TB_PREF."sales_order_details.order_no
123                         AND ".TB_PREF."sales_orders.debtor_no = ".TB_PREF."debtors_master.debtor_no
124                         AND ".TB_PREF."sales_orders.branch_code = ".TB_PREF."cust_branch.branch_code
125                         AND ".TB_PREF."debtors_master.debtor_no = ".TB_PREF."cust_branch.debtor_no ";
126
127 //figure out the sql required from the inputs available
128 if (isset($_POST['OrderNumber']) && $_POST['OrderNumber'] != "") 
129 {
130         $sql .= " AND ".TB_PREF."sales_orders.order_no LIKE '%". $_POST['OrderNumber'] ."' GROUP BY ".TB_PREF."sales_orders.order_no";
131
132 else 
133 {
134   if ($_POST['order_view_mode']!='DeliveryTemplates' && $_POST['order_view_mode']!='InvoiceTemplates')
135   {
136         $date_after = date2sql($_POST['OrdersAfterDate']);
137         $date_before = date2sql($_POST['OrdersToDate']);
138
139         $sql .= " AND ".TB_PREF."sales_orders.ord_date >= '$date_after'";
140         $sql .= " AND ".TB_PREF."sales_orders.ord_date <= '$date_before'";
141   }
142         if ($selected_customer != -1)
143                 $sql .= " AND ".TB_PREF."sales_orders.debtor_no='" . $selected_customer . "'";
144
145         if (isset($selected_stock_item))
146                 $sql .= " AND ".TB_PREF."sales_order_details.stk_code='". $selected_stock_item ."'";
147
148         if (isset($_POST['StockLocation']) && $_POST['StockLocation'] != reserved_words::get_all())
149                 $sql .= " AND ".TB_PREF."sales_orders.from_stk_loc = '". $_POST['StockLocation'] . "' ";
150
151         if ($_POST['order_view_mode']=='OutstandingOnly')
152                 $sql .= " AND ".TB_PREF."sales_order_details.qty_sent < ".TB_PREF."sales_order_details.quantity";
153         elseif ($_POST['order_view_mode']=='InvoiceTemplates' || $_POST['order_view_mode']=='DeliveryTemplates')
154                 $sql .= " AND ".TB_PREF."sales_orders.type=1";
155
156         $sql .= " GROUP BY ".TB_PREF."sales_orders.order_no, ".TB_PREF."sales_orders.debtor_no, ".TB_PREF."sales_orders.branch_code,
157                 ".TB_PREF."sales_orders.customer_ref, ".TB_PREF."sales_orders.ord_date, ".TB_PREF."sales_orders.deliver_to";
158
159 } //end not order number selected
160
161 $result = db_query($sql,"No orders were returned");
162
163 //-----------------------------------------------------------------------------------
164
165 if ($result) 
166 {
167
168         /*show a table of the orders returned by the sql */
169
170         start_table("$table_style colspan=6 width=95%");
171         $th = array(_("Order #"), _("Customer"), _("Branch"), _("Cust Order #"), _("Order Date"),
172                 _("Required By"), _("Delivery To"), _("Order Total"), _("Currency"), _("Tmpl"),"");
173
174         if($_POST['order_view_mode']=='InvoiceTemplates' || $_POST['order_view_mode']=='DeliveryTemplates')
175         {
176                 $th[3] = _('Description');
177         }
178
179         table_header($th);
180 start_form();
181
182         $j = 1;
183         $k = 0; //row colour counter
184         $overdue_items = false;
185         while ($myrow = db_fetch($result)) 
186         {
187
188                 $view_page = get_customer_trans_view_str(systypes::sales_order(), $myrow["order_no"]);
189                 $formated_del_date = sql2date($myrow["delivery_date"]);
190                 $formated_order_date = sql2date($myrow["ord_date"]);
191 //          $not_closed =  $myrow['type'] && ($myrow["TotDelivered"] < $myrow["TotQuantity"]);
192
193         // if overdue orders, then highlight as so
194         if ($myrow['type'] == 0 && date1_greater_date2(Today(), $formated_del_date))
195         {
196                  start_row("class='overduebg'");
197                  $overdue_items = true;
198         } 
199         else 
200         {
201                         alt_table_row_color($k);
202         }
203
204                 label_cell($view_page);
205                 label_cell($myrow["name"]);
206                 label_cell($myrow["br_name"]);
207           if($_POST['order_view_mode']=='InvoiceTemplates' || $_POST['order_view_mode']=='DeliveryTemplates')
208                   label_cell($myrow["comments"]);
209           else
210                   label_cell($myrow["customer_ref"]);
211                 label_cell($formated_order_date);
212                 label_cell($formated_del_date);
213                 label_cell($myrow["deliver_to"]);
214                 amount_cell($myrow["OrderValue"]);
215                 label_cell($myrow["curr_code"]);
216                 if ($_POST['order_view_mode']=='OutstandingOnly'/* || $not_closed*/) 
217                 {
218                 $delivery_note = $path_to_root . "/sales/customer_delivery.php?" . SID . "OrderNumber=" .$myrow["order_no"];
219                 label_cell("<a href='$delivery_note'>" . _("Dispatch") . "</a>");
220                 }
221                 elseif ($_POST['order_view_mode']=='InvoiceTemplates')
222                 {
223                 $select_order= $path_to_root . "/sales/sales_order_entry.php?" . SID . "NewInvoice=" .$myrow["order_no"];
224                 label_cell("<a href='$select_order'>" . _("Invoice") . "</a>");
225                 }
226                 elseif ($_POST['order_view_mode']=='DeliveryTemplates')
227                 {
228                         $select_order= $path_to_root . "/sales/sales_order_entry.php?" . SID . "NewDelivery=" .$myrow["order_no"];
229                 label_cell("<a href='$select_order'>" . _("Delivery") . "</a>");
230                 }
231                 else
232                 {
233                   echo "<td><input ".($myrow["type"]==1 ? 'checked' : '')." type='checkbox' name='chgtpl" .$myrow["order_no"]. "' value='1'
234                    onclick='forms[1].ChangeTmpl.value= this.name.substr(6);
235                    this.form.submit();' ></td>";
236
237                   $modify_page = $path_to_root . "/sales/sales_order_entry.php?" . SID . "ModifyOrderNumber=" . $myrow["order_no"];
238                   label_cell("<a href='$modify_page'>" . _("Edit") . "</a>");
239                 }
240                 end_row();;
241
242                 $j++;
243                 If ($j == 12)
244                 {
245                         $j = 1;
246                         table_header($th);
247                 }
248                 //end of page full new headings if
249         }
250         //end of while loop
251   hidden('ChangeTmpl', 0);
252 end_form();
253         end_table();
254
255    if ($overdue_items)
256                 display_note(_("Marked items are overdue."), 0, 1, "class='overduefg'");
257 }
258
259 echo "<br>";
260
261 end_page();
262 ?>