Re:Re:Posible Bug y solución en Importador de Extracto

Inicio Foros Foro principal Desarrolladores Posible Bug y solución en Importador de Extracto Re:Re:Posible Bug y solución en Importador de Extracto

#34195
Javier AderJavier Ader
Participante

lo del and y or sigo creyendo que esta mal jaja. Fijate que en realidad tiene poco sentido chequear porque sea distinto de ‘Y’ o que sea NULL ya que en la primer sentencia sql se setea explícitamente a ‘N’ (el tema es que esta sentencia no creo que funcione por el tema del SysDate).
Mirando la importación de productos (ImportProduct) se ve que en vez de usar Sysdate se usa current_timestamp lo cual si es una función de postgres. También fijate que lo de setear al principio I_ErrorMsg a NULL sigue siendo un error; lo podes verificar agreando una linea en la ventana de importacion que sepas que va a fallar por que la ecuación que decis no se cumple; en el campo Error De Importación te debería aparecer Err=Invalid Amount , lo cual estoy seguro que no te está apareciendo. Mi conclusión es que la segunda linea que sigue a “// Set Client, Org, IsActive, Created/Updated” hay que cambiarla por

Code:
sql.append( ” IsActive = COALESCE (IsActive, ‘Y’),” +
“Created = COALESCE (Created, current_timestamp),” +
” CreatedBy = COALESCE (CreatedBy, 0),” +
” Updated = COALESCE (Updated, current_timestamp),” +
” UpdatedBy = COALESCE (UpdatedBy, 0),” +
” I_ErrorMsg = ”,” + ” I_IsImported = ‘N’ ” +
“WHERE I_IsImported<>‘Y’ OR I_IsImported IS NULL” );

el current_timestamp para que no haya error a nivel sintáctico y el I_ErrorMsg seteado a la string vacía para que los mensajes se puedan guardar (el tema de fondo que no dije antes que si vos concatenas NULL a cualquier string el resultado es NULL y eso es lo que estan haciendo los update que setean los errores; es por eso nunca muestra los errores en los campos de Error de Importacion).

Ahora, después de esto, y asumiendo que esta consulta se ejecuta correctamente, no es posible que haya una fila en la tabla que tenga I_IsImported con NULL (la sentencia anterior la deberia haber puesto a ‘N’); por lo tanto esta condición se pueden borrar en todas las sentencias sql que siguen (por ej en “//set Banck Account” la string ” OR i.I_IsImported IS NULL” simplemente se puede borrar). De esta manera solucionas también el tema de los ORs y los ANDs (simplemente porque desaparecen los ORs!).
Fijate también que el código debe ser más reciente (por ej el que el chequea la ecuación en cuestion) , NO usa la condición “OR i.I_IsImported IS NULL”, la condición “AND I_IsImported<>‘Y'” alcanza.

Ahora, como decís, el importador aún funcione! Pero me da la sensación que va a funcionar correctamente cuando los datos en las tablas temporales sean correctos y por ej, va a fallar en poner los errores en la tabla I_ErrorMsg [no lo veo como un error grave, pero si por ej, hay un error como el que te ocurria a vos, es medio difícil de rastrear]. Mejorarlo un poco no cuesta nada.

Saludos

PD : a los que manejan el foro… puede ser que hayan dejado de andar los BBCode de Bold? por ej Bold , lo veo explicitamente con los tags “b” en vez de en negrita.

PD2 : ah ahí haciendo un preview me di cuenta…. los tags b y supongo que casi todos los demás no funcionan dentro de las bbcode Code (algo que me parece de utilidad para remarcar partes especificas del código o cambios realizados). Pasemos a PhpBB ;) !