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 LinesEditor : colonnes read-only

0000002428     -      20/05/2022

Mercator permet d'afficher des colonnes read-only, dans le LinesEditor des écrans :

  • BillingForm : documents de la gestion commerciale
  • TransferForm : transferts de dépôts
  • InventoryForm : inventaires

Ces colonnes permettent d'afficher des informations venant de la fiche article. Ce point est paramétrable via la propriété SourceReadOnly de chaque colonne du LinesEditor.

En standard, la propriété SourceReadOnly permet de choisir parmi ces possibilités :

  • Tous les champs de la table STOCK
  • Tous les champs de la table DISPO (hormis les champs de clé primaire)
  • Le disponible : DISPO.DISPO-DISPO.QV_3
  • Le libellé du rayon, de la famille et de la sous-famille

Lorsque cette propriété est complétée, les propriétés Source et Formula sont automatiquement remises à blanc.

Si l'information souhaitée n'est pas reprise dans la liste déroulante en question, il est possible de saisir manuellement le nom d'une fonction SQL qui renverra l'information souhaitée. Cette fonction SQL doit pouvoir recevoir un ou deux paramètres de type char(10).

1 seul paramètre : ce paramètre doit correspondre au S_ID de l'article.

Exemple : fonction SQL renvoyant le total du disponible pour l'ensemble des dépôts 

La fonction SQL s'écrit comme suit : 

CREATE FUNCTION [dbo].[XDISPO_PERSO]
(
    @id_article char(10)
)
RETURNS float
AS
BEGIN
    declare @ret float
    select @ret=sum(DISPO-QV_3) from dispo with (NOLOCK) where (id_stock=@id_article) group by id_stock
    return isnull(@ret,0)
END
 
La propriété SourceReadOnly doit contenir : XDISPO_PERSO
 
2 paramètres : le premier paramètre doit correspondre au S_ID de l'article, le second à l'identifiant du dépôt à prendre en compte si on souhaite exploiter des informations de la table DISPO.
 
Exemple : fonction SQL renvoyant un disponible égal au stock physique, diminué des commandes clients, augmenté des commandes fournisseurs
 
CREATE FUNCTION [dbo].[XDISPO_PERSO]
(
    @id_article char(10), @id_depot char(10)
)
RETURNS float
AS
BEGIN
    declare @ret float
    select @ret=DISPO-QV_3+QA_3 from dispo with (NOLOCK) where (id_stock=@id_article) and (id_magasin=@id_depot)
    return isnull(@ret,0)
END
 
La propriété SourceReadOnly doit contenir : XDISPO_PERSO²
Notez le caractère ² qui indique que Mercator doit passer 2 paramètres à cette fonction SQL.
 

Remarques :

Les colonnes read-only ne sont pas matérialisées dans la dataTable qui alimente le LinesEditor. Toutefois, lors de l'impression, de la copie de la grille et de son export, ces colonnes sont bien ajoutées et leur contenu est correctement repris. Il en resulte que la structure de données passée au modèle d'impression devient dépendante des colonnes read-only visibles à l'écran. Le cas échéant, il faudra en tenir compte lors de l'élaboration des modèles d'impression. (Attention : les colonnes visibles peuvent varier en fonction des niveaux de l'utilisateur)

Les colonnes dont les valeurs dépendent du dépôt (DISPO... ou fonction SQL avec ²) sont rafraîchies lors du changement de dépôt. Le changement de dépôt à la ligne est aussi pris en compte.

Si, à un moment donné, on souhaite, par code, réactualiser toutes ces valeurs, il suffit d'appeler cette méthode du LinesEditor : RefreshReadOnlyColumns().


Depuis la version 10.10.215 de MercatorUi.dll, les colonnes read-only sont ajoutées dans les données du modèle de document associé, même si la fenêtre, et donc son LinesEditor, n'ont jamais été instanciés. Cela rend donc ces colonnes disponibles lors de l'impression de la dernière vente, lors d'une impression par code, ...