Odoo 15社区版手动创建付款时出现ValueError错误的解决咨询
Odoo 15社区版手动创建付款时出现ValueError错误的解决咨询
看起来你遇到的是Odoo社区版原生模型和视图(或第三方/自定义模块)不兼容导致的字段缺失问题,我来帮你一步步梳理解决方案:
先排查模块层面的问题
首先得搞清楚这个effective_date字段是哪里来的,毕竟Odoo 15社区版的原生account.payment模型确实没有这个字段:
- 回忆下最近有没有安装过会计相关的第三方模块?有些增强付款功能的第三方模块会给
account.payment添加effective_date字段,如果模块没正确安装、依赖缺失,或者中途被禁用,就会出现这种报错。你可以进入开发者模式,在「应用」里搜索类似“payment effective date”的关键词,找到对应模块后尝试重新安装。 - 如果是你自己开发了自定义模块,那大概率是你在视图或者业务逻辑代码里引用了
effective_date,但没在account.payment模型里定义这个字段,导致视图渲染时找不到字段。
手动添加effective_date字段的可行方案
是的,你完全可以给account.payment模型添加这个字段,这里分两种方式:
方式一:直接在系统里通过开发者模式添加
- 进入开发者模式后,打开「设置」>「技术」>「模型」,搜索找到
account.payment模型。 - 点击页面上的「创建」按钮来添加新字段,推荐设置以下属性:
- 字段名称:
effective_date(必须和报错里的字段名完全一致) - 字段类型:选「日期」(Date)就足够,付款生效日期一般不需要具体时间
- 标签:可以填「生效日期」(中文系统)或者「Effective Date」(英文系统)
- 存储:一定要勾选,确保字段值能存在数据库中
- 默认值:可以设置为
fields.Date.today(),让新付款默认生效日期为当天 - 必填:根据你的业务需求决定是否勾选,非强制的话就不用选
- 字段名称:
- 保存字段后,记得点击模型页面顶部的「升级」按钮,触发数据库结构更新。
- 最后检查会计模块的付款表单视图(比如
account_payment_form),确保视图里引用该字段的组件正常,要是之前视图里已经有这个字段的布局,现在字段存在后就不会再报错了。
方式二:通过自定义模块添加(推荐,更易维护)
如果希望修改能跟随模块迁移、不受Odoo版本更新影响,建议写一个简单的自定义模块:
在模块的models目录下新建py文件,添加以下代码:
from odoo import models, fields class AccountPayment(models.Model): _inherit = 'account.payment' effective_date = fields.Date( string='Effective Date', default=fields.Date.today(), help='The date when this payment takes effect' )
安装这个自定义模块后,字段就会自动添加到account.payment模型里,后续维护也更方便。
补充说明
为什么从销售/采购订单里付款没问题?因为那个付款流程调用的是专属视图或者业务逻辑,没有引用effective_date字段,只有会计模块的付款创建页面用到了这个字段,所以只有在那里触发报错。
备注:内容来源于stack exchange,提问作者Ulises Gonzalez Horta
相关产品推荐
相关产品推荐

