|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- <?php
-
- namespace Lc\ShopBundle\Services;
-
- use App\Entity\OrderProductReductionCatalog;
- use App\Entity\OrderShop;
- use Doctrine\ORM\EntityManagerInterface;
- use Lc\ShopBundle\Context\DocumentInterface;
- use Lc\ShopBundle\Context\MerchantUtilsInterface;
- use Lc\ShopBundle\Context\OrderPaymentInterface;
- use Lc\ShopBundle\Context\OrderReductionCartInterface;
- use Lc\ShopBundle\Context\OrderProductInterface;
- use Lc\ShopBundle\Context\OrderReductionCreditInterface;
- use Lc\ShopBundle\Context\OrderShopInterface;
- use Lc\ShopBundle\Context\OrderStatusHistoryInterface;
- use Lc\ShopBundle\Context\OrderStatusInterface;
- use Lc\ShopBundle\Context\ProductFamilyUtilsInterface;
- use Lc\ShopBundle\Context\ReductionCartInterface;
- use Lc\ShopBundle\Context\ReductionCreditInterface;
- use Lc\ShopBundle\Context\UserInterface;
- use Lc\ShopBundle\Model\Document;
- use Lc\ShopBundle\Form\Backend\Order\OrderReductionCreditType;
- use Lc\ShopBundle\Model\ReductionCart;
- use Symfony\Component\HttpFoundation\Session\SessionInterface;
- use Symfony\Component\Security\Core\Security;
-
- trait OrderUtilsReductionTrait
- {
- public function compareOrderProductReductionCatalog($orderProductReductionCatalog1, $orderProductReductionCatalog2)
- {
- return (!$orderProductReductionCatalog1 && !$orderProductReductionCatalog2)
- || ($orderProductReductionCatalog1
- && $orderProductReductionCatalog2
- && $orderProductReductionCatalog1->getUnit() == $orderProductReductionCatalog2->getUnit()
- && (string)$orderProductReductionCatalog1->getValue() == (string)$orderProductReductionCatalog2->getValue()
- && $orderProductReductionCatalog1->getBehaviorTaxRate() == $orderProductReductionCatalog2->getBehaviorTaxRate());
- }
-
-
- public function getSummaryOrderProductReductionCatalog($orderProductReductionCatalog)
- {
- $text = '';
-
- if ($orderProductReductionCatalog) {
- if ($orderProductReductionCatalog->getUnit() == 'amount') {
- $text .= '- ' . $orderProductReductionCatalog->getValue() . ' €';
- }
-
- if ($orderProductReductionCatalog->getUnit() == 'percent') {
- $text .= '- ' . $orderProductReductionCatalog->getValue() . ' %';
- }
- }
-
- return $text;
- }
-
-
- public function createOrderReductionCart(OrderShopInterface $orderShop, ReductionCartInterface $reductionCart)
- {
- $orderReductionCartClass = $this->em->getClassMetadata(OrderReductionCartInterface::class);
- $orderReductionCart = new $orderReductionCartClass->name;
-
- $orderReductionCart->setOrderShop($orderShop);
- $orderReductionCart->setReductionCart($reductionCart);
-
- $orderReductionCart->setTitle($reductionCart->getTitle());
- $orderReductionCart->setValue($reductionCart->getValue());
- $orderReductionCart->setUnit($reductionCart->getUnit());
- $orderReductionCart->setBehaviorTaxRate($reductionCart->getBehaviorTaxRate());
- $orderReductionCart->setFreeShipping($reductionCart->getFreeShipping());
- $orderReductionCart->setAppliedTo($reductionCart->getAppliedTo());
- $orderReductionCart->setType($reductionCart->getType());
-
- $this->em->persist($orderReductionCart);
- $this->em->flush();
-
- return $orderReductionCart;
- }
-
- public function isReductionCreditAllowAddToOrder($orderShop, $reductionCredit)
- {
- $user = $orderShop->getUser() ;
-
- // appartient à l'utilisateur
- if(!$reductionCredit->getUsers()->contains($user)) {
- return false ;
- }
-
- // n'a pas été utilisé
- if ($this->orderShopRepo->countValidOrderWithReductionCredit($reductionCredit, $user) > 0) {
- return false;
- }
-
- return true;
- }
-
- public function getReductionCartRemainingQuantity($reductionCart) :float
- {
- return $reductionCart->getAvailableQuantity() - $this->orderShopRepo->countValidOrderWithReductionCart();
- }
-
- public function getReductionCartRemainingQuantityPerUser($reductionCart) :float
- {
- return $reductionCart->getAvailableQuantityPerUser() - $this->orderShopRepo->countValidOrderWithReductionCartPerUser();
- }
-
-
- public function createOrderReductionCredit(OrderShopInterface $orderShop, ReductionCreditInterface $reductionCredit)
- {
- $orderReductionCreditClass = $this->em->getClassMetadata(OrderReductionCreditInterface::class);
- $orderReductionCredit = new $orderReductionCreditClass->name;
-
- $orderReductionCredit->setOrderShop($orderShop);
- $orderReductionCredit->setReductionCredit($reductionCredit);
-
- $orderReductionCredit->setTitle($reductionCredit->getTitle());
- $orderReductionCredit->setValue($reductionCredit->getValue());
- $orderReductionCredit->setUnit($reductionCredit->getUnit());
- $orderReductionCredit->setBehaviorTaxRate($reductionCredit->getBehaviorTaxRate());
-
- $this->em->persist($orderReductionCredit);
- $this->em->flush();
-
- return $orderReductionCredit;
- }
-
- /*public function getReductionCreditsAvailable($order)
- {
- $reductionCreditRepo = $this->em->getRepository(ReductionCreditInterface::class);
-
- $reductionCredits = $reductionCreditRepo->getReductionCreditByUser($order->getUser());
- foreach ($reductionCredits as $reductionCredit){
-
- }
- }*/
-
-
- }
|