Réservation en ligne

  • Réservation en ligne

    Posté par Tiyoyan sur 29 décembre 2023 à 12h35

    Bonjour,

    J’ai gère la flotte véhicule d’une entreprise et nous avons mis en place des journées de carwash. Par soucis d’organisation, j’aimerais obtenir un système de réservation en ligne . Pour cela, j’ai créé une app qui permet au conducteur de réserver à l’avance un créneau horaire de passage pour son véhicule. Chaque véhicule est autorisé à participer à une séance de lavage par mois. (Plusieurs séances et créneaux horaires sont organisés durant l’année et dans des lieux différents)

    J’ai créé une liste sharepoint dans laquelle j’inscris manuellement les sessions disponibles. L’employé n’a plus qu’à choisir et réserver via l’app.

    Afin d’éviter qu’une personne ne réserve toutes les séances pour lui 😉 j’aimerais que l’application se bloque lorsqu’elle repère qu’un conducteur tente de réserver plusieurs séances sur le même mois (cette vérification est réalisée avec la plaque d’immatriculation).

    J’ai réussi à introduire un code (voir ci-dessous), le problème en testant est que cela m’empêche quand même de réserver des sessions sur les mois suivants. Est-ce que quelqu’un pourrait m’aider ? J’ai besoin que l’app vérifie qu’une plaque n’a pas une session déjà planifiée sur le mois.

    Merci d’avance 🙂

    If(
    !IsBlank(
    LookUp(
    ‘Séances de lavage’;
    Immatriculation = TextInput1.Text
    && ‘Mois de réservation’ = Text(Today(); “MMMM”)

    )
    );
    Notify(“Vous avez déjà réservé une session ce mois-ci.”; NotificationType.Error);

    Patch(
    ‘Séances de lavage’; // Nom liste SharePoint
    LookUp(
    ‘Séances de lavage’;
    Site = Dropdown2.Selected.Value
    && Date = Dropdown3.Selected.Value
    && ‘Tranche horaire’ = Dropdown4.Selected.’Tranche horaire’
    );
    {
    Statut: “Réservé”;
    Immatriculation: TextInput1.Text;
    ‘Date de réservation’: Today();
    ‘Mois de réservation’: Text(Today(); “MMMM”)
    }
    )
    )

    Geoffroy a répondu Il y a 10 mois, 3 semaines 3 Membres · 8 Réponses
  • 8 Réponses
  • Geoffroy

    Membre
    29 décembre 2023 à 12h51

    Bonjour Tiyoyan

    Dans ton Patch, est-ce qu’il ne faudrait pas remplacer Today() par Dropdown3.Selected.Value ?

    Parce que là, j’ai l’impression que toutes tes réservations seront faites pour le jour même.

    Après, je ne sais pas ce qu’il y a dans Dropdown3. D’habitude, on gère les dates plutôt avec un DatePicker.

  • Geoffroy

    Membre
    29 décembre 2023 à 14h23

    Pourrais-tu préciser la structure de ta liste SharePoint ? J’ai un peu de mal à comprendre la logique de ton Patch.

  • R3dKap

    Membre
    29 décembre 2023 à 19h45

    Salut Tiyoyan,

    Y’a une erreur sur ton format de transformation de ta date du jour en nom du mois.

    Remplace “MMMM” par “mmmm”…

    Par contre, dû à cette erreur, en toute logique, ça ne devrait pas t’empêcher de créer une réservation sur les autres mois mais plutôt te permettre de créer autant de réservations que souhaitées sur n’importe quelle date puis ton If(!IsBlank(…)…) va systématiquement renvoyer false puisqu’il ne va pas trouver de réservation pour le mois concerné.

    Mais bon, essaie peut-être déjà de corriger ça et ensuite on verra… Sinon, ton code m’a l’air bien…

  • Tiyoyan

    Membre
    29 décembre 2023 à 21h35

    Merci beaucoup pour votre retour rapide 🙂

    Les Dropdown3.Selected.Value sont des listes déroulantes (je n’ai pas pris le temps de les renommer)

    Elles permettent aux conducteurs de choisir une séance en sélectionnant le lieu, la date et la tranche horaire.

    Voici ci-dessous la liste Sharepoint qui est liée à l’app. (chaque champs est en format texte).

    Lorsqu’une réservation est faite, la colonne “statut” se modifie et un filtre sur l’app permet de ne plus afficher la tranche horaire réservée.

    Le risque est qu’un conducteur réserve plusieurs séances sur le mois alors que la règle définie impose un seul lavage par mois par véhicule. C’est pourquoi je cherche à mettre en place une vérification automatique avant validation par plaque d’immatriculation et mois de réservation.

    Le code que j’ai créé actuellement permet de bloquer cette action mais le problème est que ce code bloque une plaque d’immatriculation pour les mois suivants également. J’aimerais que le conducteur puisse réserver ses séances sur toutes l’années sans être bloqué mais en respectant la règle d’une seule séance par véhicule.

    J’espère être précis 🙁

    Je vous remercie en tout cas de prendre le temps de regarder 🙂

    (NB: J’ai testé de modifier la formule “MMMM” par “mmmm” mais plus aucun bloquage ne se fait et il est possible de réserver toutes les séances. Merci quand même pour la tentative 🙂

  • Geoffroy

    Membre
    30 décembre 2023 à 11h51

    Bonjour Tiyoyan,

    J’ai essayé de reproduire ton appli, comme je l’ai comprise (avec mes mots à moi, désolé). Je n’ai pas compris si la liste était déjà préremplie ou non avec les créneaux libres.

    Voici un code qui semble fonctionner. J’espère que ça t’aidera.

    If(

    !IsBlank(

    LookUp(

    LSP_CarWash;

    Immatriculation = TextInput1.Text && Mois_Reservation = Text(

    DateTimeValue(Dropdown3.Selected.Value);

    “mmmm”

    )

    )

    );

    Notify(

    “Vous avez déjà réservé une session ce mois-ci.”;

    NotificationType.Error

    );

    Patch(

    LSP_CarWash;// Nom liste SharePoint

    Defaults(

    LSP_CarWash);

    {

    Titre:Last(LSP_CarWash).Titre+1;

    Site:Dropdown2.Selected.Value;

    Date_Reservation:DateTimeValue(Dropdown3.Selected.Value);

    Tranche_Horaire:Dropdown4.Selected.Value;

    Statut: “Réservé”;

    Immatriculation: TextInput1.Text;

    Date_Demande: Today();

    Mois_Reservation: Text(

    DateTimeValue(Dropdown3.Selected.Value);

    “mmmm”

    )

    }

    )

    )

  • R3dKap

    Membre
    30 décembre 2023 à 13h46

    Il me semble, Geoffroy, qu’effectivement les lignes existent déjà dans la liste.

    Du coup, voici comment je procèderai Tiyoyan… A noter que je préfère travailler avec le numéro des mois plutôt qu’avec leur nom. Attention, d’une année sur l’autre je suppose que tu réinitialises tout (si ce n’est pas le cas il te faudra inclure l’année avec le numéro du mois). Je préfère faire le test dans l’autre sens : je vérifie qu’il n’y pas de réservation sur le mois pour l’immat. et si c’est bien le cas je procède à la réservation.

    <code class="language-plaintext">If(
      IsBlank(
        LookUp(
          'Séances de lavage';
          Immatriculation = TextInput1.Text && 'Mois de réservation' = Month(Today())
        )
      );
      // Pas encore de réservation ce mois-ci
      Patch(
        'Séances de lavage';
        LookUp(
          'Séances de lavage';
          Site = Dropdown2.Selected.Value
          && Date = Dropdown3.Selected.Value
          && 'Tranche horaire' = Dropdown4.Selected.Value // ??? Je comprends pas pq tu as mis 'Tranche horaire' ici ! Qu'as-tu mis dans le Items de ton Dropdown4 ? 
        );
        {
          Statut: "Réservé";
          Immatriculation: TextInput1.Text;
          'Date de réservation': Today();
          'Mois de réservation': Month(Today())
        }
      );;
      Notify("Réservation effectuée !");
      // Déjà une réservation sur le mois en cours
      Notify("Vous avez déjà une réservation ce mois-ci !"; NotificationType.Error)
    )

    Dis-nous ce que ça donne… En tout cas la logique que tu avais était bonne. Celle-ci est un peu différente, mais l’idée est là. Si ça ne fonctionne toujours pas c’est que le problème est ailleurs.

  • Tiyoyan

    Membre
    1 janvier 2024 à 15h20

    Merci beaucoup 🙂

    Oui l’idée est que j’encode au préalable les sessions de lavage dans le Sharepoint pour l’année.

    J’introduis par lieu et par date, toutes les tranches horaires disponibles de 08h00 à 16h00 (15min par session). Chaque année le planning change donc je réinitialise tout.

    Lorsque j’introduis ton code R3dkap, il me met un message d’erreur “Type d’argument non valide. L’une des valeurs suivantes est attendue: Number,Decimal,Date,Time,DateTime,UntypedObject.”

    J’ai tenté de changer le format de mes colonnes sur Sharepoint mais sans succès.

    Je vais tenté de retravailler un autre code en m’inspirant de vos propositions, merci beaucoup en tout cas pour votre aide.

    Je vous souhaite également une belle année 2024

    • Geoffroy

      Membre
      1 janvier 2024 à 16h20

      Ca doit venir de la liste déroulante avec les dates. Il faut passer le contenu de type Texte en type Date avec DateTimeValue(Dropdown3.Selected.Value)

      Bonne chance pour la suite 🙂

Connectez-vous pour répondre.