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

Afficher un code-barres dans les écrans paramétrables

0000003142     -      20/03/2023

Mercator 10.10 ou ultérieur permet d'afficher un code-barres dans tous ses écrans paramétrables, dont le contenu peut être calculé. Ceci se fait par l'ajout d'une PictureBox via le paramétrage d'écran. Cet objet dispose d'une propriété Code qui fonctionne comme pour une Expression. Le code permet de placer le contenu de la méthode Evaluate qui renvoie un objet de type System.Drawing.Image.

Par exemple, dans un écran d'un document de la gestion commerciale, ce code-barres de type Code128

peut être affiché grâce à ce code

Zoom
public static Image Evaluate(MercatorUi.MovableControls.MovablePictureBox currentPictureBox)
{
    // enter your customized code here 
    MercatorUi.Forms.Billing.BillingForm billingForm = (MercatorUi.Forms.Billing.BillingForm)currentPictureBox.Form;
    if (billingForm.BillingEngine.IsNew)
        return null;
    else
        return MercatorController.xFunctions.xLinearBarCode(
            MercatorController.LinearBarcodeEnum.Code128,
            billingForm.BillingEngine.PiedsVRecord.JOURNAL.PadRight(5) + billingForm.BillingEngine.PiedsVRecord.PIECE.ToString().PadLeft(10),
            currentPictureBox.Size,
            true);
}

 

De même, ce code QR

pourra être affiché grâce à ce code

Zoom
public static Image Evaluate(MercatorUi.MovableControls.MovablePictureBox currentPictureBox)
{
    // enter your customized code here
    MercatorUi.Forms.Billing.BillingForm billingForm = (MercatorUi.Forms.Billing.BillingForm)currentPictureBox.Form;
    if (billingForm.BillingEngine.IsNew)
        return null;
    else
        return MercatorController.xFunctions.xQrCode(
            billingForm.BillingEngine.PiedsVRecord.JOURNAL.PadRight(5) + billingForm.BillingEngine.PiedsVRecord.PIECE.ToString().PadLeft(10),
            Api.Min(currentPictureBox.Width, currentPictureBox.Height),
            false);
}

 

Dans les signalétiques, les codes-barres sont calculés lors de la lecture de la fiche. Dans les autres écrans, le calcul est effectué lors de l'affichage initial.

Il est possible toutefois de provoquer un recalcul du code-barres au départ d'un ou de plusieurs autres objets de la fiche (ici sans changer de fiche). Pour cela, il faut lier la PictureBox à ce ou ces objets par sa propriété RefreshedBy. Cette dernière peut contenir un ou plusieurs ID (à mettre en liste, un élément par ligne) correspondant à ces objets qui devront provoquer la réévaluation du code-barres.
Pour rappel, l'ID d'un objet est disponible dans sa fenêtre de propriétés et est facilement copiable.

Par exemple, ce code QR contient l'adresse d'un client et est visible dans le signalétique clients.

Il est produit par ce code, qui concatène la rue, le code postal et la ville.

Zoom
public static Image Evaluate(MercatorUi.MovableControls.MovablePictureBox currentPictureBox)
{
    // enter your customized code here
    MercatorUi.Forms.Sig.SigForm sigForm = (MercatorUi.Forms.Sig.SigForm)currentPictureBox.Form;
    if (string.IsNullOrWhiteSpace(sigForm.DataSourceRow["C_ID"].ToString()))
        return null;
    else
        return MercatorController.xFunctions.xQrCode(
            sigForm.DataSourceRow["C_ADRESSE"].ToString() + " " + sigForm.DataSourceRow["C_CODEP"].ToString() + " " + sigForm.DataSourceRow["C_VILLE"].ToString(),
            Api.Min(currentPictureBox.Height, currentPictureBox.Width),
            false);
}


Afin de provoquer un rafraîchissement automatique du code QR lors d'une modification de l'adresse par l'utilisateur, il faut lister les ID des textBox C_ADRESSE, C_CODEP et C_VILLE dans la propriété
RefreshedBy de la PictureBox.

 

Notes :

  • Il n'est pas nécessaire de sauvegarder ce code-barres dans la base de données. Dès lors, la propriété Source de la PictureBox peut rester vide.
  • La fonctionnalité décrite ici ne se limite aux codes-barres. Etant donné que la méthode Evaluate renvoie un objet de type System.Drawing.Image, elle peut s'appliquer à n'importe quel type d'image.