/**
  * 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));
 }
示例#2
0
 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());
                 }
             }
         }
     }
 }