3063b84c4dad173be12a90c1cb0ac044a7a10045
[fa-stable.git] / sales / inquiry / sales_deliveries_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 Not Invoiced Deliveries"), false, false, "", $js);
19
20 else 
21 {
22         $_POST['OutstandingOnly'] = false;
23         page(_("Search All Deliveries"), 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 if(isset($_POST['BatchInvoice'])) {
38
39 // checking batch integrity
40     $del_count = 0;
41     foreach($_SESSION['Batch'] as $delivery) {
42           $checkbox = 'Sel_'.$delivery['trans'];
43           if(check_value($checkbox)) {
44             if(!$del_count) {
45                 $del_customer = $delivery['cust'];
46                 $del_branch = $delivery['branch'];
47             } else {
48                 if($del_customer!=$delivery['cust'] || $del_branch != $delivery['branch']) {
49                     $del_count=0; break;
50                 }
51             }
52             $selected[] = $delivery['trans'];
53             $del_count++;
54           }
55     }
56
57     if(!$del_count) {
58                 display_error(_('For batch invoicing you should 
59                     select at least one delivery. All items must be dispatched to
60                     the same customer branch.'));
61     } else {
62         $_SESSION['DeliveryBatch'] = $selected;
63         meta_forward($path_to_root . '/sales/customer_invoice.php','BatchInvoice=Yes');
64     }
65 }
66 //-----------------------------------------------------------------------------------
67
68 start_form(false, false, $_SERVER['PHP_SELF'] ."?OutstandingOnly=" . $_POST['OutstandingOnly'] .SID);
69
70 start_table("class='tablestyle_noborder'");
71 start_row();
72 ref_cells(_("#:"), 'DeliveryNumber');
73 date_cells(_("from:"), 'DeliveryAfterDate', null, -30);
74 date_cells(_("to:"), 'DeliveryToDate', 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('OutstandingOnly', $_POST['OutstandingOnly']);
83
84 end_row();
85
86 end_table();
87
88 //---------------------------------------------------------------------------------------------
89
90 if (isset($_POST['SelectStockFromList']) && ($_POST['SelectStockFromList'] != "") &&
91         ($_POST['SelectStockFromList'] != reserved_words::get_all()))
92 {
93         $selected_stock_item = $_POST['SelectStockFromList'];
94
95 else 
96 {
97         unset($selected_stock_item);
98 }
99
100 //---------------------------------------------------------------------------------------------
101 $sql = "SELECT ".TB_PREF."debtor_trans.trans_no, "
102         .TB_PREF."debtors_master.curr_code, "
103         .TB_PREF."debtors_master.name, "
104         .TB_PREF."cust_branch.br_name, "
105         .TB_PREF."debtor_trans.reference, "
106         .TB_PREF."debtor_trans.tran_date, "
107         .TB_PREF."debtor_trans.due_date, ";
108 //      .TB_PREF."sales_orders.customer_ref, "
109 //      .TB_PREF."sales_orders.deliver_to, "
110 $sql .= " Sum(".TB_PREF."debtor_trans_details.qty_done-"
111                  .TB_PREF."debtor_trans_details.quantity) AS Outstanding, ";
112 $sql .= " Sum(".TB_PREF."debtor_trans_details.qty_done) AS Partial, ";
113
114 $sql .= " Sum(".TB_PREF."-debtor_trans_details.unit_price*"
115  .TB_PREF."debtor_trans_details.quantity*(1-"
116  .TB_PREF."debtor_trans_details.discount_percent)) AS DeliveryValue
117         FROM "
118 //       .TB_PREF."sales_orders, "
119          .TB_PREF."debtor_trans, "
120          .TB_PREF."debtor_trans_details, "
121          .TB_PREF."debtors_master, "
122          .TB_PREF."cust_branch
123                 WHERE "
124 //              .TB_PREF."sales_orders.order_no = ".TB_PREF."debtor_trans.order_ AND "
125                 .TB_PREF."debtor_trans.debtor_no = ".TB_PREF."debtors_master.debtor_no
126                         AND ".TB_PREF."debtor_trans.type = 13
127                         AND ".TB_PREF."debtor_trans_details.debtor_trans_no = debtor_trans.trans_no 
128                         AND ".TB_PREF."debtor_trans_details.debtor_trans_type = debtor_trans.type 
129                         AND ".TB_PREF."debtor_trans.branch_code = ".TB_PREF."cust_branch.branch_code
130                         AND ".TB_PREF."debtor_trans.debtor_no = ".TB_PREF."cust_branch.debtor_no ";
131
132 //figure out the sql required from the inputs available
133 if (isset($_POST['DeliveryNumber']) && $_POST['DeliveryNumber'] != "") 
134 {
135         $sql .= " AND ".TB_PREF."debtor_trans.trans_no LIKE '%". $_POST['DeliveryNumber'] ."' GROUP BY ".TB_PREF."debtor_trans.trans_no";
136
137 else 
138 {
139
140         $date_after = date2sql($_POST['DeliveryAfterDate']);
141         $date_before = date2sql($_POST['DeliveryToDate']);
142
143         $sql .= " AND ".TB_PREF."debtor_trans.tran_date >= '$date_after'";
144         $sql .= " AND ".TB_PREF."debtor_trans.tran_date <= '$date_before'";
145
146         if ($selected_customer != -1)
147                 $sql .= " AND ".TB_PREF."debtor_trans.debtor_no='" . $selected_customer . "' ";
148
149         if (isset($selected_stock_item))
150                 $sql .= " AND ".TB_PREF."debtor_trans_details.stock_id='". $selected_stock_item ."' ";
151
152 //      if (isset($_POST['StockLocation']) && $_POST['StockLocation'] != reserved_words::get_all())
153 //              $sql .= " AND ".TB_PREF."sales_orders.from_stk_loc = '". $_POST['StockLocation'] . "' ";
154
155         if ($_POST['OutstandingOnly'] == true) {
156          $sql .= " AND ".TB_PREF."-debtor_trans_details.qty_done < ".TB_PREF."-debtor_trans_details.quantity ";
157         }
158         
159         $sql .= " GROUP BY ".TB_PREF."debtor_trans.trans_no ";
160 //      .TB_PREF."debtor_trans.debtor_no, "
161 //      .TB_PREF."debtor_trans.branch_code, "
162 //              ".TB_PREF."sales_orders.customer_ref, "
163 //              .TB_PREF."debtor_trans.tran_date";
164
165 } //end no delivery number selected
166
167 $result = db_query($sql,"No deliveries were returned");
168
169 //-----------------------------------------------------------------------------------
170 if(isset($_SESSION['Batch'])) {
171     foreach($_SESSION['Batch'] as $trans=>$del) unset($_SESSION['Batch'][$trans]);
172     unset($_SESSION['Batch']);
173 }
174 if ($result) 
175 {
176
177         /*show a table of the deliveries returned by the sql */
178
179         start_table("$table_style colspan=7 width=95%");
180         $th = array(_("Delivery #"), _("Customer"), _("Branch"), _("Reference"), _("Delivery Date"),
181                 _("Due By"), _("Delivery Total"), _("Currency"),
182                 submit('BatchInvoice','Batch Inv', false),
183                  "", "");
184         table_header($th);
185
186         $j = 1;
187         $k = 0; //row colour counter
188         $overdue_items = false;
189         while ($myrow = db_fetch($result)) 
190         {
191             $_SESSION['Batch'][] = array('trans'=>$myrow["trans_no"],
192             'cust'=>$myrow["name"],'branch'=>$myrow["br_name"] );
193             
194             $view_page = get_customer_trans_view_str(13, $myrow["trans_no"]);
195             $formated_del_date = sql2date($myrow["tran_date"]);
196             $formated_due_date = sql2date($myrow["due_date"]);
197             $not_closed =  $myrow["Outstanding"]!=0;
198
199         // if overdue orders, then highlight as so
200
201         if (date1_greater_date2(Today(), $formated_due_date) && $not_closed )
202         {
203                  start_row("class='overduebg'");
204                  $overdue_items = true;
205         } 
206         else 
207         {
208                         alt_table_row_color($k);
209         }
210
211                 label_cell($view_page);
212                 label_cell($myrow["name"]);
213                 label_cell($myrow["br_name"]);
214                 label_cell($myrow["reference"]);
215                 label_cell($formated_del_date);
216                 label_cell($formated_due_date);
217                 amount_cell($myrow["DeliveryValue"]);
218                 label_cell($myrow["curr_code"]);
219                 if(!$myrow['Partial'])
220                     check_cells(null,'Sel_'. $myrow['trans_no'],0,false);
221                 else
222                     label_cell("");
223                 if ($_POST['OutstandingOnly'] == true || $not_closed) 
224                 {
225                 $modify_page = $path_to_root . "/sales/customer_delivery.php?" . SID . "ModifyDelivery=" . $myrow["trans_no"];
226                 $invoice_page = $path_to_root . "/sales/customer_invoice.php?" . SID . "DeliveryNumber=" .$myrow["trans_no"];
227                 label_cell("<a href='$modify_page'>" . _("Edit") . "</a>");
228
229                 label_cell($not_closed ? "<a href='$invoice_page'>" . _("Invoice") . "</a>" : '');
230
231                 }
232                 else
233                 {
234                 label_cell("");
235                 label_cell("");
236                 }
237                 end_row();;
238
239                 $j++;
240                 If ($j == 12)
241                 {
242                         $j = 1;
243                         table_header($th);
244                 }
245                 //end of page full new headings if
246         }
247         //end of while loop
248
249         end_table();
250
251    if ($overdue_items)
252                 display_note(_("Marked items are overdue."), 0, 1, "class='overduefg'");
253 }
254
255 echo "<br>";
256 end_form();
257
258 end_page();
259 ?>
260