public function processUpdateOrders(OrderEvent $event) { if ($event->getOrder()->getPaymentModuleId() == $this->shoppingFluxPaymentModuleId) { $status = $event->getStatus(); $allowedStatus = [$sentStatusId = OrderStatusQuery::getSentStatus()->getId(), OrderStatusQuery::getCancelledStatus()->getId()]; if (in_array($status, $allowedStatus)) { $order = $event->getOrder(); $mode = ShoppingFluxConfigQuery::getProd() ? UpdateOrders::REQUEST_MODE_PRODUCTION : UpdateOrders::REQUEST_MODE_SANDBOX; $api = new UpdateOrders(ShoppingFluxConfigQuery::getToken(), $mode); $request = new Request("UpdateOrders"); $request->addOrder(["IdOrder" => $order->getRef(), "Marketplace" => $order->getTransactionRef(), "Status" => $status === $sentStatusId ? "Shipped" : "Canceled"]); $response = $api->setRequest($request)->getResponse(); if ($response->isInError()) { $this->logger->error($response->getFormattedError()); } if (!$api->compareResponseRequest()) { $errorMessage = "Bad response from ShoppingFlux: " . $response->getGroup("UpdateOrders")->C14N(); $this->logger->error($errorMessage); } } } }
/** * @param ModelOrder $order * @param $newStatus * @param $canceledStatus * @throws \Thelia\Exception\TheliaProcessException */ public function updateQuantity(ModelOrder $order, $newStatus) { $canceledStatus = OrderStatusQuery::getCancelledStatus()->getId(); $paidStatus = OrderStatusQuery::getPaidStatus()->getId(); if ($newStatus == $canceledStatus || $order->isCancelled()) { $this->updateQuantityForCanceledOrder($order, $newStatus, $canceledStatus); } elseif ($paidStatus == $newStatus && $order->isNotPaid() && $order->getVersion() == 1) { $this->updateQuantityForPaidOrder($order); } }
/** * @param OrderEvent $event */ public function updateStatus(OrderEvent $event) { $order = $event->getOrder(); $status = $event->getStatus(); $canceledStatus = OrderStatusQuery::getCancelledStatus()->getId(); if ($status == $canceledStatus || $order->getStatusId() == $canceledStatus) { $this->updateQuantity($event->getOrder(), $status, $canceledStatus); } $order->setStatusId($status); $order->save(); $event->setOrder($order); }