2011-12-15 16 views
1

私はC#.NETを使用して、Magento API v2にSOAP経由で接続しています。ティア価格で製品をアップデートしようとするまで、すべてが正常に機能しています - 「無効なティア価格」。Magento API v2およびC#層価格

私はMagentoに出くわすものを取り払い、すべてのティア価格の2つの属性が欠落しています - 「qty」と「price」。ここでMagentoのは、取得することを封筒です:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> 
    <s:Body s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
     <q1:catalogProductUpdate xmlns:q1="urn:Magento"> 
      <sessionId xsi:type="xsd:string">142163ba9058d5bc4d3b6b12445163a5</sessionId> 
      <product xsi:type="xsd:string">R-0.1UF</product> 
      <productData href="#id1" /> 
      <storeView xsi:type="xsd:string">default</storeView> 
     </q1:catalogProductUpdate> 
     <q2:catalogProductCreateEntity id="id1" xsi:type="q2:catalogProductCreateEntity" xmlns:q2="urn:Magento"> 
      <name xsi:type="xsd:string">Tantal PBF</name> 
      <status xsi:type="xsd:string">1</status> 
      <price xsi:type="xsd:string">0,25</price> 
      <tier_price href="#id2" /> 
     </q2:catalogProductCreateEntity> 
     <q3:Array id="id2" q3:arrayType="q4:catalogProductTierPriceEntity[3]" xmlns:q3="http://schemas.xmlsoap.org/soap/encoding/" xmlns:q4="urn:Magento"> 
      <Item href="#id3" /> 
      <Item href="#id4" /> 
      <Item href="#id5" /> 
     </q3:Array> 
     <q5:catalogProductTierPriceEntity id="id3" xsi:type="q5:catalogProductTierPriceEntity" xmlns:q5="urn:Magento"> 
      <customer_group_id xsi:type="xsd:string">all</customer_group_id> 
      <website xsi:type="xsd:string">all</website> 
     </q5:catalogProductTierPriceEntity> 
     <q6:catalogProductTierPriceEntity id="id4" xsi:type="q6:catalogProductTierPriceEntity" xmlns:q6="urn:Magento"> 
      <customer_group_id xsi:type="xsd:string">all</customer_group_id> 
      <website xsi:type="xsd:string">all</website> 
     </q6:catalogProductTierPriceEntity> 
     <q7:catalogProductTierPriceEntity id="id5" xsi:type="q7:catalogProductTierPriceEntity" xmlns:q7="urn:Magento"> 
      <customer_group_id xsi:type="xsd:string">all</customer_group_id> 
      <website xsi:type="xsd:string">all</website> 
     </q7:catalogProductTierPriceEntity> 
    </s:Body> 
</s:Envelope> 

そして、ここでは(些細な方法は、私が知っているが、私はちょうどそれが働いて取得しようとしている)これは、C#で組み込まれている方法は次のとおりです。

private catalogProductTierPriceEntity[] addTierPrices(List<V_prices> prices) 
{ 
    catalogProductTierPriceEntity[] mageTierPrices = new catalogProductTierPriceEntity[3]; 
    catalogProductTierPriceEntity mageTierPrice; 

    int i = 0; 
    foreach (V_prices price in prices) 
    { 
     mageTierPrice = new catalogProductTierPriceEntity(); 
     mageTierPrice.website = "all"; 
     mageTierPrice.customer_group_id = "all"; 
     mageTierPrice.qty = price.quantity; 
     mageTierPrice.price = (double)price.value; // Conversion from decimal 
     mageTierPrices[i] = mageTierPrice; 
     i++; 
    } 

    return mageTierPrices; 
} 

そして結果上記の方法のうち、商品/追加リクエストに追加する:

catalogProductCreateEntity mageProduct = new catalogProductCreateEntity(); 
// .. 
mageProduct.name = product.name_db; 
mageProduct.price = product.price.ToString(); 
mageProduct.status = "1"; 
mageProduct.tier_price = addTierPrices(prices); 
handler.catalogProductUpdate(session_id, sku, mageProduct, "default", null); 

PS。私はMagento 1.5を使用しており、WSDLはサービス参照としてVisual Studioにインポートされました(コードは自動的に生成されます)。

答えて

3

はそれをガット - メソッドのような固定されなければならない:

private catalogProductTierPriceEntity[] addTierPrices(List<V_prices> prices) 
{ 
    catalogProductTierPriceEntity[] mageTierPrices = new catalogProductTierPriceEntity[3]; 
    catalogProductTierPriceEntity mageTierPrice; 

    int i = 0; 
    foreach (V_prices price in prices) 
    { 
     mageTierPrice = new catalogProductTierPriceEntity(); 
     mageTierPrice.website = "all"; 
     mageTierPrice.customer_group_id = "all"; 
     mageTierPrice.qty = price.quantity; 
     mageTierPrice.price = (double)price.value; // Conversion from decimal 
     mageTierPrices[i] = mageTierPrice; 
// FIX: 
     mageTierPrice.priceSpecified = true; 
     mageTierPrice.qtySpecified = true; 
     i++; 
    } 

    return mageTierPrices; 
} 
関連する問題