fixup commit for tag 'unstable_2_0_5'
[fa-stable.git] / admin / payment_terms.php
1 <?php
2
3 $page_security = 10;
4 $path_to_root="..";
5 include($path_to_root . "/includes/session.inc");
6
7 page(_("Payment Terms"));
8
9 include($path_to_root . "/includes/ui.inc");
10
11 simple_page_mode(true);
12 //-------------------------------------------------------------------------------------------
13
14 if ($Mode=='ADD_ITEM' || $Mode=='UPDATE_ITEM') 
15 {
16
17         $inpug_error = 0;
18
19         if (!is_numeric($_POST['DayNumber']))
20         {
21                 $inpug_error = 1;
22                 display_error( _("The number of days or the day in the following month must be numeric."));
23                 set_focus('DayNumber');
24         } 
25         elseif (strlen($_POST['terms']) == 0) 
26         {
27                 $inpug_error = 1;
28                 display_error( _("The Terms description must be entered."));
29                 set_focus('terms');
30         } 
31         elseif ($_POST['DayNumber'] > 30 && !check_value('DaysOrFoll')) 
32         {
33                 $inpug_error = 1;
34                 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."));
35                 set_focus('DayNumber');
36         } 
37         elseif ($_POST['DayNumber'] > 500 && check_value('DaysOrFoll')) 
38         {
39                 $inpug_error = 1;
40                 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."));
41                 set_focus('DayNumber');
42         }
43
44         if ($_POST['DayNumber'] == '')
45                 $_POST['DayNumber'] = 0;
46
47         if ($inpug_error != 1)
48         {
49         if ($selected_id != -1) 
50         {
51                 if (check_value('DaysOrFoll')) 
52                 {
53                         $sql = "UPDATE ".TB_PREF."payment_terms SET terms=" . db_escape($_POST['terms']) . ",
54                                         day_in_following_month=0,
55                                         days_before_due=" . db_escape($_POST['DayNumber']) . "
56                                         WHERE terms_indicator = " .db_escape($selected_id);
57                 } 
58                 else 
59                 {
60                         $sql = "UPDATE ".TB_PREF."payment_terms SET terms=" . db_escape($_POST['terms']) . ",
61                                         day_in_following_month=" . db_escape($_POST['DayNumber']) . ",
62                                         days_before_due=0
63                                         WHERE terms_indicator = " .db_escape( $selected_id );
64                 }
65                         $note = _('Selected payment terms have been updated');
66         } 
67         else 
68         {
69
70                 if (check_value('DaysOrFoll')) 
71                 {
72                         $sql = "INSERT INTO ".TB_PREF."payment_terms (terms,
73                                         days_before_due, day_in_following_month)
74                                         VALUES (" .
75                                         db_escape($_POST['terms']) . ", " . db_escape($_POST['DayNumber']) . ", 0)";
76                 } 
77                 else 
78                 {
79                         $sql = "INSERT INTO ".TB_PREF."payment_terms (terms,
80                                         days_before_due, day_in_following_month)
81                                         VALUES (" . db_escape($_POST['terms']) . ",
82                                         0, " . db_escape($_POST['DayNumber']) . ")";
83                 }
84                         $note = _('New payment terms have been added');
85         }
86         //run the sql from either of the above possibilites
87         db_query($sql,"The payment term could not be added or updated");
88                 display_notification($note);
89                 $Mode = 'RESET';
90         }
91 }
92
93 if ($Mode == 'Delete')
94 {
95         // PREVENT DELETES IF DEPENDENT RECORDS IN debtors_master
96
97         $sql= "SELECT COUNT(*) FROM ".TB_PREF."debtors_master WHERE payment_terms = '$selected_id'";
98         $result = db_query($sql,"check failed");
99         $myrow = db_fetch_row($result);
100         if ($myrow[0] > 0) 
101         {
102                 display_error(_("Cannot delete this payment term, because customer accounts have been created referring to this term."));
103         } 
104         else 
105         {
106                 $sql= "SELECT COUNT(*) FROM ".TB_PREF."suppliers WHERE payment_terms = '$selected_id'";
107                 $result = db_query($sql,"check failed");
108                 $myrow = db_fetch_row($result);
109                 if ($myrow[0] > 0) 
110                 {
111                         display_error(_("Cannot delete this payment term, because supplier accounts have been created referring to this term"));
112                 } 
113                 else 
114                 {
115                         //only delete if used in neither customer or supplier accounts
116
117                         $sql="DELETE FROM ".TB_PREF."payment_terms WHERE terms_indicator='$selected_id'";
118                         db_query($sql,"could not delete a payment terms");
119                         display_notification(_('Selected payment terms have been deleted'));
120                 }
121         }
122         //end if payment terms used in customer or supplier accounts
123         $Mode = 'RESET';
124 }
125
126 if ($Mode == 'RESET')
127 {
128         $selected_id = -1;
129         unset($_POST);
130 }
131 //-------------------------------------------------------------------------------------------------
132
133 $sql = "SELECT * FROM ".TB_PREF."payment_terms";
134 $result = db_query($sql,"could not get payment terms");
135 start_form();
136 start_table($table_style);
137 $th = array(_("Description"), _("Following Month On"), _("Due After (Days)"), "", "");
138 table_header($th);
139
140 $k = 0; //row colour counter
141 while ($myrow = db_fetch($result)) 
142 {
143         if ($myrow["day_in_following_month"] == 0) 
144         {
145                 $full_text = _("N/A");
146         } 
147         else 
148         {
149                 $full_text = $myrow["day_in_following_month"];
150         }
151
152         if ($myrow["days_before_due"] == 0) 
153         {
154                 $after_text = _("N/A");
155         } 
156         else 
157         {
158                 $after_text = $myrow["days_before_due"] . " " . _("days");
159         }
160
161         alt_table_row_color($k);
162
163     label_cell($myrow["terms"]);
164     label_cell($full_text);
165     label_cell($after_text);
166         edit_button_cell("Edit".$myrow["terms_indicator"], _("Edit"));
167         edit_button_cell("Delete".$myrow["terms_indicator"], _("Delete"));
168     end_row();
169
170
171 } //END WHILE LIST LOOP
172
173 end_table();
174 end_form();
175 echo '<br>';
176
177 //-------------------------------------------------------------------------------------------------
178
179 start_form();
180
181 start_table($table_style2);
182
183 $day_in_following_month = $days_before_due = 0;
184 if ($selected_id != -1) 
185 {
186         if ($Mode == 'Edit') {
187                 //editing an existing payment terms
188                 $sql = "SELECT * FROM ".TB_PREF."payment_terms
189                         WHERE terms_indicator='$selected_id'";
190
191                 $result = db_query($sql,"could not get payment term");
192                 $myrow = db_fetch($result);
193
194                 $_POST['terms']  = $myrow["terms"];
195                 $days_before_due  = $myrow["days_before_due"];
196                 $day_in_following_month  = $myrow["day_in_following_month"];
197         }
198         hidden('selected_id', $selected_id);
199 }
200 text_row(_("Terms Description:"), 'terms', null, 40, 40);
201
202 check_row(_("Due After A Given No. Of Days:"), 'DaysOrFoll', $day_in_following_month == 0);
203
204 if (!isset($_POST['DayNumber'])) 
205 {
206     if ($days_before_due != 0)
207         $_POST['DayNumber'] = $days_before_due;
208     else
209         $_POST['DayNumber'] = $day_in_following_month;
210 }
211
212 text_row_ex(_("Days (Or Day In Following Month):"), 'DayNumber', 3);
213
214 end_table(1);
215
216 submit_add_or_update_center($selected_id == -1, '', true);
217
218 end_form();
219
220 end_page();
221
222 ?>