/** * 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); }
/** * @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); }
/** * @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); } }
/** * 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; }
/** * 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; } }
/** * 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); }
/** * 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()); }
/** * 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; }
/** * 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); }
/** * 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; }
/** * 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; }
/** * 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; }
/** * 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(); } } } }
/** * 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; }
/** * 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; }
/** * 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; }
/** * 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; }
/** * 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; }
/** * 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; }
/** * 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; }
/** * 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; }
/** * 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; }
/** * 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(); }
/** * 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; }
/** * 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); }