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

MercatorPenguin en écriture : documents de la gestion commerciale : exemple de SAV

0000002835     -      23/07/2020

Cette page montre un paramétrage effectué autour de la gestion commerciale et de MercatorPenguin. Il illustre les capacités de modification d'un document de la gestion commerciale au départ de l'application mobile. Les fonctionnalités illustrées ici sont les suivantes :

  • permettre à un technicien de service après-vente de disposer des demandes de réparation qui lui sont assignées
  • qu'il puisse saisir un compte-rendu de sa prestation
  • encoder les pièces détachées utilisées (jusque 3 articles différents)
  • obtenir en mode "touch pad" la signature du client.

Ce paramétrage se fait, par exemple, dans une séquence de commandes, nommée SAV. Il est nécessaire d'ajouter les champs suivants dans la table PIEDS_V :

  • ID_ART1, ID_ART2, ID_ART3 : char(10) not null default ''
  • Q_ART1, Q_ART2, Q_ART3 : float not null default 0
  • NOTE1 et NOTE2 : varchar(MAX) not null default '' : NOTE1 va contenir la demande d'intervention - non modifiable dans MercatorPenguin, NOTE2 va contenir le rapport d'intervention - modifiable dans MercatorPenguin
  • SIGN_CLI : varbinary(MAX) null : image contenant la signature du client.

Il est nécessaire d’adapter l'écran de saisie de la séquence. Nous suggérons de le faire en chargeant simplement le contenu du fichier mpge, dans un nouvel onglet nommé SAV.

Un bundle permettant l'accès à ces documents de gestion commerciale doit être installé via "Outils / Paramètres / Penguin Bundles / Listes". Le fichier correspondant, Prestations SAV.pngb, se trouve dans le zip ci-dessous.

Dans la séquence de vente, il faut paramétrer l'écran de saisie de l'application mobile, via "Paramétrer Penguin". Le fichier sav.xaml est aussi dans le fichier ZIP.

Enfin, il est nécessaire d'installer dans cette même séquence ce customizer :

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

namespace Billing
{
    public class Customizer : MercatorUi.ICustomizers.IBillingEngineCreated, MercatorUi.ICustomizers.IBillingEngineClosed
    {
        private const int nArt = 3;

        public void BillingEngineCreated(MercatorUi.Engine.Gescom.BillingEngine billingEngine)
        {
            if (Globals.IsMercatorPenguinServer)
            {
                billingEngine.BeforeSave += new MercatorUi.Engine.Gescom.BillingEngine.BeforeSaveEventHandler(BillingEngine_BeforeSave);
                for (int i = 1; i <= nArt; i++)
                {
                    // retirer des lignes les articles précédemment saisis dans MercatorPenguin
                    foreach (DataRow dr in billingEngine.LIGNES.Select(string.Format("(dl_id='{0}')", Api.Replicate(i.ToString(), 10))))
                        billingEngine.LIGNES.Rows.Remove(dr);
                    // mettre 1 comme valeur par défaut pour les quantités
                    if (Convert.ToDouble(billingEngine.PIEDS["Q_ART" + i]).CompareTo(0, 2) == 0)
                        billingEngine.PIEDS["Q_ART" + i] = 1;
                }
            }
        }

        public void BillingEngineClosed(MercatorUi.Engine.Gescom.BillingEngine billingEngine)
        {
            if (Globals.IsMercatorPenguinServer)
                billingEngine.BeforeSave -= new MercatorUi.Engine.Gescom.BillingEngine.BeforeSaveEventHandler(BillingEngine_BeforeSave);
        }

        void BillingEngine_BeforeSave(object sender, MercatorUi.Engine.Gescom.BillingEngine.BeforeSaveEventArgs e)
        {
            // ajouter dans les lignes les articles saisis en pied dans MercatorPenguin
            MercatorUi.Engine.Gescom.BillingEngine billingEngine = (MercatorUi.Engine.Gescom.BillingEngine)sender;
            for (int i = 1; i <= nArt; i++)
            {
                double q = Convert.ToDouble(billingEngine.PIEDS["Q_ART" + i]);
                if ((billingEngine.PIEDS["ID_ART" + i].ToString() != "") && (q.CompareTo(0, 2) != 0))
                {
                    int n = billingEngine.AppendLine();
                    if (!billingEngine.InsertItem(billingEngine.PIEDS["ID_ART" + i].ToString(), n, q))
                    {
                        e.CancelSave = true;
                        Globals.ApiLogDelegate.Invoke("Impossible d'ajouter l'article " + billingEngine.PIEDS["ID_ART" + i]); // écrire dans le log de MercatorPenguinServer
                        return;
                    }
                    billingEngine.LIGNES.Rows[n]["dl_id"] = Api.Replicate(i.ToString(), 10);
                }
            }
        }
    }
}

 

Les écrans dans MercatorPenguin se présentent comme ceci :

    

Les écrans dans Mercator se présentent comme ceci :

 

 



A télécharger : 0000002835.zip (3 Kb - 22/05/2018)