---
audiencia: usuario
screen_key: ventas/facturacion
titulo: Facturación
aliases: [factura, facturacion, facturación, nota credito, nota de credito, nc, nota debito, nota de debito, nd, remision, remisión, orden venta, orden de venta, pedido, marangatu, sifen, cdc, anular, anulación]
---

# Facturación — Guía para el Usuario

Esta guía cubre todo lo que pasa en la pantalla de **Ventas / Facturación**: emisión de facturas electrónicas, notas de crédito y débito, remisiones, órdenes de venta y la importación desde Marangatu. También explica cómo se relacionan con SIFEN, qué validaciones aplica el backend antes de aceptar un documento, y cuándo conviene anular vs emitir una nota de crédito.

---

## ¿Dónde encuentro esto en el menú?

- **Ventas → Facturación**: pantalla principal con varias solapas.
  - **Facturas**: lista y creación de facturas electrónicas.
  - **Notas de Crédito**: devoluciones, descuentos posteriores y ajustes a favor del cliente.
  - **Notas de Débito**: ajustes en contra del cliente (intereses, recargos). _La solapa aparece pero hoy está deshabilitada en la interfaz ("Módulo de Notas de Débito próximamente") — no depende de ningún módulo contratado, todavía no está liberada para ningún cliente_.
  - **Remisiones**: traslado de mercadería con o sin factura asociada.
  - **Pedidos**: pedidos de clientes (cotizaciones internas que luego se facturan).
  - **Órdenes de Venta**: compromisos formales con el cliente, con reserva de stock y precios fijados.
  - **Marangatu**: importación de comprobantes de **venta** (facturas y NC emitidas) desde el portal de la SET. La importación de **compras** vive en **Compras → Marangatu**.
- **POS**: para facturación rápida desde caja. Usa el mismo backend de Facturas.
- **Numeraciones**: no hay una pantalla ni pestaña propia de "Numeraciones" en el menú principal. Se gestionan en **Configuración → Puntos de Venta → Sucursales y Cajas → entrá a la sucursal (Ver detalle) → pestaña CAJAS → expandí la caja → en el Punto de Expedición hacé clic en el botón "Numeraciones"**.
- **Listas de precios**: se gestionan en **Productos → pestaña "Listas Precios"** (no en Configuración). Ver `guia-listas-de-precios.md`.

Facturas, Notas de Crédito y Remisiones aparecen siempre que la empresa no sea "solo Ecommerce" (sin módulo VENTAS). Pedidos, Órdenes de Venta y Marangatu además requieren tener activo el submódulo correspondiente (`VENTAS_PEDIDOS`, `VENTAS_ORDEN_VENTA`, `ADM_BOT_MARANGATU`).

---

## Conceptos generales

### Numeraciones y tipos de documento

Cada documento usa una **numeración** asociada a un **tipo de documento**:

| Código | Tipo de documento | Tabla |
|--------|-------------------|-------|
| 1 | Factura Electrónica | `factura_cab` |
| 5 | Nota de Crédito | `nota_credito_cab` |
| 6 | Nota de Débito | `nota_debito_cab` |
| 7 | Nota de Remisión | `nota_remision_cab` |
| 100 | Recibo de Pago | `recibos` |
| 200 | Orden de Venta | `pedidos` (tipo `orden_venta`) |

Formato del número: `EST-PEX-NRO` (ej. `001-001-0000001`). El sistema asigna el número al guardar; si la numeración está agotada o inactiva, el guardado falla.

### Estados SIFEN

Todo documento electrónico (factura, NC, ND, remisión) pasa por SIFEN (sistema de la SET):

- **Pendiente**: el documento se creó en el ERP pero todavía no fue enviado o aún no respondió SIFEN.
- **Aprobado**: SIFEN lo aceptó. Se completa el **CDC** (44 dígitos), QR y fecha de firma.
- **Rechazado**: SIFEN lo rechazó. El motivo queda en el campo "mensaje SIFEN".

Eventos posteriores aprobados por SIFEN:

- **EAPN**: aprobación normal del documento.
- **ECAN**: cancelación / anulación aprobada.
- **EINU**: inutilización aprobada.
- **ENOR**: nominación aprobada.

### CDC, QR y PDF

- El **CDC** es el código electrónico que identifica al documento ante la SET. Se genera al enviar a SIFEN.
- El **PDF kude** muestra el documento con su QR. Mientras no esté aprobado por SIFEN, el QR puede aparecer como "pendiente".
- Mientras el documento esté **Pendiente** o **Rechazado** se sigue mostrando un PDF provisorio.

---

## Solapa: Facturas

Lista de facturas con columnas configurables: Número, Fecha, Cliente, Total, Condición de pago, Estado, Pipeline, SIFEN, Evento, Estado de evento, CDC, fechas SIFEN, QR, Acciones.

### Filtros rápidos disponibles

Hoy / Ayer / Esta semana / Este mes / Mes anterior, más buscador por número, cliente o CDC.

### Crear una factura

1. **Ventas → Facturación → Facturas → Nueva Factura** (o usar POS).
2. Seleccionar **cliente**, **numeración**, **condición de pago** (contado o crédito), **moneda** y **lista de precios** si aplica.
3. Agregar **ítems** con cantidad y precio. El precio sale automáticamente de la lista asignada al cliente / zona / canal (ver `configuracion-y-listas-de-precios.md`).
4. Si la moneda no es PYG, cargar el **tipo de cambio**. Es obligatorio y debe ser mayor a 0.
5. Cargar **formas de pago**: efectivo, tarjeta, cheque, transferencia, etc. La suma debe coincidir con el total (excepto crédito puro, donde van solo cuotas).
6. **Guardar y enviar a SIFEN** o **Guardar como pendiente**.

### Estados de una factura

- **Pendiente**: emitida, pero todavía no se cobró el total (en crédito o esperando cobro de cuotas).
- **Pagada**: ya está cobrada al 100%.
- **Anulada**: cancelada (ver sección de anulación más abajo).
- **Vencida**: condición de pago era crédito y pasó la fecha de vencimiento de alguna cuota sin cobrar.

### Acciones por factura

- ✏️ **Editar** (solo si todavía no fue aprobada por SIFEN).
- 📄 **Ver PDF** del kude.
- 🔗 **Enviar a SIFEN** (individual o en lote).
- 🔄 **Sincronizar estado SIFEN** (consulta el estado actual al portal y lo refleja en el ERP).
- ❌ **Anular** (evento ECAN).

### Cobros, retenciones y recibos multifactura

El cobro de facturas se hace desde **Cobros**. El módulo soporta un mismo recibo cancelando varias facturas, aplicando notas de crédito como saldo a favor y registrando retenciones de IVA / RENTA. Ver detalle en `plan-recibos-multifactura-retenciones.md` y `recibos-multi.md`. Lo que conviene saber acá:

- Una NC puede aplicarse en **modo estricto** (solo contra la factura origen) o **flexible** (saldo a favor del cliente). Lo define la configuración del módulo.
- Las **retenciones recibidas** se cargan al momento del cobro, con tipo y porcentaje, y reducen el saldo cobrado en efectivo.
- La **imputación** sugiere FIFO (las facturas más viejas primero) y se puede sobrescribir manualmente.

---

## Solapa: Notas de Crédito

Devuelven dinero al cliente o reducen el saldo de una factura ya emitida.

### Casos de uso típicos

- Devolución parcial o total de mercadería.
- Descuento o bonificación posterior.
- Ajuste por error en precio o cantidad.

### Crear una NC

1. **Ventas → Facturación → Notas de Crédito → Nueva**.
2. Seleccionar la **factura origen** (la NC siempre referencia a una factura).
3. Cargar **motivo de emisión** (catálogo SET).
4. Marcar los ítems y cantidades a acreditar. La NC nunca puede superar al total de la factura origen.
5. Confirmar y enviar a SIFEN.

### Qué pasa al confirmar

- Reversa el stock de los ítems devueltos (vuelve al depósito).
- Reduce el saldo de la factura origen o queda como saldo a favor del cliente, según el modo configurado (estricto / flexible).
- Si la factura ya estaba cobrada, la NC genera un saldo a favor del cliente que se imputa a futuros cobros.

### Estados NC

Pendiente → Aprobada → Anulada.

---

## Solapa: Notas de Débito

Ajustes **en contra** del cliente: intereses por mora, recargos, ajustes de precio en alza. El flujo pensado es análogo al de NC (selección de factura origen + motivo + ítems o monto), pero hoy la solapa está **deshabilitada** en la interfaz (muestra "Módulo de Notas de Débito próximamente") para todas las empresas — no es una limitación por módulo contratado, es que la funcionalidad todavía no se liberó.

---

## Solapa: Remisiones

Traslado de mercadería que requiere acompañar la carga con un comprobante electrónico (ej. salida desde depósito hacia el cliente, traslado entre sucursales).

### Datos obligatorios

- Cliente o destinatario.
- **Transportista**, **chofer** y **vehículo** (catálogos en Contactos).
- Origen y destino.
- Ítems con cantidades.

### Estados

Pendiente → Aprobado / Rechazado / Anulado.

### Impacto en stock — importante

El stock se mueve **una sola vez**, al crear el documento que primero saca físicamente la mercadería. La regla depende de si la remisión tiene documento asociado:

| Escenario | ¿Afecta stock? |
|-----------|---------------|
| Remisión **sin** documento asociado (remisiono ahora, facturo después) | **Sí, la remisión descuenta al crear** |
| Remisión **con** factura electrónica asociada | No — la factura ya descontó |
| Factura creada **desde** una remisión (flujo "Facturar Remisiones" del POS) | No vuelve a descontar (la remisión ya lo hizo) |
| Remisión anulada | Repone el stock que había descontado |
| Factura anulada (creada desde remisión) | No toca stock — lo tiene la remisión |

Una factura puede tener varias remisiones asociadas y una remisión puede aplicarse parcialmente a varias facturas. El detalle completo del módulo (transporte, SIFEN, los dos flujos de vinculación y las validaciones) está en **`guia-nota-remision.md`**.

---

## Solapa: Pedidos

Pedidos informales del cliente que sirven como antesala de la factura. Permiten capturar la intención de compra, fijar ítems y luego facturar. Para compromisos formales con reserva de stock y aprobación, usar **Órdenes de Venta**.

---

## Solapa: Órdenes de Venta

Compromiso formal de venta con el cliente. Permite **fijar precios**, **reservar stock**, requerir **aprobación** y luego facturar total o parcialmente.

### Estados

`borrador → confirmada → aprobada → en_proceso → facturada_parcial → facturada` (o `cancelada / vencida`).

### Acciones

- ➕ **Nueva**: crea en borrador.
- ✅ **Confirmar**: asigna número, fija precios, reserva stock si la sucursal lo exige (`orden_reserva_stock`).
- 👍 **Aprobar**: si la empresa exige aprobación (`orden_requiere_aprobacion`).
- 📄 **PDF**.
- 💰 **Facturar**: total, parcial por ítem o parcial por monto.
- ❌ **Cancelar**: libera reservas de stock.

### Vencimiento

Un cron marca la orden como **vencida** y libera las reservas si pasó la fecha de vencimiento sin facturar.

Detalle completo: `plan-ordenes-venta.md`.

---

## Solapa: Marangatu (Ventas)

> **Importante**: la solapa **Marangatu dentro de Facturación trabaja solo con ventas** (facturas y notas de crédito emitidas por la empresa). La importación de **compras** (facturas recibidas de proveedores) vive en **Compras → Marangatu** y se documenta en `guia-compras.md` / `plan-marangatu-importacion.md`.

Sirve para recuperar al ERP los comprobantes de venta que ya están en el portal Marangatu de la SET. Casos de uso típicos:

- Migrar el histórico de facturas y NC al iniciar con el sistema, sin recargar todo a mano.
- Recuperar facturas emitidas offline o desde otra plataforma.
- Importar NC de venta faltantes para que queden disponibles como saldo a favor del cliente y se puedan aplicar desde Recibos Multi-Facturas.

La solapa tiene una guía visual integrada con los pasos (componente `MarangatuGuia`).

### Prerrequisitos

- **Producto genérico GEN0001** creado en la empresa. Es obligatorio: todos los ítems importados de venta se asignan a ese producto preservando la descripción original del XML. Si no existe, la importación tira `Producto genérico GEN0001 no encontrado en la empresa. Créalo antes de importar.`
- **Empresa con RUC configurado**. Se usa para validar que las NC realmente fueron emitidas por la propia empresa.
- **Bot Marangatu conectado** (chip "WS conectado" en verde en el encabezado del panel). Si el chip dice "WS desconectado", el botón **Captura Manual** queda deshabilitado.

### Sub-pestañas dentro de Marangatu Ventas

Una vez ejecutado **Ver documentos**, el panel divide el resultado en dos sub-pestañas con contador:

- **Facturas**: documentos de tipo factura electrónica (iTiDE = 1).
- **Notas de Crédito**: NC de venta (iTiDE = 5).

### Flujo paso a paso

1. **Elegir Año y Mes** del período a recuperar.
2. **Captura Manual** — **OJO: NO es instantánea**. El botón **no descarga los comprobantes en el momento**; solo le pide al bot que se conecte a Marangatu y empiece a buscarlos. El bot tiene una **cola interna** (estado `QUEUED`) y la SET puede tardar desde unos segundos hasta varios minutos en responder según la carga del portal y la cantidad de comprobantes del período.
   - El estado del bot (`QUEUED` → `PROCESANDO` → `COMPLETADO` / `ERROR`), la etapa actual, los CDC recuperados y los eventos en tiempo real aparecen en el panel "Ejecución en tiempo real" y en los chips superiores. También una barra de progreso `procesados / total`.
   - Hasta que el estado no llegue a **`COMPLETADO`**, no tiene sentido apretar "Ver documentos" — el preview va a venir incompleto o vacío. Mientras tanto se puede seguir trabajando en otras pantallas; el WebSocket actualiza el panel en vivo.
   - Si el chip dice **"WS desconectado"** el botón queda deshabilitado: el bot no está conectado al sistema y hay que avisar a soporte.
3. **Ver documentos**: una vez que la captura terminó, este botón trae el preview y lo lista en tabla. Cada fila muestra Número, Fecha, Cliente, RUC, Condición (o CDC de factura asociada en la solapa NC), Total y Estado SIFEN. Códigos visuales por fila:
   - ✅ **Verde** (ícono `CheckCircle`): ya importado al ERP. Fila atenuada, checkbox deshabilitado.
   - ⏳ **Reloj de arena** (warning): capturado pero el XML todavía no está disponible (el bot no lo pudo recuperar aún). Fila muy atenuada, no se puede importar todavía.
   - 🚫 **Borde rojo** (ícono `Block`): documento con evento de cancelación aprobado en SIFEN. Se importará ya como **Anulado**.
4. **Seleccionar qué importar** (opcional):
   - Cada fila importable trae un checkbox.
   - El checkbox del encabezado marca/desmarca todos los nuevos visibles.
   - El chip "X marcado(s)" muestra cuántos están seleccionados. Si no se marca ninguno, se importan **todos los nuevos**.
5. **Importar X nuevo(s) al ERP** / **Importar X NC al ERP** (según la sub-pestaña):
   - **Facturas**: crea la factura, ítems con `GEN0001`, cuenta por cobrar y medios de pago, según el XML.
   - **Notas de Crédito**: crea `nota_credito_cab` + `nota_credito_det` + `nota_credito_subtotal`.

### Reglas y validaciones de la importación

- **Idempotencia por CDC**: reimportar el mismo período no duplica — los CDC que ya existen quedan como "ya importado" y se omiten.
- **Cliente del XML inexistente**: se crea automáticamente en Contactos con RUC + razón social del receptor.
- **Facturas con cancelación aprobada en SIFEN**: se importan ya como **Anuladas** (saldo 0, sin CxC).
- **NC: validación de RUC emisor**. Las NC vienen del feed que la SET clasifica como "comprobantes recibidos" — entre ellas pueden colarse NC de compra (proveedores emitiéndonos NC). El sistema filtra comparando `gDatGralOpe.gEmis.dRucEm` contra el RUC de la empresa: solo se importan las que efectivamente emitió la empresa. Las que no coinciden quedan reportadas en `omitidasDetalle` con motivo `NC omitida — emitida por RUC X, no por la empresa Y`.
- **NC con factura asociada en el ERP** → se vincula (`factura_cab_id`), modo de aplicación `ESTRICTO`, descuenta `total_notas_credito` y recalcula `saldo_disponible` de la factura.
- **NC sin factura asociada** (huérfana, típico al migrar NC anteriores a la fecha de corte) → **se importa igualmente** con `factura_cab_id = null` y modo `FLEXIBLE`. Queda con saldo libre disponible para aplicarse desde **Recibos Multi-Facturas** sobre cualquier factura del cliente. Si el cliente del XML existe en el ERP, se vincula automáticamente; si no, queda sin cliente y se puede asignar después.
- **NC sin CDC asociado en `gCamDEAsoc`**: se omite (motivo: `NC sin CDC asociado en gCamDEAsoc`).
- **Sin XML disponible** (`estadoXML = PENDIENTE_XML` o `xmlParsed` vacío): se cuenta en `sinXml`, no se importa hasta que el bot recupere el XML.

### Resultado de la importación

El panel muestra un Alert con el resumen:

- **Facturas**: `Importados: N de Total · M ya existían · K sin XML · X clientes creados automáticamente`.
- **NC**: `NC importadas: N de Total · M ya existía(n) · K sin XML disponible · L omitidas`. Si hay omisiones, se despliega un bloque amarillo con el detalle (CDC/número + motivo).

### Cron y captura automática

Para **ventas** no hay cron automático aún — es siempre captura manual. Para **compras** sí corre un cron cada 6 horas (ver guía de Compras). El panel muestra **Próxima captura** y **Próximo enrich** si están configurados.

### Cómo recuperar NC de venta faltantes (caso de uso típico)

Si una empresa tiene NC ya emitidas en SIFEN que no están en el ERP (por migración o por uso previo de otra plataforma):

1. **Facturación → Marangatu → Captura Manual** del período.
2. **Ver documentos** → cambiar a la sub-pestaña **Notas de Crédito**.
3. Marcar las NC que faltan (o dejar sin selección para importar todas las nuevas) → **Importar X NC al ERP**.
4. Si la factura origen también falta, importarla primero desde la sub-pestaña Facturas — así la NC queda vinculada en modo ESTRICTO y descuenta saldo automáticamente. Si la factura origen es anterior a la fecha de corte de migración y no se va a importar, la NC se guarda como huérfana (modo FLEXIBLE) y se aplica luego desde Recibos Multi-Facturas.

> Como alternativa para NC ya aplicadas fuera del sistema y que no se quieren reintroducir, usar **Cobranzas → Cuentas por Cobrar → pestaña Revisión CxC → Marcar NC como consumida** (deja saldo 0 sin recibo ni asiento contable).

Detalle técnico completo: `plan-marangatu-importacion.md`.

---

## Anulación vs Nota de Crédito — ¿cuál usar?

| Situación | Recomendado |
|-----------|-------------|
| Error administrativo (CI mal cargado, cliente equivocado, factura duplicada) | **Anular** |
| El cliente devuelve toda la mercadería poco después | **Anular** o **NC total** (según política y si SIFEN aún acepta cancelación) |
| Devolución parcial | **NC parcial** |
| Descuento o bonificación posterior | **NC** |
| Ajuste de precio que ya se cobró | **NC** (si baja el monto) o **ND** (si sube) |
| Factura ya cobrada hace varios días | Casi siempre **NC** (la anulación ya no es válida ante SIFEN) |

### ¿Qué reversa una anulación?

1. Estado de la factura → **Anulada**.
2. Stock devuelto al depósito (revierte `stock_deposito` y `movimientos_inventario`).
3. Cuenta por cobrar marcada como pagada con saldo 0.
4. Cuotas pendientes marcadas como pagadas con saldo 0.
5. Si había pagos asociados, se reversan los movimientos de caja.
6. Se emite evento **ECAN** a SIFEN.

La anulación no se puede revertir. Si se anuló por error, la opción es emitir una nueva factura.

---

## Validaciones que aplica el backend

Si el guardado falla, va a aparecer alguno de estos mensajes. Acá la lectura en lenguaje claro.

### Facturas

- "No se puede crear una factura sin items": agregar al menos un producto.
- "numeracion_id es obligatorio": elegir la numeración (timbrado).
- "Numeración no encontrada" / "La numeración está inactiva" / "Se alcanzó el número final de la numeración": el timbrado configurado ya no sirve. Crear o activar una numeración nueva desde **Configuración → Puntos de Venta → Sucursales y Cajas → sucursal → pestaña CAJAS → Punto de Expedición → botón "Numeraciones"**.
- "Cliente no encontrado": el cliente fue borrado o no pertenece a la empresa. Re-seleccionarlo.
- "Producto no encontrado": alguno de los ítems referencia un producto inexistente.
- "La factura debe tener tipo de cambio y un valor mayor a 0": cargar TC si la moneda no es PYG.
- "La factura debe tener condición de tipo de cambio si es Global o por ítem".
- "La factura debe tener al menos un pago": si no es crédito puro, agregar formas de pago.
- "Si la factura es crédito y tiene entrega inicial debe tener pagos".
- "Crédito insuficiente para este cliente": el cliente superó el límite. Pedir autorización o cobrar al contado.
- "Para cobro en ruta se requiere asignar un cobrador a la factura".
- "El banco emisor es obligatorio" / "El número de cheque es obligatorio" / "La tarjeta es obligatoria": faltan datos del medio de pago.
- "La forma de procesamiento de pago no existe": la forma de pago seleccionada fue desactivada.

### Notas de Crédito

- "No se puede crear una nota de crédito sin items".
- "numeracion_id es obligatorio".
- "El motivo de emisión no existe": elegir motivo del catálogo SET.
- "La nota de crédito ya existe" (duplicado de CDC).
- "No se encontraron notas de crédito pendientes para enviar" (al disparar lote SIFEN sin NC pendientes).

### Remisiones

- "La nota de remisión debe tener al menos un ítem".
- "Transportista / Chofer / Vehículo / Agente de transporte no encontrado": cargar primero el catálogo en Contactos.
- "La numeración está inactiva" / "La numeración ha alcanzado su límite".
- "La nota de remisión ya está anulada" (al intentar anular dos veces).

### Órdenes de Venta / Pedidos

- "Cliente no encontrado o no pertenece a su empresa".
- "El pedido no tiene items" / "La orden no tiene items".
- "Sin stock: <producto>": la sucursal exige verificar stock y un ítem no alcanza.
- "No se puede confirmar / cancelar / facturar en estado <X>": la transición de estado no está permitida.
- "El porcentaje debe estar entre 0 y 100": en facturación parcial por monto.
- "No es una orden de venta": se intentó tratar un pedido común como orden de venta.

---

## Qué afecta el stock y qué no

| Documento | ¿Mueve stock? | Cuándo |
|-----------|--------------|--------|
| Factura emitida | Sí, descuenta | Al guardar / aprobar |
| Factura anulada | Sí, revierte | Al anular |
| Nota de crédito | Sí, devuelve al depósito | Al confirmar |
| Remisión sin documento asociado | **Sí, descuenta** | Al crear (movimiento `SALIDA_REMISION`) |
| Remisión con factura electrónica asociada | No | La factura ya descontó |
| Factura desde remisión (POS "Facturar Remisiones") | No vuelve a descontar | La remisión ya movió el stock |
| Orden de venta | Solo **reserva** (no descuenta) | Si la sucursal exige reserva |
| Pedido | No | Es informal |
| Compra Marangatu confirmada | Sí, suma al stock | Al confirmar (solo ítems con `afecta_stock`) |

Ver detalle en `guia-inventario.md`.

---

## Listas de precios y POS

El precio que aparece al cargar un ítem depende de la **lista de precios** asignada al cliente, zona o canal. Si ninguna lista aplica, se usa el precio base del producto. Resumen de la lógica:

1. Se recorren las listas activas por **prioridad**.
2. La primera lista que contenga el producto gana.
3. Se calcula el precio final aplicando descuentos y recargos definidos en esa lista.
4. Si ninguna lo tiene → precio base del producto.

Más detalle: `configuracion-y-listas-de-precios.md` y `explicacion-funcionalidad-lista-precios.md`.

---

## Compra asistida (Bancard) — solo si está habilitado

Para los flujos donde el cliente paga online por anticipado (importaciones a pedido), existe el módulo de **Compra Asistida** que usa Bancard para cobrar y luego se factura al recibir la mercadería. Estados: borrador → cotizado → pago_recibido → en_compra_china → en_tránsito → en_aduana → entregado. Ver `plan-pruebas-bancard-compra-asistida.md`.

---

## Qué ve cada usuario (alcance por sucursal)

Un usuario **asignado a una o más sucursales** ve en estas solapas únicamente los documentos de esas sucursales. Uno **sin asignaciones** ve toda la empresa.

Los comprobantes fiscales — facturas, notas de crédito y remisiones — no guardan la sucursal: se atan a ella por el **punto de establecimiento**, los tres primeros dígitos del número (`003`-001-0000123). El filtro usa ese código.

Consecuencias en esta pantalla:

- La lista y los **KPI del encabezado miden lo mismo**. Si las filas son todas de una sucursal, el contador también.
- El KPI **«Facturas» cuenta sólo las válidas**: deja afuera anuladas y rechazadas. Por eso puede ser menor que la suma de los demás KPI, y eso es correcto.
- Antes de comparar números entre dos usuarios, verificar que ambos tengan **el mismo período** — la pantalla abre con un rango de fechas puesto.
- Si una sucursal no tiene cargado el punto de establecimiento, sus facturas no se le pueden atribuir a nadie y un usuario asignado sólo a ella no ve nada.

Las solapas de **Pedidos** y **Órdenes de Venta** se filtran distinto: esos documentos sí guardan la sucursal, así que el recorte es directo por ese campo.

Detalle completo en `guia-alcance-por-sucursal.md`.

---

## Problemas frecuentes

- **"No me deja editar la factura"**: ya fue aprobada por SIFEN. Anular y emitir una nueva, o aplicar una NC.
- **Factura queda en "Pendiente" mucho tiempo**: SIFEN no respondió o falló la conexión. Usar **Sincronizar estado SIFEN** o reenviar.
- **"Numeración alcanzó el límite"**: cargar nueva numeración / nuevo timbrado antes de seguir facturando (Configuración → Puntos de Venta → Sucursales y Cajas → sucursal → pestaña CAJAS → Punto de Expedición → botón "Numeraciones").
- **"Crédito insuficiente"**: revisar el límite del cliente en su ficha o pedir autorización a supervisor.
- **El producto facturado no descontó stock**: verificar que el producto tenga `maneja_inventario = true`. Productos de servicio no mueven stock.
- **Marangatu importó la compra pero no se ve en Facturas**: el estado es `importado`, es por diseño. Hay que **vincular productos** y **confirmar** desde Compras → Marangatu para que pase a estado activo.
- **"Producto genérico GEN0001 no encontrado"** al importar ventas/NC desde Marangatu: crear el producto con `cod_producto = GEN0001` en la empresa antes de reintentar.
- **NC de venta no aparecen al consultar Marangatu**: revisar que estén en la sub-pestaña **Notas de Crédito** (no Facturas) y que el RUC emisor del XML coincida con el de la empresa. NC emitidas por otros RUCs se omiten con motivo en `omitidasDetalle`.
- **NC no descuenta de la factura origen**: verificar el modo configurado. Si está en `FLEXIBLE`, la NC queda como saldo a favor del cliente y se aplica en el siguiente cobro.
- **Remisión emitida pero stock no se movió**: correcto solo si la remisión tiene **factura electrónica asociada** (la factura ya descontó). Si es una remisión **sin** documento asociado, sí debe descontar al crear — verificar que el producto tenga `maneja_inventario`. Ver `guia-nota-remision.md`.
- **Orden de venta no reserva stock**: revisar configuración de la sucursal (`orden_reserva_stock`).
- **"Un usuario no ve facturas que sí existen"**: está asignado a una sucursal y sólo ve las de ella. Si no ve **ninguna**, revisar que esa sucursal tenga cargado el punto de establecimiento. Ver `guia-alcance-por-sucursal.md`.
- **"A dos usuarios les dan números distintos"**: comparar primero el **período** de cada pantalla, y después las sucursales asignadas a cada uno.

---

## Lo que NO se puede hacer

- Editar una factura ya aprobada por SIFEN.
- Anular una NC ya aplicada a un cobro sin antes anular ese cobro.
- Eliminar una numeración usada. Solo se puede desactivar.
- Cargar dos formas de pago que no totalicen el monto de la factura (en contado).
- Vincular un ítem importado de Marangatu compras a un producto de otra empresa.
- Importar dos veces la misma factura desde Marangatu (idempotente por CDC).

---

## Limitaciones actuales

- **Notas de Débito**: la solapa está deshabilitada en la interfaz para todas las empresas ("próximamente"), no es un tema de módulo habilitado.
- La **facturación parcial de orden de venta** está completa en backend, pero la UI para "facturar parcial por monto" puede no estar en todas las versiones (Fase 4 de `plan-ordenes-venta.md`).
- La **anulación de cobro multi-factura** es total, no parcial (v1 de `plan-recibos-multifactura-retenciones.md`).
- Marangatu **ventas** no tiene cron automático aún — captura manual desde la solapa. Compras sí tiene cron cada 6 horas.
- Compra Asistida con **Bancard real** está pendiente; en demo se usa mock.

---

## Reportes de Ventas, Fiscal e Impuestos

Todos los reportes están en **Reportes** (menú lateral). Los relacionados con facturación se agrupan en tres bloques:

### Bloque "Ventas"

#### Resumen de Ventas

- **Ruta**: Reportes → Ventas → Resumen de Ventas.
- **Para qué sirve**: ver la facturación del período en una sola lista, con totales de IVA y desglose por estado.
- **Filtros**: rango de fechas (por defecto mes en curso), estado (Pendiente / Pagada / Anulada / Todos), búsqueda por número o cliente.
- **Columnas**: Fecha, Número, Cliente, RUC, Condición (Contado / Crédito), Moneda, Monto, IVA 10%, IVA 5%, Estado.
- **KPIs**: Total Ventas (por moneda), IVA total dividido en 10% y 5%, cantidad de facturas, anuladas.
- **Exportar**: CSV (`resumen_ventas_YYYY-MM-DD.csv`) hasta 10.000 filas con los filtros aplicados.
- **Lectura típica**: si la columna IVA 10% no cierra con lo declarado al SET, ahí se ve factura por factura cuál es la que está fuera.

#### Productos y Servicios

- **Ruta**: Reportes → Ventas → Productos y Servicios.
- **Para qué sirve**: ranking de qué se vendió más y cuánto deja cada producto.
- **Filtros**: rango de fechas, categoría, moneda, "Top N" (10/25/50/100).
- **Columnas**: ranking, producto + código, categoría, cantidad, ingresos netos, descuentos, IVA, precio promedio, **margen %**, participación.
- **Colores de margen**: verde si ≥30%, amarillo si ≥15%, rojo si <15%.
- **Extras**: pie chart de ventas por categoría y KPIs (Ingresos Netos, Unidades, IVA, Descuentos, Productos únicos).
- **Exportar**: CSV con el ranking + resumen por categoría.
- **Lectura típica**: encontrar productos con mucho movimiento pero margen rojo (señal de precio mal cargado o costo subiendo).

#### Rentabilidad

- **Ruta**: Reportes → Ventas → Rentabilidad.
- **Para qué sirve**: comparar ingresos contra costos para ver utilidad real, no solo facturación.
- **Tres solapas**: Por Producto, Por Cliente, Por Sucursal.
- **Filtros comunes**: rango fechas, sucursal, depósito, producto (autocompletar), cliente (autocompletar).
- **Columnas (varían por solapa)**: ranking, descripción, cantidad, **Ingresos**, **Costo**, **Utilidad**, **Margen %**, facturas.
- **Margen %**: verde si ≥25%, amarillo si ≥10%, rojo si <10%.
- **Exportar**: Excel `.xlsx` con el nombre de la solapa.
- **Importante**: el costo se toma del costo del producto al momento de la venta (FIFO según `guia-inventario.md`). Si un producto no tiene costo bien cargado, la utilidad va a salir distorsionada.

### Bloque "Fiscal e Impuestos"

Estos tres reportes son los que se usan para preparar la declaración mensual de IVA (Formulario 120 de la SET).

> **Los tres exigen acceso a toda la empresa.** No se recortan por sucursal: se **bloquean**. Un usuario asignado a una sucursal que intente abrirlos recibe *«... abarca toda la empresa y no se puede recortar por sucursal sin dar un libro incompleto»*. Es a propósito — un libro fiscal recortado haría declarar de menos. O se ve entero, o no se ve.

#### Libro IVA Ventas

- **Ruta**: Reportes → Fiscal e Impuestos → Libro IVA Ventas.
- **Para qué sirve**: detalle de todas las facturas y notas de crédito emitidas en el mes, con su IVA Débito. Es la base para declarar al SET.
- **Filtros**: mes, año, moneda (o "Todas").
- **Columnas**: Tipo (Factura / Nota de Crédito), Fecha, Número, Timbrado, CDC, Cliente, RUC, Condición, Gravada 10%, Gravada 5%, Exentas, IVA 10%, IVA 5%, Total.
- **Resumen**:
  - Tarjeta principal: **IVA Débito Fiscal** (10%, 5% y total).
  - Tres bloques: Facturas (suma), Notas de Crédito (resta), Totales Netos (lo declarable).
- **Cálculo**: `IVA Débito Neto = Facturas − Notas de Crédito + Notas de Débito`. Ese número se traslada al Formulario 120.
- **Exportar**: CSV con `;` y BOM UTF-8 (`libro_iva_ventas_YYYY_MM.csv`), abre directo en Excel.
- **Lectura típica**: cuadrar el "IVA Débito Total" con el campo IVA por Pagar en Contabilidad antes de presentar.

#### Libro IVA Compras

- **Ruta**: Reportes → Fiscal e Impuestos → Libro IVA Compras.
- **Para qué sirve**: detalle de todas las compras del mes que generan **IVA Crédito** (lo que se puede descontar del IVA a pagar).
- **Filtros**: mes, año, moneda.
- **Columnas**: Fecha, Número, Timbrado, Proveedor, RUC, Condición, Gravada 10%, Gravada 5%, Exentas, IVA 10%, IVA 5%, Total.
- **Resumen**: tarjeta verde con **IVA Crédito Fiscal** (10%, 5%, total) + bloques de "Compras del período" y "IVA Crédito Deducible".
- **Requisito**: solo cuentan compras con timbrado vigente a la fecha de la factura.
- **Exportar**: CSV `libro_iva_compras_YYYY_MM.csv`.
- **Lectura típica**: si un proveedor cargó una compra con timbrado vencido, el IVA Crédito de esa fila no debería usarse para descontar.

#### Liquidación de IVA

- **Ruta**: Reportes → Fiscal e Impuestos → Liquidación de IVA.
- **Para qué sirve**: cierra el cálculo del mes — cuánto se debe pagar al SET o cuánto queda a favor.
- **Filtros**: mes, año, moneda.
- **Resultado principal** (tarjeta grande con uno de tres estados):
  - **A PAGAR** (rojo): IVA Débito > IVA Crédito.
  - **A FAVOR** (verde): IVA Crédito > IVA Débito (saldo se arrastra al período siguiente).
  - **COMPENSADO** (gris): empatado.
- **Bloques de detalle**:
  1. IVA Débito Fiscal (ventas): cantidad de facturas, bases, IVA 10% y 5%.
  2. IVA Crédito Fiscal (compras): cantidad de compras, bases, IVA 10% y 5%.
  3. IVA Retenido al Vender (si hay): retenciones que los clientes nos hicieron, indicando si ya están declaradas o pendientes.
- **Tabla de liquidación**: muestra Débito, Crédito y Saldo por cada renglón (10%, 5%, totales, retenciones, **SALDO TOTAL IVA**).
- **Fórmula resumida**: `SALDO = IVA Débito − IVA Crédito − Retenciones IVA recibidas`.
- **Exportar**: no tiene botón propio. Se imprime desde el navegador o se exporta a PDF del browser. El detalle por factura/compra se exporta desde los dos reportes anteriores.
- **Importante**: el Saldo IVA debería coincidir con la cuenta "IVA por Pagar" del Balance de Comprobación (módulo Contabilidad). Si no coincide, hay algún asiento manual o un documento sin registrar.

### Flujo recomendado para el cierre mensual de IVA

1. Revisar **Libro IVA Ventas** — verificar que estén todas las facturas y NC del mes con CDC.
2. Revisar **Libro IVA Compras** — confirmar que los timbrados estén vigentes en cada compra.
3. Abrir **Liquidación de IVA** y validar el saldo resultante.
4. Cruzar el saldo con la cuenta "IVA por Pagar" del **Balance de Comprobación** (Reportes → Contabilidad Financiera).
5. Declarar Formulario 120 en el portal SET con esos totales.

---

## Documentos relacionados

- `guia-alcance-por-sucursal.md` — qué facturas ve cada usuario según sus asignaciones.
- `guia-apertura-cierre-caja.md` — cómo se relacionan facturas y cobros con la caja activa.
- `guia-inventario.md` — qué movimientos afectan stock y cómo se calcula el costo.
- `guia-solicitud-credito.md` — créditos a clientes para condición de pago a cuotas.
- `configuracion-y-listas-de-precios.md` — cómo se determina el precio al facturar.
- `plan-nota-remision.md`, `plan-ordenes-venta.md`, `plan-marangatu-importacion.md`, `plan-recibos-multifactura-retenciones.md`, `plan-pruebas-bancard-compra-asistida.md` — diseño y decisiones técnicas de cada módulo.
