You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Odoo 16发票门户视图添加签名按钮失败问题排查

问题排查方向

1. 视图继承目标与模块依赖问题

  • 你当前继承的account_payment.portal_invoice_page_inherit_payment是account_payment模块对基础门户发票视图的继承,若自定义模块的__manifest__.py未添加'depends': ['account', 'account_payment', 'portal'],会直接导致视图继承失效。
  • 建议先尝试直接继承基础视图account.portal_invoice_page,规避多层继承的加载顺序问题,修改inherit_id配置:
    <field name="inherit_id" ref="account.portal_invoice_page"/>
    

2. XPath定位表达式不准确

  • 你使用的//div[contains(@class, 'd-grid')]/a[contains(@class, 'btn-primary')]可能匹配不到目标元素:
    • 门户发票页的"Pay Now"按钮可以通过文本精确匹配,修改XPath为:
      <xpath expr="//a[contains(text(), 'Pay Now')]" position="after">
      
    • 也可以直接查看目标视图的DOM结构,确认div.d-grid下的a.btn-primary是否存在,避免因class组合变更导致定位失败。

3. 视图权限与加载配置问题

  • 确保自定义视图给portal组开放了访问权限,在安全文件中添加配置示例:
    <record id="group_portal" model="res.groups">
        <field name="implied_ids" eval="[(4, ref('your_module.group_your_portal_signature'))]"/>
    </record>
    
  • 门户视图属于page类型,可在视图记录中明确声明:
    <field name="type">page</field>
    

4. 签名UMD触发的逻辑缺失

  • 你的代码仅实现了按钮和模态框的UI,但没有处理点击"Save Signature"后触发发票模型Signature UMD的核心逻辑:
    • 需要添加JavaScript代码,获取画布签名数据并调用Odoo RPC方法,示例:
      document.getElementById('saveSignatureModal').addEventListener('click', function() {
          const canvas = document.getElementById('signatureCanvas');
          const signatureData = canvas.toDataURL();
          const invoiceId = parseInt(document.querySelector('.invoice-id').dataset.id);
          
          odoo.rpc.call('account.move.trigger_signature_umd', [[invoiceId], {signature: signatureData}])
              .then(function(result) {
                  if (result) {
                      $('#signatureModal').modal('hide');
                      window.location.reload();
                  }
              });
      });
      
    • 同时要在account.move模型中定义trigger_signature_umd方法,完成签名保存和UMD触发的业务逻辑。

内容的提问来源于stack exchange,提问作者Mark Silla

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 16:13:19