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