Beispiel #1
0
 /**
  * Restore order
  *
  * @return void
  */
 protected function restoreOrder()
 {
     \XLite\Core\Session::getInstance()->checkoutCanceled = true;
     $this->doActionAddOrder();
     if ($this->addedOrder && !$this->addedOrder instanceof \XLite\Model\Cart && !\XLite\Core\Auth::getInstance()->isLogged()) {
         $cart = $this->getCart();
         $profile = $this->addedOrder->getProfile()->cloneEntity();
         $profile->setOrder($cart);
         $profile->setAnonymous(true);
         $cart->setOrigProfile($this->addedOrder->getOrigProfile());
         $cart->setProfile($profile);
         $this->updateCart();
     }
     $this->setReturnURL($this->buildURL('checkout'));
 }
Beispiel #2
0
 /**
  * Check - payment type is allowed for specified order or not
  *
  * @param string             $type  Payment type
  * @param \XLite\Model\Order $order Order
  *
  * @return boolean
  */
 protected function isPaymentTypeAllowed($type, \XLite\Model\Order $order)
 {
     $result = isset($this->paymentTypeCountries[$type]) && $order->getProfile() && $order->getProfile()->getBillingAddress() && $order->getProfile()->getBillingAddress()->getCountry();
     if ($result && true !== $this->paymentTypeCountries[$type]) {
         $result = in_array($order->getProfile()->getBillingAddress()->getCountry()->getCode3(), $this->paymentTypeCountries[$type]);
     }
     return $result;
 }
Beispiel #3
0
 /**
  * Get the errors which are connected with the membership of the user who placed the order
  *
  * @param \XLite\Model\Order $order
  *
  * @return array
  */
 protected function getMembershipErrors(\XLite\Model\Order $order)
 {
     $found = true;
     $memberships = $this->getMemberships();
     // Memberhsip
     if (0 < count($memberships)) {
         $membership = $order->getProfile() ? $order->getProfile()->getMembership() : null;
         $found = $membership ? \Includes\Utils\ArrayManager::findValue($memberships, array($this, 'checkMembershipId'), $membership->getMembershipId()) : false;
     }
     return $found ? array() : array(static::ERROR_MEMBERSHIP);
 }
Beispiel #4
0
 /**
  * Check - payment processor is applicable for specified order or not
  *
  * @param \XLite\Model\Order          $order  Order
  * @param \XLite\Model\Payment\Method $method Payment method
  *
  * @return boolean
  */
 public function isApplicable(\XLite\Model\Order $order, \XLite\Model\Payment\Method $method)
 {
     $controller = \XLite::getController();
     return $order->getProfile() && $order->getProfile()->getSavedCards() && method_exists($controller, 'isLogged') && $controller->isLogged() && parent::isApplicable($order, $method);
 }
Beispiel #5
0
 /**
  * Check coupon membership
  *
  * @param \XLite\Model\Order $order Order
  *
  * @throws \XLite\Module\CDev\Coupons\Core\CompatibilityException
  *
  * @return void
  */
 protected function checkMembership(\XLite\Model\Order $order)
 {
     if ($this->getMemberships()->count() && $order->getProfile() && !$this->getMemberships()->contains($order->getProfile()->getMembership())) {
         $this->throwCompatibilityException('', 'There is no such a coupon, please check the spelling: X', array('code' => $this->getCode()));
     }
 }
Beispiel #6
0
 /**
  * Prepare shopping cart data
  *
  * @param \XLite\Model\Order            $cart           X-Cart shopping cart
  * @param \XLite\Model\Payment\Method   $paymentMethod  Payment method
  * @param integer                       $refId          Transaction ID OPTIONAL
  * @param boolean                       $forceAuth      Force enable AUTH mode OPTIONAL
  *
  * @return array
  */
 public function prepareCart(\XLite\Model\Order $cart, \XLite\Model\Payment\Method $paymentMethod, $refId = null, $forceAuth = false)
 {
     $config = \XLite\Core\Config::getInstance()->CDev->XPaymentsConnector;
     $profile = $cart->getProfile();
     if ($cart->getOrderNumber()) {
         $description = 'Order #' . $cart->getOrderNumber();
     } elseif ($cart->getFirstOpenPaymentTransaction() && $cart->getFirstOpenPaymentTransaction()->getPublicId()) {
         $description = 'Payment transaction: ' . $cart->getFirstOpenPaymentTransaction()->getPublicId();
     } else {
         $description = '';
     }
     $result = array('login' => $profile->getLogin() . ' (User ID #' . $profile->getProfileId() . ')', 'items' => array(), 'currency' => $this->getCurrencyCode($paymentMethod), 'shippingCost' => 0.0, 'taxCost' => 0.0, 'discount' => 0.0, 'totalCost' => 0.0, 'description' => $description, 'merchantEmail' => \XLite\Core\Config::getInstance()->Company->orders_department, 'forceTransactionType' => $forceAuth ? 'A' : '');
     // Send customer unique Id for Kount UNIQ field (API v1.6 and higher)
     if (version_compare($config->xpc_api_version, '1.6') >= 0) {
         $result['kountCustomerUniq'] = $this->getKountCustomerUniq($cart);
     }
     $result['billingAddress'] = $this->prepareAddress($profile);
     if ($profile->getShippingAddress()) {
         $result['shippingAddress'] = $this->prepareAddress($profile, 'shipping');
     } else {
         $result['shippingAddress'] = $result['billingAddress'];
     }
     // Set items
     if ($cart->getItems()) {
         foreach ($cart->getItems() as $item) {
             $itemElement = array('sku' => strval($item->getSku() ? $item->getSku() : $item->getName()), 'name' => strval($item->getName() ? $item->getName() : $item->getSku()), 'price' => $this->roundCurrency($item->getPrice()), 'quantity' => $item->getAmount());
             if (!$itemElement['sku']) {
                 $itemElement['sku'] = 'N/A';
             }
             if (!$itemElement['name']) {
                 $itemElement['name'] = 'N/A';
             }
             $result['items'][] = $itemElement;
         }
     }
     // Set costs
     $result['shippingCost'] = $this->roundCurrency($cart->getSurchargesSubtotal(\XLite\Model\Base\Surcharge::TYPE_SHIPPING, false));
     $result['taxCost'] = $this->roundCurrency($cart->getSurchargesSubtotal(\XLite\Model\Base\Surcharge::TYPE_TAX, false));
     $result['totalCost'] = $this->roundCurrency($cart->getTotal());
     $result['discount'] = $this->roundCurrency(abs($cart->getSurchargesSubtotal(\XLite\Model\Base\Surcharge::TYPE_DISCOUNT, false)));
     return $result;
 }
Beispiel #7
0
 /**
  * Remove temporary order
  *
  * @param \XLite\Model\Order $order Order
  *
  * @return void
  */
 protected function removeTemporaryOrder(\XLite\Model\Order $order)
 {
     $origOrderId = null;
     // Search for index of data in temporary orders static cache
     if (is_array(static::$tmpOrders)) {
         foreach (static::$tmpOrders as $id => $data) {
             if ($id == $order->getOrderId()) {
                 $origOrderId = $id;
                 break;
             }
         }
     }
     \XLite\Core\Database::getEM()->remove($order->getProfile());
     // Remove temporary order
     \XLite\Core\Database::getEM()->remove($order);
     \XLite\Core\Database::getEM()->flush();
     // Unset data in static cache
     if ($origOrderId) {
         unset(static::$tmpOrders[$origOrderId]);
     }
 }
Beispiel #8
0
 /**
  * Send e-goods links to customer
  *
  * @param \XLite\Model\Order $order Order model
  *
  * @return void
  */
 public static function sendEgoodsLinksCustomer(\XLite\Model\Order $order)
 {
     static::compose(static::TYPE_EGOODS_LINKS, static::getOrdersDepartmentMail(), $order->getProfile()->getLogin(), 'modules/CDev/Egoods/egoods_links', array(), true, \XLite::CUSTOMER_INTERFACE, static::getMailer()->getLanguageCode(\XLite::CUSTOMER_INTERFACE, $order->getProfile()->getLanguage()));
 }
Beispiel #9
0
 /**
  * Send changed order mail to Customer
  *
  * @param \XLite\Model\Order $order Order model
  *
  * @return void
  */
 public static function sendOrderAdvancedChangedCustomer(\XLite\Model\Order $order)
 {
     static::register(array('order' => $order, 'recipientName' => $order->getProfile()->getName()));
     $result = static::compose(static::TYPE_ORDER_ADVANCED_CHANGED_CUSTOMER, static::getOrdersDepartmentMail(), $order->getProfile()->getLogin(), 'order_advanced_changed', array(), true, \XLite::CUSTOMER_INTERFACE, static::getMailer()->getLanguageCode(\XLite::CUSTOMER_INTERFACE, $order->getProfile()->getLanguage()));
     if ($result) {
         \XLite\Core\OrderHistory::getInstance()->registerCustomerEmailSent($order->getOrderId(), 'Order is changed');
     } elseif (static::$errorMessage) {
         \XLite\Core\OrderHistory::getInstance()->registerCustomerEmailFailed($order->getOrderId(), static::$errorMessage);
     }
 }
Beispiel #10
0
 /**
  * Send failed order mail to Customer
  *
  * @param \XLite\Model\Order $order Order model
  *
  * @return void
  */
 public static function sendFailedOrderCustomer(\XLite\Model\Order $order)
 {
     static::setMailInterface(\XLite::CUSTOMER_INTERFACE);
     if ($order->getProfile()) {
         static::compose(\XLite\Core\Config::getInstance()->Company->orders_department, $order->getProfile()->getLogin(), 'order_failed');
         \XLite\Core\OrderHistory::getInstance()->registerCustomerEmailSent($order->getOrderId());
     }
 }
 /**
  * {@inheritDoc}
  */
 public function getProfile()
 {
     $this->__initializer__ && $this->__initializer__->__invoke($this, 'getProfile', array());
     return parent::getProfile();
 }