/** @odoo-module **/ import { registry } from "@web/core/registry"; import { barcodeGenericHandlers } from '@barcodes/barcode_handlers'; import { patch } from "@web/core/utils/patch"; // 定义新的 clickOnButton 函数 function customClickOnButton(selector) { console.log("This is the custom clickOnButton function!"); const buttons = document.body.querySelectorAll(selector); let length = buttons.length; if (length > 0) { buttons[length - 1].click(); } else { console.warn(`Button with selector ${selector} not found`); } } patch(barcodeGenericHandlers, "start", { start(env, { ui, barcode, notification }) { // 使用新定义的 clickOnButton 函数 const COMMANDS = { "O-CMD.EDIT": () => customClickOnButton(".o_form_button_edit"), "O-CMD.DISCARD": () => customClickOnButton(".o_form_button_cancel"), "O-CMD.SAVE": () => customClickOnButton(".o_form_button_save"), "O-CMD.PREV": () => customClickOnButton(".o_pager_previous"), "O-CMD.NEXT": () => customClickOnButton(".o_pager_next"), "O-CMD.PAGER-FIRST": () => updatePager("first"), "O-CMD.PAGER-LAST": () => updatePager("last"), "O-CMD.CONFIRM": () => customClickOnButton(".jikimo_button_confirm"), "O-CMD.FLUSHED": () => customClickOnButton(".jikimo_button_flushed"), }; barcode.bus.addEventListener("barcode_scanned", (ev) => { const barcode = ev.detail.barcode; if (barcode.startsWith("O-BTN.")) { let targets = []; try { targets = getVisibleElements(ui.activeElement, `[barcode_trigger=${barcode.slice(6)}]`); } catch (_e) { console.warn(`Barcode '${barcode}' is not valid`); } for (let elem of targets) { elem.click(); } } if (barcode.startsWith("O-CMD.")) { const fn = COMMANDS[barcode]; if (fn) { fn(); } else { notification.add(env._t("Barcode: ") + `'${barcode}'`, { title: env._t("Unknown barcode command"), type: "danger" }); } } }); } })