Files
MBS/WEBSERVICES/oportunidades_fjs.4gl
T

151 lines
4.2 KiB
Plaintext

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,
contacto VARCHAR(100),
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 ,
nombre_file,
sincroniza_id,
fech_crea,
imagen
)
VALUES (?,?,?,?,?,?,?,?,?,?,'MOVIL',getdate(),?)"
BEGIN WORK
PREPARE insert_command FROM select1
DISPLAY "ID ",id_op
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,arc_recibido
IF STATUS < 0 THEN
DISPLAY "Error=",SQLCA.SQLERRD[2],"\n",SQLERRMESSAGE
LET r.ERROR = "NO EXITOSO:",SQLERRMESSAGE,"FECHA:",CURRENT
DISPLAY "ERROR ",r.ERROR
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