//ST_INVADJUST => ,
ST_PURCHORDER => "/purchasing/po_entry_items.php?ModifyOrderNumber=%d",
- //ST_SUPPINVOICE => ,
+ ST_SUPPINVOICE => "/purchasing/supplier_invoice.php?ModifyInvoice=%d",
+
//ST_SUPPCREDIT => ,
//ST_SUPPAYMENT => ,
//ST_SUPPRECEIVE => ,
$result = db_query($sql, "The deliveries could not be updated");
$row = db_fetch_row($result);
- display_notification('Row0 - '.$row[0].' Row1- '.$row[1]);
+// display_notification('Row0 - '.$row[0].' Row1- '.$row[1]);
//return $row;
// Get Std cost of previsous transaction before the cut-over delivery
// This is useful to get inventory valuation
$prev_trans = $from - 1;
- display_notification('From - '.$from.' Prev- '.$prev_trans);
+// display_notification('From - '.$from.' Prev- '.$prev_trans);
$sql = "SELECT standard_cost FROM ".TB_PREF."stock_moves
WHERE stock_id=".db_escape($stock_id)." AND
trans_id ='$prev_trans'";
$result = db_query($sql, "The deliveries could not be updated");
$cost = db_fetch_row($result);
- display_notification('Last Delivery Cost - '.$cost[0]);
+// display_notification('Last Delivery Cost - '.$cost[0]);
// Adjusting QOH valuation
$sql = "SELECT SUM(qty) FROM ".TB_PREF."stock_moves
$result = db_query($sql, "The deliveries could not be updated");
$qoh = db_fetch_row($result);
- display_notification('QOH before last delivery - '.$qoh[0]);
+// display_notification('QOH before last delivery - '.$qoh[0]);
$qty = $row[0] - $qoh[0]; //Qoh is minus from delivered in -ve
$final_cost = $row[1] - $qoh[0]*$cost[0];
- display_notification('Qty - '.$qty.' cost- '.$final_cost);
+// display_notification('Qty - '.$qty.' cost- '.$final_cost);
return array($qty,$final_cost);
}
$result = db_query($sql, "The deliveries could not be updated");
$row = db_fetch_row($result);
- display_notification('Purchase Qty - '.$row[0].' Cost- '.$row[1]);
+// display_notification('Purchase Qty - '.$row[0].' Cost- '.$row[1]);
return $row;
}
}
//----------------------------------------------------------------------------
-
-function is_new_reference($ref, $type)
+//
+// Check if reference was not used so far (for other transaction than $trans_no)
+//
+function is_new_reference($ref, $type, $trans_no=0)
{
$db_info = get_systype_db_info($type);
$db_name = $db_info[0];
WHERE $db_ref=$ref AND ISNULL(v.id)";
}
+ if ($trans_no)
+ {
+ $sql .= " AND $db_name.$db_trans != ".db_escape($trans_no);
+ }
$result = db_query($sql, "could not test for unique reference");
return (db_num_rows($result) == 0);
add_or_update_purchase_data($po->supplier_id, $order_line->stock_id, $order_line->price,
$order_line->item_description);
- /*Need to insert a grn item */
-
+ /*Need to insert a grn item */ // also need to check for over-receive.(within allowance)
+ if ($order_line->receive_qty + $order_line->qty_received > $order_line->quantity)
+ $order_line->quantity = $order_line->receive_qty + $order_line->qty_received;
$grn_item = add_grn_detail_item($grn, $order_line->po_detail_rec,
$order_line->stock_id, $order_line->item_description,
- $order_line->standard_cost, $order_line->receive_qty, $order_line->price);
+ $order_line->standard_cost, $order_line->receive_qty, $order_line->price, $order_line->quantity);
$po->line_items[$line_no]->grn_item_id = $grn_item;
/* Update location stock records - NB a po cannot be entered for a service/kit parts done automatically */
add_stock_move(ST_SUPPCREDIT, $entered_grn->item_code, $transno, $myrow['loc_code'], $date, "",
$entered_grn->this_quantity_inv, $mcost, $supplier, 1, $entered_grn->chg_price);
}
-
+/*
+ Returns selected grn items:
+
+ $grn_batch_id != 0 - only items for selected grn
+ $supplier_id!='' - only items for selected supplier
+ $outsanding_only==true - only not fully invoiced items
+ $is_invoiced_only==true - only those which are at least partially invoiced
+ $invoice_no!=0 - for selected invoice(s)
+ $begin!='' or $end!='' - within selected delivery time range
+*/
function get_grn_items($grn_batch_id=0, $supplier_id="", $outstanding_only=false,
$is_invoiced_only=false, $invoice_no=0, $begin="", $end="")
{
- $sql = "SELECT ".TB_PREF."grn_batch.*, ".TB_PREF."grn_items.*, "
- .TB_PREF."purch_order_details.unit_price,"
- .TB_PREF."purch_order_details.act_price,"
- .TB_PREF."purch_order_details.quantity_ordered,"
- .TB_PREF."purch_order_details.std_cost_unit, units
- FROM ".TB_PREF."grn_batch, ".TB_PREF."grn_items, "
- .TB_PREF."purch_order_details, ".TB_PREF."stock_master";
- if ($invoice_no != 0)
- $sql .= ", ".TB_PREF."supp_invoice_items";
- $sql .= " WHERE ".TB_PREF."grn_items.grn_batch_id=".TB_PREF."grn_batch.id
- AND ".TB_PREF."grn_items.po_detail_item=".TB_PREF."purch_order_details.po_detail_item";
- if ($invoice_no != 0)
- $sql .= " AND ".TB_PREF."supp_invoice_items.supp_trans_type=".ST_SUPPINVOICE." AND
- ".TB_PREF."supp_invoice_items.supp_trans_no=$invoice_no AND
- ".TB_PREF."grn_items.id=".TB_PREF."supp_invoice_items.grn_item_id";
- $sql .= " AND ".TB_PREF."stock_master.stock_id=".TB_PREF."grn_items.item_code ";
+ $sql = "SELECT grn.*, grn_item.*,
+ grn_item.quantity_inv".($invoice_no ? "-invoice_item.quantity" : '')." quantity_inv,
+ po_item.unit_price,
+ po_item.act_price,
+ po_item.quantity_ordered,
+ po_item.std_cost_unit, units
+ FROM ".TB_PREF."grn_batch grn, "
+ .TB_PREF."purch_order_details po_item, "
+ .TB_PREF."stock_master stock_item,"
+ .TB_PREF."grn_items grn_item ";
+
+ if ($invoice_no != 0) {
+ $sql .= " LEFT JOIN ".TB_PREF."supp_invoice_items invoice_item ON ";
+
+ $inv_cond = "invoice_item.supp_trans_type=".ST_SUPPINVOICE." AND invoice_item.supp_trans_no ";
+ if (is_array($invoice_no))
+ $inv_cond .= " IN (".implode(',' , $invoice_no) . ")";
+ else
+ $inv_cond .= " = $invoice_no";
+ $sql .= "($inv_cond) AND grn_item.id=invoice_item.grn_item_id";
+ }
+ $sql .= " WHERE grn_item.grn_batch_id=grn.id
+ AND grn_item.po_detail_item=po_item.po_detail_item";
+
+ if ($outstanding_only)
+ $sql .= " AND (".($invoice_no ? "$inv_cond OR ":'')."grn_item.qty_recd - grn_item.quantity_inv > 0)";
+
+ $sql .= " AND stock_item.stock_id=grn_item.item_code ";
if ($begin != "")
- $sql .= " AND ".TB_PREF."grn_batch.delivery_date>='".date2sql($begin)."'";
+ $sql .= " AND grn.delivery_date>='".date2sql($begin)."'";
if ($end != "")
- $sql .= " AND ".TB_PREF."grn_batch.delivery_date<='".date2sql($end)."'";
+ $sql .= " AND grn.delivery_date<='".date2sql($end)."'";
if ($grn_batch_id != 0)
- $sql .= " AND ".TB_PREF."grn_batch.id=".db_escape($grn_batch_id)
- ." AND ".TB_PREF."grn_items.grn_batch_id=".db_escape($grn_batch_id);
+ $sql .= " AND grn.id=".db_escape($grn_batch_id)
+ ." AND grn_item.grn_batch_id=".db_escape($grn_batch_id);
if ($is_invoiced_only)
- $sql .= " AND ".TB_PREF."grn_items.quantity_inv > 0";
-
- if ($outstanding_only)
- $sql .= " AND ".TB_PREF."grn_items.qty_recd - ".TB_PREF."grn_items.quantity_inv > 0";
+ $sql .= " AND grn_item.quantity_inv > 0";
if ($supplier_id != "")
- $sql .= " AND ".TB_PREF."grn_batch.supplier_id =".db_escape($supplier_id);
+ $sql .= " AND grn.supplier_id =".db_escape($supplier_id);
- $sql .= " ORDER BY ".TB_PREF."grn_batch.delivery_date, ".TB_PREF."grn_batch.id, ".TB_PREF."grn_items.id";
+ $sql .= " ORDER BY grn.delivery_date, grn.id, grn_item.id";
return db_query($sql, "Could not retreive GRNS");
}
supp.tax_group_id, tax_group.name AS tax_group_name,
supp.credit_limit - Sum(IFNULL(IF(trans.type=".ST_SUPPCREDIT.", -1, 1)
* (ov_amount + ov_gst + ov_discount),0)) as cur_credit
- FROM ".TB_PREF."suppliers supp LEFT JOIN ".TB_PREF."supp_trans trans ON supp.supplier_id = trans.supplier_id, ".TB_PREF."payment_terms terms, ".TB_PREF."tax_groups tax_group
+ FROM ".TB_PREF."suppliers supp LEFT JOIN "
+ .TB_PREF."supp_trans trans ON supp.supplier_id = trans.supplier_id, "
+ .TB_PREF."payment_terms terms, "
+ .TB_PREF."tax_groups tax_group
WHERE supp.tax_group_id = tax_group.id
AND supp.payment_terms=terms.terms_indicator
AND supp.supplier_id = ".db_escape($supplier_id)." GROUP BY supp.supp_name";
}
//----------------------------------------------------------------------------------------
-function add_supp_invoice($supp_trans, $invoice_no=0) // do not receive as ref because we change locally
+function add_supp_invoice(&$supp_trans) // do not receive as ref because we change locally
{
global $Refs;
//$company_currency = get_company_currency();
+ $trans_no = $supp_trans->trans_no;
+ $trans_type = $supp_trans->trans_type;
/*Start an sql transaction */
begin_transaction();
- hook_db_prewrite($supp_trans, $supp_trans->trans_type);
+ hook_db_prewrite($supp_trans, $trans_type);
$tax_total = 0;
$taxes = $supp_trans->get_taxes($supp_trans->tax_group_id);
+ if ($trans_no) {
+ void_transaction($trans_type, $trans_no, Today(), _("Document reentered."));
+ $Refs->restore_last($trans_type, $trans_no);
+ }
foreach ($taxes as $n => $taxitem)
{
$item_added_tax = $tax_total;
} else {
$item_added_tax = 0;
-
}
- $trans_type = $supp_trans->trans_type;
-
if ($trans_type == ST_SUPPCREDIT)
- {
+ {
// let's negate everything because it's a credit note
$invoice_items_total = -$invoice_items_total;
$tax_total = -$tax_total;
$invoice_items_total, $item_added_tax, $supp_trans->ov_discount, "", 0, $supp_trans->tax_included,
$supp_trans->tax_algorithm);
+
+ $supp_trans->trans_no = $invoice_id;
+
$total = 0;
/* Now the control account */
$supplier_accounts = get_supplier_accounts($supp_trans->supplier_id);
$trans_type, $invoice_id, $entered_gl_code->amount,
$ex_rate, $date_, $supp_trans->supp_reference, $supp_trans->tax_included);
}
-
+
$clearing_act = get_company_pref('grn_clearing_act');
foreach ($supp_trans->grn_items as $line_no => $entered_grn)
{
$line_taxfree = $entered_grn->taxfree_charge_price($supp_trans->tax_group_id);
$line_tax = $entered_grn->full_charge_price($supp_trans->tax_group_id) - $line_taxfree;
$stock_gl_code = get_stock_gl_code($entered_grn->item_code);
-
+
if ($trans_type == ST_SUPPCREDIT)
{
$iv_act = (is_inventory_item($entered_grn->item_code) ? $stock_gl_code["inventory_account"] :
$entered_grn->chg_price);
// always return due to change in currency.
- /*$mat_cost = update_average_material_cost(null, $entered_grn->item_code,
- $diff, $entered_grn->this_quantity_inv, $old_date, true); */
$mat_cost = update_average_material_cost(null, $entered_grn->item_code,
$diff, $entered_grn->this_quantity_inv, null, true);
$Refs->save($trans_type, $invoice_id, $supp_trans->reference);
- if ($invoice_no != 0)
+ if ($supp_trans->src_docs)
{
- $invoice_alloc_balance = get_supp_trans_allocation_balance(ST_SUPPINVOICE, $invoice_no);
+ $invoice_alloc_balance = get_supp_trans_allocation_balance(ST_SUPPINVOICE, $supp_trans->src_docs);
if ($invoice_alloc_balance > 0)
{ //the invoice is not already fully allocated
- $trans = get_supp_trans($invoice_no, ST_SUPPINVOICE);
+ $trans = get_supp_trans($supp_trans->src_docs, ST_SUPPINVOICE);
$total = $trans['Total'];
$allocate_amount = ($invoice_alloc_balance > $total) ? $total : $invoice_alloc_balance;
/*Now insert the allocation record if > 0 */
if ($allocate_amount != 0)
{
- update_supp_trans_allocation(ST_SUPPINVOICE, $invoice_no, $allocate_amount);
+ update_supp_trans_allocation(ST_SUPPINVOICE, $supp_trans->src_docs, $allocate_amount);
update_supp_trans_allocation(ST_SUPPCREDIT, $invoice_id, $allocate_amount); // ***
- add_supp_allocation($allocate_amount, ST_SUPPCREDIT, $invoice_id, ST_SUPPINVOICE, $invoice_no,
+ add_supp_allocation($allocate_amount, ST_SUPPCREDIT, $invoice_id, ST_SUPPINVOICE, $supp_trans->src_docs,
$date_);
// Exchange Variations Joe Hunt 2008-09-20 ////////////////////////////////////////
- exchange_variation(ST_SUPPCREDIT, $invoice_id, ST_SUPPINVOICE, $invoice_no, $date_,
+ exchange_variation(ST_SUPPCREDIT, $invoice_id, ST_SUPPINVOICE, $supp_trans->src_docs, $date_,
$allocate_amount, PT_SUPPLIER);
///////////////////////////////////////////////////////////////////////////
}
}
- $supp_trans->trans_no = $invoice_id;
hook_db_postwrite($supp_trans, $supp_trans->trans_type);
commit_transaction();
function read_supp_invoice($trans_no, $trans_type, &$supp_trans)
{
- $sql = "SELECT ".TB_PREF."supp_trans.*, supp_name FROM ".TB_PREF."supp_trans,".TB_PREF."suppliers
+ $sql = "SELECT ".TB_PREF."supp_trans.*, supp_name
+ FROM ".TB_PREF."supp_trans,".TB_PREF."suppliers
WHERE trans_no = ".db_escape($trans_no)." AND type = ".db_escape($trans_type)."
AND ".TB_PREF."suppliers.supplier_id=".TB_PREF."supp_trans.supplier_id";
+
$result = db_query($sql, "Cannot retreive a supplier transaction");
if (db_num_rows($result) == 1)
if ($details_row["gl_code"] == 0)
{
$supp_trans->add_grn_to_trans($details_row["grn_item_id"], $details_row["po_detail_item_id"], $details_row["stock_id"],
- $details_row["description"], 0, 0, $details_row["quantity"], 0, $details_row["FullUnitPrice"],
+ $details_row["description"],
+ $details_row['qty_recd'],
+ $details_row['quantity_inv']-$details_row["quantity"],
+ $details_row["quantity"], 0, $details_row["FullUnitPrice"],
0, 0);
}
else
return db_query($sql,"get account information");
}
-function is_reference_already_there($supplier_id, $supp_reference)
+function is_reference_already_there($supplier_id, $supp_reference, $trans_no=0)
{
- $sql = "SELECT Count(*) FROM ".TB_PREF."supp_trans WHERE supplier_id="
+ $sql = "SELECT COUNT(*) FROM ".TB_PREF."supp_trans WHERE supplier_id="
.db_escape($supplier_id) . " AND supp_reference="
.db_escape($supp_reference)
. " AND ov_amount!=0"; // ignore voided invoice references
-
+ if ($trans_no)
+ $sql .= " AND trans_no!=$trans_no";
$result=db_query($sql,"The sql to check for the previous entry of the same invoice failed");
$myrow = db_fetch_row($result);
- return ($myrow[0] == 1);
+ return $myrow[0] > 0;
}
function remove_not_invoice_item($id)
commit_transaction();
}
+
+function find_src_invoices($cart)
+{
+ $invoices = $po_ids = array();
+ foreach($cart->grn_items as $item)
+ $po_ids[] = "'$item->po_detail_item'"; // credit item lines
+
+ if (count($po_ids)) {
+ $sql = "SELECT DISTINCT trans.trans_no, trans.reference, trans.supp_reference
+ FROM ".TB_PREF."supp_invoice_items items
+ LEFT JOIN ".TB_PREF."supp_trans trans ON trans.trans_no=items.supp_trans_no AND trans.`type`=items.supp_trans_type
+ WHERE items.po_detail_item_id IN (" . implode(',', $po_ids). ")"." AND items.supp_trans_type=20";
+ $result = db_query($sql, "cannot find source invoice details");
+ while ($rec = db_fetch($result))
+ {
+ $invoices[$rec['trans_no']] = $rec['supp_reference']; // array($rec['reference'], $rec['supp_reference']);
+ }
+ }
+ return $invoices;
+}
+
?>
function get_supp_invoice_items($supp_trans_type, $supp_trans_no)
{
- $sql = "SELECT *, unit_price AS FullUnitPrice FROM ".TB_PREF."supp_invoice_items
+ $sql = "SELECT *, unit_price AS FullUnitPrice FROM ".TB_PREF."supp_invoice_items inv,
+ ".TB_PREF."grn_items grn
WHERE supp_trans_type = ".db_escape($supp_trans_type)."
- AND supp_trans_no = ".db_escape($supp_trans_no)." ORDER BY id";
+ AND supp_trans_no = ".db_escape($supp_trans_no)
+ ." AND grn.id =inv.grn_item_id"
+ ." ORDER BY inv.id";
return db_query($sql, "Cannot retreive supplier transaction detail records");
}
var $tax_included;
var $trans_type; // invoice or credit
+ var $trans_no;
var $Comments;
var $tran_date;
var $due_date;
+ var $src_docs = array(); // source invoice for this credit note (if any)
var $supp_reference;
var $reference;
var $credit = 0;
var $tax_algorithm;
var $stored_algorithm;
+ var $currency;
- function supp_trans($trans_type)
+ function supp_trans($trans_type, $trans_no=0)
{
- $this->trans_type = $trans_type;
/*Constructor function initialises a new Supplier Transaction object */
- $this->grn_items = array();
- $this->gl_codes = array();
+ $this->read($trans_type, $trans_no);
+ }
+
+ function read($trans_type, $trans_no)
+ {
+ $this->trans_type = $trans_type;
+ $this->trans_no = $trans_no;
+ $this->grn_items = array();
+ $this->gl_codes = array();
+ if ($trans_no) {
+ read_supp_invoice($trans_no, $trans_type, $this);
+ if ($trans_type == ST_SUPPCREDIT)
+ {
+ $this->src_docs = find_src_invoices($trans_no);
+ }
+ read_supplier_details_to_trans($this, $this->supplier_id);
+ }
}
function add_grn_to_trans($grn_item_id, $po_detail_item, $item_code, $item_description,
$this->grn_items[$grn_item_id] = new grn_item($grn_item_id, $po_detail_item,
$item_code, $item_description, $qty_recd, $prev_quantity_inv, $this_quantity_inv,
$order_price, $chg_price, $std_cost_unit, $gl_code, $this->tax_included);
+ $this->src_docs = find_src_invoices($this);
return 1;
}
table_section(1);
- if (isset($_POST['invoice_no']))
+ if ($supp_trans->trans_type == ST_SUPPCREDIT && $supp_trans->src_docs)
{
- $trans = get_supp_trans($_POST['invoice_no'], ST_SUPPINVOICE);
- $_POST['supplier_id'] = $trans['supplier_id'];
- $supp = $trans['supplier_name'] . " - " . $trans['SupplierCurrCode'];
+// $trans = get_supp_trans($_POST['invoice_no'], ST_SUPPINVOICE);
+// $trans = get_supp_trans($supp_trans->supplier_id, ST_SUPPINVOICE);
+// $_POST['supplier_id'] = $trans['supplier_id'];
+// $supp = $trans['supplier_name'] . " - " . $trans['SupplierCurrCode'];
+
+ $_POST['supplier_id'] = $supp_trans->supplier_id;
+ $supp = $supp_trans->supplier_name." - ".$supp_trans->currency;
label_row(_("Supplier:"), $supp.hidden('supplier_id', $_POST['supplier_id'], false));
- }
+ }
else
{
if (!isset($_POST['supplier_id']) && (get_global_supplier() != ALL_TEXT))
$_POST['supplier_id'] = get_global_supplier();
- supplier_list_row(_("Supplier:"), 'supplier_id', $_POST['supplier_id'], false, true);
+ if (!$supp_trans->trans_no)
+ supplier_list_row(_("Supplier:"), 'supplier_id', $_POST['supplier_id'], false, true);
+ else
+ label_row(_("Supplier:"), $supp_trans->supplier_name
+ .($supp_trans->currency ? ' - '.$supp_trans->currency : '')
+ .hidden('supplier_id', $_POST['supplier_id'], false));
}
if ($supp_trans->supplier_id != $_POST['supplier_id'])
{
function display_grn_items_for_selection(&$supp_trans, $k)
{
- if ($supp_trans->trans_type == ST_SUPPINVOICE)
- $result = get_grn_items(0, $supp_trans->supplier_id, true);
+ if ($supp_trans->trans_type == ST_SUPPINVOICE) // outstanding grns and eventually for selected invoice
+ $result = get_grn_items(0, $supp_trans->supplier_id, true, false, $supp_trans->trans_no);
else
- {
+ { // only invoiced
if (isset($_POST['receive_begin']) && isset($_POST['receive_end']))
$result = get_grn_items(0, $supp_trans->supplier_id, false, true, 0, $_POST['receive_begin'], $_POST['receive_end']);
- else if (isset($_POST['invoice_no']))
- $result = get_grn_items(0, $supp_trans->supplier_id, false, true, $_POST['invoice_no']);
+ else if ($supp_trans->src_docs)
+ $result = get_grn_items(0, $supp_trans->supplier_id, false, true, array_keys($supp_trans->src_docs));
else
$result = get_grn_items(0, $supp_trans->supplier_id, false, true);
}
$grn_already_on_invoice = true;
}
}
+
if ($grn_already_on_invoice == false)
{
alt_table_row_color($k);
$n = $myrow["id"];
- label_cell(get_trans_view_str(25, $myrow["grn_batch_id"]));
+ label_cell(get_trans_view_str(ST_SUPPRECEIVE, $myrow["grn_batch_id"]));
label_cell($myrow["id"].
hidden('qty_recd'.$n, $myrow["qty_recd"], false).
hidden('item_code'.$n, $myrow["item_code"], false).
if ($supp_trans->trans_type == ST_SUPPINVOICE)
qty_cells(null, 'this_quantity_inv'.$n, number_format2($myrow["qty_recd"] - $myrow["quantity_inv"], $dec),
null, null, $dec);
- else
+ else
qty_cells(null, 'This_QuantityCredited'.$n, number_format2(max($myrow["quantity_inv"], 0), $dec),
null, null, $dec);
- $dec2 = 0;
+ $dec2 = 0;
if ($supp_trans->trans_type == ST_SUPPINVOICE)
{
amount_cells(null, 'ChgPrice'.$n, price_decimal_format($myrow["unit_price"], $dec2), null, null, $dec2);
$heading = _("Received Items Charged on this Invoice");
else
$heading = _("Received Items Credited on this Note");
- }
+ }
display_heading($heading);
if ($mode == 1)
{
- if ($supp_trans->trans_type == ST_SUPPCREDIT && !isset($_POST['invoice_no']))
+ if ($supp_trans->trans_type == ST_SUPPCREDIT)
{
echo "</td>";
date_cells(_("Received between"), 'receive_begin', "", null, -30, 0, 0, "valign=middle");
date_cells(_("and"), 'receive_end', '', null, 1, 0, 0, "valign=middle");
submit_cells('RefreshInquiry', _("Search"),'',_('Refresh Inquiry'), true);
echo "<td>";
- }
-
+ }
+
if ($heading2 != "")
{
display_note($heading2, 0, 0, "class='overduefg'");
- }
+ }
echo "</td><td width=10% align='right'>";
submit('InvGRNAll', _("Add All Items"), true, false,true);
- }
+ }
end_outer_table(0, false);
function prt_link($row)
{
- if ($row['type'] == ST_SUPPAYMENT || $row['type'] == ST_BANKPAYMENT || $row['type'] == ST_SUPPCREDIT)
+ if ($row['type'] == ST_SUPPAYMENT || $row['type'] == ST_BANKPAYMENT)
return print_document_link($row['trans_no']."-".$row['type'], _("Print Remittance"), true, ST_SUPPAYMENT, ICON_PRINT);
}
+function edit_link($row)
+{
+ return edit_trans_link($row['type'], $row['trans_no']);
+}
+
function check_overdue($row)
{
return $row['OverDue'] == 1
_("Credit") => array('align'=>'right', 'insert'=>true,'fun'=>'fmt_credit'),
array('insert'=>true, 'fun'=>'gl_view'),
array('insert'=>true, 'fun'=>'credit_link'),
- array('insert'=>true, 'fun'=>'prt_link')
+ array('insert'=>true, 'fun'=>'prt_link'),
+ array('insert'=>true, 'fun'=>'edit_link')
);
if ($_POST['supplier_id'] != ALL_TEXT)
$js .= get_js_open_window(900, 500);
if ($use_date_picker)
$js .= get_js_date_picker();
-page(_($help_context = "Supplier Credit Note"), false, false, "", $js);
//----------------------------------------------------------------------------------------
check_db_has_suppliers(_("There are no suppliers defined in the system."));
+if (isset($_GET['ModifyCredit']))
+ check_is_closed(ST_SUPPINVOICE, $_GET['ModifyCredit']);
+
+//---------------------------------------------------------------------------------------------------
+
+if (isset($_GET['New']))
+{
+ if (isset( $_SESSION['supp_trans']))
+ {
+ unset ($_SESSION['supp_trans']->grn_items);
+ unset ($_SESSION['supp_trans']->gl_codes);
+ unset ($_SESSION['supp_trans']);
+ }
+
+ if (isset($_GET['invoice_no']))
+ {
+ $_SESSION['supp_trans'] = new supp_trans(ST_SUPPINVOICE, $_GET['invoice_no']);
+ $_SESSION['supp_trans']->src_doc = $_GET['invoice_no'];
+
+
+ $_SESSION['supp_trans']->trans_type = ST_SUPPCREDIT;
+ $_SESSION['supp_trans']->trans_no = 0;
+ $_SESSION['supp_trans']->supp_reference = '';
+ // $_SESSION['supp_trans']->supp_reference = $_POST['invoice_no'] = $_GET['invoice_no'];
+ $help_context = "Supplier Credit Note";
+ $_SESSION['page_title'] = _("Supplier Credit Note");
+
+ $_SESSION['supp_trans'] = new supp_trans(ST_SUPPCREDIT);
+ } elseif (isset($_GET['ModifyInvoice'])) {
+ $help_context = 'Modifying Purchase Invoice';
+ $_SESSION['page_title'] = sprintf( _("Modifying Supplier Credit # %d"), $_GET['ModifyCredit']);
+ $_SESSION['supp_trans'] = new supp_trans(ST_SUPPCREDIT, $_GET['ModifyCredit']);
+ }
+
+page($_SESSION['page_title'], false, false, "", $js);
+
//---------------------------------------------------------------------------------------------------------------
if (isset($_GET['AddedID']))
display_footer_exit();
}
-//---------------------------------------------------------------------------------------------------
-
-if (isset($_GET['New']))
-{
- if (isset( $_SESSION['supp_trans']))
- {
- unset ($_SESSION['supp_trans']->grn_items);
- unset ($_SESSION['supp_trans']->gl_codes);
- unset ($_SESSION['supp_trans']);
- }
-
- $_SESSION['supp_trans'] = new supp_trans(ST_SUPPCREDIT);
- if (isset($_GET['invoice_no']))
- {
- $_SESSION['supp_trans']->supp_reference = $_POST['invoice_no'] = $_GET['invoice_no'];
- }
-}
function clear_fields()
{
clear_fields();
}
-if (isset($_POST['AddGLCodeToTrans'])){
+if (isset($_POST['AddGLCodeToTrans'])) {
$Ajax->activate('gl_items');
$input_error = false;
return false;
}
- if (!is_new_reference($_SESSION['supp_trans']->reference, ST_SUPPCREDIT))
+ if (!is_new_reference($_SESSION['supp_trans']->reference, ST_SUPPCREDIT, $_SESSION['supp_trans']->trans_no))
{
display_error(_("The entered reference is already in use."));
set_focus('reference');
if (!check_data())
return;
- if (isset($_POST['invoice_no']))
- $invoice_no = add_supp_invoice($_SESSION['supp_trans'], $_POST['invoice_no']);
- else
- $invoice_no = add_supp_invoice($_SESSION['supp_trans']);
+ $invoice_no = add_supp_invoice($_SESSION['supp_trans']);
$_SESSION['supp_trans']->clear_items();
unset($_SESSION['supp_trans']);
$js .= get_js_open_window(900, 500);
if ($use_date_picker)
$js .= get_js_date_picker();
-page(_($help_context = "Enter Supplier Invoice"), false, false, "", $js);
-
//----------------------------------------------------------------------------------------
check_db_has_suppliers(_("There are no suppliers defined in the system."));
+if (isset($_GET['ModifyInvoice']))
+ check_is_closed(ST_SUPPINVOICE, $_GET['ModifyInvoice']);
+
+//--------------------------------------------------------------------------------------------------
+
+if (isset($_GET['New']))
+{
+ if (isset( $_SESSION['supp_trans']))
+ {
+ unset ($_SESSION['supp_trans']->grn_items);
+ unset ($_SESSION['supp_trans']->gl_codes);
+ unset ($_SESSION['supp_trans']);
+ }
+ $help_context = "Enter Supplier Invoice";
+ $_SESSION['page_title'] = _("Enter Supplier Invoice");
+
+ $_SESSION['supp_trans'] = new supp_trans(ST_SUPPINVOICE);
+} else if(isset($_GET['ModifyInvoice'])) {
+ $help_context = 'Modifying Purchase Invoice';
+ $_SESSION['page_title'] = sprintf( _("Modifying Purchase Invoice # %d"), $_GET['ModifyInvoice']);
+ $_SESSION['supp_trans'] = new supp_trans(ST_SUPPINVOICE, $_GET['ModifyInvoice']);
+}
+
+page($_SESSION['page_title'], false, false, "", $js);
//---------------------------------------------------------------------------------------------------------------
if (isset($_GET['AddedID']))
}
$_SESSION['supp_trans'] = new supp_trans(ST_SUPPINVOICE);
+} else if(isset($_GET['ModifyInvoice'])) {
+ $_SESSION['supp_trans'] = new supp_trans(ST_SUPPINVOICE, $_GET['ModifyInvoice']);
}
//--------------------------------------------------------------------------------------------------
return false;
}
- if (!is_new_reference($_SESSION['supp_trans']->reference, ST_SUPPINVOICE))
+ if (!is_new_reference($_SESSION['supp_trans']->reference, ST_SUPPINVOICE, $_SESSION['supp_trans']->trans_no))
{
display_error(_("The entered reference is already in use."));
set_focus('reference');
return false;
}
- if (is_reference_already_there($_SESSION['supp_trans']->supplier_id, $_POST['supp_reference']))
+ if (is_reference_already_there($_SESSION['supp_trans']->supplier_id, $_POST['supp_reference'], $_SESSION['supp_trans']->trans_no))
{ /*Transaction reference already entered */
display_error(_("This invoice number has already been entered. It cannot be entered again.") . " (" . $_POST['supp_reference'] . ")");
return false;