Exercice : créer une page Tableau de bord avec une page Activité

Effectué

Scénario

Vous êtes développeur pour CRONUS International Ltd. et souhaitez créer une page Tableau de bord, puis afficher certaines piles sur le Tableau de bord.

Tâches

  • Créer une extension

  • Créer une table Pile

  • Créer une page d’activité

  • Créer une page Tableau de bord et ajouter la page d’activité au Tableau de bord

  • Créer une requête et ajouter des données dans un champ de la table Pile à l’aide de cette requête

  • Mettre à jour la table Pile

  • Mettre à jour la page Activités

  • Créer un profil

  • Publier l’extension

Étapes

Créer une extension

  1. Démarrez Visual Studio Code.

  2. Sélectionnez Afficher > Extensions (Ctrl+Maj+X).

  3. Saisissez AL Language dans la zone de recherche Rechercher des extensions dans Marketplace.

  4. Cliquez sur le bouton vert Installer.

  5. Créez un projet d’extension AL. Sélectionnez Afficher > Palette de commandes… (Ctrl+Maj+P).

  6. Saisissez AL: Go! dans la zone de recherche et sélectionnez la commande dans la liste.

  7. Acceptez le chemin suggéré (ou saisissez un chemin différent).

  8. Sélectionnez la plateforme cible dernière version (la plus élevée) de Business Central.

  9. Sélectionnez Bac à sable cloud Microsoft comme point de terminaison de développement.

  10. Téléchargez les symboles d’application. Sélectionnez Afficher > Palette de commandes… (Ctrl+Maj+P).

  11. Saisissez AL: Download symbols dans la zone de recherche et sélectionnez la commande dans la liste.

  12. Si vous y êtes invité, fournissez vos informations d’identification professionnelles (compte Microsoft 365/compte Microsoft Entra ID).

  13. Ouvrez le fichier app.json et redéfinissez le paramètre name sur Exemple Tableau de bord. Redéfinissez le paramètre publisher sur Cronus International Ltd.

  14. Supprimez le fichier HelloWorld.al.

Créer une table Pile

  1. Sélectionnez Fichier > Nouveau fichier et enregistrez ce fichier en sélectionnant Fichier > Enregistrer. Utilisez le nom de fichier SalesInvoiceCue.Table.al.

  2. Créez une table dans ce fichier à l’aide d’extraits de code. Saisissez ttable, puis appuyez sur la touche de tabulation.

  3. Remplacez l’option ID par 50130 et l’option nom par « Pile facture vente ».

  4. Définissez la propriété DataClassification sur CustomerContent, ainsi que la propriété Caption sur « Pile facture vente ».

  5. Supprimez le champ MonChamp.

  6. Créez les champs suivants dans la table. Vous pouvez utiliser l’extrait de code tfield.

    N° de champ Nom du champ Type de données Longueur
    1 Clé primaire Code 10
    2 Facture vente - en cours Entier
    3 Facture vente - libérée Entier
    4 Ventes ce mois Décimal
  7. Définissez la propriété DataClassification pour chaque champ de la table, à l’exception des champs Facture vente - en cours et Facture vente - libérée, sur CustomerContent.

  8. Définissez la propriété Caption pour chaque champ de la table.

  9. Définissez la clé primaire sur Clé primaire.

  10. Définissez la propriété FieldClass sur FlowField pour le champ Facture vente - en cours. Définissez la propriété CalcFormula sur :

     CalcFormula = count("Sales Header" where("Document Type" = const(Invoice), 
                                              Status = const(Open)));
    
  11. Définissez la propriété FieldClass sur FlowField pour le champ Facture vente - libérée. Définissez la propriété CalcFormula sur :

     CalcFormula = count("Sales Header" where("Document Type" = const(Invoice), 
                                              Status = const(Released)));
    
  12. La table Pile devrait maintenant ressembler à ceci :

table 50130 "Sales Invoice Cue"
{
    DataClassification = CustomerContent;
    Caption = 'Sales Invoice Cue';

    fields
    {
        field(1; "Primary Key"; code[10])
        {
            DataClassification = CustomerContent;
            Caption = 'Primary Key';
        }
        field(2; "Sales Invoice - Open"; Integer)
        {
            Caption = 'Sales Invoice - Open';
            FieldClass = FlowField;
            CalcFormula = count("Sales Header" where("Document Type" = const(Invoice), Status = const(Open)));
        }
        field(3; "Sales Invoice - Released"; Integer)
        {
            Caption = 'Sales Invoice - Released';
            FieldClass = FlowField;
            CalcFormula = count("Sales Header" where("Document Type" = const(Invoice), Status = const(Released)));
        }
        field(4; "Sales this Month"; Decimal)
        {
            DataClassification = CustomerContent;
            Caption = 'Sales this Month';
        }
    }

    keys
    {
        key(Pk; "Primary Key")
        {
            Clustered = true;
        }
    }
}

Créer une page d’activité

  1. Sélectionnez Fichier > Nouveau fichier et enregistrez ce fichier en sélectionnant Fichier > Enregistrer. Utilisez le nom de fichier SalesInvoiceActivities.Page.al.

  2. Créez une page dans ce fichier à l’aide d’extraits de code. Saisissez tpage, puis appuyez sur la touche de tabulation.

  3. Remplacez l’option ID par 50130 et l’option nom par Activités facture vente.

  4. Définissez la propriété SourceTable sur Pile facture vente, ainsi que la propriété Caption sur Activités facture vente.

  5. Définissez la propriété PageType sur ComposantFiche. Supprimez les propriétés UsageCategory et ApplicationArea.

  6. Vérifiez qu’une zone contenu est créée dans la section Disposition. Sinon, créez une zone appelée contenu.

  7. Remplacez le nom du premier groupe par Facture vente. Modifiez le contrôle group dans un cuegroup. Définissez la propriété Caption du cuegroup sur Facture vente.

  8. Ajoutez tous les champs dans le cuegroup. Définissez la propriété ApplicationArea sur All. N’ajoutez pas le champ Clé primaire à la page.

  9. Assurez-vous que chaque champ comporte une propriété ToolTip.

  10. Ajoutez le code suivant au déclencheur OnOpenPage :

     if not Rec.Get() then begin
         Rec.Init();
         Rec.Insert();
     end;
    
  11. Supprimez la section actions de la page.

  12. La page Activités devrait maintenant ressembler à ceci :

page 50130 "Sales Invoice Activities"
{
    PageType = CardPart;
    SourceTable = "Sales Invoice Cue";
    Caption = 'Sales Invoice Activities';

    layout
    {
        area(Content)
        {
            cuegroup("Sales Invoice")
            {
                Caption = 'Sales Invoice';

                field("Sales Invoice - Open"; Rec."Sales Invoice - Open")
                {
                    ToolTip = 'Specifies the value of the Sales Invoice - Open field.';
                    ApplicationArea = All;
                }
                field("Sales Invoice - Released"; Rec."Sales Invoice - Released")
                {
                    ToolTip = 'Specifies the value of the Sales Invoice - Released field.';
                    ApplicationArea = All;
                }
                field("Sales this Month"; Rec."Sales this Month")
                {
                    ToolTip = 'Specifies the value of the Sales this Month field.';
                    ApplicationArea = All;
                }
            }
        }
    }
    trigger OnOpenPage()
    begin
        if not Rec.Get() then begin
            Rec.Init();
            Rec.Insert();
        end;
    end;
}

Créer une page Tableau de bord et ajouter la page d’activité au Tableau de bord

  1. Sélectionnez Fichier > Nouveau fichier et enregistrez ce fichier en sélectionnant Fichier > Enregistrer. Utilisez le nom de fichier MyRoleCenter.Page.al.

  2. Créez une page dans ce fichier à l’aide d’extraits de code. Saisissez tpage, puis appuyez sur la touche de tabulation.

  3. Remplacez l’option ID par 50131 et l’option nom par Mon Tableau de bord.

  4. Supprimez la propriété SourceTable et modifiez la propriété PageType sur RoleCenter.

  5. Supprimez la zone content dans la section disposition et ajoutez une nouvelle zone rolecenter dans la section disposition.

  6. Supprimez la section actions ainsi que la variable globale myInt.

  7. Ajoutez une partie nommée Activités facture vente de la page Activités facture vente dans la zone rolecenter.

layout
{
    area(RoleCenter)
    {
        part("Sales Invoice Activities"; "Sales Invoice Activities")
        {
            ApplicationArea = All;
        }
    }
}

Créer une requête et ajouter des données dans un champ de la table Pile à l’aide de cette requête

  1. Sélectionnez Fichier > Nouveau fichier et enregistrez ce fichier en sélectionnant Fichier > Enregistrer. Utilisez le nom du fichier CustomLedgEntrySales.Query.al.

  2. Créez une page dans ce fichier à l’aide d’extraits de code. Saisissez tquery, puis appuyez sur la touche de tabulation.

  3. Remplacez l’option ID par 50130 et l’option nom par Écriture comptable client Ventes.

  4. Définissez la propriété QueryType sur Normal.

  5. Définissez dataitem sur Écriture comptable client.

  6. Ajouter des colonnes de filtre pour Type de document et Date de comptabilisation.

  7. Ajoutez une colonne pour Ventes (LCY) et spécifiez la méthode Sum.

  8. Supprimez le déclencheur OnBeforeOpen.

query 50130 "Custom Ledg. Entry Sales"
{
    QueryType = Normal;

    elements
    {
        dataitem(CustLedgerEntry; "Cust. Ledger Entry")
        {
            column(SumSalesLCY; "Sales (LCY)")
            {
                Method = Sum;
            }
            filter(DocumentTypeFilter; "Document Type")
            {
            }
            filter(PostingDateFilter; "Posting Date")
            {
            }
        }
    }
}

Mettre à jour la table Pile

  1. Ouvrez le fichier SalesInvoiceCue.Table.al et créez une procédure publique nommée CalcSalesThisMonth. Retournez une variable Amount du type de données Décimal.

  2. Ajoutez le code suivant à la fonction :

    procedure CalcSalesThisMonthAmount() Amount: Decimal
    var
        CustLedgerEntry: Record "Cust. Ledger Entry";
        CustomLedgEntrySales: Query "Custom Ledg. Entry Sales";
    begin
        CustomLedgEntrySales.SetRange(DocumentTypeFilter, CustLedgerEntry."Document Type"::Invoice);
        CustomLedgEntrySales.SetRange(PostingDateFilter, CalcDate('<-CM>', Workdate()), Workdate());

        CustomLedgEntrySales.Open();
        if CustomLedgEntrySales.Read() then
            Amount := CustomLedgEntrySales.SumSalesLCY;
        CustomLedgEntrySales.Close();
    end;

Mettre à jour la page Activités

  1. Ouvrez la page SalesInvoiceActivities.Page.al.

  2. Créez le déclencheur OnAfterGetRecord dans la page et ajoutez-y le code suivant :

    Rec."Sales This Month" := Rec.CalcSalesThisMonthAmount();
    
  3. Définissez la propriété DrillDownPageID du champ Ventes ce mois-ci sur Écritures comptables client.

Créer un profil

  1. Sélectionnez Fichier > Nouveau fichier et enregistrez ce fichier en sélectionnant Fichier > Enregistrer. Utiliser le nom de fichier MyProfile.Profile.al.

  2. Créez une page dans ce fichier à l’aide d’extraits de code. Saisissez tprofile, puis appuyez sur la touche de tabulation.

  3. Définissez le code sur la formule suivante :

profile MyProfile 
{
    Caption = 'My Profile';
    RoleCenter = "My Role Center";
}

Publier l’extension

  1. Publiez votre extension dans le bac à sable. Sélectionnez Afficher > Palette de commandes... (Ctrl+Maj+P).

  2. Saisissez AL: Publish dans la zone de recherche (ou appuyez dans le raccourci clavier F5), puis sélectionnez la commande dans la liste.

  3. Ouvrez Mes paramètres à partir de l’icône des paramètres.

  4. Définissez le Rôle sur Mon profil pour tester votre Tableau de bord nouvellement créé.