Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.colismove.com/llms.txt

Use this file to discover all available pages before exploring further.

Le module colismove-litiges gère 3 types de litiges avec 3 modes de résolution Stripe : REFUND_FULL, REFUND_PARTIAL, REJECTED.

Machine à états litige

Sc 6 — Colis perdu (REFUND_FULL)

Le sender ou le recipient signale que le colis n’est jamais arrivé. Après investigation, l’admin tranche en faveur du sender.

Module

colismove-litiges (hexagonal pur, ADR-005 Lombok ban)

Sc 7 — Contenu contesté (REFUND_PARTIAL / REJECTED)

Le recipient reçoit le colis mais le contenu est endommagé ou ne correspond pas. L’admin décide soit un refund partiel (montant BigDecimal), soit un rejet du litige (carrier reste payé).

Logique BigDecimal

DisputeService.resoudre:155-158 propage le montant BigDecimal jusqu’à Stripe.refunds.create() avec précision HALF_UP 2 décimales.

Endpoints

POST /v1/api/disputes
GET  /v1/api/superadmin/disputes/{id}
POST /v1/api/superadmin/disputes/{id}/resolve
POST /v1/api/superadmin/disputes/{id}/reject

Sc 16 — Reverse_transfer LIVREE → litige tardif

Cas critique : le booking est passé en LIVREE, le carrier a été payé via Stripe.transfers.create(). Plus tard (jusqu’à J+30), le sender ouvre un litige.

Particularité technique

  • Stripe transfer déjà effectué → utilise transfers.createReversal() pour débiter le carrier
  • Si le solde Stripe carrier insuffisant → débit différé (Stripe gère la dette)
  • Module : colismove-litiges

Modes de résolution

ModeAction StripeCarrierSender
REFUND_FULLrefunds.create(amount=full)0%100% remboursé
REFUND_PARTIALrefunds.create(amount=BigDecimal)Solde restantMontant partiel remboursé
REJECTEDPas d’action Stripe85% normalLitige rejeté

Tests

Module colismove-litiges couvert par tests d’intégration en CI continue. Pas de commit dédié — feature OK depuis la création du module.