Facturation automatique

Y a il une option pour qu’après le paiement (ici stripe), la facture soit générée automatiquement ? Nous avons bien le devis mais il faut manuellement la valider.

A ce sujet, comment activer l’envoi automatique du mail avec la facture ?

1 Like

Je me rends compte que la facture est bien crée mais reste en brouillon
Idem dans le cas des abonnements.

Bonjour Simon,

Après le paiement via une “demande de paiement”, la facture est créée automatiquement et normalement validée automatiquement également.
Regarde s’il n’y a pas un problème de configuration qui empêche sa validation.

Dans le cas des abonnements, il faut bien cocher la case “Valider la facture automatiquement”, sauf dans le cas où il s’agit d’un flux qui suit le cycle de facturation de la passerelle de paiement (la validation est automatique dans ce cas).

Merci . Là c’est le cas où le paiement se fait avec Stripe, donc sans “demande de paiement”, directement sur la boutique. Je regarde.

Sur ce sujet, j’ai :

  • Une application où j’ai une erreur au moment du paiement qui empêche la génération de la facture, qui reste en brouillon ( Erreur de génération de facture ; frappe.exceptions.TimestampMismatchError: Erreur : le document a été modifié après que vous l’ayez ouvert (2020-03-05 16:39:50.983254, 2020-03-05 16:39:52.084427). Veuillez actualiser pour obtenir la dernière version du document.)
  • Une application où cela reste en commande, où le paiement est bien indiqué sur la commande, mais où il n’y a pas du tout de facture en brouillon.
    Est ce qu’il y a un espace où se fait la configuration pour que la facture soit automatique après paiement par Stripe ? Ou alors le principe est de venir ensuite en tant que comptable générer toutes les factures manuellement (et dans ce cas le comportement de la première application qui essaie de créer une facture n’est pas normal)

Bonjour Simon,

Merci pour tes retours.
La première erreur est difficile à comprendre. Ca peut être un problème de logique dans la saisie du paiement… Est-ce que tu peux m’envoyer un message si tu as ce problème à nouveau et me dire quel type de flux est concerné (Exemple: panier + stripe, etc…) ?

Pour la seconde erreur, normalement la facture se crée automatiquement, donc quelque chose à dû causer une erreur lors de la création de la facture.
Peux-tu regarder s’il y a quelque chose dans les logs d’erreur ?

Peux-tu aussi t’assurer que tu es sur la dernière version de Dokos ? J’ai fait passer des patchs correctifs pour un certain nombre d’erreurs avec les saisies de document suite à des paiements automatiques ces dernières semaines.

Merci!

1 Like

Salut Charles-Henri,

J’ai avancé un peu. J’ai remis à jour toute l’application à la toute dernière version.

Sur l’une des applications, après paiement (Boutique puis paiement Stripe), j’ai cette erreur :

Error de redirection après paiement

Erreur
Traceback (most recent call last):
File “/home/erpnext/frappe-bench/apps/frappe/frappe/integrations/utils.py”, line 138, in finalize_request
.run_method(“on_payment_authorized”, self.flags.status_changed_to, reference_no)
File “/home/erpnext/frappe-bench/apps/frappe/frappe/model/document.py”, line 831, in run_method
out = Document.hook(fn)(self, *args, **kwargs)
File “/home/erpnext/frappe-bench/apps/frappe/frappe/model/document.py”, line 1113, in composer
return composed(self, method, *args, **kwargs)
File “/home/erpnext/frappe-bench/apps/frappe/frappe/model/document.py”, line 1096, in runner
add_to_return_value(self, fn(self, *args, **kwargs))
File “/home/erpnext/frappe-bench/apps/frappe/frappe/model/document.py”, line 825, in
fn = lambda self, *args, **kwargs: getattr(self, method)(*args, **kwargs)
File “/home/erpnext/frappe-bench/apps/erpnext/erpnext/accounts/doctype/payment_request/payment_request.py”, line 368, in on_payment_authorized
self.run_method(“set_as_paid”, reference_no)
File “/home/erpnext/frappe-bench/apps/frappe/frappe/model/document.py”, line 831, in run_method
out = Document.hook(fn)(self, *args, **kwargs)
File “/home/erpnext/frappe-bench/apps/frappe/frappe/model/document.py”, line 1113, in composer
return composed(self, method, *args, **kwargs)
File “/home/erpnext/frappe-bench/apps/frappe/frappe/model/document.py”, line 1096, in runner
add_to_return_value(self, fn(self, *args, **kwargs))
File “/home/erpnext/frappe-bench/apps/frappe/frappe/model/document.py”, line 825, in
fn = lambda self, *args, **kwargs: getattr(self, method)(*args, **kwargs)
File “/home/erpnext/frappe-bench/apps/erpnext/erpnext/accounts/doctype/payment_request/payment_request.py”, line 228, in set_as_paid
self.make_invoice()
File “/home/erpnext/frappe-bench/apps/erpnext/erpnext/accounts/doctype/payment_request/payment_request.py”, line 144, in make_invoice
si = si.insert(ignore_permissions=True)
File “/home/erpnext/frappe-bench/apps/frappe/frappe/model/document.py”, line 232, in insert
self._validate()
File “/home/erpnext/frappe-bench/apps/frappe/frappe/model/document.py”, line 498, in _validate
self._validate_mandatory()
File “/home/erpnext/frappe-bench/apps/frappe/frappe/model/document.py”, line 785, in _validate_mandatory
name=self.name))
frappe.exceptions.MandatoryError: [Sales Invoice, (dce729a620)]: income_account

Pas de facture de crée. J’ai l’impression que c’est lié à une configuration de compte comptable. Y a il une configuration à faire quelque part pour générer la facture ?

Sur l’autre, j’ai cette erreur, assez proche :
Error de redirection après paiement
Erreur
Traceback (most recent call last):
File “/home/erpnext/frappe-bench/apps/frappe/frappe/integrations/utils.py”, line 138, in finalize_request
.run_method(“on_payment_authorized”, self.flags.status_changed_to, reference_no)
File “/home/erpnext/frappe-bench/apps/frappe/frappe/model/document.py”, line 831, in run_method
out = Document.hook(fn)(self, *args, **kwargs)
File “/home/erpnext/frappe-bench/apps/frappe/frappe/model/document.py”, line 1113, in composer
return composed(self, method, *args, **kwargs)
File “/home/erpnext/frappe-bench/apps/frappe/frappe/model/document.py”, line 1096, in runner
add_to_return_value(self, fn(self, *args, **kwargs))
File “/home/erpnext/frappe-bench/apps/frappe/frappe/model/document.py”, line 825, in
fn = lambda self, *args, **kwargs: getattr(self, method)(*args, **kwargs)
File “/home/erpnext/frappe-bench/apps/erpnext/erpnext/accounts/doctype/payment_request/payment_request.py”, line 368, in on_payment_authorized
self.run_method(“set_as_paid”, reference_no)
File “/home/erpnext/frappe-bench/apps/frappe/frappe/model/document.py”, line 831, in run_method
out = Document.hook(fn)(self, *args, **kwargs)
File “/home/erpnext/frappe-bench/apps/frappe/frappe/model/document.py”, line 1113, in composer
return composed(self, method, *args, **kwargs)
File “/home/erpnext/frappe-bench/apps/frappe/frappe/model/document.py”, line 1096, in runner
add_to_return_value(self, fn(self, *args, **kwargs))
File “/home/erpnext/frappe-bench/apps/frappe/frappe/model/document.py”, line 825, in
fn = lambda self, *args, **kwargs: getattr(self, method)(*args, **kwargs)
File “/home/erpnext/frappe-bench/apps/erpnext/erpnext/accounts/doctype/payment_request/payment_request.py”, line 228, in set_as_paid
self.make_invoice()
File “/home/erpnext/frappe-bench/apps/erpnext/erpnext/accounts/doctype/payment_request/payment_request.py”, line 145, in make_invoice
si.submit()
File “/home/erpnext/frappe-bench/apps/frappe/frappe/model/document.py”, line 908, in submit
self._submit()
File “/home/erpnext/frappe-bench/apps/frappe/frappe/model/document.py”, line 897, in _submit
self.save()
File “/home/erpnext/frappe-bench/apps/frappe/frappe/model/document.py”, line 270, in save
return self._save(*args, **kwargs)
File “/home/erpnext/frappe-bench/apps/frappe/frappe/model/document.py”, line 300, in _save
self.check_if_latest()
File “/home/erpnext/frappe-bench/apps/frappe/frappe/model/document.py”, line 701, in check_if_latest
raise_exception=frappe.TimestampMismatchError)
File “/home/erpnext/frappe-bench/apps/frappe/frappe/init.py”, line 321, in msgprint
_raise_exception()
File “/home/erpnext/frappe-bench/apps/frappe/frappe/init.py”, line 316, in _raise_exception
raise raise_exception(msg)
frappe.exceptions.TimestampMismatchError: Erreur : le document a été modifié après que vous l’ayez ouvert (2020-04-03 12:50:39.632767, 2020-04-03 12:50:41.074690). Veuillez actualiser pour obtenir la dernière version du document.

Pour le premier, la facture n’est pas crée. Pour le second, elle est bien crée mais reste en brouillon.

Merci beaucoup,

Simon

En complément, si dans les paramètres Stripe, j’ajoute une url de redirection (ex : /home), la redirection est activée, mais alors il y a pas de confirmation de la vente et le paiement est annulé (pas d’écriture de paiement sur la commande). C’est donc un paramètre à ne pas configurer à priori

Problème résolu pour le premier cas ! Je n’avais pas configure de compte de produit par défaut dans l’espace société ! : /desk#Form/Company/ -> Compte de Produits par Défaut.
C’est tout bon pour ce cas là.

Pour l’autre où les factures restent en brouillon, il doit y avoir un souci dans ma configuration quelque part.

Problème résolu pour le second cas ! C’était lié aux notifications, j’avais paramétré une notification à la création de facture mais qui plantait pour une raison sans douté liée à mon paramétrage. En désactivant les notifications, c’est ok, la facture est crée automatiquement :slight_smile:

Donc tout est ok :slight_smile: !

1 Like

Salut Simon,

Merci pour tous ces retour et heureux de lire que tout fonctionne comme il faut finalement.
Concernant l’URL de redirection Stripe c’est bien un bug: le paiement passe sur Stripe, mais l’écriture de paiement et la facture ne sont pas créés dans Dokos.
J’ai fait une correction qui sera mise en production avec la prochaine mise à jour.

L’idée est de pouvoir créer une page personnalisée pour indiquer aux clients que le paiement a été correctement effectué. Cette page est appelée en remplacement de la page standard “payment-success”.
L’option sélectionnée dans les paramètres du panier est passée dans l’URL sous la forme ?redirect_to=%2Forders (si la page sélectionnée dans les paramètres du panier est “Commande”) pour pouvoir être réutilisée dans la page personnalisée.

Pour le second problème, effectivement je comprend mieux ce qui a pu se passer. Avec la création automatique de la facture, le mieux est de choisir l’événement (Envoyer une alerte lors de l’événement) “Valider”. Ca devrait ne pas entrer en conflit avec la création automatique.

Bonne fin de journée! :slight_smile:

Bonjour à vous deux,

je lis cette conversation avec intérêt car je souhaite générer un mail de demande de paiement des factures mensuelles pour des virements manuels de mes clients.
La “demande de paiement” concerne-t-elle seulement le paiement en ligne?
Ne puis-je pas créer une demande de paiement (avec modèle de mail que je rédige) automatique qui génère un mail envoyé au client à chaque facture validée?

J’espère que je suis claire :slight_smile:

merci beaucoup pour vos retours

MarionL

1 Like

Bonjour Marion,

Tu peux tout à fait utiliser la demande de paiement sans envoyer de lien de paiement. Le lien de paiement peut être ajouté via une variable, mais c’est juste une possibilité.
Voici un exemple de modèle d’email pouvant être utilisé dans les demandes de paiement: https://demo.dokos.cloud/app/email-template/Notification%20de%20facture

Tu peux également utiliser les notifications pour déclencher l’envoi d’un email avec la facture en pdf en pièce jointe lors de leur validation.

Exemple:


(Et bien cocher “Joindre une impression de document”)

L’inconvénient de la notification est que ça enverra systématiquement un email lors de la validation d’une facture, alors que tu as plus de contrôle avec l’envoi d’une demande de paiement.
Sinon il faut ajouter un champ “Envoyer une notification” cochable/décochable dans les factures et utiliser sa valeur dans les conditions de ta notification… les possibilités sont multiples et dépendent avant tout du flux que tu souhaites mettre en place.

N’hésites pas poster le message que tu souhaites envoyer si tu as besoin d’aide pour le variabiliser.

Bonne soirée !

Merci Charles-henri pour ta réponse.

Il semble que le lien de la démo ne marche pas. je ne tombe pas sur la notification mais sur la connexion vers un copmpte de démo

Je souhaite automatiser le plus possible (en restant vigilante bien sûr) l’envoie des factures mensuelles aux abonnés.
Pour les autres clients, il est effectivement préférable de ne pas avoir une notification automatique.

Cela peut être une bonne solution de créer un champ “envoyer une notification” cochable/décochable dans la facture effectivement.

J’ai essayé de créer une demande de paiement via une facture : ce message d’erreur apparaît : où puis-je lier une adresse mail au compte administrateur?

La solution que j’ai trouvé pour l’instant est d’envoyer un mail via la facture de vente.
Ici encore, parfois dokos trouve directement l’adresse mail du client, parfois je dois la taper entièrement à la main. Sais-tu à quoi c’est lié?

Merci d’avoir pour toutes ces précisions et bonne fin de journée,

Marion

Bonjour Marion,

Tu peux te connecter à la démo en allant sur la page d’accueil et en cliquant sur “Découvrir Dokos”.
Ensuite si tu cliques à nouveau sur le lien dans le forum, tu devrais arriver sur la bonne page.

Pour l’envoi de tes factures mensuelles, si tu utilises les abonnements, le plus simple est de générer une demande de paiement automatiquement.
Je t’invite à regarder les abonnements générés par la demo Tiers Lieux par exemple:https://tierslieux.dokos.io/app/subscription

Il faut définir un contact de facturation pour que le système puisse avoir une adresse email à laquelle envoyer la demande de paiement:

Et dans la section Paramètres, sélectionnes le modèle d’email à utiliser et le format d’impression:

Ca créera une demande de paiement et enverra un email avec la facture en pj automatiquement.

Concernant les adresses emails, il faut bien que tes contacts aient une adresse email principale:

Sinon Dokos ne sait pas à quelle adresse email écrire.

Bonne fin de journée !

Ah super ! oui je n’avais pas encore utilisé cette fonction dans l’abonnement car certaines factures comportaient des erreurs type : unité de mesure = 1/2 journée alors que l’abonnement était au mois et que le prix était le bon prix.
Idem , la date de facturation se configurait automatiquement au jour du mois auquel avait été créé l’abonnement à l’origine.

Je vais néanmoins pouvoir cocher la demande automatique de paiement pour une bonne partie de mes abonnés.

Merci et à bientôt

Marion

Bonjour Charles-Henri,

Je reviens vers toi car une cliente a reçu ce jour l’e-mail de notification de paiement que je lui ai envoyé.
Il n’y avait aucune facture dans le mail.

J’ai du râter une étape?

Je n’ai trouvé aucune case à cocher me proposant de “jiondre une impression du document”

Je supposais que lorsqu’on coche sur l’abonnement : “générer une demande de paiement automatiquement” cela envoyait le mail type choisi mais que cela envoyait la facture correspondant au mois en cours dans l’abonnement.

merci pour tes retour et belle fin de journée,

Marion

Bonjour Marion,

Dans l’abonnement il faut bien sélectionner un format d’impression dans le champ “Format d’impression de facture”.
Tu retrouveras cette information dans la demande de paiement générée avec la facture du mois en cours. Ca conditionne l’envoi d’un PDF basé sur ce format d’impression. C’est le cas dans la demande de paiement pour cette cliente ?

Sinon je vois qu’il manque la balise pour mettre un lien de paiement si le paiement ne peut pas être exécuté immédiatement: {{ payment_link }}
Tu peux voir l’exemple complet ici: https://demo.dokos.cloud/app/email-template/Notification%20de%20facture (il faut se connnecter via la page d’accueil avant)

Bonne journée!

Merci Charles-Henri,

effectivement, le format d’impression est bien sélectionné

peut-être qu’il a été mal configuré. Je regarde ça.

Bonne journée :slight_smile:

Bonjour Charles-Henri,

j’espère que tu vas bien.

Le format d’impression de facture est bien créé puisque l’on voit “Facture La Caale” par contre quand je vais dans la configuration de ce format, rien n’est créé.

Ne sachant pas coder , je ne vois pas trop comment créer un format de facture…

Dans les documents “factures” , le format est déjà créé. Dokos ne peut-il pas reprendre la facture concernée et l’inclure dans le mail?

Merci pour tes réponses

et belle journée,

Marion