// Part of Code Review multishipping

git-svn-id: http://dev.prestashop.com/svn/v1/branches/1.5.x@13008 b9a71923-0436-4b27-9f14-aed3839534dd
This commit is contained in:
vChabot
2012-02-06 09:28:35 +00:00
parent 84ae5dd342
commit 9ef6be204a
+19 -64
View File
@@ -2128,32 +2128,6 @@ class CartCore extends ObjectModel
else else
$products = $product_list; $products = $product_list;
// Checking discounts in cart
// if (Discount::isFeatureActive())
// $discounts = $this->getDiscounts(true);
// else
// $discounts = null;
// if ($discounts)
// foreach ($discounts AS $id_discount)
// if ($id_discount['id_discount_type'] == Discount::FREE_SHIPPING)
// {
// if ($id_discount['minimal'] > 0)
// {
// $total_cart = 0;
// $categories = Discount::getCategories((int)($id_discount['id_discount']));
// if (sizeof($categories))
// foreach($complete_product_list AS $product)
// if (Product::idIsOnCategoryId((int)($product['id_product']), $categories))
// $total_cart += $product['total_wt'];
// if ($total_cart >= $id_discount['minimal'])
// return 0;
// }
// else
// return 0;
// }
// Order total in default currency without fees // Order total in default currency without fees
$order_total = $this->getOrderTotal(true, Cart::ONLY_PRODUCTS_WITHOUT_SHIPPING, $product_list); $order_total = $this->getOrderTotal(true, Cart::ONLY_PRODUCTS_WITHOUT_SHIPPING, $product_list);
@@ -2183,10 +2157,10 @@ class CartCore extends ObjectModel
$id_zone = (int)$default_country->id_zone; $id_zone = (int)$default_country->id_zone;
} }
if ($id_carrier && !$this->isCarrierInRange($id_carrier, $id_zone)) if ($id_carrier && !$this->isCarrierInRange((int)$id_carrier, (int)$id_zone))
$id_carrier = ''; $id_carrier = '';
if (empty($id_carrier) && $this->isCarrierInRange(Configuration::get('PS_CARRIER_DEFAULT'), $id_zone)) if (empty($id_carrier) && $this->isCarrierInRange((int)Configuration::get('PS_CARRIER_DEFAULT'), (int)$id_zone))
$id_carrier = (int)Configuration::get('PS_CARRIER_DEFAULT'); $id_carrier = (int)Configuration::get('PS_CARRIER_DEFAULT');
if (empty($id_carrier)) if (empty($id_carrier))
@@ -2211,8 +2185,8 @@ class CartCore extends ObjectModel
$carrier = self::$_carriers[$row['id_carrier']]; $carrier = self::$_carriers[$row['id_carrier']];
// Get only carriers that are compliant with shipping method // Get only carriers that are compliant with shipping method
if (($carrier->getShippingMethod() == Carrier::SHIPPING_METHOD_WEIGHT && $carrier->getMaxDeliveryPriceByWeight($id_zone) === false) if (($carrier->getShippingMethod() == Carrier::SHIPPING_METHOD_WEIGHT && $carrier->getMaxDeliveryPriceByWeight((int)$id_zone) === false)
|| ($carrier->getShippingMethod() == Carrier::SHIPPING_METHOD_PRICE && $carrier->getMaxDeliveryPriceByPrice($id_zone) === false)) || ($carrier->getShippingMethod() == Carrier::SHIPPING_METHOD_PRICE && $carrier->getMaxDeliveryPriceByPrice((int)$id_zone) === false))
{ {
unset($result[$k]); unset($result[$k]);
continue; continue;
@@ -2221,21 +2195,10 @@ class CartCore extends ObjectModel
// If out-of-range behavior carrier is set on "Desactivate carrier" // If out-of-range behavior carrier is set on "Desactivate carrier"
if ($row['range_behavior']) if ($row['range_behavior'])
{ {
$check_delivery_price_by_weight = Carrier::checkDeliveryPriceByWeight( $check_delivery_price_by_weight = Carrier::checkDeliveryPriceByWeight($row['id_carrier'], $this->getTotalWeight(), (int)$id_zone);
$row['id_carrier'],
$this->getTotalWeight(),
$id_zone
);
$check_delivery_price_by_price = Carrier::checkDeliveryPriceByPrice( $total_order = $this->getOrderTotal(true, Cart::BOTH_WITHOUT_SHIPPING);
$row['id_carrier'], $check_delivery_price_by_price = Carrier::checkDeliveryPriceByPrice($row['id_carrier'], $total_order, (int)$id_zone, (int)$this->id_currency);
$this->getOrderTotal(
true,
Cart::BOTH_WITHOUT_SHIPPING
),
$id_zone,
(int)$this->id_currency
);
// Get only carriers that have a range compatible with cart // Get only carriers that have a range compatible with cart
if (($carrier->getShippingMethod() == Carrier::SHIPPING_METHOD_WEIGHT && !$check_delivery_price_by_weight) if (($carrier->getShippingMethod() == Carrier::SHIPPING_METHOD_WEIGHT && !$check_delivery_price_by_weight)
@@ -2247,9 +2210,9 @@ class CartCore extends ObjectModel
} }
if ($carrier->getShippingMethod() == Carrier::SHIPPING_METHOD_WEIGHT) if ($carrier->getShippingMethod() == Carrier::SHIPPING_METHOD_WEIGHT)
$shipping = $carrier->getDeliveryPriceByWeight($this->getTotalWeight($product_list), $id_zone); $shipping = $carrier->getDeliveryPriceByWeight($this->getTotalWeight($product_list), (int)$id_zone);
else else
$shipping = $carrier->getDeliveryPriceByPrice($order_total, $id_zone, (int)$this->id_currency); $shipping = $carrier->getDeliveryPriceByPrice($order_total, (int)$id_zone, (int)$this->id_currency);
if (!isset($min_shipping_price)) if (!isset($min_shipping_price))
$min_shipping_price = $shipping; $min_shipping_price = $shipping;
@@ -2266,7 +2229,7 @@ class CartCore extends ObjectModel
$id_carrier = Configuration::get('PS_CARRIER_DEFAULT'); $id_carrier = Configuration::get('PS_CARRIER_DEFAULT');
if (!isset(self::$_carriers[$id_carrier])) if (!isset(self::$_carriers[$id_carrier]))
self::$_carriers[$id_carrier] = new Carrier($id_carrier, Configuration::get('PS_LANG_DEFAULT')); self::$_carriers[$id_carrier] = new Carrier((int)$id_carrier, Configuration::get('PS_LANG_DEFAULT'));
$carrier = self::$_carriers[$id_carrier]; $carrier = self::$_carriers[$id_carrier];
@@ -2284,22 +2247,17 @@ class CartCore extends ObjectModel
if ($use_tax && !Tax::excludeTaxeOption()) if ($use_tax && !Tax::excludeTaxeOption())
$carrier_tax = $carrier->getTaxesRate(new Address((int)$this->{Configuration::get('PS_TAX_ADDRESS_TYPE')})); $carrier_tax = $carrier->getTaxesRate(new Address((int)$this->{Configuration::get('PS_TAX_ADDRESS_TYPE')}));
$configuration = Configuration::getMultiple( $configuration = Configuration::getMultiple(array(
array( 'PS_SHIPPING_FREE_PRICE',
'PS_SHIPPING_FREE_PRICE', 'PS_SHIPPING_HANDLING',
'PS_SHIPPING_HANDLING', 'PS_SHIPPING_METHOD',
'PS_SHIPPING_METHOD', 'PS_SHIPPING_FREE_WEIGHT'
'PS_SHIPPING_FREE_WEIGHT' ));
)
);
// Free fees // Free fees
$free_fees_price = 0; $free_fees_price = 0;
if (isset($configuration['PS_SHIPPING_FREE_PRICE'])) if (isset($configuration['PS_SHIPPING_FREE_PRICE']))
$free_fees_price = Tools::convertPrice( $free_fees_price = Tools::convertPrice((float)$configuration['PS_SHIPPING_FREE_PRICE'], Currency::getCurrencyInstance((int)$this->id_currency));
(float)$configuration['PS_SHIPPING_FREE_PRICE'],
Currency::getCurrencyInstance((int)$this->id_currency)
);
if (isset($configuration['PS_SHIPPING_FREE_WEIGHT']) if (isset($configuration['PS_SHIPPING_FREE_WEIGHT'])
&& $this->getTotalWeight() >= (float)$configuration['PS_SHIPPING_FREE_WEIGHT'] && $this->getTotalWeight() >= (float)$configuration['PS_SHIPPING_FREE_WEIGHT']
@@ -2317,12 +2275,9 @@ class CartCore extends ObjectModel
else else
$id_zone = (int)$default_country->id_zone; $id_zone = (int)$default_country->id_zone;
$check_delivery_price_by_weight = Carrier::checkDeliveryPriceByWeight( $check_delivery_price_by_weight = Carrier::checkDeliveryPriceByWeight((int)$carrier->id, $this->getTotalWeight(), (int)$id_zone);
$carrier->id,
$this->getTotalWeight(),
$id_zone
);
// Code Review V&V TO FINISH
$check_delivery_price_by_price = Carrier::checkDeliveryPriceByPrice( $check_delivery_price_by_price = Carrier::checkDeliveryPriceByPrice(
$carrier->id, $carrier->id,
$this->getOrderTotal( $this->getOrderTotal(