/** * build out an ILineItem payload and add it to the ILineItemIterable. * * @param Mage_Sales_Model_Quote_Item_Abstract * @param ILineItemIterable * @param string * @return self */ public function createLineItem(Mage_Sales_Model_Quote_Item_Abstract $item, ILineItemIterable $lineItems, $currencyCode) { $lineItem = $lineItems->getEmptyLineItem(); $lineItem->setName($this->helper->__($item->getProduct()->getName()))->setSequenceNumber($item->getId())->setQuantity($item->getTotalQty())->setCurrencyCode($currencyCode); if ($this->canIncludeAmounts($item)) { $lineItem->setUnitAmount($item->getPrice()); } $lineItems->offsetSet($lineItem, null); }
/** * process specific amount types into negative-value line item * payloads * @param Mage_Sales_Model_Quote * @param ILineItemIterable * @return self */ protected function processNegativeLineItems(Mage_Sales_Model_Quote $quote, ILineItemIterable $lineItems) { $negativeAmountTypes = array('discount', 'giftcardaccount', 'ebayenterprise_giftcard'); $currencyCode = $quote->getQuoteCurrencyCode(); foreach ($negativeAmountTypes as $totalType) { $totalAmount = $this->getTotal($totalType, $quote); if ($totalAmount) { // ensure all amounts are negative $totalAmount = -abs($totalAmount); $lineItem = $lineItems->getEmptyLineItem(); $lineItem->setName($this->helper->__($totalType))->setSequenceNumber($totalType)->setQuantity(1)->setUnitAmount($totalAmount)->setCurrencyCode($currencyCode); $lineItems->offsetSet($lineItem, null); } } return $this; }