# Casos de Uso — Módulo de Exportaciones

**Sistema:** Anexo76 · SCAII
**Módulo:** `exports/`
**Versión:** 1.0 · Marzo 2026

---

## Contexto general

El módulo de exportaciones gestiona el ciclo completo de una factura de exportación dentro del sistema: desde que el usuario la captura hasta que queda registrada como procesada ante la aduana. También permite revertirla si hubo un error.

Toda factura de exportación pasa por uno de dos momentos: **procesarla** (actualizarla) o **revertirla** (desactualizarla). El sistema hace cosas muy distintas dependiendo del **tipo de factura**, porque cada tipo representa un escenario aduanero diferente con reglas propias.

---

## CU-EXP-001 · Procesar una factura NODES

### Descripción

El usuario procesa una factura de exportación de tipo **NODES**. Este tipo representa mercancía que sale del país pero que **no está vinculada a ninguna importación temporal** registrada en el sistema — puede ser producción propia, material adquirido localmente o cualquier salida sin historial de entrada temporal.

### Por qué existe

No toda la mercancía que exporta una maquiladora fue importada temporalmente. Las empresas también exportan lo que fabrican localmente. El sistema necesita registrar esa salida y calcular su valor en pesos y dólares sin buscar ningún saldo previo en el inventario.

### Quién lo usa

El usuario de captura de exportaciones, desde la pantalla de facturas de exportación, al presionar **"Actualizar Factura"**.

### Qué necesita estar listo antes

- La factura debe estar en estado **Pendiente** — si ya fue procesada, el sistema la rechaza.
- Debe tener al menos una partida capturada.
- Todos los campos del encabezado deben estar completos: fecha, proveedor, destinatario, tipo de cambio, moneda, agente aduanal y pedimento.
- El tipo de cambio del día debe estar registrado en el catálogo.
- Las clases y fracciones arancelarias de cada partida deben existir en el catálogo oficial.
- Cada partida principal debe tener un costo unitario mayor a cero.

### Qué hace el sistema

Primero valida que todos los campos obligatorios del encabezado estén correctos y que las partidas existan. Luego marca explícitamente todas las partidas como "sin descarga" para que el inventario de importaciones temporales no se vea afectado. Valida que cada fracción arancelaria esté vigente, que el tipo de cambio coincida con el catálogo y que ninguna partida tenga costo en cero.

Después calcula los valores monetarios de cada partida multiplicando el costo unitario por la cantidad y el tipo de cambio del día, obteniendo el valor en pesos, en dólares y en moneda de cuenta. Suma todos esos valores para obtener los totales de la factura.

Finalmente guarda los totales calculados y marca la factura como **Procesada**.

### Qué queda guardado

La factura queda en estado **Procesada** con sus valores monetarios calculados. El inventario de importaciones temporales no se modifica — NODES no descarga ni registra ningún movimiento en el ledger de saldos.

### Qué puede fallar

| Situación | Qué hace el sistema |
|-----------|---------------------|
| La factura ya estaba procesada | La rechaza de inmediato sin ejecutar ningún paso más |
| El tipo de cambio capturado no coincide con el catálogo | Muestra el error y detiene el proceso |
| Una fracción arancelaria no existe en el catálogo oficial | Reporta qué partida tiene la fracción inválida |
| Una clase arancelaria está desactivada | Reporta qué partida tiene la clase desactivada |
| Una partida tiene costo unitario en cero | Indica qué partida no tiene precio capturado |
| Una partida tiene series activadas pero no hay series registradas | Indica qué partida le faltan series |

---

## CU-EXP-002 · Procesar una factura DONAC

### Descripción

El usuario procesa una factura de exportación de tipo **DONAC**. Este tipo representa una **donación al extranjero** — la mercancía sale del país y descarga directamente el inventario de importaciones temporales, sin ningún trámite adicional de cambio de régimen.

### Por qué existe

Las empresas maquiladoras a veces donan material a organizaciones en el extranjero. La donación sigue siendo una salida de inventario: el material importado temporalmente sale del país y el sistema debe registrar que ese saldo ya no está disponible. DONAC es la vía más directa de hacerlo.

### Quién lo usa

El usuario de captura de exportaciones al procesar una factura marcada como tipo DONAC.

### Qué necesita estar listo antes

Lo mismo que NODES, más lo siguiente:

- Cada partida que se va a descargar debe tener indicada su **factura de importación origen** (la TEM o DEF de la que proviene el material).
- Esa factura de importación debe estar procesada y tener una fecha anterior a la exportación.
- El saldo disponible en esa importación debe ser suficiente para cubrir la cantidad que se quiere exportar.
- La unidad de medida del material debe coincidir entre la importación y la exportación.

### Qué hace el sistema

Ejecuta las mismas validaciones que NODES (encabezado, clases, fracciones, tipo de cambio, costo unitario) pero además realiza el **descargo de inventario**.

Para el descargo, el sistema construye una lista de todo lo que se quiere exportar y busca de qué lotes de importación proviene cada material. Aplica el criterio **PEPS** (Primero en Entrar, Primero en Salir): si hay varios lotes del mismo material de distintas fechas, consume primero el más antiguo. Verifica que el saldo alcance y distribuye las cantidades entre los lotes disponibles.

Si todo está en orden, registra en el ledger de inventario que esos lotes fueron consumidos, actualiza los valores retornados en las partidas de importación origen y marca la factura como **Procesada**.

### Qué queda guardado

La factura queda **Procesada**. En el ledger de saldos quedan registrados movimientos de tipo **Consumo** por cada lote descargado. Las partidas de importación origen reflejan cuánto valor ya fue exportado.

### Qué puede fallar

| Situación | Qué hace el sistema |
|-----------|---------------------|
| La factura de importación origen no está procesada | Indica qué importación debe procesarse primero |
| La fecha de la importación es posterior a la exportación | Es un error de datos — no se puede exportar antes de importar |
| No hay saldo suficiente en la importación origen | Muestra exactamente cuánto falta por partida |
| La unidad de medida no coincide entre importación y exportación | Indica qué partidas tienen incompatibilidad de unidades |

---

## CU-EXP-003 · Procesar una factura AFIJO

### Descripción

El usuario procesa una factura de exportación de tipo **AFIJO**. Este tipo puede tener dos variantes: **con cambio de régimen** o **sin cambio de régimen**.

En ambos casos se descarga el inventario de importaciones temporales. La diferencia es que cuando hay cambio de régimen, el sistema también genera automáticamente una **Importación Definitiva (IMD)** que ampara la conversión del material.

### Por qué existe

AFIJO es uno de los tipos más comunes en operaciones maquiladoras. Ocurre cuando la empresa exporta material que procesó a partir de insumos importados temporalmente. El "afijo" hace referencia a que el material fue transformado o ensamblado dentro del país antes de salir.

Cuando además hay **cambio de régimen**, significa que una parte del material importado temporalmente no será exportado sino que se quedará en México de forma permanente — por eso el sistema genera la IMD que formaliza ese cambio ante la aduana.

### Quién lo usa

El usuario de captura de exportaciones. Antes de procesar, el usuario ya debe haber indicado en la factura si aplica cambio de régimen (`is_regime_change = True`).

### Qué necesita estar listo antes

Lo mismo que DONAC. Si aplica cambio de régimen, adicionalmente:

- Todas las partidas deben venir de importaciones de tipo **Temporal (TEM)** — si alguna viene de una Definitiva, el sistema lo rechaza.
- No debe existir ya una Importación Definitiva generada anteriormente para esta misma factura (el sistema lo verifica para evitar duplicados).

### Qué hace el sistema

**Sin cambio de régimen:** igual que DONAC — descarga el inventario directamente.

**Con cambio de régimen:** antes del descargo, verifica que todas las partidas tengan procedencia TEM. Luego genera automáticamente una nueva factura de Importación Definitiva con los mismos datos del encabezado y una copia de todas las partidas. Esta IMD queda en estado Pendiente para que el usuario la asocie después a su pedimento. Después ejecuta el descargo de inventario normalmente.

### Qué queda guardado

La factura de exportación queda **Procesada**. Si hubo cambio de régimen, existe una nueva factura IMD en estado **Pendiente** lista para ser tramitada. Los movimientos de consumo quedan registrados en el ledger.

### Qué puede fallar

Todo lo que puede fallar en DONAC, más:

| Situación | Qué hace el sistema |
|-----------|---------------------|
| Una partida tiene procedencia DEF en lugar de TEM (solo en cambio de régimen) | Indica qué partidas tienen la procedencia incorrecta |
| Ya existe una IMD generada para esta factura | El sistema la reutiliza sin crear un duplicado — no es un error |

---

## CU-EXP-004 · Procesar una factura SCRAP

### Descripción

El usuario procesa una factura de exportación de tipo **SCRAP**. Representa la salida de material que se exporta como **desperdicio, chatarra o rezago** del proceso productivo.

Su comportamiento es idéntico al de AFIJO: descarga el inventario y, si aplica, genera una Importación Definitiva por cambio de régimen. La diferencia es conceptual — no técnica: el material no fue transformado ni exportado como producto terminado, sino como subproducto o material sobrante.

### Por qué existe

El rezago y la chatarra son una realidad del proceso productivo maquilador. La regulación aduanera mexicana exige que estos materiales — aunque no sean el producto final — también sean reportados al salir del país. SCRAP les da un tratamiento específico diferenciado del producto terminado.

### Quién lo usa

El usuario de captura de exportaciones para facturas de desperdicios o rezagos.

### Qué necesita estar listo antes

Idéntico a AFIJO.

### Qué hace el sistema

Exactamente igual que AFIJO: valida, descarga inventario y, si hay cambio de régimen, genera la IMD correspondiente.

### Qué puede fallar

Idéntico a AFIJO.

---

## CU-EXP-005 · Procesar una factura REEXP

### Descripción

El usuario procesa una factura de exportación de tipo **REEXP**. Representa la **reexportación** de material que en su momento entró al país como **Importación Definitiva (DEF)** — es decir, material que ya pagó impuestos al entrar y ahora se exporta nuevamente.

### Por qué existe

A veces las empresas importan material definitivamente, lo procesan y luego lo exportan. Como ese material entró de forma definitiva (no temporal), no aplica el régimen de maquila temporal — tiene su propio tratamiento. REEXP permite registrar esa salida correctamente, indicando que la procedencia es DEF y no TEM.

### Quién lo usa

El usuario de captura de exportaciones cuando el material a exportar proviene de importaciones definitivas.

### Qué necesita estar listo antes

Lo mismo que DONAC, con una diferencia clave: **todas las partidas deben tener procedencia DEF**. Si alguna viene de una importación temporal, el sistema la rechaza.

### Qué hace el sistema

Antes de iniciar el descargo, verifica que todas las partidas tengan procedencia DEF. Si alguna tiene TEM u otro tipo, detiene el proceso e indica cuál es la partida con el problema. Después ejecuta el descargo de inventario igual que DONAC.

### Qué queda guardado

Igual que DONAC — la factura queda Procesada y los movimientos de consumo quedan en el ledger.

### Qué puede fallar

Todo lo que puede fallar en DONAC, más:

| Situación | Qué hace el sistema |
|-----------|---------------------|
| Una partida tiene procedencia TEM en lugar de DEF | Indica qué partidas tienen la procedencia incorrecta |

---

## CU-EXP-006 · Procesar una factura VEMEX

### Descripción

El usuario procesa una factura de exportación de tipo **VEMEX**. Representa una **venta al extranjero** bajo un régimen aduanero especial — típicamente empresas en zonas francas o con programas IMMEX que realizan ventas virtuales al exterior.

### Por qué existe

VEMEX tiene un tratamiento similar a REEXP: el material que se "exporta" proviene de importaciones definitivas. La distinción respecto a REEXP es de naturaleza fiscal y operativa — en VEMEX la empresa tiene un régimen especial reconocido por la aduana que le permite registrar estas operaciones de forma diferente. El sistema los separa para respetar esa distinción documental.

### Quién lo usa

Empresas con régimen IMMEX o en zonas francas que realizan ventas al extranjero desde México.

### Qué necesita estar listo antes

Igual que REEXP. A diferencia de otros tipos, VEMEX no requiere `document_type` ni `customs_broker_id` — son opcionales en este tipo de operación porque el trámite aduanero tiene características distintas.

### Qué hace el sistema

Idéntico a REEXP: verifica que todas las partidas tengan procedencia DEF y ejecuta el descargo de inventario.

### Qué puede fallar

Idéntico a REEXP.

---

## CU-EXP-007 · Revertir una factura NODES

### Descripción

El usuario deshace el procesamiento de una factura NODES — generalmente porque hubo un error de captura o necesita modificar los datos antes de reenviarla.

### Por qué existe

Un sistema de control aduanero no puede simplemente borrar registros procesados. La reversión permite corregir errores de forma controlada: el sistema regresa la factura a su estado anterior sin eliminar el historial.

### Qué hace el sistema

Limpia todos los valores calculados (totales de la factura, valores por partida) y regresa el estado a **Revertida**. Como NODES nunca tocó el inventario, no hay ningún saldo que devolver — es la reversión más simple del módulo.

### Qué necesita estar listo antes

La factura debe estar en estado **Procesada**. Si no lo está, el sistema rechaza la reversión.

### Qué queda guardado

La factura queda en estado **Revertida**, con los totales en cero, lista para ser corregida y reprocesada.

### Qué puede fallar

| Situación | Qué hace el sistema |
|-----------|---------------------|
| La factura no estaba procesada | La rechaza con un mensaje indicando que no puede revertirse |

---

## CU-EXP-008 · Revertir una factura con descarga (AFIJO, DONAC, SCRAP, REEXP, VEMEX)

### Descripción

El usuario deshace el procesamiento de una factura que sí descargó inventario. Es la reversión más compleja del módulo porque hay que deshacer múltiples efectos: los saldos descargados, las series marcadas y los registros en el ledger de inventario.

### Por qué existe

Cuando una exportación descargó saldos de importaciones temporales, simplemente cambiar el estado de la factura no es suficiente. Hay que devolver formalmente ese inventario para que pueda ser utilizado por otras exportaciones futuras. El sistema lleva un registro histórico de todos los movimientos (no se borra nada) — la reversión se registra como un nuevo movimiento que neutraliza el efecto del original.

### Qué hace el sistema paso a paso

Primero verifica que ninguna de las partidas de esta importación esté siendo descargada activamente por otra exportación procesada. Si las hay, bloquea la reversión completamente — ver CU-EXP-009.

Si no hay bloqueos, ejecuta cuatro acciones en orden:

**1. Devuelve los valores a las importaciones origen.** Resta de cada partida de importación el valor que fue descargado al procesar. Si el material era temporal y la importación fue posterior al 31 de diciembre de 2014, también recalcula el IVA utilizado.

**2. Desmarca las series.** Al procesar, las series de las partidas de importación quedaron marcadas como "ya exportadas". La reversión las desmarca para que vuelvan a estar disponibles.

**3. Cancela los registros de descarga en el ledger.** El ledger de inventario nunca se modifica ni se borra. En su lugar, el sistema inserta nuevos movimientos de tipo **Retorno** que compensan exactamente los **Consumos** que se generaron al procesar. El saldo neto vuelve a ser el original.

**4. Regresa la factura a Revertida.** Limpia los totales y cambia el estado.

### Qué queda guardado

La factura queda en estado **Revertida**. En el ledger quedan los movimientos originales de Consumo más los nuevos movimientos de Retorno que los neutralizan — el historial queda completo y auditable. Los saldos de las importaciones origen quedan como si la exportación nunca hubiera ocurrido.

### Qué puede fallar

| Situación | Qué hace el sistema |
|-----------|---------------------|
| Una partida está siendo descargada por otra exportación activa | Bloquea la reversión — ver CU-EXP-009 |
| La factura no estaba procesada | La rechaza indicando que no puede revertirse |

---

## CU-EXP-009 · Reversión bloqueada por exportaciones activas

### Descripción

El usuario intenta revertir una factura de exportación con descarga, pero el sistema detecta que alguna de las partidas de importación origen **está siendo consumida actualmente por otra exportación procesada**. El sistema bloquea completamente la reversión.

### Por qué existe este bloqueo

Los saldos de inventario son compartidos entre exportaciones. Si se permitiera revertir una importación mientras otra exportación sigue activa sobre esos mismos saldos, el inventario quedaría en un estado inconsistente — con más saldo del que debería haber. El bloqueo garantiza que siempre se deshagan las exportaciones en orden inverso al que fueron procesadas.

### Qué hace el sistema

Recorre cada partida de la importación origen. Por cada una, busca si existe algún registro de descarga activo (con estado **Aplicado**) vinculado a una factura de exportación que sigue procesada. Si encuentra aunque sea uno, detiene todo el proceso y muestra un mensaje por cada exportación activa que está usando esos saldos, indicando exactamente qué factura y qué línea están involucradas.

### Cómo lo resuelve el usuario

Debe ir a cada factura de exportación indicada en el error y revertirla primero. Una vez que todas las exportaciones que consumían esos saldos estén revertidas, puede revertir la importación sin problemas.

### Qué queda guardado

Nada — el sistema no modifica ningún dato cuando bloquea la reversión. Todo queda exactamente igual que antes de intentar la operación.

---

## CU-EXP-010 · Reversión bloqueada por Importación Definitiva existente

### Descripción

El usuario intenta revertir una factura de exportación AFIJO o SCRAP con cambio de régimen, pero el sistema detecta que **ya existe una Importación Definitiva (IMD) generada** a partir de esa exportación. El sistema bloquea la reversión.

### Por qué existe este bloqueo

La Importación Definitiva es un documento fiscal independiente con validez propia ante la aduana. Si se revierte la exportación sin eliminar primero la IMD, ese documento queda "flotando" sin ningún respaldo — una exportación que ya no existe lo generó. Eso crea una inconsistencia en los registros fiscales.

### Qué hace el sistema

Busca si existe en la base de datos una factura de tipo IMD cuyo número de factura coincida con el de la exportación que se quiere revertir. Si la encuentra, bloquea la reversión y le indica al usuario exactamente cuál es la IMD que debe eliminar primero, con su número de referencia.

### Cómo lo resuelve el usuario

Debe desactualizar y eliminar la Importación Definitiva indicada. Después puede revertir la exportación sin problema.

### Qué queda guardado

Nada — el sistema no modifica ningún dato cuando bloquea la reversión.

---

## Resumen de los diez casos

| # | Caso de uso | Tipo | Descarga inventario | Genera IMD |
|---|-------------|------|:-------------------:|:----------:|
| CU-EXP-001 | Procesar NODES | Proceso | No | No |
| CU-EXP-002 | Procesar DONAC | Proceso | Sí | No |
| CU-EXP-003 | Procesar AFIJO | Proceso | Sí | Solo si hay cambio de régimen |
| CU-EXP-004 | Procesar SCRAP | Proceso | Sí | Solo si hay cambio de régimen |
| CU-EXP-005 | Procesar REEXP | Proceso | Sí (solo desde DEF) | No |
| CU-EXP-006 | Procesar VEMEX | Proceso | Sí (solo desde DEF) | No |
| CU-EXP-007 | Revertir NODES | Reversión | No aplica | No |
| CU-EXP-008 | Revertir con descarga | Reversión | Devuelve saldos | No |
| CU-EXP-009 | Reversión bloqueada por exportación activa | Bloqueo | No (bloqueado) | No |
| CU-EXP-010 | Reversión bloqueada por IMD existente | Bloqueo | No (bloqueado) | No |
