# Compras y cuentas por pagar

## Paso a paso

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

### Registrar una compra con factura XML

1. En el menú lateral abre **📥 Compras → Nueva compra**.
2. Pulsa **Elegir archivo XML** y selecciona el `.xml` de la factura.
3. Revisa que cada renglón tenga **producto** asignado (usa **Buscar producto** en los que digan "⚠️ Sin asignar") y que el **Factor** (piezas por caja) sea correcto.
4. Revisa la **Condición de pago** (Contado o Crédito) y, si es de contado, con qué la pagaste.
5. Pulsa **✅ Confirmar compra** y luego **Sí, confirmar compra**.

Ver secciones 4, 6 y 9.

### Registrar una nota o remisión sin XML

1. En **Nueva compra**, pulsa **Nueva captura manual**, o sube una foto o PDF de la nota en **📷 PDF / foto con IA**.
2. Elige el **Proveedor** y llena los renglones: **Cantidad**, **Factor**, **P. unit.**, **Desc.** e **Imp.**
3. Asigna el producto de cada renglón.
4. Pulsa **✅ Confirmar compra**. Si la leyó la IA, compara antes cada renglón con la nota original.

Ver secciones 4.1, 5 y 5.3.

### Pagarle a un proveedor

1. Abre **📥 Compras → Por pagar**.
2. Pulsa **Pagar** en la compra que vas a liquidar.
3. Revisa el **Monto** (para un pago parcial, escribe uno menor) y elige el **Método**. Si es efectivo de la caja, elige el **Turno de caja**.
4. Pulsa **Registrar pago**.

Ver sección 11.1.

### Cancelar una compra mal registrada

1. Abre **📥 Compras → Compras registradas** y pulsa **Ver** en la compra.
2. Pulsa **Cancelar compra**, escribe el **Motivo** y confirma con tu PIN.

Ver sección 10.1.

## 1. ¿Qué es Compras y Cuentas por Pagar?

Es el módulo para **registrar la mercancía que te llega del proveedor** y **llevar la cuenta de lo que le debes**. Cuando llega el repartidor con las cajas y su factura (o su nota, o su remisión), aquí capturas ese documento, revisas que todo esté bien y lo **confirmas**: la mercancía entra al inventario con su **costo real** (con impuestos incluidos) y, si no la pagaste en el momento, queda anotado cuánto debes y cuándo vence.

**Lo que antes se hacía a mano:** meter producto por producto con "Agregar inventario" (ver el [manual de Inventario](./inventario.md#7-agregar-nuevo-inventario-entrada-de-mercancía)), calcular a mano cuánto te salió cada pieza cuando el proveedor factura por caja, y apuntar en una libreta o en la memoria quién te fía y cuánto debes. Con Compras todo eso queda en un solo lugar.

**¿Qué son las cuentas por pagar?** Es lo mismo que [El Fiado](./el-fiado.md) pero al revés. En El Fiado **tus clientes te deben a ti**; en Cuentas por Pagar **tú le debes a tus proveedores**. Cada compra a crédito es un "cargo" (debes más), cada pago que haces es un "abono" (debes menos), y el sistema te muestra el saldo de cada proveedor, qué ya venció y qué vence esta semana.

**Quién puede usarlo:** Compras es de **administrador únicamente** (`requireAdmin`). Un cajero no ve el menú ni la tarjeta de Inicio.

## 2. Llegar al módulo

En el menú lateral abre **📥 Compras**. Se despliega con cuatro opciones:

| Opción del menú | Para qué sirve |
|---|---|
| **Nueva compra** | Capturar una compra (subir el XML, a mano o con una foto/PDF leído con IA), revisarla y confirmarla. Aquí también están los borradores pendientes. |
| **Compras registradas** | La lista de todas las compras con sus filtros, el detalle de cada una, pagar y cancelar. |
| **Por pagar** | Cuentas por pagar: cuánto debes en total, cuánto está vencido y el saldo de cada proveedor. |
| **Pagos a proveedores** | El historial de todos los pagos que has hecho. |

Junto a **Por pagar** aparece un globo rojo con el número de compras **vencidas** sin pagar (ver la sección 11). Arriba de la pantalla hay un botón **← Volver al Inicio**.

> Antes de empezar, registra al proveedor en [Proveedores](./proveedores.md). Si vas a subir facturas XML, captura su **RFC**; y si te da crédito, sus **días de crédito**.

## 3. Nueva compra: tres formas de empezar

Al abrir **Nueva compra** ves tres tarjetas:

- **📄 Subir XML** — "Factura electrónica (CFDI) de tu proveedor. Lee renglones, impuestos y UUID automáticamente." Botón **Elegir archivo XML**.
- **✍️ Capturar a mano** — "Para remisiones, notas o facturas sin XML. Tú escribes los renglones." Botón **Nueva captura manual**.
- **📷 PDF / foto con IA** — "Sube la foto o el PDF de la nota y la IA llena los renglones. Siempre queda como borrador: tú lo revisas antes de confirmar." Botones **Elegir PDF o imagen** y **Tomar foto**; necesita una clave de API configurada (ver la sección 4.1).

Cualquiera de las tres te lleva al **editor del borrador**. Un borrador **no modifica el inventario** hasta que lo confirmas (el editor lo recuerda: "No modifica el inventario hasta que confirmes").

Si tienes borradores guardados, abajo aparece la tabla **Borradores pendientes** (Folio, Proveedor, Documento, Total) con un botón **Continuar** para retomar cada uno.

## 4. Subir el XML de una factura (CFDI)

1. Pídele a tu proveedor el archivo **.xml** de su factura (no el PDF). Suele llegarte por correo junto con el PDF.
2. Clic en **Elegir archivo XML** y selecciona el archivo.
3. Si se lee bien, aparece el aviso **"XML leído: revisa los renglones y confirma"** y se abre el editor con todo ya llenado.

**Qué lee el sistema del XML:** el proveedor (por su RFC y nombre), serie, folio, UUID (el folio fiscal), fecha de la factura, y por cada renglón: clave del proveedor, descripción, unidad, cantidad, valor unitario, importe, descuento e **impuestos** (IVA y IEPS que vienen trasladados en cada renglón). También lee los totales del documento. Acepta facturas **CFDI 4.0 y 3.3 de tipo Ingreso**.

- **Condición de pago:** si la factura dice método de pago **PPD** (pago en parcialidades o diferido), la compra se llena como **Crédito**; con cualquier otro método se llena como **Contado**. Puedes cambiarla antes de confirmar.
- **Factor sugerido:** si la unidad o la descripción dicen algo como "CAJA 24", "C/12" o "CAJA DE 6", el sistema sugiere ese número como factor (piezas por caja). Es solo una **sugerencia**: revísala siempre. Si no encuentra nada, deja 1.
- Las retenciones de impuestos **no** se consideran parte del costo.

**Lo que el sistema rechaza** (aparece un mensaje rojo y no se crea nada):

| Situación | Qué ocurre |
|---|---|
| El archivo no es un XML válido, está vacío, o no es un CFDI. | "El archivo no es un XML válido" / "El XML no es un CFDI (no contiene un Comprobante)". |
| Versión distinta de 4.0 o 3.3. | "Versión de CFDI no soportada… Se aceptan 4.0 y 3.3". |
| **Notas de crédito, complementos de pago, traslados o nómina** (cualquier CFDI que no sea de tipo Ingreso). | "Este XML es de tipo … Por ahora solo se pueden cargar facturas de Ingreso (I)". |
| No trae el RFC del emisor, o no trae conceptos. | "El CFDI no trae el RFC del emisor" / "El CFDI no trae conceptos". |
| **El mismo XML ya cargado** (mismo UUID) en una compra que sigue como borrador o ya fue recibida. | Aviso amarillo: "Este CFDI ya está registrado en la compra CMP-xxxx". |

Si descartas o cancelas esa compra, el UUID queda libre y el XML se puede volver a cargar.

**Avisos que no bloquean** (salen en amarillo arriba del editor con ⚠️):

- El XML está a nombre de **otro RFC** distinto al RFC de tu negocio (el que capturaste en Configuración → Datos fiscales).
- El XML **no trae UUID** (timbre fiscal): en ese caso no se podrá detectar si lo cargas dos veces.
- Trae **retenciones**: no se suman al costo y la suma de renglones puede no cuadrar con el total.
- La suma de los renglones **no cuadra** con el total del CFDI (ver la sección 7).

**Si el proveedor del XML no está registrado:** el borrador se crea sin proveedor y aparece un recuadro: "El proveedor del XML *nombre* (RFC *…*) no está registrado" con el botón **Crear proveedor con estos datos**. Al pulsarlo se crea el proveedor con el nombre y RFC del XML, se guarda el borrador y aparece "Proveedor creado. Puedes ajustar sus días de crédito en Proveedores." Si el RFC del XML sí coincide con un proveedor registrado, el sistema lo selecciona solo.

**En una compra de XML** no se pueden cambiar el tipo de documento, serie, folio, fecha ni los importes (vienen del documento, y por eso esas casillas aparecen bloqueadas); tampoco hay botón para agregar renglones. Sí puedes cambiar el proveedor, la condición de pago, el factor, el producto emparejado y la caducidad de cada renglón.

## 4.1 PDF o foto con IA

Para las notas y remisiones de papel (o PDF) que **no traen XML**. La IA de Anthropic (Claude) lee el documento y llena el borrador: proveedor, tipo de documento, serie y folio, fecha, condición de pago y los renglones (descripción, clave, unidad, cantidad, precio, descuento, impuestos e importe).

**Antes de usarla (una sola vez):** necesitas una **clave de API de Anthropic**. Ve a **Configuración → Compras con IA**, pega la clave y pulsa **Guardar clave** (te pide tu PIN de administrador). Puedes pulsar **🔌 Probar conexión** para comprobar que funciona. Mientras no haya clave, la tarjeta de Nueva compra lo dice ("Falta la clave de la IA…") con un enlace a esa sección y los botones quedan desactivados. Más detalle en el [manual de Configuración](./configuracion.md).

**Cómo usarla:**

1. En **Nueva compra**, en la tarjeta **📷 PDF / foto con IA**, pulsa **Elegir PDF o imagen** (archivo del equipo) o **Tomar foto** (en un celular o tablet abre la cámara).
2. Se aceptan **PDF, JPG, PNG y WEBP**. Un PDF puede pesar hasta **8 MB**; las fotos grandes se **reducen solas** en tu navegador (lado máximo de 2000 px) antes de enviarse, y una imagen no puede pasar de 5 MB.
3. Verás "⏳ Leyendo con IA… puede tardar hasta un minuto". Al terminar se abre el **editor del borrador**, igual que con XML o captura manual.

**Siempre queda como borrador.** La IA **nunca confirma una compra**: no toca el inventario ni crea deuda hasta que tú revises y pulses **Confirmar compra**. Como la IA puede equivocarse (sobre todo con letra a mano, fotos borrosas o tachaduras), arriba del editor aparece el aviso "🤖 Leída con IA… compara cada renglón con el documento original antes de confirmar".

**Cómo marca lo dudoso:**

- Los renglones de **baja confianza** (la IA no está segura de haberlos leído bien) salen con fondo amarillo y un aviso bajo su estado, por ejemplo "Renglón 2: confianza baja (40%); la cantidad está tachada".
- También se marcan los renglones donde **el importe no cuadra con cantidad × precio**, o donde no se pudo leer la cantidad o el precio.
- Arriba hay un aviso con cuántos renglones quedaron dudosos y, si **la suma de los renglones no cuadra con el total** del documento (por más de $1), la diferencia. Es la señal más útil de que falta o sobra un renglón.
- Si el documento solo trae el IVA o IEPS **al pie** y no por renglón, el sistema los **reparte** entre los renglones en proporción a su importe para que el costo por pieza incluya impuestos, y te lo avisa.
- Si no se pudo leer el RFC (o no tiene formato válido), la fecha o el proveedor, también hay un aviso. Si el proveedor del documento no está registrado, sale el botón **Crear proveedor con estos datos**, igual que con XML.

**El emparejamiento con tus productos es el mismo que con XML** (ver la sección 6): primero las equivalencias guardadas del proveedor, luego el código de barras si la clave leída coincide con uno, y si no, queda "⚠️ Sin asignar". El proveedor se busca por **RFC**; sin RFC legible tendrás que elegirlo.

**Como en la captura manual, puedes corregir todo:** descripción, clave, cantidad, precio, descuento, impuestos, factor y producto. Los avisos de cada renglón se quedan guardados con el borrador aunque lo cierres y lo retomes.

**Privacidad:** el documento **se envía a Anthropic** por internet para leerlo. **No se guarda en tu base de datos ni en los respaldos**: solo quedan los datos que la IA leyó, el nombre del archivo y los avisos. Por eso, conserva tu nota o PDF original por si necesitas revisarlo después. La clave tampoco viaja en los respaldos.

**Sin internet:** si no hay conexión o el servicio tarda demasiado, aparece "No hay conexión con el servicio de IA. Revisa tu internet o captura la nota a mano". No se crea ningún borrador; usa la captura manual o el XML. Otros mensajes posibles: "El servicio de IA está saturado o llegaste al límite de uso" (espera un minuto y reintenta), "La clave de la IA no fue aceptada" (revísala en Configuración) y "No se encontró una nota o factura de compra en el archivo" (prueba con una foto más clara).

**Costo:** cada lectura usa tu cuenta de Anthropic; para una nota de una o dos páginas suele costar unos cuantos centavos de dólar (menos de un par de pesos); el precio exacto lo fija Anthropic.

## 5. Capturar una compra a mano

1. Clic en **Nueva captura manual**. Se abre el editor con un renglón vacío.
2. Llena el encabezado (sección 5.1) y los renglones (sección 5.2).
3. Usa **➕ Agregar renglón** para más productos y **✕** para quitar uno (la compra necesita al menos un renglón: "La compra necesita al menos un renglón").

### 5.1 Encabezado

| Campo | Qué poner |
|---|---|
| **Proveedor** * | Elígelo de la lista (se muestra con su RFC si lo tiene). Es obligatorio para confirmar. Para una captura manual también es obligatorio al guardar el borrador ("Elige el proveedor de la compra"). |
| **Documento** | Factura, Remisión o Nota. En captura manual empieza en "Remisión". |
| **Serie** y **Folio** | Los que trae el documento del proveedor (opcionales). |
| **Fecha del documento** | La fecha de la nota o factura. Empieza en el día de hoy. |
| **Condición de pago** | **Contado** (la pagas en este momento) o **Crédito** (la debes). |
| **Vence (opcional)** | Solo aparece con Crédito. Si lo dejas vacío, el sistema usa la **fecha del documento + los días de crédito del proveedor**. |
| **Pago de contado con** | Solo aparece con Contado. Ver la sección 8. |
| **Turno de caja** | Solo aparece si el pago es "Efectivo de la caja". Ver la sección 8. |
| **Referencia del pago** | Solo con Contado. Opcional: folio de transferencia, número de cheque, etc. |
| **Notas** | Texto libre. |

### 5.2 Renglones: qué va en cada casilla

Cada renglón tiene estas columnas: **Estado**, **Del proveedor**, **Cantidad**, **Factor** (pzas/unidad), **Piezas**, **Importe**, **Costo por pieza**, **Producto** y **Caducidad**.

- **Del proveedor** — la **descripción** como la escribe el proveedor y, opcional, su **clave** (la clave del proveedor sirve para que el sistema recuerde el producto la próxima vez; ver la sección 6).
- **Cantidad** — cuántas **unidades del proveedor** compraste (cajas, paquetes, bultos…), no piezas. Si el proveedor te cobró por pieza, es el número de piezas.
- **Factor** (pzas/unidad) — **cuántas piezas trae cada unidad del proveedor.** Una caja de 12 refrescos: factor **12**. Si compras por pieza: factor **1**. Admite decimales (útil para productos a granel: bulto de 25 kg → factor 25).
- **Piezas** — se calcula solo: **Cantidad × Factor**. Es lo que entra al inventario.
- **Importe** (en captura manual son tres casillas):
  - **P. unit.** — el precio de **una unidad del proveedor** (de una caja, no de una pieza), **sin** impuestos, en pesos.
  - **Desc.** — el descuento **total del renglón**, en pesos (no porcentaje). Si no hay, deja 0.
  - **Imp.** — los impuestos **total del renglón**, en pesos (IVA, IEPS…). Si el producto no lleva impuestos o tu proveedor te da el precio ya con impuestos, deja 0.
  - Debajo ves el **Total** del renglón: `(Cantidad × P. unit.) − Desc. + Imp.`
- **Costo por pieza** — se calcula solo: **Total del renglón ÷ Piezas**. Es el costo con el que queda el lote en el inventario (ver la sección 7).
- **Producto** — el producto del inventario al que corresponde el renglón (sección 6).
- **Caducidad** — fecha de caducidad de **ese lote**, si aplica (opcional).

**Validaciones al guardar:** la cantidad debe ser mayor a 0; el factor debe ser mayor a 0; el precio, descuento e impuestos no pueden ser negativos; el descuento no puede ser mayor al importe; la caducidad debe ser una fecha válida.

### 5.3 Ejemplo paso a paso (captura manual)

Llega el repartidor con una **nota** del proveedor "Refrescos del Centro": **2 cajas** de refresco de cola de 600 ml. Cada caja trae **12 piezas** y cuesta **$180** la caja. No hay descuento ni desglose de impuestos.

1. Menú **Compras → Nueva compra → Nueva captura manual**.
2. Proveedor: *Refrescos del Centro*. Documento: *Nota*. Fecha: la de la nota. Condición: *Contado*. Pago con: *Transferencia*.
3. En el renglón:
   - Del proveedor: `Refresco cola 600 ml`
   - Cantidad: `2`
   - Factor: `12`
   - P. unit.: `180`  ·  Desc.: `0`  ·  Imp.: `0`
4. El sistema calcula: **Piezas = 2 × 12 = 24**; **Total = 2 × $180 = $360.00**; **Costo por pieza = $360 ÷ 24 = $15.00**.
5. Clic en **Buscar producto**, escribe "cola" y elige tu producto "Refresco cola 600 ml". Debajo del costo verás cuánto costaba antes y el cambio en %.
6. Revisa y clic en **✅ Confirmar compra**. Se agrega un lote de **24 piezas a $15.00** al inventario.

**Variante con descuento e impuestos:** si el proveedor te hizo $36 de descuento y la nota desglosa $51.84 de IVA, capturas Desc. `36` e Imp. `51.84`. El total es `360 − 36 + 51.84 = $375.84` y el costo por pieza es `375.84 ÷ 24 = $15.66`. Si ese producto costaba $14.00, el renglón mostrará "antes $14.00 (+11.9%) ⚠️" (ver la sección 7).

## 6. Emparejar cada renglón con un producto

Cada renglón del proveedor debe quedar ligado a **un producto de tu inventario** (sin eso no se puede confirmar: "El renglón N no tiene producto asignado"). La columna **Estado** te dice cómo se ligó:

| Estado | Significado |
|---|---|
| ✅ Equivalencia guardada | El sistema ya había aprendido, en una compra confirmada anterior, que esa **clave de este proveedor** es ese producto (y con qué factor). Pone producto y factor solo. |
| 🔎 Por código de barras | La clave del proveedor coincide con el **código de barras** de un producto tuyo. |
| ✋ Asignado a mano | Tú elegiste el producto con el botón. |
| ⚠️ Sin asignar | Falta elegir producto. |

**Cómo asignar o cambiar el producto:** clic en **Buscar producto** (o **Cambiar** si ya tiene uno). Se abre un buscador con el renglón del proveedor arriba; escribe parte del **nombre** o el **código de barras**. Cada resultado muestra su código, costo, precio y stock. Clic en el producto para asignarlo. Solo salen productos **activos**. Si no aparece: "Sin resultados. Si el producto no existe, regístralo primero en Productos → Nuevo producto."

**Las equivalencias se aprenden al confirmar:** cuando confirmas una compra, por cada renglón que traía **clave del proveedor** el sistema recuerda "esta clave de este proveedor = este producto con este factor". La próxima vez que ese proveedor te surta lo mismo, el renglón sale ya emparejado. Si cambias el proveedor del borrador, el sistema vuelve a buscar las equivalencias del nuevo proveedor, pero solo para los renglones que todavía no tienen producto. Un renglón **sin clave** del proveedor no aprende nada (se tiene que asignar a mano cada vez).

## 7. Costo por pieza, avisos y descuadres

El **costo por pieza** incluye los impuestos y el descuento: `(Importe − Descuento + Impuestos) ÷ (Cantidad × Factor)`. Se muestra con 2 decimales (hasta 4 si hacen falta).

Debajo del costo de cada renglón ya emparejado el sistema te compara contra lo que tienes hoy:

- **"antes $X (+Y%)"** — el costo actual del producto y cuánto cambió. Si el costo **sube más de 5 %** se marca con ⚠️ y en rojo.
- **"⚠️ costo ≥ precio de venta ($P)"** — el costo por pieza es igual o mayor al precio al que vendes el producto: lo estarías vendiendo sin ganancia o con pérdida. Revisa el factor o sube el precio en Inventario.

Estos avisos **no bloquean** la compra: son para que detectes un factor mal puesto (por ejemplo, 1 en lugar de 12) o un aumento del proveedor.

**Cómo queda el costo del producto:** al confirmar se crea un lote nuevo con ese costo por pieza. El costo que ves en Inventario es el **promedio ponderado de los lotes que tienen existencia**, así que no "pisa" el costo de la mercancía que ya tenías.

**Totales y descuadre:** debajo de los renglones ves Subtotal, Descuento, IVA (o "Impuestos" en captura manual), IEPS (solo XML) y Total. Si **la suma de los renglones difiere del total del documento por más de $1**, aparece ⚠️ "Los renglones suman $X: diferencia de $Y contra el total del documento". En captura manual el total siempre se calcula de los renglones, así que no hay descuadre; en XML puede aparecer por redondeos del proveedor, retenciones u otros conceptos. Con diferencia de **$1 o menos** no hay aviso.

## 8. Contado o crédito, y cómo se paga

### 8.1 Contado

La compra se paga **completa en el mismo momento de confirmarla**. En el encabezado eliges con qué:

| Opción | Qué significa |
|---|---|
| **Efectivo de la caja (sale del corte)** | Pagaste con dinero de la caja registradora. Se registra una **salida de efectivo** en el turno de un empleado, y el corte de caja de ese turno la descuenta del efectivo esperado. |
| **Efectivo de otro lado** | Pagaste con efectivo que no salió de la caja (de tu bolsa, de la oficina). **No** afecta el corte. |
| **Transferencia** | No afecta el corte. Puedes anotar el folio en **Referencia del pago**. |
| **Cheque** | No afecta el corte. Puedes anotar el número en **Referencia del pago**. |

**Turno de caja:** solo aparece con "Efectivo de la caja". Es el empleado a cuyo corte se le descuenta la salida. La lista incluye a los empleados activos (los conectados se marcan "· conectado" y tú apareces como "(yo)"). El sistema sugiere al **vendedor conectado** si hay exactamente uno (es quien tiene la caja abierta); si no, sugiere a quien está registrando la compra. Elige a quien realmente sacó el dinero de su caja.

La salida queda con el motivo **"Pago a proveedor *nombre del proveedor* — *folio de la compra*"** (ver el [manual del POS, sección 8](./pos.md#8-entradas-y-salidas-de-efectivo-caja-chica)).

> Si pagaste de tu bolsa o de otro dinero que **no** salió de la caja, **no elijas** "Efectivo de la caja": el corte de ese día saldría con faltante. Elige "Efectivo de otro lado". Si más adelante cancelas la compra, ese pago se revierte y la salida se compensa con una entrada (sección 10.1).

### 8.2 Crédito

La compra queda **debiendo el total**. Se establece la fecha de vencimiento (la que pusiste en **Vence**, o fecha del documento + días de crédito del proveedor; con 0 días de crédito vence el mismo día del documento) y aparece en **Por pagar**. Después la vas pagando (sección 10).

## 9. Borradores: guardar, cerrar, descartar y confirmar

Los botones al final del editor:

| Botón | Qué hace |
|---|---|
| **🗑️ Descartar borrador** | Pide confirmar ("¿Descartar borrador?", botón rojo **Sí, descartar**). El borrador queda como **Descartado** y no se agrega nada al inventario. Si la captura manual no se había guardado, simplemente se pierde. |
| **Cerrar (conservar borrador)** | Sale del editor. Si no hay cambios desde la última vez que guardaste, cierra directo y el borrador queda en **Borradores pendientes** para continuar después. Si **hay cambios sin guardar** (o es una captura manual que nunca se guardó), pregunta "Cambios sin guardar" con tres salidas: **Guardar y cerrar** (guarda el borrador y sale), **Cerrar sin guardar** / **Descartar captura** (sale perdiendo esos cambios) y **Cancelar** (te quedas editando). |
| **💾 Guardar borrador** | Guarda lo que llevas ("Borrador guardado") y sigue en el editor. Recibe un folio **CMP-####**. |
| **✅ Confirmar compra** | Aplica la compra al inventario (sección abajo). |

Un borrador de XML se guarda automáticamente al subirlo.

**Al pulsar Confirmar compra** el sistema valida y te pide confirmar con el mensaje "¿Confirmar compra?": *"Se agregarán N lotes al inventario por un total de $X (de contado, pagada con … / a crédito)."* Si hay descuadre de más de $1, el mensaje añade que se confirmará **aceptando esa diferencia**. Botón **Sí, confirmar compra**.

Antes de confirmar, deben cumplirse estas reglas (si no, sale un aviso):

- Debe haber un **proveedor** elegido ("Elige el proveedor antes de confirmar").
- **Todos los renglones** deben tener producto asignado.
- Los productos deben estar **activos** (si no: el producto está desactivado; reactívalo o elige otro).
- Los productos que se venden **por pieza** deben quedar en un número **entero** de piezas; si Cantidad × Factor da decimales el sistema lo rechaza y te pide revisar el factor.

**Qué crea la confirmación** (todo en un solo paso: si algo falla, no se confirma nada):

1. **Un lote por renglón** en el inventario, con las piezas, el **costo por pieza** y la caducidad del renglón. El origen del lote queda como "Compra CMP-####" (ver la columna Origen en el [manual de Inventario](./inventario.md#9-ver-lotes-editar-su-caducidad-y-darlos-de-baja-merma)). La cantidad, el costo (promedio ponderado) y la caducidad más próxima del producto se recalculan.
2. Si el producto **no tenía proveedor**, queda con el de la compra. Si ya tenía uno, lo conserva: comprarlo una vez en otro lado no cambia a tu proveedor habitual (si quieres cambiarlo, edítalo en Inventario).
3. Las **equivalencias** proveedor → producto (sección 6).
4. La compra pasa a **Recibida** y su saldo es el total.
5. Si es **contado**, además registra el **pago completo** (y la salida de caja si fue efectivo de caja).

> **Aviso de efectivo insuficiente:** si pagas en **efectivo de caja** y el monto es mayor al efectivo esperado del turno elegido, el aviso de confirmación (con el botón en rojo) te dice cuánto se espera en esa caja y cuánto quedaría. **Solo avisa, no bloquea**: si el dinero salió de otra fuente, cancela y elige **Efectivo de otro lado**; si de verdad salió de la caja, confirma. Lo mismo ocurre al **Registrar pago** de una compra a crédito.

Al terminar sale "Compra CMP-#### confirmada: la mercancía ya está en el inventario" y te lleva a **Compras registradas**.

**Importante:** confirmar **no cambia el precio de venta**. Si el costo subió, ajusta el precio en Inventario.

## 10. Compras registradas

Es la lista de todas las compras. Filtros: **estado** (Todos, Borradores, Recibidas, Canceladas, Descartadas), **proveedor** y rango **Desde / Hasta** (sobre la fecha del documento). Columnas: Folio, Proveedor, Documento (con el origen XML/Manual y el número de renglones), Fecha, Total, Condición (si es crédito, con su vencimiento), Estado y Acciones.

El **Estado** de una compra recibida muestra además su situación de pago cuando no está pagada: **Pendiente**, **Parcial** (ya se abonó algo) o **Vencida** (pasó su fecha de vencimiento con saldo). Las canceladas y descartadas se ven atenuadas.

Acciones por fila:

- **Ver** — abre el detalle: proveedor, documento, fecha, estado, condición, saldo pendiente, quién la registró, total, UUID, notas, motivo de cancelación, los renglones (lo del proveedor, producto, piezas, costo por pieza, importe y el **lote** que creó, con cuántas piezas le quedan o la etiqueta **Baja**) y la lista de **Pagos**.
- **Continuar** — solo en borradores: reabre el editor.
- **Pagar** — solo en compras recibidas con saldo pendiente: abre el registro de pago (sección 11).

### 10.1 Cancelar una compra

Se hace desde **Ver → Cancelar compra**. El botón aparece en toda compra **Recibida**, tenga o no pagos (incluidas las de **contado**, que se pagan al confirmar).

1. Clic en **Cancelar compra**. El aviso explica que se darán de baja los lotes (lo que ya se vendió de ellos no se restituye) y, si la compra tiene pagos, un recuadro dice **qué pasará con ellos**: cuántos pagos y por cuánto dinero se revertirán y, si alguno fue en **efectivo de caja**, **en el corte de quién** se registrará la entrada.
2. Escribe el **Motivo** (obligatorio; ej. "Factura capturada en el proveedor equivocado").
3. El sistema te pide tu **PIN de administrador**.
4. Al confirmar sale "Compra CMP-#### cancelada: lotes dados de baja y pagos revertidos".

**Qué pasa con la mercancía:** los lotes que creó esa compra se **dan de baja** (quedan en 0 con el motivo "Cancelación compra CMP-####: *tu motivo*"), y el stock, costo y caducidad de cada producto se recalculan. **Lo que ya vendiste de esos lotes no se restituye**: el inventario simplemente queda con menos y las ventas hechas se quedan como están. La compra pasa a **Cancelada**, su saldo a 0, y el UUID del XML queda libre. La cancelación **no se puede deshacer**.

**Qué pasa con los pagos:** cada pago vigente se **revierte sin borrarse**: queda en el historial marcado como **Revertido** (con la fecha y el motivo de la cancelación) y deja de contar en saldos, Por pagar, estado de cuenta, lista de **Pagos** y la hoja de pagos del Excel. En el detalle de la compra cancelada lo ves tachado.

- Si el pago fue en **efectivo de caja**, se crea una **Entrada** de efectivo a nombre del **mismo empleado del turno** del pago original, con el motivo "Reversión pago PAG-#### por cancelación de CMP-####". Así el efectivo esperado de ese empleado vuelve a donde estaba antes del pago. Si su corte de aquel pago **ya estaba cerrado**, la entrada cae en **su siguiente corte** (el corte cerrado no se modifica).
- Si el pago fue por **transferencia, cheque o efectivo de otro lado**, no se mueve ningún corte: el sistema solo marca el pago como revertido. Recuperar ese dinero con el proveedor es un asunto fuera del sistema.

## 11. Por pagar (cuentas por pagar)

Arriba ves cuatro números: **Por pagar** (todo lo que debes), **Vencido**, **Vence en 7 días** y **Proveedores con saldo**. Abajo, una tarjeta por proveedor con saldo (los que tienen más vencido salen primero; los vencidos se resaltan). Si no debes nada: "No le debes nada a ningún proveedor."

- **Vencido:** compras a crédito cuya **fecha de vencimiento ya pasó** y todavía tienen saldo. Una compra sin fecha de vencimiento nunca se marca como vencida.
- **Antigüedad:** cada tarjeta reparte el saldo en **Al corriente** (aún no vence), **1–30 días**, **31–60 días** y **Más de 60** días de vencida. Mientras más a la derecha, más atrasado.
- Cada compra de la tarjeta muestra su folio, documento, fecha de vencimiento (y "N días vencida"), su estado (Pendiente, Parcial, Vencida), el saldo y un botón **Pagar**.
- **Estado de cuenta** (botón de la tarjeta): abre el historial del proveedor con **Compras recibidas**, **Pagos** y **Saldo actual**, y una tabla fecha por fecha con Cargo, Pago y Saldo corrido — igual que el estado de cuenta de un cliente en El Fiado.

### 11.1 Registrar un pago

Desde **Pagar** (en Compras registradas o en Por pagar):

1. Se abre "Registrar pago" con el resumen de la compra y su saldo pendiente.
2. **Monto** — viene lleno con el **saldo completo**. Para un **pago parcial**, escribe una cantidad menor. El enlace **Pagar el saldo completo** lo vuelve a poner. El monto debe ser mayor a 0 y **no puede exceder el saldo** ("El pago excede el saldo pendiente").
3. **Método** — Efectivo de la caja (sale del corte), Efectivo de otro lado, Transferencia o Cheque. Aplican las mismas reglas de la sección 8.1; con efectivo de caja elige el **Turno de caja**.
4. **Referencia** — opcional (folio de transferencia, número de cheque…).
   También está la **Fecha del pago** (por defecto hoy; ver abajo).
5. Clic en **Registrar pago**. Sale "Pago PAG-#### registrado" y, si fue efectivo de caja, el folio de la salida de caja.

El pago baja el saldo; cuando llega a 0 la compra queda **Pagada**. Se pueden hacer tantos pagos parciales como hagan falta. **La fecha del pago** viene en hoy, pero puedes cambiarla (campo **Fecha del pago**) si pagaste otro día; el sistema no admite fechas futuras ni anteriores a la recepción de la compra. Un pago con fecha pasada queda registrado a las 12:00 de ese día.

## 12. Pagos a proveedores

Es el historial de todos los pagos vigentes (los que se revirtieron al cancelar una compra no aparecen aquí; se ven tachados en el detalle de esa compra). Filtros: proveedor, método (Efectivo de caja, Efectivo (fuera de caja), Transferencia, Cheque) y rango **Desde / Hasta**. Arriba a la derecha ves cuántos pagos hay y cuánto suman. Columnas: Folio, Fecha, Proveedor, Compra, Método (con la referencia y, si fue efectivo de caja, el folio de la salida), Monto, Saldo después y quién lo registró.

## 13. Tarjeta en Inicio y globo del menú

- En **Inicio** (solo administrador) está la tarjeta **Por pagar a proveedores**: el número grande es lo **vencido**, y abajo dice "vencido · N vence(n) esta semana · $X por pagar en total". Al hacer clic te lleva a **Por pagar**.
- En el menú, el globo rojo junto a **Por pagar** cuenta las **compras vencidas** con saldo. Si el grupo **Compras** está cerrado, muestra la suma de sus globos.

Se actualizan al abrir Inicio, al confirmar/cancelar una compra y al registrar un pago (como máximo una vez por minuto en el refresco automático).

## 14. Excel

El botón **Exportar a Excel** de [Reportes](./reportes.md) incluye dos hojas de este módulo:

- **Compras** — compras **recibidas y canceladas**: folio, proveedor, documento, UUID, fechas, subtotal, descuento, IVA, IEPS, total, condición, vencimiento, saldo pendiente, estado y quién la registró. No incluye borradores ni descartadas.
- **Pagos a proveedores** — todos los pagos vigentes (los revertidos por cancelar una compra no se incluyen): folio, compra, proveedor, fecha, monto, método, referencia, saldo anterior y nuevo, movimiento de caja y quién lo registró.

## 15. Preguntas frecuentes

**¿Qué diferencia hay entre Compras y "Agregar inventario"?**
"Agregar inventario" (en [Inventario](./inventario.md#7-agregar-nuevo-inventario-entrada-de-mercancía)) mete un lote de un producto a la vez, sin proveedor ni deuda. Compras registra el **documento completo** del proveedor, calcula el costo real por pieza con impuestos, guarda lo que debes y lo que pagaste. Si la mercancía viene con factura o nota, usa Compras.

**¿Pagué de mi bolsa y el corte me salió con faltante, qué hice mal?**
Casi seguro elegiste "Efectivo de la caja" al pagar. Esa opción registra una **salida de efectivo** en el corte del turno elegido, y el sistema espera que ese dinero falte de la caja. Si el dinero no salió de la caja, hay que elegir "Efectivo de otro lado". Los pagos no se pueden borrar ni editar. Si la compra completa estaba mal, **cancélala** (sección 10.1): sus pagos se revierten y, si fueron en efectivo de caja, el sistema crea sola la entrada que deja el corte en cero. Si la compra está bien y solo te equivocaste en el método de un pago, registra en el POS una **Entrada** de efectivo con el motivo ("Corrección pago a proveedor CMP-####") para dejar el corte en cero (ver [Entradas y Salidas de Efectivo](./pos.md#8-entradas-y-salidas-de-efectivo-caja-chica)).

**¿Cómo afecta al corte de caja?**
Solo los pagos con **Efectivo de la caja**: cada uno crea una salida a nombre del empleado del turno elegido, con el motivo "Pago a proveedor … — CMP-####", y baja el efectivo esperado de su corte. Transferencia, cheque y "Efectivo de otro lado" no tocan el corte. Si el empleado ya había cerrado su corte, la salida cuenta en el siguiente.

**¿Por qué no puedo cancelar una compra?**
El botón **Cancelar compra** aparece en toda compra **Recibida**, con o sin pagos y sea de contado o de crédito. Si es borrador, está descartada o ya cancelada, no se puede: un borrador se **descarta**. Al cancelar, sus pagos se revierten (ver la sección 10.1).

**¿Qué hago si el proveedor no me da factura?**
Captura la compra **a mano** con Documento "Remisión" o "Nota" (o la que sea). No necesitas XML ni UUID. El sistema calcula el costo con lo que tú capturas.

**¿Por qué no me deja registrar una compra o un pago a proveedor y dice que el equipo necesita licencia?**
Sin una licencia válida en esta computadora no se guardan compras, pagos ni cancelaciones. Un administrador la activa en **⚙️ Configuración → Respaldos**, en la tarjeta **Licencia del equipo** (ver [Respaldos, sección 3.2](./respaldos.md)). Lo ya registrado se puede consultar.

**¿Qué pasa si el XML no cuadra?**
Aparece un aviso con la diferencia entre la suma de los renglones y el total del documento. Si es de **$1 o menos** no pasa nada. Si es mayor, revisa si el CFDI trae retenciones o descuentos globales; si de todas formas está bien, puedes confirmar y el sistema te avisa que aceptas esa diferencia. Ojo: el saldo que debes es el **total del documento**, no la suma de renglones.

**El XML me dice que ya está registrado.**
Ese UUID ya está en un borrador o una compra recibida (el mensaje dice cuál). Búscala en **Compras registradas** y continúala. Si la cancelaste o descartaste, ya se puede cargar de nuevo.

**Me dice que el XML es de otro tipo.**
Solo se pueden cargar **facturas de Ingreso**. Las notas de crédito (egreso), complementos de pago, traslados y nómina se rechazan. Para una nota de crédito de un proveedor no hay función todavía.

**¿Para qué sirve el factor? Me equivoqué y puse 1 en lugar de 12.**
El factor convierte cajas en piezas. Con factor 1, el sistema creería que compraste 2 piezas a $180 cada una: lo verás en el aviso de "costo ≥ precio de venta" o de alza fuerte. Corrígelo **antes de confirmar**. Después de confirmar el lote ya quedó con ese costo; si la compra fue a crédito y aún no tiene pagos, cancélala y captúrala bien; si fue de contado ya no se puede cancelar, y la mercancía mal costeada se corrige dando de baja el lote en Inventario y registrándola de nuevo.

**Confirmé y el producto no aparece o me dice que está desactivado.**
Un producto desactivado no recibe compras. Reactívalo en [Inventario](./inventario.md#10-desactivar-o-reactivar-un-producto) y vuelve a confirmar.

**¿Puedo pagar una compra en varias partes?**
Sí. Cada pago parcial baja el saldo y queda en el historial; la compra se marca Parcial hasta que el saldo llega a 0.

**¿Se me va a olvidar un pago?**
Revisa el globo rojo del menú y la tarjeta **Por pagar a proveedores** de Inicio: te dicen cuánto está vencido y cuántas compras vencen esta semana. Para que las fechas salgan bien, captura los **días de crédito** de cada proveedor en [Proveedores](./proveedores.md).

**¿La IA puede confirmar una compra sola?**
No. Todo lo que lee la IA queda como **borrador** y se aplica al inventario solo cuando tú lo confirmas. Revisa cada renglón contra tu documento, sobre todo los marcados con aviso.

**La tarjeta de IA dice "Falta la clave de la IA".**
Ve a **Configuración → Compras con IA**, pega tu clave de API de Anthropic y guárdala (te pide tu PIN). Si tu equipo ya tiene la clave en la variable `ANTHROPIC_API_KEY`, no hace falta capturarla.

**La IA no encontró ninguna nota o factura en mi foto.**
La foto estaba muy borrosa, cortada o no era un documento de compra. Tómala de nuevo con buena luz y de frente, o captura la compra a mano. Cuando pasa esto no se crea ningún borrador.

**¿Se guarda mi foto o PDF en el sistema?**
No. Se envía a Anthropic solo para leerlo; en la base de datos quedan únicamente los datos leídos, el nombre del archivo y los avisos.
