5 include_once($path_to_root . "/purchasing/includes/supp_trans_class.inc");
9 include_once($path_to_root . "/includes/session.inc");
11 include_once($path_to_root . "/includes/data_checks.inc");
13 include_once($path_to_root . "/purchasing/includes/purchasing_db.inc");
14 include_once($path_to_root . "/purchasing/includes/purchasing_ui.inc");
16 if ($use_popup_windows)
17 $js .= get_js_open_window(900, 500);
19 $js .= get_js_date_picker();
20 page(_("Supplier Credit Note"), false, false, "", $js);
22 //----------------------------------------------------------------------------------------
24 check_db_has_suppliers(_("There are no suppliers defined in the system."));
26 //---------------------------------------------------------------------------------------------------------------
27 if ($ret = context_restore()) {
28 // return from supplier editor
29 copy_from_trans($_SESSION['supp_trans']);
30 if(isset($ret['supplier_id']))
31 $_POST['supplier_id'] = $ret['supplier_id'];
33 if (isset($_POST['_supplier_id_editor'])) {
34 copy_to_trans($_SESSION['supp_trans']);
35 context_call($path_to_root.'/purchasing/manage/suppliers.php?supplier_id='.$_POST['supplier_id'], 'supp_trans');
38 //---------------------------------------------------------------------------------------------------------------
40 if (isset($_GET['AddedID']))
42 $invoice_no = $_GET['AddedID'];
47 display_notification_centered(_("Supplier credit note has been processed."));
48 display_note(get_trans_view_str($trans_type, $invoice_no, _("View this Credit Note")));
50 display_note(get_gl_view_str($trans_type, $invoice_no, _("View the GL Journal Entries for this Credit Note")), 1);
52 hyperlink_params($_SERVER['PHP_SELF'], _("Enter Another Credit Note"), "New=1");
53 hyperlink_params("$path_to_root/admin/attachments.php", _("Add an Attachment"), "filterType=$trans_type&trans_no=$invoice_no");
55 display_footer_exit();
58 //---------------------------------------------------------------------------------------------------
60 if (isset($_GET['New']))
62 if (isset( $_SESSION['supp_trans']))
64 unset ($_SESSION['supp_trans']->grn_items);
65 unset ($_SESSION['supp_trans']->gl_codes);
66 unset ($_SESSION['supp_trans']);
69 $_SESSION['supp_trans'] = new supp_trans;
70 $_SESSION['supp_trans']->is_invoice = false;
73 function clear_fields()
77 unset($_POST['gl_code']);
78 unset($_POST['dimension_id']);
79 unset($_POST['dimension2_id']);
80 unset($_POST['amount']);
81 unset($_POST['memo_']);
82 unset($_POST['AddGLCodeToTrans']);
83 $Ajax->activate('gl_ctrls');
86 //------------------------------------------------------------------------------------------------
87 // GL postings are often entered in the same form to two accounts
88 // so fileds are cleared only on user demand.
90 if (isset($_POST['ClearFields']))
95 if (isset($_POST['AddGLCodeToTrans'])){
97 $Ajax->activate('gl_items');
100 $sql = "SELECT account_code, account_name FROM ".TB_PREF."chart_master WHERE account_code='" . $_POST['gl_code'] . "'";
101 $result = db_query($sql,"get account information");
102 if (db_num_rows($result) == 0)
104 display_error(_("The account code entered is not a valid code, this line cannot be added to the transaction."));
105 set_focus('gl_code');
110 $myrow = db_fetch_row($result);
111 $gl_act_name = $myrow[1];
112 if (!check_num('amount'))
114 display_error(_("The amount entered is not numeric. This line cannot be added to the transaction."));
120 if ($input_error == false)
122 $_SESSION['supp_trans']->add_gl_codes_to_trans($_POST['gl_code'], $gl_act_name,
123 $_POST['dimension_id'], $_POST['dimension2_id'],
124 input_num('amount'), $_POST['memo_']);
125 set_focus('gl_code');
130 //---------------------------------------------------------------------------------------------------
132 function check_data()
134 global $total_grn_value, $total_gl_value;
136 if (!$_SESSION['supp_trans']->is_valid_trans_to_post())
138 display_error(_("The credit note cannot be processed because the there are no items or values on the invoice. Credit notes are expected to have a charge."));
143 if (!references::is_valid($_SESSION['supp_trans']->reference))
145 display_error(_("You must enter an credit note reference."));
146 set_focus('reference');
150 if (!is_new_reference($_SESSION['supp_trans']->reference, 21))
152 display_error(_("The entered reference is already in use."));
153 set_focus('reference');
157 if (!references::is_valid($_SESSION['supp_trans']->supp_reference))
159 display_error(_("You must enter a supplier's credit note reference."));
160 set_focus('supp_reference');
164 if (!is_date($_SESSION['supp_trans']->tran_date))
166 display_error(_("The credit note as entered cannot be processed because the date entered is not valid."));
167 set_focus('tran_date');
170 elseif (!is_date_in_fiscalyear($_SESSION['supp_trans']->tran_date))
172 display_error(_("The entered date is not in fiscal year."));
173 set_focus('tran_date');
176 if (!is_date( $_SESSION['supp_trans']->due_date))
178 display_error(_("The invoice as entered cannot be processed because the due date is in an incorrect format."));
179 set_focus('due_date');
183 if ($_SESSION['supp_trans']->ov_amount < ($total_gl_value + $total_grn_value))
185 display_error(_("The credit note total as entered is less than the sum of the the general ledger entires (if any) and the charges for goods received. There must be a mistake somewhere, the credit note as entered will not be processed."));
192 //---------------------------------------------------------------------------------------------------
194 function handle_commit_credit_note()
196 copy_to_trans($_SESSION['supp_trans']);
201 $invoice_no = add_supp_invoice($_SESSION['supp_trans']);
203 $_SESSION['supp_trans']->clear_items();
204 unset($_SESSION['supp_trans']);
206 meta_forward($_SERVER['PHP_SELF'], "AddedID=$invoice_no");
209 //--------------------------------------------------------------------------------------------------
211 if (isset($_POST['PostCreditNote']))
213 handle_commit_credit_note();
216 function check_item_data($n)
218 if (!check_num('This_QuantityCredited'.$n, 0))
220 display_error(_("The quantity to credit must be numeric and greater than zero."));
221 set_focus('This_QuantityCredited'.$n);
225 if (!check_num('ChgPrice'.$n, 0))
227 display_error(_("The price is either not numeric or negative."));
228 set_focus('ChgPrice'.$n);
235 //-----------------------------------------------------------------------------------------
237 $id = find_submit('grn_item_id');
240 if (check_item_data($id))
244 //$_SESSION['supp_trans']->add_grn_to_trans($_POST['GRNNumber'],
245 // $_POST['po_detail_item'], $_POST['item_code'],
246 // $_POST['item_description'], $_POST['qty_recd'],
247 // $_POST['prev_quantity_inv'], $_POST['This_QuantityCredited'],
248 // $_POST['order_price'], $_POST['ChgPrice'], $complete,
249 // $_POST['std_cost_unit'], $_POST['gl_code']);
250 $_SESSION['supp_trans']->add_grn_to_trans($id,
251 $_POST['po_detail_item'.$id], $_POST['item_code'.$id],
252 $_POST['item_description'.$id], $_POST['qty_recd'.$id],
253 $_POST['prev_quantity_inv'.$id], input_num('This_QuantityCredited'.$id),
254 $_POST['order_price'.$id], input_num('ChgPrice'.$id), $complete,
255 $_POST['std_cost_unit'.$id], "");
259 //--------------------------------------------------------------------------------------------------
260 $id = find_submit('Delete');
263 $_SESSION['supp_trans']->remove_grn_from_trans($id);
264 $Ajax->activate('grn_items');
265 $Ajax->activate('grn_table');
266 $Ajax->activate('inv_tot');
269 $id = find_submit('Delete2');
272 $_SESSION['supp_trans']->remove_gl_codes_from_trans($id);
274 $Ajax->activate('gl_items');
275 $Ajax->activate('inv_tot');
279 //--------------------------------------------------------------------------------------------------
281 start_form(false, true);
283 start_table("$table_style width=98%", 8);
284 echo "<tr><td valign=center>"; // outer table
288 invoice_header($_SESSION['supp_trans']);
289 if ($_POST['supplier_id']=='')
290 display_error('No supplier found for entered search text');
292 echo "</td></tr><tr><td valign=center>"; // outer table
294 $total_grn_value = display_grn_items($_SESSION['supp_trans'], 1);
296 $total_gl_value = display_gl_items($_SESSION['supp_trans'], 1);
298 echo "</td></tr><tr><td align=center colspan=2>"; // outer table
299 div_start('inv_tot');
300 invoice_totals($_SESSION['supp_trans']);
305 end_table(1); // outer table
307 $id = find_submit('grn_item_id');
310 $Ajax->activate('grn_table');
311 $Ajax->activate('grn_items');
312 $Ajax->activate('inv_tot');
315 if (get_post('AddGLCodeToTrans'))
316 $Ajax->activate('inv_tot');
319 submit_center('PostCreditNote', _("Enter Credit Note"), true, '', true);