/**
  * Add the given Items to the given order
  */
 public function addAction()
 {
     $orderId = $this->Request()->getParam("orderId");
     $insertedIds = json_decode($this->Request()->getParam("insertedIds"));
     $subOperation = $this->Request()->getParam("suboperation");
     $order = Shopware()->Db()->fetchRow("SELECT * FROM `s_order` WHERE `id`=?", array($orderId));
     $orderItems = Shopware()->Db()->fetchAll("SELECT *, (`quantity` - `delivered` - `cancelled`) AS `quantityDeliver` FROM `s_order_details` " . "INNER JOIN `rpay_ratepay_order_positions` ON `s_order_details`.`id` = `rpay_ratepay_order_positions`.`s_order_details_id` " . "WHERE `orderID`=?", array($orderId));
     $basketItems = array();
     foreach ($orderItems as $row) {
         if ($row['quantityDeliver'] == 0) {
             continue;
         }
         $basketItem = new Shopware_Plugins_Frontend_RpayRatePay_Component_Model_SubModel_item();
         $basketItem->setArticleName($row['name']);
         $basketItem->setArticleNumber($row['articleordernumber']);
         $basketItem->setQuantity($row['quantityDeliver']);
         $basketItem->setTaxRate($row['tax_rate']);
         $basketItem->setUnitPriceGross($row['price']);
         $basketItems[] = $basketItem;
     }
     $shippingRow = $this->getShippingFromDBAsItem($orderId);
     if (!is_null($shippingRow) && $shippingRow['quantityDeliver'] != 0) {
         $basketItem = new Shopware_Plugins_Frontend_RpayRatePay_Component_Model_SubModel_item();
         $basketItem->setArticleName($shippingRow['name']);
         $basketItem->setArticleNumber($shippingRow['articleordernumber']);
         $basketItem->setQuantity($shippingRow['quantityDeliver']);
         $basketItem->setTaxRate($shippingRow['tax_rate']);
         $basketItem->setUnitPriceGross($shippingRow['price']);
         $basketItems[] = $basketItem;
     }
     $basket = new Shopware_Plugins_Frontend_RpayRatePay_Component_Model_SubModel_ShoppingBasket();
     $basket->setAmount($this->getRecalculatedAmount($basketItems));
     $basket->setCurrency($order['currency']);
     $basket->setItems($basketItems);
     $this->_modelFactory->setTransactionId($order['transactionID']);
     $paymentChange = $this->_modelFactory->getModel(new Shopware_Plugins_Frontend_RpayRatePay_Component_Model_PaymentChange(), $orderId);
     $head = $paymentChange->getHead();
     $head->setOperationSubstring($subOperation);
     $paymentChange->setHead($head);
     $paymentChange->setShoppingBasket($basket);
     $response = $this->_service->xmlRequest($paymentChange->toArray());
     $result = Shopware_Plugins_Frontend_RpayRatePay_Component_Service_Util::validateResponse('PAYMENT_CHANGE', $response);
     if ($result) {
         $event = $subOperation === 'credit' ? 'Nachlass wurde hinzugefügt' : 'Artikel wurde hinzugefügt';
         foreach ($insertedIds as $id) {
             $newItems = Shopware()->Db()->fetchRow("SELECT * FROM `s_order_details` WHERE `id`=?", array($id));
             if ($newItems['quantity'] <= 0) {
                 continue;
             }
             $this->_history->logHistory($orderId, $event, $newItems['name'], $newItems['articleordernumber'], $newItems['quantity']);
         }
     }
     $this->setNewOrderState($orderId);
     $this->View()->assign(array("result" => $result, "success" => true));
 }
Esempio n. 2
0
 /**
  * Returns the Shippingcosts as Item
  *
  * @param string $amount
  * @param string $tax
  *
  * @return \Shopware_Plugins_Frontend_RpayRatePay_Component_Model_SubModel_item
  */
 private function getShippingAsItem($amount, $tax)
 {
     $item = new Shopware_Plugins_Frontend_RpayRatePay_Component_Model_SubModel_item();
     $item->setArticleName('shipping');
     $item->setArticleNumber('shipping');
     $item->setQuantity(1);
     $item->setTaxRate($tax);
     $item->setUnitPriceGross($amount);
     return $item;
 }
Esempio n. 3
0
 /**
  * returns basket items as an array
  *
  * @param \Shopware\Models\Order\Order $order
  *
  * @return array
  */
 public function getBasket(Shopware\Models\Order\Order $order)
 {
     $basketItems = array();
     foreach ($items = $order->getDetails() as $item) {
         $basketItem = new Shopware_Plugins_Frontend_RpayRatePay_Component_Model_SubModel_item();
         $basketItem->setArticleName($item->getArticleName());
         $basketItem->setArticleNumber($item->getArticlenumber());
         $basketItem->setQuantity($item->getQuantity());
         $basketItem->setTaxRate($item->getTaxRate());
         $basketItem->setUnitPriceGross($item->getPrice());
         $basketItems[] = $basketItem;
     }
     return $basketItems;
 }