You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
126 lines
4.7 KiB
126 lines
4.7 KiB
|
|
-- Sample json payload
|
|
--[[
|
|
{
|
|
"uid": "53935f27-5cf0-4281-9a29-a68f100ee981",
|
|
"execution_status": "Borrador",
|
|
"tipo_comprobante": "factura c",
|
|
"fecha_comprobante": "13/11/2025",
|
|
"tipo_concepto": "servicios",
|
|
"servicio_fecha_desde": "01/10/2025",
|
|
"servicio_fecha_hasta": "01/10/2025",
|
|
"servicio_fecha_vencimiento_pago": "13/11/2025",
|
|
"referencia": "",
|
|
"tipo_iva_receptor": "consumidor final",
|
|
"cuit_receptor": "",
|
|
"forma_pago": "contado",
|
|
"monto_unitario": "10000",
|
|
"cantidad": "1",
|
|
"descripcion": "Clase de apoyo",
|
|
"execution_request": {
|
|
"request_uid": "f976aa76-8d49-4564-8e44-2100819bae77",
|
|
"execution_status": "Fallido",
|
|
"user_uid": "bc31ddeb-b8c7-48e1-b569-20bbd8e7ec12",
|
|
"options": {
|
|
"automatic_confirmation_flag": false
|
|
},
|
|
"csv_data": "factura c,16/11/2025,servicios,01/10/2025,01/10/2025,16/11/2025,,monotributo,27287630412,contado,10000,1,Clase de apoyo\\n",
|
|
"credentials": {
|
|
"cuit": "20292929092",
|
|
"password": "password",
|
|
"orden_punto_venta": 1,
|
|
"nombre_empresa": "NOMBRE DE EMPRESA"
|
|
}
|
|
}
|
|
}
|
|
--]]
|
|
|
|
|
|
----------------------------------------------------------------------
|
|
-- Helpers
|
|
----------------------------------------------------------------------
|
|
local function logErrorAndExit(message)
|
|
log(message)
|
|
error(message)
|
|
end
|
|
|
|
-- Select empresa en el caso de que si se haya definido el nombre de la empresa, debe matchear con el nombre de la empresa exactamente
|
|
local function selectEmpresa(nombre_empresa)
|
|
log("afip_seleccionar_empresa:selectEmpresa nombre_empresa is " .. nombre_empresa)
|
|
--------------------------------------------------------------------
|
|
-- 3) Esperar a que el input de la empresa esté visible
|
|
--------------------------------------------------------------------
|
|
local selector = "input[value=\"" .. nombre_empresa .. "\"]"
|
|
|
|
err = waitVisibleByQuerySelector(selector)
|
|
if err then
|
|
logErrorAndExit("afip_seleccionar_empresa:selectEmpresa error waiting for selector '" .. selector .. "': " .. tostring(err))
|
|
end
|
|
|
|
--------------------------------------------------------------------
|
|
-- 4) Clickear el elemento
|
|
--------------------------------------------------------------------
|
|
err = clickElementByQuerySelector(selector)
|
|
if err then
|
|
logErrorAndExit("afip_seleccionar_empresa:selectEmpresa error clicking selector '" .. selector .. "': " .. tostring(err))
|
|
end
|
|
end
|
|
|
|
-- Select empresa en el caso de que no se haya definido el nombre de la empresa elegimos el primer boton
|
|
local function selectEmpresaUnica()
|
|
log("afip_seleccionar_empresa:selectEmpresaUnica")
|
|
local selector = "input.btn_empresa[type='button']"
|
|
|
|
err = waitVisibleByQuerySelector(selector)
|
|
if err then
|
|
logErrorAndExit("afip_seleccionar_empresa:selectEmpresaUnica error waiting for selector '" .. selector .. "': " .. tostring(err))
|
|
end
|
|
|
|
--------------------------------------------------------------------
|
|
-- 4) Clickear el elemento
|
|
--------------------------------------------------------------------
|
|
err = clickElementByQuerySelector(selector)
|
|
if err then
|
|
logErrorAndExit("afip_seleccionar_empresa:selectEmpresaUnica error clicking selector '" .. selector .. "': " .. tostring(err))
|
|
end
|
|
end
|
|
|
|
----------------------------------------------------------------------
|
|
-- Main logic
|
|
----------------------------------------------------------------------
|
|
local function main()
|
|
log("afip_seleccionar_empresa: starting")
|
|
local json = require("json")
|
|
local payload, err = json.decode(json_payload)
|
|
|
|
--------------------------------------------------------------------
|
|
-- 1) Navegar a la página de selección de empresa
|
|
--------------------------------------------------------------------
|
|
local err = navigate("https://fe.afip.gob.ar/rcel/jsp/index_bis.jsp")
|
|
if err then
|
|
logErrorAndExit("afip_seleccionar_empresa: error navigating to URL: " .. tostring(err))
|
|
end
|
|
|
|
--------------------------------------------------------------------
|
|
-- 2) Esperar 5 segundos para que la página cargue completamente
|
|
--------------------------------------------------------------------
|
|
waitSecs(5)
|
|
|
|
local nombre_empresa = payload["execution_request"]["credentials"]["nombre_empresa"]
|
|
|
|
if not nombre_empresa or nombre_empresa == "" then
|
|
selectEmpresaUnica()
|
|
else
|
|
selectEmpresa(nombre_empresa)
|
|
end
|
|
|
|
--------------------------------------------------------------------
|
|
-- Done
|
|
--------------------------------------------------------------------
|
|
log("afip_seleccionar_empresa: completed successfully")
|
|
end
|
|
|
|
local ok, err = pcall(main)
|
|
if not ok then
|
|
logErrorAndExit("afip_seleccionar_empresa failed: " .. tostring(err))
|
|
end
|
|
|