Envoi de mail lors de la validation d'un abonnement

Bonjour,

je souhaiterais qu’un email soit envoyé à l’utilisateur lors de la validation de son abonnement.
J’ai tenté sans succès d’utiliser le système de notification avec les paramètres suivants :


Je suppose que j’ai mal fait qqch ?
Idem pour la réservation d’article… ça ne fonctionne pas.
En revanche j’ai réussi à le faire fonctionner lors de la génération d’une facture, elle est bien envoyée comme il faut.

j’en profite pour demander s’il est possible de mettre le lien vers la demande de paiement directement dans ce mail au lieu de mettre un lien vers leur espace personnel… étant donné que nous n’avons pas activer la caisse les gens ne peuvent pas payer par carte mais uniquement voir leurs factures/abonnements.

En vous remerciant.

Salut @nathan_EcoCentre,

Les notifications ne partent pas car le destinataire est owner, or il devrait ĂŞtre contact_email. Tu peux le modifier comme ci-dessous.

J’ai remarqué au passage que le champ contact_email n’est pas disponible pour les notifications lié au type de document Abonnement ou Réservation d'articles.

Mes recherches suggèrent que c’est parce que ces champs n’ont ne sont pas marqués comme Email dans leur Options. @corentin Il y a peut être un correctif à faire ?

En attendant tu peux contourner en personnalisant le formulaire de ces deux types de documents (menu > Personnaliser).

Le champ contact_email sera ensuite sélectionnable.

Bonne journée,
Antoine.

Bonjour @nathan_EcoCentre, et merci @Antoine_Maas je vais regarder pour cette histoire d’email de contact.

J’ajouterai que l’évĂ©nement « Valider Â» est un peu mal-nommĂ©, et n’est jamais dĂ©clenchĂ© dans le cas d’un Abonnement : je crois bien que l’évĂ©nement « Valider Â» correspond Ă  la soumission d’un document validable et immuable comme une facture ou une commande, ce qui n’est pas le cas de l’abonnement. Je me demande pourquoi il s’affiche ici…

L’évènement le plus pertinent est sĂ»rement « Nouveau·elle Â» (enregistrĂ© la première fois), ou alors « Enregistrer Â» (Ă  chaque modification) si combinĂ© avec une case Ă  cocher « notification envoyĂ©e Â» Ă  crĂ©er via la personnalisation de formulaire.

Hello
merci pour vos messages.
Pour l’abonnement, le fait de mettre Nouveau à la place de Valider n’y a rien changé. Aucun mail envoyé :cry:
je trouve curieux qu’il n’y ait pas un moyen simple de le faire. Sommes nous les seuls à vouloir envoyer un mail aux personnes qui s’abonnent ? :open_mouth:

Hello,
Je me permet de relancer.
Je n’ai toujours pas trouvé de solution.
Je suis donc obligé d’envoyer à la main un mail avec les instructions de paiement… C’est franchement pas pratique…
La seule solution que je trouverai autre, serait de créer la facture à partir de la commande client de l’abonnement. Là la personne reçoit l’email de facture avec les instructions pour payer…

Merci.


Bonjour @Nathan,

Voici peut-être une solution à ton problème:

  • Le flux d’abonnement dĂ©marre avec une commande client, qui gĂ©nère un abonnement, qui gĂ©nère une demande de paiement, puis une facture après rĂ©ception du paiement.

Commande client > Abonnement > Demande de paiement > Paiement > Facture

A partir de la période n°2, le système génère une nouvelle commande et le cycle recommence, sans créer de nouvel abonnement.

Commande client > Demande de paiement > Paiement > Facture

Ce que tu souhaites, si je comprends bien, c’est envoyer un email lors de la validation de la première commande ou bien à la création de l’abonnement.

Exemples

  1. En partant d’une commande

Il faut bien mettre des conditions pour filtrer les commandes concernées.
Ici j’ai indiquĂ© qu’il fallait que la commande soit de type « Panier Â», liĂ© Ă  un abonnement (on aurait aussi pu mettre qu’il doit avoir une pĂ©riode de rĂ©currence) et qu’un de ses articles est Abonnement mensuel au coworking

Condition: doc.order_type == "Shopping Cart" and doc.subscription and any(item.item_code == "Abonnement mensuel au coworking" for item in doc.items)

Le destinataire est l’email du contact indiqué dans la commande:

Pour récupérer le lien de paiement de la demande de paiement, on appelle l’API pour filtrer la demande de paiement associée à cette commande:

  1. En partant d’un abonnement
    Le déclencheur est juste la création de l’abonnement. Je n’ai pas mis de conditions, mais je te laisse ajuster en fonction de tes types d’abonnements:

Le destinataire est l’email de contact indiqué dans l’abonnement (cf la personnalisation indiquée par Antoine pour le faire apparaître):

Dans ce cas on ne peut pas envoyer le lien de paiement car il n’est pas encore généré lors de la création de l’abonnement, mais tu peux mettre un lien vers le portail si tu le souhaites.

J’espère que ça pourra t’aider.

Bonne journée !

Je n’avais pas vu tes impressions écran, mais tu es sûr que ta condition est valide ? Dans la v4 le champ subscription_plan n’existe plus.
Ca peut expliquer pourquoi la notification n’est pas envoyée.

hello @chdecultot ,

si je comprends bien, c’est envoyer un email lors de la validation de la première commande ou bien à la création de l’abonnement.

Oui, c’est tout à fait ça.
J’aimerais bien que les gens puissent prendre leur abonnement en autonomie en ligne, mais je n’ai pas réussi/compris comment faire.
Pour l’instant je le fais Ă  la main. Donc il n’y a pas de panier dans le processus, c’est moi qui vais dans « Abonnement Â» > « Ajouter Abonnement + Â» > …

Pour la deuxième option, c’est ce que j’ai essayé de faire. J’avais mis ce champ subscription_plan car la notification préconfigurée pour les abonnements avait ce champ… mais s’il n’est plus d’actualité, alors je veux bien le changer.
Je n’ai toujours pas compris comment parcourir les champs disponibles afin de vérifier leur existence : un genre d’auto-complétion ?
Pour ce qui est du lien de paiement, si le workflow est Commande client > Abonnement > Demande de paiement > Paiement > Facture alors il devrait être possible à la création d’un abonnement d’aller récupérer de la même façon le lien de paiement, non ?

Je te remercie.

@julie a rejoint l’équipe la semaine dernière et est en train de monter en compétences pour nous aider à enrichir la documentation au cours des prochaines semaines. Ça va prendre encore quelques semaines, mais on a déjà commencé à travailler sur les flux de gestion des lieux et on a prévu de décrire précisément les flux du site web, ça devrait pouvoir t’aider à le mettre en place.

Pour voir tous les champs disponibles dans un document, tu peux ouvrir le menu (…), puis aller dans Personnaliser:

Tu y trouveras tous les champs disponibles avec leur nom (identifiant)

Dans un abonnement, tu peux aussi passer ta souris sur un champ en appuyant sur ALT, ça t’affichera le nom du champ que tu peux copier/coller:
Peek 17-04-2024 15-27

Enfin, pour compléter ce que je disais sur le flux: en réalité, l’abonnement est généré et enregistré dans la base de données juste avant la validation de la commande. La demande de paiement est générée juste après la création de l’abonnement et juste avant la validation de la commande.
L’idée est que si un des ces deux documents tombent en erreur, il faut afficher l’erreur avant la validation de la commande.
Et ça implique que lorsque l’abonnement est créé, la demande de paiement ne l’est pas encore, mais à la fin de la validation de la commande, elle l’est.

J’espère que c’est plus clair.

Bonne fin de journée !

1 « J'aime »

Dans la v4 le champ subscription_plan n’existe plus.

En effet, j’ai l’impression qu’il a été remplacé par une table sobrement nommée plans
Si je ne dis pas de bĂŞtise, il s’agit d’une « table enfant Â», je ne peux donc pas rĂ©cupĂ©rer les attributs du contenu de manière directe.

Si j’appelle « doc.plans Â» dans mon code, j’ai en fait un objet contenant une liste de plans d’abonnement ?
Est-ce que je peux aller chercher son contenu ? genre « doc.plans[0] Â» pour rĂ©cupĂ©rer le premier plan d’abonnement ?

Dans ce cas, je pourrai faire une condition du type « doc.plans[0].plan_name == AbonnementQueJeVeux Â»
Je me doute que cela ne s’écrit pas comme tel, mais la logique est-elle la bonne ?

Oui, le champ de la table enfant s’appelle item, donc le code à écrire est :

doc.plans[0].item == "CODE-ARTICLE"

D’ailleurs il est possible de filtrer directement les lignes de table enfant avec la méthode get du Document. Sur une table enfant, on peut utiliser doc.get(nom_table, filtres) qui renvoie la liste des lignes concernées (qui est implicitement convertie en booléen via sa longueur : vide = False, pas vide = True).

doc.get("plans", {"item": "CODE-ARTICLE"})

Un tout petit peu plus d’informations sur le système d’abonnement de Dokos 4 ici.

Corentin

oups.
Il doit y avoir un soucis…
image

Adhésion annuelle étant le nom de mon plan d’abonnement

Mais je pense que le soucis vient de la logique « doc.plans[0].item Â»

Effectivement, la condition de la notification est testée sur un Abonnement qui n’a pas de lignes de plan ! doc.plans and doc.plans[0].item == "..." fonctionnera.

Alors j’ai pas tout compris.
Mais effectivement il veut bien ;p

Merci ! :smiley:

Je vous dis si tout fonctionne lors de la prochaine adhésion.