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);