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 grille de disponible de la fiche articles, ajouter le total des quantités en devis clients et en préparations de commandes fournisseurs

0000001951     -      11/03/2014

Ce paramétrage montre comment ajouter dans la grille de disponible de la fiche articles (StockDispo), le total des quantités en devis clients et en préparations de commandes fournisseurs. Cela se fait en 2 temps :

  • modification de la requête standard de Mercator qui extrait les données pour alimenter cette grille : via implémentation de l'interface IStringUpdater
  • modification de la grille dans la fenêtre de signalétiques articles : via implémentation de l'interface IFormLoadCustomizer
Zoom
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
using System.Drawing;
using MercatorUi;
using MercatorApi;
using System.Data;
using System.Data.SqlClient;
using System.IO;

namespace SigStock
{
     public class Customizer : MercatorUi.ICustomizers. IFormLoadCustomizer, MercatorUi.ICustomizers. IFormClosedCustomizer ,
                              MercatorUi.ICustomizers. IStringUpdater
                                
    {
         public string StringUpdate( string StringToModify)
        {            
             if ( Api .StrExtract(StringToModify, "<ID>" , "</ID>" ) == "STOCKDISPO" ) // ceci permet de ne modifier que la requête de la grille de disponible, sans modifier les requêtes des autres grilles du signalétique article
            {
                StringToModify = StringToModify.Replace( "dispo.qv_3," , "dispo.qv_3,isnull((select sum(q) as ret from lignes_v,pieds_v where (id_article=dispo.id_stock) and (pieds_v.id_depot=magasins.id) and ((pieds_v.id=lignes_v.id) and (pieds_v.journal=lignes_v.journal) and (pieds_v.piece=lignes_v.piece)) and (pieds_v.type=4)),0) as qv_4," );
                StringToModify = StringToModify.Replace( "dispo.qa_3," , "dispo.qa_3,isnull((select sum(q) as ret from lignes_a,pieds_a where (id_article=dispo.id_stock) and (pieds_a.id_depot=magasins.id) and ((pieds_a.id=lignes_a.id) and (pieds_a.journal=lignes_a.journal) and (pieds_a.piece=lignes_a.piece)) and (pieds_a.type=4)),0) as qa_4," );
                StringToModify = StringToModify.Replace( "sum(qv_3)," , "sum(qv_3),sum(qv_4) as tot_qv_4," );
                StringToModify = StringToModify.Replace( "sum(qa_3)," , "sum(qa_3),sum(qa_4) as tot_qa_4," );
            }            
             return StringToModify;
        }            

         public void FormLoadCustomize( Form form)
        {                  
            MercatorUi.Forms.Sig. SigForm SigForm = (MercatorUi.Forms.Sig. SigForm )form;            
             List < Control > controls = SigForm.FindMovableControlsByType( typeof (MercatorUi.Forms.Sig.SigGrids. StockDispo )); // on cherche la grille par son type de classe
             if (controls.Count > 0)
            {
                MercatorUi.MovableControls. MovableGrid GridDispo = (MercatorUi.MovableControls. MovableGrid )controls[0];
                GridDispo.AfterColumnsCreated += new MercatorUi.MovableControls. MovableGrid . AfterColumnsCreatedHandler (GridDispo_AfterColumnsCreated);            
            }                        
        }

         public void FormClosedCustomize( Form form) // nécessaire pour relacher l'évènement GridDispo.AfterColumnsCreated
        {            
            MercatorUi.Forms.Sig. SigForm SigForm = (MercatorUi.Forms.Sig. SigForm )form;
             List < Control > controls = SigForm.FindMovableControlsByType( typeof (MercatorUi.Forms.Sig.SigGrids. StockDispo ));   // on cherche la grille par son type de classe
             if (controls.Count > 0)
            {
                MercatorUi.MovableControls. MovableGrid GridDispo = (MercatorUi.MovableControls. MovableGrid )controls[0];
                GridDispo.AfterColumnsCreated -= new MercatorUi.MovableControls. MovableGrid . AfterColumnsCreatedHandler (GridDispo_AfterColumnsCreated);
            }
        }

         void GridDispo_AfterColumnsCreated( object sender, EventArgs e)
        {
            MercatorUi.MovableControls. MovableGrid GridDispo = (MercatorUi.MovableControls. MovableGrid )sender;            
            GridDispo.Grid.Columns.Add( "Devis" , "Devis" );
            GridDispo.Grid.Columns[ "Devis" ].Width = 50;
            GridDispo.Grid.Columns[ "Devis" ].DataPropertyName = "qv_4" ;
            GridDispo.Grid.Columns[ "Devis" ].ReadOnly = true ;
            GridDispo.Grid.Columns[ "Devis" ].DefaultCellStyle.Alignment = DataGridViewContentAlignment .MiddleRight;            
            GridDispo.Grid.Columns[ "Devis" ].DefaultCellStyle.Format = MercatorUi. Globals .PictQ;
            
            GridDispo.Grid.Columns.Add( "PrepCom" , "PrepCom" );
            GridDispo.Grid.Columns[ "PrepCom" ].Width = 50;
            GridDispo.Grid.Columns[ "PrepCom" ].DataPropertyName = "qa_4" ;
            GridDispo.Grid.Columns[ "PrepCom" ].ReadOnly = true ;
            GridDispo.Grid.Columns[ "PrepCom" ].DefaultCellStyle.Alignment = DataGridViewContentAlignment .MiddleRight;
            GridDispo.Grid.Columns[ "PrepCom" ].DefaultCellStyle.Format = MercatorUi. Globals .PictQ;
        }
    }
}