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