如何修改Odoo搜索视图代码实现ID按不同月份分组
解决Odoo中ID按实际业务月份分组的问题
你的核心问题是当前分组逻辑仅基于记录首次录入的日期月份,没有结合业务实际发生的月份与ID维度,导致同一ID的跨月业务被错误合并。下面是针对性的修改方案和详细说明:
修改后的搜索视图代码
<record id="project_rc.count_view_search" model="ir.ui.view"> <field name="name">project_rc.cuenta.search</field> <field name="model">project_rc.account</field> <field name="arch" type="xml"> <search string="String ..."> <field name="date" /> <group expand="1" string="Group By"> <!-- 按业务月份单独分组 --> <filter string="Month" name="by_month" help="Group by business month" context="{'group_by': 'date:month'}" /> <!-- 按ID + 月份联合分组(满足同一ID跨月业务独立分组的需求) --> <filter string="ID & Month" name="by_id_month" help="Group by account ID and business month" context="{'group_by': ['name', 'date:month']}" /> </group> </search> </field> </record>
关键修改点解析
精准按月份粒度分组:
把原代码中的'group_by': 'date'改为'date:month',Odoo会自动提取日期字段的「年+月」作为分组维度,而不是完整的日期值,确保同月份的业务会被归到同一组,而非按天拆分。ID与月份联合分组:
新增了ID & Month过滤选项,通过['name', 'date:month']实现先按ID(这里假设你的ID字段是name,如果是其他字段比如account_code,直接替换即可)分组,再按月份细分,这样同一个ID在不同月份的业务会被拆分成独立分组,完全匹配你的需求。
额外注意事项
- 确认
date字段存储的是实际业务发生日期,而非记录的创建日期(create_date),否则分组仍然会基于首次录入时间。 - 如果你的ID字段不是
name,请将context中的'name'替换为模型中对应的标识字段。
内容的提问来源于stack exchange,提问作者Francisco González Mejías
相关产品推荐
相关产品推荐

