Carga masiva

Plantilla.xlsx · hoja Principal (columnas A–U)

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 se exige el flujo completo: imei_sim (A), SIM con ubicación E, GPS con H, J y K, ubicación L y estatus del equipo M válido; plan P opcional; plataforma U obligatoria. El estatus de la línea (F) puede omitirse si la celda está vacía. Con En conflicto también se exige la plataforma U y las mismas validaciones cuando la fila intenta crear una SIM (A, D, E…) y/o un GPS (H, J, K, L, M…); pero puede avanzarse sin IMEI/compañía (sin crear SIM), sin datos mínimos de GPS (sin crear GPS), o solo con uno de los dos, y crear igual la asignación con los vínculos disponibles (sim_id y/o gps_id pueden quedar sin rellenar en el servidor). 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) (con ubicación en inventario E obligatoria), y/o un GPS si hay H, J y K (con ubicación L y estatus del equipo M obligatorios; I y N opcionales); 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 el IMEI de la SIM (A) o el IMEI/S/N del GPS (H/I) ya existe en inventario, los pasos de creación de SIM y GPS reutilizan ese registro (con aviso en el log si otros campos del Excel no coinciden); no se detiene la fila por duplicado de equipo. Al crear una asignación Vigente (paso 3), la fila se rechaza solo si esa SIM o ese GPS ya tiene otra asignación vigente o en conflicto; las asignaciones solo históricas no bloquean. Con columna O Historica o En conflicto, el paso 3 no aplica ese bloqueo aunque exista una asignación vigente previa en el mismo equipo.

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 en asignaciones). Las columnas E, L y M son obligatorias cuando la fila crea o reutiliza SIM y/o GPS: en «Historica» y «Vigente» según el flujo completo; en «En conflicto» cuando la fila aporta datos de SIM o GPS; en «Sin Asignacion» cuando hay IMEI+compañía (SIM) o H+J+K (GPS).

Registro de ejecución