fix: enviar linea_scaii_551 como entero o null, no string
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>
This commit is contained in:
@@ -45,6 +45,13 @@ class Generador551SCAF:
|
|||||||
else:
|
else:
|
||||||
um_comercial_num = map_um_num.get(oma_raw, oma_raw)
|
um_comercial_num = map_um_num.get(oma_raw, oma_raw)
|
||||||
|
|
||||||
|
# linea_scaii_551 es entero opcional (llave de cruce con WINSAAI); sale del LOTE.
|
||||||
|
# Si el LOTE viene vacio o no es numerico -> None (el API lo acepta como null).
|
||||||
|
try:
|
||||||
|
linea_scaii = int(str(par.get("Lote")).strip())
|
||||||
|
except (ValueError, TypeError):
|
||||||
|
linea_scaii = None
|
||||||
|
|
||||||
registro = {
|
registro = {
|
||||||
"id_factura": id_factura,
|
"id_factura": id_factura,
|
||||||
"fraccion_551": str(frac_final),
|
"fraccion_551": str(frac_final),
|
||||||
@@ -82,7 +89,7 @@ class Generador551SCAF:
|
|||||||
|
|
||||||
"numero_remesa_551": str(num_remesa or " "),
|
"numero_remesa_551": str(num_remesa or " "),
|
||||||
"numero_partida_remesa_551": str(num_partida_remesa),
|
"numero_partida_remesa_551": str(num_partida_remesa),
|
||||||
"linea_scaii_551": str(par.get("Lote") or " "), # Lote de la tabla de partidas (impo/expo/def/temp)
|
"linea_scaii_551": linea_scaii, # Entero (o null) desde LOTE de la tabla de partidas
|
||||||
"cantidad_alterna_551": float(par.get("CantidadAlterna") or 0),
|
"cantidad_alterna_551": float(par.get("CantidadAlterna") or 0),
|
||||||
"unidad_medida_alterna_551": str(par.get("UnidadAlterna", " ")),
|
"unidad_medida_alterna_551": str(par.get("UnidadAlterna", " ")),
|
||||||
"descripcion_ingles_551": " ",
|
"descripcion_ingles_551": " ",
|
||||||
|
|||||||
@@ -88,6 +88,13 @@ class Generador551SCAII:
|
|||||||
if not metodo_val:
|
if not metodo_val:
|
||||||
metodo_val = str(met_val) if met_val else ""
|
metodo_val = str(met_val) if met_val else ""
|
||||||
|
|
||||||
|
# linea_scaii_551 es entero opcional (llave de cruce con WINSAAI); sale del LOTE.
|
||||||
|
# Si el LOTE viene vacio o no es numerico -> None (el API lo acepta como null).
|
||||||
|
try:
|
||||||
|
linea_scaii = int(str(par.get("Lote")).strip())
|
||||||
|
except (ValueError, TypeError):
|
||||||
|
linea_scaii = None
|
||||||
|
|
||||||
registro = {
|
registro = {
|
||||||
"id_factura": id_factura,
|
"id_factura": id_factura,
|
||||||
"fraccion_551": str(frac_final),
|
"fraccion_551": str(frac_final),
|
||||||
@@ -125,7 +132,7 @@ class Generador551SCAII:
|
|||||||
|
|
||||||
"numero_remesa_551": str(num_remesa or " "),
|
"numero_remesa_551": str(num_remesa or " "),
|
||||||
"numero_partida_remesa_551": str(par.get("Linea") or num_partida_remesa),
|
"numero_partida_remesa_551": str(par.get("Linea") or num_partida_remesa),
|
||||||
"linea_scaii_551": str(par.get("Lote") or " "), # Lote de la tabla de partidas (impo/expo/def/temp)
|
"linea_scaii_551": linea_scaii, # Entero (o null) desde LOTE de la tabla de partidas
|
||||||
"cantidad_alterna_551": float(par.get("CantidadAlterna") or 0),
|
"cantidad_alterna_551": float(par.get("CantidadAlterna") or 0),
|
||||||
"unidad_medida_alterna_551": str(par.get("UnidadAlterna") or " "),
|
"unidad_medida_alterna_551": str(par.get("UnidadAlterna") or " "),
|
||||||
"descripcion_ingles_551": str(par.get("DescripcionIngles") or " ").strip()[:80],
|
"descripcion_ingles_551": str(par.get("DescripcionIngles") or " ").strip()[:80],
|
||||||
|
|||||||
Reference in New Issue
Block a user