2013-11-03 49 views
0

即時通過Magento SOAP API進行一些工作,我正在嘗試創建一個有效的訂單列表。我已經拿到了名單,但它同時顯示了配置的產品,以及簡單的產品給我複製像下面的圖片: item list過濾數組中的數據PHP

同一產品的第一個上市的是配置的產品,二是簡單的產品。我需要做的是過濾出簡單的產品,以便它們不會顯示在列表中或被存儲。這聽起來很簡單,但有一個問題,即我正在努力讓我的頭解決如何解決,就像上圖中的諾基亞產品是標準的簡單產品,沒有可配置的屬性,他們也需要顯示!

所以基本上我需要擺脫與可配置產品有關的簡單產品,而不是其他產品。

這裏是我的循環和陣推:

foreach($sales_order_info->items as $i){ 
       $nextItem = new item(); 
       $nextItem->set_order_id($i->order_id); 
       $nextItem->set_sku($i->sku); 
       $nextItem->set_name($i->name); 
       $nextItem->set_qty_ordered($i->qty_ordered); 
       $nextItem->set_price($i->price); 
       $nextItem->set_row_total($i->row_total); 

       array_push($this->items, $nextItem); 
      } 

非常感謝

回答

1

如果你要過濾一個可配置的產品簡單的產品:

if ($product->getProductType() == Mage_Catalog_Model_Product_Type::TYPE_SIMPLE) {    
    if ($product->getParentItemId()) { 
         $parent_product_type = Mage::getModel('sales/order_item')->load($product->getParentItemId())->getProductType(); 
         //if Parent product type is configurable don't output its simple product 
         if ($parent_product_type == Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE) { 
          continue; 
         } 
        } 
} 

如果你不這樣做想要擴展Magento API並編寫自己的自定義調用,您可以嘗試以下操作。

第二個選擇是嘗試使用(不知道你如何加載它,用什麼叫):

$i->type 

,然後數組PHP(即,如果有2個元素具有相同的名稱和過濾器數量刪除類型==簡單)

或者第三個選項是(如果你沒有任何免費產品)只是檢查價格是否等於零,因爲屬於可配置的簡單產品有價格= 0.0000

if ($i->price==0.0000) { 
    continue; 
} 
+0

這看起來像我所需要的,但通過它的外觀,您已經編寫了代碼,就好像您在修改magento本身一樣。你能告訴我如何使用SOAP API調用來做到這一點嗎?謝謝 –

+0

更新我的答案與可能的解決方案,但我寧願寫自己的擴展與自定義調用 –

+0

謝謝謝謝!我明白你現在說什麼,我知道你是如何告訴我實施它的。我正在努力研究什麼是過濾數組的最佳方法..你能指導我如何做到這一點?謝謝 –