Facture créée mais paiement non appliqué : valider ResultatPaiement
Symptôme
Lors d'une création de facture avec paiement, la réponse peut indiquer un succès pour la
facture ET une erreur pour le paiement, en même temps. Le ResultType global peut afficher
SUCCESS (parce que la facture, elle, a bien été créée), mais ça ne veut pas dire que le
paiement a passé.
{
"JSON_Reponse": {
"ResultType": "SUCCESS",
"ResultDetail": {
"Message": "OK - Facture créée sous le numéro : 81268",
"NoFacture": "81268",
"ResultatPaiement": "Erreur : Facture non trouvée, ou erreur : Pas d'usager en session de travail. - la facture ne sera soit pas payée ou payée partiellement."
}
}
}
Dans cet exemple (retour réel d'un connecteur Acomba) : la facture a bien été créée dans
l'ERP, mais le paiement n'a pas été appliqué. Si on ne regarde que ResultType ou
Message, on croit que tout est beau. Le principe vaut pour tous les systèmes comptables :
la création et le paiement sont toujours deux étapes distinctes.
Pourquoi ce n'est pas atomique
La création de la facture et l'application du paiement sont deux étapes séparées, et c'est inévitable :
- la facture est d'abord créée dans l'ERP — opération irréversible (une fois créée, impossible de l'annuler par programme) ;
- le paiement est ensuite appliqué.
Si l'étape 2 échoue, on ne peut pas défaire la facture déjà créée à l'étape 1. C'est donc à l'intégrateur de lire le résultat du paiement et de gérer le cas « facture créée mais paiement en erreur ».
Les champs exacts à valider
JSON_Reponse.ResultDetail.Message: résultat de la création (doit commencer par « OK ») ;JSON_Reponse.ResultDetail.NoFacture: le numéro de facture créé dans l'ERP (présent = la facture existe) ;JSON_Reponse.ResultDetail.ResultatPaiement: résultat du paiement (doit commencer par « OK », sinon échec).
Règle simple côté intégration
Le traitement est vraiment complet seulement si Message commence par « OK » ET
ResultatPaiement commence par « OK ».
Si NoFacture est présent mais que ResultatPaiement est en erreur : la facture existe sans
son paiement — à loguer/alerter, puis corriger (appliquer le paiement manuellement ou le
re-soumettre).