aab384b7c8c84f9d1bbe7479e8673627371f9ac6
[fa-stable.git] / sales / view / view_sales_order.php
1 <?php
2 /**********************************************************************
3     Copyright (C) FrontAccounting, LLC.
4         Released under the terms of the GNU General Public License, GPL, 
5         as published by the Free Software Foundation, either version 3 
6         of the License, or (at your option) any later version.
7     This program is distributed in the hope that it will be useful,
8     but WITHOUT ANY WARRANTY; without even the implied warranty of
9     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
10     See the License here <http://www.gnu.org/licenses/gpl-3.0.html>.
11 ***********************************************************************/
12 $page_security = 'SA_SALESTRANSVIEW';
13 $path_to_root = "../..";
14 include_once($path_to_root . "/sales/includes/cart_class.inc");
15
16 include_once($path_to_root . "/includes/session.inc");
17 include_once($path_to_root . "/includes/date_functions.inc");
18
19 include_once($path_to_root . "/sales/includes/sales_ui.inc");
20 include_once($path_to_root . "/sales/includes/sales_db.inc");
21
22 $js = "";
23 if ($SysPrefs->use_popup_windows)
24         $js .= get_js_open_window(900, 600);
25
26 if ($_GET['trans_type'] == ST_SALESQUOTE)
27 {
28         page(_($help_context = "View Sales Quotation"), true, false, "", $js);
29         display_heading(sprintf(_("Sales Quotation #%d"),$_GET['trans_no']));
30 }       
31 else
32 {
33         page(_($help_context = "View Sales Order"), true, false, "", $js);
34         display_heading(sprintf(_("Sales Order #%d"),$_GET['trans_no']));
35 }
36
37 if (isset($_SESSION['View']))
38 {
39         unset ($_SESSION['View']);
40 }
41
42 $_SESSION['View'] = new Cart($_GET['trans_type'], $_GET['trans_no']);
43
44 start_table(TABLESTYLE2, "width='95%'", 5);
45
46 if ($_GET['trans_type'] != ST_SALESQUOTE)
47 {
48         echo "<tr valign=top><td>";
49         display_heading2(_("Order Information"));
50         echo "</td><td>";
51         display_heading2(_("Deliveries"));
52         echo "</td><td>";
53         display_heading2(_("Invoices/Credits"));
54         echo "</td></tr>";
55 }       
56
57 echo "<tr valign=top><td>";
58
59 start_table(TABLESTYLE, "width='95%'");
60 label_row(_("Customer Name"), $_SESSION['View']->customer_name, "class='tableheader2'",
61         "colspan=3");
62 start_row();
63 label_cells(_("Customer Order Ref."), $_SESSION['View']->cust_ref, "class='tableheader2'");
64 label_cells(_("Deliver To Branch"), $_SESSION['View']->deliver_to, "class='tableheader2'");
65 end_row();
66 start_row();
67 label_cells(_("Ordered On"), $_SESSION['View']->document_date, "class='tableheader2'");
68 if ($_GET['trans_type'] == ST_SALESQUOTE)
69         label_cells(_("Valid until"), $_SESSION['View']->due_date, "class='tableheader2'");
70 elseif ($_SESSION['View']->reference == "auto")
71         label_cells(_("Due Date"), $_SESSION['View']->due_date, "class='tableheader2'");
72 else
73         label_cells(_("Requested Delivery"), $_SESSION['View']->due_date, "class='tableheader2'");
74 end_row();
75 start_row();
76 label_cells(_("Order Currency"), $_SESSION['View']->customer_currency, "class='tableheader2'");
77 label_cells(_("Deliver From Location"), $_SESSION['View']->location_name, "class='tableheader2'");
78 end_row();
79
80
81 if ($_SESSION['View']->payment_terms['days_before_due']<0)
82 {
83 start_row();
84 label_cells(_("Payment Terms"), $_SESSION['View']->payment_terms['terms'], "class='tableheader2'");
85 label_cells(_("Required Pre-Payment"), price_format($_SESSION['View']->prep_amount), "class='tableheader2'");
86 end_row();
87 start_row();
88 label_cells(_("Non-Invoiced Prepayments"), price_format($_SESSION['View']->alloc), "class='tableheader2'");
89 label_cells(_("All Payments Allocated"), price_format($_SESSION['View']->sum_paid), "class='tableheader2'");
90 end_row();
91 } else
92         label_row(_("Payment Terms"), $_SESSION['View']->payment_terms['terms'], "class='tableheader2'", "colspan=3");
93 $shipping = get_item($_SESSION['View']->ship_via);
94 label_row(_("Shipping"), $shipping['description'], "class='tableheader2'", "colspan=3");
95 label_row(_("Delivery Address"), nl2br($_SESSION['View']->delivery_address),
96         "class='tableheader2'", "colspan=3");
97 label_row(_("Reference"), $_SESSION['View']->reference, "class='tableheader2'", "colspan=3");
98 label_row(_("Telephone"), $_SESSION['View']->phone, "class='tableheader2'", "colspan=3");
99 label_row(_("E-mail"), "<a href='mailto:" . $_SESSION['View']->email . "'>" . $_SESSION['View']->email . "</a>",
100         "class='tableheader2'", "colspan=3");
101 label_row(_("Comments"), nl2br($_SESSION['View']->Comments), "class='tableheader2'", "colspan=3");
102 end_table();
103
104 if ($_GET['trans_type'] != ST_SALESQUOTE)
105 {
106         echo "</td><td valign='top'>";
107
108         start_table(TABLESTYLE);
109         display_heading2(_("Delivery Notes"));
110
111
112         $th = array(_("#"), _("Ref"), _("Date"), _("Total"));
113         table_header($th);
114
115         $dn_numbers = array();
116         $delivery_total = 0;
117
118         if ($result = get_sales_child_documents(ST_SALESORDER, $_GET['trans_no'])) {
119
120                 $k = 0;
121                 while ($del_row = db_fetch($result))
122                 {
123
124                         alt_table_row_color($k);
125                         $dn_numbers[] = $del_row["trans_no"];
126                         $this_total = $del_row["ov_freight"]+ $del_row["ov_amount"] + $del_row["ov_freight_tax"]  + $del_row["ov_gst"] ;
127                         $delivery_total += $this_total;
128
129                         label_cell(get_customer_trans_view_str($del_row["type"], $del_row["trans_no"]));
130                         label_cell($del_row["reference"]);
131                         label_cell(sql2date($del_row["tran_date"]));
132                         amount_cell($this_total);
133                         end_row();
134                 }
135         }
136
137         label_row(null, price_format($delivery_total), " ", "colspan=4 align=right");
138
139         end_table();
140         echo "</td><td valign='top'>";
141
142         start_table(TABLESTYLE);
143         display_heading2(_("Sales Invoices"));
144
145         $th = array(_("#"), _("Ref"), _("Date"), _("Total"));
146         table_header($th);
147         
148         $inv_numbers = array();
149         $invoices_total = 0;
150
151         if ($_SESSION['View']->prepaid)
152                 $result = get_sales_order_invoices($_GET['trans_no']);
153         else
154                 $result = get_sales_child_documents(ST_CUSTDELIVERY, $dn_numbers);
155
156         if ($result) {
157                 $k = 0;
158
159                 while ($inv_row = db_fetch($result))
160                 {
161                         alt_table_row_color($k);
162
163                         $this_total = $_SESSION['View']->prepaid ? $inv_row["prep_amount"] : 
164                                 $inv_row["ov_freight"] + $inv_row["ov_freight_tax"]  + $inv_row["ov_gst"] + $inv_row["ov_amount"];
165                         $invoices_total += $this_total;
166
167                         $inv_numbers[] = $inv_row["trans_no"];
168                         label_cell(get_customer_trans_view_str($inv_row["type"], $inv_row["trans_no"]));
169                         label_cell($inv_row["reference"]);
170                         label_cell(sql2date($inv_row["tran_date"]));
171                         amount_cell($this_total);
172                         end_row();
173                 }
174         }
175         label_row(null, price_format($invoices_total), " ", "colspan=4 align=right");
176
177         end_table();
178
179         display_heading2(_("Credit Notes"));
180
181         start_table(TABLESTYLE);
182         $th = array(_("#"), _("Ref"), _("Date"), _("Total"));
183         table_header($th);
184
185         $credits_total = 0;
186
187         if ($result = get_sales_child_documents(ST_SALESINVOICE, $inv_numbers)) {
188                 $k = 0;
189
190                 while ($credits_row = db_fetch($result))
191                 {
192
193                         alt_table_row_color($k);
194
195                         $this_total = $credits_row["ov_freight"] + $credits_row["ov_freight_tax"]  + $credits_row["ov_gst"] + $credits_row["ov_amount"];
196                         $credits_total += $this_total;
197
198                         label_cell(get_customer_trans_view_str($credits_row["type"], $credits_row["trans_no"]));
199                         label_cell($credits_row["reference"]);
200                         label_cell(sql2date($credits_row["tran_date"]));
201                         amount_cell(-$this_total);
202                         end_row();
203
204                 }
205
206         }
207         label_row(null, "<font color=red>" . price_format(-$credits_total) . "</font>",
208                 " ", "colspan=4 align=right");
209
210         end_table();
211
212         echo "</td></tr>";
213
214         end_table();
215 }
216 echo "<center>";
217 if ($_SESSION['View']->so_type == 1)
218         display_note(_("This Sales Order is used as a Template."), 0, 0, "class='currentfg'");
219 display_heading2(_("Line Details"));
220
221 start_table(TABLESTYLE, "width='95%'");
222 $th = array(_("Item Code"), _("Item Description"), _("Quantity"), _("Unit"),
223         _("Price"), _("Discount"), _("Total"), _("Quantity Delivered"));
224 table_header($th);
225
226 $k = 0;  //row colour counter
227
228 foreach ($_SESSION['View']->line_items as $stock_item) {
229
230         $line_total = round2($stock_item->quantity * $stock_item->price * (1 - $stock_item->discount_percent),
231            user_price_dec());
232
233         alt_table_row_color($k);
234
235         label_cell($stock_item->stock_id);
236         label_cell($stock_item->item_description);
237         $dec = get_qty_dec($stock_item->stock_id);
238         qty_cell($stock_item->quantity, false, $dec);
239         label_cell($stock_item->units);
240         amount_cell($stock_item->price);
241         amount_cell($stock_item->discount_percent * 100);
242         amount_cell($line_total);
243
244         qty_cell($stock_item->qty_done, false, $dec);
245         end_row();
246 }
247
248 if ($_SESSION['View']->freight_cost != 0.0)
249         label_row(_("Shipping"), price_format($_SESSION['View']->freight_cost),
250                 "align=right colspan=6", "nowrap align=right", 1);
251
252 $sub_tot = $_SESSION['View']->get_items_total() + $_SESSION['View']->freight_cost;
253
254 $display_sub_tot = price_format($sub_tot);
255
256 label_row(_("Sub Total"), $display_sub_tot, "align=right colspan=6",
257         "nowrap align=right", 1);
258
259 $taxes = $_SESSION['View']->get_taxes();
260
261 $tax_total = display_edit_tax_items($taxes, 6, $_SESSION['View']->tax_included,2);
262
263 $display_total = price_format($sub_tot + $tax_total);
264
265 start_row();
266 label_cells(_("Amount Total"), $display_total, "colspan=6 align='right'","align='right'");
267 label_cell('', "colspan=2");
268 end_row();
269 end_table();
270
271 display_allocations_to(PT_CUSTOMER, $_SESSION['View']->customer_id, $_GET['trans_type'], $_GET['trans_no'], $sub_tot + $tax_total);
272
273 end_page(true, false, false, $_GET['trans_type'], $_GET['trans_no']);
274