DES-09 — Day 9 — Reseller app: orders & finance
Orders with counters and progress, order detail and tracking, assisted-order confirmation, balance/credit, invoices, payments and declaration. Return request.
| Field | Details |
|---|---|
| Task code | DES-09 |
| Phase | P0 — Foundations (cadrage, UX/UI, architecture & contract) |
| Product scope | V1 |
| Status | Planned |
| Start | Wed 28 Oct 2026 |
| Due | Wed 28 Oct 2026 |
| Responsible | Akram — UI/UX designer |
| Co-responsible | — |
| Effort | 1 person-day(s) planned · 1.25 from scratch · size S |
| Area · app | Reseller app design · design |
| Depends on | DES-08 |
| Unblocks | MRA-05, MRA-07, DES-10 |
| Milestones | — |
Summary
Orders with counters and progress, order detail and tracking, assisted-order confirmation, balance/credit, invoices, payments and declaration. Return request.
Description
Day 9 designs what happens after « Envoyée » and the reseller's money. The screens are RA-21 orders, RA-22 order detail and live tracking, RA-23 assisted-order confirmation, RA-40 return request (V1 since 17 Oct), RA-29 balance and credit, RA-30 invoices and RA-31 payments and declaration. Inputs: the reseller-05-orders-tracking reference, the finance tiles of reseller-01, cahier §5.4 and §4.7, ORD-06/07/08/10/12/13/15, FIN-01/02/03/05/10, SUP-04, and the operations orders.list|summary|get|cancel|confirmAssisted|rejectAssisted|reorder|document, returns.create|list|get, events.stream, finance.summary, invoices.list|get, payments.list|declare and files.createUpload. Every status change must reach the reseller live while the screen is open (SSE) and as a notification otherwise. The tracker therefore needs live, reconnecting and paused states. Consumers: Imad's MRA-05 (RA-21…23), MRA-07 (RA-29…31) and MRA-10 (RA-40 and the SSE client), and Anis's WEB-04 for RW-08/09/13.
Subtasks
| # | Subtask | Owner |
|---|---|---|
| 1 | RA-21 Commandes: status counters that act as filters (Toutes, Envoyée, Validée, En préparation, Expédiée, Livrée; Refusée, Annulée and Retournée in the filter sheet); order cards (CMD-2026-000158, date, pill, first item « + 2 articles », amount, mini tracker, assisted and first-order badges); search by number or product; empty « Aucune commande pour l'instant » + « Découvrir le catalogue »; skeleton; offline cached list | Akram |
| 2 | RA-21 live states: « En direct » dot while events.stream is open; a changed card crossfades its pill (200 ms), advances its mini tracker and pulses once, without the list jumping while the user scrolls; « Reconnexion… »; « Mise à jour en pause — tirez pour actualiser » after 3 failed retries | Akram |
| 3 | RA-22 Suivi de commande: tracker mapping all 11 OrderStatus values (5 steps, En attente as a hold, branches Refusée with reason / Annulée / Retournée), dated history with actor (« Validée par HOCO · 22 mai 2026 à 10:32 »), banner « Votre commande a été modifiée par HOCO » with line diff « Quantité ajustée : 10 → 8 », lines, totals, address, payment method | Akram |
| 4 | RA-22 actions: FAC- invoice and BL- delivery-note PDF rows (downloading, failed); cancel with a reason (ORDER_CANCEL_REASON) only while Envoyée or En attente, in a dialog « Annuler la commande » / « Garder la commande »; reorder with unavailable items reported; « Signaler un problème » → RA-33 after-sales; « Demander un retour » → RA-40 (delivered only); live toast « Commande CMD-2026-000158 : Validée » | Akram |
| 5 | RA-23 Commande assistée à confirmer: delegate name, lines at the reseller's customer-type price, total, address; 72 h expiry as a countdown plus a written deadline; « Confirmer la commande »; reject with a reason; Expirée; already validated by HOCO (Validée par l'administration); reminder banner 24 h before expiry | Akram |
| 6 | RA-40 Demande de retour: delivered-order header; line picker with quantity ≤ delivered; reason; photos; submit → RET-2026-000012; tracker Demandé → Accepté → En retour → Reçu → Remboursé / avoir émis, or Refusé with a reason; credit-note link once refunded; empty list | Akram |
| 7 | RA-29 Solde et crédit: balance, credit ceiling, used and available credit with a bar, overdue warning (En retard invoices), and a variant for an account without credit | Akram |
| 8 | RA-30 Factures: list with InvoiceStatus pills (Impayée, Partiellement payée, Payée, En retard, Annulée) and credit notes (avoirs); filters; PDF opening through a signed URL (loading, expired link, failed) | Akram |
| 9 | RA-31 Paiements: list with PaymentStatus pills (À vérifier, Confirmé, Rejeté with reason); declaration form (method, amount, date, reference, proof of 10 MB or less with upload states); success « Paiement déclaré — HOCO va le vérifier » | Akram |
| 10 | Annotate the status → tracker step → tone mapping table on RA-22, and link the after-sales and return entry points to RA-33 and RA-40 | Akram |
| 11 | Feasibility: SSE lifecycle (connect when the screen opens, backoff reconnect, pause after 3 failures, refetch on resume), PDF viewer, proof upload | Imad |
Deliverables
- Claude Design › Reseller App ›
RA · Orders(RA-21…23, RA-40) andRA · Finance(RA-29…31), e.g.RA-22 · Order detail & tracking · live-status-changed,RA-40 · Return request · status-in-transit - Status → step → tone mapping table annotated on RA-22
- Live, reconnecting and paused variants of RA-21 and RA-22
Acceptance criteria
- All 11 order statuses, 5 AssistedConfirmation values, 6 ReturnStatus, 5 InvoiceStatus and 3 PaymentStatus values appear with their French labels and tones from enums.json
- Cancellation is only offered while Envoyée or En attente, returns only on delivered orders
- The live, reconnecting and paused states exist, and a status change is never conveyed by colour alone (text pill and toast)
- Countdowns (assisted-order expiry) always come with a written deadline
- Amounts use
1 250,00 DAeverywhere in finance frames (never the compact format) - Imad's review answer is OK or OK with notes
Requirements covered
| Requirement | Title | Release |
|---|---|---|
| ORD-07 | Reseller order tracking: counters by status, filters, progress, details, invoice download, support, reorder | V1 |
| ORD-08 | Assisted orders prepared by a delegate, confirmed by the reseller or validated by the administration | V1 |
| FIN-03 | Payment recording in the back-office and payment declaration with proof by the reseller | V1 |
| FIN-10 | Reseller finance view: balance, available credit, invoices, payments | V1 |
Screens
| Screen | Name | App |
|---|---|---|
| RA-21 | Orders | RA |
| RA-22 | Order detail & tracking | RA |
| RA-23 | Assisted order confirmation | RA |
| RA-29 | Balance & credit | RA |
| RA-30 | Invoices | RA |
| RA-31 | Payments & payment declaration | RA |
| RA-40 | Return request | RA |
Test measures
- Prototype walkthrough: RA-20 → RA-21 → status changes live → RA-22 → RA-40 return
- Check the tracker against the order transition table in /docs/srs/lifecycles-and-statuses
- Screen-reader note check: the live region announces the status change politely
Risks
- The return window and return reasons are not decided — design a configurable window (« Retour possible jusqu'au … ») with a Decision pending sticker.
- Live updates make the list jump — the rule is: update in place, never reorder while the user is scrolling; agreed with Imad today.
KPI
- Delivered by Wed 28 Oct 2026 within 1 person-day(s).
- Every acceptance criterion above demonstrated before hand-off; linked requirements' acceptance criteria pass.
- Zero open critical defects, permission gaps or data-integrity regressions at sign-off.
Generated from content/plan/tasks.json by scripts/generate-team-tasks.mjs. Dates are computed by the scheduler (Sunday–Thursday weeks, holidays excluded) — change the plan, not this page.
DES-08 — Day 8 — Reseller app: product, cart & checkout
Product detail, specifications, favorites, cart, checkout, addresses, confirmation — with every validation message.
DES-10 — Day 10 — Reseller app: promotions, notifications, account, support
Promotions and daily offers, promotion detail, notifications, account hub, store profile, settings, support tickets, system states.