From 26f31f52dc8c8b14875f9fcfb4bddb6c6db4144a Mon Sep 17 00:00:00 2001 From: aFolletete Date: Wed, 14 Sep 2011 09:18:18 +0000 Subject: [PATCH] [-] Classes : Fixed bug on Feature detachables and Customizations --- classes/Product.php | 60 +++++++++++++++------------ controllers/OrderDetailController.php | 2 +- themes/prestashop/order-detail.tpl | 6 ++- 3 files changed, 39 insertions(+), 29 deletions(-) diff --git a/classes/Product.php b/classes/Product.php index a3d4223f0..ebe395095 100644 --- a/classes/Product.php +++ b/classes/Product.php @@ -2961,36 +2961,42 @@ class ProductCore extends ObjectModel public static function addCustomizationPrice(&$products, &$customizedDatas) { - if (!Customization::isFeatureActive()) - return; - foreach ($products AS &$productUpdate) { - $customizationQuantity = 0; - $customizationQuantityRefunded = 0; - $customizationQuantityReturned = 0; - /* Compatibility */ - $productId = (int)(isset($productUpdate['id_product']) ? $productUpdate['id_product'] : $productUpdate['product_id']); - $productAttributeId = (int)(isset($productUpdate['id_product_attribute']) ? $productUpdate['id_product_attribute'] : $productUpdate['product_attribute_id']); - $productQuantity = (int)(isset($productUpdate['cart_quantity']) ? $productUpdate['cart_quantity'] : $productUpdate['product_quantity']); - $price = isset($productUpdate['price']) ? $productUpdate['price'] : $productUpdate['product_price']; - $priceWt = $price * (1 + ((isset($productUpdate['tax_rate']) ? $productUpdate['tax_rate'] : $productUpdate['rate']) * 0.01)); - if (isset($customizedDatas[$productId][$productAttributeId])) - foreach ($customizedDatas[$productId][$productAttributeId] AS $customization) - { - $customizationQuantity += (int)($customization['quantity']); - $customizationQuantityRefunded += (int)($customization['quantity_refunded']); - $customizationQuantityReturned += (int)($customization['quantity_returned']); - } - $productUpdate['customizationQuantityTotal'] = $customizationQuantity; - $productUpdate['customizationQuantityRefunded'] = $customizationQuantityRefunded; - $productUpdate['customizationQuantityReturned'] = $customizationQuantityReturned; - if ($customizationQuantity) + if (!Customization::isFeatureActive()) { - $productUpdate['total_wt'] = $priceWt * ($productQuantity - $customizationQuantity); - $productUpdate['total_customization_wt'] = $priceWt * $customizationQuantity; - $productUpdate['total'] = $price * ($productQuantity - $customizationQuantity); - $productUpdate['total_customization'] = $price * $customizationQuantity; + $productUpdate['customizationQuantityTotal'] = 0; + $productUpdate['customizationQuantityRefunded'] = 0; + $productUpdate['customizationQuantityReturned'] = 0; + } + else + { + $customizationQuantity = 0; + $customizationQuantityRefunded = 0; + $customizationQuantityReturned = 0; + /* Compatibility */ + $productId = (int)(isset($productUpdate['id_product']) ? $productUpdate['id_product'] : $productUpdate['product_id']); + $productAttributeId = (int)(isset($productUpdate['id_product_attribute']) ? $productUpdate['id_product_attribute'] : $productUpdate['product_attribute_id']); + $productQuantity = (int)(isset($productUpdate['cart_quantity']) ? $productUpdate['cart_quantity'] : $productUpdate['product_quantity']); + $price = isset($productUpdate['price']) ? $productUpdate['price'] : $productUpdate['product_price']; + $priceWt = $price * (1 + ((isset($productUpdate['tax_rate']) ? $productUpdate['tax_rate'] : $productUpdate['rate']) * 0.01)); + if (isset($customizedDatas[$productId][$productAttributeId])) + foreach ($customizedDatas[$productId][$productAttributeId] AS $customization) + { + $customizationQuantity += (int)($customization['quantity']); + $customizationQuantityRefunded += (int)($customization['quantity_refunded']); + $customizationQuantityReturned += (int)($customization['quantity_returned']); + } + $productUpdate['customizationQuantityTotal'] = $customizationQuantity; + $productUpdate['customizationQuantityRefunded'] = $customizationQuantityRefunded; + $productUpdate['customizationQuantityReturned'] = $customizationQuantityReturned; + if ($customizationQuantity) + { + $productUpdate['total_wt'] = $priceWt * ($productQuantity - $customizationQuantity); + $productUpdate['total_customization_wt'] = $priceWt * $customizationQuantity; + $productUpdate['total'] = $price * ($productQuantity - $customizationQuantity); + $productUpdate['total_customization'] = $price * $customizationQuantity; + } } } } diff --git a/controllers/OrderDetailController.php b/controllers/OrderDetailController.php index 81ae4010b..1e116c744 100644 --- a/controllers/OrderDetailController.php +++ b/controllers/OrderDetailController.php @@ -167,7 +167,7 @@ class OrderDetailControllerCore extends FrontController 'messages' => CustomerMessage::getMessagesByOrderId((int)($order->id)), 'CUSTOMIZE_FILE' => Product::CUSTOMIZE_FILE, 'CUSTOMIZE_TEXTFIELD' => _CUSTOMIZE_TEXTFIELD_, - 'isRecyclable' => Configuration::get('PS_RECYCLABLE_PACK'), + 'isRecyclable' => Configuration::get('PS_RECYCLABLE_PACK'), 'use_tax' => Configuration::get('PS_TAX'), 'group_use_tax' => (Group::getPriceDisplayMethod($customer->id_default_group) == PS_TAX_INC), 'customizedDatas' => $customizedDatas)); diff --git a/themes/prestashop/order-detail.tpl b/themes/prestashop/order-detail.tpl index fc5a6eb4d..5a03f7f2b 100644 --- a/themes/prestashop/order-detail.tpl +++ b/themes/prestashop/order-detail.tpl @@ -168,7 +168,11 @@ {if !isset($product.deleted)} {assign var='productId' value=$product.product_id} {assign var='productAttributeId' value=$product.product_attribute_id} - {if isset($customizedDatas.$productId.$productAttributeId)}{assign var='productQuantity' value=$product.product_quantity-$product.customizationQuantityTotal}{else}{assign var='productQuantity' value=$product.product_quantity}{/if} + {if isset($customizedDatas.$productId.$productAttributeId)} + {assign var='productQuantity' value=$product.product_quantity-$product.customizationQuantityTotal} + {else} + {assign var='productQuantity' value=$product.product_quantity} + {/if} {if isset($customizedDatas.$productId.$productAttributeId)}