IMPORT util IMPORT security IMPORT os FUNCTION oportunidades(d) DEFINE d,archivo STRING, arc_recibido BYTE, id_op INT, select1,mensaje STRING, purl VARCHAR(200) DEFINE o RECORD oportunidad RECORD lead_id INT, tema varchar(100) , dir varchar(100) , tel varchar(20) , email_u varchar(50) , email_a varchar(50), lati FLOAT , longi FLOAT, contacto VARCHAR(100), contenido STRING, imagen VARCHAR(100) END RECORD, oportunidad_detalle DYNAMIC ARRAY OF RECORD id INT, codn SMALLINT, descripcion STRING END RECORD END RECORD, r RECORD ERROR STRING END RECORD, idx INT, ruta_file,cmd string TRY CALL util.JSON.parse(d, o) CATCH CALL fgl_Winmessage(" ","Error conexion"," ") LET r.ERROR = "NO EXITOSO:",STATUS,SQLCA.sqlerrm END TRY LET select1 = "SELECT MAX(a.id) FROM CRMinData.dbo.oportunidades a " PREPARE comando FROM select1 EXECUTE comando INTO id_op IF id_op IS NULL THEN LET id_op = 1 END IF LET id_op = id_op + 1 LET select1 = " INSERT INTO CRMinDATA.dbo.oportunidades (id,lead_id,tema, direccion , telefono , email_usuario, email_asignada, lat , long , nombre_file, contacto, sincroniza_id, fech_crea, imagen ) VALUES (?,?,?,?,?,?,?,?,?,?,?,'MOVIL',getdate(),?)" PREPARE insert_command FROM select1 #, imagen IF o.oportunidad.imagen IS NOT NULL THEN CALL check_create_folder("ArchRecibidos") LET archivo='ArchRecibidos/',o.oportunidad.imagen CALL b64_to_file(o.oportunidad.contenido,archivo) LET ruta_file = 'oportunidades\\"',o.oportunidad.tema CLIPPED,'-',id_op USING "<<<<<",'".jpg' LET purl = "https://66.98.50.155/",o.oportunidad.tema CLIPPED,'-',id_op USING "<<<<<",'.jpg' LET cmd = 'copy ','ArchRecibidos\\tmpfile.jpg ',ruta_file CLIPPED RUN cmd LOCATE arc_recibido IN MEMORY CALL arc_recibido.readFile(archivo) WHENEVER ERROR CONTINUE EXECUTE insert_command USING id_op,o.oportunidad.lead_id,o.oportunidad.tema,o.oportunidad.dir, o.oportunidad.tel,o.oportunidad.email_a,o.oportunidad.email_u, o.oportunidad.lati,o.oportunidad.longi,o.oportunidad.imagen, o.oportunidad.contacto,arc_recibido IF STATUS < 0 THEN LET r.ERROR = SQLCA.sqlerrd[2] DISPLAY "error= ",r.ERROR END IF { --TODO: logica del UPDATE del registro para actualizar solo el BLOB LET select1 = "UPDATE CRMinData.dbo.oportunidades set imagen =?,nombre_file=?,url=? WHERE id= ? " PREPARE actualiza FROM select1 EXECUTE actualiza USING arc_recibido,ruta_file,purl,id_op IF STATUS < 0 THEN DISPLAY "Error=",SQLCA.SQLERRD[2],"\n",SQLERRMESSAGE LET r.ERROR = "NO EXITOSO:",SQLERRMESSAGE,"FECHA:",CURRENT DISPLAY "ERROR UPDATE ",r.ERROR END IF } FREE arc_recibido END IF LET select1 = " INSERT INTO CRMinData.dbo.oportunidades_detalle (id,lead_id,cod_n,descripcion) VALUES (?,?,?,?)" PREPARE insert_detalle FROM select1 FOR idx=1 TO o.oportunidad_detalle.getLength() IF o.oportunidad_detalle[idx].codn IS NOT NULL THEN EXECUTE insert_detalle USING id_op,o.oportunidad_detalle[idx].id,o.oportunidad_detalle[idx].codn,o.oportunidad_detalle[idx].descripcion IF STATUS <0 THEN LET mensaje= "NO PUDE ACTUALIZAR OPORTUNIDADES ",CURRENT," ",STATUS DISPLAY mensaje END IF END IF END FOR RETURN util.JSON.stringify(r) END FUNCTION FUNCTION check_create_folder(dir) DEFINE dir STRING DEFINE msg STRING DEFINE ret BOOLEAN CALL os.Path.exists(dir) RETURNING ret IF ret THEN RETURN # LET msg=SFMT(%"Folder %1 already exists",dir) # CALL fgl_winmessage("Debug",msg,"information") ELSE -- creates the folder CALL os.Path.mkdir(dir) RETURNING ret END IF IF NOT(ret) THEN LET msg=SFMT(%"Unable to create folder %1",dir) CALL fgl_winmessage("Error",msg,"stop") EXIT PROGRAM END IF END FUNCTION FUNCTION b64_to_file(str_b64,f_sal) DEFINE f_sal,str_b64,str_aux STRING TRY CALL security.Base64.SaveBinary(f_sal,str_b64) CATCH LET str_aux="Unable to convert Base64 String to file :",STATUS CALL fgl_winmessage("Error",str_aux,"stop") END TRY END FUNCTION