preparar_json del 501 reventaba (TypeError/AttributeError) cuando
OPCIONDESTINO o CLAVETRANSFER venian NULL: get(k, "") no protege porque
un NULL de BD llega como None y el default no aplica. Pasa con pedimentos
que baja SCAII_Sync (dejan esos campos en NULL); WinDev los llenaba. Se
usa "or ''" en SCAII y SCAF.
Ademas, el hilo de sincronizacion tragaba la excepcion con print (invisible
en el exe windowed), por lo que parecia un cuelgue. Ahora se registra en
el log con traza (log.error exc_info).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Reviewed-on: #2
Co-authored-by: Kevin_Ramirez <kramirez@aduanasoft.com.mx>
Co-committed-by: Kevin_Ramirez <kramirez@aduanasoft.com.mx>
El API valida linea_scaii_551 como Optional[int] y rechazaba la partida
con 422 (int_parsing) porque se enviaba un espacio " " cuando el LOTE
estaba vacio. Ahora se convierte el LOTE a int; si viene vacio o no es
numerico se envia null, que el API acepta.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Las partidas (registro551) no incluian linea_scaii_551. Se agrega el
campo al payload de ambos generadores (SCAII y SCAF) tomando su valor
del campo LOTE de las tablas de partidas, y se selecciona LOTE en los
querys de partidas para impo/expo, definitiva y temporal.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>