Reportes del negocio
POST
Reporte de ventas por producto
POST /api/reports/list-product-sales
Descripción
Devuelve el listado paginado de ventas agregadas por producto en un rango de fechas, con totales del período y categorías para filtrar.
Detalles
Agrupa las ventas confirmadas por producto dentro del rango de fechas consultado y entrega unidades, órdenes e ingresos de cada uno, junto con los totales del período y las categorías disponibles para filtrar. Las cortesías no suman ingreso. Permite acotar por categoría y por búsqueda de nombre o código.
Permisos requeridos
reports.module
Request
| Nombre | Tipo | Requerido | Reglas |
|---|---|---|---|
| dateFrom | string | No |
max:30
|
| dateTo | string | No |
max:30
|
| categoryId | int | No |
min_value:1
|
| search | string | No |
max:100
|
Paginación
| defaultLimit | 10 |
| maxLimit | 200 |
| allowedSorts | productName, units, orders, netRevenueCents, totalCents |
| defaultSort | netRevenueCents |
| defaultDir | desc |
| withTotal | true |
Ejemplo de request
curl -X POST https://restofy.pro/api/reports/list-product-sales \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <accessToken>" \
-H "X-Tenant-Key: <tenantKey>"
Los valores son demo: reemplázalos por datos reales del negocio.
Ejemplo de respuesta
Actualizado: 2026-09-08T16:35:34Z
HTTP 200
Request
[]
Response
{
"success": true,
"message": "Operación realizada correctamente",
"data": {
"products": [
{
"productUuid": "3661c9fa-18be-11f1-9da2-b627060a1ebe",
"productName": "Sopa del Día",
"sku": "SOP-001",
"categoryName": "Sopas y Cremas",
"units": "2.0000",
"orders": 1,
"netRevenueCents": "1190000",
"taxCents": "190000",
"totalCents": "1380000"
}
],
"pagination": {
"page": 1,
"limit": 10,
"total": 1,
"totalPages": 1,
"hasNext": false,
"hasPrev": false
},
"totals": {
"netRevenueCents": "1190000",
"taxCents": "190000",
"totalCents": "1380000",
"units": "2.0000",
"orders": 1,
"ticketAvgCents": 1190000
},
"filters": {
"categories": [
{
"id": 10,
"name": "Bebidas Calientes"
},
{
"id": 9,
"name": "Bebidas Frías"
},
{
"id": 6,
"name": "Carnes"
},
{
"id": 12,
"name": "Combos y Menús"
},
{
"id": 5,
"name": "Ensaladas"
},
{
"id": 11,
"name": "Licores y Vinos"
},
{
"id": 7,
"name": "Mariscos"
},
{
"id": 4,
"name": "Pastas"
},
{
"id": 3,
"name": "Platos Fuertes"
},
{
"id": 8,
"name": "Postres"
},
{
"id": 2,
"name": "Sopas y Cremas"
}
]
}
}
}