// Fixed stock_available when ordering products
This commit is contained in:
1 parent
72b8e2e12a
commit
50cf3a697e
4 files changed
+41
-6
No files matched your search
@@ -552,6 +552,21 @@ abstract class PaymentModuleCore extends Module
|
||||
$file_attachement
|
||||
);
|
||||
}
|
||||
|
||||
// updates stock in shops
|
||||
if (Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT'))
|
||||
{
|
||||
$product_list = $order->getProducts();
|
||||
foreach ($product_list as $product)
|
||||
{
|
||||
// if the available quantities depends on the physical stock
|
||||
if (StockAvailable::dependsOnStock($product['product_id']))
|
||||
{
|
||||
// synchronizes
|
||||
StockAvailable::synchronize($product['product_id']);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -364,8 +364,13 @@ class OrderDetailCore extends ObjectModel
|
||||
{
|
||||
if ($id_order_state != Configuration::get('PS_OS_CANCELED') && $id_order_state != Configuration::get('PS_OS_ERROR'))
|
||||
{
|
||||
if (StockAvailable::updateQuantity($product['id_product'], $product['id_product_attribute'], -(int)$product['cart_quantity']))
|
||||
$update_quantity = true;
|
||||
if (!StockAvailable::dependsOnStock($product['id_product']))
|
||||
$update_quantity = StockAvailable::updateQuantity($product['id_product'], $product['id_product_attribute'], -(int)$product['cart_quantity']);
|
||||
|
||||
if ($update_quantity)
|
||||
$product['stock_quantity'] -= $product['cart_quantity'];
|
||||
|
||||
if ($product['stock_quantity'] < 0 && Configuration::get('PS_STOCK_MANAGEMENT'))
|
||||
$this->outOfStock = true;
|
||||
Product::updateDefaultAttribute($product['id_product']);
|
||||
|
||||
@@ -109,7 +109,8 @@ class OrderHistoryCore extends ObjectModel
|
||||
ProductSale::addProductSale($product['product_id'], $product['product_quantity']);
|
||||
// @since 1.5.0 - Stock Management
|
||||
if (!Pack::isPack($product['product_id']) &&
|
||||
($old_os->id == Configuration::get('PS_OS_ERROR') || $old_os->id == Configuration::get('PS_OS_CANCELED')))
|
||||
($old_os->id == Configuration::get('PS_OS_ERROR') || $old_os->id == Configuration::get('PS_OS_CANCELED')) &&
|
||||
!StockAvailable::dependsOnStock($product['id_product']))
|
||||
StockAvailable::updateQuantity($product['product_id'], $product['product_attribute_id'], -(int)$product['product_quantity'], $order->id_shop);
|
||||
}
|
||||
// if becoming unlogable => removes sale
|
||||
@@ -119,12 +120,14 @@ class OrderHistoryCore extends ObjectModel
|
||||
|
||||
// @since 1.5.0 - Stock Management
|
||||
if (!Pack::isPack($product['product_id']) &&
|
||||
($new_os->id == Configuration::get('PS_OS_ERROR') || $new_os->id == Configuration::get('PS_OS_CANCELED')))
|
||||
($new_os->id == Configuration::get('PS_OS_ERROR') || $new_os->id == Configuration::get('PS_OS_CANCELED')) &&
|
||||
!StockAvailable::dependsOnStock($product['id_product']))
|
||||
StockAvailable::updateQuantity($product['product_id'], $product['product_attribute_id'], (int)$product['product_quantity'], $order->id_shop);
|
||||
}
|
||||
// if waiting for payment => payment error/canceled
|
||||
else if (!$new_os->logable && !$old_os->logable &&
|
||||
($new_os->id == Configuration::get('PS_OS_ERROR') || $new_os->id == Configuration::get('PS_OS_CANCELED')))
|
||||
($new_os->id == Configuration::get('PS_OS_ERROR') || $new_os->id == Configuration::get('PS_OS_CANCELED')) &&
|
||||
!StockAvailable::dependsOnStock($product['id_product']))
|
||||
StockAvailable::updateQuantity($product['product_id'], $product['product_attribute_id'], (int)$product['product_quantity'], $order->id_shop);
|
||||
// @since 1.5.0 : if the order is being shipped and this products uses the advanced stock management :
|
||||
// decrements the physical stock using $id_warehouse
|
||||
@@ -176,7 +179,8 @@ class OrderHistoryCore extends ObjectModel
|
||||
true
|
||||
);
|
||||
}
|
||||
StockAvailable::updateQuantity($pack_product->id, 0, (int)$pack_product->pack_quantity * $product['product_quantity'], $order->id_shop);
|
||||
if (!StockAvailable::dependsOnStock($product['id_product']))
|
||||
StockAvailable::updateQuantity($pack_product->id, 0, (int)$pack_product->pack_quantity * $product['product_quantity'], $order->id_shop);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -315,7 +315,6 @@ class AdminOrdersControllerCore extends AdminController
|
||||
$history->id_order = $order->id;
|
||||
$history->id_employee = (int)$this->context->employee->id;
|
||||
$history->changeIdOrderState($order_state->id, $order->id);
|
||||
|
||||
$carrier = new Carrier($order->id_carrier, $order->id_lang);
|
||||
$templateVars = array();
|
||||
if ($history->id_order_state == Configuration::get('PS_OS_SHIPPING') && $order->shipping_number)
|
||||
@@ -333,7 +332,19 @@ class AdminOrdersControllerCore extends AdminController
|
||||
);
|
||||
// Save all changes
|
||||
if ($history->addWithemail(true, $templateVars))
|
||||
{
|
||||
// synchronizes quantities if needed..
|
||||
if (Configuration::get('PS_ADVANCED_STOCK_MANAGEMENT'))
|
||||
{
|
||||
foreach ($order->getProducts() as $product)
|
||||
{
|
||||
if (StockAvailable::dependsOnStock($product['product_id']))
|
||||
StockAvailable::synchronize($product['product_id']);
|
||||
}
|
||||
}
|
||||
|
||||
Tools::redirectAdmin(self::$currentIndex.'&id_order='.(int)$order->id.'&vieworder&token='.$this->token);
|
||||
}
|
||||
$this->errors[] = Tools::displayError('An error occurred while changing the status or was unable to send e-mail to the customer.');
|
||||
}
|
||||
else
|
||||
|
||||
Reference in new issue
Block a user