diff --git a/core/lib/Thelia/Action/Cart.php b/core/lib/Thelia/Action/Cart.php index 5549f3eb3..22760a4c7 100755 --- a/core/lib/Thelia/Action/Cart.php +++ b/core/lib/Thelia/Action/Cart.php @@ -65,7 +65,7 @@ class Cart extends BaseAction implements EventSubscriberInterface ->filterByProductSaleElementsId($productSaleElementsId) ->findOne(); - $this->doAddItem($cart, $productId, $productSaleElementsId, $quantity, $productPrice); + $this->doAddItem($cart, $productId, $productPrice->getProductSaleElements(), $quantity, $productPrice); } if ($append && $cartItem !== null) { @@ -166,17 +166,18 @@ class Cart extends BaseAction implements EventSubscriberInterface * @param float $quantity * @param ProductPrice $productPrice */ - protected function doAddItem(\Thelia\Model\Cart $cart, $productId, $productSaleElementsId, $quantity, ProductPrice $productPrice) + protected function doAddItem(\Thelia\Model\Cart $cart, $productId, \Thelia\Model\ProductSaleElements $productSaleElements, $quantity, ProductPrice $productPrice) { $cartItem = new CartItem(); $cartItem->setDisptacher($this->getDispatcher()); $cartItem ->setCart($cart) ->setProductId($productId) - ->setProductSaleElementsId($productSaleElementsId) + ->setProductSaleElementsId($productSaleElements->getId()) ->setQuantity($quantity) ->setPrice($productPrice->getPrice()) ->setPromoPrice($productPrice->getPromoPrice()) + ->setPromo($productSaleElements->getPromo()) ->setPriceEndOfLife(time() + ConfigQuery::read("cart.priceEOF", 60*60*24*30)) ->save(); } diff --git a/core/lib/Thelia/Model/Cart.php b/core/lib/Thelia/Model/Cart.php index dcb65f88e..1cf55089f 100755 --- a/core/lib/Thelia/Model/Cart.php +++ b/core/lib/Thelia/Model/Cart.php @@ -44,16 +44,18 @@ class Cart extends BaseCart $item->setQuantity($cartItem->getQuantity()); $item->setProductSaleElements($productSaleElements); if ($currentDateTime <= $cartItem->getPriceEndOfLife()) { - $item->setPrice($cartItem->getPrice()); - $item->setPromoPrice($cartItem->getPromoPrice()); + $item->setPrice($cartItem->getPrice()) + ->setPromoPrice($cartItem->getPromoPrice()) + ->setPromo($productSaleElements->getPromo()) // TODO : new price EOF or duplicate current priceEOF from $cartItem ? - $item->setPriceEndOfLife($cartItem->getPriceEndOfLife()); + ->setPriceEndOfLife($cartItem->getPriceEndOfLife()); } else { $productPrices = ProductPriceQuery::create()->filterByProductSaleElements($productSaleElements)->findOne(); - $item->setPrice($productPrices->getPrice()); - $item->setPromoPrice($productPrices->getPromoPrice()); - $item->setPriceEndOfLife(time() + ConfigQuery::read("cart.priceEOF", 60*60*24*30)); + $item->setPrice($productPrices->getPrice()) + ->setPromoPrice($productPrices->getPromoPrice()) + ->setPromo($productSaleElements->getPromo()) + ->setPriceEndOfLife(time() + ConfigQuery::read("cart.priceEOF", 60*60*24*30)); } $item->save(); }