Admin: pedidos

Pedidos (productos puntuales)

/admin/orders

Ruta /admin/orders. Solo está disponible si el módulo de productos puntuales está activo en ajustes; si no, la app redirige a /admin/dashboard.

Requisitos

El menú Ingresos → Pedidos aparece con `oneTimeProductsEnabled` en verdadero. Si desactivas el módulo, al abrir la URL a mano el usuario vuelve al panel de administración.

Modelo de pedido (campos visibles)

  • id — identificador (en lista se acorta; el detalle mantiene el contexto).
  • user_id — usuario cliente; filtrable en búsqueda en cliente.
  • status — completed | pending | failed | refunded (badges en lista y detalle).
  • provider — pasarela o “manual” si lo crea un operador.
  • total_amount y currency — importe e ISO (habitual COP o USD en formularios).
  • created_at — creado; formato según locale y zona horaria por defecto de la plataforma.
  • order_items[] — por línea: one_time_product_id, nombre vía one_time_products, quantity, unit_price, subtotal = unit_price × quantity, moneda de línea.

Resumen superior

  • Pedidos visibles — filas tras la búsqueda en el lote de página actual.
  • Completados / pendientes — conteos en la página cargada.
  • Ingreso visible — suma de total_amount de completados que pasan el filtro de búsqueda (moneda tomada de la primera fila visible para coherencia en esa página).

Fichas, pestañas y tabla

  • Pestañas de estado — Todos, Completados, Reembolsados, Pendientes, Fallidos; ajustan el filtro en servidor y reinician a página 1.
  • Búsqueda — subcadenas en id de pedido, user_id o provider (sin mayúsculas) sobre el lote cargado.
  • Paginación — 10 / 20 / 50 filas; nueva petición con el filtro de estado activo.
  • Columnas — Pedido (id + usuario), Estado, Proveedor, Total, Fecha, acción al detalle.

Crear pedido (manual)

Modal: usuario (lista cargada desde API), workspace inferido o workspaceId si falta, producto puntual, cantidad, moneda (COP/USD) y si marcar como pagado al crear (`markAsPaid`). Usa `createManualOrder` con workspaceId, userId, líneas, moneda y markAsPaid. Sirve para cortesía, reemplazos o cobros fuera de pasarela registrados en sistema.

Detalle

  • Muestra estado, total, proveedor, fecha.
  • Lista cada order_items con nombre de producto, cantidad e importe de línea.