Ejemplo n.º 1
0
 /**
  * @param ModelOrder $order
  * @throws \Exception
  * @throws \Propel\Runtime\Exception\PropelException
  */
 protected function updateQuantityForPaidOrder(ModelOrder $order)
 {
     $paymentModule = ModuleQuery::create()->findPk($order->getPaymentModuleId());
     /** @var \Thelia\Module\PaymentModuleInterface $paymentModuleInstance */
     $paymentModuleInstance = $paymentModule->createInstance();
     if (false === $paymentModuleInstance->manageStockOnCreation()) {
         $orderProductList = $order->getOrderProducts();
         /** @var OrderProduct  $orderProduct */
         foreach ($orderProductList as $orderProduct) {
             $productSaleElementsId = $orderProduct->getProductSaleElementsId();
             /** @var ProductSaleElements $productSaleElements */
             if (null !== ($productSaleElements = ProductSaleElementsQuery::create()->findPk($productSaleElementsId))) {
                 /* check still in stock */
                 if ($orderProduct->getQuantity() > $productSaleElements->getQuantity() && true === ConfigQuery::checkAvailableStock()) {
                     throw new TheliaProcessException($productSaleElements->getRef() . " : Not enough stock");
                 }
                 $productSaleElements->setQuantity($productSaleElements->getQuantity() - $orderProduct->getQuantity());
                 $productSaleElements->save();
             }
         }
     }
 }
Ejemplo n.º 2
0
 /**
  * Check if this module is the payment module for a given order
  *
  * @param  Order $order an order
  * @return bool  true if this module is the payment module for the given order.
  */
 public function isPaymentModuleFor(Order $order)
 {
     $model = $this->getModuleModel();
     return $order->getPaymentModuleId() == $model->getId();
 }
Ejemplo n.º 3
0
 /**
  * Filter the query by a related \Thelia\Model\Order object
  *
  * @param \Thelia\Model\Order|ObjectCollection $order  the related object to use as filter
  * @param string $comparison Operator to use for the column comparison, defaults to Criteria::EQUAL
  *
  * @return ChildModuleQuery The current query, for fluid interface
  */
 public function filterByOrderRelatedByPaymentModuleId($order, $comparison = null)
 {
     if ($order instanceof \Thelia\Model\Order) {
         return $this->addUsingAlias(ModuleTableMap::ID, $order->getPaymentModuleId(), $comparison);
     } elseif ($order instanceof ObjectCollection) {
         return $this->useOrderRelatedByPaymentModuleIdQuery()->filterByPrimaryKeys($order->getPrimaryKeys())->endUse();
     } else {
         throw new PropelException('filterByOrderRelatedByPaymentModuleId() only accepts arguments of type \\Thelia\\Model\\Order or Collection');
     }
 }