Odoo V10薪资模块新增页签不显示,求助表格实现方案
嘿,我帮你梳理下问题所在,你的代码有两个关键问题导致页签不显示且表格无法正常工作,咱们一步步来修正:
一、先解决页签不显示的核心问题
你的XML视图结构犯了一个基础错误:原hr_payroll.view_hr_payslip_form本身就是一个完整的form视图,你却在<xpath expr="//page[1]" position="after">里嵌套了另一个<form>标签,这直接破坏了原视图的渲染结构,导致新页签根本无法被加载。
正确的做法是直接把新页签插入到原视图的<notebook>组件中,不需要额外嵌套form标签。
二、实现类似销售订单行的表格(关键改动)
销售订单行的表格是通过One2Many关联子模型实现的——主模型(销售订单)关联多个子模型行(订单明细)。而你现在直接在hr.payslip上定义普通字段,根本无法用tree组件渲染成行式表格。我们需要创建一个薪资明细子模型,再通过One2Many字段关联到主薪资单模型。
修正后的Python代码
from openerp import models, fields, api # 新建薪资明细子模型,对应销售订单的sale.order.line class HrPayslipLine(models.Model): _name = 'hr.payslip.line' _description = '薪资明细行' # 关联到主薪资单模型,级联删除确保明细行随薪资单一起删除 payslip_id = fields.Many2one('hr.payslip', string='关联薪资单', required=True, ondelete='cascade') item_name = fields.Char(string='薪资项目', required=True) amount = fields.Integer(string='金额', required=True) # 可根据需求扩展字段,比如项目类型、备注等 # 继承hr.payslip模型,添加One2Many字段关联明细行 class HrPayslipInherit(models.Model): _inherit = 'hr.payslip' # 关联薪资明细行的核心字段 payslip_line_ids = fields.One2many('hr.payslip.line', 'payslip_id', string='薪资明细')
修正后的XML视图代码
<?xml version="1.0" encoding="utf-8"?> <openerp> <data> <record id="view_hr_payslip_inherit_form_extended" model="ir.ui.view"> <field name="name">hr.payslip.inherit.form</field> <field name="model">hr.payslip</field> <field name="inherit_id" ref="hr_payroll.view_hr_payslip_form" /> <field name="arch" type="xml"> <!-- 找到原视图的notebook组件,在内部插入新页签 --> <xpath expr="//notebook" position="inside"> <page string="Pendapatan Karyawan"> <!-- 用One2Many字段配合tree widget实现可编辑表格 --> <field name="payslip_line_ids" colspan="4" nolabel="1"> <tree string="薪资明细行" editable="bottom"> <field name="item_name"/> <field name="amount"/> </tree> </field> </page> </xpath> </field> </record> </data> </openerp>
三、最后要注意的细节
- 确保你的模块在
__openerp__.py的depends列表中添加了'hr_payroll',否则会找不到原视图 - 升级模块后,记得刷新浏览器(必要时清空缓存)才能看到新页签
- 如果需要保留你原来定义的
gaji_pokok和t_lembur字段,可以把它们迁移到子模型中,或者作为主模型的单独字段放在页签的group组件里
这样修改后,你就能看到新增的「Pendapatan Karyawan」页签,里面会出现和销售订单行一样的可编辑表格,支持新增、删除、修改薪资明细行。
内容的提问来源于stack exchange,提问作者Ffs
相关产品推荐
相关产品推荐

