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

Centraliser en comptabilité au départ d'un programme .net externe

0000002451     -      04/08/2024

 Depuis la version 11.0 de Mercator, cette façon de procéder est obsolète. Elle est remplacée par l'exécution de tâches en mode console.


Cette programmation montre comment, au départ d'une application .net externe qui instancie l'environnement de Mercator, déclencher de façon automatique la centralisation comptable des documents de la gestion commerciale. Le code repris ci-dessous pourra idéalement être placé dans une application de type "console", qui sera appelée, par exemple, de façon automatique par le planificateur de tâches de Windows. Dans cet exemple, l'application console envoie un mail avec le résultat de la centralisation.

Le code utilise principalement la méthode PostIntoAccounting qui reçoit une instance de PostIntoAccountingParams, contenant les différents paramètres habituellement choisis par l'utilisateur lors d'une centralisation faite dans l'interface de Mercator. Cette instance recevra aussi les résultats et messages d'erreur éventuels, conséquents à la centralisation.

Cette même programmation peut aussi être utilisée "à l'intérieur de Mercator" pour lancer la centralisation avec des paramètres prédéfinis. Dans ce cas, il faudra modifier le code comme suit :

  • Supprimer la première ligne qui désactive l'interface. 
  • Remplacer le second paramètre passé à la méthode PostIntoAccounting par false (ce paramètre permet d'exécuter cette méthode en mode "silencieux", çàd sans aucune interaction avec l'utilisateur).
Zoom
Api.IsWeb = true;

MercatorUi.Forms.Accounting.AccountingProcedures.Procedures.PostIntoAccountingParams p = new MercatorUi.Forms.Accounting.AccountingProcedures.Procedures.PostIntoAccountingParams(
    DateTime.Today, // date1
    DateTime.Today, // date2
    new string[3] { "VEN", "NCV", "FactF" }, // journaux à centraliser
    true, // postPayments
    true, // performMatching
    "001" // dossier si multi
    );
     
MercatorUi.Forms.Accounting.AccountingProcedures.Procedures.PostIntoAccounting(p, true);

StringBuilder sb = new StringBuilder();

if (!string.IsNullOrEmpty(p.LastError))
{
    sb.AppendLine(p.LastError);
    sb.AppendLine();
    sb.AppendLine("*************************************");
    sb.AppendLine();
}

sb.AppendLine("VENTES & ACHATS");
sb.AppendLine();
sb.AppendLine(p.ResultPostSalesPurchases);
if (p.LogErrorsPostSalesPurchases != null)
{
    sb.AppendLine();
    sb.AppendLine(p.LogErrorsPostSalesPurchases.ToString());
}
sb.AppendLine();
sb.AppendLine("-------------------------------------------");
sb.AppendLine();

sb.AppendLine("PAIEMENTS");
sb.AppendLine();
sb.AppendLine(p.ResultPostPayments);
if (p.LogErrorsPostPayments != null)
{
    sb.AppendLine();
    sb.AppendLine(p.LogErrorsPostPayments.ToString());
}
sb.AppendLine();
sb.AppendLine("-------------------------------------------");
sb.AppendLine();

sb.AppendLine("LETTRAGE");
sb.AppendLine();
sb.AppendLine(p.ResultMatching);

IneoSmtp.Smtp smtp = new IneoSmtp.Smtp();
smtp.MailServer = "...";
smtp.ServerPort = 25;
smtp.SenderEmail = "info@abc.com";
smtp.SenderName = "Mercator PostIntoAccounting";
smtp.Recipient = "xyz@abc.com";
smtp.Message = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToShortTimeString() + "\r\n\r\n" + sb.ToString();
smtp.Subject = "Mercator PostIntoAccounting Log";
smtp.SendMail();