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

Dans la fiche articles, ajouter un bouton qui applique les formules de prix sur tous les articles ou les articles du filtre actif

0000002030     -      16/05/2013

Le module illustré ici permet de réappliquer les formules de prix (scripts de signalétiques) sur tous les articles ou les articles du filtre actif. Il s'exécute au départ d'un bouton ajouté dans la fiche "Articles". Cette programmation remplace cette commande de Mercator Legacy : ox_sig_stock.calc_prix(.T.,'')

Le code a placer dans ce bouton s'établit comme suit :

Zoom
using System.Text;
using System.Data;
using MercatorApi;
using MercatorController;
using System.Data.SqlClient;

namespace MercatorUi.MovableControls.ButtonsCodes
{
    public static class Script
    {

        public static void Exec(MercatorUi.MovableControls.MovableButton clickedButton)
        {
            MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)clickedButton.Form;
            if (!sigForm.Sig.Write(sigForm)) // proposer une sauvegarde de la fiche en cours si nécessaire
                return;
            int n_record = 0;
            using (MercatorSqlConnection oConnSql = new MercatorSqlConnection(Globals.RepData, true)) // établissement d'une connexion vers la DB SQL
            {
                if (oConnSql.Connection == null) // la connexion a été refusée.
                    return;
                using (SqlTransaction transac = oConnSql.Connection.BeginTransaction()) // on va faire l'ensemble sous transaction. Ce n'est pas obligatoire : on peut passer null au lieu de transac à ScriptsApplyToSomeRecords
                {
                    if (sigForm.Sig.ScriptsApplyToSomeRecords("select stock.*,guid,assembly from stock (NOLOCK) inner join assemblies on (assemblies.id='SCR-STOCK '+stock.s_calcul)" + (sigForm.Filter != "" ? " where " + sigForm.Filter : "") + " order by s_calcul", oConnSql, transac, true, true, ref n_record))
                    {
                        transac.Commit();
                        Dialogs.Stop(Api.Iif_langue(Globals.Langue, 14) + "\r\n" + _Divers.Iif_langue(Globals.Langue, "Records affected : ", "Gewijzigde rekords : ", "Enregistrements concernés : ") + n_record.ToString());
                    }
                    else
                        Api.SafeRollback(transac);
                }
            }
        }
    }
}