/** * @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(); } } } }
/** * 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(); }
/** * 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'); } }