/**
  * Add items to a passed in order object.
  * @param  Mage_Sales_Model_Order $order
  * @param  array $itemData
  * @param  string $itemColumn
  * @param  string $itemDataKey
  * @param  string $itemIdKey
  * @return self
  */
 protected function _addItemsToOrder(Mage_Sales_Model_Order $order, array $itemData, $itemColumn, $itemDataKey, $itemIdKey)
 {
     foreach ($itemData as $data) {
         // see Mage_Sales_Model_Order::addItem method
         // when a sales/order_item::getId exists it won't add the item to
         // the collection.
         $item = Mage::getModel('sales/order_item', [$itemColumn => $data[$itemDataKey]]);
         $order->addItem($item);
         $item->setItemId($data[$itemIdKey]);
     }
     return $this;
 }
 /**
  * When getting items for an address, only items that should be included
  * in the order create request should be returned.
  */
 public function testGetItemsForAddressFiltering()
 {
     // Create an item that is exptected to be excluded from the OCR and
     // an items that should be included.
     $excludedItem = Mage::getModel('sales/order_item', ['order_address_id' => $this->_shipAddressId]);
     $includedItem = Mage::getModel('sales/order_item', ['order_address_id' => $this->_shipAddressId]);
     $this->_order->addItem($excludedItem)->addItem($includedItem);
     // Stubs
     $api = $this->_httpApi;
     $config = $this->getModelMock('eb2ccore/config_registry');
     $payload = $this->getMock('\\eBayEnterprise\\RetailOrderManagement\\Payload\\Order\\IOrderCreateRequest');
     $constructorArgs = ['api' => $api, 'config' => $config, 'order' => $this->_order, 'payload' => $payload, 'item_selection' => $this->_itemSelection];
     $create = Mage::getModel('ebayenterprise_order/create', $constructorArgs);
     // Mock the item selection helper such that if given the array of items
     // that belong to the address - excluded and included items - that only
     // the items that should be included are returned.
     $this->_itemSelection->expects($this->any())->method('selectFrom')->with($this->identicalTo([$excludedItem, $includedItem]))->will($this->returnValue([$includedItem]));
     $itemsForAddress = EcomDev_Utils_Reflection::invokeRestrictedMethod($create, '_getItemsForAddress', [$this->_shipAddress, $this->_order->getItemsCollection()]);
     $this->assertCount(1, $itemsForAddress);
     $this->assertSame($includedItem, $itemsForAddress[0]);
 }
Exemple #3
0
 /**
  * Add new products to order
  *
  * @param Mage_Sales_Model_Quote $quote
  * @param Mage_Sales_Model_Order $order
  * @param                        $changes
  * @return $this
  */
 public function saveNewOrderItems(Mage_Sales_Model_Quote $quote, Mage_Sales_Model_Order $order, $changes)
 {
     foreach ($quote->getAllItems() as $quoteItem) {
         $orderItem = $order->getItemByQuoteItemId($quoteItem->getItemId());
         if ($orderItem && $orderItem->getItemId()) {
             continue;
         }
         $quoteItem->save();
         $orderItem = $this->getConvertor()->itemToOrderItem($quoteItem, $orderItem);
         $order->addItem($orderItem);
         $orderItem->save();
         /*** Add new items to log ***/
         $changedItem = $quoteItem;
         $itemChange = array('name' => $changedItem->getName(), 'qty_before' => 0, 'qty_after' => $changedItem->getQty());
         $this->getLogModel()->addItemChange($changedItem->getId(), $itemChange);
         $this->_savedOrderItems[] = $orderItem->getItemId();
     }
     foreach ($quote->getAllItems() as $childQuoteItem) {
         $parentOrderItem = false;
         $childOrderItem = $order->getItemByQuoteItemId($childQuoteItem->getItemId());
         /*** Add items relations for configurable and bundle products ***/
         if ($childQuoteItem->getParentItemId()) {
             $parentOrderItem = $order->getItemByQuoteItemId($childQuoteItem->getParentItemId());
             $childOrderItem->setParentItemId($parentOrderItem->getItemId());
             $childOrderItem->save();
         }
         //            /*** Add new items to log ***/
         //            $changedItem = $parentOrderItem ? $parentOrderItem : $childOrderItem;
         //            $itemChange = array(
         //                'name' => $changedItem->getName(),
         //                'qty_before' => 0,
         //                'qty_after' => $changedItem->getQtyToRefund() + $changedItem->getQtyToCancel()
         //            );
         //            $this->getLogModel()->addItemChange($changedItem->getId(), $itemChange);
     }
     return $this;
 }
 * NOTICE OF LICENSE
 *
 * This source file is subject to the Open Software License (OSL 3.0)
 * that is bundled with this package in the file LICENSE.txt.
 * It is also available through the world-wide-web at this URL:
 * http://opensource.org/licenses/osl-3.0.php
 * If you did not receive a copy of the license and are unable to
 * obtain it through the world-wide-web, please send an email
 * to license@magentocommerce.com so we can send you a copy immediately.
 *
 * DISCLAIMER
 *
 * Do not edit or add to this file if you wish to upgrade Magento to newer
 * versions in the future. If you wish to customize Magento for your
 * needs please refer to http://www.magentocommerce.com for more information.
 *
 * @category    Magento
 * @package     Mage_Downlodable
 * @subpackage  integration_tests
 * @copyright   Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com)
 * @license     http://opensource.org/licenses/osl-3.0.php  Open Software License (OSL 3.0)
 */
$billingAddress = new Mage_Sales_Model_Order_Address(array('firstname' => 'guest', 'lastname' => 'guest', 'email' => '*****@*****.**', 'street' => 'street', 'city' => 'Los Angeles', 'region' => 'CA', 'postcode' => '1', 'country_id' => 'US', 'telephone' => '1'));
$billingAddress->setAddressType('billing');
$payment = new Mage_Sales_Model_Order_Payment();
$payment->setMethod('checkmo');
$orderItem = new Mage_Sales_Model_Order_Item();
$orderItem->setProductId(1)->setProductType(Mage_Downloadable_Model_Product_Type::TYPE_DOWNLOADABLE)->setBasePrice(100)->setQtyOrdered(1);
$order = new Mage_Sales_Model_Order();
$order->addItem($orderItem)->setIncrementId('100000001')->setCustomerIsGuest(true)->setStoreId(1)->setEmailSent(1)->setBillingAddress($billingAddress)->setPayment($payment);
$order->save();
 /**
  * Create order items for quote items belonging to an address.
  *
  * @param Mage_Sales_Model_Quote_Item_Abstract[]
  * @param Mage_Sales_Model_Order_Address
  * @param Mage_Sales_Model_Order
  * @return self
  */
 protected function _createOrderItems(array $quoteItems, Mage_Sales_Model_Order_Address $orderAddress, Mage_Sales_Model_Order $order)
 {
     foreach ($quoteItems as $quoteAddressItem) {
         $orderItem = $this->_convertor->itemToOrderItem($quoteAddressItem)->setOrderAddress($orderAddress)->setProductType($this->_getItemProductType($quoteAddressItem));
         $order->addItem($orderItem);
     }
     return $this;
 }