JSOTO adicione los 4rp del ipprrp014
This commit is contained in:
@@ -1,172 +0,0 @@
|
||||
OPTIONS SHORT CIRCUIT
|
||||
|
||||
IMPORT util
|
||||
IMPORT com
|
||||
|
||||
|
||||
FUNCTION apiclient(pemail)
|
||||
DEFINE data_apilayer RECORD
|
||||
email,did_you_mean,USER,domain,syntax_valid STRING,
|
||||
is_disposable,is_role_account,is_catch_all,is_deliverable,can_connect_smtp,
|
||||
is_inbox_full,is_disabled,mx_records,FREE,score BOOLEAN
|
||||
END RECORD
|
||||
|
||||
DEFINE data_ipq RECORD
|
||||
MESSAGE STRING,
|
||||
success,
|
||||
valid,
|
||||
disposable BOOLEAN,
|
||||
smtp_score ,
|
||||
overall_score DEC(10,2),
|
||||
first_name string,
|
||||
generic,
|
||||
common,
|
||||
dns_valid,
|
||||
honeypot BOOLEAN,
|
||||
deliverability STRING,
|
||||
frequent_complainer BOOLEAN,
|
||||
spam_trap_score STRING,
|
||||
catch_all,
|
||||
timed_out,
|
||||
suspect,
|
||||
recent_abuse BOOLEAN,
|
||||
fraud_score DEC(10,2),
|
||||
suggested_domain string,
|
||||
leaked BOOLEAN
|
||||
END RECORD
|
||||
|
||||
DEFINE estado,purl,cmd,res, msg,s,pemail,tiposervice STRING,
|
||||
ret INT
|
||||
|
||||
# ELECCION DE SERVICIOS, POR EL MOMENTO ES IPQUALITY
|
||||
LET tiposervice = 'ipq1'
|
||||
|
||||
|
||||
IF tiposervice = 'ipq' THEN
|
||||
LET purl = 'https://ipqualityscore.com/api/json/email/cHZNnfXkbJDtx43YcrQqHSjXzBrndwT3/',pemail CLIPPED
|
||||
CALL ipquality_send_command(purl) RETURNING ret,res
|
||||
DISPLAY "estoy a qui"
|
||||
IF ret ==0 THEN
|
||||
LET s = util.JSON.stringify(res)
|
||||
CALL util.JSON.parse(res,data_ipq)
|
||||
|
||||
IF data_ipq.valid THEN
|
||||
LET estado = 'VALIDO'
|
||||
LET ret = 200
|
||||
|
||||
ELSE
|
||||
LET ret = 400
|
||||
LET estado = 'NO SE PUEDE ENTREGAR MENSAJE A ESTA DIRECCION EMAIL'
|
||||
|
||||
END IF
|
||||
|
||||
ELSE
|
||||
|
||||
CALL apilayer_send_command(purl, cmd) RETURNING ret, res
|
||||
# DISPLAY "res ",res," ",ret
|
||||
IF ret ==0 THEN
|
||||
LET s = util.JSON.stringify(res)
|
||||
CALL util.JSON.parse(res,data_apilayer)
|
||||
|
||||
IF data_apilayer.can_connect_smtp THEN
|
||||
LET estado = 'VALIDO'
|
||||
LET ret = 200
|
||||
|
||||
ELSE
|
||||
LET ret = 400
|
||||
LET estado = 'NO SE PUEDE ENTREGAR MENSAJE A ESTA DIRECCION EMAIL'
|
||||
|
||||
END IF
|
||||
|
||||
|
||||
# DISPLAY "sintax ",data.syntax_valid," deliv ",data.is_deliverable
|
||||
ELSE
|
||||
IF ret = 429 THEN
|
||||
LET ret = 200
|
||||
LET estado ='VALIDO POR EXESO DE REQUEST'
|
||||
ELSE
|
||||
LET ret = 400
|
||||
LET estado = 'NO FUE POSIBLE LA CONEXION, '
|
||||
END IF
|
||||
END IF
|
||||
END IF
|
||||
END IF
|
||||
DISPLAY "en return ",estado," ",ret
|
||||
RETURN estado,ret
|
||||
END FUNCTION
|
||||
|
||||
#
|
||||
## Communications library using com (http or https)
|
||||
#
|
||||
|
||||
FUNCTION apilayer_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.setHeader("apikey","gPWg6pDyOt3k2RL2ElbghaMqs6dNMAwm")
|
||||
|
||||
CALL http_req.doRequest()
|
||||
|
||||
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.sqlerrd[2])
|
||||
END TRY
|
||||
|
||||
|
||||
RETURN 0, result
|
||||
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION ipquality_send_command(url)
|
||||
|
||||
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.setHeader("apikey","cHZNnfXkbJDtx43YcrQqHSjXzBrndwT3")
|
||||
|
||||
CALL http_req.doRequest()
|
||||
|
||||
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.sqlerrd[2])
|
||||
END TRY
|
||||
|
||||
|
||||
RETURN 0, result
|
||||
|
||||
END FUNCTION
|
||||
FUNCTION show_sync_err(msg)
|
||||
DEFINE msg STRING
|
||||
CALL fgl_winmessage(%"ERROR", msg, "exclamation")
|
||||
END FUNCTION
|
||||
@@ -97,16 +97,25 @@ FUNCTION productosconteo(pdata)
|
||||
IF STATUS < 0 THEN
|
||||
LET p.mensajes.cod_msg=STATUS
|
||||
LET p.mensajes.descripcion = 'ERROR EN CONEXION ',SQLCA.sqlerrm
|
||||
DISCONNECT CURRENT
|
||||
# sin DISCONNECT: no hay conexion abierta y el error tumbaba el server
|
||||
RETURN util.JSON.stringify(p)
|
||||
|
||||
END IF
|
||||
LET fecha = TODAY
|
||||
|
||||
END IF
|
||||
LET fecha = TODAY
|
||||
LET fecha_ini = fecha - 90
|
||||
|
||||
|
||||
IF p.credenciales.tipo_inventario IS NULL OR p.credenciales.tipo_inventario <> "productos" THEN
|
||||
# solo productos tiene consulta; antes PREPARE de NULL tumbaba el server
|
||||
LET p.mensajes.cod_msg = -1
|
||||
LET p.mensajes.descripcion = 'TIPO DE INVENTARIO NO DISPONIBLE PARA CONTEO: ',
|
||||
p.credenciales.tipo_inventario
|
||||
DISCONNECT CURRENT
|
||||
RETURN util.JSON.stringify(p)
|
||||
END IF
|
||||
|
||||
IF p.credenciales.tipo_inventario = "productos" THEN
|
||||
SELECT a.fecha_conteo INTO xfecha_conteo FROM intb00044 a
|
||||
WHERE a.tipo_inventario = tipo_inventario AND a.disponible = "SI"
|
||||
SELECT a.fecha_conteo INTO xfecha_conteo FROM intb00044 a
|
||||
WHERE a.tipo_inventario = 'PRODUCTOS TERMINADOS' AND a.disponible = "SI"
|
||||
DISPLAY "ESTOY PRODUCTOS",p.credenciales.codn
|
||||
|
||||
LET selec =
|
||||
@@ -127,7 +136,9 @@ FUNCTION productosconteo(pdata)
|
||||
"SELECT a.codid,b.bodega,c.descripcion,0"{ISNULL(SUM(b.cantidad_2),0)},",d.cod_seccion,d.cod_tramo,d.cod_fila,d.cod_pos
|
||||
FROM iptb00006 b,iptb00002 a INNER JOIN intb00015 e ON e.cod_n = a.cod_n and
|
||||
e.cod_grupo = a.cod_grupo and e.cod_tipo = a.cod_tipo and e.cod_sec = a.cod_sec and
|
||||
e.estado='Pendiente' ,intb00009 c,iptb00062 d
|
||||
e.estado='Pendiente' AND
|
||||
e.semana_del = (SELECT MIN (x.semana_del) FROM intb00015 x WHERE x.semana_del >= GETDATE())
|
||||
,intb00009 c,iptb00062 d
|
||||
WHERE (a.cod_n = b.cod_n and ",
|
||||
|
||||
" a.cod_grupo = b.cod_grupo and a.cod_tipo = b.cod_tipo and a.cod_sec = b.cod_sec) and b.status_t is null ",
|
||||
@@ -189,6 +200,14 @@ FUNCTION productosconteo(pdata)
|
||||
|
||||
END FOREACH
|
||||
DISPLAY "NUMERO DE PRODUCTOS ",i
|
||||
IF p.productos.getLength() = 0 THEN
|
||||
# sin semana programada en intb00015 no hay nada que contar; evita la
|
||||
# consulta de existencias (iptb00006) que tardaba >5 min y bloqueaba el WS
|
||||
LET p.mensajes.cod_msg = 100
|
||||
LET p.mensajes.descripcion = 'NO HAY PRODUCTOS PROGRAMADOS PARA CONTEO (intb00015)'
|
||||
DISCONNECT CURRENT
|
||||
RETURN util.JSON.stringify(p)
|
||||
END IF
|
||||
LET i = 1
|
||||
|
||||
PREPARE comando2 FROM s1
|
||||
|
||||
@@ -0,0 +1,213 @@
|
||||
IMPORT util
|
||||
IMPORT os
|
||||
|
||||
FUNCTION productosconteo(pdata)
|
||||
DEFINE xfecha_conteo DATE
|
||||
DEFINE pdata STRING
|
||||
|
||||
DEFINE producto RECORD
|
||||
codid INT,
|
||||
cod_n SMALLINT,
|
||||
cod_grupo SMALLINT,
|
||||
cod_tipo SMALLINT,
|
||||
cod_sec SMALLINT,
|
||||
descripcion VARCHAR(100),
|
||||
unidad_med VARCHAR(4),
|
||||
factor_conv FLOAT,
|
||||
despiece STRING,
|
||||
existencia DEC(12,5),
|
||||
consumo DEC(12,5),
|
||||
costo DEC(12,5),
|
||||
precio DEC(12,2),
|
||||
ordenes DEC(12,5),
|
||||
despachado DEC(12,5),
|
||||
desglose VARCHAR(1),
|
||||
|
||||
reservada DEC(12,5),
|
||||
disponible DEC(12,5),
|
||||
transito DEC(12,5),
|
||||
dias SMALLINT,
|
||||
fecha CHAR(10),
|
||||
fecha_conteo CHAR(10)
|
||||
END RECORD
|
||||
DEFINE existencia RECORD
|
||||
codid INT,
|
||||
bodega SMALLINT,
|
||||
descripcion_bodega VARCHAR(100),
|
||||
cantidad FLOAT,
|
||||
cod_seccion INT,cod_tramo INT,cod_fila INT,cod_pos,
|
||||
fecha DATE
|
||||
END RECORD
|
||||
DEFINE p RECORD
|
||||
credenciales RECORD
|
||||
usuario,clave,tipo_inventario VARCHAR(50),
|
||||
codn INT
|
||||
END RECORD,
|
||||
|
||||
productos DYNAMIC ARRAY OF RECORD
|
||||
codid INT,
|
||||
cod_n SMALLINT,
|
||||
cod_grupo SMALLINT,
|
||||
cod_tipo SMALLINT,
|
||||
cod_sec SMALLINT,
|
||||
descripcion VARCHAR(100),
|
||||
unidad_med VARCHAR(4),
|
||||
factor_conv FLOAT,
|
||||
despiece STRING,
|
||||
existencia DEC(12,5),
|
||||
consumo DEC(12,5),
|
||||
costo DEC(12,5),
|
||||
precio DEC(12,2),
|
||||
ordenes DEC(12,5),
|
||||
despachado DEC(12,5),
|
||||
desglose VARCHAR(1),
|
||||
reservada DEC(12,5),
|
||||
disponible DEC(12,5),
|
||||
transito DEC(12,5),
|
||||
dias SMALLINT,
|
||||
fecha CHAR(10),
|
||||
fecha_conteo CHAR(10)
|
||||
|
||||
END RECORD ,
|
||||
existencia DYNAMIC ARRAY OF RECORD
|
||||
codid INT,
|
||||
bodega SMALLINT,
|
||||
descripcion_bodega VARCHAR(100),
|
||||
cantidad FLOAT,
|
||||
cod_seccion INT,cod_tramo INT,cod_fila INT,cod_pos,
|
||||
fecha DATE
|
||||
END RECORD,
|
||||
mensajes RECORD
|
||||
cod_msg INT,
|
||||
descripcion STRING
|
||||
END RECORD
|
||||
END RECORD,
|
||||
i int,
|
||||
selec,s1 STRING,
|
||||
fecha,fecha_ini DATE
|
||||
CALL util.JSON.parse(pdata,p)
|
||||
IF STATUS < 0 THEN
|
||||
LET p.mensajes.cod_msg=STATUS
|
||||
LET p.mensajes.descripcion = 'ERROR EN CONEXION ',SQLCA.sqlerrm
|
||||
RETURN util.JSON.stringify(p)
|
||||
|
||||
END IF
|
||||
# DISPLAY "productos ",p.credenciales.usuario," ",p.credenciales.clave," ",p.credenciales.tipo_inventario
|
||||
CONNECT TO "smarmotech" USER p.credenciales.usuario USING p.credenciales.clave
|
||||
IF STATUS < 0 THEN
|
||||
LET p.mensajes.cod_msg=STATUS
|
||||
LET p.mensajes.descripcion = 'ERROR EN CONEXION ',SQLCA.sqlerrm
|
||||
DISCONNECT CURRENT
|
||||
RETURN util.JSON.stringify(p)
|
||||
|
||||
END IF
|
||||
LET fecha = TODAY
|
||||
LET fecha_ini = fecha - 90
|
||||
|
||||
IF p.credenciales.tipo_inventario = "productos" THEN
|
||||
SELECT a.fecha_conteo INTO xfecha_conteo FROM intb00044 a
|
||||
WHERE a.tipo_inventario = tipo_inventario AND a.disponible = "SI"
|
||||
DISPLAY "ESTOY PRODUCTOS",p.credenciales.codn
|
||||
|
||||
LET selec =
|
||||
"SELECT a.codid,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,a.descrip_esp,a.unidad_med,ISNULL(d.factor_conv,1),b.cod_n,
|
||||
'0','0', '0','0','0','0',a.desglose ",
|
||||
" FROM iptb00002 a,iptb00001 d INNER JOIN intb00015 e ON e.cod_n = d.cod_n and
|
||||
e.cod_grupo = d.cod_grupo and e.cod_tipo = d.cod_tipo and e.cod_sec = d.cod_sec and
|
||||
e.estado = 'Pendiente'
|
||||
LEFT OUTER JOIN iptb00027 b ON d.cod_n = b.cod_n and
|
||||
d.cod_grupo = b.cod_grupo and d.cod_tipo = b.cod_tipo and d.cod_sec = b.cod_sec
|
||||
where ",
|
||||
" (a.cod_n = d.cod_n and a.cod_grupo = d.cod_grupo and a.cod_tipo = d.cod_tipo and ",
|
||||
" a.cod_sec = d.cod_sec) AND a.status_t IS NULL AND ",
|
||||
"a.control_existencia='SI' AND e.semana_del = (SELECT MIN (a.semana_del) FROM intb00015 a WHERE semana_del >= GETDATE())",
|
||||
" ORDER BY a.codid "
|
||||
|
||||
LET s1 =
|
||||
"SELECT a.codid,b.bodega,c.descripcion,0"{ISNULL(SUM(b.cantidad_2),0)},",d.cod_seccion,d.cod_tramo,d.cod_fila,d.cod_pos
|
||||
FROM iptb00006 b,iptb00002 a INNER JOIN intb00015 e ON e.cod_n = a.cod_n and
|
||||
e.cod_grupo = a.cod_grupo and e.cod_tipo = a.cod_tipo and e.cod_sec = a.cod_sec and
|
||||
e.estado='Pendiente' ,intb00009 c,iptb00062 d
|
||||
WHERE (a.cod_n = b.cod_n and ",
|
||||
|
||||
" a.cod_grupo = b.cod_grupo and a.cod_tipo = b.cod_tipo and a.cod_sec = b.cod_sec) and b.status_t is null ",
|
||||
" and (d.cod_n = a.cod_n and d.cod_grupo = a.cod_grupo and d.cod_tipo = a.cod_tipo and d.cod_Sec = a.cod_sec) ",
|
||||
" and ",
|
||||
"a.control_existencia='SI' AND a.dispositivo_movil='SI' and b.bodega = c.cod_bodega ",
|
||||
|
||||
" group by a.codid,b.bodega,c.descripcion,d.cod_seccion,d.cod_tramo,d.cod_fila,d.cod_pos ",
|
||||
" having SUM(b.cantidad_2) > 0 "
|
||||
|
||||
END IF
|
||||
PREPARE comando FROM selec
|
||||
DECLARE c2 CURSOR FOR comando
|
||||
|
||||
LET i = 1
|
||||
FOREACH c2 INTO producto.*
|
||||
|
||||
IF producto.cod_n IS NOT null THEN
|
||||
IF p.credenciales.tipo_inventario = 'productos' THEN
|
||||
LET producto.costo=0
|
||||
# CALL disponibles(producto.cod_n,producto.cod_grupo,producto.cod_tipo,producto.cod_sec,TODAY)
|
||||
# RETURNING producto.ordenes,producto.despachado,producto.transito,producto.existencia,
|
||||
# producto.reservada
|
||||
LET producto.disponible = producto.existencia - (producto.ordenes+producto.despachado+producto.reservada)
|
||||
IF producto.disponible IS NULL THEN
|
||||
LET producto.disponible=0
|
||||
END IF
|
||||
# DESPIECE
|
||||
IF producto.despiece IS NULL THEN
|
||||
LET producto.despiece = 'NO'
|
||||
ELSE
|
||||
LET producto.despiece = 'SI'
|
||||
END IF
|
||||
|
||||
END IF
|
||||
IF producto.consumo < 0 THEN
|
||||
LET producto.consumo = producto.consumo * -1
|
||||
END IF
|
||||
IF producto.consumo > 0 THEN
|
||||
LET producto.dias =(producto.disponible/ producto.consumo) * 90
|
||||
ELSE
|
||||
LET producto.dias=0
|
||||
END IF
|
||||
IF producto.descripcion IS NULL THEN
|
||||
LET producto.descripcion = "NO TIENE"
|
||||
END IF
|
||||
IF producto.unidad_med IS NULL THEN
|
||||
LET producto.unidad_med='UD'
|
||||
END IF
|
||||
LET producto.fecha=TODAY USING "dd/mm/yyyy"
|
||||
|
||||
LET producto.fecha_conteo = xfecha_conteo
|
||||
LET p.productos[i].* = producto.*
|
||||
LET i = i + 1
|
||||
|
||||
|
||||
END IF
|
||||
|
||||
|
||||
END FOREACH
|
||||
DISPLAY "NUMERO DE PRODUCTOS ",i
|
||||
LET i = 1
|
||||
|
||||
PREPARE comando2 FROM s1
|
||||
DECLARE c3 CURSOR FOR comando2
|
||||
|
||||
FOREACH c3 INTO existencia.*
|
||||
IF existencia.cantidad IS NOT NULL THEN
|
||||
IF existencia.codid > 0 THEN
|
||||
LET existencia.fecha = today
|
||||
LET p.existencia[i].* = existencia.*
|
||||
IF p.existencia[i].cantidad IS NULL THEN
|
||||
LET p.existencia[i].cantidad=0
|
||||
END IF
|
||||
LET i = i+1
|
||||
END IF
|
||||
END IF
|
||||
END FOREACH
|
||||
DISPLAY "NUMERO DE PRODUCTOS EXISTENCIA ",i
|
||||
DISCONNECT CURRENT
|
||||
RETURN util.JSON.stringify(p)
|
||||
|
||||
END FUNCTION
|
||||
Reference in New Issue
Block a user