diff --git a/classes/shop/Shop.php b/classes/shop/Shop.php index dceef299f..10d7fccf0 100644 --- a/classes/shop/Shop.php +++ b/classes/shop/Shop.php @@ -94,7 +94,6 @@ class ShopCore extends ObjectModel 'store' => array('type' => 'shop'), 'webservice_account' => array('type' => 'shop'), 'warehouse' => array('type' => 'shop'), - /* 'stock_available' => array('type' => 'fk_shop', 'primary' => 'id_stock_available'), */ ); protected $webserviceParameters = array( @@ -127,7 +126,7 @@ class ShopCore extends ObjectModel parent::__construct($id, $id_lang, $id_shop); if ($this->id) { - $sql = 'SELECT su.physical_uri, su.virtual_uri, + $sql = 'SELECT su.physical_uri, su.virtual_uri, su.domain, su.domain_ssl, t.id_theme, t.name, t.directory FROM '._DB_PREFIX_.'shop s LEFT JOIN '._DB_PREFIX_.'shop_url su ON (s.id_shop = su.id_shop) diff --git a/classes/stock/StockAvailable.php b/classes/stock/StockAvailable.php index 7ce42fcf0..608b18bd8 100644 --- a/classes/stock/StockAvailable.php +++ b/classes/stock/StockAvailable.php @@ -390,7 +390,7 @@ class StockAvailableCore extends ObjectModel if (!$depends_on_stock) { $id_stock_available = (int)StockAvailable::getStockAvailableIdByProductId($id_product, $id_product_attribute, $id_shop); - + $product = new Product($id_product, true, $id_lang, $id_shop, $context); Hook::exec('actionUpdateQuantity', array('product' => $product, 'attribute_id' => $id_product_attribute)); @@ -441,7 +441,7 @@ class StockAvailableCore extends ObjectModel else Hook::exec('actionProductUpdate', array('product' => $product)); } - + } /** @@ -629,4 +629,36 @@ class StockAvailableCore extends ObjectModel if (!$group_ok) $params['id_shop'] = (int)$id_shop; } + + /** + * Copies stock available content table + * + * @param int $src_shop_id + * @param int $dst_shop_id + * @return bool + */ + public static function copyStockAvailableFromShopToShop($src_shop_id, $dst_shop_id) + { + if (!$src_shop_id || !$dst_shop_id) + return false; + + $query = ' + INSERT INTO '._DB_PREFIX_.'stock_available + ( + id_product, + id_product_attribute, + id_shop, + id_group_shop, + quantity, + depends_on_stock, + out_of_stock + ) + ( + SELECT id_product, id_product_attribute, '.(int)$dst_shop_id.', 0, quantity, depends_on_stock, out_of_stock + FROM '._DB_PREFIX_.'stock_available + WHERE id_shop = '.(int)$src_shop_id. + ')'; + + return Db::getInstance()->execute($query); + } } diff --git a/controllers/admin/AdminShopController.php b/controllers/admin/AdminShopController.php index d1150325d..6a4ef0127 100755 --- a/controllers/admin/AdminShopController.php +++ b/controllers/admin/AdminShopController.php @@ -405,6 +405,7 @@ class AdminShopControllerCore extends AdminController 'stock_available' => $this->l('Available quantities for sale'), 'store' => $this->l('Stores'), 'warehouse' => $this->l('Warehouse'), + 'stock_available' => $this->l('Stock Available'), ); if (!$this->object->id) @@ -496,8 +497,19 @@ class AdminShopControllerCore extends AdminController if (count($this->errors) > 0) return; - // if we import datas from another shop, we do not update the shop categories + // datas to import $import_data = Tools::getValue('importData'); + + // specific import for stock + if (isset($import_data['stock_available']) && isset($import_data['product']) && Tools::isSubmit('useImportData')) + { + $id_src_shop = (int)Tools::getValue('importFromShop'); + $group = new GroupShop((int)Shop::getGroupFromShop($object->id)); + if ($group->share_stock == false) + StockAvailable::copyStockAvailableFromShopToShop($id_src_shop, $object->id); + } + + // if we import datas from another shop, we do not update the shop categories if (!isset($import_data['category'])) Category::updateFromShop(Tools::getValue('categoryBox'), $object->id); @@ -506,7 +518,7 @@ class AdminShopControllerCore extends AdminController public function initCategoriesAssociation($id_root = 1) { - $id_shop = Tools::getValue('id_shop'); + $id_shop = (int)Tools::getValue('id_shop'); $shop = new Shop($id_shop); $selected_cat = Shop::getCategories($id_shop); if (empty($selected_cat))