151 lines
4.2 KiB
Plaintext
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
|