コード例 #1
0
ファイル: Order.php プロジェクト: hirentricore/devmagento
 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;
 }
コード例 #2
0
 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;
 }
コード例 #3
0
ファイル: Order.php プロジェクト: hazaeluz/magento_connect
 /**
  * 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;
 }
コード例 #4
0
 /**
  * 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;
 }
コード例 #5
0
ファイル: Order.php プロジェクト: buttasg/cowgirlk
 /**
  * @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();
 }
コード例 #6
0
 /**
  * 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;
 }
コード例 #7
0
ファイル: Observer.php プロジェクト: technomagegithub/olgo.nl
 /**
  * @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;
 }
コード例 #8
0
ファイル: Ecommerce360.php プロジェクト: AleksNesh/pandora
 /**
  * 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;
 }
コード例 #9
0
ファイル: Cart.php プロジェクト: hyhoocchan/mage-local
 /**
  * (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;
 }
コード例 #10
0
ファイル: Invoice.php プロジェクト: AleksNesh/pandora
 /**
  * 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;
 }
コード例 #11
0
ファイル: Data.php プロジェクト: vinayshuklasourcefuse/sareez
 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;
 }
コード例 #12
0
 /**
  * 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);
         }
     }
 }
コード例 #13
0
ファイル: Edit.php プロジェクト: AleksNesh/pandora
 /**
  * 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;
 }
コード例 #14
0
 /**
  * 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;
 }
コード例 #15
0
ファイル: Order.php プロジェクト: DeveshKumarThakur/cosmetics
 /** 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;
 }
コード例 #16
0
 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;
 }
コード例 #17
0
 /**
  * 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;
 }
コード例 #18
0
 /**
  * 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);
 }
コード例 #19
0
ファイル: Mail.php プロジェクト: sixg/mkAnagh
 /**
  * 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);
     }
 }
コード例 #20
0
ファイル: Abstract.php プロジェクト: roshu1980/add-computers
 /**
  * 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;
 }
コード例 #21
0
ファイル: Orders.php プロジェクト: buttasg/cowgirlk
 /**
  * @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;
 }
コード例 #22
0
ファイル: Api.php プロジェクト: ksawh/retailops_magento
 /**
  * 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;
 }
コード例 #23
0
ファイル: Shipnotify.php プロジェクト: buttasg/cowgirlk
 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;
 }
コード例 #24
0
ファイル: Filter.php プロジェクト: bevello/bevello
 /**
  * @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;
 }
コード例 #25
0
 /**
  * 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;
 }
コード例 #27
0
 /**
  * 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;
 }
コード例 #28
0
ファイル: Plugin.php プロジェクト: buttasg/cowgirlk
 /**
  * @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;
 }
コード例 #29
0
 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;
 }
コード例 #30
0
 /**
  * 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;
 }