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

Bundle notification : Nouvelle commande web

0000002793     -      19/01/2018

Ce bundle est destiné à être utilisé conjointement avec un site web Mercator. Il consiste en une notification quand une commande est validée par un internaute sur le site web. L'étape 2 permet à la fois de consulter le duplicata PDF et de visualiser le détail des articles vendus.

          

 

Le code C# qui envoie cette notification est le suivant. Il est placé dans un customizer associé à la séquence de commande du site web. 

Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
using MercatorApi;
using MercatorExtensions;
using MercatorUi;

namespace Billing
{
    public class Customizer : MercatorUi.ICustomizers.IBillingEngineCreated, MercatorUi.ICustomizers.IBillingEngineClosed
    {
        public void BillingEngineCreated(MercatorUi.Engine.Gescom.BillingEngine BillingEngine)
        {
            BillingEngine.AfterSave += BillingEngine_AfterSave;
        }

        public void BillingEngineClosed(MercatorUi.Engine.Gescom.BillingEngine BillingEngine)
        {
            BillingEngine.AfterSave -= BillingEngine_AfterSave;
        }

        void BillingEngine_AfterSave(object sender, EventArgs e)
        {
            if (Api.IsWeb)
            {
                MercatorUi.Engine.Gescom.BillingEngine billingEngine = (MercatorUi.Engine.Gescom.BillingEngine)sender;
                var dicoParams = new Dictionary<string, object>
                {
                    { "@id", billingEngine.Id },
                    { "@journal", billingEngine.Journal },
                    { "@piece", billingEngine.Piece }
                };
                MercatorPenguin.NotificationClient.SendAsync("Nouvelle commande web de € " + billingEngine.PiedsVRecord.TOT_TTC_DV.ToString("### ##0.00") + " TTC !", "d4719813-884b-43b1-96fb-9d80aec7ab66", dicoParams);
            }
        }
    }
}

 

Veuillez noter ceci :

  • Il est nécessaire d'adapter la valeur du paramètre bundleId passé à SendAsync en fonction de celle effectivement existante dans la table PENGUIN_BUNDLES de ce Mercator.
  • La condition Api.IsWeb permet de ne déclencher le code que depuis l'application web. Ainsi, si cette commande est ultérieurement modifiée et à nouveau sauvegardée dans Mercator, une notification supplémentaire ne sera pas envoyée.
  • Il est fait usage de la version Async de la méthode Send, sans le mot clé await. Cela permet d'envoyer les notifications sans attendre le retour. AInsi, le thread ASP.net va immédiatement reprendre la main et pouvoir renvoyer sans délai à l'internaute la page web qu'il va recevoir.
  • Pour qu'une application ASP.net puisse exécuter des commandes Async, il faut veiller à ce que le fichier web.config contienne ceci, avec une version égale ou supérieure à 4.5.
<system.web>
<compilation targetFramework="4.6" />
<httpRuntime targetFramework="4.6" />
</system.web>

Installation rapide : le fichier Nouvelle commande web.pngb peut être lu via le bouton "Ouvrir" situé dans le bas de l'écran de paramétrage.