IMPORT util IMPORT security IMPORT os FUNCTION oportunidades(d) DEFINE d,archivo STRING, arc_recibido BYTE, id_op INT, select1,mensaje STRING 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, contenido STRING, imagen VARCHAR(12) 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 TRY CALL util.JSON.parse(d, o) CATCH CALL fgl_Winmessage(" ","Error conexion"," ") LET r.ERROR = "NO EXITOSO:",STATUS,SQLCA.sqlerrm END TRY CALL check_create_folder("ArchRecibidos") IF o.oportunidad.imagen IS NOT NULL THEN LET archivo="ArchRecibidos/",o.oportunidad.imagen CALL b64_to_file(o.oportunidad.contenido,archivo) END IF LOCATE arc_recibido IN MEMORY IF o.oportunidad.imagen IS NOT NULL THEN CALL arc_recibido.readFile(archivo) END IF 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 , imagen, nombre_file, sincroniza_id, fech_crea ) VALUES (?,?,?,?,?,?,?,?,?,?,?,'MOVIL',getdate())" WHENEVER ERROR CONTINUE BEGIN WORK PREPARE insert_command FROM select1 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,arc_recibido, o.oportunidad.imagen IF STATUS < 0 THEN DISPLAY "Error=",SQLCA.SQLERRD[2],"\n",SQLERRMESSAGE ROLLBACK WORK 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 ROLLBACK WORK LET mensaje= "NO PUDE ACTUALIZAR OPORTUNIDADES ",CURRENT," ",STATUS DISPLAY mensaje END IF END IF END FOR COMMIT WORK FREE arc_recibido 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