-- 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