/**
  * 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;
 }