1042 lines
35 KiB
Plaintext
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
|