Files
shopit-back/app/Domains/Purchase/documentacion
ncoronel 02cf3f3773 Add tests for ticket validity and event date formatting
- Create TicketValiditySchemaTest to verify database schema for ticket validity.
- Update CatalogModelsTest to include tests for event date attributes and selection options.
- Introduce EventDateTextFormatterTest for formatting event dates in Spanish.
- Refactor EventModelsTest to include validity time relationships.
- Add SaleDetailResourceTest to ensure correct serialization of purchase items.
- Enhance TicketTest with validity time checks and status management.
- Implement ValidityTimeResourceTest to validate resource output for different validity types.
- Add ValidityTimeTest to verify casting and validity checks for validity time types.
2026-08-11 12:41:35 -03:00
..

Dominio Purchase

Propósito

Implementa el ciclo de compra y checkout: crea una compra desde el carrito, toma una instantánea de sus ítems, reserva inventario, permite ediciones, inicia el pago y confirma, cancela o vence la operación.

Modelo

  • Purchase: raíz de la compra; estados created, pending_payment, paid, cancelled, rejected y expired.
  • PurchaseItem: snapshot del producto o variante, cantidad, precio y total al comprar.
  • TelepagosQr y TelepagosPayment: datos del QR e intentos/resultados del proveedor.
  • PurchasePaid: evento emitido una sola vez al pasar a pagada bajo bloqueo transaccional.

Servicios de checkout

CheckoutService es la fachada estable. Delega en:

  • StartCheckoutService: inicia la compra desde el carrito.
  • EditCheckoutService: modifica cliente o cantidades antes del cierre.
  • CompleteCheckoutService: completa, envía a revisión o confirma el pago.
  • ReleaseCheckoutService: cancela, vence y procesa vencimientos pendientes.
  • SourceCartService: sincroniza, restaura o finaliza el carrito fuente.
  • CatalogSelectionResolver y PurchaseItemSnapshotFactory: resuelven selecciones y generan snapshots.

UserPurchaseLimitService controla límites de compra y CheckoutService conserva el punto de entrada para controladores e integraciones.

Endpoints

Bajo /tenants/{tenant:codigo}/compras, con auth:sanctum: listado, inicio, detalle, edición de ítems, datos del cliente, intención de pago, finalización, revisión y cancelación.

Dependencias y reglas

Depende de Cart, Catalog, Tenant, Auth e Integration; emite eventos consumidos por Ticket y Notification. Los cambios de estado e inventario deben ser transaccionales y usar los servicios del checkout, no actualizaciones directas del modelo.