From 92ba95ff49cf905a0498fef5a4a94c6a8bdb8982 Mon Sep 17 00:00:00 2001 From: bMancone Date: Tue, 22 Nov 2011 16:23:00 +0000 Subject: [PATCH] // Supply Orders : prices are now correctly converted, depending on the currency of the order/warehouse --- .../admin/AdminSupplyOrdersController.php | 34 +++++++++++-------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/controllers/admin/AdminSupplyOrdersController.php b/controllers/admin/AdminSupplyOrdersController.php index a9d9a44a5..2ebb0afd2 100644 --- a/controllers/admin/AdminSupplyOrdersController.php +++ b/controllers/admin/AdminSupplyOrdersController.php @@ -800,7 +800,7 @@ class AdminSupplyOrdersControllerCore extends AdminController 'filter' => false, 'search' => false, ), - 'p_name' => array( + 'name' => array( 'title' => $this->l('Name'), 'align' => 'center', 'width' => 350, @@ -865,15 +865,7 @@ class AdminSupplyOrdersControllerCore extends AdminController a.quantity_received as quantity_received, a.quantity_expected as quantity_expected, IF (a.quantity_expected < a.quantity_received, 0, a.quantity_expected - a.quantity_received) as quantity_left, - IF (a.quantity_expected < a.quantity_received, 0, a.quantity_expected - a.quantity_received) as quantity_received_today, - IFNULL(CONCAT(pl.name, \' : \', GROUP_CONCAT(agl.name, \' - \', al.name SEPARATOR \', \')), pl.name) as p_name'; - - $this->_join = ' - INNER JOIN '._DB_PREFIX_.'product_lang pl ON (pl.id_product = a.id_product AND pl.id_lang = '.$lang_id.') - LEFT JOIN '._DB_PREFIX_.'product_attribute_combination pac ON (pac.id_product_attribute = a.id_product_attribute) - LEFT JOIN '._DB_PREFIX_.'attribute atr ON (atr.id_attribute = pac.id_attribute) - LEFT JOIN '._DB_PREFIX_.'attribute_lang al ON (al.id_attribute = atr.id_attribute AND al.id_lang = '.$lang_id.') - LEFT JOIN '._DB_PREFIX_.'attribute_group_lang agl ON (agl.id_attribute_group = atr.id_attribute_group AND agl.id_lang = '.$lang_id.')'; + IF (a.quantity_expected < a.quantity_received, 0, a.quantity_expected - a.quantity_received) as quantity_received_today'; $this->_where = 'AND a.`id_supply_order` = '.(int)$id_supply_order; @@ -1198,7 +1190,7 @@ class AdminSupplyOrdersControllerCore extends AdminController $token = Tools::getValue('token') ? Tools::getValue('token') : $this->token; $redirect = self::$currentIndex.'&token='.$token; - $this->redirect_after($redirect.'&conf=5'); + $this->redirect_after = $redirect.'&conf=5'; } } } @@ -1282,13 +1274,27 @@ class AdminSupplyOrdersControllerCore extends AdminController $this->_errors[] = Tools::displayError($this->l('Warehouse could not be loaded')); return; } + + // converts the unit price to the warehouse currency if needed + if ($supply_order->id_currency != $warehouse->id_currency) + { + // first, converts the price to the default currency + $price_converted_to_default_currency = Tools::convertPrice($supply_order_detail->unit_price_te, $supply_order->id_currency, false); + + // then, converts the newly calculated price from the default currency to the needed currency + $price = Tools::ps_round(Tools::convertPrice($price_converted_to_default_currency, + $warehouse->id_currency, + true), + 6); + } + $manager = StockManagerFactory::getManager(); $res = $manager->addProduct($supply_order_detail->id_product, $supply_order_detail->id_product_attribute, $warehouse, (int)$quantity, Configuration::get('PS_STOCK_MVT_SUPPLY_ORDER'), - $supply_order_detail->unit_price_te, + $price, true, $supply_order->id); if ($res) // if product has been added @@ -1308,7 +1314,7 @@ class AdminSupplyOrdersControllerCore extends AdminController // display confirm message $token = Tools::getValue('token') ? Tools::getValue('token') : $this->token; $redirect = self::$currentIndex.'&token='.$token; - $this->redirect_after($redirect.'&conf=4'); + $this->redirect_after = $redirect.'&conf=4'; } } @@ -1515,7 +1521,7 @@ class AdminSupplyOrdersControllerCore extends AdminController IFNULL(pa.ean13, IFNULL(p.ean13, \'\')) as ean13, IFNULL(pa.upc, IFNULL(p.upc, \'\')) as upc, md5(CONCAT(\''._COOKIE_KEY_.'\', p.id_product, \'_\', IFNULL(pa.id_product_attribute, \'0\'))) as checksum, - IFNULL(CONCAT(pl.name, \' : \', GROUP_CONCAT(agl.name, \' - \', al.name SEPARATOR \', \')), pl.name) as name + IFNULL(CONCAT(pl.name, \' : \', GROUP_CONCAT(DISTINCT agl.name, \' - \', al.name SEPARATOR \', \')), pl.name) as name '); $query->from('product p');