IMPORT util IMPORT com IMPORT os IMPORT security SCHEMA mbs 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 kurl = "https://ws.marmotech.com.do/gas/ws/r/restserver" # LET kurl = "http://192.168.40.9/gas/ws/r/restserver" CALL chequea_prod(kurl) LET ku.usuario = 'conecta' LET ku.clave = 'conecta' END MAIN FUNCTION chequea_prod(xurl) DEFINE xurl STRING DEFINE factura RECORD gral RECORD cod_cia LIKE vetb00002.cod_cia, #DEJAR EN BLANCO ventas LIKE vetb00002.ventas, zona CHAR(3), factura LIKE vetb00002.factura, conduce LIKE vetb00002.conduce, fecha_conduce DATE, fecha_factura DATE, tipo_cliente LIKE vetb00002.tipo_cliente, sec_cliente LIKE vetb00002.sec_cliente, nombre CHAR(30), direccion CHAR(170), ciudad CHAR(20), prima_us LIKE vetb00002.prima_us, porc_desc LIKE vetb00002.porc_desc, cond_pago LIKE vetb00002.cond_pago, # AUTOMATICO num_req INT, # AUTOMATICO orden INT, orden_externa STRING, fecha_orden DATE, porc_itbi LIKE vetb00002.porc_itbi, sec_vend LIKE vetb00002.sec_vend, nombre_vend CHAR(60), cod_transp LIKE iptb00006.cod_transp, sec_transp LIKE iptb00006.sec_transp, cod_tarifa LIKE iptb00006.cod_tarifa, nombre_tran CHAR(30), fecha_embarque DATE, placa_transp LIKE iptb00006.placa, sub_total DECIMAL(12,2), desc_valor DECIMAL(12,2), itbis DECIMAL(12,2), total_fact DECIMAL(12,2), valor_envio FLOAT, correo_electronico STRING, metodo_pago STRING, num_rnc,pais,telefono_casa,telefono_cel,strncf,codigo_dgii,usuario,clave,tipo_envio,referencia,contacto STRING, provincia INT, contacto_obra,telefono_contacto_obra STRING END RECORD, detalle DYNAMIC ARRAY OF RECORD area SMALLINT, #AUTOMATICO cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, descrip_esp CHAR(50), unidad_med CHAR(5), cantidad1, cantidad DEC(12,5), precio LIKE vetb00003.precio, cantidad_2 LIKE vetb00003.cantidad_2, monto_fact DECIMAL(12,2), cantidad_orden DEC(12,5), facturada DEC(12,5), pendiente DEC(12,5), id_kit INT, codid INT END RECORD END RECORD DEFINE respuesta RECORD cod_msg INT, descripcion STRING, ncf_string STRING END RECORD, r_cmd t_sync_cmd DEFINE cmd, res, msg,url STRING, ret INT LET factura.gral.usuario = 'conecta' LET factura.gral.clave = 'conecta' LET factura.gral.codigo_dgii = 'B02' LET factura.gral.zona = '1' LET factura.gral.fecha_factura = TODAY LET factura.gral.nombre = 'PRUEBA b02 FACTURA EXISTOSA SRL' LET factura.gral.sec_cliente = 0 LET factura.gral.num_rnc ='130337391' LET factura.gral.direccion ='CALLE TERCERA, RES. SOL CRECIENTE NO 16, CASA NO 6' LET factura.gral.ciudad = 'SANTO DOMINGO' LET factura.gral.valor_envio =100 LET factura.gral.prima_us = 1 LET factura.gral.porc_desc =0 LET factura.gral.cond_pago =4 LET factura.gral.orden_externa =1006 LET factura.gral.fecha_orden = '06/01/2021' LET factura.gral.porc_itbi =18 LET factura.gral.sec_vend =9 LET factura.gral.fecha_embarque ='06/15/2021' LET factura.gral.sub_total = 2050 LET factura.gral.desc_valor =0 LET factura.gral.itbis =369 LET factura.gral.total_fact =2419 LET factura.gral.correo_electronico = 'jsoto@marmotech.com.do' LET factura.gral.metodo_pago = 'TARJETA DE CREDITO' LET factura.gral.pais = 'RD' LET factura.gral.provincia = '01' LET factura.gral.zona = '01' LET factura.gral.telefono_casa = '809-472-2924' LET factura.gral.telefono_cel = '809-849-3878' LET factura.gral.tipo_envio = 'DCM' # DETALLE LET factura.detalle[1].codid =12460 LET factura.detalle[1].area =1 #LET factura.detalle[1].cod_n =32 #LET factura.detalle[1].cod_grupo =824 #LET factura.detalle[1].cod_tipo =673 #LET factura.detalle[1].cod_sec =2502 LET factura.detalle[1].descrip_esp ='GRIFERIA VELLINO ECO P/LAVAMANOS 1H 662B' LET factura.detalle[1].unidad_med = 'UD' LET factura.detalle[1].cantidad =1 LET factura.detalle[1].precio =1000 LET factura.detalle[1].cantidad_2 =0 LET factura.detalle[1].monto_fact =1000 LET factura.detalle[1].cantidad_orden =1 LET factura.detalle[2].codid =14523 LET factura.detalle[2].area =1 #LET factura.detalle[2].cod_n =19 #LET factura.detalle[2].cod_grupo =824 #LET factura.detalle[2].cod_tipo =1657 #LET factura.detalle[2].cod_sec =4355 LET factura.detalle[2].descrip_esp ='LAVAMANO VELLINO 82055 C/PEDESTAL BLANCO ' LET factura.detalle[2].unidad_med = 'UD' LET factura.detalle[2].cantidad =1 LET factura.detalle[2].precio =1050 LET factura.detalle[2].cantidad_2 =0 LET factura.detalle[2].monto_fact =1050 LET factura.detalle[2].cantidad_orden =1 DISPLAY " URL ",xurl LET r_cmd.oper = "factura" LET r_cmd.data = util.JSON.stringify(factura) -- 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 DISPLAY "cmd", cmd,"ret ",ret," RES: ",RES IF ret == 0 THEN CALL util.JSON.parse(res,factura) { OPEN WINDOW w1 WITH FORM "testprodisp_1" FOR i = 1 TO p.productos.getLength() IF p.contenido_file.contenido IS NOT NULL THEN LET tmpfile = "tmpfoto.jpg" CALL b64_to_file(p.contenido_file.contenido,tmpfile) DISPLAY p.productos[i].descripcion,p.contenido_file.contenido DISPLAY tmpfile TO record1[scr_line()].kimagen END IF END FOR #CALL fgl_winmessage("INFO","VOY A CERRAR","INFO") CLOSE WINDOW w1 } ELSE LET msg=SFMT(%"Connection '%1' failed",r_cmd.oper),"\n",url 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