Bug 5682: Voided Invoices and PO Deliveries showing up in inquiries. Fixed.
[fa-stable.git] / purchasing / view / view_po.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_SUPPTRANSVIEW';
13 $path_to_root = "../..";
14 include($path_to_root . "/purchasing/includes/po_class.inc");
15
16 include($path_to_root . "/includes/session.inc");
17 include($path_to_root . "/purchasing/includes/purchasing_ui.inc");
18
19 $js = "";
20 if ($SysPrefs->use_popup_windows)
21         $js .= get_js_open_window(900, 500);
22 page(_($help_context = "View Purchase Order"), true, false, "", $js);
23
24
25 if (!isset($_GET['trans_no']))
26 {
27         die ("<br>" . _("This page must be called with a purchase order number to review."));
28 }
29
30 if (!empty($SysPrefs->prefs['company_logo_on_views']))
31         company_logo_on_view();
32
33 display_heading(_("Purchase Order") . " #" . $_GET['trans_no']);
34
35 $purchase_order = new purch_order;
36
37 read_po($_GET['trans_no'], $purchase_order);
38 echo "<br>";
39 display_po_summary($purchase_order, true);
40
41 start_table(TABLESTYLE, "width='90%'", 6);
42 echo "<tr><td valign=top>"; // outer table
43
44 display_heading2(_("Line Details"));
45
46 start_table(TABLESTYLE, "width='100%'");
47
48 $th = array(_("Item Code"), _("Item Description"), _("Quantity"), _("Unit"), _("Price"),
49         _("Requested By"), _("Line Total"), _("Quantity Received"), _("Quantity Invoiced"));
50 table_header($th);
51 $total = $k = 0;
52 $overdue_items = false;
53 foreach ($purchase_order->line_items as $stock_item)
54 {
55
56         $line_total = $stock_item->quantity * $stock_item->price;
57
58         // if overdue and outstanding quantities, then highlight as so
59         if (($stock_item->quantity - $stock_item->qty_received > 0)     &&
60                 date1_greater_date2(Today(), $stock_item->req_del_date))
61         {
62         start_row("class='overduebg'");
63         $overdue_items = true;
64         }
65         else
66         {
67                 alt_table_row_color($k);
68         }
69
70         label_cell($stock_item->stock_id);
71         label_cell($stock_item->item_description);
72         $dec = get_qty_dec($stock_item->stock_id);
73         qty_cell($stock_item->quantity, false, $dec);
74         label_cell($stock_item->units);
75         amount_decimal_cell($stock_item->price);
76         label_cell($stock_item->req_del_date);
77         amount_cell($line_total);
78         qty_cell($stock_item->qty_received, false, $dec);
79         qty_cell($stock_item->qty_inv, false, $dec);
80         end_row();
81
82         $total += $line_total;
83 }
84
85 $display_sub_tot = number_format2($total,user_price_dec());
86 label_row(_("Sub Total"), $display_sub_tot,
87         "align=right colspan=6", "nowrap align=right",2);
88
89 $taxes = $purchase_order->get_taxes();
90 $tax_total = display_edit_tax_items($taxes, 6, $purchase_order->tax_included,2);
91
92 $display_total = price_format(($total + $tax_total));
93
94 start_row();
95 label_cells(_("Amount Total"), $display_total, "colspan=6 align='right'","align='right'");
96 label_cell('', "colspan=2");
97 end_row();
98
99 end_table();
100
101 if ($overdue_items)
102         display_note(_("Marked items are overdue."), 0, 0, "class='overduefg'");
103
104 //----------------------------------------------------------------------------------------------------
105
106 $k = 0;
107
108 $grns_result = get_po_grns($_GET['trans_no']);
109
110 if (db_num_rows($grns_result) > 0)
111 {
112
113     echo "</td><td valign=top>"; // outer table
114
115     display_heading2(_("Deliveries"));
116     start_table(TABLESTYLE);
117     $th = array(_("#"), _("Reference"), _("Delivered On"));
118     table_header($th);
119     while ($myrow = db_fetch($grns_result))
120     {
121         if (get_voided_entry(ST_SUPPRECEIVE, $myrow['id']))
122                 continue;
123                 alt_table_row_color($k);
124
125         label_cell(get_trans_view_str(ST_SUPPRECEIVE,$myrow["id"]));
126         label_cell($myrow["reference"]);
127         label_cell(sql2date($myrow["delivery_date"]));
128         end_row();
129     }
130     end_table();
131 }
132
133 $invoice_result = get_po_invoices_credits($_GET['trans_no']);
134
135 $k = 0;
136
137 if (db_num_rows($invoice_result) > 0)
138 {
139
140     echo "</td><td valign=top>"; // outer table
141
142     display_heading2(_("Invoices/Credits"));
143     start_table(TABLESTYLE);
144     $th = array(_("#"), _("Date"), _("Total"));
145     table_header($th);
146     while ($myrow = db_fetch($invoice_result))
147     {
148         if (get_voided_entry($myrow["type"],$myrow["trans_no"]))
149                 continue;
150         alt_table_row_color($k);
151
152         label_cell(get_trans_view_str($myrow["type"],$myrow["trans_no"]));
153         label_cell(sql2date($myrow["tran_date"]));
154         amount_cell($myrow["Total"]);
155         end_row();
156     }
157     end_table();
158 }
159
160 echo "</td></tr>";
161
162 end_table(1); // outer table
163
164 display_allocations_to(PT_SUPPLIER, $purchase_order->supplier_id, ST_PURCHORDER, $purchase_order->order_no, $total + $tax_total);
165
166 //----------------------------------------------------------------------------------------------------
167
168 end_page(true, false, false, ST_PURCHORDER, $_GET['trans_no']);
169