0

Magento SOAP API を使用していくつかの作業を行っており、有効な注文リストを作成しようとしています。リストを取得しましたが、構成可能な製品と単純な製品の両方が表示され、下の画像のように複製できます。 アイテムリスト

同じ製品の最初のリストは構成可能製品で、2 番目は単純な製品です。私がする必要があるのは、単純な製品を除外して、リストに表示されたり保存されたりしないようにすることです。これは単純に聞こえますが、解決方法を理解するのに苦労している問題が 1 つあります。それは、上の画像の Nokia のような製品は、標準の単純な製品であり、構成可能なプロパティがなく、それらも表示する必要があるということです!

したがって、基本的には、構成可能な製品に関連する単純な製品を取り除く必要がありますが、他にはありません。

これが私のループと配列のプッシュです:

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);
            }

どうもありがとう

4

1 に答える 1

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 を拡張して独自のカスタム呼び出しを作成したくない場合は、次を試すことができます。

2番目のオプションは、次を使用してみることです(どのようにロードするか、どのコールを使用するかはわかりません):

$i->type

次に、PHP で配列をフィルタリングします (つまり、同じ名前と数の要素が 2 つある場合は、type==simple を持つ要素を削除します)。

または、3 番目のオプションは (無料の製品がない場合) 構成可能に属する単純な製品の価格 = 0.0000 であるため、価格がゼロに等しいかどうかを確認するだけです。

if ($i->price==0.0000) {
    continue;
}
于 2013-11-03T16:40:44.667 に答える