# Manual de Reportes

# Generalidades

# Cómo usar los reportes

## ¿Qué es / para qué sirve?

Los **reportes** te muestran cómo va el negocio: ventas, compras, inventario,
caja, gastos y restaurante. Casi todos funcionan igual: eliges filtros y el
sistema arma la tabla.

## Paso a paso (general)

1. Abre **Reportes** en el menú y elige el reporte que quieres.
2. Ajusta los **filtros** comunes:
   - **Rango de fechas**.
   - **Sucursal**.
   - Según el reporte: cliente, proveedor, producto, categoría, usuario, etc.
3. Aplica los filtros (**Buscar**/**Aplicar**) para ver los resultados.
4. **Exporta** o imprime con los botones disponibles (PDF, Excel o Imprimir).

[CAPTURA: un reporte con su barra de filtros (fechas y sucursal) y botones de exportar]

## Notas y avisos

> - Cada reporte **requiere permiso**; solo verás los que tu rol tenga habilitados.
> - Si un reporte sale vacío, revisa el **rango de fechas** y la **sucursal**
>   seleccionada.

Reportes por tema:
- [Ventas y compras](reportes-de-ventas-y-compras.md)
- [Inventario](reportes-de-inventario.md)
- [Caja y finanzas](reportes-de-caja-y-finanzas.md)
- [Restaurante](reportes-de-restaurante.md)

# Caja y finanzas

# Reportes de caja y finanzas

## ¿Qué es / para qué sirve?

Te ayudan a controlar el **dinero**: cierres de caja, diferencias, propinas,
gastos y la salud financiera del negocio.

## Reportes disponibles

- **Cierre de Caja (Registro)**: historial de aperturas y cierres por usuario,
  con totales por efectivo, tarjeta y cheque. Solo ves (y solo puedes cerrar)
  los cierres de las **sucursales a las que tienes acceso asignado** en tu
  usuario; los de otras sucursales no aparecen en el listado. Incluye las
  columnas **Efectivo Teórico**, **Efectivo Físico** y **Discrepancia** (con el
  porcentaje y si fue faltante o sobrante) para cada cierre; en cierres hechos
  antes de esta actualización, o donde no aplica, se muestra "—". La columna
  **Otros turnos** muestra, para cierres cerrados, cuántas facturas se
  cobraron en ese cierre pero fueron creadas fuera de su rango de fechas (un
  guion si no hay ninguna); presiona el número para ver el listado de esas
  facturas. Con el permiso correspondiente, un cierre cerrado también muestra
  el botón **Gestionar**, que abre una ventana para mover facturas mal
  asignadas de un cierre a otro (incluye un diagnóstico automático de posibles
  errores: usuarios sin caja propia y métodos de pago duplicados en la misma
  factura).
- **Auditoría de Cierres de Caja**: compara el efectivo **esperado** contra el
  **declarado** en cada cierre y muestra la **diferencia** (ideal para detectar
  descuadres).
- **Propinas**: propinas cobradas por fecha, cajero y método de pago.
- **Reporte de Gastos**: gastos por categoría, con gráfico.
- **Flujo de Caja**: entradas y salidas de dinero del período.
- **Beneficio/Pérdida**: resultado del negocio (ingresos − costos − gastos).
- **Balance General** y **Balance de Prueba**: estado financiero (si usas el
  módulo de cuentas).
- **Registro de Actividad (Activity Log)**: bitácora de todas las acciones del
  sistema (quién creó, editó o eliminó qué). Filtros: usuario, tipo de
  transacción y fechas. Útil para auditoría y control.

[CAPTURA: Auditoría de Cierres con esperado, declarado y diferencia]

## Notas y avisos

> - La **Auditoría de Cierres** es la herramienta clave para revisar descuadres
>   de efectivo entre lo cobrado y lo declarado.
> - El **Flujo de Caja** considera solo movimientos de dinero, no las ventas a
>   crédito pendientes.
> - El **Cierre de Caja (Registro)** filtra por las sucursales permitidas de tu
>   usuario: un cajero o encargado solo ve y puede cerrar cajas de su(s)
>   sucursal(es) asignada(s), nunca de otras. Un usuario con acceso a **todas
>   las sucursales** sigue viendo y pudiendo cerrar cualquier caja normalmente.

# Inventario

# Reportes de inventario

## ¿Qué es / para qué sirve?

Muestran cuánto stock tienes, su valor y su movimiento, para reponer a tiempo y
evitar pérdidas.

## Reportes disponibles

- **Reporte de Stock (Inventario)**: existencias por producto y sucursal, valor a
  costo y a venta, y ganancia potencial. Filtros: sucursal, categoría, marca.
- **Vencimiento de Stock**: productos próximos a vencer o vencidos (si manejas
  fechas de caducidad).
- **Ajuste de Stock**: movimientos de cargas/descargas y conteos físicos.
- **Detalles de Stock**: existencias con detalle por almacén/sucursal.
- **Reorden de Productos**: lista los productos **por debajo de su stock mínimo**
  que conviene reabastecer, con su proveedor y cantidad sugerida. Filtros:
  proveedor, sucursal, estado.

[CAPTURA: Reporte de Stock con existencias y valorización]

## Notas y avisos

> - El **valor del inventario** depende de los precios de compra/venta de cada
>   producto; manténlos actualizados.
> - El reporte de **vencimiento** solo es útil si activaste la caducidad en los
>   productos.

# Restaurante

# Reportes de restaurante

## ¿Qué es / para qué sirve?

Reportes propios de la operación de restaurante: rendimiento por **mesa**, por
**mesero** y tiempos de **cocina**.

## Reportes disponibles

- **Reporte de Mesas**: venta total por mesa en el período.
- **Reporte de Personal de Servicio (Meseros)**: ventas y órdenes atendidas por
  cada mesero.
- **Reporte de Rendimiento**: por mesero y día — cantidad de facturas, importe,
  ítems y comensales.
- **Tiempos de Cocina / Preparación**: cuánto tarda la cocina en preparar
  (relacionado con el KDS).

[CAPTURA: Reporte de Mesas con la venta total por mesa]

## Notas y avisos

> - Estos reportes dependen de que se registre el **mesero (P. de Servicio)** y
>   se use el flujo de mesas y cocina.
> - Útiles para evaluar productividad del salón y de la cocina.

PENDIENTE DE VERIFICAR: filtros exactos de los reportes de tiempos de cocina/
preparación en tu instalación.

# Ventas y compras

# Reportes de ventas y compras

## ¿Qué es / para qué sirve?

Reúnen lo que **vendiste** y lo que **compraste**, con sus montos, impuestos y
métodos de pago. Sirven para cuadrar y para declaraciones.

## Reportes disponibles

- **Reporte de Ventas (607)**: detalle de cada venta — cliente, factura, fecha,
  totales y método de pago. Filtros: sucursal, cliente, estado de pago, fechas.
- **Reporte de Compras (606)**: detalle de cada compra — proveedor, referencia,
  totales y pago. Filtros: sucursal, proveedor, estado, fechas.
- **Ítems de Venta**: producto por producto vendido (cantidad, precio, descuento).
- **Productos más vendidos**: ranking por cantidad, con gráfico.
- **Compra-Venta**: compara lo comprado contra lo vendido.
- **Beneficio/Pérdida**: ingresos, costos y ganancia del período.
- **Reporte de Impuestos**: ITBMS cobrado en ventas vs. pagado en compras.
- **Pagos de Venta / Pagos de Compra**: pagos recibidos y realizados.
- **Comparativo Anual de Ventas**: compara las ventas mes a mes entre varios
  años, para ver tendencias y estacionalidad.

[CAPTURA: Reporte de Ventas con filtros de fecha, sucursal y cliente]

## Notas y avisos

> - Para deudas pendientes de clientes/proveedores, usa **Deudas por Cobrar** y
>   **Deudas por Pagar** (muestran antigüedad de saldo).
> - El **Reporte de Impuestos** puede filtrar por facturas electrónicas.

# Desglose de pagos múltiples en resumen de ventas

## ¿Qué es / para qué sirve?

Permite que el resumen de métodos de pago en el listado de ventas (`Ventas > Todas las ventas`) desglose y acumule con total precisión cada canal de pago utilizado cuando un cliente paga con **múltiples métodos combinados** (por ejemplo, Visa + Efectivo, Yappy + Tarjeta).

Con esta mejora, el sistema distribuye el dinero ingresado entre cada uno de los métodos utilizados en lugar de agrupar el total bajo una categoría genérica llamada *"Pago Múltiple"*.

---

## ¿Cómo funciona el desglose?

### 1. En la tabla de ventas
En la columna **Método de Pago** de cada venta que incluye múltiples formas de pago:
- Se visualiza la etiqueta distintiva **Pago Múltiple**.
- Debajo se muestra el desglose exacto con el nombre del método y su monto correspondiente (ejemplo: `Visa: B/. 70.00`, `Efectivo: B/. 30.00`).

[CAPTURA: Columna Método de Pago en el listado de ventas mostrando badge de Pago Múltiple y desglose de importes]

### 2. En la tarjeta de resumen superior
En el panel **Resumen > Métodos de Pago** ubicado sobre la tabla de ventas:
- **No se registra el importe bajo la categoría "Pago múltiple"**.
- El total procesado por cada método acumula de forma transparente tanto los pagos de **método único** como las partes correspondientes a **pagos combinados**.

Ejemplo de venta de B/. 100.00 cobrada con Visa (B/. 70.00) y Efectivo (B/. 30.00):

| Método de Pago en Resumen | Monto Acumulado |
|---|---|
| <i class="fas fa-credit-card"></i> Visa | + B/. 70.00 |
| <i class="fas fa-money-bill-alt"></i> Efectivo | + B/. 30.00 |

---

## Paso a paso para consultar el resumen

1. Vaya a **Ventas** > **Todas las ventas**.
2. (Opcional) Seleccione el rango de fechas, la sucursal o el cajero a consultar en los filtros del reporte.
3. En el bloque superior **Resumen**, observe la sección de **Métodos de pago**:
   - Cada método muestra el total exacto cobrado en la página o período seleccionado.
4. En el listado de ventas, identifique las ventas con pagos combinados para revisar la lista de métodos de pago aplicados a cada transacción.

[CAPTURA: Tarjeta Resumen con la tabla formateada de métodos de pago acumulados sin categoría Pago Múltiple]

---

## Notas y avisos

> - **Sin duplicaciones**: La suma global de todos los métodos de pago en el resumen coincide 100% con el total pagado neto del reporte.
> - **Facturas anuladas**: Las facturas anuladas no suman importes al cuadro resumen de métodos de pago.

# Kardex

# Kardex - Cómo se ordenan los movimientos y qué fecha se muestra en las compras

## ¿Qué es / para qué sirve?

El **Kardex** (`Reportes > Kardex` y el "Historial de Existencias" por producto) muestra el
historial de movimientos de inventario de un producto, con el saldo acumulado ("Nueva Cantidad")
después de cada uno.

## Orden de los movimientos y fecha de las compras

Una compra puede quedarse pendiente por horas o días antes de que alguien la marque como
**recibida** en el sistema — y es en ese momento en que realmente afecta el inventario, no cuando
se creó la orden.

- **Fecha de la compra en el Kardex:** una vez que una compra se marca como recibida, el sistema
  registra ese momento exacto. Para los negocios donde esta mejora ya está activada, el Kardex
  muestra y ordena esa compra según **el momento real en que se recibió**, no según la fecha en que
  se creó la orden originalmente.
- Esto evita que una compra recibida días después de creada "se cuele" antes de ventas o ajustes de
  inventario que ya habían ocurrido, lo cual podía hacer que el saldo mostrado en movimientos
  anteriores cambiara solo con el tiempo.
- **Compras ya recibidas antes de esta mejora** no se ven afectadas — siguen mostrándose exactamente
  igual que antes (con la fecha de creación de la orden), ya que no existe un dato confiable de
  cuándo se recibieron realmente en el pasado.
- Los demás tipos de movimiento (ventas, ajustes de inventario, transferencias) no cambian: su
  fecha siempre fue la del momento en que ocurrieron.

## Notas y avisos
> Esta mejora se activa por negocio. Si su Kardex no muestra este comportamiento, puede que todavía
> no esté activada para su negocio.

# Reportes de Restaurante

# Reporte de Rendimiento por Mesa

## ¿Qué es / para qué sirve?

El reporte **Rendimiento por Mesa** (`Reportes > Rendimiento por Mesa`) muestra, para cada
mesa del restaurante, cuánto tiempo estuvo ocupada frente a cuánto facturó en ese tiempo.
Sirve para identificar qué mesas rinden más y cuáles podrían necesitar ajustes (ubicación,
tamaño, atención) para mejorar su rotación.

## Paso a paso

1. Ve al menú **Reportes** y selecciona **Rendimiento por Mesa**.
2. (Opcional) Filtra por **sucursal** con el selector de la parte superior. Si no eliges
   ninguna, se muestran todas las sucursales del negocio.
3. (Opcional) Ajusta el **rango de fechas**. Por defecto muestra el mes en curso.
4. Revisa las tarjetas de resumen en la parte superior: mesas con actividad, total facturado,
   ocupación promedio y la mesa de mayor rendimiento en el período.
5. Revisa el gráfico: las barras verdes son la facturación por mesa; la línea naranja es el
   tiempo promedio de ocupación en minutos.
6. Revisa la tabla de detalle por mesa, con las siguientes columnas:
   - **Turnos**: cuántas ventas cerradas (facturadas) tuvo esa mesa en el período.
   - **Total facturado** y **Ticket promedio**.
   - **Comensales**: total de comensales atendidos en esa mesa.
   - **Ocupación prom.** y **Horas totales**: tiempo que la mesa estuvo ocupada, desde que se
     abrió el pedido hasta que se cerró la venta.
   - **Rendimiento / min**: cuánto facturó esa mesa por cada minuto que estuvo ocupada.
   - **Nivel**: una etiqueta (Alta / Media / Baja) según el rendimiento por minuto, para
     identificar de un vistazo las mesas más y menos rentables.

[CAPTURA: pantalla del reporte Rendimiento por Mesa con las tarjetas, el gráfico y la tabla]

## Notas y avisos

> Solo se cuentan las **ventas facturadas** (no se incluyen pedidos cancelados ni facturas
> anuladas). Una mesa sin ventas facturadas en el período filtrado simplemente no aparece en
> el listado.

> Este reporte requiere el permiso de **ver reportes de compras y ventas** y que el módulo de
> **Mesas** esté activo en el negocio; si no ves la opción en el menú, pide a un administrador
> que revise estos dos puntos.

# Comandas a Cocina y Barra

## ¿Qué es / para qué sirve?

Muestra **cada comanda que el sistema mandó a preparar**: a qué hora salió, de qué mesa
y salón, quién atendía, quién la envió y —lo más importante— **por qué impresora salió**.

Sirve para dos cosas muy distintas:

- **Revisar el servicio del día**: cuántas comandas se mandaron, desde qué salones y a
  qué ritmo.
- **Averiguar por qué un pedido no llegó a la cocina.** Si un plato nunca salió, aquí se
  ve si la comanda se generó y por dónde se fue, o si nunca existió.

Tenga presente que **una misma cuenta genera varias comandas**: una por cada impresora
(lo de cocina va a la cocina, los tragos a la barra) y otra cada vez que la mesa vuelve a
pedir. Por eso el número de comandas siempre es mayor que el de cuentas.

## Paso a paso

1. Entre a **Reportes → Comandas a Cocina y Barra**.
2. Elija el **rango de fechas**. Al abrir viene puesto el día de hoy.
3. Si quiere, acote con los demás filtros: **Área**, **Impresora**, **Personal de
   servicio** y **Enviada por**. [CAPTURA: la fila de filtros]
4. Lea las cuatro cifras de arriba y después el detalle. [CAPTURA: las cuatro tarjetas]
5. Para ver una cuenta completa, **haga clic en el número de factura**: se abre el
   detalle sin salir del reporte, así no pierde los filtros que armó.
6. Con los botones **CSV**, **Excel** o **Imprimir** se lleva lo que está viendo.

## Las cuatro cifras de arriba

| Cifra | Qué le dice |
|---|---|
| **Comandas enviadas** | Cuántas comandas salieron, y por cuántas impresoras distintas |
| **Cuentas atendidas** | Cuántas cuentas distintas generaron esas comandas |
| **Mesas con pedido** | Cuántas mesas distintas pidieron algo en el período |
| **Ventas sin comanda** | Cuentas con mesa que **no generaron ninguna comanda** |

La última es la importante. Si aparece en **rojo**, hubo pedidos que **nunca llegaron a
la cocina ni a la barra**. Vale la pena revisar esas cuentas una por una.

## Notas y avisos

> El rango de fechas filtra por la **fecha de la venta**, no por la hora exacta de la
> comanda. La hora de cada comanda igual se muestra en la primera columna. Para una
> cuenta abierta de noche y cobrada de madrugada, la comanda pertenece al día en que se
> abrió la cuenta.

> La cifra de **Ventas sin comanda** no considera los filtros de impresora ni de
> usuario, y es a propósito: una venta que nunca generó comanda no tiene impresora por
> la cual filtrarla. Sí responde a los filtros de fecha y de área.

> Si una comanda aparece con la etiqueta roja **«Sin impresora»**, significa que el
> sistema no pudo resolver a qué impresora mandarla. Revise que la categoría de esos
> productos tenga impresora asignada.

> Para que un rol distinto del administrador vea este reporte, marque el permiso
> **«Reporte de Comandas a Cocina y Barra»** en **Configuración → Roles**.

# Reporte de Consumo vs Ventas

# Reporte de Consumo vs Ventas (Producciones)

## ¿Qué es / para qué sirve?

El **Reporte de Consumo vs Ventas** (`Producciones > Reportes > Consumo vs Ventas`) le muestra
a la **planta de producción**, por cada sucursal, dos cosas en el período que elija:

- Cuánto le ha **solicitado** esa sucursal a la planta, separado en **Materia Prima**,
  **Insumos** y **Otras Compras**.
- Cuánto le ha **facturado** la planta a esa sucursal (venta interna planta → sucursal).

**Importante:** este reporte NO muestra compras que la sucursal haya hecho a otros
proveedores, ni las ventas que la sucursal le hace a sus propios clientes en el punto de
venta. Es exclusivamente la relación interna planta ↔ sucursal.

[CAPTURA: pantalla del reporte con filtros y tabla de resultados]

## Paso a paso

1. Vaya a **Producciones > Reportes > Consumo vs Ventas**.
2. (Opcional) Haga clic en **Filtrar por fecha** y elija el período que quiere revisar. Si no
   elige nada, se muestran por defecto los últimos 30 días.
3. (Opcional) Elija una **Sucursal** específica en el filtro, o deje "Todas" para ver todas a
   la vez.
4. Haga clic en **Aplicar Filtros**.
5. La tabla muestra una fila por sucursal con las columnas Materia Prima, Insumos, Otras
   Compras y Ventas.
6. Use **Exportar Excel**, **Exportar CSV** o **Imprimir** según necesite.

## Columnas del reporte

**Materia Prima / Insumos / Otras Compras**
Monto de lo que la sucursal le ha **solicitado a la planta** (órdenes de compra a la planta
como proveedor interno) en el período — sin importar si esa orden ya fue recibida por la
sucursal o sigue en camino. El monto se reparte entre estas tres columnas según cómo esté
clasificada la **categoría** del producto comprado (ver más abajo). Si un producto pertenece a
una categoría que aún no se ha clasificado, su monto cae en **Otras Compras**.

**Ventas**
Monto que la **planta le ha facturado** a esa sucursal en el período (venta interna, solo
facturas ya finalizadas — no cuenta facturas en borrador pendientes de cerrarse en el punto de
venta).

## ¿Cómo se clasifica una categoría como Materia Prima o Insumo?

Vaya a **Producciones > Configuración > Clasificación de Categorías**. Ahí aparece la lista de
categorías de producto de su negocio, cada una con un selector:

- **Materia Prima**
- **Insumo**
- **Otras Compras** (opción por defecto — no hace falta elegirla, es lo que queda si no se
  clasifica la categoría)

Después de elegir las clasificaciones que necesite, haga clic en **Guardar Cambios** al pie de
la tabla — se guardan todas las filas de una vez. El reporte usa la clasificación vigente en el
momento en que se aplica el filtro — si cambia una clasificación, el reporte la refleja la
próxima vez que lo consulte.

[CAPTURA: pantalla de Clasificación de Categorías en Configuración]

> Si su negocio ya tenía categorías llamadas exactamente "Materia Prima" o "Insumos", el
> sistema las clasificó automáticamente la primera vez. Cualquier categoría nueva que agregue
> más adelante empieza sin clasificar (cae en Otras Compras) hasta que la clasifique aquí.

## Notas y avisos

> Este reporte solo cuenta compras hechas a la planta como **proveedor interno**. Si
> configura un proveedor interno distinto o cambia esa configuración en
> **Producciones > Configuración**, verifique que el reporte siga mostrando los montos
> esperados.
>
> Si una sucursal no aparece en el listado o sus ventas siempre muestran 0 aunque sepa que la
> planta le ha facturado, revise que esa sucursal tenga un mapeo en
> **Producciones > Configuración > Mapeo Sucursal - Cliente**.

# Reporte de Impuestos (ITBMS)

# Reporte de ITBMS - Cómo se calcula la columna Subtotal en la pestaña Compras

## ¿Qué es / para qué sirve?

El **Reporte de ITBMS** (`Reportes > Reporte de Impuestos`, `/reports/tax-report`) tiene tres
pestañas: **ITBMS Compras**, **ITBMS Venta** y **ITBMS Gasto**. Esta página explica cómo se
calcula la columna **Subtotal** de la pestaña **ITBMS Compras**.

## Columna Subtotal (pestaña Compras)

La columna **Subtotal** debe mostrar la **base gravable** de la compra: el monto sobre el cual
se calculó el ITBMS, **sin incluir el impuesto**.

- Se toma el total de la compra y se le resta el ITBMS de cada línea (impuesto por unidad ×
  cantidad comprada, sumado en todas las líneas de la compra).
- Si una línea está **exenta** (impuesto en 0), no resta nada por esa línea — su parte del
  Subtotal queda igual al monto comprado.
- El total del pie de tabla (fila "Total") es la suma de esta misma columna ya corregida, línea
  por línea.

> **Corrección (ERP-1882):** antes, esta columna mostraba el total de la compra **con el ITBMS
> ya incluido**, en vez de la base sin impuesto. Esto hacía que el Subtotal de Compras no
> cuadrara contra el detalle de impuesto de cada línea, y que el reporte no sirviera para
> declarar el ITBMS pagado en compras. Ya está corregido: el Subtotal siempre refleja la base
> gravable (compra menos su ITBMS).

## Notas y avisos

> - Esta corrección solo afecta la pestaña **Compras** del Reporte de ITBMS. Las pestañas
>   **Venta** y **Gasto** no cambiaron.
> - El monto del **impuesto** (columna de cada tasa de ITBMS) no cambió con esta corrección,
>   solo el **Subtotal**.

[CAPTURA: Reporte de ITBMS, pestaña Compras, columna Subtotal]

# Pagos de Venta

# Reporte de Pagos de Venta - Cómo se calcula la columna Descuento

## ¿Qué es / para qué sirve?

El **Reporte de Pagos de Venta** (`Reportes > Pagos de Venta`, `/reports/sell-payment-report`)
muestra, por cada pago recibido, los datos de la venta asociada: monto, impuesto, descuento,
envío y total. Esta página explica cómo se calcula la columna **Descuento**.

## Columna Descuento

A diferencia del Reporte de Ventas Detallado (que muestra el descuento por producto), aquí la
columna **Descuento** muestra el **descuento global** aplicado a toda la venta, en dinero:

- Si el descuento global es un **porcentaje** (ej. 20%), la columna muestra el monto real
  descontado del subtotal de la venta (suma de los productos antes de aplicar el descuento),
  no el porcentaje aplicado sobre el total ya descontado. Por ejemplo, una venta con productos
  por B/. 100.00 y 20% de descuento global muestra **B/. 20.00**.
- Si el descuento global es un **monto fijo** (ej. B/. 15.00), la columna muestra ese monto tal
  cual.
- Si la venta no tiene descuento global, la columna muestra **0.00**.

> **Corrección (ERP-2042):** antes, cuando el descuento global era de tipo porcentaje, la
> columna aplicaba ese porcentaje sobre el total de la venta que **ya tenía el descuento
> restado**, lo que mostraba un monto menor al descuento real. Ya está corregido: la columna
> reconstruye el subtotal original de la venta para calcular el monto correcto.

## Notas y avisos

> El descuento global se muestra igual en cada fila de pago de una misma venta cuando esa venta
> tiene varios pagos (cuotas); esto no cambió con esta corrección.

# Reporte de Stock

# Reporte de Stock - Cómo se calculan las columnas

## ¿Qué es / para qué sirve?

El **Reporte de Stock** (`Reportes > Reporte de Stock`) muestra, por producto y por sucursal, el
precio de compra, el precio de venta, el stock disponible y su valorización. Esta página explica
cómo el sistema calcula cada una de esas columnas, en especial la duda más común: **cómo se
calcula el precio de costo cuando un mismo producto se compró varias veces a precios distintos**,
y qué pasa con ese precio de costo cuando el producto se obtiene por **Producción** en vez de
Compra.

## Columnas del reporte

**Precio Compra**
Es el precio de costo que el sistema tiene guardado en la ficha del producto. **No es un promedio**
de las compras que se han hecho.

- Este precio solo se actualiza automáticamente si en `Configuración del Negocio` está activada
  la opción **"Editar producto en la pantalla de Compras"**.
- Cuando esa opción está activada: cada vez que se recibe una compra, el sistema **reemplaza** el
  precio de costo guardado con el precio de la **última compra registrada**, sin importar el
  precio ni la cantidad de las compras anteriores. Es decir, **no hace un promedio ponderado** —
  simplemente toma el último precio de compra ingresado y lo deja como el precio de costo del
  producto de ahí en adelante.
- Cuando esa opción está desactivada: el precio de costo no cambia solo con las compras y hay que
  actualizarlo a mano desde la ficha del producto.
- Este precio es único por producto (no varía por sucursal), así que si el mismo producto se
  compra a distintos proveedores o precios en distintas sucursales, el valor que se ve aquí
  siempre es el de la última compra registrada en el sistema, sin importar en qué sucursal se
  hizo esa compra.

**Precio Compra y Producción (Recetas/Manufactura)**
Cuando un producto se obtiene por **Producción** (receta) y no por Compra, este mismo precio de
costo también puede verse afectado:

- Los ingredientes de la receta se valoran con el **Precio Compra actual** de cada insumo (el
  mismo campo explicado arriba).
- Al finalizar la producción, el sistema calcula el costo unitario de ese lote como **costo total
  del lote ÷ unidades obtenidas** (ya descontada la merma), y ese es el precio de costo con el que
  el producto terminado entra al inventario.
- Si en `Configuración de Producción` está activada la opción **"Actualizar precio del producto
  automáticamente"**, ese costo del lote también **reemplaza** el Precio Compra guardado del
  producto terminado — mismo mecanismo de sobrescritura de la última compra/producción, **no**
  promedio ponderado.
- Si esa opción está desactivada, producir no cambia el Precio Compra guardado del producto
  terminado; solo queda registrado el costo de ese lote en esa producción puntual.

**Precio Venta**
Precio de venta configurado en el producto, o el precio de la Lista/Grupo de Precios asignada a
esa sucursal cuando aplica (botón "Precios del Grupo").

**Stock Actual**
Cantidad disponible en este momento en esa sucursal: compras recibidas, menos ventas y
transferencias, más o menos ajustes de inventario.

**Valor T.Compra**
Ojo: **no** es "Stock Actual × Precio Compra". Es la suma de **todas las compras recibidas
históricamente** de ese producto en esa sucursal, multiplicando la cantidad de cada compra por el
precio que tenía **en el momento de esa compra** (no el precio de costo actual). Por esto puede no
coincidir con Stock Actual × Precio Compra, sobre todo si hubo ventas, transferencias o ajustes
después de las compras, o si el stock quedó en negativo.

**Valor T.Venta**
Es Stock Actual × Precio Venta (usando el precio de la Lista/Grupo de Precios de la sucursal si
existe uno, aunque sea distinto al que se muestra en la columna "Precio Venta"). A diferencia de
Valor T.Compra, esta columna sí se calcula con el stock actual, no con el histórico de compras.

**Ganancias**
Valor T.Venta menos Valor T.Compra. Como esas dos columnas se calculan con bases distintas (una
con el histórico de compras y la otra con el stock actual), esta columna es una referencia de
beneficio potencial y puede mostrar cifras que no calzan con la ganancia real cuando el stock está
negativo o hubo muchos movimientos entre la compra y la venta.

> Las columnas Valor T.Compra, Valor T.Venta y Ganancias solo aparecen para usuarios cuyo rol tenga
> el permiso de ver el valor de stock.

## Notas y avisos
> Esta misma explicación aparece como una leyenda directamente debajo de la tabla del Reporte de
> Stock en el sistema.

# Reporte de Ventas

# Reporte de Ventas - Cómo se calculan el Total de Ventas y las Ventas Netas

## ¿Qué es / para qué sirve?

El **Reporte de Ventas** (`Reportes > Reporte de Ventas`, `/reports/sell-report`) lista, en el
mismo cuadro, las **facturas** y las **notas de crédito** (devoluciones) del período filtrado.
Al final de la tabla aparecen dos totales: **Total de Ventas** y **Ventas Netas**. Esta página
explica cómo se calculan.

## Cómo se calculan

- Cada fila del listado puede ser una **factura** (tipo Factura) o una **nota de crédito** (tipo
  Nota de Crédito, generada al hacer una devolución).
- **Total de Ventas** y **Ventas Netas** suman el monto de cada factura visible y **restan** el
  monto de cada nota de crédito visible en esa misma página del listado.
- Las **facturas anuladas** no suman ni restan en ninguno de los dos totales.
- Ambos totales se calculan sobre las filas de la **página que se está viendo** en ese momento
  (si el listado tiene varias páginas, cada página muestra su propio total, no el acumulado de
  todo lo filtrado).

> **Corrección (ERP-1998):** antes, el importe de las notas de crédito incluidas en el listado
> no se descontaba de **Total de Ventas** ni de **Ventas Netas** — esas notas se ignoraban en la
> suma en vez de restarse. Ya está corregido: ambos totales reflejan el monto de las facturas
> menos el de las notas de crédito de la página que se está mostrando.

## Notas y avisos

> Si necesitas el total de todo el período (no solo de la página actual), acota el rango de
> fechas con los filtros hasta que el listado quepa en una sola página, o revisa cada página por
> separado.

# Reportes de Ventas y Compras

# Reporte Ejecutivo de Ventas

## ¿Qué es / para qué sirve?

El **Reporte Ejecutivo de Ventas** (`Reportes > Reporte Ejecutivo de Ventas`,
`/reports/executive-sales-report`) resume las ventas facturadas del negocio agrupadas por
**sucursal** y por **método de pago**, con un subtotal por sucursal y un Total General. Sirve
para tener, de un vistazo, cuánto vendió cada sucursal y por qué medio de pago (efectivo,
tarjeta, etc.), sin tener que revisar factura por factura.

## Paso a paso

1. Ve al menú **Reportes** y selecciona **Reporte Ejecutivo de Ventas**.
2. (Opcional) Filtra por **sucursal**. Si dejas "Todas", se muestran todas las sucursales a las
   que tienes acceso.
3. (Opcional) Filtra por **método de pago** (efectivo, tarjeta, etc.). Si dejas "Todas", se
   incluyen todos los métodos.
4. Ajusta el **rango de fechas**. Por defecto muestra el día de hoy.
5. Revisa la tabla: cada fila combina una sucursal con un método de pago, mostrando **Ventas**,
   **Impuesto**, **Descuento** y **Venta Neta**. Debajo de cada sucursal aparece su subtotal, y
   al final de la tabla el **Total General**.
6. Si una venta se pagó con más de un método (por ejemplo, mitad efectivo y mitad tarjeta), el
   reporte reparte el monto de esa venta entre ambos métodos según la proporción que cada pago
   representó del total de la factura.
7. Para descargar el reporte en PDF con los mismos filtros aplicados, presiona **Exportar a
   PDF**. El PDF agrega una sección con el nombre de la sucursal por bloque y, si hay más de una
   sucursal en el resultado, un cuadro de **Resumen por Sucursal** antes del Total General.

[CAPTURA: pantalla del Reporte Ejecutivo de Ventas con la tabla por sucursal/método de pago y el
Total General]

## Notas y avisos

> Solo se cuentan **ventas facturadas** (no se incluyen anuladas). Las devoluciones (notas de
> crédito) no restan de este reporte.

> **Venta Neta** = Ventas − Descuento. El Impuesto se muestra aparte y no se resta de la Venta
> Neta.

> Si tu usuario tiene acceso limitado a ciertas sucursales, este reporte solo mostrará esas
> sucursales, aunque el negocio tenga más.

> Este reporte requiere el permiso de **ver reportes de compras y ventas**; si no ves la opción
> en el menú, pide a un administrador que revise tu rol.

# Cierres de Caja

# Buscador al elegir el Cierre destino en "Gestionar Transacciones

## ¿Qué es / para qué sirve?

En **Reportes → Cierres de Caja X**, cada cierre ya cerrado tiene un botón **"Gestionar"**.
Ese botón abre una pantalla que permite **mover facturas de venta** que quedaron
registradas en el cierre incorrecto (por ejemplo, ventas de un salonero sin caja propia
que el sistema asoció al turno equivocado) hacia el cierre correcto, sin necesidad de
soporte técnico.

Al elegir a qué cierre mover las facturas (Paso 2 de esa pantalla, "Seleccione el Cierre
destino"), la lista ahora tiene un **buscador**: al hacer clic en el combo se puede
**escribir** parte del número de cierre, del nombre del usuario o de la fecha, y la lista
se filtra en el momento — en vez de tener que recorrer manualmente todos los cierres del
negocio.

## Paso a paso

1. Ir a **Reportes → Cierres de Caja X**.
2. En la fila del cierre a corregir, click en **"Gestionar"** (solo visible en cierres ya
   cerrados, y solo para usuarios con el permiso correspondiente).
   [CAPTURA: botón "Gestionar" en la columna Acción del listado de cierres]
3. En el Paso 1 de la pantalla, marcar las facturas que se desean mover (las de saloneros
   sin caja propia ya vienen pre-marcadas).
4. En el Paso 2, "Seleccione el Cierre destino", hacer clic en el combo.
   [CAPTURA: combo de Cierre destino abierto mostrando la caja de búsqueda]
5. Escribir parte del texto a buscar (número de cierre, usuario o fecha) — la lista se
   filtra mostrando solo los cierres que calzan.
6. Elegir el cierre correcto de la lista filtrada.
7. Click en **"Mover Facturas Seleccionadas"** y confirmar. El sistema recalcula
   automáticamente los totales del cierre origen y del cierre destino.

## Notas y avisos

> El buscador solo filtra entre los cierres que ya se muestran en la lista (los últimos
> cierres del negocio). Si el cierre que se busca es muy antiguo y no aparece en la lista,
> consultar con soporte técnico.

> Esta operación de mover facturas queda registrada en el historial de auditoría del
> sistema (usuario, fecha y detalle de las facturas movidas).

# Reporte de Ventas Detallado

# Reporte de Ventas Detallado - Cómo se calcula la columna Descuento

## ¿Qué es / para qué sirve?

El **Reporte de Ventas Detallado** (`Reportes > Reporte de Ventas > Detallado`,
`/reports/product-sell-report`) muestra, línea por línea, cada producto vendido con su precio,
descuento, impuesto y total. Esta página explica cómo se calcula la columna **Descuento**.

## Columna Descuento

La columna **Descuento** siempre muestra el **monto en dinero** del descuento aplicado a esa
línea de venta, sin importar si el descuento se configuró como un **porcentaje** o como un
**monto fijo**:

- Si el descuento de la línea es un **porcentaje** (ej. 15%), la columna muestra el resultado de
  aplicar ese porcentaje al precio del producto (precio × % ÷ 100). Por ejemplo, un producto de
  B/. 80.00 con 15% de descuento muestra **B/. 12.00**, no "15".
- Si el descuento de la línea es un **monto fijo** (ej. B/. 7.50), la columna muestra ese monto
  tal cual, sin importar el precio del producto.
- Si la línea no tiene descuento, la columna muestra **0.00**.
- En una **nota de crédito** (devolución), el monto del descuento aparece en negativo, igual que
  el resto de las columnas de esa línea.

> **Corrección (ERP-2042):** antes, cuando el descuento era de tipo porcentaje, esta columna
> mostraba el número del porcentaje (ej. "15") en vez del monto en B/. calculado sobre el precio
> del producto. Ya está corregido: la columna siempre refleja el monto real descontado.

## Notas y avisos

> El filtro **"Cortesía"** de este reporte (casilla que filtra ventas con 100% de descuento) no
> cambió con esta corrección.

# Reporte de Compras

# Reporte de Compras

## ¿Qué es / para qué sirve?

El **Reporte de Compras** (`Reportes > Compras de Productos`) muestra, línea por línea de
producto, el detalle de todas las compras registradas: producto, SKU, proveedor, número de
referencia de la Orden de Compra, estado de compra, fecha, cantidad, unidad total ajustada,
precio de compra y subtotal.

Se puede filtrar por: producto, proveedor, negocio/sucursal, rango de fechas, estado de compra
y **categoría de producto**.

[CAPTURA: pantalla del reporte con los filtros y la tabla de resultados]

## Paso a paso

1. Vaya a **Reportes > Compras de Productos**.
2. (Opcional) Escriba un producto en **Buscar Producto** para filtrar por un producto
   específico.
3. Elija un **Proveedor** y un **Negocio** (ambos son obligatorios para poder ver resultados).
4. (Opcional) Ajuste el **Rango de Fechas**.
5. (Opcional) Elija uno o varios valores en **Estado de Compra** (pendiente, ordenado,
   enviado, recibido) para filtrar solo esos estados.
6. (Nuevo) Elija una o varias **Categorías** de producto en el filtro **Categoría** para ver
   solo las compras de productos de esas categorías. Si no elige ninguna, se muestran todas.
7. La tabla se actualiza automáticamente al cambiar cualquiera de los filtros.
8. Use los botones **Exp. a CSV**, **Exp. a Excel**, **Impresión** o **Exp. a PDF** para
   exportar el resultado ya filtrado.

## Notas y avisos

> El filtro de **Categoría** permite elegir varias categorías a la vez (selección múltiple).
> Solo aparecen las categorías de producto ya registradas en su negocio.

# Reporte de Descuentos

# Filtro por Tipo de Descuento en el Reporte de Descuentos

## ¿Qué es / para qué sirve?

En **Reportes → Reporte de Descuentos**, además de filtrar por Negocio (ubicación) y Rango de
Fechas, ahora hay un filtro **"Tipo de Descuento"**. Permite responder preguntas como "¿cuántas
cortesías se dieron este mes?" o "¿cuántos descuentos de jubilado se aplicaron en este rango de
fechas?" sin tener que revisar factura por factura.

El selector agrupa las opciones en tres bloques:

- **Predefinidos**: los tipos de descuento propios del sistema (Jubilado, Cortesía).
- **Manuales**: descuentos que el cajero escribió "a mano" al momento de la venta, sin usar
  ninguno de los botones predefinidos ni personalizados.
- **Personalizados**: los descuentos que el negocio configuró con su propio nombre, monto y
  modalidad (por ejemplo, un descuento fijo llamado "JUB15"). Cada uno aparece con su nombre
  propio, separado de "Manuales", aunque en pantalla de venta se seleccionen desde el mismo
  botón "Manual".

## Paso a paso

1. Ir a **Reportes → Reporte de Descuentos**.
2. En los filtros de arriba, hacer clic en el nuevo combo **"Tipo de Descuento"**.
   [CAPTURA: combo "Tipo de Descuento" con los grupos Predefinidos / Manuales / Personalizados]
3. Elegir el tipo a consultar (o dejarlo en "Todos" para ver el reporte completo, como antes).
4. La tabla se actualiza automáticamente al elegir una opción (no hace falta ningún botón
   "Aplicar").
5. Se puede combinar con los filtros de Negocio y Rango de Fechas ya existentes — por ejemplo,
   "Jubilado" + una sucursal + un mes específico.

## Notas y avisos

> Si un cliente tiene varios descuentos personalizados configurados, cada uno aparece como una
> opción separada dentro del grupo "Personalizados", con su propio nombre.

> Si el negocio no tiene ningún descuento personalizado configurado, el grupo "Personalizados"
> simplemente no aparece en el selector.