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 ***********************************************************************/
14 include($path_to_root . "/includes/session.inc");
16 page(_("Payment Terms"));
18 include($path_to_root . "/includes/ui.inc");
20 simple_page_mode(true);
21 //-------------------------------------------------------------------------------------------
23 if ($Mode=='ADD_ITEM' || $Mode=='UPDATE_ITEM')
28 if (!is_numeric($_POST['DayNumber']))
31 display_error( _("The number of days or the day in the following month must be numeric."));
32 set_focus('DayNumber');
34 elseif (strlen($_POST['terms']) == 0)
37 display_error( _("The Terms description must be entered."));
40 elseif ($_POST['DayNumber'] > 30 && !check_value('DaysOrFoll'))
43 display_error( _("When the check box to indicate a day in the following month is the due date, the due date cannot be a day after the 30th. A number between 1 and 30 is expected."));
44 set_focus('DayNumber');
46 elseif ($_POST['DayNumber'] > 500 && check_value('DaysOrFoll'))
49 display_error( _("When the check box is not checked to indicate that the term expects a number of days after which accounts are due, the number entered should be less than 500 days."));
50 set_focus('DayNumber');
53 if ($_POST['DayNumber'] == '')
54 $_POST['DayNumber'] = 0;
56 if ($inpug_error != 1)
58 if ($selected_id != -1)
60 if (check_value('DaysOrFoll'))
62 $sql = "UPDATE ".TB_PREF."payment_terms SET terms=" . db_escape($_POST['terms']) . ",
63 day_in_following_month=0,
64 days_before_due=" . db_escape($_POST['DayNumber']) . "
65 WHERE terms_indicator = " .db_escape($selected_id);
69 $sql = "UPDATE ".TB_PREF."payment_terms SET terms=" . db_escape($_POST['terms']) . ",
70 day_in_following_month=" . db_escape($_POST['DayNumber']) . ",
72 WHERE terms_indicator = " .db_escape( $selected_id );
74 $note = _('Selected payment terms have been updated');
79 if (check_value('DaysOrFoll'))
81 $sql = "INSERT INTO ".TB_PREF."payment_terms (terms,
82 days_before_due, day_in_following_month)
84 db_escape($_POST['terms']) . ", " . db_escape($_POST['DayNumber']) . ", 0)";
88 $sql = "INSERT INTO ".TB_PREF."payment_terms (terms,
89 days_before_due, day_in_following_month)
90 VALUES (" . db_escape($_POST['terms']) . ",
91 0, " . db_escape($_POST['DayNumber']) . ")";
93 $note = _('New payment terms have been added');
95 //run the sql from either of the above possibilites
96 db_query($sql,"The payment term could not be added or updated");
97 display_notification($note);
102 if ($Mode == 'Delete')
104 // PREVENT DELETES IF DEPENDENT RECORDS IN debtors_master
106 $sql= "SELECT COUNT(*) FROM ".TB_PREF."debtors_master WHERE payment_terms = '$selected_id'";
107 $result = db_query($sql,"check failed");
108 $myrow = db_fetch_row($result);
111 display_error(_("Cannot delete this payment term, because customer accounts have been created referring to this term."));
115 $sql= "SELECT COUNT(*) FROM ".TB_PREF."suppliers WHERE payment_terms = '$selected_id'";
116 $result = db_query($sql,"check failed");
117 $myrow = db_fetch_row($result);
120 display_error(_("Cannot delete this payment term, because supplier accounts have been created referring to this term"));
124 //only delete if used in neither customer or supplier accounts
126 $sql="DELETE FROM ".TB_PREF."payment_terms WHERE terms_indicator='$selected_id'";
127 db_query($sql,"could not delete a payment terms");
128 display_notification(_('Selected payment terms have been deleted'));
131 //end if payment terms used in customer or supplier accounts
135 if ($Mode == 'RESET')
140 //-------------------------------------------------------------------------------------------------
142 $sql = "SELECT * FROM ".TB_PREF."payment_terms";
143 $result = db_query($sql,"could not get payment terms");
145 start_table($table_style);
146 $th = array(_("Description"), _("Following Month On"), _("Due After (Days)"), "", "");
149 $k = 0; //row colour counter
150 while ($myrow = db_fetch($result))
152 if ($myrow["day_in_following_month"] == 0)
154 $full_text = _("N/A");
158 $full_text = $myrow["day_in_following_month"];
161 if ($myrow["days_before_due"] == 0)
163 $after_text = _("N/A");
167 $after_text = $myrow["days_before_due"] . " " . _("days");
170 alt_table_row_color($k);
172 label_cell($myrow["terms"]);
173 label_cell($full_text);
174 label_cell($after_text);
175 edit_button_cell("Edit".$myrow["terms_indicator"], _("Edit"));
176 delete_button_cell("Delete".$myrow["terms_indicator"], _("Delete"));
180 } //END WHILE LIST LOOP
186 //-------------------------------------------------------------------------------------------------
190 start_table($table_style2);
192 $day_in_following_month = $days_before_due = 0;
193 if ($selected_id != -1)
195 if ($Mode == 'Edit') {
196 //editing an existing payment terms
197 $sql = "SELECT * FROM ".TB_PREF."payment_terms
198 WHERE terms_indicator='$selected_id'";
200 $result = db_query($sql,"could not get payment term");
201 $myrow = db_fetch($result);
203 $_POST['terms'] = $myrow["terms"];
204 $days_before_due = $myrow["days_before_due"];
205 $day_in_following_month = $myrow["day_in_following_month"];
207 hidden('selected_id', $selected_id);
209 text_row(_("Terms Description:"), 'terms', null, 40, 40);
211 check_row(_("Due After A Given No. Of Days:"), 'DaysOrFoll', $day_in_following_month == 0);
213 if (!isset($_POST['DayNumber']))
215 if ($days_before_due != 0)
216 $_POST['DayNumber'] = $days_before_due;
218 $_POST['DayNumber'] = $day_in_following_month;
221 text_row_ex(_("Days (Or Day In Following Month):"), 'DayNumber', 3);
225 submit_add_or_update_center($selected_id == -1, '', true);