Choix: power automate, vue, galerie

  • Choix: power automate, vue, galerie

    Posté par Romain sur 13 février 2025 at 17h02

    Bonjour à tous, je suis enseignant en bac pro logistique et cap. Je dois créer un outil de gestion de stock pour l’utiliser avec mes élèves. Je suis parti sur Power apps. J’ai révisé mon SQL que je n’ai pas utilisé depuis l’école et apres quelques vidéos de tutos sur la solution, je suis bloqué sur un problème.

    J’ai une table Mouvements qui représente l’ensemble des mouvements de marchandises dans l’entrepôt :

    MouvementId : Clé, Numéro incrémenté

    Reference : Référence de l’article

    Batch : Numéro de lot de l’article

    MouvementType : 3 choix, 1 pour Réception, 2 pour Expédition, 3 pour transfert.

    StartingLocation : Emplacement de départ du mouvement. Si c’est une réception, Startinglocation est vide.

    EndingLocation : Emplacement d’arrivée du mouvement, Si c’est une expédition, EndingLocation est vide.

    Quantity : Quantité de l’article

    Je veux dans une application, un écran qui utilise cette table pour afficher pour chaque référence, les lots en stock ainsi que leurs emplacements et chacune des quantités.

    Quelles est la solution la plus appropriée ?

    -Une vue de la table Mouvement

    -Une gallerie qui affiche la table avec des groupby

    -Un power automate qui rempli une seconde table achaque fois que Mouvement est mis à jour

    -Une quatrième solution que je n’ai pas envisagé.

    De plus, ça dépasse mes compétences, comment m’y prendre ?

    En vous remerciant par avance.

    Romain a répondu 2 months, 2 weeks ago 3 Membres · 14 Réponses
  • 14 Réponses
  • R3dKap

    Member
    14 février 2025 at 10h45

    Salut @Romain,

    1. Est-ce que c’est bien une application de canevas que tu veux créer ?
    2. Est-ce que tu veux stocker tes données dans SharePoint ou dans Dataverse ?
    3. Est-ce que tu as une table qui liste toutes tes références ?
  • Romain

    Member
    14 février 2025 at 10h51

    Oui c’est une application canva, je stock dans dataverse. J’ai une table pour stocker les référence, un autre pour les emplacements et même une pour les types de mouvements mais il semble que des clefs étrangères complique mon problème.

  • R3dKap

    Member
    14 février 2025 at 11h35

    Ok, alors dans ton application tu crées un premier écran Références avec une galerie galRéférences dont la propriété Items est le nom de ta table des références.

    Tu crées ensuite un autre écran Mouvements dans lequel tu mets également une galerie galMouvements.

    Dans le OnSelect de la galerie galRéférences tu mets le code : Navigate(Mouvements; ScreenTransition.None; {locRéférence: ThisItem}). Au clic sur une référence ce code va t’amener sur l’écran Mouvements et mettre à disposition dans cet écran une variable locale locRéférence qui va contenir la référence cliquée.

    Dans le Items de la galerie galMouvements, tu mets le code suivant : Filter(TableMouvements; Référence.Référence = locRéférence.Référence). Dans Référence.Référence le 1er est le nom de ta colonne de recherche Référence qui pointe vers ta table des références, et le 2è est le nom de la colonne identifiante de ta table des références (c’est une colonne de type Identificateur unique qui porte le même nom que le nom de ta table). Dans locRéférence.Référence, le Référence après le point est le même que le 2è Référence que dans Référence.Référence.

    Sur l’écran Mouvements, prévoit un petit bouton avec le code Back() dans sa propriété OnSelect pour pouvoir revenir à l’écran Références.

    Voilou… 😉

  • Romain

    Member
    14 février 2025 at 13h54

    C’est super ! Merci beaucoup.

    Si je comprends bien, je n’ai donc pas besoin de clé étrangère dans la table Mouvements.

    Par contre ca ne répond pas à la seconde partie de ma question. comment puis-je afficher un écran qui affiche un tri les lignes de la table Mouvements comme ceci :

    Soit un état des stocks.

    Pour chaque Reference, la liste des Batch qui reste en stock, leurs localisations et leurs quantités.

    Merci beaucoup par avance ! Venant de l’éducation nationale, je ne peux pas donner grand chose si ce n’est une bonne note 🙂

  • R3dKap

    Member
    15 février 2025 at 12h25

    Ah bin là c’est plus simple : tu veux juste afficher le contenu de ta table Mouvements finalement…

    Donc tu peux par exemple utiliser un contrôle Table sur ton écran et renseigner le nom de ta table dans sa propriété Items et tu devrais voir les données s’afficher.

    Et pour le tri, dans la propriété Items de la table tu peux le spécifier ainsi :

    SortByColumns(
    TableMouvements;
    "Référence";
    SortOrder.Ascending;
    "Batch";
    SortOrder.Ascending;
    "Location";
    SortOrder.Ascending
    )
  • Romain

    Member
    15 février 2025 at 21h36

    C’est génial Merci !

    Tu m’as donné une idée. Si je renseigne un peu mieux ma table de mouvements voici ce que j’obtiens sur un historique. (colonne verte en indication seulement pour la lecture)

    Du coup comment, s’il te plait, obtenir le calcul sur Quantity pour obtenir la vue suivante ?

    Soit, pour chaque Arrivallocation on additionne les quantités arrivées, on soustrait les quantités parties et on n’affiche que les lignes supérieure à 0.

    20/20 si tu résous mon problème car là tu me sauves la prochaine année scolaire 🙂

  • R3dKap

    Member
    17 février 2025 at 12h56

    Je te prépare ça @Romain 😉 (dès que je trouve le temps de reproduire ton cas)

  • Romain

    Member
    17 février 2025 at 14h01

    Super merci beaucoup !!!

  • R3dKap

    Member
    17 février 2025 at 21h53

    Voilou… 😉

    <div>

    ClearCollect(
    colMouvements;
    {IdMouvement: 1; Reference: 29834; Batch: "AB435"; StartingLocation: Blank(); QuantityMoved: 0; ArrivalLocation: "R01-02-05"; Quantity: 10};
    {IdMouvement: 2; Reference: 29834; Batch: "AB435"; StartingLocation: "R01-02-05"; QuantityMoved: -5; ArrivalLocation: "A01-01-04"; Quantity: 5};
    {IdMouvement: 3; Reference: 29834; Batch: "AB435"; StartingLocation: "A01-01-04"; QuantityMoved: -3; ArrivalLocation: Blank(); Quantity: 0};
    {IdMouvement: 4; Reference: 325678; Batch: "AB954"; StartingLocation: Blank(); QuantityMoved: 0; ArrivalLocation: "R02-02-05"; Quantity: 35};
    {IdMouvement: 5; Reference: 325678; Batch: "AB456"; StartingLocation: Blank(); QuantityMoved: 0; ArrivalLocation: "R02-02-05"; Quantity: 35};
    {IdMouvement: 6; Reference: 325678; Batch: "AB954"; StartingLocation: "R02-02-05"; QuantityMoved: -15; ArrivalLocation: "A02-01-03"; Quantity: 15};
    {IdMouvement: 7; Reference: 325678; Batch: "AB954"; StartingLocation: "A02-01-03"; QuantityMoved: -10; ArrivalLocation: Blank(); Quantity: 0}
    );;

    Clear(colExpandedData);;

    // On constitute une collection avec les mêmes lignes sauf que l'on éclate en 2 lignes celles où il y a à la fois un StartingLocation ET un ArrivalLocation
    ForAll(
    colMouvements As loopMouvement;
    If(!IsBlank(loopMouvement.StartingLocation);
    Collect(
    colExpandedData;
    {
    Reference: loopMouvement.Reference;
    Batch: loopMouvement.Batch;
    Location: loopMouvement.StartingLocation;
    Quantity: loopMouvement.QuantityMoved
    }
    )
    );;
    If(!IsBlank(loopMouvement.ArrivalLocation);
    Collect(
    colExpandedData;
    {
    Reference: loopMouvement.Reference;
    Batch: loopMouvement.Batch;
    Location: loopMouvement.ArrivalLocation;
    Quantity: loopMouvement.Quantity
    }
    )
    )
    );;

    // Ensuite on regroupe les données par triplets Reference/Batch/Location (les quantités sont reléguées dans une colonne Quantities), puis on ajoute une colonne Quantity où on fait la somme de chaque Quantities de chaque ligne, et enfin on enlève la colonne Quantities dont on a plus besoin
    ClearCollect(
    colVue;
    DropColumns(
    AddColumns(
    GroupBy(
    colExpandedData;
    Reference;
    Batch;
    Location;
    Quantities
    );
    Quantity;
    Sum(Quantities;Quantity)
    );
    Quantities
    )
    )

    Résultat :

    </div>

    • This reply was modified 2 months, 2 weeks ago by  R3dKap. Reason: Ajout capture résultat
  • Romain

    Member
    17 février 2025 at 23h27

    Super ! Je vais tester cela ! Ca me parait parfait. C’est vraiment sympa de ta part.

    Je te remercie beaucoup !

  • R3dKap

    Member
    18 février 2025 at 12h33

    Avec plaisir…

    Y’aurait aussi moyen de le faire en une seule boucle mais je trouvais ça plus clair de procéder en 2 temps… 😉

  • Romain

    Member
    19 février 2025 at 21h29

    Hello,

    Je t’embète encore.

    J’ai crée un écran avec une table. Je ne comprends pas où mettre le code. Dans la propriété Item cela ne fonctionne pas.

    En te remerciant par avance.

  • Nicolas

    Member
    19 février 2025 at 23h49

    Salut Romain,

    attention tu vas nous l’enerver (Quoique ça ait l’air difficile) 😜

    Dans Items tu mets colVue et tu mets le code de création de cette variable dans une action (onVisible de ton écran ou onSelect tu bouton qui amène sur ton écran, ou…)

  • Romain

    Member
    20 février 2025 at 16h57

    Merci messieurs,

    Ca marche nickel et j’ai beaucoup appris !!!

Connectez-vous pour répondre.