@@ -15,6 +15,7 @@ use Lc\ShopBundle\Context\ReductionCartInterface; | |||
use Lc\ShopBundle\Model\OrderReductionCart; | |||
use Lc\ShopBundle\Model\ProductFamily; | |||
use Lc\ShopBundle\Services\UserUtils; | |||
use Lc\ShopBundle\Services\UtilsManager; | |||
use Symfony\Component\HttpFoundation\JsonResponse; | |||
use Symfony\Component\HttpFoundation\Request; | |||
use Symfony\Component\Routing\Generator\UrlGenerator; | |||
@@ -25,6 +26,7 @@ class CartController extends BaseController | |||
{ | |||
protected $orderUtils ; | |||
protected $userUtils ; | |||
protected $priceUtils ; | |||
protected $router ; | |||
protected $productFamilyRepository ; | |||
protected $orderProductRepository ; | |||
@@ -33,12 +35,13 @@ class CartController extends BaseController | |||
protected $orderProducts = [] ; | |||
public function __construct(EntityManagerInterface $em, Security $security, MerchantUtilsInterface $merchantUtils, OrderUtilsInterface $orderUtils, | |||
UserUtils $userUtils, UrlGeneratorInterface $router) | |||
public function __construct(EntityManagerInterface $em, Security $security, MerchantUtilsInterface $merchantUtils, | |||
UrlGeneratorInterface $router, UtilsManager $utilsManager) | |||
{ | |||
parent::__construct($em, $security, $merchantUtils); | |||
$this->orderUtils = $orderUtils ; | |||
$this->userUtils = $userUtils ; | |||
$this->orderUtils = $utilsManager->getOrderUtils() ; | |||
$this->userUtils = $utilsManager->getUserUtils() ; | |||
$this->priceUtils = $utilsManager->getPriceUtils() ; | |||
$this->router = $router ; | |||
$this->productFamilyRepository = $this->em->getRepository($this->em->getClassMetaData(ProductFamilyInterface::class)->getName()) ; | |||
$this->orderProductRepository = $this->em->getRepository($this->em->getClassMetaData(OrderProductInterface::class)->getName()) ; | |||
@@ -130,8 +133,14 @@ class CartController extends BaseController | |||
&& $this->orderUtils->isReductionCreditAllowAddToOrder($orderShop, $reductionCredit) | |||
&& !$this->orderUtils->isReductionCreditAddedToOrder($orderShop, $reductionCredit)) { | |||
$this->orderUtils->createOrderReductionCredit($orderShop, $reductionCredit) ; | |||
$this->addFlash('success', 'Votre avoir a bien été ajouté à votre panier.') ; | |||
$return = $this->orderUtils->createOrderReductionCredit($orderShop, $reductionCredit) ; | |||
if($return) { | |||
$this->addFlash('success', 'Votre avoir a bien été ajouté à votre panier.') ; | |||
} | |||
else { | |||
$this->addFlash('error', 'Vous ne pouvez pas effectuer cette action. Le montant de la commande est insuffisant.') ; | |||
} | |||
} | |||
else { | |||
$this->addFlash('error', "Impossible d'effectuer cette action"); |
@@ -98,6 +98,7 @@ error: | |||
amountMin: Le montant minimum de commandes n'est pas respecté | |||
qauntity: La réduction n'est plus disponible | |||
quantityPerUser: La reduction n'est plus disponible pour cet utilisateur | |||
alreadyInCart: La réduction a déjà été ajoutée à votre panier | |||
reductionCredit: | |||
userNotAllow: Cet avoir n'est pas disponible pour cet utilisateur | |||
alreayUse: Cet avoir a déjà été utilisé |
@@ -163,16 +163,12 @@ class OrderUtils | |||
if (!$updated) { | |||
$orderShop->addOrderProduct($orderProductAdd); | |||
if (isset($orderProductReductionCatalog)) { | |||
$this->em->persist($orderProductReductionCatalog); | |||
if ($persist) { | |||
if (isset($orderProductReductionCatalog)) { | |||
$this->em->persist($orderProductReductionCatalog); | |||
} | |||
$this->em->persist($orderProductAdd); | |||
$this->em->persist($orderShop); | |||
if ($persist) { | |||
if (isset($orderProductReductionCatalog)) { | |||
$this->em->persist($orderProductReductionCatalog); | |||
} | |||
$this->em->persist($orderProductAdd); | |||
$this->em->persist($orderShop); | |||
} | |||
$return = true; | |||
@@ -181,6 +177,8 @@ class OrderUtils | |||
if ($persist) { | |||
$this->em->flush(); | |||
} | |||
$this->eventOrderShopChangeQuantity($orderShop) ; | |||
} | |||
} | |||
else { | |||
@@ -337,4 +335,13 @@ class OrderUtils | |||
return $orderProductsByProductFamily; | |||
} | |||
public function isOrderShopPositiveAmount(OrderShopInterface $orderShop) | |||
{ | |||
return $this->priceUtils->getTotalWithTax($orderShop) > 0 ; | |||
} | |||
public function eventOrderShopChangeQuantity(OrderShopInterface $orderShop) | |||
{ | |||
} | |||
} |
@@ -55,10 +55,15 @@ trait OrderUtilsReductionTrait | |||
$orderReductionCart->setAppliedTo($reductionCart->getAppliedTo()); | |||
$orderReductionCart->setType($reductionCart->getType()); | |||
$this->em->persist($orderReductionCart); | |||
$this->em->flush(); | |||
$orderShop->addOrderReductionCart($orderReductionCart) ; | |||
return $orderReductionCart; | |||
if($this->isOrderShopPositiveAmount($orderShop)) { | |||
$this->em->persist($orderReductionCart); | |||
$this->em->flush(); | |||
return $orderReductionCart ; | |||
} | |||
return false; | |||
} | |||
public function isReductionCreditAllowAddToOrder($orderShop, $reductionCredit) | |||
@@ -74,7 +79,6 @@ trait OrderUtilsReductionTrait | |||
// n'a pas été utilisé | |||
if ($this->orderShopRepo->countValidOrderWithReductionCredit($reductionCredit, $user) > 0) { | |||
$this->utils->addFlash('error', 'error.reductionCredit.alreadyUse'); | |||
return false; | |||
} | |||
@@ -105,10 +109,15 @@ trait OrderUtilsReductionTrait | |||
$orderReductionCredit->setUnit($reductionCredit->getUnit()); | |||
$orderReductionCredit->setBehaviorTaxRate($reductionCredit->getBehaviorTaxRate()); | |||
$this->em->persist($orderReductionCredit); | |||
$this->em->flush(); | |||
$orderShop->addOrderReductionCredit($orderReductionCredit) ; | |||
return $orderReductionCredit; | |||
if($this->isOrderShopPositiveAmount($orderShop)) { | |||
$this->em->persist($orderReductionCredit); | |||
$this->em->flush(); | |||
return $orderReductionCredit; | |||
} | |||
return false ; | |||
} | |||
/*public function getReductionCreditsAvailable($order) |
@@ -106,18 +106,41 @@ class OrderShopPriceUtils implements OrderShopPriceUtilsInterface | |||
public function getTotalOrderProductsWithReductions(OrderShopInterface $orderShop) | |||
{ | |||
$total = $this->getTotalOrderProducts($orderShop) ; | |||
$total -= $this->getTotalReductionCartsAmount($orderShop) ; | |||
$total -= $this->getTotalReductionCreditsAmount($orderShop) ; | |||
return $total ; | |||
} | |||
public function getTotalOrderProductsWithReductionCarts(OrderShopInterface $orderShop) | |||
{ | |||
$total = $this->getTotalOrderProducts($orderShop) ; | |||
$total -= $this->getTotalReductionCartsAmount($orderShop) ; | |||
return $total ; | |||
} | |||
public function getTotalReductionCartsAmount(OrderShopInterface $orderShop) | |||
{ | |||
$totalReductionAmount = 0 ; | |||
foreach ($orderShop->getOrderReductionCarts() as $orderReductionCart) { | |||
$totalReductionAmount += $this->getOrderProductsReductionCartAmountWithoutTax($orderShop,$orderReductionCart); | |||
} | |||
return $totalReductionAmount ; | |||
} | |||
public function getTotalReductionCreditsAmount(OrderShopInterface $orderShop) | |||
{ | |||
$totalReductionAmount = 0 ; | |||
foreach ($orderShop->getOrderReductionCredits() as $orderReductionCredit) { | |||
$totalReductionAmount += $this->getOrderProductsReductionCreditAmountWithoutTax($orderShop,$orderReductionCredit); | |||
} | |||
return $totalReductionAmount ; | |||
} | |||
$total -= $totalReductionAmount ; | |||
public function getTotalOrderProductsWithTaxAndReductions(OrderShopInterface $orderShop) | |||
{ | |||
$total = $this->getTotalOrderProductsWithTax($orderShop) ; | |||
$total -= $this->getTotalReductionCartsAmountWithTax($orderShop) ; | |||
$total -= $this->getTotalReductionCreditsAmountWithTax($orderShop) ; | |||
return $total ; | |||
} | |||
@@ -141,22 +164,29 @@ class OrderShopPriceUtils implements OrderShopPriceUtilsInterface | |||
} | |||
public function getTotalOrderProductsWithTaxAndReductions(OrderShopInterface $orderShop) | |||
public function getTotalOrderProductsWithTaxAndReductionCarts(OrderShopInterface $orderShop) | |||
{ | |||
$total = $this->getTotalOrderProductsWithTax($orderShop) ; | |||
$total -= $this->getTotalReductionCartsAmountWithTax($orderShop) ; | |||
return $total ; | |||
} | |||
public function getTotalReductionCartsAmountWithTax(OrderShopInterface $orderShop) | |||
{ | |||
$totalReductionAmount = 0 ; | |||
foreach ($orderShop->getOrderReductionCarts() as $orderReductionCart) { | |||
$totalReductionAmount += $this->getOrderProductsReductionCartAmountWithTax($orderShop,$orderReductionCart); | |||
} | |||
return $totalReductionAmount ; | |||
} | |||
public function getTotalReductionCreditsAmountWithTax(OrderShopInterface $orderShop) | |||
{ | |||
$totalReductionAmount = 0 ; | |||
foreach ($orderShop->getOrderReductionCredits() as $orderReductionCredit) { | |||
$totalReductionAmount += $this->getOrderProductsReductionCreditAmountWithTax($orderShop,$orderReductionCredit); | |||
} | |||
$total -= $totalReductionAmount ; | |||
return $total ; | |||
return $totalReductionAmount ; | |||
} | |||
public function getOrderProductsReductionCartAmountWithoutTax(OrderShopInterface $order, $orderReductionCart) |