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