Cleanup comments. Small bugfixes. Third run
[fa-stable.git] / inventory / purchasing_data.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_PURCHASEPRICING';
13 if (!@$_GET['popup'])
14         $path_to_root = "..";
15 else    
16         $path_to_root = "../..";
17
18 include_once($path_to_root . "/includes/session.inc");
19 include_once($path_to_root . "/includes/date_functions.inc");
20 include_once($path_to_root . "/includes/ui.inc");
21 include_once($path_to_root . "/includes/data_checks.inc");
22
23 page(_($help_context = "Supplier Purchasing Data"));
24
25 check_db_has_purchasable_items(_("There are no purchasable inventory items defined in the system."));
26 check_db_has_suppliers(_("There are no suppliers defined in the system."));
27
28 //----------------------------------------------------------------------------------------
29 simple_page_mode(true);
30 if (isset($_GET['stock_id']))
31 {
32         $_POST['stock_id'] = $_GET['stock_id'];
33 }
34
35 //--------------------------------------------------------------------------------------------------
36
37 if ($Mode=='ADD_ITEM' || $Mode=='UPDATE_ITEM')
38 {
39
40         $input_error = 0;
41         if ($_POST['stock_id'] == "" || !isset($_POST['stock_id']))
42         {
43         $input_error = 1;
44         display_error( _("There is no item selected."));
45                 set_focus('stock_id');
46         }
47         elseif (!check_num('price', 0))
48         {
49         $input_error = 1;
50         display_error( _("The price entered was not numeric."));
51         set_focus('price');
52         }
53         elseif (!check_num('conversion_factor'))
54         {
55         $input_error = 1;
56         display_error( _("The conversion factor entered was not numeric. The conversion factor is the number by which the price must be divided by to get the unit price in our unit of measure."));
57                 set_focus('conversion_factor');
58         }
59         elseif ($Mode == 'ADD_ITEM' && get_item_purchasing_data($_POST['supplier_id'], $_POST['stock_id']))
60         {
61         $input_error = 1;
62         display_error( _("The purchasing data for this supplier has already been added."));
63                 set_focus('supplier_id');
64         }
65         if ($input_error == 0)
66         {
67         if ($Mode == 'ADD_ITEM') 
68         {
69                         add_item_purchasing_data($_POST['supplier_id'], $_POST['stock_id'], input_num('price',0),
70                                 $_POST['suppliers_uom'], input_num('conversion_factor'), $_POST['supplier_description']);
71                 display_notification(_("This supplier purchasing data has been added."));
72         } 
73         else
74         {
75                 update_item_purchasing_data($selected_id, $_POST['stock_id'], input_num('price',0),
76                         $_POST['suppliers_uom'], input_num('conversion_factor'), $_POST['supplier_description']);
77                 display_notification(_("Supplier purchasing data has been updated."));
78         }
79                 $Mode = 'RESET';
80         }
81 }
82
83 //--------------------------------------------------------------------------------------------------
84
85 if ($Mode == 'Delete')
86 {
87         delete_item_purchasing_data($selected_id, $_POST['stock_id']);
88         display_notification(_("The purchasing data item has been sucessfully deleted."));
89         $Mode = 'RESET';
90 }
91
92 if ($Mode == 'RESET')
93 {
94         $selected_id = -1;
95 }
96
97 if (isset($_POST['_selected_id_update']) )
98 {
99         $selected_id = $_POST['selected_id'];
100         $Ajax->activate('_page_body');
101 }
102
103 if (list_updated('stock_id')) 
104         $Ajax->activate('price_table');
105 //--------------------------------------------------------------------------------------------------
106
107 $action = $_SERVER['PHP_SELF'];
108 if ($page_nested)
109         $action .= "?stock_id=".get_post('stock_id');
110 start_form(false, false, $action);
111
112 if (!isset($_POST['stock_id']))
113         $_POST['stock_id'] = get_global_stock_item();
114
115 if (!$page_nested)
116 {
117         echo "<center>" . _("Item:"). "&nbsp;";
118         // All items can be purchased
119         echo stock_items_list('stock_id', $_POST['stock_id'], false, true);
120         echo "<hr></center>";
121 }
122 else
123         br(2);
124
125 set_global_stock_item($_POST['stock_id']);
126
127 $mb_flag = get_mb_flag($_POST['stock_id']);
128
129 if ($mb_flag == -1)
130 {
131         display_error(_("Entered item is not defined. Please re-enter."));
132         set_focus('stock_id');
133 }
134 else
135 {
136         $result = get_items_purchasing_data($_POST['stock_id']);
137         div_start('price_table');
138     if (db_num_rows($result) == 0)
139     {
140         display_note(_("There is no purchasing data set up for the part selected"));
141     }
142     else
143     {
144         start_table(TABLESTYLE, "width='65%'");
145
146                 $th = array(_("Supplier"), _("Price"), _("Currency"),
147                         _("Supplier's Unit"), _("Conversion Factor"), _("Supplier's Description"), "", "");
148
149         table_header($th);
150
151         $k = $j = 0; //row colour counter
152
153         while ($myrow = db_fetch($result))
154         {
155                         alt_table_row_color($k);
156
157             label_cell($myrow["supp_name"]);
158             amount_decimal_cell($myrow["price"]);
159             label_cell($myrow["curr_code"]);
160             label_cell($myrow["suppliers_uom"]);
161             qty_cell($myrow['conversion_factor'], false, 'max');
162             label_cell($myrow["supplier_description"]);
163                         edit_button_cell("Edit".$myrow['supplier_id'], _("Edit"));
164                         delete_button_cell("Delete".$myrow['supplier_id'], _("Delete"));
165             end_row();
166
167             $j++;
168             If ($j == 12)
169             {
170                 $j = 1;
171                         table_header($th);
172             } //end of page full new headings
173         } //end of while loop
174
175         end_table();
176     }
177  div_end();
178 }
179
180 //-----------------------------------------------------------------------------------------------
181
182 $dec2 = 6;
183 if ($Mode =='Edit')
184 {
185         $myrow = get_item_purchasing_data($selected_id, $_POST['stock_id']);
186
187     $supp_name = $myrow["supp_name"];
188     $_POST['price'] = price_decimal_format($myrow["price"], $dec2);
189     $_POST['suppliers_uom'] = $myrow["suppliers_uom"];
190     $_POST['supplier_description'] = $myrow["supplier_description"];
191     $_POST['conversion_factor'] = maxprec_format($myrow["conversion_factor"]);
192 }
193
194 br();
195 hidden('selected_id', $selected_id);
196 if ($page_nested)
197 {
198         hidden('popup', @$_GET['popup']);
199 }
200
201 start_table(TABLESTYLE2);
202
203 if ($Mode == 'Edit')
204 {
205         hidden('supplier_id');
206         label_row(_("Supplier:"), $supp_name);
207 }
208 else
209 {
210         supplier_list_row(_("Supplier:"), 'supplier_id', null, false, true);
211         $_POST['price'] = $_POST['suppliers_uom'] = $_POST['conversion_factor'] = $_POST['supplier_description'] = "";
212 }
213 amount_row(_("Price:"), 'price', null,'', get_supplier_currency($selected_id), $dec2);
214 text_row(_("Suppliers Unit of Measure:"), 'suppliers_uom', null, 50, 51);
215
216 if (!isset($_POST['conversion_factor']) || $_POST['conversion_factor'] == "")
217 {
218         $_POST['conversion_factor'] = maxprec_format(1);
219 }
220 amount_row(_("Conversion Factor (to our UOM):"), 'conversion_factor', null, null, null, 'max');
221 text_row(_("Supplier's Code or Description:"), 'supplier_description', null, 50, 51);
222
223 end_table(1);
224
225 submit_add_or_update_center($selected_id == -1, '', 'both');
226
227 end_form();
228 end_page();