Files
MBS/WEBSERVICES/test/productoo_display.4gl
T

137 lines
3.6 KiB
Plaintext

IMPORT util
IMPORT com
IMPORT os
IMPORT security
DEFINE kurl,cmd,ret,res,msg STRING
TYPE t_sync_cmd RECORD
oper STRING,
data STRING
END RECORD
MAIN
LET kurl = "https://ws.marmotech.com.do/gas/ws/r/restserver"
CALL producto_display()
END MAIN
FUNCTION producto_display()
DEFINE producto RECORD
cod_cia SMALLINT ,
cod_n SMALLINT ,
cod_grupo SMALLINT ,
cod_tipo SMALLINT ,
cod_sec SMALLINT ,
descrip_esp varchar(180) ,
descrip_ing varchar(80) ,
unidad_med varchar(4) ,
nomenclatura char(50) ,
bodega SMALLINT ,
existencia DEC(12,5),
disponible DEC(12,5),
exist_max decimal(10, 2) ,
exist_min decimal(10, 2) ,
dia_llegada SMALLINT ,
control_existencia varchar(2) ,
control_itbis varchar(2) ,
codid INT ,
foto_producto STRING,
imagen BYTE,
porc_desc decimal(12, 2) ,
fecha_desc DATE ,
factor DEC(12,5),
descuento_permitido VARCHAR(2),
referencia VARCHAR(25),
cod_msg SMALLINT,
mensaje_out STRING
END RECORD,
selec STRING,
data RECORD
usuario VARCHAR(50),
clave VARCHAR(50),
codigo VARCHAR(50)
END RECORD,
r_cmd t_sync_cmd
LET data.usuario = 'jsoto'
LET data.clave = 'lmmjvsd2014'
LET data.codigo = '33658274512701'
DISPLAY " URL ",kurl
LET r_cmd.oper = "productos_display"
LET r_cmd.data = util.JSON.stringify(data) -- aca se convierte a string los datos de la operacion
LET cmd = util.JSON.stringify(r_cmd)
CALL sync_send_command(kurl, cmd) RETURNING ret, res
DISPLAY "cmd", cmd,"ret ",ret," RES: ",RES
IF ret == 0 THEN
CALL util.JSON.parse(res,producto)
ELSE
LET msg=SFMT(%"Connection '%1' failed",r_cmd.oper),"\n",kurl
CALL show_sync_err(msg)
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
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
DISPLAY " data ",str_b64
LET str_aux="Unable to convert Base64 String to file :",STATUS
CALL fgl_winmessage("Error",str_aux,"stop")
END TRY
END FUNCTION