Feature 5388: Print Invoices (documents) list gets too long. Fixed by default 180...
[fa-stable.git] / dimensions / dimension_entry.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_DIMENSION';
13 $path_to_root = "..";
14 include_once($path_to_root . "/includes/session.inc");
15
16 include_once($path_to_root . "/includes/date_functions.inc");
17 include_once($path_to_root . "/includes/data_checks.inc");
18
19 include_once($path_to_root . "/admin/db/tags_db.inc");
20 include_once($path_to_root . "/dimensions/includes/dimensions_db.inc");
21 include_once($path_to_root . "/dimensions/includes/dimensions_ui.inc");
22
23 $js = "";
24 if (user_use_date_picker())
25         $js .= get_js_date_picker();
26 page(_($help_context = "Dimension Entry"), false, false, "", $js);
27
28 //---------------------------------------------------------------------------------------
29
30 if (isset($_GET['trans_no']))
31 {
32         $selected_id = $_GET['trans_no'];
33
34 elseif(isset($_POST['selected_id']))
35 {
36         $selected_id = $_POST['selected_id'];
37 }
38 else
39         $selected_id = -1;
40 //---------------------------------------------------------------------------------------
41
42 if (isset($_GET['AddedID'])) 
43 {
44         $id = $_GET['AddedID'];
45
46         display_notification_centered(_("The dimension has been entered."));
47
48         safe_exit();
49 }
50
51 //---------------------------------------------------------------------------------------
52
53 if (isset($_GET['UpdatedID'])) 
54 {
55         $id = $_GET['UpdatedID'];
56
57         display_notification_centered(_("The dimension has been updated."));
58         safe_exit();
59 }
60
61 //---------------------------------------------------------------------------------------
62
63 if (isset($_GET['DeletedID'])) 
64 {
65         $id = $_GET['DeletedID'];
66
67         display_notification_centered(_("The dimension has been deleted."));
68         safe_exit();
69 }
70
71 //---------------------------------------------------------------------------------------
72
73 if (isset($_GET['ClosedID'])) 
74 {
75         $id = $_GET['ClosedID'];
76
77         display_notification_centered(_("The dimension has been closed. There can be no more changes to it.") . " #$id");
78         safe_exit();
79 }
80
81 //---------------------------------------------------------------------------------------
82
83 if (isset($_GET['ReopenedID'])) 
84 {
85         $id = $_GET['ReopenedID'];
86
87         display_notification_centered(_("The dimension has been re-opened. ") . " #$id");
88         safe_exit();
89 }
90
91 //-------------------------------------------------------------------------------------------------
92
93 function safe_exit()
94 {
95         global $path_to_root, $id;
96
97         hyperlink_no_params("", _("Enter a &new dimension"));
98         hyperlink_no_params($path_to_root . "/dimensions/inquiry/search_dimensions.php", _("&Select an existing dimension"));
99     hyperlink_no_params($path_to_root . "/admin/attachments.php?filterType=40&trans_no=$id", _("&Add Attachment"));
100
101         display_footer_exit();
102 }
103
104 //-------------------------------------------------------------------------------------
105
106 function can_process()
107 {
108         global $selected_id, $Refs;
109
110         if ($selected_id == -1) 
111         {
112         if (!check_reference($_POST['ref'], ST_DIMENSION))
113         {
114                         set_focus('ref');
115                 return false;
116         }
117         }
118
119         if (strlen($_POST['name']) == 0) 
120         {
121                 display_error( _("The dimension name must be entered."));
122                 set_focus('name');
123                 return false;
124         }
125
126         if (!is_date($_POST['date_']))
127         {
128                 display_error( _("The date entered is in an invalid format."));
129                 set_focus('date_');
130                 return false;
131         }
132
133         if (!is_date($_POST['due_date']))
134         {
135                 display_error( _("The required by date entered is in an invalid format."));
136                 set_focus('due_date');
137                 return false;
138         }
139
140         return true;
141 }
142
143 //-------------------------------------------------------------------------------------
144
145 if (isset($_POST['ADD_ITEM']) || isset($_POST['UPDATE_ITEM'])) 
146 {
147         if (!isset($_POST['dimension_tags']))
148                 $_POST['dimension_tags'] = array();
149                 
150         if (can_process()) 
151         {
152
153                 if ($selected_id == -1) 
154                 {
155                         $id = add_dimension($_POST['ref'], $_POST['name'], $_POST['type_'], $_POST['date_'], $_POST['due_date'], $_POST['memo_']);
156                         add_tag_associations($id, $_POST['dimension_tags']);
157                         meta_forward($_SERVER['PHP_SELF'], "AddedID=$id");
158                 } 
159                 else 
160                 {
161
162                         update_dimension($selected_id, $_POST['name'], $_POST['type_'], $_POST['date_'], $_POST['due_date'], $_POST['memo_']);
163                         update_tag_associations(TAG_DIMENSION, $selected_id, $_POST['dimension_tags']);
164
165                         meta_forward($_SERVER['PHP_SELF'], "UpdatedID=$selected_id");
166                 }
167         }
168 }
169
170 //--------------------------------------------------------------------------------------
171
172 if (isset($_POST['delete'])) 
173 {
174
175         $cancel_delete = false;
176
177         // can't delete it there are productions or issues
178         if (dimension_has_payments($selected_id) || dimension_has_deposits($selected_id))
179         {
180                 display_error(_("This dimension cannot be deleted because it has already been processed."));
181                 set_focus('ref');
182                 $cancel_delete = true;
183         }
184
185         if ($cancel_delete == false) 
186         { //ie not cancelled the delete as a result of above tests
187
188                 // delete
189                 delete_dimension($selected_id);
190                 delete_tag_associations(TAG_DIMENSION,$selected_id, true);
191                 meta_forward($_SERVER['PHP_SELF'], "DeletedID=$selected_id");
192         }
193 }
194
195 //-------------------------------------------------------------------------------------
196
197 if (isset($_POST['close'])) 
198 {
199
200         // update the closed flag
201         close_dimension($selected_id);
202         meta_forward($_SERVER['PHP_SELF'], "ClosedID=$selected_id");
203 }
204
205 if (isset($_POST['reopen'])) 
206 {
207
208         // update the closed flag
209         reopen_dimension($selected_id);
210         meta_forward($_SERVER['PHP_SELF'], "ReopenedID=$selected_id");
211 }
212 //-------------------------------------------------------------------------------------
213
214 start_form();
215
216 start_table(TABLESTYLE2);
217
218 if ($selected_id != -1)
219 {
220         $myrow = get_dimension($selected_id, true);
221
222         if ($myrow === false) 
223         {
224                 display_error(_("The dimension sent is not valid."));
225                 display_footer_exit();
226         }
227
228         // if it's a closed dimension can't edit it
229         //if ($myrow["closed"] == 1) 
230         //{
231         //      display_error(_("This dimension is closed and cannot be edited."));
232         //      display_footer_exit();
233         //}
234
235         $_POST['ref'] = $myrow["reference"];
236         $_POST['closed'] = $myrow["closed"];
237         $_POST['name'] = $myrow["name"];
238         $_POST['type_'] = $myrow["type_"];
239         $_POST['date_'] = sql2date($myrow["date_"]);
240         $_POST['due_date'] = sql2date($myrow["due_date"]);
241         $_POST['memo_'] = get_comments_string(ST_DIMENSION, $selected_id);
242         
243         $tags_result = get_tags_associated_with_record(TAG_DIMENSION, $selected_id);
244         $tagids = array();
245         while ($tag = db_fetch($tags_result)) 
246                 $tagids[] = $tag['id'];
247         $_POST['dimension_tags'] = $tagids;     
248
249         hidden('ref', $_POST['ref']);
250
251         label_row(_("Dimension Reference:"), $_POST['ref']);
252
253         hidden('selected_id', $selected_id);
254
255 else 
256 {
257         $_POST['dimension_tags'] = array();
258         ref_row(_("Dimension Reference:"), 'ref', '', $Refs->get_next(ST_DIMENSION), false, ST_DIMENSION);
259 }
260
261 text_row_ex(_("Name") . ":", 'name', 50, 75);
262
263 $dim = get_company_pref('use_dimension');
264
265 number_list_row(_("Type"), 'type_', null, 1, $dim);
266
267 date_row(_("Start Date") . ":", 'date_');
268
269 date_row(_("Date Required By") . ":", 'due_date', '', null, $SysPrefs->default_dimension_required_by());
270
271 tag_list_row(_("Tags:"), 'dimension_tags', 5, TAG_DIMENSION, true);
272
273 textarea_row(_("Memo:"), 'memo_', null, 40, 5);
274
275 end_table(1);
276
277 if (isset($_POST['closed']) && $_POST['closed'] == 1)
278         display_note(_("This Dimension is closed."), 0, 0, "class='currentfg'");
279
280 if ($selected_id != -1) 
281 {
282         echo "<br>";
283         submit_center_first('UPDATE_ITEM', _("Update"), _('Save changes to dimension'), 'default');
284         if ($_POST['closed'] == 1)
285                 submit('reopen', _("Re-open This Dimension"), true, _('Mark this dimension as re-opened'), true);
286         else    
287                 submit('close', _("Close This Dimension"), true, _('Mark this dimension as closed'), true);
288         submit_center_last('delete', _("Delete This Dimension"), _('Delete unused dimension'), true);
289 }
290 else
291 {
292         submit_center('ADD_ITEM', _("Add"), true, '', 'default');
293 }
294 end_form();
295
296 //--------------------------------------------------------------------------------------------
297
298 end_page();
299