Huge sales module changes toward delivery and invoicing separation. Includes some...
[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['OutstandingOnly'] = true;
18         page(_("Search Outstanding Sales Orders"), false, false, "", $js);
19
20 else 
21 {
22         $_POST['OutstandingOnly'] = false;
23         page(_("Search All Sales Orders"), false, false, "", $js);
24 }
25
26 if (isset($_GET['selected_customer']))
27 {
28         $selected_customer = $_GET['selected_customer'];
29
30 elseif (isset($_POST['selected_customer']))
31 {
32         $selected_customer = $_POST['selected_customer'];
33 }
34 else
35         $selected_customer = -1;
36         
37 //-----------------------------------------------------------------------------------
38
39 start_form(false, false, $_SERVER['PHP_SELF'] ."?OutstandingOnly=" . $_POST['OutstandingOnly'] .SID);
40
41 start_table("class='tablestyle_noborder'");
42 start_row();
43 ref_cells(_("#:"), 'OrderNumber');
44 date_cells(_("from:"), 'OrdersAfterDate', null, -30);
45 date_cells(_("to:"), 'OrdersToDate', null, 1);
46
47 locations_list_cells(_("Location:"), 'StockLocation', null, true);
48
49 stock_items_list_cells(_("Item:"), 'SelectStockFromList', null, true);
50
51 submit_cells('SearchOrders', _("Search"));
52
53 hidden('OutstandingOnly', $_POST['OutstandingOnly']);
54
55 end_row();
56
57 end_table();
58 end_form();
59
60 //---------------------------------------------------------------------------------------------
61
62 if (isset($_POST['SelectStockFromList']) && ($_POST['SelectStockFromList'] != "") &&
63         ($_POST['SelectStockFromList'] != reserved_words::get_all()))
64 {
65         $selected_stock_item = $_POST['SelectStockFromList'];
66
67 else 
68 {
69         unset($selected_stock_item);
70 }
71
72 //---------------------------------------------------------------------------------------------
73
74 $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,
75         ".TB_PREF."sales_orders.customer_ref, ".TB_PREF."sales_orders.ord_date, ".TB_PREF."sales_orders.deliver_to, ".TB_PREF."sales_orders.delivery_date, ";
76 $sql .= " Sum(".TB_PREF."sales_order_details.qty_sent) AS TotDelivered, ";
77 $sql .= " Sum(".TB_PREF."sales_order_details.quantity) AS TotQuantity, ";
78
79 $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
80         FROM ".TB_PREF."sales_orders, ".TB_PREF."sales_order_details, ".TB_PREF."debtors_master, ".TB_PREF."cust_branch
81                 WHERE ".TB_PREF."sales_orders.order_no = ".TB_PREF."sales_order_details.order_no
82                         AND ".TB_PREF."sales_orders.debtor_no = ".TB_PREF."debtors_master.debtor_no
83                         AND ".TB_PREF."sales_orders.branch_code = ".TB_PREF."cust_branch.branch_code
84                         AND ".TB_PREF."debtors_master.debtor_no = ".TB_PREF."cust_branch.debtor_no ";
85
86 //figure out the sql required from the inputs available
87 if (isset($_POST['OrderNumber']) && $_POST['OrderNumber'] != "") 
88 {
89         $sql .= " AND ".TB_PREF."sales_orders.order_no LIKE '%". $_POST['OrderNumber'] ."' GROUP BY ".TB_PREF."sales_orders.order_no";
90
91 else 
92 {
93
94         $date_after = date2sql($_POST['OrdersAfterDate']);
95         $date_before = date2sql($_POST['OrdersToDate']);
96
97         $sql .= " AND ".TB_PREF."sales_orders.ord_date >= '$date_after'";
98         $sql .= " AND ".TB_PREF."sales_orders.ord_date <= '$date_before'";
99
100         if ($selected_customer != -1)
101                 $sql .= " AND ".TB_PREF."sales_orders.debtor_no='" . $selected_customer . "'";
102
103         if (isset($selected_stock_item))
104                 $sql .= " AND ".TB_PREF."sales_order_details.stk_code='". $selected_stock_item ."'";
105
106         if (isset($_POST['StockLocation']) && $_POST['StockLocation'] != reserved_words::get_all())
107                 $sql .= " AND ".TB_PREF."sales_orders.from_stk_loc = '". $_POST['StockLocation'] . "' ";
108
109         if ($_POST['OutstandingOnly'] == true)
110                 $sql .= " AND ".TB_PREF."sales_order_details.qty_sent < ".TB_PREF."sales_order_details.quantity";
111
112         $sql .= " GROUP BY ".TB_PREF."sales_orders.order_no, ".TB_PREF."sales_orders.debtor_no, ".TB_PREF."sales_orders.branch_code,
113                 ".TB_PREF."sales_orders.customer_ref, ".TB_PREF."sales_orders.ord_date, ".TB_PREF."sales_orders.deliver_to";
114
115 } //end not order number selected
116
117 $result = db_query($sql,"No orders were returned");
118
119 //-----------------------------------------------------------------------------------
120
121 if ($result) 
122 {
123
124         /*show a table of the orders returned by the sql */
125
126         start_table("$table_style colspan=6 width=95%");
127         $th = array(_("Order #"), _("Customer"), _("Branch"), _("Cust Order #"), _("Order Date"),
128                 _("Required By"), _("Delivery To"), _("Order Total"), _("Currency"), "", "");
129         table_header($th);
130
131         $j = 1;
132         $k = 0; //row colour counter
133         $overdue_items = false;
134         while ($myrow = db_fetch($result)) 
135         {
136
137                 $view_page = get_customer_trans_view_str(systypes::sales_order(), $myrow["order_no"]);
138                 $formated_del_date = sql2date($myrow["delivery_date"]);
139                 $formated_order_date = sql2date($myrow["ord_date"]);
140                 $not_closed =  $myrow["TotDelivered"] < $myrow["TotQuantity"];
141
142         // if overdue orders, then highlight as so
143         if (date1_greater_date2(Today(), $formated_del_date) & $not_closed)
144         {
145                  start_row("class='overduebg'");
146                  $overdue_items = true;
147         } 
148         else 
149         {
150                         alt_table_row_color($k);
151         }
152
153                 label_cell($view_page);
154                 label_cell($myrow["name"]);
155                 label_cell($myrow["br_name"]);
156                 label_cell($myrow["customer_ref"]);
157                 label_cell($formated_order_date);
158                 label_cell($formated_del_date);
159                 label_cell($myrow["deliver_to"]);
160                 amount_cell($myrow["OrderValue"]);
161                 label_cell($myrow["curr_code"]);
162
163                 if ($_POST['OutstandingOnly'] == true || $not_closed) 
164                 {
165                 $modify_page = $path_to_root . "/sales/sales_order_entry.php?" . SID . "ModifyOrderNumber=" . $myrow["order_no"];
166                 $delivery_note = $path_to_root . "/sales/customer_delivery.php?" . SID . "OrderNumber=" .$myrow["order_no"];
167
168                 label_cell("<a href='$modify_page'>" . _("Edit") . "</a>");
169                 label_cell("<a href='$delivery_note'>" . _("Dispatch") . "</a>");
170                 }
171                 else
172                 {
173                 label_cell("");
174                 label_cell("");
175                 }
176                 end_row();;
177
178                 $j++;
179                 If ($j == 12)
180                 {
181                         $j = 1;
182                         table_header($th);
183                 }
184                 //end of page full new headings if
185         }
186         //end of while loop
187
188         end_table();
189
190    if ($overdue_items)
191                 display_note(_("Marked items are overdue."), 0, 1, "class='overduefg'");
192 }
193
194 echo "<br>";
195
196 end_page();
197 ?>
198