70dd97d8a39f4a4639fb885e12ff714e0ad32899
[fa-stable.git] / inventory / prices.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_SALESPRICE';
13
14 if (@$_GET['page_level'] == 1)
15         $path_to_root = "../..";
16 else    
17         $path_to_root = "..";
18
19 include_once($path_to_root . "/includes/session.inc");
20 include_once($path_to_root . "/sales/includes/sales_db.inc");
21 include_once($path_to_root . "/sales/includes/db/sales_types_db.inc");
22 include_once($path_to_root . "/includes/ui.inc");
23 include_once($path_to_root . "/includes/data_checks.inc");
24 include_once($path_to_root . "/inventory/includes/inventory_db.inc");
25
26 $js = "";
27 if ($SysPrefs->use_popup_windows && $SysPrefs->use_popup_search)
28         $js .= get_js_open_window(900, 500);
29 page(_($help_context = "Inventory Item Sales prices"), false, false, "", $js);
30
31 //---------------------------------------------------------------------------------------------------
32
33 check_db_has_stock_items(_("There are no items defined in the system."));
34
35 check_db_has_sales_types(_("There are no sales types in the system. Please set up sales types befor entering pricing."));
36
37 simple_page_mode(true);
38 //---------------------------------------------------------------------------------------------------
39 $input_error = 0;
40
41 if (isset($_GET['stock_id']))
42 {
43         $_POST['stock_id'] = $_GET['stock_id'];
44 }
45 if (isset($_GET['Item']))
46 {
47         $_POST['stock_id'] = $_GET['Item'];
48 }
49
50 if (!isset($_POST['curr_abrev']))
51 {
52         $_POST['curr_abrev'] = get_company_currency();
53 }
54
55 //---------------------------------------------------------------------------------------------------
56 $action = $_SERVER['PHP_SELF'];
57 if ($page_nested)
58         $action .= "?stock_id=".get_post('stock_id');
59 start_form(false, false, $action);
60
61 if (!isset($_POST['stock_id']))
62         $_POST['stock_id'] = get_global_stock_item();
63
64 if (!$page_nested)
65 {
66         echo "<center>" . _("Item:"). "&nbsp;";
67         echo sales_items_list('stock_id', $_POST['stock_id'], false, true, '', array('editable' => false));
68         echo "<hr></center>";
69 }
70 else
71         br(2);
72 set_global_stock_item($_POST['stock_id']);
73
74 //----------------------------------------------------------------------------------------------------
75
76 if ($Mode=='ADD_ITEM' || $Mode=='UPDATE_ITEM') 
77 {
78
79         if (!check_num('price', 0))
80         {
81                 $input_error = 1;
82                 display_error( _("The price entered must be numeric."));
83                 set_focus('price');
84         }
85         elseif ($Mode == 'ADD_ITEM' && get_stock_price_type_currency($_POST['stock_id'], $_POST['sales_type_id'], $_POST['curr_abrev']))
86         {
87         $input_error = 1;
88         display_error( _("The sales pricing for this item, sales type and currency has already been added."));
89                 set_focus('supplier_id');
90         }
91
92         if ($input_error != 1)
93         {
94
95         if ($selected_id != -1) 
96                 {
97                         //editing an existing price
98                         update_item_price($selected_id, $_POST['sales_type_id'],
99                         $_POST['curr_abrev'], input_num('price'));
100
101                         $msg = _("This price has been updated.");
102                 }
103                 else
104                 {
105
106                         add_item_price($_POST['stock_id'], $_POST['sales_type_id'],
107                             $_POST['curr_abrev'], input_num('price'));
108
109                         $msg = _("The new price has been added.");
110                 }
111                 display_notification($msg);
112                 $Mode = 'RESET';
113         }
114
115 }
116
117 //------------------------------------------------------------------------------------------------------
118
119 if ($Mode == 'Delete')
120 {
121         //the link to delete a selected record was clicked
122         delete_item_price($selected_id);
123         display_notification(_("The selected price has been deleted."));
124         $Mode = 'RESET';
125 }
126
127 if ($Mode == 'RESET')
128 {
129         $selected_id = -1;
130 }
131
132 if (list_updated('stock_id')) {
133         $Ajax->activate('price_table');
134         $Ajax->activate('price_details');
135 }
136 if (list_updated('stock_id') || isset($_POST['_curr_abrev_update']) || isset($_POST['_sales_type_id_update'])) {
137         // after change of stock, currency or salestype selector
138         // display default calculated price for new settings. 
139         // If we have this price already in db it is overwritten later.
140         unset($_POST['price']);
141         $Ajax->activate('price_details');
142 }
143
144 //---------------------------------------------------------------------------------------------------
145
146 $prices_list = get_prices($_POST['stock_id']);
147
148 div_start('price_table');
149 start_table(TABLESTYLE, "width='30%'");
150
151 $th = array(_("Currency"), _("Sales Type"), _("Price"), "", "");
152 table_header($th);
153 $k = 0; //row colour counter
154 $calculated = false;
155 while ($myrow = db_fetch($prices_list))
156 {
157
158         alt_table_row_color($k);
159
160         label_cell($myrow["curr_abrev"]);
161     label_cell($myrow["sales_type"]);
162     amount_cell($myrow["price"]);
163         edit_button_cell("Edit".$myrow['id'], _("Edit"));
164         delete_button_cell("Delete".$myrow['id'], _("Delete"));
165     end_row();
166
167 }
168 end_table();
169 if (db_num_rows($prices_list) == 0)
170 {
171         if (get_company_pref('add_pct') != -1)
172                 $calculated = true;
173         display_note(_("There are no prices set up for this part."), 1);
174 }
175 div_end();
176 //------------------------------------------------------------------------------------------------
177
178 echo "<br>";
179
180 if ($Mode == 'Edit')
181 {
182         $myrow = get_stock_price($selected_id);
183         $_POST['curr_abrev'] = $myrow["curr_abrev"];
184         $_POST['sales_type_id'] = $myrow["sales_type_id"];
185         $_POST['price'] = price_format($myrow["price"]);
186 }
187
188 hidden('selected_id', $selected_id);
189
190 div_start('price_details');
191 start_table(TABLESTYLE2);
192
193 currencies_list_row(_("Currency:"), 'curr_abrev', null, true);
194
195 sales_types_list_row(_("Sales Type:"), 'sales_type_id', null, true);
196
197 if (!isset($_POST['price'])) {
198         $_POST['price'] = price_format(get_kit_price(get_post('stock_id'), 
199                 get_post('curr_abrev'), get_post('sales_type_id')));
200 }
201
202 $kit = get_item_code_dflts($_POST['stock_id']);
203 small_amount_row(_("Price:"), 'price', null, '', _('per') .' '.$kit["units"]);
204
205 end_table(1);
206 if ($calculated)
207         display_note(_("The price is calculated."), 0, 1);
208
209 submit_add_or_update_center($selected_id == -1, '', 'both');
210 div_end();
211
212 end_form();
213 end_page();