add_new_exchange_rate(get_supplier_currency($po->supplier_id), $date_, $po->ex_rate);
- $grn = add_grn_batch($po->order_no, $po->supplier_id, $po->reference, $po->Location, $date_);
+ $grn = add_grn_batch($po->order_no, $po->supplier_id, $po->reference, $po->Location, $date_, $po->ex_rate);
$clearing_act = get_company_pref('grn_clearing_act');
if ($clearing_act) { // otherwise GRN clearing account is not used
//----------------------------------------------------------------------------------------
-function add_grn_batch($po_number, $supplier_id, $reference, $location, $date_)
+function add_grn_batch($po_number, $supplier_id, $reference, $location, $date_, $rate)
{
$date = date2sql($date_);
- $sql = "INSERT INTO ".TB_PREF."grn_batch (purch_order_no, delivery_date, supplier_id, reference, loc_code)
+ $sql = "INSERT INTO ".TB_PREF."grn_batch (purch_order_no, delivery_date, supplier_id, reference, loc_code, rate)
VALUES (".db_escape($po_number).", ".db_escape($date).", "
- .db_escape($supplier_id).", ".db_escape($reference).", ".db_escape($location).")";
+ .db_escape($supplier_id).", ".db_escape($reference).", ".db_escape($location).", ".db_escape($rate).")";
db_query($sql, "A grn batch record could not be inserted.");
$row = db_fetch($result);
$po_number = $row["purch_order_no"];
+ $order->ex_rate = $row["rate"];
$result = read_po_header($po_number, $order);
if (get_company_pref('default_receival_required') === null) { // new in 2.4 installations
set_company_pref('default_receival_required', 'glsetup.purchase', 'smallint', 6, 10);
}
- $result = $this->update_workorders() && $this->switch_database_to_utf($pref);
+ $result = $this->update_workorders() && $this->update_grn_rates() && $this->switch_database_to_utf($pref);
+
if ($result)
$result = $this->do_cleanup();
return true;
}
+ function update_grn_rates()
+ {
+ $sql = "SELECT grn.id, grn.delivery_date, supp.curr_code
+ FROM ".TB_PREF."grn_batch grn, ".TB_PREF."suppliers supp
+ WHERE supp.supplier_id=grn.supplier_id AND supp.curr_code!='".get_company_pref('curr_default')."'";
+ $result = db_query($sql);
+
+ if (!$result)
+ return false;
+
+ $sql = "UPDATE ".TB_PREF."grn_batch SET rate=%s WHERE id=%d";
+ while ($grn = db_fetch($result))
+ db_query(sprintf($sql, get_exchange_rate_from_home_currency($grn['curr_code'], sql2date($grn['delivery_date'])), $grn['id']));
+
+ return true;
+ }
+
function do_cleanup()
{
$dropcol = array(
ALTER TABLE `0_stock_master` ADD COLUMN `no_purchase` tinyint(1) NOT NULL default '0' AFTER `no_sale`;
ALTER TABLE `0_stock_category` ADD COLUMN `dflt_no_purchase` tinyint(1) NOT NULL default '0' AFTER `dflt_no_sale`;
-ALTER TABLE `0_users` CHANGE `query_size` `query_size` TINYINT(1) UNSIGNED NOT NULL DEFAULT 10;
\ No newline at end of file
+
+# added exchange rate field in grn_batch
+ALTER TABLE `0_grn_batch` ADD COLUMN `rate` double NULL default '1' AFTER `loc_code`;
+ALTER TABLE `0_users` CHANGE `query_size` `query_size` TINYINT(1) UNSIGNED NOT NULL DEFAULT 10;
`reference` varchar(60) NOT NULL default '',
`delivery_date` date NOT NULL default '0000-00-00',
`loc_code` varchar(5) default NULL,
+ `rate` double NOT NULL default '1',
PRIMARY KEY (`id`),
KEY `delivery_date` (`delivery_date`),
KEY `purch_order_no` (`purch_order_no`)
-- Dumping data for table `0_grn_batch`
--
-INSERT INTO `0_grn_batch` VALUES(1, 2, 1, '1', '2009-06-21', 'DEF');
+INSERT INTO `0_grn_batch` VALUES(1, 2, 1, '1', '2009-06-21', 'DEF', '1');
-- --------------------------------------------------------
`reference` varchar(60) NOT NULL default '',
`delivery_date` date NOT NULL default '0000-00-00',
`loc_code` varchar(5) default NULL,
+ `rate` double NOT NULL default '1',
PRIMARY KEY (`id`),
KEY `delivery_date` (`delivery_date`),
KEY `purch_order_no` (`purch_order_no`)