public function checkRelation(Mage_Sales_Model_Order $order) { /** * Check customer existing */ $customer = Mage::getModel('customer/customer')->load($order->getCustomerId()); if (!$customer->getId()) { $this->_getSession()->addNotice(Mage::helper('adminhtml')->__(' The customer does not exist in the system anymore.')); } /** * Check Item products existing */ $productIds = array(); foreach ($order->getAllItems() as $item) { $productIds[] = $item->getProductId(); } $productCollection = Mage::getModel('catalog/product')->getCollection()->addIdFilter($productIds)->load(); $hasBadItems = false; foreach ($order->getAllItems() as $item) { if (!$productCollection->getItemById($item->getProductId())) { $this->_getSession()->addError(Mage::helper('adminhtml')->__('The item %s (SKU %s) does not exist in the catalog anymore.', $item->getName(), $item->getSku())); $hasBadItems = true; } } if ($hasBadItems) { $this->_getSession()->addError(Mage::helper('adminhtml')->__('Some of the ordered items do not exist in the catalog anymore and will be removed if you try to edit the order.')); } return $this; }
public function createReservationDocument($event) { $order = new Mage_Sales_Model_Order(); $incrementId = Mage::getSingleton('checkout/session')->getLastRealOrderId(); $order->loadByIncrementId($incrementId); $orderData = $order->getData(); $customerID = sprintf("WEBC%010d", $order['customer_id']); $orderDate = date('Y-m-d H:i:s'); $XML = "\n <TrumpasPardRezDok>\n <sKlientas>{$customerID}</sKlientas>\n <tData>{$orderDate}</tData>\n <sSerija></sSerija>\n <sDokumentas></sDokumentas>\n <sValiuta>{$orderData['order_currency_code']}</sValiuta>"; $VAT = 21; foreach ($order->getAllItems() as $item) { $children = $item->getChildrenItems(); if (!empty($children)) { continue; // bundle } $itemData = $item->getData(); $priceVat = round($itemData['price_incl_tax'], 4); $priceNoVat = round($priceVat / ($VAT / 100 + 1), 4); $priceVatValue = round($priceVat - $priceNoVat, 4); $qty = intval($itemData['qty_ordered']); $XML .= "\n <PardDokPrekeDetEil>\n <sKodas>{$itemData['sku']}</sKodas>\n <sPavadinimas>{$itemData['name']}</sPavadinimas>\n <sSandelis>CENTR.</sSandelis>\n <nKiekis>{$qty}</nKiekis>\n <dSumaL>{$priceNoVat}</dSumaL>\n <dSumaV>{$priceNoVat}</dSumaV>\n <dSumaPVMV>{$priceVatValue}</dSumaPVMV>\n <dSumaPVML>{$priceVatValue}</dSumaPVML>\n </PardDokPrekeDetEil>"; } $shippingAmountVat = round($order->getShippingAmount(), 4); $shippingAmountNoVat = round($shippingAmountVat / ($VAT / 100 + 1), 4); $shippingVatValue = round($shippingAmountVat - $shippingAmountNoVat, 4); $XML .= "\n <PardDokPaslaugaDetEil>\n <sKodas>TRANSPORTAV</sKodas>\n <nKiekis>100</nKiekis>\n <dSumaV>{$shippingAmountNoVat}</dSumaV>\n <dSumaL>{$shippingAmountNoVat}</dSumaL>\n <dSumaPVMV>{$shippingVatValue}</dSumaPVMV>\n <dSumaPVML>{$shippingVatValue}</dSumaPVML>\n \t </PardDokPaslaugaDetEil>\n "; $XML .= "</TrumpasPardRezDok>"; /** @var $fvs Srautas_Finvalda_Webservice */ $fvs = Mage::getSingleton('finvalda/webservice'); $fvs->InsertNewOperation(array('ItemClassName' => 'TrumpasPardRezDok', 'sParametras' => 'PIRMAS', 'xmlString' => $XML)); return $this; }
/** * Prepare order creditmemo based on order items and requested params * * @param array $data * @return Mage_Sales_Model_Order_Creditmemo */ public function prepareCreditmemo($data = array()) { $totalQty = 0; $creditmemo = $this->_convertor->toCreditmemo($this->_order); $qtys = isset($data['qtys']) ? $data['qtys'] : array(); foreach ($this->_order->getAllItems() as $orderItem) { if (!$this->_canRefundItem($orderItem, $qtys)) { continue; } $item = $this->_convertor->itemToCreditmemoItem($orderItem); if ($orderItem->isDummy()) { $qty = 1; $orderItem->setLockedDoShip(true); } else { if (isset($qtys[$orderItem->getId()])) { $qty = (double) $qtys[$orderItem->getId()]; } elseif (!count($qtys)) { $qty = $orderItem->getQtyToRefund(); } else { continue; } } $totalQty += $qty; $item->setQty($qty); $creditmemo->addItem($item); } $creditmemo->setTotalQty($totalQty); $this->_initCreditmemoData($creditmemo, $data); $creditmemo->collectTotals(); return $creditmemo; }
/** * Process order items to send to MailChimp * * @access private * @return Ebizmarts_MageMonkey_Model_Ecommerce360 */ private function setItemstoSend() { foreach ($this->_order->getAllItems() as $item) { $mcitem = array(); $product = Mage::getSingleton('catalog/product')->load($item->getProductId()); if (in_array($product->getTypeId(), $this->_productsToSkip) && $product->getPriceType() == 0) { if ($product->getTypeId() == Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE) { $this->_auxPrice = $item->getPrice(); } continue; } $mcitem['product_id'] = $product->getEntityId(); $mcitem['sku'] = $product->getSku(); $mcitem['product_name'] = $product->getName(); $names = array(); $cat_ids = $product->getCategoryIds(); if (is_array($cat_ids) && count($cat_ids) > 0) { $category = Mage::getModel('catalog/category')->load($cat_ids[0]); $mcitem['category_id'] = $cat_ids[0]; $names[] = $category->getName(); while ($category->getParentId() && $category->getParentId() != 1) { $category = Mage::getModel('catalog/category')->load($category->getParentId()); $names[] = $category->getName(); } } $mcitem['category_name'] = count($names) ? implode(" - ", array_reverse($names)) : 'None'; $mcitem['qty'] = $item->getQtyOrdered(); $mcitem['cost'] = $this->_auxPrice > 0 ? $this->_auxPrice : $item->getPrice(); $this->_info['items'][] = $mcitem; $this->_auxPrice = 0; } return $this; }
/** * @param Mage_Sales_Model_Abstract $entity * @param Mage_Sales_Model_Order $order * @param string $context * * @return mixed */ protected function getAllOrderItems($entity, $order, $context) { $this->_order = $order; if ($context == self::TYPE_RS) { return $entity->getAllItems(); } return $order->getAllItems(); }
/** * Create invoice * * @param Mage_Sales_Model_Order $order * @return Mage_Sales_Model_Order_Invoice */ protected function _buildInvoiceFor($order) { $items = array(); foreach ($order->getAllItems() as $item) { $items[$item->getId()] = $item->getQtyOrdered(); } $invoice = Mage::getModel('sales/service_order', $order)->prepareInvoice($items); $invoice->setEmailSent(true)->register(); return $invoice; }
/** * @param Varien_Event_Observer $observer * * @return $this */ public function buckaroo3extended_request_addcustomvars(Varien_Event_Observer $observer) { if ($this->_isChosenMethod($observer) === false) { return $this; } $request = $observer->getRequest(); $this->_billingInfo = $request->getBillingInfo(); $this->_order = $request->getOrder(); $vars = $request->getVars(); if (Mage::getStoreConfig('buckaroo/buckaroo3extended_' . $this->_method . '/use_creditmanagement', Mage::app()->getStore()->getStoreId())) { $this->_addCustomerVariables($vars); $this->_addCreditManagement($vars); $this->_addAdditionalCreditManagementVariables($vars); } $shippingCosts = round($this->_order->getBaseShippingInclTax(), 2); $discount = null; if (Mage::helper('buckaroo3extended')->isEnterprise()) { if ((double) $this->_order->getGiftCardsAmount() > 0) { $discount = (double) $this->_order->getGiftCardsAmount(); } } if (abs((double) $this->_order->getDiscountAmount()) > 0) { $discount += abs((double) $this->_order->getDiscountAmount()); } $array = array('Discount' => $discount, 'ShippingCosts' => $shippingCosts, 'ShippingSuppression' => 'TRUE'); $products = $this->_order->getAllItems(); $group = array(); foreach ($products as $item) { /** @var Mage_Sales_Model_Order_Item $item */ if (empty($item) || $item->hasParentItemId()) { continue; } // Changed calculation from unitPrice to orderLinePrice due to impossible to recalculate unitprice, // because of differences in outcome between TAX settings: Unit, OrderLine and Total. // Quantity will always be 1 and quantity ordered will be in the article description. $productPrice = $item->getBasePrice() * $item->getQtyOrdered() + $item->getBaseTaxAmount() + $item->getBaseHiddenTaxAmount(); $productPrice = round($productPrice, 2); $article['ArticleDescription']['value'] = (int) $item->getQtyOrdered() . 'x ' . $item->getName(); $article['ArticleQuantity']['value'] = 1; $article['ArticleUnitPrice']['value'] = (string) $productPrice; $group[] = $article; } $paymentFeeArray = $this->_getPaymentFeeLine(); if (false !== $paymentFeeArray && is_array($paymentFeeArray)) { $group[] = $paymentFeeArray; } $array['Articles'] = $group; if (array_key_exists('customVars', $vars) && array_key_exists($this->_method, $vars['customVars']) && is_array($vars['customVars'][$this->_method])) { $vars['customVars'][$this->_method] = array_merge($vars['customVars'][$this->_method], $array); } else { $vars['customVars'][$this->_method] = $array; } $request->setVars($vars); return $this; }
/** * Process order items to send to MailChimp * * @access private * @return Ebizmarts_MageMonkey_Model_Ecommerce360 */ private function setItemstoSend($storeId) { foreach ($this->_order->getAllItems() as $item) { $mcitem = array(); $product = Mage::getModel('catalog/product')->load($item->getProductId()); if (in_array($product->getTypeId(), $this->_productsToSkip) && $product->getPriceType() == 0) { if ($product->getTypeId() == Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE) { $this->_auxPrice = $item->getBasePrice(); } continue; } $mcitem['product_id'] = $product->getEntityId(); $mcitem['sku'] = $product->getSku(); $mcitem['product_name'] = $product->getName(); $attributesToSend = explode(',', Mage::getStoreConfig(Ebizmarts_MageMonkey_Model_Config::ECOMMERCE360_ATTRIBUTES, $storeId)); $attributes = $product->getAttributes(); $productAttributes = ''; $pipe = false; foreach ($attributes as $attribute) { if ($pipe) { $productAttributes .= '|'; } if (in_array($attribute->getAttributeCode(), $attributesToSend) && is_string($attribute->getFrontend()->getValue($product)) && trim($attribute->getFrontend()->getValue($product)) != '') { $productAttributes .= $attribute->getAttributeCode() . ':' . $attribute->getFrontend()->getValue($product); $pipe = true; } else { $pipe = false; } } if ($productAttributes) { $mcitem['product_name'] .= '[' . $productAttributes . ']'; } $names = array(); $cat_ids = $product->getCategoryIds(); if (is_array($cat_ids) && count($cat_ids) > 0) { $category = Mage::getModel('catalog/category')->load($cat_ids[0]); $mcitem['category_id'] = $cat_ids[0]; $names[] = $category->getName(); while ($category->getParentId() && $category->getParentId() != 1) { $category = Mage::getModel('catalog/category')->load($category->getParentId()); $names[] = $category->getName(); } } if (!isset($mcitem['category_id'])) { $mcitem['category_id'] = 0; } $mcitem['category_name'] = count($names) ? implode(" - ", array_reverse($names)) : 'None'; $mcitem['qty'] = $item->getQtyOrdered(); $mcitem['cost'] = $this->_auxPrice > 0 ? $this->_auxPrice : $item->getBasePrice(); $this->_info['items'][] = $mcitem; $this->_auxPrice = 0; } return $this; }
/** * (re)Render all items and totals */ protected function _render() { if (!$this->_shouldRender) { return; } // regular items from the sales entity $this->_items = array(); foreach ($this->_salesEntity->getAllItems() as $item) { if (!$item->getParentItem()) { $this->_addRegularItem($item); } } end($this->_items); $lastRegularItemKey = key($this->_items); // regular totals $shippingDescription = ''; if ($this->_salesEntity instanceof Mage_Sales_Model_Order) { $shippingDescription = $this->_salesEntity->getShippingDescription(); $this->_totals = array(self::TOTAL_SUBTOTAL => $this->_salesEntity->getBaseSubtotal(), self::TOTAL_TAX => $this->_salesEntity->getBaseTaxAmount(), self::TOTAL_SHIPPING => $this->_salesEntity->getBaseShippingAmount(), self::TOTAL_DISCOUNT => abs($this->_salesEntity->getBaseDiscountAmount())); $this->_applyHiddenTaxWorkaround($this->_salesEntity); } else { $address = $this->_salesEntity->getIsVirtual() ? $this->_salesEntity->getBillingAddress() : $this->_salesEntity->getShippingAddress(); $shippingDescription = $address->getShippingDescription(); $this->_totals = array(self::TOTAL_SUBTOTAL => $this->_salesEntity->getBaseSubtotal(), self::TOTAL_TAX => $address->getBaseTaxAmount(), self::TOTAL_SHIPPING => $address->getBaseShippingAmount(), self::TOTAL_DISCOUNT => abs($address->getBaseDiscountAmount())); $this->_applyHiddenTaxWorkaround($address); } $originalDiscount = $this->_totals[self::TOTAL_DISCOUNT]; // arbitrary items, total modifications Mage::dispatchEvent('paypal_prepare_line_items', array('paypal_cart' => $this)); // distinguish original discount among the others if ($originalDiscount > 0.0001 && isset($this->_totalLineItemDescriptions[self::TOTAL_DISCOUNT])) { $this->_totalLineItemDescriptions[self::TOTAL_DISCOUNT][] = Mage::helper('sales')->__('Discount (%s)', Mage::app()->getStore()->convertPrice($originalDiscount, true, false)); } // discount, shipping as items if ($this->_isDiscountAsItem && $this->_totals[self::TOTAL_DISCOUNT]) { $this->addItem(Mage::helper('paypal')->__('Discount'), 1, -1.0 * $this->_totals[self::TOTAL_DISCOUNT], $this->_renderTotalLineItemDescriptions(self::TOTAL_DISCOUNT)); } $shippingItemId = $this->_renderTotalLineItemDescriptions(self::TOTAL_SHIPPING, $shippingDescription); if ($this->_isShippingAsItem && (double) $this->_totals[self::TOTAL_SHIPPING]) { $this->addItem(Mage::helper('paypal')->__('Shipping'), 1, (double) $this->_totals[self::TOTAL_SHIPPING], $shippingItemId); } // compound non-regular items into subtotal foreach ($this->_items as $key => $item) { if ($key > $lastRegularItemKey && $item->getAmount() != 0) { $this->_totals[self::TOTAL_SUBTOTAL] += $item->getAmount(); } } $this->_validate(); // if cart items are invalid, prepare cart for transfer without line items if (!$this->_areItemsValid) { $this->removeItem($shippingItemId); } $this->_shouldRender = false; }
/** * Set correct totals for the items which have just been invoiced * * @param Mage_Sales_Model_Order $order * @return $this */ public function updateInvoicedItems(Mage_Sales_Model_Order $order) { foreach ($order->getAllItems() as $orderItem) { $orderItem->setTaxInvoiced($orderItem->getTaxAmount()); $orderItem->setBaseTaxInvoiced($orderItem->getBaseTaxAmount()); $orderItem->setRowInvoiced($orderItem->getRowTotal()); $orderItem->setBaseRowInvoiced($orderItem->getBaseRowTotal()); $orderItem->save(); } return $this; }
public function getScript() { $request = Mage::app()->getRequest(); $module = $request->getModuleName(); $controller = $request->getControllerName(); $action = $request->getActionName(); $flag = false; $currency = Mage::app()->getStore()->getCurrentCurrencyCode(); $script = "<script>var apiKey = '" . $this->getKey() . "';</script>" . "\n"; if ($module == 'checkout' && $controller == 'onestep' && $action == 'success' || $module == 'checkout' && $controller == 'onepage' && $action == 'success' || $module == 'securecheckout' && $controller == 'index' && $action == 'success' || $module == 'customdownloadable' && $controller == 'onepage' && $action == 'success' || $module == 'onepagecheckout' && $controller == 'index' && $action == 'success' || $module == 'onestepcheckout' && $controller == 'index' && $action == 'success') { $order = new Mage_Sales_Model_Order(); $orderId = Mage::getSingleton('checkout/session')->getLastRealOrderId(); $order->loadByIncrementId($orderId); // Load order details $order_total = round($order->getGrandTotal(), 2); // Get grand total $order_coupon = $order->getCouponCode(); // Get coupon used $items = $order->getAllItems(); // Get items info $cartInfo = array(); // Convert object to string foreach ($items as $item) { $product = Mage::getModel('catalog/product')->load($item->getProductId()); $name = $item->getName(); $qty = $item->getQtyToInvoice(); $cartInfo[] = array('id' => $item->getProductId(), 'name' => $name, 'quantity' => $qty); } $cartInfoString = serialize($cartInfo); $cartInfoString = addcslashes($cartInfoString, "'"); $order_name = $order->getCustomerName(); // Get customer's name $order_email = $order->getCustomerEmail(); // Get customer's email id // Call invoiceRefiral function $scriptAppend = "<script>whenAvailable('invoiceRefiral',function(){invoiceRefiral('{$order_total}','{$order_total}','{$order_coupon}','{$cartInfoString}','{$order_name}','{$order_email}','{$orderId}', '{$currency}')});</script>" . "\n"; if ($this->debug()) { $scriptAppend .= "<script>console.log('Module: " . $module . ", Controller: " . $controller . ", Action: " . $action . "');</script>"; $scriptAppend .= "<script>console.log('Total: " . $order_total . ", Coupon: " . $order_coupon . ", Cart: " . $cartInfoString . ", Name: " . $order_name . ", Email: " . $order_email . ", Id: " . $orderId . ", Currency: " . $currency . "');</script>"; } $script .= '<script>var showButton = false;</script>' . "\n"; } else { if ($this->debug()) { $scriptAppend = "<script>console.log('Module: " . $module . ", Controller: " . $controller . ", Action: " . $action . "');</script>"; } else { $scriptAppend = ''; } $script .= '<script>var showButton = true;</script>' . "\n"; } $script .= '<script type="text/javascript">(function e(){var e=document.createElement("script");e.type="text/javascript",e.async=true,e.src="//rfer.co/api/v1/js/all.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})();</script>' . "\n"; return $script . $scriptAppend; }
/** * Update the status of catalog items if their inventory is below the threshold * * @param Mage_Sales_Model_Order $order order object * * @return boolean */ public function updateStatus($order) { // get order items $orderItems = $order->getAllItems(); // get current store $storeId = Mage::app()->getStore()->getStoreId(); foreach ($orderItems as $item) { $_product = Mage::getModel('catalog/product')->loadByAttribute('sku', $item->getSku()); $_product = Mage::getModel('catalog/product')->load($_product->getId()); $_availableQty = (int) Mage::getModel('cataloginventory/stock_item')->loadByProduct($_product)->getQty(); if ($_availableQty <= $_product->getUnmInventoryThreshold()) { Mage::getModel('catalog/product_status')->updateProductStatus($_product->getId(), $storeId, Mage_Catalog_Model_Product_Status::STATUS_DISABLED); } } }
/** * Check and restore quote items which have been deleted from database * * @param $quoteId * @param Mage_Sales_Model_Order $order * @internal param \Mage_Sales_Model_Quote $quote * @return $this */ public function checkQuoteItems($quoteId, Mage_Sales_Model_Order $order) { if ($this->_quoteItemsAlreadyChecked) { return $this; } foreach ($order->getAllItems() as $orderItem) { $quoteItemId = $orderItem->getQuoteItemId(); $quoteItem = Mage::getModel('sales/quote_item')->load($quoteItemId); if ($quoteItem && $quoteItem->getId()) { continue; } $product = Mage::getModel('catalog/product')->setStoreId($order->getStoreId())->load($orderItem->getProductId()); $newQuoteItem = Mage::getModel('sales/convert_order')->itemToQuoteItem($orderItem); $newQuoteItem->setQuoteId($quoteId)->setProduct($product)->save(); $orderItem->setQuoteItemId($newQuoteItem->getItemId())->save(); } $this->_quoteItemsAlreadyChecked = true; return $this; }
/** * Return if products are available for current admin * * @param Mage_Sales_Model_Order $model * @return bool */ protected function _ifProductsAvailable($model) { $products = $model->getAllItems(); $allProductsAvailable = true; foreach ($products as $product) { try { $this->_factory->getModel('catalog/product')->load($product->getProductId()); } catch (Enterprise_AdminGws_Controller_Exception $e) { $allProductsAvailable = false; } if (!$allProductsAvailable) { break; } } return $allProductsAvailable; }
/** Saves the Order, to complete the full life-cycle of the Order * Order status will now show as Complete * @param $order Mage_Sales_Model_Order */ protected function _saveOrder(Mage_Sales_Model_Order $order) { $totalQtyOrdered = (double) $order->getTotalQtyOrdered(); $qtyShipped = ''; foreach ($order->getAllItems() as $_eachItem) { $qtyShipped += (double) $_eachItem->getQtyShipped(); } if ($qtyShipped < $totalQtyOrdered) { $order->setData('state', Mage_Sales_Model_Order::STATE_PROCESSING); $order->setData('status', Mage_Sales_Model_Order::STATE_PROCESSING); } else { $order->setData('state', Mage_Sales_Model_Order::STATE_COMPLETE); $order->setData('status', Mage_Sales_Model_Order::STATE_COMPLETE); } $order->save(); return $this; }
public function deleteOrder(Mage_Sales_Model_Order $order) { $invoices = $order->getInvoiceCollection(); foreach ($invoices as $invoice) { //delete all invoice items $items = $invoice->getAllItems(); foreach ($items as $item) { $item->delete(); } //delete invoice $invoice->delete(); } $creditnotes = $order->getCreditmemosCollection(); foreach ($creditnotes as $creditnote) { //delete all creditnote items $items = $creditnote->getAllItems(); foreach ($items as $item) { $item->delete(); } //delete credit note $creditnote->delete(); } $shipments = $order->getShipmentsCollection(); foreach ($shipments as $shipment) { //delete all shipment items $items = $shipment->getAllItems(); foreach ($items as $item) { $item->delete(); } //delete shipment $shipment->delete(); } //delete all order items $items = $order->getAllItems(); foreach ($items as $item) { $item->delete(); } //delete payment - not sure about this one $order->getPayment()->delete(); //delete quote - this can be skipped /*if ($order->getQuote()) { foreach ($order->getQuote()->getAllItems() as $item) { $item->delete(); } $order->getQuote()->delete(); }*/ //delete order $order->delete(); return $this; }
/** * Get order quantities. * * @param Mage_Sales_Model_Order $order * @return array $qtys */ public function getQtys(Mage_Sales_Model_Order $order) { $qtys = array(); foreach ($order->getAllItems() as $item) { $qtys[$item->getId()] = $item->getQtyToShip(); } return $qtys; }
/** * build itemized order params array for itemized beacon URL * @param Mage_Sales_Model_Order $order * @return array */ protected function _buildItemizedParams(Mage_Sales_Model_Order $order) { $params = array(static::KEY_INT => Mage::helper('eems_affiliate/config')->getInt()); $increment = 1; // incrementer for the unique item keys foreach ($order->getAllItems() as $item) { // need to ignore the bundle parent as it will contain collected total // for children but not discounts $position = $this->_getDupePosition($params, $item); // ignore the parent configurable quantity - quantity of config products // will come from the simple used product with the same SKU $quantity = $item->getProductType() === Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE ? 0 : (int) $item->getQtyOrdered(); // consider parent bundle products to be 0.00 total - total of the bundle // is the sum of all child products which are also included in the beacon // so including both totals would effectively double the price of the bundle $total = $item->getProductType() === Mage_Catalog_Model_Product_Type::TYPE_BUNDLE ? 0.0 : $item->getRowTotal() - $item->getDiscountAmount(); if ($position) { // we detected that the current item already exist in the params array // and have the key increment position let's simply adjust // the qty and total amount $params[static::KEY_QTY . $position] += $quantity; $amtKey = static::KEY_TOTALAMOUNT . $position; $params[$amtKey] = number_format($params[$amtKey] + $total, 2, '.', ''); } else { $params = array_merge($params, array(static::KEY_ITEM . $increment => $item->getSku(), static::KEY_QTY . $increment => $quantity, static::KEY_TOTALAMOUNT . $increment => number_format($total, 2, '.', ''))); $increment++; // only get incremented when a unique key have been appended } } return array_merge($this->_buildCommonParams($order), $params); }
/** * Send order notification email to vendor * @param Mage_Sales_Model_Order $order */ public function sendOrderEmail(Mage_Sales_Model_Order $order, $type) { $types = array(Ced_CsMarketplace_Model_Vorders::ORDER_NEW_STATUS => self::XML_PATH_ORDER_NEW_EMAIL_TEMPLATE, Ced_CsMarketplace_Model_Vorders::ORDER_CANCEL_STATUS => self::XML_PATH_ORDER_CANCEL_EMAIL_TEMPLATE); if (!isset($types[$type])) { return; } $storeId = $order->getStore()->getId(); if ($type == Ced_CsMarketplace_Model_Vorders::ORDER_NEW_STATUS) { if (!$this->canSendNewOrderEmail($storeId)) { return; } } if ($type == Ced_CsMarketplace_Model_Vorders::ORDER_CANCEL_STATUS) { if (!$this->canSendCancelOrderEmail($storeId)) { return; } } $vendorIds = array(); foreach ($order->getAllItems() as $item) { if (!in_array($item->getVendorId(), $vendorIds)) { $vendorIds[] = $item->getVendorId(); } } if ($type == Ced_CsMarketplace_Model_Vorders::ORDER_CANCEL_STATUS) { // Start store emulation process $storeId = Mage::app()->getStore()->getId(); $appEmulation = Mage::getSingleton('core/app_emulation'); $initialEnvironmentInfo = $appEmulation->startEnvironmentEmulation($storeId); } try { // Retrieve specified view block from appropriate design package (depends on emulated store) $paymentBlock = Mage::helper('payment')->getInfoBlock($order->getPayment())->setIsSecureMode(true); $paymentBlock->getMethod()->setStore($storeId); $paymentBlockHtml = $paymentBlock->toHtml(); } catch (Exception $exception) { // Stop store emulation process if ($type == Ced_CsMarketplace_Model_Vorders::ORDER_CANCEL_STATUS) { $appEmulation->stopEnvironmentEmulation($initialEnvironmentInfo); } throw $exception; } foreach ($vendorIds as $vendorId) { $vendor = Mage::getModel('csmarketplace/vendor')->load($vendorId); if (!$vendor->getId()) { continue; } $vorder = Mage::getModel('csmarketplace/vorders')->loadByField(array('order_id', 'vendor_id'), array($order->getIncrementId(), $vendorId)); if (Mage::registry('current_order') != '') { Mage::unregister('current_order'); } if (Mage::registry('current_vorder') != '') { Mage::unregister('current_vorder'); } Mage::register('current_order', $order); Mage::register('current_vorder', $vorder); $this->_sendEmailTemplate($types[$type], self::XML_PATH_ORDER_EMAIL_IDENTITY, array('vendor' => $vendor, 'order' => $order, 'billing' => $order->getBillingAddress(), 'payment_html' => $paymentBlockHtml), null); } if ($type == Ced_CsMarketplace_Model_Vorders::ORDER_CANCEL_STATUS) { // Stop store emulation process $appEmulation->stopEnvironmentEmulation($initialEnvironmentInfo); } }
/** * return item params for the order * for each item a ascending number will be added to the parameter name * * @param Mage_Sales_Model_Order $order * * @return array */ public function getItemParams(Mage_Sales_Model_Order $order) { $formFields = array(); $items = $order->getAllItems(); $subtotal = 0; if (is_array($items)) { $itemCounter = 1; foreach ($items as $item) { if ($item->getParentItemId()) { continue; } $subtotal += $item->getBasePriceInclTax() * $item->getQtyOrdered(); $formFields['ITEMFDMPRODUCTCATEG' . $itemCounter] = $this->getKwixoCategoryFromOrderItem($item); $formFields['ITEMID' . $itemCounter] = $item->getItemId(); $formFields['ITEMNAME' . $itemCounter] = substr($item->getName(), 0, 40); $formFields['ITEMPRICE' . $itemCounter] = number_format($item->getBasePriceInclTax(), 2, '.', ''); $formFields['ITEMQUANT' . $itemCounter] = (int) $item->getQtyOrdered(); $formFields['ITEMVAT' . $itemCounter] = str_replace(',', '.', (string) (double) $item->getBaseTaxAmount()); $formFields['TAXINCLUDED' . $itemCounter] = 1; $itemCounter++; } $shippingPrice = $order->getBaseShippingAmount(); $shippingPriceInclTax = $order->getBaseShippingInclTax(); $subtotal += $shippingPriceInclTax; $shippingTaxAmount = $shippingPriceInclTax - $shippingPrice; $roundingError = $order->getBaseGrandTotal() - $subtotal; $shippingPrice += $roundingError; /* add shipping item */ $formFields['ITEMFDMPRODUCTCATEG' . $itemCounter] = 1; $formFields['ITEMID' . $itemCounter] = 'SHIPPING'; $shippingDescription = 0 < strlen(trim($order->getShippingDescription())) ? $order->getShippingDescription() : 'shipping'; $formFields['ITEMNAME' . $itemCounter] = substr($shippingDescription, 0, 30); $formFields['ITEMPRICE' . $itemCounter] = number_format($shippingPrice, 2, '.', ''); $formFields['ITEMQUANT' . $itemCounter] = 1; $formFields['ITEMVAT' . $itemCounter] = number_format($shippingTaxAmount, 2, '.', ''); } return $formFields; }
/** * @param Mage_Sales_Model_Order $order * @return array */ protected function _getOrderItemsFormatted($order) { $items = array(); foreach ($order->getAllItems() as $item) { /** @var Mage_Sales_Model_Order_Item $item */ // avoid child and parent products in list if (!$item->getParentItemId()) { $shopgateItem = new ShopgateExternalOrderItem(); $shopgateItem->setItemNumber($item->getProductId()); $shopgateItem->setItemNumberPublic($item->getSku()); $shopgateItem->setQuantity((int) $item->getQtyOrdered()); $shopgateItem->setname($item->getName()); $shopgateItem->setUnitAmount($item->getPrice()); $shopgateItem->setUnitAmountWithTax($item->getPriceInclTax()); $shopgateItem->setTaxPercent($item->getTaxPercent()); $shopgateItem->setCurrency($order->getOrderCurrencyCode()); $shopgateItem->setDescription($item->getDescription()); array_push($items, $shopgateItem); } } return $items; }
/** * Check that there are no items left for shipping * * @param Mage_Sales_Model_Order $order $order * @return bool */ protected function _checkAllItemsShipped($order) { $items = $order->getAllItems(); /** @var $item Mage_Sales_Model_Order_Item */ foreach ($items as $item) { if ($item->getQtyToShip()) { return false; } } return true; }
protected function _getOrderItemQtys(SimpleXMLElement $xmlItems, Mage_Sales_Model_Order $order) { $shipAll = !count((array) $xmlItems); /* @var $items Mage_Sales_Model_Mysql4_Order_Item_Collection */ $items = $order->getItemsCollection(); $qtys = array(); $childs = array(); /* @var $item Mage_Sales_Model_Order_Item */ foreach ($items as $item) { /* collect all items qtys if shipall flag is true */ if ($shipAll) { if ($item->getParentItemId()) { $qtys[$item->getParentItemId()] = $item->getQtyOrdered(); } else { $qtys[$item->getId()] = $item->getQtyOrdered(); } continue; } // search for item by SKU @(list($xmlItem) = $xmlItems->xpath(sprintf('//Item/SKU[text()="%s"]/..', addslashes($item->getSku())))); if ($xmlItem) { // store quantity by order item ID, not by SKU $qtys[$item->getId()] = (double) $xmlItem->Quantity; } } //Add child products into the shipments $intImportChildProducts = Mage::getStoreConfig('auctaneapi/general/import_child_products'); if ($intImportChildProducts == 2) { $orderItems = $order->getAllItems(); foreach ($orderItems as $objItem) { if ($objItem->getParentItemId()) { //set parent item if not set if (!$objItem->getParentItem()) { $objItem->setParentItem(Mage::getModel('sales/order_item')->load($objItem->getParentItemId())); } if ($objItem->getParentItem()) { //check for the bundle product type if ($objItem->getParentItem()->getProductType() === 'bundle') { $qtys[$objItem->getItemId()] = $qtys[$objItem->getParentItemId()]; } } } } } return $qtys; }
/** * @param Mage_Sales_Model_Order $order * @param string $type * * @return Bronto_Common_Model_Email_Template_Filter */ protected function _filterOrder(Mage_Sales_Model_Order $order, $type = 'order') { if (!in_array('order', $this->_filteredObjects)) { $this->setStoreId($order->getStoreId()); $index = 1; foreach ($order->getAllItems() as $item) { if (!$item->getParentItem()) { $this->_filterOrderItem($item, $index); $index++; } } // Add Related Content $this->_items = $order->getAllItems(); // Order may not be a shippable order $shipAddress = 'N/A'; $shipDescription = 'N/A'; if ($order->getIsNotVirtual()) { $shipAddress = $order->getShippingAddress()->format('html'); $shipDescription = $order->getShippingDescription(); } // Check for guest orders $customerName = $order->getCustomerIsGuest() ? $order->getBillingAddress()->getName() : $order->getCustomerName(); $this->setField('orderIncrementId', $order->getIncrementId()); $this->setField('orderCreatedAt', $order->getCreatedAtFormated('long')); $this->setField('orderBillingAddress', $order->getBillingAddress()->format('html')); $this->setField('orderShippingAddress', $shipAddress); $this->setField('orderShippingDescription', $shipDescription); $this->setField('orderCustomerName', $customerName); $this->setField('orderStatusLabel', $order->getStatusLabel()); $this->setField('orderItems', $this->_filterOrderItems($order)); $this->_respectDesignTheme(); $totals = $this->_getTotalsBlock(Mage::getSingleton('core/layout'), $order, 'sales/order_totals', 'order_totals'); $this->setField('orderTotals', $totals->toHtml()); $this->_filteredObjects[] = 'order'; } return $this; }
/** * Retrieve the number of canceled positions * * @param Mage_Sales_Model_Order $order * @return integer */ private function getCancelItemCount(Mage_Sales_Model_Order $order) { $counter = 0; foreach ($order->getAllItems() as $orderItem) { $counter = $counter + $orderItem->getQtyCanceled(); } return $counter; }
/** * @param Mage_Sales_Model_Order $order * @return boolean */ public function _useFixedCurrency($order) { try { $useFixedCurrency = Mage::getStoreConfig(self::CONFIG_PATH_CURRENCY_CHECKOUT_USE_FIXED_CURRENCY); if (!$useFixedCurrency) { return false; } $fixedCurrencyCode = Mage::getStoreConfig(self::CONFIG_PATH_CURRENCY_CHECKOUT_FIXED_CURRENCY); $baseCurrencyCode = Mage::app()->getStore()->getBaseCurrencyCode(); $baseCurrency = Mage::getModel('directory/currency')->load($baseCurrencyCode); $fixedCurrency = Mage::getModel('directory/currency')->load($fixedCurrencyCode); $imagecc_preserved_information = array('order_fields' => array(), 'item_fields' => array()); $_coreHelper = Mage::helper('core'); Mage::helper('imagecc')->log("Using fixed currency " . $order->getIncrementId()); foreach ($this->_orderFields as $field) { $field2 = preg_replace('(^base_)', '', $field); $new_v = $order->getData($field); $new_v = $baseCurrency->convert($new_v, $fixedCurrency); $new_v2 = $new_v; /** * preserve information before change it */ if ($field != $field2) { $imagecc_preserved_information['order_fields'][] = array('field' => $field, 'original_value' => $order->getData($field), 'new_value' => $new_v); $imagecc_preserved_information['order_fields'][] = array('field' => $field2, 'original_value' => $order->getData($field2), 'new_value' => $new_v2); } $order->setData($field, $new_v); $order->setData($field2, $new_v2); Mage::helper('imagecc')->log("{$field2} {$field} {$new_v}"); } foreach ($order->getAllItems() as $item) { $arr = $this->_itemFields; $quoteItemId = $item->getData('quote_item_id'); $imagecc_preserved_information['item_fields'][$quoteItemId] = array(); foreach ($arr as $k) { //$v = $item->getData($k); //$new_v = $_coreHelper->currency($v, false, false); $field2 = preg_replace('(^base_)', '', $k); $new_v = $item->getData($k); $new_v = $baseCurrency->convert($new_v, $fixedCurrency); $new_v2 = $item->getData($field2); $new_v2 = $new_v; /** * preserve information before change it */ if ($k != $field2) { $imagecc_preserved_information['item_fields'][$quoteItemId][] = array('field' => $k, 'original_value' => $item->getData($k), 'new_value' => $new_v); $imagecc_preserved_information['item_fields'][$quoteItemId][] = array('field' => $field2, 'original_value' => $item->getData($field2), 'new_value' => $new_v2); } $item->setData($k, $new_v); $item->setData($field2, $new_v2); Mage::helper('imagecc')->log("{$field2} {$k} {$new_v}"); } //$item->save(); } $store_currency = $fixedCurrencyCode; /** * preserve information before change it */ $imagecc_preserved_information['order_fields']['order_currency_code'] = array('original_value' => $order->getData('order_currency_code'), 'field' => 'order_currency_code', 'new_value' => $store_currency); $imagecc_preserved_information['order_fields']['global_currency_code'] = array('original_value' => $order->getData('global_currency_code'), 'field' => 'global_currency_code', 'new_value' => $store_currency); $imagecc_preserved_information['order_fields']['base_currency_code'] = array('original_value' => $order->getData('base_currency_code'), 'field' => 'base_currency_code', 'new_value' => $store_currency); $imagecc_preserved_information['order_fields']['store_currency_code'] = array('original_value' => $order->getData('store_currency_code'), 'field' => 'store_currency_code', 'new_value' => $store_currency); $order->setData('order_currency_code', $store_currency)->setData('global_currency_code', $store_currency)->setData('base_currency_code', $store_currency)->setData('store_currency_code', $store_currency)->setData('imagecc_preserved_information', json_encode($imagecc_preserved_information)); return true; } catch (Exception $e) { Mage::helper('imagecc')->log("error during fixed currency " . $e->getMessage()); } return false; }
/** * Get the Quantities shipped for the Order, based on an item-level * This method can also be modified, to have the Partial Shipment functionality in place * * @param $order Mage_Sales_Model_Order * @return array */ protected function _getItemQtys(Mage_Sales_Model_Order $order) { $qty = array(); foreach ($order->getAllItems() as $_eachItem) { if ($_eachItem->getParentItemId()) { $qty[$_eachItem->getParentItemId()] = $_eachItem->getQtyOrdered(); } else { $qty[$_eachItem->getId()] = $_eachItem->getQtyOrdered(); } } return $qty; }
/** * @param Mage_Sales_Model_Order $magentoOrder * @param ShopgateOrder $shopgateOrder * @param Shopgate_Framework_Model_Shopgate_Order $magentoShopgateOrder * * @return Mage_Sales_Model_Order */ protected function _updateOrderShipping($magentoOrder, $shopgateOrder, $magentoShopgateOrder) { $updateShipment = false; foreach ($magentoOrder->getAllItems() as $orderItem) { /** @var $orderItem Mage_Sales_Model_Order_Item */ if ($orderItem->getQtyShipped() != $orderItem->getQtyOrdered()) { $updateShipment = true; break; } } if ($shopgateOrder->getUpdateShipping() && $updateShipment) { $this->log("# Update shipping", ShopgateLogger::LOGTYPE_DEBUG); $magentoOrder = $this->_setOrderState($magentoOrder, $shopgateOrder); if ($this->_isValidShipping($magentoOrder, $shopgateOrder, $magentoShopgateOrder)) { $message = "[SHOPGATE] Shipping of this order is not blocked by Shopgate."; $magentoOrder->addStatusHistoryComment($this->_getHelper()->__($message), false); } else { $message = "[SHOPGATE] Shipping of this order is not Blocked anymore!"; $magentoOrder->addStatusHistoryComment($this->_getHelper()->__($message), false); } } return $magentoOrder; }
private function _getOrderItem(Mage_Sales_Model_Order $order, $gpSku) { foreach ($order->getAllItems() as $orderItem) { $product = Mage::getModel('catalog/product')->load($orderItem->getProductId()); if ($product->getGpSku() == $gpSku) { return $orderItem; } } return false; }
/** * Get all the simple items in an order. * * @param Mage_Shipping_Model_Rate_Request|Mage_Sales_Model_Order $order Order to retrieve items for * * @return array List of simple products from order */ public function getAllSimpleItems($order) { $items = array(); foreach ($order->getAllItems() as $item) { if ($item->getProductType() == 'simple') { $items[] = $item; } } return $items; }