Restofy Docs
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"
                }
            ]
        }
    }
}