[-] BO : Bug Fixed #PSTESTS-672 An error has occured during currency creation

This commit is contained in:
fBrignoli
2012-02-17 14:49:49 +00:00
parent 229e12414b
commit 232cef2771
2 changed files with 53 additions and 18 deletions
+51 -18
View File
@@ -65,6 +65,7 @@ class CurrencyCore extends ObjectModel
public static $definition = array( public static $definition = array(
'table' => 'currency', 'table' => 'currency',
'primary' => 'id_currency', 'primary' => 'id_currency',
'multishop' => true,
'fields' => array( 'fields' => array(
'name' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName', 'required' => true, 'size' => 32), 'name' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName', 'required' => true, 'size' => 32),
'iso_code' => array('type' => self::TYPE_STRING, 'validate' => 'isLanguageIsoCode', 'required' => true, 'size' => 3), 'iso_code' => array('type' => self::TYPE_STRING, 'validate' => 'isLanguageIsoCode', 'required' => true, 'size' => 3),
@@ -123,12 +124,12 @@ class CurrencyCore extends ObjectModel
* @param int|string $iso_code int for iso code number string for iso code * @param int|string $iso_code int for iso code number string for iso code
* @return boolean * @return boolean
*/ */
public static function exists($iso_code) public static function exists($iso_code, $iso_code_num, $id_shop = 0)
{ {
if (is_int($iso_code)) if (is_int($iso_code))
$id_currency_exists = Currency::getIdByIsoCodeNum($iso_code); $id_currency_exists = Currency::getIdByIsoCodeNum((int)$iso_code_num, (int)$id_shop);
else else
$id_currency_exists = Currency::getIdByIsoCode($iso_code); $id_currency_exists = Currency::getIdByIsoCode($iso_code, (int)$id_shop);
if ($id_currency_exists) if ($id_currency_exists)
return true; return true;
@@ -261,26 +262,58 @@ class CurrencyCore extends ObjectModel
AND `id_currency` = '.(int)($id_currency)); AND `id_currency` = '.(int)($id_currency));
} }
public static function getIdByIsoCode($iso_code) /**
* @static
* @param $iso_code
* @param int $id_shop
* @return int
*/
public static function getIdByIsoCode($iso_code, $id_shop = 0)
{ {
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' $query = Currency::getIdByQuery($id_shop);
SELECT `id_currency` $query->where('iso_code = \''.pSQL($iso_code).'\'');
FROM `'._DB_PREFIX_.'currency`
WHERE `deleted` = 0 $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($query->build());
AND `iso_code` = \''.pSQL($iso_code).'\'');
return $result['id_currency'];
}
public static function getIdByIsoCodeNum($iso_code)
{
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('
SELECT `id_currency`
FROM `'._DB_PREFIX_.'currency`
WHERE `deleted` = 0
AND `iso_code_num` = \''.pSQL($iso_code).'\'');
return (int)$result['id_currency']; return (int)$result['id_currency'];
} }
/**
* @static
* @param $iso_code
* @param int $id_shop
* @return int
*/
public static function getIdByIsoCodeNum($iso_code_num, $id_shop = 0)
{
$query = Currency::getIdByQuery($id_shop);
$query->where('iso_code_num = \''.pSQL($iso_code_num).'\'');
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue($query->build());
return (int)$result['id_currency'];
}
/**
* @static
* @param int $id_shop
* @return DbQuery
*/
public static function getIdByQuery($id_shop = 0)
{
$query = new DbQuery();
$query->select('c.id_currency');
$query->from('currency', 'c');
$query->where('deleted = 0');
if (Shop::isFeatureActive() && $id_shop > 0)
{
$query->leftJoin('currency_shop', 'cs', 'cs.id_currency = c.id_currency');
$query->where('id_shop = '.(int)$id_shop);
}
return $query;
}
/** /**
* Refresh the currency conversion rate * Refresh the currency conversion rate
* The XML file define conversion rate for each from a default currency ($isoCodeSource). * The XML file define conversion rate for each from a default currency ($isoCodeSource).
@@ -27,6 +27,8 @@
class AdminCurrenciesControllerCore extends AdminController class AdminCurrenciesControllerCore extends AdminController
{ {
public $display_multishop_toolbar = false;
public function __construct() public function __construct()
{ {
$this->table = 'currency'; $this->table = 'currency';