2012-06-19 14 views
5

Estoy usando SOAP a través de Visual Studio 2012 RC con C# para usar la API de Magento. Hice esto agregando una referencia de servicio apuntando al archivo SOAP WSDL.¿Cómo puedo (desde SalesOrderEntity) recuperar la dirección de envío?

Ahora, estoy teniendo dificultades para obtener la dirección de envío de un SalesOrderEntity. Así es como recupero estas entidades.

var f = new filters(); 
f.filter = new associativeEntity[] { 
    new associativeEntity { 
     key ="status", 
     value ="processing" 
    } 
}; 
var entities = mservice.salesOrderList(mlogin, f); 

Esto funciona muy bien, pero cuando iterar a través de ellos y mostrar algunos de sus datos, que se tropiezan con algo extraño.

foreach (var entity in entities) 
{ 

    //the following line crashes for some strange reason. 
    //the error is SoapHeaderException: Address not exists. 
    var info = mservice.customerAddressInfo(mlogin, int.Parse(entity.shipping_address_id)); 

    Debug.WriteLine(info.firstname); 
} 

La dirección de envío es no 0, de hecho se ha establecido en un número adecuado (y sí, es una cadena por alguna extraña razón aunque siempre representa un número).

¿Qué estoy haciendo mal aquí?

Respuesta

5

La dirección se almacena en un salesOrderAddressEntity, que se encuentra dentro del salesOrderEntity.

var magento = new MagentoService(); 
var session = magento.login("LOGIN", "APIKEY"); 

var order = magento.salesOrderInfo(session, "100029631"); 

var address = order.shipping_address; 

Console.WriteLine(address.firstname + " " + address.lastname); 
Console.WriteLine(address.street); 
Console.WriteLine(address.postcode + " " + address.city); 
Cuestiones relacionadas