[-] BO : Fix bug #PSCFV-8619 update order weight when modifying products

This commit is contained in:
gRoussac
2013-07-01 11:32:09 +02:00
parent c90e574cb8
commit f824b537cf
4 changed files with 78 additions and 16 deletions
@@ -24,11 +24,11 @@
*} *}
<table class="table" width="100%" cellspacing="0" cellpadding="0" id="shipping_table"> <table class="table" width="100%" cellspacing="0" cellpadding="0" id="shipping_table">
<colgroup> <colgroup>
<col width="15%"> <col width="15%"/>
<col width="15%"> <col width="15%"/>
<col width=""> <col width=""/>
<col width="10%"> <col width="10%"/>
<col width="20%"> <col width="20%"/>
</colgroup> </colgroup>
<thead> <thead>
<tr> <tr>
@@ -46,7 +46,7 @@
<td>{dateFormat date=$line.date_add full=true}</td> <td>{dateFormat date=$line.date_add full=true}</td>
<td>{$line.type}</td> <td>{$line.type}</td>
<td>{$line.carrier_name}</td> <td>{$line.carrier_name}</td>
<td>{$line.weight|string_format:"%.3f"} {Configuration::get('PS_WEIGHT_UNIT')}</td> <td class="weight">{$line.weight|string_format:"%.3f"} {Configuration::get('PS_WEIGHT_UNIT')}</td>
<td> <td>
{if $order->getTaxCalculationMethod() == $smarty.const.PS_TAX_INC} {if $order->getTaxCalculationMethod() == $smarty.const.PS_TAX_INC}
{displayPrice price=$line.shipping_cost_tax_incl currency=$currency->id} {displayPrice price=$line.shipping_cost_tax_incl currency=$currency->id}
+19 -4
View File
@@ -1237,12 +1237,11 @@ class OrderCore extends ObjectModel
public function getTotalWeight() public function getTotalWeight()
{ {
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow(' $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
SELECT SUM(product_weight * product_quantity) weight SELECT SUM(product_weight * product_quantity)
FROM '._DB_PREFIX_.'order_detail FROM '._DB_PREFIX_.'order_detail
WHERE id_order = '.(int)($this->id)); WHERE id_order = '.(int)($this->id));
return (float)($result);
return (float)($result['weight']);
} }
/** /**
@@ -1881,5 +1880,21 @@ class OrderCore extends ObjectModel
$order = new Order($id_order); $order = new Order($id_order);
return $order->getUniqReference(); return $order->getUniqReference();
} }
/**
* Return a unique reference like : GWJTHMZUN#2
*
* With multishipping, order reference are the same for all orders made with the same cart
* in this case this method suffix the order reference by a # and the order number
*
* @since 1.5.5.0
*/
public function getIdOrderCarrier()
{
return (int)Db::getInstance()->getValue('
SELECT `id_order_carrier`
FROM `'._DB_PREFIX_.'order_carrier`
WHERE `id_order` = '.(int)$this->id);
}
} }
+49 -6
View File
@@ -489,6 +489,14 @@ class AdminOrdersControllerCore extends AdminController
if ($shipping_cost_amount > 0) if ($shipping_cost_amount > 0)
$amount += $shipping_cost_amount; $amount += $shipping_cost_amount;
$order_carrier = new OrderCarrier((int)$order->getIdOrderCarrier());
if (Validate::isLoadedObject($order_carrier))
{
$order_carrier->weight = (float)$order->getTotalWeight();
if ($order_carrier->update())
$order->weight = sprintf("%.3f ".Configuration::get('PS_WEIGHT_UNIT'), $order_carrier->weight);
}
if ($amount > 0) if ($amount > 0)
{ {
if (!OrderSlip::createPartialOrderSlip($order, $amount, $shipping_cost_amount, $order_detail_list)) if (!OrderSlip::createPartialOrderSlip($order, $amount, $shipping_cost_amount, $order_detail_list))
@@ -656,6 +664,14 @@ class AdminOrdersControllerCore extends AdminController
$order_detail = new OrderDetail((int)$id_order_detail); $order_detail = new OrderDetail((int)$id_order_detail);
if (!$order->deleteProduct($order, $order_detail, $qty_cancel_product)) if (!$order->deleteProduct($order, $order_detail, $qty_cancel_product))
$this->errors[] = Tools::displayError('An error occurred while attempting to delete the product.').' <span class="bold">'.$order_detail->product_name.'</span>'; $this->errors[] = Tools::displayError('An error occurred while attempting to delete the product.').' <span class="bold">'.$order_detail->product_name.'</span>';
// Update weight SUM
$order_carrier = new OrderCarrier((int)$order->getIdOrderCarrier());
if (Validate::isLoadedObject($order_carrier))
{
$order_carrier->weight = (float)$order->getTotalWeight();
if ($order_carrier->update())
$order->weight = sprintf("%.3f ".Configuration::get('PS_WEIGHT_UNIT'), $order_carrier->weight);
}
Hook::exec('actionProductCancel', array('order' => $order, 'id_order_detail' => (int)$id_order_detail)); Hook::exec('actionProductCancel', array('order' => $order, 'id_order_detail' => (int)$id_order_detail));
} }
if (!count($this->errors) && $customizationList) if (!count($this->errors) && $customizationList)
@@ -914,13 +930,10 @@ class AdminOrdersControllerCore extends AdminController
$order_detail->updateTaxAmount($order); $order_detail->updateTaxAmount($order);
} }
$id_order_carrier = Db::getInstance()->getValue(' $id_order_carrier = (int)$order->getIdOrderCarrier();
SELECT `id_order_carrier`
FROM `'._DB_PREFIX_.'order_carrier`
WHERE `id_order` = '.(int)$order->id);
if ($id_order_carrier) if ($id_order_carrier)
{ {
$order_carrier = new OrderCarrier($id_order_carrier); $order_carrier = $order_carrier = new OrderCarrier((int)$order->getIdOrderCarrier());
$order_carrier->shipping_cost_tax_excl = (float)Tools::convertPriceFull($order_carrier->shipping_cost_tax_excl, $old_currency, $currency); $order_carrier->shipping_cost_tax_excl = (float)Tools::convertPriceFull($order_carrier->shipping_cost_tax_excl, $old_currency, $currency);
$order_carrier->shipping_cost_tax_incl = (float)Tools::convertPriceFull($order_carrier->shipping_cost_tax_incl, $old_currency, $currency); $order_carrier->shipping_cost_tax_incl = (float)Tools::convertPriceFull($order_carrier->shipping_cost_tax_incl, $old_currency, $currency);
$order_carrier->update(); $order_carrier->update();
@@ -1697,6 +1710,15 @@ class AdminOrdersControllerCore extends AdminController
// Save changes of order // Save changes of order
$order->update(); $order->update();
// Update weight SUM
$order_carrier = new OrderCarrier((int)$order->getIdOrderCarrier());
if (Validate::isLoadedObject($order_carrier))
{
$order_carrier->weight = (float)$order->getTotalWeight();
if ($order_carrier->update())
$order->weight = sprintf("%.3f ".Configuration::get('PS_WEIGHT_UNIT'), $order_carrier->weight);
}
// Update Tax lines // Update Tax lines
$order_detail->updateTaxAmount($order); $order_detail->updateTaxAmount($order);
@@ -1904,6 +1926,17 @@ class AdminOrdersControllerCore extends AdminController
// Save order detail // Save order detail
$res &= $order_detail->update(); $res &= $order_detail->update();
// Update weight SUM
$order_carrier = new OrderCarrier((int)$order->getIdOrderCarrier());
if (Validate::isLoadedObject($order_carrier))
{
$order_carrier->weight = (float)$order->getTotalWeight();
$res &= $order_carrier->update();
if ($res)
$order->weight = sprintf("%.3f ".Configuration::get('PS_WEIGHT_UNIT'), $order_carrier->weight);
}
// Save order invoice // Save order invoice
if (isset($order_invoice)) if (isset($order_invoice))
$res &= $order_invoice->update(); $res &= $order_invoice->update();
@@ -1996,12 +2029,22 @@ class AdminOrdersControllerCore extends AdminController
$order->total_products_wt -= $order_detail->total_price_tax_incl; $order->total_products_wt -= $order_detail->total_price_tax_incl;
$res &= $order->update(); $res &= $order->update();
// Reinject quantity in stock // Reinject quantity in stock
$this->reinjectQuantity($order_detail, $order_detail->product_quantity); $this->reinjectQuantity($order_detail, $order_detail->product_quantity);
// Delete OrderDetail // Delete OrderDetail
$res &= $order_detail->delete(); $res &= $order_detail->delete();
// Update weight SUM
$order_carrier = new OrderCarrier((int)$order->getIdOrderCarrier());
if (Validate::isLoadedObject($order_carrier))
{
$order_carrier->weight = (float)$order->getTotalWeight();
$res &= $order_carrier->update();
if ($res)
$order->weight = sprintf("%.3f ".Configuration::get('PS_WEIGHT_UNIT'), $order_carrier->weight);
}
if (!$res) if (!$res)
die(Tools::jsonEncode(array( die(Tools::jsonEncode(array(
+4
View File
@@ -268,6 +268,10 @@ function updateAmounts(order)
$(this).html(old_quantity + 1); $(this).html(old_quantity + 1);
$(this).fadeIn('slow'); $(this).fadeIn('slow');
}); });
$('#shipping_table .weight').fadeOut('slow', function() {
$(this).html(order.weight);
$(this).fadeIn('slow');
});
} }
function closeAddProduct() function closeAddProduct()