List

La chiamata List ha la seguente firma:

OrderListResponse List(OrderListRequest request);

Cosa permette di fare

La chiamata List permette di recuperare tutte le informazioni relative agli ordini gestiti da eDock. E' possibile fare uso di filtri di ricerca evoluti come data di creazione, data di spedizione, modulo che ha generato l'ordine, nome e cognome del cliente, pagato / non pagato e tanti altri. E' necessario precisare che è possibile scaricare, nell'arco di un mese, un numero massimo di ordini nuovi (ovvero non scaricati in precedenza) pari a quello definito nel contratto eDock del cliente.

Limitazioni

  • Non è possibile farsi ritornare, contemporaneamente alla ricezione dell'ordine, l'intera anagrafica articolo. Per tale necessità il nostro suggerimento è quello di memorizzarsi temporaneamente gli SKU dei codici articoli non conosciuti ed effettuare, ad importazione terminata, una chiamata Info alle Product API.
  • Non è possibile effettuare una ricerca utilizzando i filtri in OR. Per compiere tale ricerca il nostro suggerimento è effettuare più ricerche differenti.

Richiesta

In rosso sono evidenziate le proprietà obbligatorie.

ATTENZIONE! Tutti i filtri utilizzabili per la ricerca degli ordini sono considerati in AND, ovvero verranno presentati solo gli ordini che rispettano tutti i filtri passati. Non è possibile effettare una ricerca utilizzando tali filtri in OR. Per compiere tale operazione il nostro suggerimento è effettuare più ricerche differenti.

 Proprietà  Tipo  Descrizione
 DetailLevel  OrderListRequestDetailEnum Enumerativo flag (ovvero che ammette più valori contemporaneamente) per stabilire il livello di dettaglio degli ordini desiderato. Questo parametro deve essere necessariamente utilizzato per permettere il ritorno delle sole informazioni necessarie senza sprechi di banda nè di calcolo da parte di eDock. Ricordiamo che eDock mantiene traccia delle richieste effettuate e, a campione, analizza i log con cadenza regolare. Un uso improprio può portare alla disabilitazione dell'account.

Valori ammessi:
  • BillingAddress: vengono scaricate le informazioni di spedizione dell'ordine
  • History: attualmente ignorato.
  • Rows: vengono scaricate le informazioni sulle righe dell'ordine
  • ShippingAddress: vengono scaricate le informazioni di fatturazione dell'ordine
 Filter  OrderListRequestFilter  Contenitore per il filtro di ricerca
 Filter.CreatedOnStart  DateTime?  Filtro sulla data di creazione (compresa). Se impostata non vengono ritornati ordini creati prima di tale data.
 Filter.CreatedOnEnd  DateTime?  Filtro sulla data di creazione (esclusa). Se impostata non vengono ritornati ordini creati dopo tale data.
 Filter.CustomerFilter  String  Filtro sul nome o cognome del cliente. E' possibile fare uso del wildcard % per ricercare valori ignoti. Esempio:
  • Marco%: ricercherà tutto ciò che inizia per Marco
  • %Marco: ricercherà tutto ciò che finisce per Marco
  • %Marco%: ricercherà tutto ciò che contiene per Marco
 Filter.eBayUserName  String  Filtro sul nome utente eBay che ha generato l'ordine. Anche in questo caso è possibile fare uso del wildcard %.
 Filter.isGift  Bool?  Ritorna gli ordini che sono contrassegnati come regalo se impostato a true.
 Filter.ModuleFilter  Stirng[]  Ritorna gli ordini che sono stati generati da uno tra i moduli passati all'interno di questo campo.
 Filter.Paid  Bool?  Ritorna gli ordini che sono contrassegnati come pagati se impostato a true. 
 Filter.ShippedOnStart  DateTime?  Filtro sulla data di spedizione. Se impostata, non vengono ritornati ordini spediti prima di tale data.
 Filter.ShippedOnEnd   DateTime?  Filtro sulla data di spedizione. Se impsotata, non vengono ritornati ordini spediti dopo tale data.
 Filter.SKU  String  Ritorna tutti gli ordini che contengono almeno una riga con questo codice prodotto.
 Filter.StatusFilter  String   Ritorna tutti gli ordini che si trovano in un particolare stato. 
 PageNumber  Int Numero di pagina da scaricare. Per ottimizzare il trasferimento dati, le informazioni vengono inviate in blocchi di dimensioni configurabili. Questa proprietà imposta quale pagina scaricare. Il valore iniziale è 0.
 PageSize  Int  Numero di ordini per pagina. Si suggerisce di non inserire un valore superiore a 30 per ottimizzare i tempi di trasferimento. 

 

Risposta

 Proprietà  Tipo  Descrizione
 Orders  OrderEntry[]  Contenitore degli ordini
 Orders.Order  OrderEntry  Ordine
 Orders.Order.BillingAddress  OrderBillingInfo  Contenitore delle informazioni di fatturazione
 Orders.Order.BillingAddress.Address  String  Indirizzo
 Orders.Order.BillingAddress.City  Stirng  Città
 Orders.Order.BillingAddress.Company  String  Azienda
 Orders.Order.BillingAddress.County  String  Provincia
 Orders.Order.BillingAddress.Country  String  Nazione 
 Orders.Order.BillingAddress.Email  String  Email
 Orders.Order.BillingAddress.FirstName  String  Nome
 Orders.Order.BillingAddress.FiscalCode  String  Codice fiscale
 Orders.Order.BillingAddress.LastName  String  Cognome
 Orders.Order.BillingAddress.Telephone1  String  Telefono 1
 Orders.Order.BillingAddress.Telephone2  String  Telefono 2
 Orders.Order.BillingAddress.VATCode  String  Partita IVA
 Orders.Order.BillingAddress.ZipCode  String  Codice postale
 Orders.Order.CreatedOn  DateTime  Data di creazione dell'ordine
 Orders.Order.Currency  Stirng  Codice ISO della valuta dell'ordine
 Orders.Order.idCustomer  Int  ID cliente eDock. Questo ID permette di capire precisamente se l'ordine è stato generato da un cliente già recepito.
 Orders.Order.idOrder  Guid  ID ordine eDock. Questo è l'ID con cui referenziare l'ordine per le successive operazioni.
 Orders.Order.idOrderInt  Int   ID ordine eDock intero. Questo è un ID interno ad eDock e non può essere usato per le successive operazioni. 
 Orders.Order.isGift  Bool  Indica se l'ordine è un regalo (true) o meno (false) 
 Orders.Order.isPaid  Bool  Indica se l'ordine è pagato (true) o meno (false)
 Orders.Order.OwnerModule   String  Modulo che ha generato l'ordine
 Orders.Order.PaymentMethod  String   Metodo di pagamento selezionato 
 Orders.Order.Rows  OrderRow[]   Contenitore delle righe dell'ordine 
 Orders.Order.Rows.Row  OrderRow  Contenitore della riga dell'ordine
 Orders.Order.Rows.Row.Discount  Double  Sconto applicato sulla riga. Lo sconto è sempre inteso come fisso (cioè non è mai percentuale).
 Orders.Order.Rows.Row.Price  Double  Prezzo di vendita dell'oggetto.
 Orders.Order.Rows.Row.Quantity  Double  Quantità acquistata.
 Orders.Order.Rows.Row.SKU  String  Codice prodotto acquistato.
 Orders.Order.ShippingAddress  OrderShippingInfo  Contenitore delle informazioni di spedizione
 Orders.Order.ShippingAddress.Address   String  Indirizzo
 Orders.Order.ShippingAddress.City   String   Città
 Orders.Order.ShippingAddress.Company  String  Azienda
 Orders.Order.ShippingAddress.County  String   Provincia
 Orders.Order.ShippingAddress.Country   String   Nazione 
 Orders.Order.ShippingAddress.Email  String   Email
 Orders.Order.ShippingAddress.FirstName  String   Nome
 Orders.Order.ShippingAddress.LastName   String   Cognome
 Orders.Order.ShippingAddress.Telephone1  String   Telefono 1
 Orders.Order.ShippingAddress.Telephone2  String   Telefono 2
 Orders.Order.ShippingAddress.ZipCode  String   Codice postale
 Orders.Order.ShippingCost  Double  Costo di spedizione
 Orders.Order.ShippingMethod  String   Metodo di spedizione selezionato. 
 Orders.Order.Status  String  Stato in cui si trova l'ordine
 TotalRecordsCount  Int  Numero totale di ordini da ritornare

Errori possibili

 ErrorCode  
 Significato
 AUTH0001  Impossibile autenticare l'utente. Il nome utente o i token non sono validi o non sono corretti. 
 PRODUCTLIST001  Il parametro PageSize passato non è valido. Occorre impostare un valore maggiore di 0.
 PRODUCTLIST002  Il parametro PageNumber passato non è valido. Occorre impostare un valore compreso tra 0 e X (dove X viene cambiato di volta in volta), in funzione dei risultati effettivamente individuati su eDock.

 

Esempio richiesta XML

<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:edoc="http://schemas.datacontract.org/2004/07/eDock.Api.Classes" xmlns:edoc1="http://schemas.datacontract.org/2004/07/eDock.Api.Classes.Order" xmlns:arr="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
   <soapenv:Header/>
   <soapenv:Body>
      <tem:List>
         <!--Optional:-->
         <tem:filter>
            <edoc:ApiToken>[il vostro token eDock]</edoc:ApiToken>
            <edoc:Culture>it</edoc:Culture>
            <edoc:Type>Normal</edoc:Type>
            <edoc:eDockUsername>[il vostro nome utente eDock]</edoc:eDockUsername>
            <!--<edoc1:BaseCurrency xsi:nil="true" />-->
            <!--<edoc1:DetailLevel>BillingAddress ShippingAddress Rows</edoc1:DetailLevel>-->
            
            <!--
            <edoc1:Filter>
             <edoc1:CreatedOnEnd>2012-06-01</edoc1:CreatedOnEnd>
               <edoc1:CreatedOnStart>2012-05-01</edoc1:CreatedOnStart>
               <edoc1:CustomerFilter>Mario%</edoc1:CustomerFilter>
               <edoc1:Paid>false</edoc1:Paid>
               <edoc1:isGift>false</edoc1:isGift>
               <edoc1:StatusFilter>Acquistato</edoc1:StatusFilter>             
               <edoc1:SKU>001</edoc1:SKU>
               <edoc1:ShippedOnStart>2012-06-01</edoc1:ShippedOnStart>
               <edoc1:ShippedOnEnd>2012-05-01</edoc1:ShippedOnEnd>
               <edoc1:eBayUserName>testuser_edock</edoc1:eBayUserName>
               <edoc1:ModuleFilter>
                  <arr:string>eDock4eBay</arr:string>
               </edoc1:ModuleFilter>
            </edoc1:Filter>
            -->
            
            <edoc1:PageNumber>0</edoc1:PageNumber>
            <edoc1:PageSize>20</edoc1:PageSize>
            <!--<edoc1:UseOriginalCurrency>false</edoc1:UseOriginalCurrency>-->
         </tem:filter>
      </tem:List>
   </soapenv:Body>
</soapenv:Envelope>
 
 

Esempio chiamata (C#)

Il seguente esempio definisce il codice (in linguaggio .NET C#) necessario per effettuare la chiamata dell'esempio XML precedente.
Prima di procedere seguire le seguenti istruzioni:
  1. Creare un progetto in Visual Studio (sia esso Console Application o Web Application, non è importante)
  2. Una vota creato il progetto, nel pannello "Solution Explorer" fare click destro sul progetto e selezionare la voce "Add Service Reference"
  3. Nella finestra che vi si aprirà, inserire in Address l'indirizzo del Web Service (in questo caso https://api.edock.it/OrderAPI.svc?wsdl ) e premere "go"
  4. Trovato il Web Service inserire un nome per il namespace da assegnare (nel nostro caso OrderAPIReference)
  5. Premere "OK"
Se queste operazioni vengono effettuate in maniera corretta verrà aggiunta la referenza alle OrderAPI di eDock.
Di seguito il codice di esempio per effettuare la chiamata:
 
 
...
using EDockAPIExamples.OrderAPIReference;
 
namespace EDockAPIExamples
{
    class Program
    {
        static void Main(string[] args)
        {
            //Utilizzare "WSHttpBinding_IOrderApi" per le chiamate in https
            OrderApiClient oc = new OrderApiClient("BasicHttpBinding_IOrderApi"); 
            
            OrderListRequest olr = new OrderListRequest();
 
            olr.ApiToken = "[il vostro token eDock]";
            olr.Type = RequestType.Normal;
            olr.Culture = "it";
            olr.eDockUsername = "[il vostro nome utente eDock]";
            olr.PageNumber = 0;
            olr.PageSize = 20;
 
            //OPTIONAL
            olr.DetailLevel = OrderListRequestDetailEnum.BillingAddress | OrderListRequestDetailEnum.ShippingAddress | OrderListRequestDetailEnum.Rows;
 
            OrderListRequestFilter of = new OrderListRequestFilter();
            of.CreatedOnStart = new DateTime(2012, 05, 01);
            of.CreatedOnEnd = new DateTime(2013, 06, 01);
            of.CustomerFilter = "Mario%";
            of.Paid = false;
            of.isGift = false;
            of.StatusFilter = "Acquistato";
            of.SKU = "001";
            of.ShippedOnStart = new DateTime(2012, 05, 01);
            of.ShippedOnEnd = new DateTime(2012, 06, 01);
            of.eBayUserName = "test_marco";
            of.ModuleFilter = new string[] { "eDock4eBay" };
 
            olr.Filter = of;
 
            OrderListResponse resp = oc.List(olr);
            if (resp != null && resp.Status == Status.Success)
            {
                //Conta tutti i record restituiti
                int totale = resp.TotalRecordsCount;
 
                foreach (OrderEntry Order in resp.Orders)
                {
                    //Order conterrà le informazioni dell'ordine, come definito nelal documentazione
                    //Order.Rows conterrà le informazioni sulle righe di ordine
                    //Order.BillingAddress conterrà le informazioni di fatturazione
                    //Order.ShippingAddress conterrà le informazioni di spedizione
                }
            }
        }
    }
}

 

Altre domande? Invia una richiesta

Commenti