diff --git a/controllers/admin/AdminPPreferencesController.php b/controllers/admin/AdminPPreferencesController.php
index 6b7a25142..45ce1429e 100644
--- a/controllers/admin/AdminPPreferencesController.php
+++ b/controllers/admin/AdminPPreferencesController.php
@@ -135,7 +135,7 @@ class AdminPPreferencesControllerCore extends AdminController
)
),
'identifier' => 'id'
- )
+ )
)
),
'fo_product_page' => array(
@@ -212,10 +212,23 @@ class AdminPPreferencesControllerCore extends AdminController
'cast' => 'intval',
'required' => false,
'type' => 'bool',
- 'visibility' => Shop::CONTEXT_ALL
+ 'visibility' => Shop::CONTEXT_ALL,
+ 'js' => array(
+ 'on' => 'onchange="advStockManagementActivationAuthorization()"',
+ 'off' => 'onchange="advStockManagementActivationAuthorization()"'
+ )
+ ),
+ 'UPDATE_ASM_PRODUCTS' => array(
+ 'title' => $this->l('Update products:'),
+ 'desc' => $this->l('Massively activate(yes) or desactivate(no) advanced stock management for all products.'),
+ 'validation' => 'isBool',
+ 'cast' => 'intval',
+ 'required' => false,
+ 'type' => 'bool',
+ 'visibility' => Shop::CONTEXT_ALL,
),
),
- 'bottom' => '',
+ 'bottom' => '',
'submit' => array()
),
);
@@ -235,13 +248,50 @@ class AdminPPreferencesControllerCore extends AdminController
{
Db::getInstance()->execute(
'UPDATE `'._DB_PREFIX_.'product`
- SET `advanced_stock_management` = 0
- WHERE `advanced_stock_management` = 1');
+ SET `advanced_stock_management` = 0
+ WHERE `advanced_stock_management` = 1');
Db::getInstance()->execute(
'UPDATE `'._DB_PREFIX_.'stock_available`
- SET `depends_on_stock` = 0, `quantity` = 0
- WHERE `depends_on_stock` = 1');
+ SET `depends_on_stock` = 0, `quantity` = 0
+ WHERE `depends_on_stock` = 1');
}
}
+
+ public function postProcess()
+ {
+ // if advanced stock management is activated, and mass update of products is required
+ if (((int)Tools::getValue('PS_ADVANCED_STOCK_MANAGEMENT') == 1 || Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT') == 1) &&
+ Tools::isSubmit('UPDATE_ASM_PRODUCTS'))
+ {
+ // gets the value to set
+ $advanced_stock_management = (int)Tools::getValue('UPDATE_ASM_PRODUCTS');
+
+ // updates product table
+ Db::getInstance()->execute(
+ 'UPDATE `'._DB_PREFIX_.'product`
+ SET `advanced_stock_management` = '.$advanced_stock_management.'
+ WHERE `advanced_stock_management` = '.($advanced_stock_management == 1 ? 0 : 1).'
+ AND `cache_is_pack` = 0
+ AND `is_virtual` = 0');
+
+ // updates stock available table
+ Db::getInstance()->execute(
+ 'UPDATE `'._DB_PREFIX_.'stock_available` s
+ LEFT JOIN
+ `'._DB_PREFIX_.'product` p
+ ON
+ (
+ p.`id_product` = s.`id_product`
+ AND p.`cache_is_pack` = 0
+ AND p.`is_virtual` = 0
+ AND p.`advanced_stock_management` = '.$advanced_stock_management.'
+ )
+ SET s.`depends_on_stock` = '.$advanced_stock_management.',
+ s.`quantity` = 0
+ WHERE s.`depends_on_stock` = '.($advanced_stock_management == 1 ? 0 : 1));
+ }
+ // deletes from post since it's not a configuration variable..
+ unset($_POST['UPDATE_ASM_PRODUCTS']);
+ }
}
diff --git a/js/admin.js b/js/admin.js
index 05d27d1d0..8af0acfbb 100644
--- a/js/admin.js
+++ b/js/admin.js
@@ -790,6 +790,23 @@ function stockManagementActivationAuthorization()
getE('PS_ADVANCED_STOCK_MANAGEMENT_on').disabled = 'disabled';
getE('PS_ADVANCED_STOCK_MANAGEMENT_off').disabled = 'disabled';
}
+
+ advStockManagementActivationAuthorization();
+}
+
+function advStockManagementActivationAuthorization()
+{
+ if (getE('PS_ADVANCED_STOCK_MANAGEMENT_on').checked)
+ {
+ getE('UPDATE_ASM_PRODUCTS_on').disabled = false;
+ getE('UPDATE_ASM_PRODUCTS_off').disabled = false;
+ }
+ else
+ {
+ getE('UPDATE_ASM_PRODUCTS_off').checked = true;
+ getE('UPDATE_ASM_PRODUCTS_on').disabled = 'disabled';
+ getE('UPDATE_ASM_PRODUCTS_off').disabled = 'disabled';
+ }
}
function hookCheckboxes(id, opt, champ)