/** * Loads the History for the given Order */ public function loadHistoryStoreAction() { $orderId = $this->Request()->getParam("orderId"); $history = new Shopware_Plugins_Frontend_RpayRatePay_Component_History(); $historyData = $history->getHistory($orderId); $this->View()->assign(array("data" => $historyData, "success" => true)); }
public function onBidirectionalSendOrderOperation(Enlight_Hook_HookArgs $arguments) { $request = $arguments->getSubject()->Request(); $parameter = $request->getParams(); $config = Shopware()->Plugins()->Frontend()->RpayRatePay()->Config(); if (true !== $config->get('RatePayBidirectional') || !in_array($parameter['payment'][0]['name'], array("rpayratepayinvoice", "rpayratepayrate", "rpayratepaydebit"))) { return; } $order = Shopware()->Models()->find('Shopware\\Models\\Order\\Order', $parameter['id']); //get country of order $country = Shopware()->Models()->find('Shopware\\Models\\Country\\Country', $order->getCustomer()->getBilling()->getCountryId()); //set sandbox mode based on config $sandbox = $config->get('RatePaySandbox' . $country->getIso()); $service = new Shopware_Plugins_Frontend_RpayRatePay_Component_Service_RequestService($sandbox); $modelFactory = new Shopware_Plugins_Frontend_RpayRatePay_Component_Mapper_ModelFactory(); $history = new Shopware_Plugins_Frontend_RpayRatePay_Component_History(); $newOrderStatus = $parameter['status']; if ($newOrderStatus == $config['RatePayFullDelivery']) { $sqlShipping = "SELECT COUNT(*) " . "FROM `rpay_ratepay_order_shipping` AS `shipping` " . "WHERE `delivered` = 0 AND `cancelled` = 0 AND `returned` = 0 AND `shipping`.`s_order_id` = ?"; try { $count = Shopware()->Db()->fetchOne($sqlShipping, array($order->getId())); } catch (Exception $exception) { Shopware()->Pluginlogger()->error($exception->getMessage()); } if (null != $count) { $basketItems = $this->getBasket($order); $basket = new Shopware_Plugins_Frontend_RpayRatePay_Component_Model_SubModel_ShoppingBasket(); $basket->setAmount($order->getInvoiceAmount()); $basket->setCurrency($order->getCurrency()); $basket->setItems($basketItems); $confirmationDeliveryModel = $modelFactory->getModel(new Shopware_Plugins_Frontend_RpayRatePay_Component_Model_ConfirmationDelivery(), $order->getId()); $confirmationDeliveryModel->setShoppingBasket($basket); $head = $confirmationDeliveryModel->getHead(); $head->setTransactionId($order->getTransactionID()); $confirmationDeliveryModel->setHead($head); $response = $service->xmlRequest($confirmationDeliveryModel->toArray()); $result = Shopware_Plugins_Frontend_RpayRatePay_Component_Service_Util::validateResponse('CONFIRMATION_DELIVER', $response); if ($result === true) { foreach ($basketItems as $item) { $bind = array('delivered' => $item->getQuantity()); $this->updateItem($order->getId(), 'shipping', $bind); if ($item->getQuantity() <= 0) { continue; } $history->logHistory($order->getId(), "Artikel wurde versand.", $item->getArticleName(), $item->getArticlenumber(), $item->getQuantity()); } } } } elseif ($newOrderStatus == $config['RatePayFullCancellation']) { $sqlShipping = "SELECT COUNT(*) " . "FROM `rpay_ratepay_order_shipping` AS `shipping` " . "WHERE `cancelled` = 0 AND `shipping`.`s_order_id` = ?"; try { $count = Shopware()->Db()->fetchOne($sqlShipping, array($order->getId())); } catch (Exception $exception) { Shopware()->Pluginlogger()->error($exception->getMessage()); } if (null != $count) { $basketItems = $this->getBasket($order); $basket = new Shopware_Plugins_Frontend_RpayRatePay_Component_Model_SubModel_ShoppingBasket(); $basket->setAmount($order->getInvoiceAmount()); $basket->setCurrency($order->getCurrency()); $basket->setItems($basketItems); $modelFactory->setTransactionId($order->getTransactionID()); $paymentChange = $modelFactory->getModel(new Shopware_Plugins_Frontend_RpayRatePay_Component_Model_PaymentChange()); $head = $paymentChange->getHead(); $head->setOperationSubstring('partial-cancellation'); $paymentChange->setHead($head); $paymentChange->setShoppingBasket($basket); $response = $service->xmlRequest($paymentChange->toArray()); $result = Shopware_Plugins_Frontend_RpayRatePay_Component_Service_Util::validateResponse('PAYMENT_CHANGE', $response); if ($result === true) { foreach ($basketItems as $item) { $bind = array('cancelled' => $item->getQuantity()); $this->updateItem($order->getId(), $item->getArticlenumber(), $bind); if ($item->getQuantity() <= 0) { continue; } $history->logHistory($order->getId(), "Artikel wurde storniert.", $item->getArticleName(), $item->getArticlenumber(), $item->getQuantity()); } } } } elseif ($newOrderStatus == $config['RatePayFullReturn']) { $sqlShipping = "SELECT COUNT(*) " . "FROM `rpay_ratepay_order_shipping` AS `shipping` " . "WHERE `returned` = 0 AND `shipping`.`s_order_id` = ?"; try { $count = Shopware()->Db()->fetchOne($sqlShipping, array($order->getId())); } catch (Exception $exception) { Shopware()->Pluginlogger()->error($exception->getMessage()); } if (null != $count) { $basketItems = $this->getBasket($order); $basket = new Shopware_Plugins_Frontend_RpayRatePay_Component_Model_SubModel_ShoppingBasket(); $basket->setAmount($order->getInvoiceAmount()); $basket->setCurrency($order->getCurrency()); $basket->setItems($basketItems); $modelFactory->setTransactionId($order->getTransactionID()); $paymentChange = $modelFactory->getModel(new Shopware_Plugins_Frontend_RpayRatePay_Component_Model_PaymentChange()); $head = $paymentChange->getHead(); $head->setOperationSubstring('partial-return'); $paymentChange->setHead($head); $paymentChange->setShoppingBasket($basket); $response = $service->xmlRequest($paymentChange->toArray()); $result = Shopware_Plugins_Frontend_RpayRatePay_Component_Service_Util::validateResponse('PAYMENT_CHANGE', $response); if ($result === true) { foreach ($basketItems as $item) { $bind = array('returned' => $item->getQuantity()); $this->updateItem($order->getId(), $item->getArticlenumber(), $bind); if ($item->getQuantity() <= 0) { continue; } $history->logHistory($order->getId(), "Artikel wurde retourniert.", $item->getArticleName(), $item->getArticlenumber(), $item->getQuantity()); } } } } }