// Stock Available : Add shared management for group of shops

git-svn-id: http://dev.prestashop.com/svn/v1/branches/1.5.x@10812 b9a71923-0436-4b27-9f14-aed3839534dd
This commit is contained in:
dSevere
2011-11-30 16:28:06 +00:00
parent 8671928caf
commit 577aa781bc
9 changed files with 442 additions and 188 deletions
+65 -25
View File
@@ -2040,12 +2040,29 @@ class AdminProductsControllerCore extends AdminController
Tools::isSubmit('product_price_'.$product->id.'_'.$attribute['id_product_attribute'].'_'.$supplier->id_supplier)
&&
Tools::isSubmit('product_price_currency_'.$product->id.'_'.$attribute['id_product_attribute'].'_'.$supplier->id_supplier)
)
)
))
{
$reference = pSQL(Tools::getValue('supplier_reference_'.$product->id.'_'.$attribute['id_product_attribute'].'_'.$supplier->id_supplier, ''));
$price = (float)str_replace(array(' ', ','), array('', '.'), Tools::getValue('product_price_'.$product->id.'_'.$attribute['id_product_attribute'].'_'.$supplier->id_supplier, 0));
$id_currency = (int)Tools::getValue('product_price_currency_'.$product->id.'_'.$attribute['id_product_attribute'].'_'.$supplier->id_supplier, 0);
$reference = pSQL(
Tools::getValue(
'supplier_reference_'.$product->id.'_'.$attribute['id_product_attribute'].'_'.$supplier->id_supplier,
''
)
);
$price = (float)str_replace(
array(' ', ','),
array('', '.'),
Tools::getValue(
'product_price_'.$product->id.'_'.$attribute['id_product_attribute'].'_'.$supplier->id_supplier,
0
)
);
$id_currency = (int)Tools::getValue(
'product_price_currency_'.$product->id.'_'.$attribute['id_product_attribute'].'_'.$supplier->id_supplier,
0
);
if ($id_currency <= 0 || ( !($result = Currency::getCurrency($id_currency)) || empty($result) ))
$this->_errors[] = Tools::displayError($this->l('The selected currency is not valid.'));
@@ -2070,13 +2087,11 @@ class AdminProductsControllerCore extends AdminController
//update existing record
$product_supplier_entity = new ProductSupplier($existing_id);
if (
($product_supplier_entity->product_supplier_reference != $reference)
if (($product_supplier_entity->product_supplier_reference != $reference)
||
($product_supplier_entity->product_supplier_price_te != $price)
||
($product_supplier_entity->id_currency != $id_currency)
)
($product_supplier_entity->id_currency != $id_currency))
{
$product_supplier_entity->product_supplier_reference = $reference;
$product_supplier_entity->id_currency = $id_currency;
@@ -3172,7 +3187,31 @@ class AdminProductsControllerCore extends AdminController
$attribute['id_product_attribute']);
// Get all product designation
$product_designation[$attribute['id_product_attribute']] = rtrim($obj->name[$this->context->language->id].' - '.$attribute['attribute_designation'], ' - ');
$product_designation[$attribute['id_product_attribute']] = rtrim(
$obj->name[$this->context->language->id].' - '.$attribute['attribute_designation'],
' - '
);
}
$show_quantities = true;
$shop_context = $this->context->shop();
$group_shop = $this->context->shop->getGroup();
// if we are in all shops context, it's not possible to manage quantities at this level
if ($shop_context == Shop::CONTEXT_ALL)
$show_quantities = false;
// if we are in group shop context
else if ($shop_context == Shop::CONTEXT_GROUP)
{
// if quantities are not shared between shops of the group, it's not possible to manage them at group level
if (!$group_shop->share_stock)
$show_quantities = false;
}
// if we are in shop context
else {
// if quantities are shared between shops of the group, it's not possible to manage them for a given shop
if ($group_shop->share_stock)
$show_quantities = false;
}
$data->assign(array(
@@ -3181,6 +3220,7 @@ class AdminProductsControllerCore extends AdminController
'stock_management_active' => Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT'),
'product_designation' => $product_designation,
'product' => $this->object,
'show_quantities' => $show_quantities,
'token_preferences' => Tools::getAdminTokenLite('AdminPPreferences'),
'token' => $this->token
));
@@ -3209,7 +3249,10 @@ class AdminProductsControllerCore extends AdminController
$product_designation = array();
foreach ($attributes as $attribute)
$product_designation[$attribute['id_product_attribute']] = rtrim($obj->name[$this->context->language->id].' - '.$attribute['attribute_designation'], ' - ');
$product_designation[$attribute['id_product_attribute']] = rtrim(
$obj->name[$this->context->language->id].' - '.$attribute['attribute_designation'],
' - '
);
// Get all available suppliers
$suppliers = Supplier::getSuppliers();
@@ -3277,7 +3320,10 @@ class AdminProductsControllerCore extends AdminController
$product_designation = array();
foreach ($attributes as $attribute)
$product_designation[$attribute['id_product_attribute']] = rtrim($obj->name[$this->context->language->id].' - '.$attribute['attribute_designation'], ' - ');
$product_designation[$attribute['id_product_attribute']] = rtrim(
$obj->name[$this->context->language->id].' - '.$attribute['attribute_designation'],
' - '
);
// Get all available warehouses
$warehouses = Warehouse::getWarehouses(true);
@@ -3346,11 +3392,11 @@ class AdminProductsControllerCore extends AdminController
public function ajaxProcessProductQuantity()
{
if(!Tools::getValue('actionQty'))
if (!Tools::getValue('actionQty'))
return Tools::jsonEncode(array('error' => 'Undefined action'));
$product = new Product((int)(Tools::getValue('id_product')));
switch(Tools::getValue('actionQty'))
$product = new Product((int)Tools::getValue('id_product'));
switch (Tools::getValue('actionQty'))
{
case 'depends_on_stock':
if (Tools::getValue('value') === false)
@@ -3375,16 +3421,10 @@ class AdminProductsControllerCore extends AdminController
return Tools::jsonEncode(array('error' => 'Undefined value'));
if (Tools::getValue('id_product_attribute') === false)
return Tools::jsonEncode(array('error' => 'Undefined id product attribute'));
// @todo : Product class should handle that
$stock_available = new StockAvailable(StockAvailable::getStockAvailableIdByProductId($product->id, (int)Tools::getValue('id_product_attribute')));
if (!$stock_available->id)
{
$stock_available->id_product = $product->id;
$stock_available->id_shop = Context::getContext()->shop->getID(true);
$stock_available->id_product_attribute = Tools::getValue('id_product_attribute');
}
$stock_available->quantity = (int)Tools::getValue('value');
$stock_available->save();
$id_shop = (int)Context::getContext()->shop->getID(true);
StockAvailable::setQuantity($product->id, (int)Tools::getValue('id_product_attribute'), (int)Tools::getValue('value'), $id_shop);
break;
}
die(Tools::jsonEncode(array('error' => false)));