/**
  * Returns requested store object.
  * 
  * @param int $storeId Specific store ID or null for current one.
  *
  * @return Mage_Core_Model_Store
  */
 public function getStore($storeId = null)
 {
     if (!$storeId && Mage::app()->getStore()->isAdmin()) {
         $storeId = $this->_order->getStoreId();
     }
     return Mage::app()->getStore($storeId);
 }
Пример #2
0
 /**
  * @param Mage_Sales_Model_Order $order
  * @throws Mage_Core_Exception
  */
 protected function _sendEmail(Mage_Sales_Model_Order $order)
 {
     // Send email
     $translate = Mage::getSingleton('core/translate');
     $translate->setTranslateInline(false);
     /** @var Mage_Core_Helper_Data $helper */
     $helper = Mage::helper('core');
     $loginUrl = Mage::getUrl('ho_customer/account/login', array('encryption' => $helper->getEncryptor()->encrypt($order->getCustomerId()), 'forward_url' => base64_encode(Mage::getUrl('ho_customer/account/completeProfile'))));
     /** @var Mage_Core_Model_Email_Template $emailTemplate */
     $emailTemplate = Mage::getModel('core/email_template');
     $emailTemplate->setDesignConfig(array('area' => 'frontend', 'store' => $order->getStoreId()))->sendTransactional($this->getConfig()->getEmailTemplate($order->getStoreId()), $this->getConfig()->getEmailSender($order->getStoreId()), $order->getCustomerEmail(), $order->getCustomerName(), array('order' => $order, 'login_url' => $loginUrl));
     $customer = Mage::getModel('customer/customer')->load($order->getCustomerId());
     $customer->setData('complete_profile_sent', true)->getResource()->saveAttribute($customer, 'complete_profile_sent');
     $translate->setTranslateInline(true);
 }
Пример #3
0
 /**
  * @param Mage_Sales_Model_Order $order
  * @param Payone_Api_Response_Interface $response
  * @param Payone_Api_Request_Interface $request
  * @throws Payone_Core_Exception_TransactionAlreadyExists
  * @return null|Payone_Core_Model_Domain_Transaction
  */
 public function createByApiResponse(Mage_Sales_Model_Order $order, Payone_Api_Response_Interface $response, Payone_Api_Request_Interface $request)
 {
     $transaction = $this->getFactory()->getModelTransaction();
     $transaction->load($response->getTxid(), 'txid');
     // should not exist but to be sure load by txid
     if ($transaction->hasData()) {
         throw new Payone_Core_Exception_TransactionAlreadyExists($response->getTxid());
     }
     $transaction->setTxid($response->getTxid());
     $transaction->setLastTxaction($response->getStatus());
     $transaction->setUserid($response->getUserid());
     $transaction->setStoreId($order->getStoreId());
     $transaction->setOrderId($order->getId());
     $transaction->setReference($order->getIncrementId());
     $transaction->setCurrency($order->getOrderCurrencyCode());
     $transaction->setCustomerId($order->getCustomerId());
     $transaction->setClearingtype($request->getClearingtype());
     $transaction->setMode($request->getMode());
     $transaction->setMid($request->getMid());
     $transaction->setAid($request->getAid());
     $transaction->setPortalid($request->getPortalid());
     $transaction->setLastSequencenumber(0);
     $data = $response->toArray();
     $transaction->addData($data);
     $transaction->save();
     return $transaction;
 }
 /**
  * Confirm Controller for Seamless Payments
  */
 public function seamlessConfirmAction()
 {
     try {
         $data = $this->_checkReturnedPost(true);
         $storeId = $this->order->getStoreId();
         $methodCode = $this->paymentInst->getCode();
         $secretKey = Mage::getStoreConfig('payment/' . $methodCode . '/secret_key', $storeId);
         $confirmResponse = WirecardCEE_Client_QPay_Return::generateConfirmResponseString();
         $return = WirecardCEE_Client_QPay_Return::createReturnInstance($data['raw'], $secretKey);
         if ($return->validate()) {
             $this->_confirmState($data['post'], $return);
         } else {
             throw new Exception('Unhandled Wirecard Checkout Seamless action "' . $data['paymentState'] . '".');
         }
         $this->order->save();
         // send confirmation for status change
         die($confirmResponse);
     } catch (Exception $e) {
         $orderId = !empty($data['orderId']) ? $data['orderId'] : '';
         Mage::log('Wirecard Checkout Page transaction status update failed: ' . $e->getMessage() . '(' . $orderId . ')');
         Mage::log($e->getMessage() . "\n" . $e->getTraceAsString(), null, 'wirecard_checkout_page_exception.log');
         $confirmResponse = WirecardCEE_Client_QPay_Return::generateConfirmResponseString($e->getMessage());
         die($confirmResponse);
     }
 }
Пример #5
0
 /**
  * Add the items from the given order to the Order Sync queue. Does nothing if
  * Order Sync is disabled for the store that the order was placed in.
  *
  * @param Mage_Sales_Model_Order $order
  * @param bool                   $force Skip enabled check
  *
  * @return $this
  */
 public function addOrderToQueue(Mage_Sales_Model_Order $order, $force = false)
 {
     if (!$this->isEnabled($order->getStoreId()) && !$force) {
         return $this;
     }
     $items = array();
     foreach ($order->getAllVisibleItems() as $item) {
         /** @var Mage_Sales_Model_Order_Item $item */
         // For configurable products add children items only, for all other products add parents
         if ($item->getProductType() == Mage_Catalog_Model_Product_Type_Configurable::TYPE_CODE) {
             foreach ($item->getChildrenItems() as $child) {
                 if ($child->getId() != null) {
                     $items[] = $child->getId();
                 }
             }
         } else {
             if ($item->getId() != null) {
                 $items[] = $item->getId();
             }
         }
     }
     // in case of multiple addresses used for shipping
     // its possible that items object here is empty
     // if so, we do not add to the item.
     if (!empty($items)) {
         $this->addItemsToQueue($items);
     }
     return $this;
 }
Пример #6
0
 /**
  * Send order to MailChimp
  *
  * @param Mage_Sales_Model_Order $order
  * @return bool|array
  */
 public function logSale($order)
 {
     $this->_order = $order;
     $api = Mage::getSingleton('monkey/api', array('store' => $this->_order->getStoreId()));
     if (!$api) {
         return false;
     }
     $subtotal = $this->_order->getSubtotal();
     $discount = (double) $this->_order->getDiscountAmount();
     if ($discount != 0) {
         $subtotal = $subtotal + $discount;
     }
     $this->_info = array('id' => $this->_order->getIncrementId(), 'total' => $subtotal, 'shipping' => $this->_order->getShippingAmount(), 'tax' => $this->_order->getTaxAmount(), 'store_id' => $this->_order->getStoreId(), 'store_name' => $this->_order->getStoreName(), 'plugin_id' => 1215, 'items' => array());
     $emailCookie = $this->_getEmailCookie();
     $campaignCookie = $this->_getCampaignCookie();
     $this->setItemstoSend();
     if ($emailCookie && $campaignCookie) {
         $this->_info['email_id'] = $emailCookie;
         $this->_info['campaign_id'] = $campaignCookie;
         //Send order to MailChimp
         $rs = $api->campaignEcommOrderAdd($this->_info);
     } else {
         $this->_info['email'] = $this->_order->getCustomerEmail();
         $rs = $api->ecommOrderAdd($this->_info);
     }
     if ($rs === TRUE) {
         $this->_logCall();
         return true;
     } else {
         return $rs;
     }
 }
Пример #7
0
 /**
  * Retrieve tracking url with params
  *
  * @param  string $key
  * @param  Mage_Sales_Model_Order|Mage_Sales_Model_Order_Shipment|Mage_Sales_Model_Order_Shipment_Track $model
  * @param  string $method Optional - method of a model to get id
  * @return string
  */
 protected function _getTrackingUrl($key, $model, $method = 'getId')
 {
     $helper = Mage::helper('Mage_Core_Helper_Data');
     $urlPart = "{$key}:{$model->{$method}()}:{$model->getProtectCode()}";
     $param = array('hash' => $helper->urlEncode($urlPart));
     $storeModel = Mage::app()->getStore($model->getStoreId());
     return $storeModel->getUrl('shipping/tracking/popup', $param);
 }
Пример #8
0
 /**
  * Converting order object to quote object
  *
  * @param   Mage_Sales_Model_Order $order
  * @return  Mage_Sales_Model_Quote
  */
 public function toQuote(Mage_Sales_Model_Order $order, $quote = null)
 {
     if (!$quote instanceof Mage_Sales_Model_Quote) {
         $quote = Mage::getModel('sales/quote');
     }
     $quote->setStoreId($order->getStoreId())->setOrderId($order->getId())->setCustomerId($order->getCustomerId())->setCustomerEmail($order->getCustomerEmail())->setCustomerGroupId($order->getCustomerGroupId())->setCustomerTaxClassId($order->getCustomerTaxClassId())->setCustomerIsGuest($order->getCustomerIsGuest())->setBaseCurrencyCode($order->getBaseCurrencyCode())->setStoreCurrencyCode($order->getStoreCurrencyCode())->setQuoteCurrencyCode($order->getOrderCurrencyCode())->setStoreToBaseRate($order->getStoreToBaseRate())->setStoreToQuoteRate($order->getStoreToOrderRate())->setGrandTotal($order->getGrandTotal())->setBaseGrandTotal($order->getBaseGrandTotal())->setCouponCode($order->getCouponCode())->setGiftcertCode($order->getGiftcertCode())->setAppliedRuleIds($order->getAppliedRuleIds())->collectTotals();
     Mage::dispatchEvent('sales_convert_order_to_quote', array('order' => $order, 'quote' => $quote));
     return $quote;
 }
 /**
  * Set order object and grab some metadata from it
  *
  * @param   Mage_Sales_Model_Order $order
  * @return  Mage_Sales_Model_Order_Status_History
  */
 public function setOrder(Mage_Sales_Model_Order $order)
 {
     $this->_order = $order;
     $id = $order->getId();
     if (!$id) {
         $this->_shouldSetOrderBeforeSave = true;
     }
     return $this->setParentId($id)->setStoreId($order->getStoreId());
 }
Пример #10
0
 /**
  * Checking returned parameters
  * Thorws Mage_Core_Exception if error
  * @param bool $fullCheck Whether to make additional validations such as payment status, transaction signature etc.
  *
  * @return array  $params request params
  */
 protected function _validateEventData($fullCheck = true)
 {
     // get request variables
     $params = $this->_eventData;
     if (empty($params)) {
         Mage::throwException('Request does not contain any elements.');
     }
     // check order ID
     if (empty($params['transaction_id']) || $fullCheck == false && $this->_getCheckout()->getMoneybookersRealOrderId() != $params['transaction_id']) {
         Mage::throwException('Missing or invalid order ID.');
     }
     // load order for further validation
     $this->_order = Mage::getModel('sales/order')->loadByIncrementId($params['transaction_id']);
     if (!$this->_order->getId()) {
         Mage::throwException('Order not found.');
     }
     if (0 !== strpos($this->_order->getPayment()->getMethodInstance()->getCode(), 'moneybookers_')) {
         Mage::throwException('Unknown payment method.');
     }
     // make additional validation
     if ($fullCheck) {
         // check payment status
         if (empty($params['status'])) {
             Mage::throwException('Unknown payment status.');
         }
         // check transaction signature
         if (empty($params['md5sig'])) {
             Mage::throwException('Invalid transaction signature.');
         }
         $checkParams = array('merchant_id', 'transaction_id', 'secret', 'mb_amount', 'mb_currency', 'status');
         $md5String = '';
         foreach ($checkParams as $key) {
             if ($key == 'merchant_id') {
                 $md5String .= Mage::getStoreConfig(Phoenix_Moneybookers_Helper_Data::XML_PATH_CUSTOMER_ID, $this->_order->getStoreId());
             } elseif ($key == 'secret') {
                 $secretKey = Mage::getStoreConfig(Phoenix_Moneybookers_Helper_Data::XML_PATH_SECRET_KEY, $this->_order->getStoreId());
                 if (empty($secretKey)) {
                     Mage::throwException('Secret key is empty.');
                 }
                 $md5String .= strtoupper(md5($secretKey));
             } elseif (isset($params[$key])) {
                 $md5String .= $params[$key];
             }
         }
         $md5String = strtoupper(md5($md5String));
         if ($md5String != $params['md5sig']) {
             Mage::throwException('Hash is not valid.');
         }
         // check transaction amount if currency matches
         if ($this->_order->getOrderCurrencyCode() == $params['mb_currency']) {
             if (round($this->_order->getGrandTotal(), 2) != $params['mb_amount']) {
                 Mage::throwException('Transaction amount does not match.');
             }
         }
     }
     return $params;
 }
Пример #11
0
 /**
  * Returns the name of the website, store and store view the order was placed in.
  *
  * @param Mage_Sales_Model_Order $order The order to return info from
  * @return String The name of the website, store and store view the order was placed in
  */
 protected function getStoreName($order)
 {
     $storeId = $order->getStoreId();
     if (is_null($storeId)) {
         return $this->getOrder()->getStoreName();
     }
     $store = Mage::app()->getStore($storeId);
     $name = array($store->getWebsite()->getName(), $store->getGroup()->getName(), $store->getName());
     return implode(', ', $name);
 }
Пример #12
0
 /**
  * Get store id from quote address or order object
  *
  * @param OnePica_AvaTax_Model_Sales_Quote_Address|Mage_Sales_Model_Order $object
  * @return int|null
  */
 protected function _getStoreIdFromSalesObject($object)
 {
     $storeId = null;
     if ($object instanceof Mage_Sales_Model_Order) {
         $storeId = $object->getStoreId();
     } elseif ($object instanceof OnePica_AvaTax_Model_Sales_Quote_Address) {
         $storeId = $object->getQuote()->getStoreId();
     }
     return $storeId;
 }
Пример #13
0
 /**
  * Converting order object to quote object
  *
  * @param   Mage_Sales_Model_Order $order
  * @return  Mage_Sales_Model_Quote
  */
 public function toQuote(Mage_Sales_Model_Order $order, $quote = null)
 {
     if (!$quote instanceof Mage_Sales_Model_Quote) {
         $quote = Mage::getModel('sales/quote');
     }
     $quote->setStoreId($order->getStoreId())->setOrderId($order->getId());
     Mage::helper('core')->copyFieldset('sales_convert_order', 'to_quote', $order, $quote);
     Mage::dispatchEvent('sales_convert_order_to_quote', array('order' => $order, 'quote' => $quote));
     return $quote;
 }
Пример #14
0
 /**
  * Certain payment methods require a list of other payment methods that will be used to finalize the payment.
  * This method forms that list
  *
  * @return string
  */
 protected function _getPaymentMethodsAllowed()
 {
     $configAllowed = Mage::getStoreConfig('buckaroo/' . $this->_code . '/allowed_methods', $this->_order->getStoreId());
     $allowedArray = explode(',', $configAllowed);
     if (in_array('all', $allowedArray)) {
         $allowedArray = array('amex', 'directdebit', 'giropay', 'ideal', 'mastercard', 'onlinegiro', 'paypal', 'paysafecard', 'sofortueberweisung', 'transfer', 'visa', 'maestro', 'visaelectron', 'vpay', 'bancontactmrcash');
     }
     $allowedString = implode(',', $allowedArray);
     return $allowedString;
 }
Пример #15
0
 /**
  * Return the order id or false if order id should not be displayed on document.
  *
  * @param Mage_Sales_Model_Order $order
  * @param string $mode
  * @return mixed
  */
 public function putOrderId(Mage_Sales_Model_Order $order, $mode = 'invoice')
 {
     switch ($mode) {
         case 'invoice':
             if (Mage::getStoreConfigFlag(Mage_Sales_Model_Order_Pdf_Abstract::XML_PATH_SALES_PDF_INVOICE_PUT_ORDER_ID, $order->getStoreId())) {
                 return $order->getRealOrderId();
             }
             break;
         case 'shipment':
             if (Mage::getStoreConfigFlag(Mage_Sales_Model_Order_Pdf_Abstract::XML_PATH_SALES_PDF_SHIPMENT_PUT_ORDER_ID, $order->getStoreId())) {
                 return $order->getRealOrderId();
             }
             break;
         case 'creditmemo':
             if (Mage::getStoreConfigFlag(Mage_Sales_Model_Order_Pdf_Abstract::XML_PATH_SALES_PDF_CREDITMEMO_PUT_ORDER_ID, $order->getStoreId())) {
                 return $order->getRealOrderId();
             }
             break;
     }
     return false;
 }
 /** Send order to MailChimp Automatically by Order Status
  *
  *
  */
 public function autoExportJobs()
 {
     $allow_sent = false;
     $orderIds[] = '0';
     $ecommerceOrders = Mage::getModel('monkey/ecommerce')->getCollection()->getData();
     if ($ecommerceOrders) {
         foreach ($ecommerceOrders as $ecommerceOrder) {
             $orderIds[] = $ecommerceOrder['order_id'];
         }
     }
     $orders = Mage::getResourceModel('sales/order_collection');
     //Get ALL orders which has not been sent to MailChimp
     $orders->getSelect()->where('main_table.entity_id NOT IN(?)', $orderIds);
     //Get status options selected in the Configuration
     $states = explode(',', Mage::helper('monkey')->config('order_status'));
     foreach ($orders as $order) {
         foreach ($states as $state) {
             if ($order->getStatus() == $state || $state == 'all_status') {
                 $allow_sent = true;
             }
         }
         if ($allow_sent == true) {
             $this->_order = $order;
             $api = Mage::getSingleton('monkey/api', array('store' => $this->_order->getStoreId()));
             if (!$api) {
                 return false;
             }
             $subtotal = $this->_order->getSubtotal();
             $discount = (double) $this->_order->getDiscountAmount();
             if ($discount != 0) {
                 $subtotal = $subtotal + $discount;
             }
             $this->_info = array('id' => $this->_order->getIncrementId(), 'total' => $subtotal, 'shipping' => $this->_order->getShippingAmount(), 'tax' => $this->_order->getTaxAmount(), 'store_id' => $this->_order->getStoreId(), 'store_name' => $this->_order->getStoreName(), 'plugin_id' => 1215, 'items' => array());
             $email = $this->_order->getCustomerEmail();
             $campaign = $this->_order->getEbizmartsMagemonkeyCampaignId();
             $this->setItemstoSend();
             if ($email && $campaign) {
                 $this->_info['email_id'] = $email;
                 $this->_info['campaign_id'] = $campaign;
                 //Send order to MailChimp
                 $rs = $api->campaignEcommOrderAdd($this->_info);
             } else {
                 $this->_info['email'] = $email;
                 $rs = $api->ecommOrderAdd($this->_info);
             }
             $allow_sent = false;
             if ($rs === TRUE) {
                 $this->_logCall();
             }
         }
     }
 }
Пример #17
0
 /**
  * get payment operation code
  *
  * @param Mage_Sales_Model_Order $order
  *
  * @return string
  */
 public function getPaymentAction($order)
 {
     $operation = Netresearch_OPS_Model_Payment_Abstract::OPS_AUTHORIZE_ACTION;
     // different capture operation name for direct debits
     if ('Direct Debits DE' == $order->getPayment()->getAdditionalInformation('PM') || 'Direct Debits AT' == $order->getPayment()->getAdditionalInformation('PM')) {
         if ('authorize_capture' == Mage::getModel('ops/config')->getPaymentAction($order->getStoreId())) {
             return Netresearch_OPS_Model_Payment_Abstract::OPS_AUTHORIZE_CAPTURE_ACTION;
         }
         return Netresearch_OPS_Model_Payment_Abstract::OPS_AUTHORIZE_ACTION;
     }
     // no RES for Direct Debits NL, so we'll do the final sale
     if ('Direct Debits NL' == $order->getPayment()->getAdditionalInformation('PM')) {
         if ('authorize_capture' == Mage::getModel('ops/config')->getPaymentAction($order->getStoreId())) {
             return Netresearch_OPS_Model_Payment_Abstract::OPS_CAPTURE_DIRECTDEBIT_NL;
         }
         return Netresearch_OPS_Model_Payment_Abstract::OPS_AUTHORIZE_ACTION;
     }
     if ('authorize_capture' == Mage::getModel('ops/config')->getPaymentAction($order->getStoreId())) {
         $operation = Netresearch_OPS_Model_Payment_Abstract::OPS_AUTHORIZE_CAPTURE_ACTION;
     }
     return $operation;
 }
Пример #18
0
 /**
  * Converting order object to quote object
  *
  * @param   Mage_Sales_Model_Order $order
  * @return  Mage_Sales_Model_Quote
  */
 public function toQuote(Mage_Sales_Model_Order $order, $quote = null)
 {
     if (!$quote instanceof Mage_Sales_Model_Quote) {
         $quote = AO::getModel('sales/quote');
     }
     $quote->setStoreId($order->getStoreId())->setOrderId($order->getId());
     AO::helper('core')->copyFieldset('sales_convert_order', 'to_quote', $order, $quote);
     //            /**
     //             * Customer data
     //             */
     //            ->setCustomerId($order->getCustomerId())
     //            ->setCustomerEmail($order->getCustomerEmail())
     //            ->setCustomerGroupId($order->getCustomerGroupId())
     //            ->setCustomerTaxClassId($order->getCustomerTaxClassId())
     //            /**
     //             * Not use note from previos order
     //             */
     //            //->setCustomerNote($order->getCustomerNote())
     //            //->setCustomerNoteNotify($order->getCustomerNoteNotify())
     //            ->setCustomerIsGuest($order->getCustomerIsGuest())
     //
     //            /**
     //             * Currency data
     //             */
     //            ->setBaseCurrencyCode($order->getBaseCurrencyCode())
     //            ->setStoreCurrencyCode($order->getStoreCurrencyCode())
     //            ->setQuoteCurrencyCode($order->getOrderCurrencyCode())
     //            ->setStoreToBaseRate($order->getStoreToBaseRate())
     //            ->setStoreToQuoteRate($order->getStoreToOrderRate())
     //
     //            /**
     //             * Totals data
     //             */
     //            ->setGrandTotal($order->getGrandTotal())
     //            ->setBaseGrandTotal($order->getBaseGrandTotal())
     //
     //            /**
     //             * Another data
     //             */
     //            ->setCouponCode($order->getCouponCode())
     //            ->setGiftcertCode($order->getGiftcertCode())
     //            ->setAppliedRuleIds($order->getAppliedRuleIds());
     //            //->collectTotals();
     //
     AO::dispatchEvent('sales_convert_order_to_quote', array('order' => $order, 'quote' => $quote));
     return $quote;
 }
Пример #19
0
 /**
  * Get customer balance model using sales entity
  *
  * @param Mage_Sales_Model_Quote|Mage_Sales_Model_Order $salesEntity
  *
  * @return Enterprise_CustomerBalance_Model_Balance|bool
  */
 public function getCustomerBalanceModelFromSalesEntity($salesEntity)
 {
     if ($salesEntity instanceof Mage_Sales_Model_Order) {
         $customerId = $salesEntity->getCustomerId();
         $quote = $salesEntity->getQuote();
     } elseif ($salesEntity instanceof Mage_Sales_Model_Quote) {
         $customerId = $salesEntity->getCustomer()->getId();
         $quote = $salesEntity;
     } else {
         return false;
     }
     if (!$customerId) {
         return false;
     }
     $customerBalanceModel = Mage::getModel('enterprise_customerbalance/balance')->setCustomerId($customerId)->setWebsiteId(Mage::app()->getStore($salesEntity->getStoreId())->getWebsiteId())->loadByCustomer();
     if ($quote->getBaseCustomerBalanceVirtualAmount() > 0) {
         $customerBalanceModel->setAmount($customerBalanceModel->getAmount() + $quote->getBaseCustomerBalanceVirtualAmount());
     }
     return $customerBalanceModel;
 }
Пример #20
0
 /**
  * Add the items from the given order to the Order Sync queue. Does nothing if
  * Order Sync is disabled for the store that the order was placed in.
  *
  * @param Mage_Sales_Model_Order $order
  * @param bool                   $force Skip enabled check
  *
  * @return $this
  */
 public function addOrderToQueue(Mage_Sales_Model_Order $order, $force = false)
 {
     if (!$this->isEnabled($order->getStoreId()) && !$force) {
         return $this;
     }
     $items = array();
     foreach ($order->getAllVisibleItems() as $item) {
         /** @var Mage_Sales_Model_Order_Item $item */
         // For configurable products add children items only, for all other products add parents
         if ($item->getProductType() == Mage_Catalog_Model_Product_Type_Configurable::TYPE_CODE) {
             foreach ($item->getChildrenItems() as $child) {
                 $items[] = $child->getId();
             }
         } else {
             $items[] = $item->getId();
         }
     }
     $this->addItemsToQueue($items);
     return $this;
 }
Пример #21
0
 /**
  * Add the items from the given order to the Order Sync queue. Does nothing if
  * Order Sync is disabled for the store that the order was placed in.
  *
  * @param Mage_Sales_Model_Order $order
  * @param bool                   $force Skip enabled check
  *
  * @return $this
  */
 public function addOrderToQueue(Mage_Sales_Model_Order $order, $force = false)
 {
     if (!$this->isEnabled($order->getStoreId()) && !$force) {
         return $this;
     }
     $items = array();
     $order_date = Mage::helper("klevu_search/compat")->now();
     $session_id = session_id();
     $ip_address = Mage::helper("klevu_search")->getIp();
     $order_email = 'unknown';
     if ($order->getCustomerId()) {
         $order_email = $order->getCustomer()->getEmail();
         //logged in customer
     } else {
         $order_email = $order->getBillingAddress()->getEmail();
         //not logged in customer
     }
     foreach ($order->getAllVisibleItems() as $item) {
         /** @var Mage_Sales_Model_Order_Item $item */
         // For configurable products add children items only, for all other products add parents
         if ($item->getProductType() == Mage_Catalog_Model_Product_Type_Configurable::TYPE_CODE) {
             foreach ($item->getChildrenItems() as $child) {
                 if ($child->getId() != null) {
                     $items[] = array($child->getId(), $session_id, $ip_address, $order_date, $order_email);
                 }
             }
         } else {
             if ($item->getId() != null) {
                 $items[] = array($item->getId(), $session_id, $ip_address, $order_date, $order_email);
             }
         }
     }
     // in case of multiple addresses used for shipping
     // its possible that items object here is empty
     // if so, we do not add to the item.
     if (!empty($items)) {
         $this->addItemsToQueue($items);
     }
     return $this;
 }
Пример #22
0
 /**
  * Load and validate order, instantiate proper configuration
  *
  *
  * @return Mage_Sales_Model_Order
  * @throws Exception
  */
 protected function _getOrder()
 {
     if (empty($this->_order)) {
         // get proper order
         $id = $this->_request['invoice'];
         $this->_order = Mage::getModel('sales/order')->loadByIncrementId($id);
         if (!$this->_order->getId()) {
             $this->_debugData['exception'] = sprintf('Wrong order ID: "%s".', $id);
             $this->_debug();
             Mage::app()->getResponse()->setHeader('HTTP/1.1', '503 Service Unavailable')->sendResponse();
             exit;
         }
         // re-initialize config with the method code and store id
         $methodCode = $this->_order->getPayment()->getMethod();
         $this->_config = Mage::getModel('paypal/config', array($methodCode, $this->_order->getStoreId()));
         if (!$this->_config->isMethodActive($methodCode) || !$this->_config->isMethodAvailable()) {
             throw new Exception(sprintf('Method "%s" is not available.', $methodCode));
         }
         $this->_verifyOrder();
     }
     return $this->_order;
 }
Пример #23
0
 /**
  * Creates new customer from order, adds order addresses as customer addresses
  *
  * @param Mage_Sales_Model_Order|bool $order
  * @return Mage_Customer_Model_Customer
  */
 protected function _createCustomerFromOrder($order)
 {
     if (!$order instanceof Mage_Sales_Model_Order) {
         return false;
     }
     // Check if customer with email address exists
     $existingCustomer = Mage::getResourceModel('customer/customer_collection')->addFieldToFilter('email', $order->getCustomerEmail());
     if (Mage::getSingleton('customer/config_share')->isWebsiteScope()) {
         $existingCustomer->addFieldToFilter('website_id', $order->getWebsiteId());
     }
     $existingCustomer = $existingCustomer->getFirstItem();
     if (!$existingCustomer instanceof Mage_Customer_Model_Customer || !$existingCustomer->getId()) {
         return Mage::getModel('customer/customer');
     }
     // Create customer
     /** @var Mage_Customer_Model_Customer $customer */
     $customer = Mage::getModel('customer/customer')->setEmail($order->getCustomerEmail())->setStoreId($order->getStoreId())->setPrefix($order->getCustomerPrefix())->setFirstname($order->getCustomerFirstname())->setLastname($order->getCustomerLastname());
     $customer->save();
     // Create customer addresses
     foreach ($order->getAddressesCollection() as $orderAddress) {
         /** @var Mage_Sales_Model_Order_Address $orderAddress */
         /** @var Mage_Customer_Model_Address $address */
         $address = Mage::getModel('customer/address')->setParentId($customer->getEntityId())->setCustomerId($customer->getEntityId())->setIsActive(true)->setPrefix($orderAddress->getPrefix())->setFirstname($orderAddress->getFirstname())->setMiddlename($orderAddress->getMiddlename())->setLastname($orderAddress->getLastname())->setSuffix($orderAddress->getSuffix())->setStreet($orderAddress->getStreet())->setCity($orderAddress->getCity())->setPostcode($orderAddress->getPostcode())->setCountryId($orderAddress->getCountryId())->setTelephone($orderAddress->getTelephone())->setCompany($orderAddress->getCompany())->setRegion($orderAddress->getRegion())->setRegionId($orderAddress->getRegionId());
         $address->save();
         // Save default billing and shipping
         if ($orderAddress->getAddressType() == 'billing') {
             $customer->setDefaultBilling($address->getEntityId());
         } elseif ($orderAddress->getAddressType() == 'shipping') {
             $customer->setDefaultShipping($address->getEntityId());
         }
     }
     // Force confirmation
     $customer->setConfirmation($customer->getRandomConfirmationKey());
     $customer->save();
     return $customer;
 }
Пример #24
0
 /**
  * Declare order for creditmemo
  *
  * @param   Mage_Sales_Model_Order $order
  * @return  Mage_Sales_Model_Order_Creditmemo
  */
 public function setOrder(Mage_Sales_Model_Order $order)
 {
     $this->_order = $order;
     $this->setOrderId($order->getId())->setStoreId($order->getStoreId());
     return $this;
 }
 /**
  * Get new shipment increment id
  * @param  Mage_Sales_Model_Order $order
  * @return string
  */
 protected function _getNewShipmentIncrementId(Mage_Sales_Model_Order $order)
 {
     return $this->_eavConfig->getEntityType(static::ENTITY_TYPE)->fetchNewIncrementId($order->getStoreId());
 }
 /**
  * Check store credit balance
  *
  * @param   Mage_Sales_Model_Order $order
  * @return  Enterprise_CustomerBalance_Model_Observer
  */
 protected function _checkStoreCreditBalance(Mage_Sales_Model_Order $order)
 {
     if ($order->getBaseCustomerBalanceAmount() > 0) {
         $websiteId = Mage::app()->getStore($order->getStoreId())->getWebsiteId();
         $balance = Mage::getModel('enterprise_customerbalance/balance')->setCustomerId($order->getCustomerId())->setWebsiteId($websiteId)->loadByCustomer()->getAmount();
         if ($order->getBaseCustomerBalanceAmount() - $balance >= 0.0001) {
             Mage::getSingleton('checkout/type_onepage')->getCheckout()->setUpdateSection('payment-method')->setGotoSection('payment');
             Mage::throwException(Mage::helper('enterprise_customerbalance')->__('Not enough Store Credit Amount to complete this Order.'));
         }
     }
     return $this;
 }
Пример #27
0
 /**
  * Initialize creation data from existing order
  *
  * @param Mage_Sales_Model_Order $order
  * @return unknown
  */
 public function initFromOrder(Mage_Sales_Model_Order $order)
 {
     if (!$order->getReordered()) {
         $this->getSession()->setOrderId($order->getId());
     } else {
         $this->getSession()->setReordered($order->getId());
     }
     /**
      * Check if we edit quest order
      */
     $this->getSession()->setCurrencyId($order->getOrderCurrencyCode());
     if ($order->getCustomerId()) {
         $this->getSession()->setCustomerId($order->getCustomerId());
     } else {
         $this->getSession()->setCustomerId(false);
     }
     $this->getSession()->setStoreId($order->getStoreId());
     /**
      * Initialize catalog rule data with new session values
      */
     $this->initRuleData();
     foreach ($order->getItemsCollection(array_keys(Mage::getConfig()->getNode('adminhtml/sales/order/create/available_product_types')->asArray()), true) as $orderItem) {
         /* @var $orderItem Mage_Sales_Model_Order_Item */
         if (!$orderItem->getParentItem()) {
             if ($order->getReordered()) {
                 $qty = $orderItem->getQtyOrdered();
             } else {
                 $qty = $orderItem->getQtyOrdered() - $orderItem->getQtyShipped() - $orderItem->getQtyInvoiced();
             }
             if ($qty > 0) {
                 $item = $this->initFromOrderItem($orderItem, $qty);
                 if (is_string($item)) {
                     Mage::throwException($item);
                 }
             }
         }
     }
     $shippingAddress = $order->getShippingAddress();
     if ($shippingAddress) {
         $addressDiff = array_diff_assoc($shippingAddress->getData(), $order->getBillingAddress()->getData());
         unset($addressDiff['address_type'], $addressDiff['entity_id']);
         $shippingAddress->setSameAsBilling(empty($addressDiff));
     }
     $this->_initBillingAddressFromOrder($order);
     $this->_initShippingAddressFromOrder($order);
     if (!$this->getQuote()->isVirtual() && $this->getShippingAddress()->getSameAsBilling()) {
         $this->setShippingAsBilling(1);
     }
     $this->setShippingMethod($order->getShippingMethod());
     $this->getQuote()->getShippingAddress()->setShippingDescription($order->getShippingDescription());
     $this->getQuote()->getPayment()->addData($order->getPayment()->getData());
     $orderCouponCode = $order->getCouponCode();
     if ($orderCouponCode) {
         $this->getQuote()->setCouponCode($orderCouponCode);
     }
     if ($this->getQuote()->getCouponCode()) {
         $this->getQuote()->collectTotals();
     }
     Mage::helper('core')->copyFieldset('sales_copy_order', 'to_edit', $order, $this->getQuote());
     Mage::dispatchEvent('sales_convert_order_to_quote', array('order' => $order, 'quote' => $this->getQuote()));
     if (!$order->getCustomerId()) {
         $this->getQuote()->setCustomerIsGuest(true);
     }
     if ($this->getSession()->getUseOldShippingMethod(true)) {
         /*
          * if we are making reorder or editing old order
          * we need to show old shipping as preselected
          * so for this we need to collect shipping rates
          */
         $this->collectShippingRates();
     } else {
         /*
          * if we are creating new order then we don't need to collect
          * shipping rates before customer hit appropriate button
          */
         $this->collectRates();
     }
     // Make collect rates when user click "Get shipping methods and rates" in order creating
     // $this->getQuote()->getShippingAddress()->setCollectShippingRates(true);
     // $this->getQuote()->getShippingAddress()->collectShippingRates();
     $this->getQuote()->save();
     return $this;
 }
Пример #28
0
 /**
  * Retrieve storeId from object
  *
  * @param OnePica_AvaTax_Model_Sales_Quote_Address|Mage_Sales_Model_Order $object
  * @return int
  */
 protected function _getStoreIdByObject($object)
 {
     if ($object instanceof OnePica_AvaTax_Model_Sales_Quote_Address) {
         return $object->getQuote()->getStoreId();
     }
     return $object->getStoreId();
 }
Пример #29
0
 /**
  * Retrieve the paymentMethod configuration that was used in an order
  *
  * @param Mage_Sales_Model_Order $order
  * @return bool|Payone_Core_Model_Config_Payment_Method_Interface
  * @throws Payone_Core_Exception_PaymentMethodConfigNotFound
  */
 public function getConfigPaymentMethodByOrder(Mage_Sales_Model_Order $order)
 {
     $configId = $order->getPayment()->getData('payone_config_payment_method_id');
     if (!$configId) {
         $message = 'Payment method configuration with id "' . $configId . '" not found.';
         throw new Payone_Core_Exception_PaymentMethodConfigNotFound($message);
     }
     $config = $this->getConfigPaymentMethodById($configId, $order->getStoreId());
     return $config;
 }
Пример #30
0
 /**
  * Register on Magento's registry GUEST customer data for MergeVars for on checkout subscribe
  *
  * @param Mage_Sales_Model_Order $order
  * @return void
  */
 public function registerGuestCustomer($order)
 {
     if (Mage::registry('mc_guest_customer')) {
         return;
     }
     $customer = new Varien_Object();
     $customer->setId('guest' . time());
     $customer->setEmail($order->getBillingAddress()->getEmail());
     $customer->setStoreId($order->getStoreId());
     $customer->setFirstname($order->getBillingAddress()->getFirstname());
     $customer->setLastname($order->getBillingAddress()->getLastname());
     $customer->setPrimaryBillingAddress($order->getBillingAddress());
     $customer->setPrimaryShippingAddress($order->getShippingAddress());
     Mage::register('mc_guest_customer', $customer, TRUE);
 }