diff --git a/backend/api/v1/modules/a76/invoices/exports/exports.md b/backend/api/v1/modules/a76/invoices/exports/exports.md new file mode 100644 index 00000000..f925680c --- /dev/null +++ b/backend/api/v1/modules/a76/invoices/exports/exports.md @@ -0,0 +1,379 @@ +# 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 | \ No newline at end of file diff --git a/backend/api/v1/modules/a76/invoices/imports/importss.md b/backend/api/v1/modules/a76/invoices/imports/importss.md new file mode 100644 index 00000000..d041eb57 --- /dev/null +++ b/backend/api/v1/modules/a76/invoices/imports/importss.md @@ -0,0 +1,315 @@ +# Casos de Uso — Módulo de Importaciones + +**Sistema:** Anexo76 · SCAII +**Módulo:** `imports/` +**Versión:** 1.0 · Marzo 2026 + +--- + +## Contexto general + +El módulo de importaciones gestiona el ciclo completo de una factura de importación dentro del sistema: desde que el usuario la captura hasta que queda registrada como procesada. También permite revertirla si hubo un error. + +La importación es el punto de partida de todo el inventario de materiales. Cuando una empresa maquiladora importa insumos, el sistema registra cuánto entró, con qué valor y bajo qué régimen. Ese registro es lo que después permite a las exportaciones descargar saldos. Sin importaciones procesadas, no hay inventario que exportar. + +Toda factura de importación pasa por uno de dos momentos: **procesarla** (actualizarla) o **revertirla** (desactualizarla). + +--- + +## Los tipos de factura de importación + +Cada tipo representa un escenario aduanero diferente con reglas y efectos distintos sobre el inventario: + +| Tipo | ¿Qué representa en la práctica? | ¿Genera saldo de inventario? | ¿Calcula IVA por partida? | +|------|--------------------------------|:----------------------------:|:-------------------------:| +| **TEM** | Material que entra al país temporalmente para ser procesado y exportado | Sí | No | +| **DEF** | Material que entra al país de forma definitiva, pagando impuestos completos | No | Sí | +| **MEX** | Compra de material a proveedores mexicanos | No | Sí | + +La distinción más importante del módulo: **solo las importaciones temporales (TEM) generan saldo de inventario**. Las definitivas y las compras mexicanas simplemente registran la entrada y calculan el IVA, pero no alimentan el ledger que las exportaciones van a consumir. + +--- + +## CU-IMP-001 · Procesar una factura TEM (Importación Temporal) + +### Descripción + +El usuario procesa una factura de importación temporal. El material registrado en esta factura entra al país sin pagar impuestos definitivos, bajo el compromiso de que será exportado después de ser transformado o ensamblado. + +### Por qué existe + +El régimen de importación temporal es el corazón de la operación maquiladora. Las empresas necesitan registrar exactamente qué entró, cuánto y con qué valor, porque ese registro es el inventario del que después se nutren las exportaciones. Sin este caso de uso, no existirían los saldos que el módulo de exportaciones descarga. + +### Quién lo usa + +El usuario de captura de importaciones, al presionar **"Actualizar Factura"** en una factura de tipo TEM. + +### Qué necesita estar listo antes + +- La factura debe estar en estado **Pendiente**. +- Debe tener al menos una partida capturada. +- Todos los campos del encabezado deben estar completos: fecha, proveedor, destinatario, agente aduanal, tipo de cambio, moneda y pedimento. +- El tipo de cambio del día debe estar registrado en el catálogo — a diferencia de exportaciones, aquí es obligatorio que exista; si no existe, el sistema lanza un error (no solo una advertencia). +- Las clases y fracciones arancelarias de cada partida deben ser válidas. +- Cada partida principal debe tener costo unitario mayor a cero. +- Si la empresa tiene programa PROSEC y alguna partida usa Regla Octava, el permiso correspondiente debe estar activo y con cupo disponible. + +### Qué hace el sistema + +Primero valida los campos del encabezado y carga las partidas. Luego verifica que las clases y fracciones arancelarias sean correctas, que el tipo de cambio coincida con el catálogo y que los pesos declarados cuadren con las cantidades. + +Después calcula los valores monetarios de cada partida: costo unitario en pesos, en dólares y en moneda de cuenta, usando el tipo de cambio del día. Para TEM **no se calcula IVA** — ese cálculo solo aplica a DEF y MEX. + +Por cada partida también valida que la unidad de medida tenga una equivalencia con la unidad de aduana mexicana, para poder registrar la cantidad correcta ante la autoridad aduanera. + +Si la empresa tiene programa PROSEC y alguna partida tiene permiso de Regla Octava, el sistema verifica que ese permiso exista, que esté vigente, que la fracción arancelaria coincida y que haya cupo suficiente. Si todo está bien, descuenta ese cupo del permiso. + +Finalmente calcula los totales de la factura, agrega los incrementables (flete, seguro, embalaje) y genera en el ledger de inventario **un registro de entrada por cada partida principal**. Esos registros son los saldos que las exportaciones futuras van a consumir. + +### Qué queda guardado + +La factura queda en estado **Procesada** con sus totales calculados. En el ledger de saldos quedan registrados **movimientos de entrada** por cada partida, listos para ser consumidos por exportaciones. Si había Regla Octava, los cupos del permiso quedan descontados y el saldo queda registrado en la tabla de saldos PROSEC. + +### Qué puede fallar + +| Situación | Qué hace el sistema | +|-----------|---------------------| +| La factura ya estaba procesada | La rechaza de inmediato | +| El tipo de cambio del día no está en el catálogo | Error — a diferencia de exportaciones, aquí no es opcional | +| El tipo de cambio capturado difiere del catálogo | Error indicando la diferencia | +| 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 está afectada | +| Un número de parte está desactivado | Reporta qué partida está afectada | +| La cantidad y el peso neto no coinciden (en partidas KGS o LBS) | Indica qué partida tiene la diferencia | +| Una partida tiene costo en cero | Indica qué partida no tiene precio | +| La partida tiene series activadas pero no hay series registradas | Indica qué partida le faltan series | +| La partida usa Regla Octava pero la empresa no tiene PROSEC | Rechaza el uso del permiso | +| El permiso de Regla Octava no existe o está vencido | Indica qué permiso tiene el problema | +| El cupo del permiso de Regla Octava ya está agotado | Indica que no hay cupo disponible | +| La unidad de medida no tiene equivalencia con la unidad de aduana | Indica qué partida tiene el problema de unidades | + +--- + +## CU-IMP-002 · Procesar una factura DEF (Importación Definitiva) + +### Descripción + +El usuario procesa una factura de importación definitiva. El material entra al país pagando todos los impuestos correspondientes — es una compra permanente, no temporal. + +### Por qué existe + +No todos los materiales que usan las maquiladoras entran al país de forma temporal. Algunos insumos, herramientas o componentes se adquieren de forma definitiva. El sistema necesita registrar esa entrada, calcular el IVA que corresponde y dejar constancia del valor total de la importación para efectos contables y aduaneros. + +### Quién lo usa + +El usuario de captura de importaciones para facturas de importación definitiva. + +### Qué necesita estar listo antes + +Igual que TEM, con la diferencia de que el `iva_factor` debe estar configurado en la factura para que el sistema pueda calcular el IVA por partida. + +### Qué hace el sistema + +Ejecuta las mismas validaciones que TEM (encabezado, clases, fracciones, tipo de cambio, pesos, costo unitario, series, UMA). La diferencia está en el cálculo de valores: para DEF el sistema calcula **subtotal + IVA = total** por cada partida, en pesos, dólares y moneda de cuenta. El IVA se calcula como porcentaje del valor de cada partida. + +Al terminar, actualiza los totales del encabezado incluyendo los totales de IVA. + +**La diferencia crítica con TEM:** no genera ningún movimiento en el ledger de inventario. La importación definitiva no alimenta los saldos que las exportaciones consumen — ese material llegó para quedarse en México, no para ser reexportado bajo régimen temporal. + +### Qué queda guardado + +La factura queda **Procesada** con sus valores y totales de IVA calculados. El ledger de inventario no se modifica. + +### Qué puede fallar + +Las mismas situaciones que TEM, excepto lo relacionado con Regla Octava (que no aplica para DEF). + +--- + +## CU-IMP-003 · Procesar una factura MEX (Compra Mexicana) + +### Descripción + +El usuario procesa una factura de compra a un proveedor mexicano. El material proviene de dentro del país — no hay una importación aduanera real — pero el sistema igualmente registra la entrada y calcula el IVA correspondiente. + +### Por qué existe + +Las maquiladoras también compran materiales a proveedores locales mexicanos. Aunque no hay un trámite aduanero formal, la empresa igualmente necesita registrar ese costo, el IVA pagado y el valor de lo que adquirió, por razones contables y de control interno. + +### Quién lo usa + +El usuario de captura de importaciones para facturas de compras nacionales. + +### Qué necesita estar listo antes + +Igual que DEF. A diferencia de otros tipos, MEX no requiere `document_type` — al ser una compra nacional no hay régimen aduanero que declarar. + +### Qué hace el sistema + +Idéntico a DEF: valida el encabezado, calcula valores con IVA por partida y actualiza totales. No genera saldos en el ledger. + +### Qué queda guardado + +Igual que DEF — la factura queda **Procesada** con valores e IVA calculados, sin movimientos en el ledger de inventario. + +### Qué puede fallar + +Las mismas situaciones que DEF. + +--- + +## CU-IMP-004 · Procesar una factura TEM con Regla Octava (PROSEC) + +### Descripción + +Es una variante del caso TEM. Ocurre cuando la empresa tiene un **programa PROSEC** activo y alguna o todas sus partidas están amparadas bajo un **permiso de Regla Octava**, que le permite importar ciertos materiales con arancel preferencial. + +### Por qué existe + +La Regla Octava es un beneficio arancelario del gobierno mexicano para empresas del sector productivo. Las empresas PROSEC pueden importar materias primas con aranceles reducidos, pero a cambio deben consumir esos materiales dentro de cuotas autorizadas. El sistema lleva la cuenta de cuánto cupo ha sido usado y cuánto queda disponible por permiso. + +### Quién lo usa + +Empresas con programa PROSEC activo, al procesar facturas TEM donde alguna partida tiene un permiso de Regla Octava capturado. + +### Qué necesita estar listo antes + +Todo lo de TEM, más: + +- La empresa debe tener `prosec = True` en su configuración. +- El permiso de Regla Octava debe existir en el catálogo, estar vigente (dentro de las fechas del permiso) y tener cupo disponible. +- La fracción arancelaria de la partida debe coincidir con la fracción registrada en el permiso — o debe existir en el historial de fracciones anteriores si el permiso es previo a mayo de 2010. +- El país de origen de la partida debe estar registrado dentro del permiso. +- La unidad de medida del permiso debe ser compatible con la de la partida. + +### Qué hace el sistema + +Igual que TEM en todo, más un bloque adicional de validación y descuento de cupos: + +Para cada partida con permiso de Regla Octava, el sistema arma dos listas: una con lo que se quiere importar (cantidades y valores por permiso y línea) y otra con el cupo disponible por permiso. Luego cruza ambas listas para verificar que el cupo alcance. Si alcanza, descuenta ese cupo del permiso y registra en la tabla de saldos PROSEC cuánto se consumió de cada permiso por factura. + +### Qué queda guardado + +Igual que TEM, más: el cupo del permiso de Regla Octava queda reducido en la cantidad importada, y existe un registro en la tabla de saldos PROSEC vinculando esta factura con el permiso utilizado. Ese registro es el que se elimina si la factura se revierte. + +### Qué puede fallar + +Todo lo de TEM, más las situaciones específicas de Regla Octava descritas en ese caso. + +--- + +## CU-IMP-005 · Revertir una factura TEM + +### Descripción + +El usuario deshace el procesamiento de una factura de importación temporal — porque hubo un error de captura, los datos cambiaron, o necesita corregirla. + +### Por qué existe + +Una factura TEM procesada tiene efectos en el inventario: generó saldos que las exportaciones pueden estar usando. Revertirla no es solo cambiar un estado — hay que deshacer todos esos efectos de forma controlada para que el inventario quede consistente. + +### Qué hace el sistema + +Primero verifica que ninguna exportación activa esté consumiendo los saldos de esta importación. Si las hay, bloquea completamente la reversión — ver CU-IMP-007. + +Si no hay bloqueos, ejecuta cuatro acciones en orden: + +**1. Revierte los cupos de Regla Octava.** Si la factura usó permisos PROSEC, devuelve el cupo consumido a cada permiso y elimina los registros de saldo PROSEC que se habían creado al procesar. + +**2. Reinicia los totales del encabezado.** Pone todos los valores financieros en cero (cantidad, peso, valor en pesos, en dólares, IVA, incrementables) y regresa la factura a estado **Pendiente**. + +**3. Reinicia los contadores de cada partida.** Limpia los valores de retorno y de IVA utilizado que se habían calculado en las partidas. + +**4. Anula los saldos en el ledger de inventario.** El ledger nunca se borra. En su lugar, el sistema inserta nuevos movimientos de tipo **Anulación de Entrada** que compensan exactamente las **Entradas** originales. El saldo neto de cada lote queda en cero — las exportaciones ya no pueden consumirlo. + +### 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 **Pendiente** con todos los valores en cero. En el ledger quedan los movimientos originales de Entrada más los nuevos de Anulación que los neutralizan — el historial queda completo y auditable. Si había Regla Octava, los cupos quedan restaurados y los registros de saldo PROSEC quedan eliminados. + +### Qué puede fallar + +| Situación | Qué hace el sistema | +|-----------|---------------------| +| Una partida está siendo descargada por una exportación activa | Bloquea toda la reversión — ver CU-IMP-007 | +| La factura no estaba procesada | La rechaza indicando que no puede revertirse | +| Error al actualizar el permiso de Regla Octava | Registra el error como no bloqueante y continúa — la reversión avanza de todas formas | + +--- + +## CU-IMP-006 · Revertir una factura DEF o MEX + +### Descripción + +El usuario deshace el procesamiento de una factura de importación definitiva o de una compra mexicana. + +### Por qué existe + +Aunque DEF y MEX no generan saldos de inventario, sí tienen totales calculados y estado procesado que pueden necesitar corrección. La reversión les permite volver a estado pendiente para ser corregidas. + +### Qué hace el sistema + +Es la más simple de las reversiones de importación porque DEF y MEX nunca generaron saldos en el ledger. El sistema verifica que no haya exportaciones activas usando esa importación (por consistencia, aunque en la práctica DEF y MEX no alimentan el ledger que exportaciones consume), reinicia los totales del encabezado a cero y regresa la factura a **Pendiente**. + +No hay cupos de Regla Octava que restaurar ni entradas de ledger que anular. + +### Qué queda guardado + +La factura queda en estado **Pendiente** con todos los valores en cero, lista para ser corregida y reprocesada. + +### Qué puede fallar + +| Situación | Qué hace el sistema | +|-----------|---------------------| +| La factura no estaba procesada | La rechaza indicando que no puede revertirse | + +--- + +## CU-IMP-007 · Reversión bloqueada por exportaciones activas + +### Descripción + +El usuario intenta revertir una factura de importación TEM, pero el sistema detecta que alguna de sus partidas está siendo **consumida actualmente por una exportación que sigue procesada**. El sistema bloquea completamente la reversión. + +### Por qué existe este bloqueo + +Los saldos de inventario de una importación temporal pueden estar siendo usados por varias exportaciones al mismo tiempo. Si se permitiera revertir la importación mientras esas exportaciones siguen activas, el inventario quedaría en un estado imposible: habría exportaciones que dicen haber consumido saldos de una importación que ya no existe. El bloqueo garantiza que el orden sea siempre el correcto: primero se deshacen las exportaciones y luego la importación. + +### Qué hace el sistema + +Recorre cada partida de la factura. Por cada una, busca si existe algún registro de descarga activo vinculado a una exportación procesada. Si encuentra aunque sea uno, detiene todo el proceso y muestra un mensaje por cada exportación activa involucrada, indicando exactamente qué factura de exportación y qué línea está usando el saldo. + +### Cómo lo resuelve el usuario + +Debe ir a cada factura de exportación indicada en el mensaje de 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 del intento. + +--- + +## Resumen de los siete casos + +| # | Caso de uso | Tipo | Genera saldo inventario | Calcula IVA | Regla Octava | +|---|-------------|------|:-----------------------:|:-----------:|:------------:| +| CU-IMP-001 | Procesar TEM | Proceso | Sí | No | Opcional | +| CU-IMP-002 | Procesar DEF | Proceso | No | Sí | No | +| CU-IMP-003 | Procesar MEX | Proceso | No | Sí | No | +| CU-IMP-004 | Procesar TEM con PROSEC | Proceso | Sí | No | Sí — descuenta cupo | +| CU-IMP-005 | Revertir TEM | Reversión | Anula saldos | No | Restaura cupo | +| CU-IMP-006 | Revertir DEF o MEX | Reversión | No aplica | No | No | +| CU-IMP-007 | Reversión bloqueada por exportaciones activas | Bloqueo | No (bloqueado) | No | No | + +--- + +## Relación con el módulo de exportaciones + +Las importaciones y exportaciones están directamente conectadas a través del ledger de inventario: + +Una factura TEM procesada **crea** saldos. Esos saldos son los que las exportaciones AFIJO, DONAC, SCRAP, REEXP y VEMEX **consumen** al procesarse. Si una exportación consume saldos de una TEM y después esa TEM necesita revertirse, primero hay que revertir la exportación — de ahí viene el bloqueo del CU-IMP-007. + +Las facturas DEF y MEX no participan en este ciclo desde el lado de la importación, pero sí pueden ser el origen del material en una exportación de tipo REEXP o VEMEX, donde la procedencia requerida es justamente DEF. \ No newline at end of file