/** * build out the order item payload * @param IOrderItem * @param Mage_Sales_Model_Order_Item * @param Mage_Sales_Model_Order_Address * @param int * @param string * @param bool * @return IOrderItem */ public function buildOrderItem(IOrderItem $payload, Mage_Sales_Model_Order_Item $item, Mage_Sales_Model_Order_Address $address, $lineNumber, $includeShipping = false) { $merch = $payload->getMerchandisePricing(); $this->prepareMerchandisePricing($item, $merch); if ($includeShipping) { $this->prepareShippingPriceGroup($address, $payload); } list($itemSize, $itemSizeId) = $this->getItemSizeInfo($item); list($itemColor, $itemColorId) = $this->getItemColorInfo($item); $payload->setLineNumber($lineNumber)->setItemId($item->getSku())->setQuantity($item->getQtyOrdered())->setDescription($item->getName())->setMerchandisePricing($merch)->setColor($itemColor)->setColorId($itemColorId)->setSize($itemSize)->setSizeId($itemSizeId)->setDepartment($item->getProduct()->getDepartment())->setShippingMethod($this->getItemShippingMethod($item, $address))->setShippingMethodDisplayText($this->getItemShippingDescription($item, $address))->setVendorId($item->getProduct()->getDropShipSupplierNumber())->setVendorName($item->getProduct()->getDropShipSupplierName())->setFulfillmentChannel($payload::FULFILLMENT_CHANNEL_SHIP_TO_HOME); return $this->addGiftCardDataToPayload($payload, $item); }
/** * verify * - discounts are applied to the merchandises pricegroup */ public function testBuildOrderItemsWithItemDiscounts() { $lineNumber = 1; $this->itemStub->setEbayEnterpriseOrderDiscountData(['1' => ['id' => '1']]); $handler = $this->getModelMockBuilder('ebayenterprise_order/create_orderitem')->setMethods(['loadOrderItemOptions', 'prepareShippingPriceGroup'])->setConstructorArgs([['shipping_helper' => $this->shippingHelper]])->getMock(); $handler->expects($this->any())->method('loadOrderItemOptions')->will($this->returnValue($this->optionValueCollectionStub)); $handler->expects($this->any())->method('prepareShippingPriceGroup')->will($this->returnSelf()); $handler->buildOrderItem($this->payload, $this->itemStub, $this->orderStub, $this->addressStub, $lineNumber, true); // merchandise price group should always exist $pg = $this->payload->getMerchandisePricing(); $this->assertCount(1, $pg->getDiscounts()); }
/** * Add tax data for tax totals for the merchandise prices and discounts. * * @return self */ protected function _addMerchandiseTaxes() { $taxes = $this->_getTaxRecordsBySource(EbayEnterprise_Tax_Model_Record::SOURCE_MERCHANDISE); $discountTaxes = $this->_getTaxRecordsBySource(EbayEnterprise_Tax_Model_Record::SOURCE_MERCHANDISE_DISCOUNT); if ($taxes || $discountTaxes) { $priceGroup = $this->_orderItemPayload->getMerchandisePricing() ?: $this->_orderItemPayload->getEmptyPriceGroup(); $priceGroup->setTaxClass($this->_itemProduct->getTaxCode()); $this->_addTaxRecordsToContainer($taxes, $priceGroup)->_addDiscountTaxRecords($discountTaxes, $priceGroup); $this->_orderItemPayload->setMerchandisePricing($priceGroup); } return $this; }