예제 #1
0
 public function getInvoiceItems($order, $storeId, $useBaseCurrency = false)
 {
     $resultItems = array();
     $orderItems = $order->getItemsCollection();
     foreach ($orderItems as $item) {
         if ($item->getParentItemId() != null && $item->getParentItem()->getProductType() == Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE) {
             continue;
         }
         if ($item->getProductType() == Mage_Catalog_Model_Product_Type::TYPE_BUNDLE && $item->getParentItemId() == null) {
             continue;
         }
         $productItem = $this->getProductItem($item, $useBaseCurrency);
         if ($productItem) {
             $resultItems[] = $productItem;
         }
         $discountItem = $this->getDiscountItem($item, $useBaseCurrency);
         if ($discountItem) {
             $resultItems[] = $discountItem;
         }
     }
     $surchargeItem = $this->getFoomanSurchargeItem($order, $useBaseCurrency);
     if ($surchargeItem) {
         $resultItems[] = $surchargeItem;
     }
     $shippingItem = $this->getOrderShippingItem($order, $useBaseCurrency);
     if ($shippingItem) {
         $resultItems[] = $shippingItem;
     }
     $resultItems = Customweb_Util_Invoice::ensureUniqueSku($resultItems);
     $event = new StdClass();
     $event->items = array();
     if ($order instanceof Mage_Sales_Model_Order) {
         Mage::dispatchEvent('customweb_collect_order_items', array('order' => $order, 'useBaseCurrency' => $useBaseCurrency, 'result' => $event));
     } elseif ($order instanceof Mage_Sales_Model_Quote) {
         Mage::dispatchEvent('customweb_collect_quote_items', array('quote' => $order, 'useBaseCurrency' => $useBaseCurrency, 'result' => $event));
     }
     foreach ($event->items as $item) {
         $resultItems[] = new Customweb_Payment_Authorization_DefaultInvoiceItem($item['sku'], $item['name'], $item['taxRate'], $item['amountIncludingTax'], $item['quantity'], $item['type']);
     }
     if ($useBaseCurrency) {
         $orderAmountInDecimals = $order->getBaseGrandTotal();
         $currency = Mage::app()->getStore($storeId)->getBaseCurrencyCode();
     } else {
         $orderAmountInDecimals = $order->getGrandTotal();
         $currency = Mage::app()->getStore($storeId)->getCurrentCurrencyCode();
     }
     $adjustmentItem = $this->getAdjustmentItem($resultItems, $orderAmountInDecimals, $currency);
     if ($adjustmentItem) {
         $resultItems[] = $adjustmentItem;
     }
     return $resultItems;
 }
예제 #2
0
 protected function getInvoiceItems($invoice)
 {
     /* @var $invoice Mage_Sales_Model_Order_Invoice */
     $resultItems = array();
     $items = $invoice->getAllItems();
     $invoiceItems = Mage::getModel('saferpaycw/invoiceItems');
     foreach ($items as $item) {
         $orderItem = $item->getOrderItem();
         if ($orderItem->getParentItemId() != null && $orderItem->getParentItem()->getProductType() == Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE) {
             continue;
         }
         if ($orderItem->getProductType() == Mage_Catalog_Model_Product_Type::TYPE_BUNDLE && $orderItem->getParentItemId() == null) {
             continue;
         }
         $productItem = $invoiceItems->getProductItem($item);
         if ($productItem) {
             $resultItems[] = $productItem;
         }
         $discountItem = $invoiceItems->getDiscountItem($item);
         if ($discountItem) {
             $resultItems[] = $discountItem;
         }
     }
     $surchargeItem = $invoiceItems->getFoomanSurchargeItem($invoice->getOrder());
     if ($surchargeItem) {
         $resultItems[] = $surchargeItem;
     }
     $shippingItem = $invoiceItems->getShippingItem($invoice);
     if ($shippingItem) {
         $resultItems[] = $shippingItem;
     }
     $resultItems = Customweb_Util_Invoice::ensureUniqueSku($resultItems);
     $event = new StdClass();
     $event->items = array();
     Mage::dispatchEvent('customweb_collect_invoice_items', array('invoice' => $invoice, 'result' => $event));
     foreach ($event->items as $item) {
         $resultItems[] = new Customweb_Payment_Authorization_DefaultInvoiceItem($item['sku'], $item['name'], $item['taxRate'], $item['amountIncludingTax'], $item['quantity'], $item['type']);
     }
     $currencyCode = $invoice->getOrder()->getOrderCurrency()->getCode();
     $adjustmentItem = $invoiceItems->getAdjustmentItem($resultItems, $invoice->getGrandTotal(), $currencyCode);
     if ($adjustmentItem) {
         $resultItems[] = $adjustmentItem;
     }
     return $resultItems;
 }