Files
MBS/WEBSERVICES/testreqcompra_d.4gl
T

195 lines
5.3 KiB
Plaintext

IMPORT util
IMPORT com
IMPORT os
TYPE t_sync_cmd RECORD
oper STRING,
data STRING
END RECORD
MAIN
DEFINE k,kurl,kbodega STRING,
ktrue BOOLEAN
DEFINE ku RECORD
usuario VARCHAR(50),
clave VARCHAR(20),
sesion VARCHAR(10)
END RECORD
LET ku.usuario = 'jsoto'
LET ku.clave = 'lmmjvsd2014'
LET ku.sesion = 'ABRIR'
LET kurl = "https://ws.marmotech.com.do/gas320/ws/r/restserver"
CALL chequea_req_d(kurl)
END MAIN
FUNCTION chequea_req_d(xurl)
DEFINE xurl STRING
DEFINE generales RECORD
usuario VARCHAR(50),
clave VARCHAR(50)
END RECORD
DEFINE data RECORD
req_master DYNAMIC ARRAY OF RECORD
num_req INT,
uso STRING,
fecha DATE
END RECORD,
r_out RECORD
mensaje_out STRING,
cod_msg INT
END RECORD
END RECORD,
i INT,
msg,cmd,ret,res STRING
DeFINE r_cmd t_sync_cmd
LET generales.usuario ='JSOTO'
LET generales.clave = 'lmmjvsd2014'
LET r_cmd.oper = "requisiciones_compra_d"
LET r_cmd.data = util.JSON.stringify(generales) -- aca se convierte a string los datos de la operacion
LET cmd = util.JSON.stringify(r_cmd)
CALL sync_send_command(xurl, cmd) RETURNING ret, res
IF ret == 0 THEN
DISPLAY res
CALL util.JSON.parse(res,data)
# OPEN WINDOW w1 WITH FORM "reqcompra"
# DISPLAY ARRAY data.detalle TO record1.*
# CLOSE WINDOW w1
# FOR i=1 TO data.req_master.getLength()
# DISPLAY data.req_master[i].*
# END FOR
IF data.r_out.cod_msg > 0 THEN
DISPLAY "ERR ",data.r_out.mensaje_out
END IF
ELSE
LET msg=SFMT(%"Connection '%1' failed",r_cmd.oper),"\n",xurl
CALL show_sync_err(msg)
END IF
END FUNCTION
FUNCTION valida_usuario(u,url)
DEFINE u RECORD
usuario VARCHAR(50),
clave VARCHAR(20),
sesion VARCHAR(10)
END RECORD
DEFINE r_cmd t_sync_cmd
DEFINE cmd, res, msg,url STRING,
ret INT
DEFINE r RECORD
perror STRING,
pbodega SMALLINT
END RECORD
LET r_cmd.oper = "v_usuarios"
LET r_cmd.data = util.JSON.stringify(u) -- aca se convierte a string los datos de la operacion
LET cmd = util.JSON.stringify(r_cmd) -- aca se convierte a string el comando/operacion a enviar al server
CALL sync_send_command(url, cmd) RETURNING ret, res
IF ret == 0 THEN
CALL util.JSON.parse(res,r)
IF r.perror = "VALIDO" THEN
RETURN TRUE,r.pbodega
ELSE
LET msg=SFMT(%"Connection '%1' failed",r_cmd.oper),"\n",url,"\n",res
CALL show_sync_err(msg)
RETURN FALSE,r.pbodega
END IF
ELSE
LET msg=SFMT(%"Connection '%1' failed",r_cmd.oper),"\n",url,"\n",res
CALL show_sync_err(msg)
RETURN FALSE,r.pbodega
END IF
END FUNCTION
FUNCTION chequea_rnc(url)
DEFINE r_cmd t_sync_cmd
DEFINE u CHAR(11),
url,cmd,res,msg STRING,
ret INT
DEFINE r RECORD
perror STRING,
pbodega SMALLINT
END RECORD
DEFINE prnc RECORD
nombre_cliente STRING,
direccion STRING,
existe INT
END RECORD
LET u ='130337391'
LET r_cmd.oper = "rnc"
LET r_cmd.data = util.JSON.stringify(u) -- aca se convierte a string los datos de la operacion
LET cmd = util.JSON.stringify(r_cmd)
CALL sync_send_command(url, cmd) RETURNING ret, res
DISPLAY "ret ",ret
IF ret == 0 THEN
CALL util.JSON.parse(res,prnc)
DISPLAY "datos ",prnc.nombre_cliente
IF r.perror = "VALIDO" THEN
RETURN TRUE,r.pbodega
ELSE
LET msg=SFMT(%"Connection '%1' failed",r_cmd.oper),"\n",url,"\n",res
CALL show_sync_err(msg)
RETURN FALSE,r.pbodega
END IF
ELSE
LET msg=SFMT(%"Connection '%1' failed",r_cmd.oper),"\n",url,"\n",res
CALL show_sync_err(msg)
RETURN FALSE,r.pbodega
END IF
END FUNCTION
#
## Communications library using com (http or https)
#
FUNCTION sync_send_command(url, cmd)
DEFINE url, cmd STRING
DEFINE result, tmp STRING
DEFINE http_req com.HTTPRequest
DEFINE http_resp com.HTTPResponse
TRY
LET http_req = com.HTTPRequest.Create(url)
CALL http_req.setConnectionTimeout(40)
CALL http_req.setTimeout(40)
CALL http_req.setMethod("POST")
CALL http_req.setCharset("UTF-8")
CALL http_req.setHeader("DBSync-Client","mbs")
CALL http_req.setHeader("Content-Type","dbsync/json")
CALL http_req.doTextRequest(cmd)
LET http_resp=http_req.getResponse()
IF http_resp.getStatusCode() != 200 THEN
RETURN http_resp.getStatusCode(), http_resp.getStatusDescription()
END IF
LET tmp = http_resp.getStatusDescription()
IF (tmp == "OK" || tmp == "no error" ) THEN
RETURN -1, SFMT("HTTP request status description: %1 ",tmp)
END IF
LET result = http_resp.getTextResponse()
CATCH
RETURN -2, SFMT("HTTP request error: STATUS=%1 (%2)",STATUS,SQLCA.SQLERRM)
END TRY
RETURN 0, result
END FUNCTION
FUNCTION show_sync_err(msg)
DEFINE msg STRING
CALL fgl_winmessage(%"ERROR", msg, "exclamation")
END FUNCTION