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 ?

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: