- coprmt001 (Suplidores): agregar campos faltantes (tipo_doc,rnc,cuenta_no) al RECORD interno de ApiMaintainC() en api_test.4gl, y unificar la aridad de RETURNING en las 3 llamadas (POST/PATCH/DELETE) - el enlazador exige el mismo numero de valores de retorno en todo el modulo. - coprmt009 (Ordenes de Compra): reemplazar fgl_report_loadCurrentSettings/ selectDevice/selectPreview/commitCurrentSettings (no disponibles en este FGL) por om.XmlWriter.createFileWriter en coprorden.4gl; agregar verificacion defensiva en lugarentrega.4gl (ui.combobox.forname puede devolver NULL si el formulario actual no tiene el combo "bodega"); quitar "ordenes.bodega" de los INPUT BY NAME (campo oculto, no se puede enlazar). Pendiente: probar el flujo completo de creacion de orden (se corto por una caida de conexion transitoria durante la prueba). - coprmt016 (Terminos de Pago): CRUD simple, sin cambios de codigo. - mbsERP.4pw: crear modulo COMPRAS (estaba vacio) con librerias FUNCIONES_CO y FORMULARIOS_CO, y registrar los 3 programas. - otrodir/smarmotech.sch: diccionario de esquema completo (antes faltaba en este directorio, causaba fallos de link en api_test.4gl). - .gitignore: excluir logs de STARTLOG() (bin/*.TXT) y archivos .err de compilacion. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
1339 lines
46 KiB
Plaintext
1339 lines
46 KiB
Plaintext
{
|
|
------------------------------------------------------------------
|
|
PROGRAMA : MaintainX_API
|
|
OBJETIVO : C�digo 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_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,
|
|
Year STRING,
|
|
Manufacturer STRING,
|
|
Serial_Number 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 response, path STRING, path_option INT
|
|
|
|
DEFINE cmd STRING
|
|
|
|
{MAIN
|
|
|
|
CALL ARG_VAL(1) RETURNING usuario
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
|
|
CONNECT TO "smarmotech" USER usuario USING clave
|
|
CALL add_repuestos() --AGREGAR REPUESTOS DE GENERO A MAINTAINX
|
|
--CALL delete_repuestos() --ELIMINAR REPUESTOS
|
|
|
|
END MAIN}
|
|
|
|
FUNCTION ApiMaintainC(metodo, idApi, Data, usuario) --FUNCION PARA COMPRAS
|
|
|
|
DEFINE data RECORD
|
|
area_sp VARCHAR(10),
|
|
ciu_sp VARCHAR(30),
|
|
cod_pais VARCHAR(3),
|
|
cod_sp SMALLINT,
|
|
cod_sp_sec SMALLINT,
|
|
cont_sp VARCHAR(30),
|
|
contactID INTEGER,
|
|
cuenta_no VARCHAR(10),
|
|
dir_sp VARCHAR(60),
|
|
email VARCHAR(60),
|
|
fax_sp VARCHAR(25),
|
|
fech_crea DATETIME YEAR TO FRACTION,
|
|
fech_mod DATETIME YEAR TO FRACTION,
|
|
id_maintainx INTEGER,
|
|
nom_sp VARCHAR(41),
|
|
rnc VARCHAR(11),
|
|
status_t VARCHAR(1),
|
|
tel_sp VARCHAR(25),
|
|
term_sp SMALLINT,
|
|
tipo_doc VARCHAR(10),
|
|
us_crea VARCHAR(50),
|
|
us_mod VARCHAR(50)
|
|
END RECORD,
|
|
usuario STRING
|
|
|
|
DEFINE response RECORD
|
|
name STRING,
|
|
description STRING,
|
|
phoneNumber STRING
|
|
END RECORD
|
|
|
|
DEFINE
|
|
metodo STRING,
|
|
idAPi,answer STRING,
|
|
answer2, i INTEGER
|
|
|
|
DEFINE post_response RECORD
|
|
id INTEGER
|
|
END RECORD
|
|
|
|
DEFINE post_workorder RECORD
|
|
partsUsed DYNAMIC ARRAY OF RECORD
|
|
partId INT,
|
|
quantityUsed DECIMAL
|
|
END RECORD
|
|
END RECORD
|
|
|
|
DEFINE container STRING
|
|
|
|
DEFINE SplitID base.StringTokenizer
|
|
|
|
INITIALIZE response TO NULL
|
|
|
|
CALL select_path()
|
|
|
|
IF metodo = 'CHECK' OR metodo = 'PATCH_WORKORDER' THEN
|
|
LET url = "https://api.getmaintainx.com/v1/workorders"
|
|
ELSE
|
|
LET url = "https://api.getmaintainx.com/v1/vendors"
|
|
END IF
|
|
|
|
LET token =
|
|
"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjUyNDIwMCwib3JnYW5pemF0aW9uSWQiOjIwNDA2MCwiaWF0IjoxNzIyNjAzOTQ3LCJzdWIiOiJSRVNUX0FQSV9BVVRIIiwianRpIjoiYTc3NjQzY2EtYWEzNy00MzQ0LWJlMmEtYTA2ZTM4OTVjZjA0In0.EmlDZmbojh0MW_We_GX829zMNKIsn4W8Q6qK60xfWFw"
|
|
|
|
IF idApi IS NOT NULL THEN
|
|
LET url = url || '/' || idApi
|
|
END IF
|
|
|
|
IF metodo = 'CHECK' THEN
|
|
LET url = url,"?useSequentialId=true"
|
|
END IF
|
|
|
|
DISPLAY url
|
|
|
|
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 'CHECK'
|
|
INITIALIZE answer2 TO NULL
|
|
|
|
TRY
|
|
CALL http_req.setMethod('GET')
|
|
CALL http_req.doRequest()
|
|
LET http_resp = http_req.getResponse()
|
|
|
|
IF http_resp.getStatusCode() != 200 THEN
|
|
#CALL show_sync_err(http_resp.getStatusDescription())
|
|
DISPLAY "ERROR EN LA CONSULTA"
|
|
ELSE
|
|
LET json_response = http_resp.getTextResponse()
|
|
|
|
LET SplitID = base.StringTokenizer.create(json_response, ":,")
|
|
|
|
LET i = 0
|
|
WHILE SplitId.hasMoreTokens()
|
|
LET container = SplitID.nextToken()
|
|
|
|
LET i = i + 1
|
|
|
|
IF i = 3 THEN
|
|
LET answer = container
|
|
EXIT WHILE
|
|
END IF
|
|
|
|
END WHILE
|
|
DISPLAY answer
|
|
END IF
|
|
CATCH
|
|
DISPLAY SFMT("HTTP request error: STATUS=%1 (%2)",
|
|
STATUS, SQLCA.SQLERRM)
|
|
END TRY
|
|
EXIT CASE
|
|
WHEN 'PATCH_WORKORDER'
|
|
|
|
INITIALIZE ANSWER2 TO NULL
|
|
|
|
IF data.contactID < 0 THEN
|
|
LET data.contactID = data.contactID * -1
|
|
END IF
|
|
|
|
LET post_workorder.partsUsed[1].quantityUsed = data.contactID
|
|
LET post_workorder.partsUsed[1].partId = data.id_maintainx
|
|
|
|
TRY
|
|
|
|
LET json_response = util.JSON.stringify(post_workorder)
|
|
DISPLAY json_response
|
|
|
|
IF path_option = 1 THEN
|
|
# SERVIDOR DE DESARROLLO
|
|
LET path = 'F:/MARMOTECHC/copia/',usuario CLIPPED,"-",CURRENT YEAR TO DAY CLIPPED,".json"
|
|
ELSE
|
|
# SERVIDOR DE PRODUCCION
|
|
LET path = 'E:/MARMOTECHC/MX_Api_Managment/',usuario CLIPPED,"-",CURRENT YEAR TO DAY CLIPPED,".json"
|
|
END IF
|
|
|
|
LET cmd = 'echo ',json_response,' > ', path
|
|
RUN cmd
|
|
|
|
IF path_option = 1 THEN
|
|
# SERVIDOR DE DESARROLLO
|
|
LET cmd = 'C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -ExecutionPolicy Bypass -File "F:/MARMOTECHC/copia/patch_request.ps1" -Path ',path,' -apiUrl "', url, '"'
|
|
ELSE
|
|
# SERVIDOR DE PRODUCCION
|
|
LET cmd = 'C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -ExecutionPolicy Bypass -File "E:/MARMOTECHC/MX_Api_Managment/patch_request.ps1" -Path ',path,' -apiUrl "', url, '"'
|
|
END IF
|
|
|
|
RUN cmd
|
|
|
|
LET answer = 1
|
|
|
|
CATCH
|
|
DISPLAY SFMT("HTTP request error: STATUS=%1 (%2)",
|
|
STATUS, SQLCA.SQLERRM)
|
|
END TRY
|
|
|
|
EXIT CASE
|
|
|
|
WHEN 'POST'
|
|
INITIALIZE answer2 TO NULL
|
|
|
|
TRY
|
|
LET response.name = data.nom_sp
|
|
LET response.description =
|
|
"CODIGO: "
|
|
|| data.cod_sp
|
|
|| "-"
|
|
|| data.cod_sp_sec
|
|
|| ", DIRECCION: "
|
|
|| data.dir_sp
|
|
|
|
{ IF data.tel_sp IS NOT NULL THEN
|
|
LET response.phoneNumbers[1] = data.tel_sp
|
|
END IF }
|
|
|
|
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)
|
|
|
|
LET answer = post_response.id
|
|
|
|
IF answer IS NOT NULL AND answer != 0 THEN
|
|
|
|
IF data.cont_sp IS NOT NULL OR data.tel_sp IS NOT NULL THEN
|
|
|
|
LET url = url || '/' || answer , '/contacts'
|
|
|
|
DISPLAY url
|
|
|
|
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(metodo)
|
|
|
|
INITIALIZE response, json_response TO NULL
|
|
|
|
LET response.name = data.cont_sp
|
|
|
|
IF data.tel_sp IS NOT NULL THEN
|
|
LET response.phoneNumber = data.tel_sp
|
|
END IF
|
|
|
|
LET json_response = util.JSON.stringify(response)
|
|
DISPLAY json_response
|
|
|
|
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())
|
|
INITIALIZE answer TO NULL
|
|
ELSE
|
|
LET json_response = http_resp.getTextResponse()
|
|
CALL util.JSON.parse(json_response, post_response)
|
|
|
|
LET answer2 = post_response.id
|
|
|
|
END IF
|
|
|
|
ELSE
|
|
|
|
LET answer2 = 0
|
|
|
|
END IF
|
|
|
|
END IF
|
|
END IF
|
|
CATCH
|
|
DISPLAY SFMT("HTTP request error: STATUS=%1 (%2)",
|
|
STATUS, SQLCA.SQLERRM)
|
|
END TRY
|
|
EXIT CASE
|
|
|
|
WHEN 'PATCH'
|
|
INITIALIZE answer2 TO NULL
|
|
|
|
TRY
|
|
|
|
INITIALIZE answer TO NULL
|
|
LET response.name = data.nom_sp
|
|
LET response.description =
|
|
"CODIGO: "
|
|
|| data.cod_sp
|
|
|| "-"
|
|
|| data.cod_sp_sec
|
|
|| ", DIRECCION: "
|
|
|| data.dir_sp
|
|
|
|
|
|
LET json_response = util.JSON.stringify(response)
|
|
DISPLAY json_response
|
|
|
|
IF path_option = 1 THEN
|
|
# SERVIDOR DE DESARROLLO
|
|
LET path = 'F:/MARMOTECHC/copia/',usuario CLIPPED,"-",CURRENT YEAR TO DAY CLIPPED,".json"
|
|
ELSE
|
|
# SERVIDOR DE PRODUCCION
|
|
LET path = 'E:/MARMOTECHC/MX_Api_Managment/',usuario CLIPPED,"-",CURRENT YEAR TO DAY CLIPPED,".json"
|
|
END IF
|
|
|
|
LET cmd = 'echo ',json_response,' > ', path
|
|
RUN cmd
|
|
|
|
IF path_option = 1 THEN
|
|
# SERVIDOR DE DESARROLLO
|
|
LET cmd = 'C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -ExecutionPolicy Bypass -File "F:/MARMOTECHC/copia/patch_request.ps1" -Path ',path,' -apiUrl "', url, '"'
|
|
ELSE
|
|
# SERVIDOR DE PRODUCCION
|
|
LET cmd = 'C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -ExecutionPolicy Bypass -File "E:/MARMOTECHC/MX_Api_Managment/patch_request.ps1" -Path ',path,' -apiUrl "', url, '"'
|
|
END IF
|
|
|
|
RUN cmd
|
|
|
|
LET answer = 0
|
|
|
|
IF data.contactID IS NOT NULL THEN
|
|
|
|
LET url = url || '/contacts/', data.contactID
|
|
DISPLAY url
|
|
|
|
INITIALIZE response, json_response TO NULL
|
|
|
|
LET response.name = data.cont_sp
|
|
|
|
IF data.tel_sp IS NOT NULL THEN
|
|
LET response.phoneNumber = data.tel_sp
|
|
END IF
|
|
|
|
LET json_response = util.JSON.stringify(response)
|
|
DISPLAY json_response
|
|
|
|
LET cmd = 'echo ',json_response,' > ', path
|
|
RUN cmd
|
|
|
|
# SERVIDOR DE DESARROLLO
|
|
#LET cmd = 'C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -ExecutionPolicy Bypass -File "F:/MARMOTECHC/copia/patch_request.ps1" -Path ',path,' -apiUrl "', url, '"'
|
|
|
|
# SERVIDOR DE PRODUCCION
|
|
LET cmd = 'C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -ExecutionPolicy Bypass -File "E:/MARMOTECHC/MX_Api_Managment/patch_request.ps1" -Path ',path,' -apiUrl "', url, '"'
|
|
|
|
RUN cmd
|
|
LET answer = answer + 1
|
|
|
|
ELSE
|
|
|
|
LET answer = 1
|
|
|
|
END IF
|
|
|
|
CATCH
|
|
DISPLAY SFMT("HTTP request error: STATUS=%1 (%2)",
|
|
STATUS, SQLCA.SQLERRM)
|
|
END TRY
|
|
EXIT CASE
|
|
|
|
WHEN 'PATCH_WORKORDER'
|
|
|
|
|
|
EXIT CASE
|
|
|
|
WHEN 'DELETE'
|
|
INITIALIZE answer2 TO NULL
|
|
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
|
|
|
|
IF answer2 IS NOT NULL THEN
|
|
DISPLAY answer2
|
|
END IF
|
|
RETURN answer, answer2
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION ApiMaintainD(metodo, idApi, Data, usuario) --FUNCION PARA DEPARTAMENTOS
|
|
|
|
DEFINE data RECORD LIKE adtb00001.*, usuario STRING
|
|
|
|
DEFINE response RECORD
|
|
name STRING,
|
|
description STRING,
|
|
extraFields RECORD
|
|
IDMTECH STRING
|
|
END RECORD
|
|
END RECORD
|
|
|
|
DEFINE
|
|
i INTEGER,
|
|
metodo STRING,
|
|
idAPi STRING,
|
|
answer INTEGER
|
|
|
|
DEFINE post_response RECORD
|
|
id INTEGER
|
|
END RECORD
|
|
|
|
INITIALIZE response TO NULL
|
|
|
|
CALL select_path()
|
|
|
|
LET url = "https://api.getmaintainx.com/v1/locations"
|
|
|
|
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 'CHECK'
|
|
TRY
|
|
CALL http_req.setMethod('GET')
|
|
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()
|
|
|
|
LET answer = 1
|
|
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_dpto CLIPPED
|
|
LET response.extraFields.IDMTECH = data.departamento CLIPPED
|
|
|
|
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 THEN
|
|
#CALL show_sync_err(http_resp.getStatusDescription())
|
|
ELSE
|
|
LET json_response = http_resp.getTextResponse()
|
|
CALL util.JSON.parse(json_response, post_response)
|
|
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_dpto
|
|
LET response.extraFields.IDMTECH = data.departamento
|
|
|
|
LET json_response = util.JSON.stringify(response)
|
|
DISPLAY json_response
|
|
|
|
IF path_option = 1 THEN
|
|
# SERVIDOR DE DESARROLLO
|
|
LET path = 'F:/MARMOTECHC/copia/',usuario CLIPPED,"-",CURRENT YEAR TO DAY CLIPPED,".json"
|
|
ELSE
|
|
# SERVIDOR DE PRODUCCION
|
|
LET path = 'E:/MARMOTECHC/MX_Api_Managment/',usuario CLIPPED,"-",CURRENT YEAR TO DAY CLIPPED,".json"
|
|
END IF
|
|
|
|
LET cmd = 'echo ',json_response,' > ', path
|
|
RUN cmd
|
|
|
|
IF path_option = 1 THEN
|
|
# SERVIDOR DE DESARROLLO
|
|
LET cmd = 'C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -ExecutionPolicy Bypass -File "F:/MARMOTECHC/copia/patch_request.ps1" -Path ',path,' -apiUrl "', url, '"'
|
|
ELSE
|
|
# SERVIDOR DE PRODUCCION
|
|
LET cmd = 'C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -ExecutionPolicy Bypass -File "E:/MARMOTECHC/MX_Api_Managment/patch_request.ps1" -Path ',path,' -apiUrl "', url, '"'
|
|
END IF
|
|
|
|
RUN cmd
|
|
LET answer = 1
|
|
|
|
|
|
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, usuario) --FUNCION PARA REPUESTOS
|
|
|
|
DEFINE repuestos RECORD LIKE irtb00002.*
|
|
|
|
DEFINE
|
|
i INTEGER,
|
|
metodo STRING,
|
|
idAPi STRING,
|
|
answer INT,
|
|
usuario STRING
|
|
|
|
DEFINE post_response RECORD
|
|
id INTEGER
|
|
END RECORD
|
|
|
|
INITIALIZE repuestoAPI TO NULL
|
|
|
|
CALL select_path()
|
|
|
|
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()
|
|
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 CLIPPED
|
|
|
|
LET repuestoAPI.description = repuestos.descrip_esp CLIPPED
|
|
|
|
IF repuestos.existencia IS NOT NULL THEN
|
|
LET repuestoAPI.availableQuantity = repuestos.existencia
|
|
END IF
|
|
|
|
IF repuestos.exist_min < 0 THEN
|
|
LET repuestos.exist_min = repuestos.exist_min * -1
|
|
END IF
|
|
|
|
LET repuestoAPI.minimumQuantity = repuestos.exist_min
|
|
--LET repuestoAPI.assetIds[1] = 6210945
|
|
|
|
DISPLAY repuestos.cod_sp
|
|
|
|
IF repuestos.cod_sp IS NOT NULL AND repuestos.cod_sp_Sec IS NOT NULL
|
|
AND repuestos.cod_sp != 0 THEN
|
|
|
|
SELECT id_maintainx INTO repuestoAPI.vendorIds[1] FROM cotb00001
|
|
WHERE cod_sp = repuestos.cod_sp AND cod_sp_sec = repuestos.cod_sp_sec
|
|
AND status_t IS NULL
|
|
|
|
WHENEVER NOT FOUND CONTINUE
|
|
|
|
END IF
|
|
|
|
IF repuestos.descrip_ing IS NOT NULL THEN
|
|
LET repuestoAPI.unitCost = repuestos.descrip_ing
|
|
LET repuestoAPI.unitCost = repuestoAPI.unitCost * 100
|
|
END IF
|
|
|
|
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())
|
|
DISPLAY 'ERROR STATUS CODE = 201'
|
|
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)
|
|
|
|
DISPLAY "STATUS = ", STATUS
|
|
|
|
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
|
|
|
|
IF repuestos.existencia IS NOT NULL THEN
|
|
LET repuestoAPI.availableQuantity = repuestos.existencia
|
|
END IF
|
|
|
|
IF repuestos.exist_min < 0 THEN
|
|
LET repuestos.exist_min = repuestos.exist_min * -1
|
|
END IF
|
|
|
|
LET repuestoAPI.minimumQuantity = repuestos.exist_min
|
|
--LET repuestoAPI.assetIds[1] = 6210945
|
|
|
|
DISPLAY repuestos.cod_sp
|
|
|
|
IF repuestos.cod_sp IS NOT NULL AND repuestos.cod_sp_Sec IS NOT NULL
|
|
AND repuestos.cod_sp != 0 THEN
|
|
|
|
SELECT id_maintainx INTO repuestoAPI.vendorIds[1] FROM cotb00001
|
|
WHERE cod_sp = repuestos.cod_sp AND cod_sp_sec = repuestos.cod_sp_sec
|
|
AND status_t IS NULL
|
|
|
|
WHENEVER NOT FOUND CONTINUE
|
|
|
|
END IF
|
|
|
|
IF repuestos.descrip_ing IS NOT NULL THEN
|
|
LET repuestoAPI.unitCost = repuestos.descrip_ing
|
|
LET repuestoAPI.unitCost = repuestoAPI.unitCost * 100
|
|
END IF
|
|
|
|
LET json_response = util.JSON.stringify(repuestoAPI)
|
|
DISPLAY json_response
|
|
|
|
|
|
IF path_option = 1 THEN
|
|
# SERVIDOR DE DESARROLLO
|
|
LET path = 'F:/MARMOTECHC/copia/',usuario CLIPPED,"-",CURRENT YEAR TO DAY CLIPPED,".json"
|
|
ELSE
|
|
# SERVIDOR DE PRODUCCION
|
|
LET path = 'E:/MARMOTECHC/MX_Api_Managment/',usuario CLIPPED,"-",CURRENT YEAR TO DAY CLIPPED,".json"
|
|
END IF
|
|
|
|
LET cmd = 'echo ',json_response,' > ', path
|
|
RUN cmd
|
|
|
|
IF path_option = 1 THEN
|
|
# SERVIDOR DE DESARROLLO
|
|
LET cmd = 'C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -ExecutionPolicy Bypass -File "F:/MARMOTECHC/copia/patch_request.ps1" -Path ',path,' -apiUrl "', url, '"'
|
|
ELSE
|
|
# SERVIDOR DE PRODUCCION
|
|
LET cmd = 'C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -ExecutionPolicy Bypass -File "E:/MARMOTECHC/MX_Api_Managment/patch_request.ps1" -Path ',path,' -apiUrl "', url, '"'
|
|
END IF
|
|
|
|
RUN cmd RETURNING response
|
|
|
|
DISPLAY response
|
|
|
|
LET answer = 1
|
|
|
|
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, maquina, extraCampos, usuario) --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 maquina RECORD
|
|
unidad_med CHAR(10),
|
|
modelo STRING,
|
|
serie STRING,
|
|
departamento STRING,
|
|
codigo_externo STRING
|
|
END RECORD
|
|
|
|
DEFINE extraCampos RECORD
|
|
cod_sp INT,
|
|
cod_sp_sec INT,
|
|
nom_prov STRING,
|
|
tipo_Activo STRING,
|
|
activo_padre INT,
|
|
nom_activoPadre STRING
|
|
END RECORD
|
|
|
|
DEFINE depto_desc STRING
|
|
|
|
DEFINE
|
|
i INTEGER,
|
|
metodo STRING,
|
|
idAPi,
|
|
answer INTEGER,
|
|
usuario STRING
|
|
|
|
DEFINE post_response RECORD
|
|
id INTEGER
|
|
END RECORD
|
|
|
|
CALL select_path()
|
|
INITIALIZE arr_post TO NULL
|
|
|
|
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")
|
|
|
|
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()
|
|
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 CLIPPED
|
|
LET arr_POST.description = data.codigo CLIPPED || " - " || data.descripcion1 CLIPPED
|
|
LET arr_POST.barcode = data.codigo
|
|
{ LET arr_POST.criticalityId = NULL}
|
|
|
|
SELECT id_maintainx INTO arr_Post.parentId FROM actb00001
|
|
WHERE codigo = extraCampos.activo_padre AND status_t IS NULL
|
|
|
|
SELECT a.id_maintainx
|
|
INTO arr_POST.locationId
|
|
FROM adtb00001 a
|
|
WHERE a.departamento = data.departamento
|
|
|
|
#FOR i = 1 TO 1
|
|
LET arr_POST.assetTypes[1] = extraCampos.tipo_Activo
|
|
# END FOR
|
|
|
|
LET arr_POST.extraFields.model = data.descripcion1 CLIPPED
|
|
LET arr_POST.extraFields.ID_Transacciones = NULL
|
|
LET arr_POST.extraFields.codigo_ABR = maquina.codigo_externo
|
|
LET arr_POST.extraFields.ID_Sistema_Contable = data.codigo
|
|
LET arr_post.extraFields.YEAR = YEAR(TODAY)
|
|
LET arr_POST.extraFields.Manufacturer = data.fabricante
|
|
LET arr_POST.extraFields.Serial_Number = maquina.serie
|
|
|
|
# FOR i = 1 TO 1
|
|
SELECT id_maintainx INTO arr_POST.vendorIds[1] FROM cotb00001
|
|
WHERE cod_sp = extraCampos.cod_sp AND cod_sp_sec = extraCampos.cod_sp_sec
|
|
#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 CLIPPED
|
|
LET arr_POST.description = data.codigo CLIPPED|| " - " || data.descripcion1 CLIPPED
|
|
LET arr_POST.barcode = data.codigo
|
|
{ LET arr_POST.criticalityId = NULL}
|
|
|
|
SELECT id_maintainx INTO arr_Post.parentId FROM actb00001
|
|
WHERE codigo = extraCampos.activo_padre AND status_t IS NULL
|
|
|
|
SELECT a.id_maintainx
|
|
INTO arr_POST.locationId
|
|
FROM adtb00001 a
|
|
WHERE a.departamento = data.departamento
|
|
|
|
#FOR i = 1 TO 1
|
|
LET arr_POST.assetTypes[1] = extraCampos.tipo_Activo
|
|
# END FOR
|
|
|
|
LET arr_POST.extraFields.model = data.descripcion1 CLIPPED
|
|
LET arr_POST.extraFields.ID_Transacciones = NULL
|
|
LET arr_POST.extraFields.codigo_ABR = maquina.codigo_externo
|
|
LET arr_POST.extraFields.ID_Sistema_Contable = data.codigo
|
|
LET arr_post.extraFields.YEAR = YEAR(TODAY)
|
|
LET arr_POST.extraFields.Manufacturer = data.fabricante
|
|
LET arr_POST.extraFields.Serial_Number = maquina.serie
|
|
|
|
# FOR i = 1 TO 1
|
|
SELECT id_maintainx INTO arr_POST.vendorIds[1] FROM cotb00001
|
|
WHERE cod_sp = extraCampos.cod_sp AND cod_sp_sec = extraCampos.cod_sp_sec
|
|
#END FOR
|
|
|
|
LET json_response = util.JSON.stringify(arr_POST)
|
|
DISPLAY json_response
|
|
|
|
IF path_option = 1 THEN
|
|
# SERVIDOR DE DESARROLLO
|
|
LET path = 'F:/MARMOTECHC/copia/',usuario CLIPPED,"-",CURRENT YEAR TO DAY CLIPPED,".json"
|
|
ELSE
|
|
# SERVIDOR DE PRODUCCION
|
|
LET path = 'E:/MARMOTECHC/MX_Api_Managment/',usuario CLIPPED,"-",CURRENT YEAR TO DAY CLIPPED,".json"
|
|
END IF
|
|
|
|
LET cmd = 'echo ',json_response,' > ', path
|
|
RUN cmd
|
|
|
|
IF path_option = 1 THEN
|
|
# SERVIDOR DE DESARROLLO
|
|
LET cmd = 'C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -ExecutionPolicy Bypass -File "F:/MARMOTECHC/copia/patch_request.ps1" -Path ',path,' -apiUrl "', url, '"'
|
|
ELSE
|
|
# SERVIDOR DE PRODUCCION
|
|
LET cmd = 'C:/Windows/System32/WindowsPowerShell/v1.0/powershell.exe -ExecutionPolicy Bypass -File "E:/MARMOTECHC/MX_Api_Managment/patch_request.ps1" -Path ',path,' -apiUrl "', url, '"'
|
|
END IF
|
|
|
|
RUN cmd RETURNING response
|
|
LET answer = 1
|
|
|
|
|
|
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 select_path()
|
|
|
|
LET path_option = 2
|
|
|
|
# 1 = SERVIDOR DE DESARROLLO
|
|
# 2 = SERVIDOR DE PRODUCCION
|
|
|
|
END FUNCTION
|
|
|
|
|