Vous consultez une page technique concernant le logiciel de gestion Mercator. Celle-ci contient des informations spécifiques destinées aux professionnels de Mercator. Souhaitez-vous être redirigés vers des informations plus générales ?


   Ne plus poser cette question

Client de MercatorWebService sur base du framework .net 4.0

0000002265     -      24/06/2016

Cet exemple montre comment créer un client SOAP sur base du framework .net 4.0 et utilisant MercatorWebService. Cet exemple est soumis aux réserves suivantes :

  • il est fourni "as is" et sans support
  • il convient d'y ajouter une gestion des exceptions (try catch) afin de gérer les cas où le web service n'est pas ou plus disponible.

Afin de pouvoir utiliser un web service, il faut, dans Visual Studio, ajouter une référence de service. Cela se fait via un clic-droit sur "Références" et sélection de "Ajouter une référence de service". Dans la zone "Adresse", il faut saisir http://testws.mercator.eu/MercatorWebService.asmx (adaptée en fonction de votre domaine). Dans notre exemple, nous avons adapté l'espace de nom en "MercatorWebService40".

mercatorwebserviceclient40

Note : si, lors de la réception d'une réponse, une exception est levée et indique une erreur dans le corps du message (body of message), lors de la désérialisation, il suffit d'augmenter la valeur de ces paramètres dans le fichier app.config (ou web.config si votre application est une application asp.net) : (valeurs données à titre indicatif)

  • maxBufferSize="655360"
  • maxReceivedMessageSize="655360"
  • maxNameTableCharCount="163840"

 


 

Créer une facture dans le journal Factu :

Zoom
 MercatorWebService40.MercatorWebServiceSoapClient client = new MercatorWebService40.MercatorWebServiceSoapClient();
 MercatorWebService40.SecurityInfo si = new MercatorWebService40.SecurityInfo();
 si.SecureKey = ... ;

 MercatorWebService40.StringMws s = client.BillingEngineInitNew(si, MercatorWebService40.TypeVAEnum.V, 1, "Factu");
 if (!string.IsNullOrEmpty(s.LastError))
 {
     MessageBox.Show("BillingEngineInitNew : " + s.LastError);
     return;
 }
 // à partir d'ici, il est obligatoire d'appeler la méthode BillingEngineClose
 string uniqueId = s.Value;

 MercatorWebService40.BooleanMws b = client.BillingEngineApplyCustomerSupplier(uniqueId, "INEO52209");
 if (!string.IsNullOrEmpty(b.LastError))
 {
     MessageBox.Show("ApplyCustomerSupplier : " + b.LastError);
 }
 else
 {
     MercatorWebService40.Int32Mws i = client.BillingEngineAppendLine(uniqueId);
     if (!string.IsNullOrEmpty(i.LastError))
     {
         MessageBox.Show("BillingEngineAppendLine : " + i.LastError);
     }
     else
     {
         b = client.BillingEngineInsertItem2(uniqueId, "03102001", i.Value, 5); // q = 5
         if (!string.IsNullOrEmpty(b.LastError))
         {
             MessageBox.Show("InsertItem : " + b.LastError);
         }
         else
         {
             b = client.BillingEngineUpdateAmounts(uniqueId);
             if (!string.IsNullOrEmpty(b.LastError))
             {
                 MessageBox.Show("BillingEngineUpdateAmounts : " + b.LastError);
             }
             else
             {
                 b = client.BillingEngineSave(uniqueId);
                 if (!string.IsNullOrEmpty(b.LastError))
                 {
                     MessageBox.Show("BillingEngineSave : " + b.LastError);
                 }
                 else
                 {
                     MercatorWebService40.Int64Mws p = client.BillingEngineSavedNumber(uniqueId);
                     if (!string.IsNullOrEmpty(p.LastError))
                         MessageBox.Show("BillingEngineSavedNumber : " + p.LastError);
                     else
                         MessageBox.Show(string.Format("La vente {0} {1} a été créée !", "Factu", p.Value));
                 }
             }
         }
     }
 }
 MercatorWebService40.VoidMws v = client.BillingEngineClose(uniqueId); // toujours terminer par BillingEngineClose() après un InitNew fructueux
 if (!string.IsNullOrEmpty(v.LastError))
     MessageBox.Show("BillingEngineClose : " + v.LastError);

 


 

Modifier une facture existante dans le journal Factu :

Zoom
MercatorWebService40.MercatorWebServiceSoapClient client = new MercatorWebService40.MercatorWebServiceSoapClient();
MercatorWebService40.SecurityInfo si = new MercatorWebService40.SecurityInfo();
si.SecureKey = ... ;

MercatorWebService40.StringMws s = client.BillingEngineInitExisting(si, MercatorWebService40.TypeVAEnum.V, 1, "00F384F9FE", "Factu", 201300003);
if (!string.IsNullOrEmpty(s.LastError))
{
    MessageBox.Show("BillingEngineInitExisting : " + s.LastError);
    return;
}
// à partir d'ici, il est obligatoire d'appeler la méthode BillingEngineClose
string uniqueId = s.Value;

MercatorWebService40.DataSetMws ds = client.BillingEngineDataSet(uniqueId);
if (!string.IsNullOrEmpty(ds.LastError))
{
    MessageBox.Show("BillingEngineDataSet : " + s.LastError);
}
else
{
    MercatorWebService40.BooleanMws b = client.BillingEngineUpdateLigne(uniqueId, 0, "pu", 100); // changer le prix unitaire sur la ligne 0
    if (!string.IsNullOrEmpty(b.LastError))
    {
        MessageBox.Show("BillingEngineUpdateLigne : " + b.LastError);
    }
    else
    {
        b = client.BillingEngineUpdateAmounts(uniqueId);
        if (!string.IsNullOrEmpty(b.LastError))
        {
            MessageBox.Show("BillingEngineUpdateAmounts : " + b.LastError);
        }
        else
        {
            MercatorWebService40.DataTableMws dt = client.BillingEnginePIEDS(uniqueId);
            if (!string.IsNullOrEmpty(dt.LastError))
            {
                MessageBox.Show("BillingEnginePIEDS : " + dt.LastError);
            }
            else
            {
                double tot_ttc_dv = Convert.ToDouble(dt.Value.Rows[0]["TOT_TTC_DV"]);

                b = client.BillingEngineSave(uniqueId);
                if (!string.IsNullOrEmpty(b.LastError))
                    MessageBox.Show("BillingEngineSave : " + b.LastError);
                else
                    MessageBox.Show(string.Format("Le nouveau total est {0:### ##0.00} !", tot_ttc_dv));
            }
        }
    }
}
MercatorWebService40.VoidMws v = client.BillingEngineClose(uniqueId);  // toujours terminer par BillingEngineClose() après un InitExisting fructueux, sinon ce document sera non modifiable dans Mercator car en cours de modification
if (!string.IsNullOrEmpty(v.LastError))
    MessageBox.Show("BillingEngineClose : " + v.LastError);

 


 

Obtenir une dataTable contenant le premier client :

Zoom
MercatorWebService40.MercatorWebServiceSoapClient client = new MercatorWebService40.MercatorWebServiceSoapClient();
MercatorWebService40.SecurityInfo si = new MercatorWebService40.SecurityInfo();
si.SecureKey = ... ;
MercatorWebService40.DataSetMws ds = client.Zselect(si, "select top 1 * from cli");
if (!string.IsNullOrEmpty(ds.LastError))
{
    MessageBox.Show("Zselect : " + ds.LastError);
    return;
}
DataTable dt_cli1 = ds.Value.Tables[0];

 


 

Lire quelques propriétés de MercatorUi.Globals :

Zoom
MercatorWebService40.MercatorWebServiceSoapClient client = new MercatorWebService40.MercatorWebServiceSoapClient();
MercatorWebService40.SecurityInfo si = new MercatorWebService40.SecurityInfo();
si.SecureKey = ... ;

MessageBox.Show("SqlServer = " + client.GlobalsSqlServer(si));

MessageBox.Show("RepData = " + client.GlobalsRepData(si));

MercatorWebService40.StringMws s = client.GlobalsParams(si, "LANGUE_DEF");
if (!string.IsNullOrEmpty(s.LastError))
    MessageBox.Show("GlobalsParams : " + s.LastError);
else
    MessageBox.Show("LANGUE_DEF = " + s.Value);