"; display_notification_centered(_("Credit Note has been processed")); display_note(get_customer_trans_view_str($trans_type, $credit_no, _("View this credit note")), 0, 0); display_note(get_gl_view_str($trans_type, $credit_no, _("View the GL Journal Entries for this Credit Note"))); display_footer_exit(); } //-------------------------------------------------------------------------------------- if (!isset($_GET['InvoiceNumber']) && !$_SESSION['InvoiceToCredit']) { /* This page can only be called with an invoice number for crediting*/ die (_("This page can only be opened if an invoice has been selected for crediting.")); } //-------------------------------------------------------------------------------------- function can_process() { if (!is_date($_POST['CreditDate'])) { display_error(_("The entered date is invalid."));; return false; } elseif (!is_date_in_fiscalyear($_POST['CreditDate'])) { display_error(_("The entered date is not in fiscal year.")); return false; } if (!references::is_valid($_POST['ref'])) { display_error(_("You must enter a reference."));; return false; } if (!is_new_reference($_POST['ref'], 11)) { display_error(_("The entered reference is already in use."));; return false; } if (!is_numeric($_POST['ChargeFreightCost']) || $_POST['ChargeFreightCost'] < 0) { display_error(_("The entered shipping cost is invalid or less than zero."));; return false; } return true; } //-------------------------------------------------------------------------------------- function clear_globals() { if (isset($_SESSION['Items'])) { unset($_SESSION['Items']->line_items); unset($_SESSION['Items']); } unset($_SESSION['InvoiceToCredit']); } //-------------------------------------------------------------------------------------- function process_credit() { global $path_to_root; if (can_process()) { $credit_no = credit_invoice($_SESSION['Items'], $_SESSION['InvoiceToCredit'], $_SESSION['Order'], $_POST['CreditDate'], $_POST['CreditType'], $_POST['tax_group_id'], $_POST['ChargeFreightCost'], $_POST['ref'], $_POST['CreditText'], $_POST['WriteOffGLCode']); clear_globals(); meta_forward($_SERVER['PHP_SELF'], "AddedID=$credit_no"); } } //-------------------------------------------------------------------------------------- if (isset($_GET['InvoiceNumber']) && $_GET['InvoiceNumber'] > 0) { clear_globals(); $_SESSION['InvoiceToCredit'] = $_GET['InvoiceNumber']; $_SESSION['Items'] = new cart; /*read in all the guff from the selected invoice into the Items cart */ // we need a distinct here so that it only returns 1 line - because there can be multiple moves // per item (for assemblies, etc) $sql = "SELECT DISTINCT ".TB_PREF."debtor_trans.*, ".TB_PREF."cust_branch.default_location, ".TB_PREF."cust_branch.default_ship_via, ".TB_PREF."debtors_master.name, ".TB_PREF."debtors_master.curr_code, ".TB_PREF."tax_groups.name AS tax_group_name, ".TB_PREF."tax_groups.id AS tax_group_id, ".TB_PREF."sales_orders.from_stk_loc FROM ".TB_PREF."debtor_trans, ".TB_PREF."debtors_master, ".TB_PREF."cust_branch, ".TB_PREF."tax_groups, ".TB_PREF."sales_orders WHERE ".TB_PREF."debtor_trans.debtor_no = ".TB_PREF."debtors_master.debtor_no AND ".TB_PREF."debtor_trans.branch_code = ".TB_PREF."cust_branch.branch_code AND ".TB_PREF."debtor_trans.debtor_no = ".TB_PREF."cust_branch.debtor_no AND ".TB_PREF."cust_branch.tax_group_id = ".TB_PREF."tax_groups.id AND ".TB_PREF."debtor_trans.trans_no = " . $_GET['InvoiceNumber'] . " AND ".TB_PREF."debtor_trans.type=10 AND ".TB_PREF."sales_orders.order_no=".TB_PREF."debtor_trans.order_"; $result = db_query($sql,"The invoice details cannot be retrieved"); if (db_num_rows($result) == 1) { $myrow = db_fetch($result); $_SESSION['Items']->customer_id = $myrow["debtor_no"]; $_SESSION['Items']->customer_name = $myrow["name"]; $_SESSION['Items']->cust_ref = $myrow["reference"]; $_SESSION['Items']->Branch = $myrow["branch_code"]; $_SESSION['Items']->customer_currency = $myrow["curr_code"]; $_SESSION['Items']->Comments = ""; $_SESSION['Items']->default_sales_type =$myrow["tpe"]; $_SESSION['Items']->Location = $myrow["from_stk_loc"]; $_SESSION['Items']->tax_group_name = $myrow["tax_group_name"]; $_SESSION['Items']->tax_group_id = $myrow["tax_group_id"]; $_SESSION['Items']->delivery_date = sql2date($myrow["tran_date"]); $_SESSION['Items']->freight_cost = $myrow["ov_freight"]; $_SESSION['Items']->ship_via = $myrow["default_ship_via"]; $_SESSION['Order'] = $myrow["order_"]; db_free_result($result); /*now populate the line items array with the detail records for the invoice*/ $result = get_customer_trans_details(10, $_GET['InvoiceNumber']); if (db_num_rows($result) > 0) { while ($myrow = db_fetch($result)) { $_SESSION['Items']->add_to_cart($myrow["stock_id"],-$myrow["quantity"], $myrow["FullUnitPrice"],$myrow["discount_percent"],$myrow["qty_done"], $myrow["standard_cost"],$myrow["description"],$myrow["id"]); $_SESSION['Items']->line_items[$_SESSION['Items']->lines_on_order]->standard_cost = $myrow["standard_cost"]; } } /*else { // there are no item records created for that invoice // it's ok there might be shipping or only taxes !! echo "
" . _("There are no line items that were retrieved for this invoice. A credit note cannot be created from this invoice."). "
";
end_page();
exit;
}*/ //end of checks on returned data set
db_free_result($result);
}
else
{
display_error(_("This invoice can not be credited using the automatic facility."));
display_error("Please report that a duplicate debtor_trans header record was found for invoice " . $SESSION['InvoiceToCredit']);
echo "
";
exit;
} //valid invoice record returned from the entered invoice number
}
else
{
/* if processing, the page has been called and ${$StkItm->stock_id} would have been set from the post */
foreach ($_SESSION['Items']->line_items as $itm)
{
$_SESSION['Items']->line_items[$itm->line_no]->qty_dispatched = $_POST[$itm->stock_id];
if (isset($_POST[$itm->stock_id . "Desc"]) && strlen($_POST[$itm->stock_id . "Desc"]) > 0)
{
$_SESSION['Items']->line_items[$itm->line_no]->item_description = $_POST[$itm->stock_id . "Desc"];
}
}
}
//--------------------------------------------------------------------------------------
if (isset($_POST['ProcessCredit']))
{
process_credit();
}
//--------------------------------------------------------------------------------------
if (isset($_POST['Location']))
{
$_SESSION['Items']->Location = $_POST['Location'];
}
//--------------------------------------------------------------------------------------
function display_credit_items()
{
global $table_style, $table_style2;
start_form(false, true);
start_table("$table_style2 width=80%", 5);
echo "