Files
MBS/PROYECTO/TEST/tests/ApiTest.4gl
T

1042 lines
35 KiB
Plaintext

{
------------------------------------------------------------------
PROGRAMA : MaintainX_API
OBJETIVO : Programa que ejecuta los POST, GET Y PUT ENTRE MAINTAINX
Y GÉNERO
PROGRAMADOR : Ing. Elvis García.
FECHA REALIZACION : Agosto 15, 2024.
------------------------------------------------------------------
}
OPTIONS
SHORT CIRCUIT
IMPORT com
IMPORT util
SCHEMA smarmotech
DEFINE url, token STRING
--DEFINE result STRING
DEFINE http_req com.HTTPRequest
DEFINE http_resp com.HTTPResponse
DEFINE json_response STRING
DEFINE arr_GET RECORD --recuperar un activo en especifico
asset RECORD
id INTEGER,
name VARCHAR(100),
description VARCHAR(200),
locationId INTEGER,
parentId INTEGER,
creatorId INTEGER,
createdAt DATETIME YEAR TO FRACTION,
updatedAt DATETIME YEAR TO FRACTION,
attachments DYNAMIC ARRAY OF STRING,
criticalityId INTEGER,
childrenIds DYNAMIC ARRAY OF INTEGER,
teamIds DYNAMIC ARRAY OF INTEGER,
assetTypes DYNAMIC ARRAY OF STRING,
extraFields RECORD
model VARCHAR(100),
ID_Transacciones INT,
codigo_ABR VARCHAR(100),
ID_Sistema_Contable STRING
END RECORD,
vendorIds DYNAMIC ARRAY OF INTEGER,
status RECORD
id INTEGER,
status VARCHAR(50),
startedAt DATETIME YEAR TO FRACTION,
description VARCHAR(200),
downtimeType STRING,
createdAt DATETIME YEAR TO FRACTION,
updatedAt DATETIME YEAR TO FRACTION
END RECORD
END RECORD
END RECORD
DEFINE all_assets RECORD --Para llamar todos los activos
assets DYNAMIC ARRAY OF RECORD
id INTEGER,
name VARCHAR(100),
description VARCHAR(200),
parentId INTEGER,
criticalityId INTEGER,
locationId INTEGER,
createdAt DATETIME YEAR TO FRACTION,
updatedAt DATETIME YEAR TO FRACTION,
creatorId INTEGER
END RECORD,
nextCursor VARCHAR(50),
nextPageUrl VARCHAR(200)
END RECORD
DEFINE arr_POST RECORD --Para crear un activo en maintainX
name VARCHAR(100),
description VARCHAR(200),
barcode VARCHAR(100),
criticalityId INTEGER,
parentId INTEGER,
locationId INTEGER,
teamIds DYNAMIC ARRAY OF INTEGER,
assetTypes DYNAMIC ARRAY OF STRING,
extraFields RECORD
Model VARCHAR(100),
ID_Transacciones INT,
Codigo_ABR VARCHAR(100),
ID_Sistema_Contable STRING
END RECORD,
vendorIds DYNAMIC ARRAY OF INTEGER
END RECORD
DEFINE repuestoAPI RECORD --Repuestos record
name VARCHAR(100),
description VARCHAR(200),
area VARCHAR(100),
unitCost INTEGER,
availableQuantity INTEGER,
minimumQuantity INTEGER,
barcode VARCHAR(100),
locationId INTEGER,
partTypes DYNAMIC ARRAY OF STRING,
assetIds DYNAMIC ARRAY OF INTEGER,
teamIds DYNAMIC ARRAY OF INTEGER,
extraFields RECORD
exercitation_5c VARCHAR(100),
esse1 VARCHAR(100),
anim_13 VARCHAR(100)
END RECORD,
vendorIds DYNAMIC ARRAY OF INTEGER
END RECORD
DEFINE answer RECORD
id INT
END RECORD
DEFINE usuarios, clave, cmd STRING
MAIN
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CONNECT TO "smarmotech" USER usuarios USING clave
--CALL ApiMaintainX('GET', NULL,NULL) --TODOS LOS ACTIVOS
--CALL ApiMaintainX('GET', 4655907,NULL) --UN ACTIVO ESPECIFICO
--CALL ApiMaintainX('POST', NULL, NULL) --CREAR UN ACTIVO
--CALL ApiMaintainX('PATCH', 6186251, NULL) --ACTUALIZAR UN ACTIVO
--CALL ApiMaintainX('DELETE', 6186251) --Eliminar un activo
CALL add_repuestos() --AGREGAR REPUESTOS DE GENERO A MAINTAINX
--CALL delete_repuestos() --ELIMINAR REPUESTOS
END MAIN
FUNCTION ApiMaintainC(metodo, idApi, Data) --FUNCION PARA COMPRAS
DEFINE data RECORD LIKE cotb00001.*
DEFINE response RECORD
name STRING,
description STRING,
phoneNumbers DYNAMIC ARRAY OF STRING
END RECORD
DEFINE
i INTEGER,
metodo STRING,
idAPi STRING,
answer INTEGER
DEFINE post_response RECORD
id INTEGER
END RECORD
LET url = "https://api.getmaintainx.com/v1/vendors"
LET token =
"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjUyNDIwMCwib3JnYW5pemF0aW9uSWQiOjIwNDA2MCwiaWF0IjoxNzIyNjAzOTQ3LCJzdWIiOiJSRVNUX0FQSV9BVVRIIiwianRpIjoiYTc3NjQzY2EtYWEzNy00MzQ0LWJlMmEtYTA2ZTM4OTVjZjA0In0.EmlDZmbojh0MW_We_GX829zMNKIsn4W8Q6qK60xfWFw"
IF idApi IS NOT NULL THEN
LET url = url || '/' || idApi
END IF
LET http_req = com.HTTPRequest.Create(url)
CALL http_req.setConnectionTimeout(10)
CALL http_req.setCharset("UTF-8")
CALL http_req.setHeader("Authorization", token)
CALL http_req.setHeader("Content-Type", "application/json")
CALL http_req.setHeader("accept", "application/json")
CASE metodo
WHEN 'GET'
TRY
CALL http_req.setMethod(metodo)
CALL http_req.doRequest()
LET http_resp = http_req.getResponse()
IF http_resp.getStatusCode() != 200 THEN
CALL show_sync_err(http_resp.getStatusDescription())
ELSE
LET json_response = http_resp.getTextResponse()
IF idApi IS NOT NULL THEN
CALL util.JSON.parse(json_response, arr_GET)
CALL display_asset(arr_GET.*)
LET answer = 1
ELSE
CALL util.JSON.parse(json_response, all_assets)
CALL display_all_assets(all_assets.*)
LET answer = 1
END IF
END IF
CATCH
DISPLAY SFMT("HTTP request error: STATUS=%1 (%2)",
STATUS, SQLCA.SQLERRM)
END TRY
EXIT CASE
WHEN 'POST'
TRY
LET response.name = data.nom_sp
LET response.description =
"CODIGO: "
|| data.cod_sp
|| "-"
|| data.cod_sp_sec
|| ", DIRECCION: "
|| data.dir_sp
LET response.phoneNumbers[1] = data.tel_sp
LET json_response = util.JSON.stringify(response)
DISPLAY json_response
CALL http_req.setMethod(metodo)
CALL http_req.doTextRequest(json_response)
LET http_resp = http_req.getResponse()
IF http_resp.getStatusCode() != 201 THEN
CALL show_sync_err(http_resp.getStatusDescription())
ELSE
LET json_response = http_resp.getTextResponse()
CALL util.JSON.parse(json_response, post_response)
DISPLAY SFMT("Se ha creado el proveedor con ID: %1",
post_response.id)
LET answer = post_response.id
END IF
CATCH
DISPLAY SFMT("HTTP request error: STATUS=%1 (%2)",
STATUS, SQLCA.SQLERRM)
END TRY
EXIT CASE
WHEN 'PATCH'
TRY
LET response.NAME = data.nom_sp
LET response.description =
"CODIGO: "
|| DATA.cod_sp
|| "-"
|| data.cod_sp_sec
|| ", DIRECCION: "
|| data.dir_sp
LET response.phoneNumbers[1] = data.tel_sp
LET json_response = util.JSON.stringify(response)
DISPLAY json_response
CALL http_req.setMethod(metodo)
CALL http_req.doTextRequest(json_response)
LET http_resp = http_req.getResponse()
IF http_resp.getStatusCode() != 200
AND http_resp.getStatusCode() != 404 THEN
CALL show_sync_err(http_resp.getStatusDescription())
ELSE
DISPLAY "Se ha actualizado el proveedor con exito"
LET answer = 1
END IF
CATCH
DISPLAY SFMT("HTTP request error: STATUS=%1 (%2)",
STATUS, SQLCA.SQLERRM)
END TRY
EXIT CASE
WHEN 'DELETE'
TRY
CALL http_req.setMethod(metodo)
CALL http_req.doRequest()
LET http_resp = http_req.getResponse()
IF http_resp.getStatusCode() != 204
AND http_resp.getStatusCode() != 404 THEN
CALL show_sync_err(http_resp.getStatusDescription())
ELSE
DISPLAY "Se ha dado de baja el activo con exito"
LET answer = 1
END IF
CATCH
DISPLAY SFMT("HTTP request error: STATUS=%1 (%2)",
STATUS, SQLCA.SQLERRM)
END TRY
EXIT CASE
OTHERWISE
DISPLAY "Nothing happened..."
EXIT CASE
END CASE
RETURN answer
END FUNCTION
FUNCTION ApiMaintainR(metodo, idApi, repuestos) --FUNCION PARA REPUESTOS
DEFINE repuestos RECORD
cod_n INT,
cod_grupo INT,
cod_tipo INT,
cod_sec INT,
descrip_esp STRING,
descrip_eng STRING,
unidad_med VARCHAR(10),
existencia NUMERIC(10, 5),
existencia_min NUMERIC(10, 5),
dia_llegada SMALLINT,
categoria CHAR(1),
status_t CHAR(1),
us_crea CHAR(50),
fech_crea DATETIME YEAR TO FRACTION,
us_mod CHAR(50),
fech_mod DATETIME YEAR TO FRACTION,
codid INT,
cuenta CHAR(14),
id_maintainX INT,
enviarMX CHAR(5)
END RECORD
DEFINE
i INTEGER,
metodo STRING,
idAPi STRING,
answer INT
DEFINE post_response RECORD
id INTEGER
END RECORD
LET url = "https://api.getmaintainx.com/v1/parts"
LET token =
"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjUyNDIwMCwib3JnYW5pemF0aW9uSWQiOjIwNDA2MCwiaWF0IjoxNzIyNjAzOTQ3LCJzdWIiOiJSRVNUX0FQSV9BVVRIIiwianRpIjoiYTc3NjQzY2EtYWEzNy00MzQ0LWJlMmEtYTA2ZTM4OTVjZjA0In0.EmlDZmbojh0MW_We_GX829zMNKIsn4W8Q6qK60xfWFw"
IF idApi IS NOT NULL THEN
LET url = url || '/' || idApi
END IF
LET http_req = com.HTTPRequest.Create(url)
CALL http_req.setConnectionTimeout(10)
CALL http_req.setCharset("UTF-8")
CALL http_req.setHeader("Authorization", token)
CALL http_req.setHeader("Content-Type", "application/json")
CALL http_req.setHeader("accept", "application/json")
INITIALIZE answer TO NULL
CASE metodo
WHEN 'GET'
TRY
CALL http_req.setMethod(metodo)
CALL http_req.doRequest()
LET http_resp = http_req.getResponse()
IF http_resp.getStatusCode() != 200 THEN
CALL show_sync_err(http_resp.getStatusDescription())
ELSE
LET json_response = http_resp.getTextResponse()
IF idApi IS NOT NULL THEN
CALL util.JSON.parse(json_response, repuestoAPI)
--CALL display_asset(repuestoAPI.*)
LET answer = 1
ELSE
CALL util.JSON.parse(json_response, all_assets)
CALL display_all_assets(all_assets.*)
LET answer = 1
END IF
END IF
CATCH
CALL fgl_winmessage(
"CATCH ERROR MESSAGE",
"HTTP request error: STATUS="
|| STATUS
|| " ("
|| SQLCA.SQLERRM
|| ")",
"stop")
END TRY
EXIT CASE
WHEN 'POST'
TRY
LET repuestoAPI.name =
repuestos.cod_n
|| "-"
|| repuestos.cod_grupo
|| "-"
|| repuestos.cod_tipo
|| "-"
|| repuestos.cod_sec
|| " "
|| repuestos.descrip_esp
LET repuestoAPI.description = repuestos.descrip_esp
LET repuestoAPI.availableQuantity = repuestos.existencia
LET repuestoAPI.minimumQuantity = repuestos.existencia_min
LET repuestoAPI.assetIds[1] = 6210945
LET json_response = util.JSON.stringify(repuestoAPI)
DISPLAY json_response
CALL http_req.setMethod(metodo)
CALL http_req.doTextRequest(json_response)
LET http_resp = http_req.getResponse()
IF http_resp.getStatusCode() != 201 THEN
CALL show_sync_err(http_resp.getStatusDescription())
ELSE
LET json_response = http_resp.getTextResponse()
CALL util.JSON.parse(json_response, post_response)
DISPLAY SFMT("Se ha creado el activo con ID: %1",
post_response.id)
LET answer = post_response.id
END IF
CATCH
CALL fgl_winmessage(
"CATCH ERROR MESSAGE",
"HTTP request error: STATUS="
|| STATUS
|| " ("
|| SQLCA.SQLERRM
|| ")",
"stop")
END TRY
EXIT CASE
WHEN 'PATCH'
TRY
LET repuestoAPI.name =
repuestos.cod_n
|| "-"
|| repuestos.cod_grupo
|| "-"
|| repuestos.cod_tipo
|| "-"
|| repuestos.cod_sec
|| " "
|| repuestos.descrip_esp
LET repuestoAPI.description = repuestos.descrip_esp
LET repuestoAPI.availableQuantity = repuestos.existencia
LET repuestoAPI.minimumQuantity = repuestos.existencia_min
--LET repuestoAPI.assetIds[1] = 6210945
LET json_response = util.JSON.stringify(repuestoAPI)
--DISPLAY json_response
CALL http_req.setMethod(metodo)
CALL http_req.doTextRequest(json_response)
LET http_resp = http_req.getResponse()
IF http_resp.getStatusCode() != 200
AND http_resp.getStatusCode() != 404 THEN
CALL show_sync_err(http_resp.getStatusDescription())
ELSE
DISPLAY "Se ha actualizado el activo con éxito"
LET answer = 1
END IF
CATCH
CALL fgl_winmessage(
"CATCH ERROR MESSAGE",
"HTTP request error: STATUS="
|| STATUS
|| " ("
|| SQLCA.SQLERRM
|| ")",
"stop")
END TRY
EXIT CASE
WHEN 'DELETE'
TRY
CALL http_req.setMethod(metodo)
CALL http_req.doRequest()
LET http_resp = http_req.getResponse()
IF http_resp.getStatusCode() != 204
AND http_resp.getStatusCode() != 404 THEN
CALL show_sync_err(http_resp.getStatusDescription())
ELSE
DISPLAY "Se ha dado de baja el activo con exito"
LET answer = 1
END IF
CATCH
CALL fgl_winmessage(
"CATCH ERROR MESSAGE",
"HTTP request error: STATUS="
|| STATUS
|| " ("
|| SQLCA.SQLERRM
|| ")",
"stop")
END TRY
EXIT CASE
OTHERWISE
DISPLAY "Nothing happened..."
EXIT CASE
END CASE
RETURN answer
END FUNCTION
FUNCTION ApiMaintainX(metodo, idApi, Data) --FUNCION PARA ACTIVOS
DEFINE Data RECORD
codigo INT,
descripcion1 STRING,
cuenta_no CHAR(8),
cta_depr CHAR(8),
cta_gasto CHAR(8),
departamento SMALLINT,
fech_compra DATE,
duracion INT,
fech_elim DATE,
referencia STRING,
fabricante STRING,
status_t CHAR(1),
us_crea STRING,
fech_crea DATE,
us_mod STRING,
fech_mod DATE,
sucid INT,
id_MaintainX INT,
id_maquina INT,
desc_maquina STRING
END RECORD
DEFINE
i INTEGER,
metodo STRING,
idAPi , respuesta STRING,
answer INTEGER
DEFINE post_response RECORD
id INTEGER
END RECORD
LET url = "https://api.getmaintainx.com/v1/assets"
LET token =
"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjUyNDIwMCwib3JnYW5pemF0aW9uSWQiOjIwNDA2MCwiaWF0IjoxNzIyNjAzOTQ3LCJzdWIiOiJSRVNUX0FQSV9BVVRIIiwianRpIjoiYTc3NjQzY2EtYWEzNy00MzQ0LWJlMmEtYTA2ZTM4OTVjZjA0In0.EmlDZmbojh0MW_We_GX829zMNKIsn4W8Q6qK60xfWFw"
IF idApi IS NOT NULL THEN
LET url = url || '/' || idApi
END IF
LET http_req = com.HTTPRequest.Create(url)
CALL http_req.setConnectionTimeout(10)
CALL http_req.setCharset("UTF-8")
CALL http_req.setHeader("Authorization", token)
CALL http_req.setHeader("Content-Type", "application/json")
CALL http_req.setHeader("accept", "application/json")
CASE metodo
WHEN 'GET'
TRY
CALL http_req.setMethod(metodo)
CALL http_req.doRequest()
LET http_resp = http_req.getResponse()
IF http_resp.getStatusCode() != 200 THEN
CALL show_sync_err(http_resp.getStatusDescription())
ELSE
LET json_response = http_resp.getTextResponse()
IF idApi IS NOT NULL THEN
CALL util.JSON.parse(json_response, arr_GET)
CALL display_asset(arr_GET.*)
LET answer = 1
ELSE
CALL util.JSON.parse(json_response, all_assets)
CALL display_all_assets(all_assets.*)
LET answer = 1
END IF
END IF
CATCH
DISPLAY SFMT("HTTP request error: STATUS=%1 (%2)",
STATUS, SQLCA.SQLERRM)
END TRY
EXIT CASE
WHEN 'POST'
TRY
LET arr_POST.name = data.descripcion1
LET arr_POST.description = data.descripcion1
{LET arr_POST.barcode = NULL
LET arr_POST.criticalityId = NULL
LET arr_POST.parentId = NULL
LET arr_POST.locationId = data.sucid}
{FOR i = 1 TO 1
LET arr_POST.teamIds[i] = NULL
END FOR}
{FOR i = 1 TO 1
LET arr_POST.assetTypes[i] = "Tipo1"
END FOR}
LET arr_POST.extraFields.model = data.descripcion1
LET arr_POST.extraFields.ID_Transacciones = NULL
LET arr_POST.extraFields.codigo_ABR = NULL
LET arr_POST.extraFields.ID_Sistema_Contable = data.codigo
{ FOR i = 1 TO 1
LET arr_POST.vendorIds[i] = 1
END FOR }
LET json_response = util.JSON.stringify(arr_POST)
DISPLAY json_response
CALL http_req.setMethod(metodo)
CALL http_req.doTextRequest(json_response)
LET http_resp = http_req.getResponse()
IF http_resp.getStatusCode() != 201 THEN
CALL show_sync_err(http_resp.getStatusDescription())
ELSE
LET json_response = http_resp.getTextResponse()
CALL util.JSON.parse(json_response, post_response)
DISPLAY SFMT("Se ha creado el activo con ID: %1",
post_response.id)
LET answer = post_response.id
END IF
CATCH
DISPLAY SFMT("HTTP request error: STATUS=%1 (%2)",
STATUS, SQLCA.SQLERRM)
END TRY
EXIT CASE
WHEN 'PATCH'
TRY
LET arr_POST.name = data.descripcion1
LET arr_POST.description = data.descripcion1
{LET arr_POST.barcode = NULL
LET arr_POST.criticalityId = NULL
LET arr_POST.parentId = NULL
LET arr_POST.locationId = data.sucid}
{FOR i = 1 TO 1
LET arr_POST.teamIds[i] = NULL
END FOR}
{FOR i = 1 TO 1
LET arr_POST.assetTypes[i] = "Tipo1"
END FOR}
LET arr_POST.extraFields.model = data.descripcion1
LET arr_POST.extraFields.ID_Transacciones = NULL
LET arr_POST.extraFields.codigo_ABR = NULL
LET arr_POST.extraFields.ID_Sistema_Contable = data.codigo
{ FOR i = 1 TO 1
LET arr_POST.vendorIds[i] = 1
END FOR }
LET json_response = util.JSON.stringify(arr_POST)
LET cmd = 'Powershell -ExecutionPolicy Bypass -File "F:/MARMOTECHC/copia/patch_request.ps1" -jsonData ','', json_response, '',' -apiUrl "', url, '"'
RUN cmd RETURNING respuesta
CALL util.JSON.parse(respuesta, arr_GET)
DISPLAY arr_get.asset.*
IF Arr_GET.asset.id <> NULL THEN
DISPLAY "WELL DONE"
LET answer = 1
ELSE
DISPLAY "SOMETHING HAPPENED"
END IF
{CALL http_req.setMethod(metodo)
CALL http_req.doTextRequest(json_response)
LET http_resp = http_req.getResponse()
IF http_resp.getStatusCode() != 200
AND http_resp.getStatusCode() != 404 THEN
CALL show_sync_err(http_resp.getStatusDescription())
ELSE
DISPLAY "Se ha actualizado el activo con exito"
LET answer = 1
END IF}
CATCH
DISPLAY SFMT("HTTP request error: STATUS=%1 (%2)",
STATUS, SQLCA.SQLERRM)
END TRY
EXIT CASE
WHEN 'DELETE'
TRY
CALL http_req.setMethod(metodo)
CALL http_req.doRequest()
LET http_resp = http_req.getResponse()
IF http_resp.getStatusCode() != 204
AND http_resp.getStatusCode() != 404 THEN
CALL show_sync_err(http_resp.getStatusDescription())
ELSE
DISPLAY "Se ha dado de baja el activo con exito"
LET answer = 1
END IF
CATCH
DISPLAY SFMT("HTTP request error: STATUS=%1 (%2)",
STATUS, SQLCA.SQLERRM)
END TRY
EXIT CASE
OTHERWISE
DISPLAY "Nothing happened..."
EXIT CASE
END CASE
RETURN answer
END FUNCTION
FUNCTION add_repuestos()
--ID donde iran todos los repuestos: 6210945
DEFINE
repuestos DYNAMIC ARRAY OF RECORD
cod_n INT,
cod_grupo INT,
cod_tipo INT,
cod_sec INT,
descrip_esp STRING,
{descrip_eng STRING,
unidad_med VARCHAR(10),}
existencia NUMERIC(10, 5),
existencia_min NUMERIC(10, 5),
{dia_llegada SMALLINT,
categoria CHAR(1),
status_t CHAR(1),
us_crea CHAR(50),
fech_crea DATETIME YEAR TO FRACTION,
us_mod CHAR(50),
fech_mod DATETIME YEAR TO FRACTION,
codid INT,
cuenta CHAR(14),}
id_maintainX INT,
enviarMX CHAR(5)
END RECORD,
i , j INT,
flag BOOLEAN
DEFINE maquina DYNAMIC ARRAY OF RECORD
codigo INT,
nombre STRING
END RECORD
LET url = "https://api.getmaintainx.com/v1/parts"
LET token =
"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjUyNDIwMCwib3JnYW5pemF0aW9uSWQiOjIwNDA2MCwiaWF0IjoxNzIyNjAzOTQ3LCJzdWIiOiJSRVNUX0FQSV9BVVRIIiwianRpIjoiYTc3NjQzY2EtYWEzNy00MzQ0LWJlMmEtYTA2ZTM4OTVjZjA0In0.EmlDZmbojh0MW_We_GX829zMNKIsn4W8Q6qK60xfWFw"
LET http_req = com.HTTPRequest.Create(url)
CALL http_req.setConnectionTimeout(10)
CALL http_req.setCharset("UTF-8")
CALL http_req.setHeader("Authorization", token)
CALL http_req.setHeader("Content-Type", "application/json")
CALL http_req.setHeader("accept", "application/json")
CALL http_req.setMethod('POST')
DECLARE buscar CURSOR FOR
SELECT DISTINCT a.cod_n,
a.cod_grupo,
a.cod_Tipo,
a.cod_sec,
b.descrip_esp,
isnull(b.existencia, 0) AS existencia,
isnull(b.exist_min, 0) AS existencia_min
FROM irtb00006 a, irtb00002 b, irtb00009 c
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 a.maquina IS NOT NULL
AND a.maquina = c.codigo
AND a.status_t IS NULL
AND b.id_maintainX IS NULL
LET i = 1
FOREACH buscar INTO repuestos[i].*
INITIALIZE repuestoAPI TO null
LET repuestoAPI.name =
repuestos[i].cod_n
|| "-"
|| repuestos[i].cod_grupo
|| "-"
|| repuestos[i].cod_tipo
|| "-"
|| repuestos[i].cod_sec
|| " "
|| repuestos[i].descrip_esp
LET repuestoAPI.description = repuestos[i].descrip_esp
LET repuestoAPI.availableQuantity = repuestos[i].existencia
LET repuestoAPI.minimumQuantity = repuestos[i].existencia_min
LET repuestoAPI.assetIds[1] = 6210945
DECLARE buscar3 CURSOR FOR --BUSCANDO MAQUINAS DE ESTE REPUESTO
SELECT DISTINCT a.maquina, c.nombre
FROM irtb00006 a, irtb00002 b, irtb00009 c
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 a.maquina IS NOT NULL
AND a.maquina = c.codigo
AND a.status_t IS NULL
AND b.cod_n = repuestos[i].cod_n
AND b.cod_grupo = repuestos[i].cod_grupo
AND b.cod_tipo = repuestos[i].cod_tipo
AND b.cod_sec = repuestos[i].cod_sec
LET j = 1
FOREACH buscar3 INTO maquina[j].*
LET repuestoAPI.partTypes[j] = "(",maquina[j].codigo," - ",maquina[j].nombre,")"
LET j = j + 1
END FOREACH
LET json_response = util.JSON.stringify(repuestoAPI)
--DISPLAY json_response
TRY
CALL http_req.doTextRequest(json_response)
LET http_resp = http_req.getResponse()
IF http_resp.getStatusCode() != 201 THEN
CALL show_sync_err(http_resp.getStatusDescription())
DISPLAY "Se ha salido del programa"
LET flag = FALSE
RETURN
ELSE
LET json_response = http_resp.getTextResponse()
CALL util.JSON.parse(json_response, answer)
DISPLAY SFMT("Se ha creado un repuesto con ID: %1", answer.id)
UPDATE irtb00002
SET id_maintainx = answer.id, enviarMX = 'SI'
WHERE cod_n = repuestos[i].cod_n
AND cod_grupo = repuestos[i].cod_grupo
AND cod_tipo = repuestos[i].cod_tipo
AND cod_sec = repuestos[i].cod_sec
IF STATUS < 0 THEN
DISPLAY "No se hizo el update"
END IF
LET flag = TRUE
END IF
CATCH
DISPLAY SFMT("HTTP request error: STATUS=%1 (%2)",
STATUS, SQLCA.SQLERRM)
END TRY
IF flag = FALSE THEN
RETURN
END IF
LET i = i + 1
END FOREACH
END FUNCTION
FUNCTION delete_repuestos()
DEFINE
id_maintain DYNAMIC ARRAY OF INT,
i INT,
flag BOOLEAN
DECLARE buscar2 CURSOR FOR
SELECT DISTINCT id_maintainX
FROM irtb00002
WHERE id_maintainx IS NOT NULL
LET i = 1
FOREACH buscar2 INTO id_maintain[i]
LET url = "https://api.getmaintainx.com/v1/parts/", id_maintain[i]
LET token =
"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjUyNDIwMCwib3JnYW5pemF0aW9uSWQiOjIwNDA2MCwiaWF0IjoxNzIyNjAzOTQ3LCJzdWIiOiJSRVNUX0FQSV9BVVRIIiwianRpIjoiYTc3NjQzY2EtYWEzNy00MzQ0LWJlMmEtYTA2ZTM4OTVjZjA0In0.EmlDZmbojh0MW_We_GX829zMNKIsn4W8Q6qK60xfWFw"
LET http_req = com.HTTPRequest.Create(url)
CALL http_req.setConnectionTimeout(-1)
CALL http_req.setCharset("UTF-8")
CALL http_req.setHeader("Authorization", token)
CALL http_req.setHeader("Content-Type", "application/json")
CALL http_req.setHeader("accept", "application/json")
CALL http_req.setMethod('DELETE')
TRY
CALL http_req.doRequest()
LET http_resp = http_req.getResponse()
IF http_resp.getStatusCode() != 204
AND http_resp.getStatusCode() != 404 THEN
CALL show_sync_err(http_resp.getStatusDescription())
LET flag = FALSE
RETURN
ELSE
DISPLAY SFMT("ID %1 Eliminado", id_maintain[i])
UPDATE irtb00002
SET id_maintainx = NULL, enviarMX = NULL
WHERE id_maintainx = id_maintain[i]
IF STATUS < 0 THEN
DISPLAY "No se hizo el update"
END IF
LET flag = TRUE
END IF
CATCH
DISPLAY SFMT("HTTP request error: STATUS=%1 (%2)",
STATUS, SQLCA.SQLERRM)
END TRY
IF flag != TRUE THEN
RETURN
END IF
LET i = i + 1
END FOREACH
END FUNCTION
FUNCTION display_asset(asset)
DEFINE asset RECORD
id INTEGER,
name VARCHAR(100),
description VARCHAR(200),
locationId INTEGER,
parentId INTEGER,
creatorId INTEGER,
createdAt DATETIME YEAR TO FRACTION,
updatedAt DATETIME YEAR TO FRACTION,
attachments DYNAMIC ARRAY OF STRING,
criticalityId INTEGER,
childrenIds DYNAMIC ARRAY OF INTEGER,
teamIds DYNAMIC ARRAY OF INTEGER,
assetTypes DYNAMIC ARRAY OF STRING,
extraFields RECORD
model VARCHAR(100),
ID_Transacciones INT,
codigo_ABR VARCHAR(100),
ID_Sistema_Contable INT
END RECORD,
vendorIds DYNAMIC ARRAY OF INTEGER,
status RECORD
id INTEGER,
status VARCHAR(50),
startedAt DATETIME YEAR TO FRACTION,
description VARCHAR(200),
downtimeType STRING,
createdAt DATETIME YEAR TO FRACTION,
updatedAt DATETIME YEAR TO FRACTION
END RECORD
END RECORD
IF asset.id IS NOT NULL THEN
DISPLAY SFMT("ID: %1", asset.id)
DISPLAY SFMT("Name: %1", asset.name)
DISPLAY SFMT("Description: %1", asset.description)
DISPLAY SFMT("Location ID: %1", asset.locationId)
DISPLAY SFMT("Created At: %1", asset.createdAt)
DISPLAY SFMT("Updated At: %1", asset.updatedAt)
DISPLAY SFMT("Creator ID: %1", asset.creatorId)
DISPLAY SFMT("ID - Sistema Contable: %1",
asset.extraFields.ID_Sistema_Contable)
DISPLAY SFMT("Model: %1", asset.extraFields.model)
DISPLAY SFMT("ID_transaccion: %1", asset.extraFields.ID_Transacciones)
DISPLAY SFMT("Codigo_ABR: %1", asset.extraFIelds.codigo_ABR)
DISPLAY SFMT("Status: %1", asset.status.status)
DISPLAY "-----------------------------"
ELSE
DISPLAY "El arreglo volvio vacio"
END IF
END FUNCTION
FUNCTION display_all_assets(all_assets)
DEFINE all_assets RECORD
assets DYNAMIC ARRAY OF RECORD
id INTEGER,
name VARCHAR(100),
description VARCHAR(200),
parentId INTEGER,
criticalityId INTEGER,
locationId INTEGER,
createdAt DATETIME YEAR TO FRACTION,
updatedAt DATETIME YEAR TO FRACTION,
creatorId INTEGER
END RECORD,
nextCursor VARCHAR(50),
nextPageUrl VARCHAR(200)
END RECORD
DEFINE i INTEGER
FOR i = 1 TO all_assets.assets.getLength()
DISPLAY SFMT("ID: %1", all_assets.assets[i].id)
DISPLAY SFMT("Name: %1", all_assets.assets[i].name)
DISPLAY SFMT("Description: %1", all_assets.assets[i].description)
DISPLAY SFMT("Parent ID: %1", all_assets.assets[i].parentId)
DISPLAY SFMT("Criticality ID: %1", all_assets.assets[i].criticalityId)
DISPLAY SFMT("Location ID: %1", all_assets.assets[i].locationId)
DISPLAY SFMT("Created At: %1", all_assets.assets[i].createdAt)
DISPLAY SFMT("Updated At: %1", all_assets.assets[i].updatedAt)
DISPLAY SFMT("Creator ID: %1", all_assets.assets[i].creatorId)
DISPLAY "-----------------------------"
END FOR
DISPLAY SFMT("NextCursor: %1", all_assets.nextCursor)
DISPLAY SFMT("NextPageUrl: %1", all_assets.nextPageUrl)
END FUNCTION
FUNCTION show_sync_err(msg)
DEFINE msg STRING
DISPLAY "ERROR: ", msg
--CALL fgl_winmessage("ERROR", msg, "error")
END FUNCTION