Dettes, incidents et clôtures
Glossaire
Dettes
Les dettes sont les sommes dûes par un client : Un montant que le club auraît du percevoir mais qui - pour une raison ou une autre - ne l'a pas été, ne l'est pas encore.
Une dette, liée à un incident, peut empêcher un client de réserver, passer au contrôle d'accès, ou même de reprendre un nouvel abonnement.
WARNING
Il est donc important de vérifier qu'un client ne soit pas endetté avant de lui permettre d'acheter un abonnement en ligne, sans quoi la vente pourrait ne pas se ventiler
Clôtures
Les clôtures comptables font passer un client au statut "ancien client" (old_client). Ses abonnements, carnets et badges seront désactivés. Et, vous pourrez clôturer sa balance comptable qui sera alors être rééquilibrée.
Identifier la dette
GET /:clientToken/financial_summary?contactId=/:clientToken/contacts/:id
Cet endpoint renvoie l’état financier, avec un filtre ?contactId=contactIRI
on peut récupérer l’état financier d’un contact donné. En réponse, on reçoit le nombre d’incidents et le total de la dette
GET /:clientToken/financial?contactId=/:clientToken/contacts/:id
On récupère la liste des sous-entités financières reliées au contact
- Les paiements (à utiliser)
- Les factures
Sur ces dernières, le financialState peut être incident
s’il y a incident de paiement. On peut également regarder si le financialState
est in_progress
alors que la lateDueDate
est passée, auquel cas la facture est « en retard de paiement »
GET /:clientToken/invoices/{id}/financial
Cet endpoint renvoie l’état financier d’une facture Notamment utile dans le cas où l’on souhaiterait ajouter un paiement dessus, qui serait refusé si elle est en incident. On y retrouve le financialState
en état incident
. Et le totalIncidentAmount
qui vaut le montant en euros en incident à régler.
D'autant plus important, on y retrouve ses breakdowns
(la répartition de ses paiements), qui peuvent eux-même être rattachés à un incident en cours ($.breakdowns[i].payment.currentIncident
). S’il l'un de ces incidents est en état open
on peut récupérer son amount
à régler, et conserver son id (/{clientToken}/incidents/{id}
)
GET /:clientToken/incidents?contact=/:clientToken/contacts/:id
Cet endpoint permets de récupérer tous les incidents liés à un contact. Prenez garde au state
de ces incidents. Dès lors que l'un d'entre eux est à l'état open
c'est qu'un incident est en cours sur ce client.
Régler la dette via un paiement en ligne
Si le club permets le paiement en ligne, il est tout à fait possible de régler la dette en créant un payableObject
avec un targetId
(ou targetIds
) relatif à l’incident (comme vous le feriez pour une vente, cf. documentation dédiée) :
POST /clientToken/payable_objects
{
"contactId": "/:clientToken/contacts/:id",
"amount": 100, // Le montant de l'incident
"currency": "EUR",
"clubId": "/:clientToken/clubs/:id",
"clubCode": "clubCode",
"checkout": "/:clientToken/checkouts/:id",
"useWebWallet": false,
"payableObjects": {
"incidents": ["/clientToken/incidents/:id"],
},
"cancelUrl": "https://www.example.com/cancel",
"validUrl": "https://www.example.com/valid",
"useAvailableAmount": false
}
Clôtures comptables
Un membre clôturé revient au club ou se rend sur l'espace membre du club pour régulariser sa situation. Il est possible de déclôturer le client directement depuis sa fiche membre OU de lancer des actions automatisées de déclôture depuis l'espace membre, en fonction de la politique du club.
Notez néanmoins qu'il s'agît d'un process souvent complexe, pour lequel le club souhaite généralement être maître de la relation clientelle. Nous vous invitons donc vivement à "simplement" tester si un contact a le statut old_client
et si c'est le cas, l'inviter à contacter son club afin de régler sa situation.
Un contact clôturé peut avoir été clôturé comptablement alors qu'il devait encore de l'argent au club (était endetté). Au moment de la déclôture il est tout à faire possible (et souhaité) d'inviter l'usager à régler sa dette passée.
GET /:clientToken/contact/:id
Cet endpoint vous renvoie la représentation d'un contact, dans cette dernière existe la propriété closure
. Si elle est renseignée c'est que le client a fait l'objet d'une clôture. La valeur est l'IRI de la clôture : /:clientToken/closures/:id
GET /:clientToken/closures/:id
Cet endpoint vous permets de récupérer les informations d'une clôture, entre autres :
Propriété | Définition |
---|---|
consequenceSummary.addAlert | (true|false) S'il faut afficher une alerte ou non |
consequenceSummary.contactDebt | Le montant de la dette s'il en est |
consequenceSummary.lockSale | Si la clôture empêche le client de faire des achats |
consequenceSummary.subscriptions | Les souscriptions impactées par la clôture |
consequenceSummary.feeAmount | Le montant à ajouter à la dette (s'il en est) comme frais de dossier pour régler la déclôture |
Deux possibilités :
- Si
contactDebt
est positif : Le contact est endetté : Voir sections précédentes pour régler ces dettes - Sinon vous pouvez passer directement à la déclôture ci-après
Déclôturer le contact
POST /:clientToken/closures/:id/cancel
Cet endpoint attends un payload avec à minima :
{
"contactSelfUnclosing": true // Pour indiquer que le contact annule de lui-même la clôture
}