自定义Odoo Online的POS收据 - xiaohao0576/odoo-doc GitHub Wiki
Odoo Online版本,不支持通过代码自定义POS的收据,但是可以通过Tampermonkey脚本在前端更改
下面的脚本就是把原本的Powered by Odoo替换为 Powered by HoganTech, 已经测试通过
如果需要更多的定制,请可以把代码给Cursor AI,然后让AI帮忙修改
注意: Tampermonkey在新版本的Chrome浏览器运行,需要打开开发者模式 https://www.tampermonkey.net/faq.php#Q209
// ==UserScript==
// @name Odoo POS 收据自定义
// @namespace http://tampermonkey.net/
// @version 0.1
// @description 修改Odoo POS收据内容
// @match https://demo7.odoo.com/pos*
// @grant none
// ==/UserScript==
(function() {
'use strict';
console.log("Tampermonkey脚本开始运行");
function customizeReceipt() {
console.log("尝试修改收据内容");
const targetElement = document.querySelector('body > div.o-main-components-container > div.render-container-parent > div.render-container > div > div.pos-receipt-order-data > p');
if (targetElement) {
targetElement.textContent = "Powered by HoganTech";
console.log('收据内容已修改');
} else {
console.log('未找到目标元素');
}
}
// 监听打印事件
window.addEventListener('beforeprint', function() {
console.log("检测到打印事件,执行自定义函数");
customizeReceipt();
});
// 使用MutationObserver持续监听DOM变化
const observer = new MutationObserver((mutations) => {
mutations.forEach((mutation) => {
if (mutation.type === 'childList') {
const renderContainer = document.querySelector('div.render-container > div > div.pos-receipt-order-data > p');
if (renderContainer) {
console.log("检测到.render-container变化,执行自定义函数");
customizeReceipt();
}
}
});
});
// 开始观察document.body的变化
observer.observe(document.body, { childList: true, subtree: true });
console.log("MutationObserver已启动");
// 定期检查和修改
setInterval(customizeReceipt, 1000); // 每秒检查一次
// 页面加载完成后也执行一次
window.addEventListener('load', customizeReceipt);
})();