169 lines
5.0 KiB
Plaintext
169 lines
5.0 KiB
Plaintext
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
|