Use el mismo modelo que Plantilla.xlsx (hoja Principal, A–U). En cada fila se lee primero la columna O (tipo de asignación) y según su valor se aplican reglas distintas. Con Vigente se valida de forma estricta (ubicaciones SIM/GPS obligatorias, estatus acotados, plan P y plataforma U obligatorios para la asignación, cliente R obligatorio). Con Historica o En conflicto las ubicaciones E y L son obligatorias y deben existir en el catálogo; el estatus del equipo GPS (M) también es obligatorio y debe ser uno de los valores permitidos por el sistema. El estatus de la línea (F) puede omitirse si la celda está vacía. El plan P puede ir vacío; la plataforma U sigue siendo obligatoria para crear la asignación. Con Sin Asignacion no se crea asignación: solo se crean o reutilizan una SIM si hay IMEI (A) y compañía telefónica (D), y/o un GPS si hay H, J y K (más I, L, M y N si vienen informados); SIM y GPS se tratan de forma independiente. Cliente, marca/modelo, plan y plataforma deben existir en el sistema cuando la fila los exige (coincidencia por nombre). Si una SIM o un GPS ya existen con los mismos datos que en el Excel, se reutiliza el registro y se continúa.
Validar hoja y Procesar carga interpretan primero la columna O y luego el resto de columnas según ese modo (sin escritura en BD al validar). Si la validación termina sin errores, se habilita Procesar carga. Si cambia el archivo, debe validar de nuevo.
Columna O admite solo: Vigente, Historica, En conflicto o Sin Asignacion.
«Historica» y «En conflicto» solo las puede cargar un usuario admin.
La columna Q (fecha) no se envía al servidor; la fecha la asigna el API.
Para que el plan P vacío en histórico/conflicto pueda guardarse en producción, la base de datos debe tener aplicada la migración 010_carga_laxa_nullables.sql (permite plan_facturacion_id nulo; E, L y M ya no pueden omitirse desde esta pantalla).
Registro de ejecución
Detalle por fila
| Fila | OK | Paso | Mensaje | Lectura IMEI | SIM id | GPS id | Asignación id |
|---|