[一]开源ERP:odoo19二次开发问题-原库存模块问题

发布时间:2026/7/16 9:51:04
[一]开源ERP:odoo19二次开发问题-原库存模块问题 ##概述一直关注这个开源ERP之前部署过17、18版本但是没用起来因为有些习惯和字段不太适合自己。比如审批功能就一直不知道怎么在工作 环境中落地因为实际工作一直使用的是钉钉流程设计、流程功能等都习惯钉钉的方式由于之前能力有限没有去写这块的功能现在Cusor可以帮我把odoo规范、组件、格式要求等方面处理好所以开始写自己想要的功能。##修改的模块现在修改的模块是库存模块因为原系统里有“物料代码”不是odoo原生库存模块中的BarCode而且公司要求报销材料中的发票项目名称与入库项目名称一致但是由于前期沟通及行业术语等原因供应商开具发票后他们的名称是从发票系统里直接选的项目名称与入库项目名称不一样此时物料已经走完检验、入库、出库、使用全部流程所以需要增加一个别名考虑旧代码兼容问题再增加了一个外部代码。另外旧数据导入时旧数据是带有单位的odoo中的物料单位是另外一个可配置的小模块管理的所以在物料表中增加计量单位的字段汇总后要增加的字段如下store_code,ext_code,unit_name,ext_name使用cusor可以方便把这些字段加进去我是指定了model的在这里的model是product_template##出现的问题第一个问题是提示EvaluationError: Name product_variant_count is not defined这个错误比较隐晦正常浏览时不会弹任何信息界面显示功能都正常只有按F12后才会显示有2条错误提示跟踪后发现此错误在这个field中field nameuom_ids widgetmany2many_uom_tags options{no_quick_create: True, edit_tags: True} groupsuom.group_uom force_save1 context{product_id: product_variant_id if product_variant_count 1 else False, product_ids: product_variant_ids, show_variant_name: product_variant_count 1}/的context部分抛出异常的位置是前端js:function _innerEvaluate(ast) { switch (ast.type) { case 0: case 1: return ast.value; case 5: if (ast.value in evalContext) { return evalContext[ast.value]; } else if (ast.value in BUILTINS) { return BUILTINS[ast.value]; } else { throw new EvaluationError(Name ${ast.value} is not defined); } ...使用提问给Cusor它也找不出问题判定应该是在这个语法里对product_variant_count这个变量解释有问题最后修改成context{product_id: product_variant_id if product_variant_count 1 else False, product_ids: product_variant_ids, show_variant_name: product_variant_count 1}没报错调试js时也顺利通过。虽然Cusor判定这个语句是有问题的它认为product_variant_count 1始终是False是一个无意义的判断但是在调试js时这里是确实使用了product_variant_count这个变量并不是认定为字符串。