2009-12-17 7 views
1

Actuellement, j'ai de la difficulté à utiliser le nouveau soap v2 de Magento depuis l'interface C#.Multiple complexFilter dans l'API de Magento

avec php i est capable de faire quelque chose comme ceci:

$params["created_at"]["from"] = date("Y-m-d H:i:s",Functions::convert_time($dataDa)); 
$params["created_at"]["to"] = date("Y-m-d H:i:s",Functions::convert_time($dataA)); 
MageInterface::getSingleton()->shipmentList($params); 

Dans ce mode, j'ai pu trouver la liste des commandes qui ont été créés à partir de $ dataDa à $ DATAA sans problème. Avec C# cependant il semble que seul le dernier des sélecteurs fonctionne.

Mon code:

var cpf = new complexFilter[2]; 
cpf[0] = new complexFilter 
        { 
         key = "created_at", 
         value = new associativeEntity 
         { 
          key = "to", 
          value = uxDataA.DateTime.ToString("yy-MM-dd HH:mm:ss") 
         } 
        }); 
cpf[1] = new complexFilter 
        { 
         key = "created_at", 
         value = new associativeEntity 
         { 
          key = "from", 
          value = uxDataDa.DateTime.ToString("yy-MM-dd HH:mm:ss") 
         } 
        }); 
var filters = new filters(); 
filters.complex_filter = cpf; 
var risultato = mage.salesOrderList(sessionKey, filters); 

Dans ce mode, seul created_at-> de critères est pris en considération (il est comme deuxième filtre complexe remplacer précédent avec la même clé). Des idées?

Merci d'avance.

Répondre

0

résolu, il y avait un bug dans les ventes \ mage \ commande \ api \ v2.php

Voir plus d'informations dans ce fil (ou la fonction?): http://www.magentocommerce.com/boards/viewthread/70368/

+3

Depuis que je courais dans la même question, il serait très bien si vous w Oubliez-moi un peu de temps et d'expliquer ce que vous avez vécu et comment vous l'avez réparé pour vous :) Merci – dasheddot

+0

SOrry, j'ai raté votre réponse. Jetez un oeil dans cette discussion: http://www.magentocommerce.com/boards/viewthread/70368/ – Alekc

4

Cela fonctionne pour moi:

private filters addFilter(filters filtresIn, string key, string op, string value) 
    { 
     filters filtres = filtresIn; 
     if (filtres == null) 
      filtres = new filters(); 

     complexFilter compfiltres = new complexFilter(); 
     compfiltres.key = key; 
     associativeEntity ass = new associativeEntity(); 
     ass.key = op; 
     ass.value = value; 
     compfiltres.value = ass; 

     List<complexFilter> tmpLst; 
     if (filtres.complex_filter!=null) 
      tmpLst = filtres.complex_filter.ToList(); 
     else tmpLst = new List<complexFilter>(); 

     tmpLst.Add(compfiltres); 

     filtres.complex_filter = tmpLst.ToArray(); 

     return filtres; 
    } 

et appelez

{ 
Mage_Api_Model_Server_V2_HandlerPortTypeClient clientSoap = new Mage_Api_Model_Server_V2_HandlerPortTypeClient(); 

     string sessionId = clientSoap.login(LOG, PASS);   
     filters filtres = new filters();  

     filtres = addFilter(filtres, "status", "eq", "processing"); 
     filtres = addFilter(filtres, "created_at", "from", "2014-09-07 08:00:00"); 
     filtres = addFilter(filtres, "created_at", "to", "2014-09-07 00:00:00"); 

     salesOrderEntity[] lst = clientSoap.salesOrderList(sessionId, filtres); 
} 
+0

Cette méthode addFilter était une fonctionnalité intéressante, je vais l'utiliser dans mon code généré par l'axe :-) – runholen