Prestashop - 已取消的订单产品数量未增加库存数量
Prestashop - Cancelled order product quantity not increased in stock quantity
我正在为某些产品使用 Prestashop Advance 库存管理系统。当我用产品下订单时(启用了高级库存管理),数量是从实际输入值(允许我们手动输入数量的输入框)中扣除的,而不是从库存中扣除的(我可以在库存管理列表中看到相同的数量).我将订单状态更改为"Shipped/Invoiced"后,库存数量减少了。
当我取消该订单时,库存数量并未增加。我想在取消订单时自动增加库存数量。我是新手,我不知道该怎么做。请帮我解决这个问题。
提前致谢
您应该调用 OrderDetail::checkProductStock
,后者又会调用 StockAvailable::updateQuantity
$update_quantity = StockAvailable::updateQuantity(...
有趣的是,在更新数量之前有这个条件
if (!StockAvailable::dependsOnStock($product['id_product']))
我建议您在需要时 override this method 和 return 为真。
您还可以在复制订单之前设置一个全局标志,然后检查该标志,如果它是 true return true 以防止更新库存。
override/classes/stock/StockAvailable.php
中的覆盖代码
class StockAvailable extends StockAvailableCore
{
public static function dependsOnStock($id_product, $id_shop = null)
{
$no_quantity_update = isset($GLOBALS['no_quantity_update']) && $GLOBALS['no_quantity_update'];
if ($no_quantity_update)
return true;
else return parent::dependsOnStock($id_product, $id_shop = null);
}
}
要使此覆盖生效,请删除文件 cache/class_index.php
以刷新覆盖列表
您的模块代码:
//set to false just to be sure
$GLOBALS['no_quantity_update'] = false;
$this->module->validateOrder($cart->id, Configuration...
您可以直接修改核心代码,但不推荐这样做
您也可以查看 different hooks list。
$productid = $request->input('productid');
$userid = $request->input('userid');
$quantityt= $request->input('quantity');
$data2=Cart::where('productid',$productid)->where('userid',$userid)->pluck('id');
$productq=Products::where('id',$productid)->get();
foreach($productq as $pro)
{
$product = Products::find($pro->id);
$product->quantity = $pro->quantity + $quantityt;
$product->save();
}
我正在为某些产品使用 Prestashop Advance 库存管理系统。当我用产品下订单时(启用了高级库存管理),数量是从实际输入值(允许我们手动输入数量的输入框)中扣除的,而不是从库存中扣除的(我可以在库存管理列表中看到相同的数量).我将订单状态更改为"Shipped/Invoiced"后,库存数量减少了。
当我取消该订单时,库存数量并未增加。我想在取消订单时自动增加库存数量。我是新手,我不知道该怎么做。请帮我解决这个问题。
提前致谢
您应该调用 OrderDetail::checkProductStock
,后者又会调用 StockAvailable::updateQuantity
$update_quantity = StockAvailable::updateQuantity(...
有趣的是,在更新数量之前有这个条件
if (!StockAvailable::dependsOnStock($product['id_product']))
我建议您在需要时 override this method 和 return 为真。
您还可以在复制订单之前设置一个全局标志,然后检查该标志,如果它是 true return true 以防止更新库存。
override/classes/stock/StockAvailable.php
class StockAvailable extends StockAvailableCore
{
public static function dependsOnStock($id_product, $id_shop = null)
{
$no_quantity_update = isset($GLOBALS['no_quantity_update']) && $GLOBALS['no_quantity_update'];
if ($no_quantity_update)
return true;
else return parent::dependsOnStock($id_product, $id_shop = null);
}
}
要使此覆盖生效,请删除文件 cache/class_index.php
以刷新覆盖列表
您的模块代码:
//set to false just to be sure
$GLOBALS['no_quantity_update'] = false;
$this->module->validateOrder($cart->id, Configuration...
您可以直接修改核心代码,但不推荐这样做
您也可以查看 different hooks list。
$productid = $request->input('productid');
$userid = $request->input('userid');
$quantityt= $request->input('quantity');
$data2=Cart::where('productid',$productid)->where('userid',$userid)->pluck('id');
$productq=Products::where('id',$productid)->get();
foreach($productq as $pro)
{
$product = Products::find($pro->id);
$product->quantity = $pro->quantity + $quantityt;
$product->save();
}