# Factura global (CFDI 4.0)

## Paso a paso

Las tareas más comunes, resumidas. El detalle de cada una está en las secciones numeradas.

### Preparar la facturación (una sola vez)

1. En el menú lateral abre **⚙️ Configuración → Datos fiscales**.
2. Captura **RFC del Emisor**, **Razón Social**, **Régimen Fiscal** y **Código Postal**, y pulsa **💾 Guardar Datos Fiscales**.
3. Abre **⚙️ Configuración → Certificado de Sello Digital (CSD)**.
4. Sube el **.cer** y el **.key**, escribe la contraseña de la llave y pulsa **📤 Guardar CSD**.

Ver sección 3.

### Timbrar la factura global del mes

1. Abre **🧾 Facturación → Factura global del mes**.
2. Elige el **Año** y el **Mes** y pulsa **🔍 Vista Previa**.
3. Revisa las ventas y los totales.
4. Pulsa **🧾 Generar y Timbrar**, confirma y escribe tu PIN de administrador.

Ver sección 5.

### Cancelar una factura

1. Abre **🧾 Facturación → Facturas generadas**.
2. Pulsa **🚫** en la factura timbrada.
3. Elige el motivo del SAT y confirma con tu PIN.

Ver sección 7.

## 1. ¿Qué es la Facturación Electrónica aquí?

Este módulo genera la **factura global mensual** del negocio: un solo CFDI 4.0 (Comprobante Fiscal Digital por Internet) que agrupa todas las ventas de mostrador de un mes, dirigido al **RFC genérico de público en general** (`XAXX010101000`, receptor "PÚBLICO EN GENERAL"). Es el mecanismo que usa el SAT para que un negocio declare sus ventas del día a día sin tener que facturar una por una a cada cliente que no pidió factura individual.

**Esto no reemplaza una factura a petición de un cliente específico** — hoy el sistema solo cubre la factura global mensual. Si un cliente pide su propia factura con su RFC, eso queda fuera de este módulo por ahora.

### 1.1 El RFC genérico es solo el receptor, nunca el emisor

Aunque la factura se dirige al RFC genérico, **el negocio (emisor) siempre necesita su propio RFC real y su propio Certificado de Sello Digital (CSD)** emitidos por el SAT — eso no lo evita el RFC genérico, es un requisito legal para poder timbrar cualquier CFDI. Ver sección 3.

## 2. Quién puede usarlo

La pantalla **"Facturación"** y la sección **"Datos Fiscales"** de Configuración son **exclusivas de administrador** (no aparecen en la navegación de un vendedor). Todas las rutas del backend están protegidas: generar una factura y cancelarla, además, exigen **reconfirmar con el PIN del administrador**, igual que restaurar un respaldo, porque timbrar es una acción que no se puede deshacer (solo cancelar) y afecta obligaciones fiscales reales.

## 3. Antes de timbrar: configurar los Datos Fiscales y el CSD

Desde el menú lateral, **⚙️ Configuración → Datos fiscales**, se capturan los datos del emisor:

| Campo | Obligatorio | Para qué sirve |
|---|---|---|
| **RFC del Emisor** | Sí | El RFC real del negocio ante el SAT (no el genérico — ese se usa solo como receptor). |
| **Razón Social** | Sí | Nombre fiscal completo del negocio. |
| **Régimen Fiscal** | Sí | Selecciona entre 612 (Persona Física con Actividades Empresariales y Profesionales), 621 (Incorporación Fiscal) o 626 (RESICO) — el que corresponda a la situación real del negocio ante el SAT. |
| **Código Postal** | Sí | Lugar de expedición del comprobante. |

Clic en **💾 Guardar Datos Fiscales** para guardarlos.

### 3.1 Certificado de Sello Digital (CSD)

Debajo, en la tarjeta **"Certificado de Sello Digital (CSD)"**, se sube el certificado con el que el SAT permite sellar los comprobantes del negocio:

1. **Certificado (.cer)** — el archivo público del CSD.
2. **Llave privada (.key)** — el archivo de la llave privada del CSD.
3. **Contraseña de la llave** — la contraseña con la que el SAT protegió esa llave privada.
4. Clic en **📤 Guardar CSD**.

El sistema valida que el `.cer` y el `.key` correspondan al mismo certificado antes de guardarlos; si no coinciden o la contraseña es incorrecta, rechaza la subida con un mensaje claro.

**Qué se guarda y cómo:**

- El `.key` y la contraseña se **cifran** antes de guardarse (nunca en texto plano) y **nunca se muestran de vuelta** por ningún lado del sistema, ni siquiera a un administrador — solo se usan internamente en el momento de timbrar.
- Una vez subido, la tarjeta muestra **"✅ CSD configurado"** con el número de certificado y su fecha de vigencia (para que puedas anticipar cuándo caduca y renovarlo ante el SAT). Si no hay CSD, muestra **"⚠️ CSD no configurado"** en rojo.
- Un administrador puede **🗑️ Eliminar CSD** en cualquier momento (pide confirmación y PIN, porque deja al sistema sin poder timbrar hasta subir uno nuevo).

**Mientras no haya RFC/razón social/régimen/código postal completos, ni un CSD válido cargado, el sistema bloquea el timbrado** con un mensaje explicando qué falta — no se puede generar una factura "a medias".

## 4. Llegar a la pantalla de Facturación

En el menú lateral abre el grupo **🧾 Facturación** (solo visible para administradores). Tiene dos opciones: **Factura global del mes** (generar y timbrar) y **Facturas generadas** (historial, descargas y cancelación).

Si el sistema está en **modo de pruebas** (sin un PAC real conectado — ver sección 8), verás un aviso amarillo permanente en la parte superior: *"El sistema está en modo de pruebas (PAC mock): las facturas generadas no son válidas ante el SAT."*

## 5. Generar la factura global de un mes

1. En **"Generar Factura Global del Mes"**, elige el **Año** y el **Mes** que quieres facturar (por defecto viene el mes actual).
2. Clic en **🔍 Vista Previa**. El sistema calcula, sin generar nada todavía:
   - La lista de **ventas del periodo que aún no se han facturado** (folio de venta, fecha, método de pago, total). Una venta ya incluida en una factura anterior de ese mes no vuelve a aparecer aquí.
   - **Subtotal**, **IVA 16%** y **Total** del periodo.
   - Avisos si falta completar los datos fiscales o el CSD, o si no hay ventas pendientes de facturar en ese mes.
3. Si todo está en orden, el botón **🧾 Generar y Timbrar** se habilita. Al hacer clic:
   - Se pide confirmar la acción (es irreversible: una vez timbrada, una factura solo se puede **cancelar**, no editar).
   - Se pide el **PIN del administrador**.
   - El sistema genera el CFDI, lo envía a timbrar y, si todo sale bien, la factura queda con estado **"✅ Timbrada"** y un **UUID fiscal** (folio fiscal asignado).

### 5.1 Qué ventas entran en la factura global

- Se incluyen **todas las ventas de mostrador del mes** (Efectivo, Tarjeta, Transferencia) y también las **ventas a Crédito (El Fiado)**, contadas por **la fecha en que se hizo la venta**, sin importar si el cliente ya la pagó o sigue debiéndola.
- Una venta que ya quedó incluida en una factura global (de ese u otro intento) **nunca se vuelve a incluir** en una factura posterior — así no se duplica ni se pierde ninguna venta entre corridas.
- Las **devoluciones** del periodo no se descuentan automáticamente del total de la factura global en esta versión; si hubo devoluciones importantes en el mes, revísalas antes de timbrar (Reportes → Devoluciones) para decidir si conviene ajustar o esperar.

## 6. Facturas Generadas (historial)

La tabla inferior de la pantalla lista todas las facturas globales generadas, con:

- **Folio** (ej. `FG-000001`).
- **Periodo** facturado (mes/año).
- **Total**.
- **Estado**: 📝 Borrador, ✅ Timbrada, 🚫 Cancelada o ⚠️ Error.
- **UUID Fiscal**.
- **Acciones**: descargar el **XML** timbrado (📄) y, si sigue timbrada, **cancelarla** (🚫).

Una factura que quedó en estado **"⚠️ Error"** (el PAC rechazó el timbrado) no consume las ventas del periodo: esas ventas siguen disponibles para intentarlo de nuevo.

## 7. Cancelar una factura

1. En la tabla de facturas, clic en **🚫** sobre una factura **timbrada**.
2. Elige el **motivo de cancelación** (catálogo del SAT):
   - **01** — Comprobante emitido con errores, con relación (requiere indicar el **folio de la factura que la sustituye**).
   - **02** — Comprobante emitido con errores, sin relación.
   - **03** — No se llevó a cabo la operación.
   - **04** — Operación nominativa relacionada en una factura global.
3. Confirma con tu **PIN de administrador**.

Al cancelarse, la factura pasa a estado **"🚫 Cancelada"** y **todas las ventas que agrupaba vuelven a estar disponibles** para incluirse en una futura factura global del mismo periodo (aparecerán de nuevo en "Vista Previa").

## 8. Modo de pruebas (PAC mock)

El sistema se instala por defecto con un **proveedor de timbrado de pruebas (mock)**: genera folios y XML de forma local, sin conectarse a ningún servicio externo, para poder probar todo el flujo (folios, historial, cancelaciones) sin necesitar todavía un contrato con un PAC real. **Las facturas generadas en este modo no son válidas ante el SAT** — el sistema lo advierte con un banner amarillo permanente en la pantalla de Facturación y en la consola del servidor al arrancar.

Para timbrar facturas reales hace falta:

1. Contratar un **PAC** (Proveedor Autorizado de Certificación) real.
2. Conectar su servicio en el sistema (esto lo hace el equipo de Anaquelia; hoy el timbrado real todavía no está conectado).
3. Tener el **RFC real y el CSD vigente** del negocio cargados (sección 3).

## 9. Preguntas frecuentes

**¿Puedo generar la factura de un mes que ya facturé antes?**
Sí. La "Vista Previa" solo te mostrará las ventas de ese mes que **todavía no se hayan facturado** — si ya no queda ninguna, el sistema lo indica y no te deja timbrar una factura vacía.

**¿Qué pasa si me equivoco y ya timbré una factura?**
No se puede editar una factura timbrada. Debes **cancelarla** (sección 7) con el motivo correspondiente; sus ventas quedan libres de nuevo para volver a facturarlas correctamente.

**¿Un cajero puede generar o cancelar una factura?**
No. Facturación es exclusiva de administrador, y además pide el PIN del administrador en cada acción irreversible (generar/timbrar, cancelar).

**¿Puedo usar el RFC genérico para el negocio (emisor)?**
No. El RFC genérico (`XAXX010101000`) solo se usa como **receptor** de la factura global. El emisor siempre debe capturar su propio RFC real y su propio CSD vigente del SAT.

**¿Qué le pasa a mi CSD si restauro un respaldo o cambio de computadora?**
El `.cer` y el `.key`/contraseña cifrados viajan dentro de la base de datos (`db.sqlite`), así que un respaldo normal sí los incluye. Pero la **clave con la que se cifran** vive en un archivo aparte en la carpeta `data/` de esa instalación — si mueves la base de datos a otra máquina sin copiar también esa carpeta completa, tendrás que volver a subir el CSD (el `.cer` no es sensible, pero el `.key`/contraseña sí quedarían ilegibles).

**¿Por qué no se descuentan las devoluciones del total de la factura global?**
Por ahora esta versión no lo hace automáticamente; revisa las devoluciones del mes en Reportes antes de timbrar si hubo alguna relevante.
