nursit / bank

module de paiement bancaire multi prestataires & stockage des transactions pour SPIP
21 stars 22 forks source link

Pouvoir éditer le montant tant que ce n'est pas payé #35

Closed rastapopougros closed 4 years ago

rastapopougros commented 5 years ago

Qu'on cherche à garder le tout cohérent, notamment avec le plugin Factures, lorsqu'une transaction est payée, très bien.

Mais pourquoi les admins ne peuvent pas modifier (formulaire d'édition d'objet normal) les transactions tant qu'elles ne sont pas payées ?

C'est très problématique, car il y a des sites où le paiement est par chèque, et le montant est parfois libre. Or une personne peut finalement envoyer un chèque avec 10 euros de plus ! (par exemple).

Du coup la transaction ne correspond PAS au chèque déposé en banque ! Et si on valide la transaction, on se retrouve avec une facture impossible à éditer aussi, qui ne correspond pas avec ce que l'entreprise a reçu sur son compte.

On a notamment ce problème sur La Tribune de l'Art où il y a pas mal d'abonnés agés qui payent uniquement par chèque par la Poste, avec parfois des sommes plus élevées que lors du choix dans le tunnel de commande. Les admins sont alors très très embêtés et ont des mauvaises factures pour leur comptable désormais.

(Par ailleurs, même s'il faut vraiment arriver déjà à résoudre ce point, quand ça n'a pas pu être résolu : comment faire un avoir ?)

Cerdic commented 5 years ago

OK sur les paiements par chèque/virement ça aurait du sens de pouvoir saisir le montant effectivement reçu si il est différent

Mais attention, pour autant les factures resteront "mauvaises" car elles ne sont pas générées selon le paiement mais selon la commande. Tout au plus pourrait-on avoir une mention "Réglé par chèque : XEuros" sur la facture pour avoir la trace que le règlement a été supérieur à la commande.

Mais si tu veux avoir une facture qui matche le règlement c'est la commande qu'il faut éditer en amont et sur laquelle il faut refaire un paiement (qui du coup aura le bon montant)

rastapopougros commented 5 years ago

Ah oui ok si la facture est générée dès qu'il y a commande, c'est plus tordu, mais… dans la loi, une facture ne doit plus être modifiée que quand elle est publique non ? On peut bien avoir des brouillons de facture, tant que c'est pas un truc public ?

Nous (et ce client) on veut pas éditer de facture tant qu'il n'y a rien de certain à facturer, ça devrait être configurable non ("ne générer la facture que quand…") ?

Le fait de rajouter "régler par chèque 60 euros" alors que la commande était de "50 euros", ça ne résout pas le problème puisque toutes les factures sont données au cabinet comptable et je ne sais pas ce qui est bien pris en compte là dedans, ça fait un peu bidouille.

Du coup la solution pour l'instant c'est de mettre en "remboursée" la transaction si elle a été payée, ou de l'annuler si elle n'a pas encore été mise en payée. Puis de faire une nouvelle commande et relancer un paiement pas chèque dessus ? Sauf que les admins ne peuvent pas faire ça en autonomie non ? Faut pas que ce soit uniquement les clients qui puissent générer la transaction liée à la commande (quand on appelle #FORMULAIRE_PAYER_XXX), il faudrait pouvoir faire ça depuis l'admin.

J'ai du mal à voir la solution réelle du point de vu d'un admin classique, qui doit juste faire les choses dans l'admin de SPIP.

Cerdic commented 5 years ago

Non la facture n'est établie qu'au paiement. Mais le détail de la facture est donné par la commande, et si le montant du règlement ne correspond pas au montant de la commande, comment le module de facturation pourrait savoir comment modifier la commande ?

Dans votre cas c'est assez particulier, car de ce que je comprends c'est une contribution volontaire, donc le contributeur peut changer le montant à sa guise en donnant plus.

Mais sur une vente normale, d'un point de vue comptable on devrait en effet avoir sur la facture le montant réglé si différent du montant facturé, et ensuite le surplus de règlement passe en "profit exceptionnel" ou en "trop perçu à rembourser" au client.

Donc pour moi la seule vraie bonne solution c'est de modifier la commande (ou de l'annuler et en réediter une nouvelle) avant de pointer le règlement, et de refaire un processus de paiement.

Mais en effet il faut mettre en place cela depuis l'admin, et il faudrait soit que la modification de la commande impacte les transactions en attente liées à la commandes, soit regénérer une transaction à jour, pour pouvoir en encaisser le règlement

Cerdic commented 4 years ago

Voila la version 4.1.4 permet de saisir le montant encaissé au moment du paiement par chèque ou virement. Le montant initial de la transaction reste inchangé, seul le montant réglé prend en compte le règlement réel, et c'est ensuite aux autres plugins qui exploitent les transactions de gérer en conséquence :

Ou toute autre logique propre à ton site (mais si on est sur du vrai marchand, on ne peut normalement pas émettre une facture d'un montant plus élevé au motif que le règlement est plus important…)

JLuc commented 4 years ago

La différence semble être un don, qui pourrait faire l'objet d'un reçu en complément de la facture lorsque le montant réglé est supérieur au montant facturé, et qui pourrait être généré (automatiquement ou sur demande) et envoyé .

Cerdic commented 4 years ago

un don oui si c'est une asso, ou un avoir à faire au client, ou un règlement qui sera imputé à la prochaine facture si c'est un client régulier… C'est lié au métier et à l'activité, et en tout cas pas dans le champ de ce plugin

rastapopougros commented 4 years ago

Hello, avant de clore tu disais que la solution c'est de modifier la commande mais… que pour l'instant ça ne change pas la transaction non encore payée qui y est liée.

Mais en effet il faut mettre en place cela depuis l'admin, et il faudrait soit que la modification de la commande impacte les transactions en attente liées à la commandes, soit regénérer une transaction à jour, pour pouvoir en encaisser le règlement

Du coup, tu penses que c'est au plugin Commandes de faire ça ? (si on détecte qu'il y a le plugin Bank et une transaciton liée pas payée on la change)