Files
2026-08-22 13:42:08 +02:00

761 B

POS-008 — Architect

Feature

POS Phase 1 ticket 008: POST /pos/sales idempotent transaction.

Objetivo

POST /pos/sales: creates a POS sale atomically (order + line items + payments + cash session update) in a DB transaction. Idempotent via idempotency key.

Diseño

  • CreatePosSaleUseCase takes: idempotencyKey, cashSessionId, terminalId, userId, items[], payments[]
  • Step 1: idempotency check (return existing if key found)
  • Step 2: verify cash session OPEN (FOR UPDATE lock)
  • Step 3: compute totals
  • Step 4: INSERT order
  • Step 5: INSERT line items
  • Step 6: INSERT payments + update cash session expected_cash_cents
  • All in BEGIN/COMMIT/ROLLBACK transaction
  • Provider types: pos_cash, pos_card, pos_other (not regular payment providers)