Odoo 11 CE如何在报价单中添加CRM商机标题?
在Odoo 11 CE中给报价单添加CRM商机标题的方法
当然可以在Odoo 11 CE的报价单里添加CRM商机标题,下面我会分享两种实用的实现方式,涵盖你问到的QWeb报表方案,还有更灵活的自定义字段思路:
方法一:直接通过QWeb报表引用商机标题
报价单对应的模型是sale.order,它和CRM商机模型crm.lead通过opportunity_id字段关联。商机的标题对应的字段就是name,所以在QWeb报表里,你可以通过关联字段直接获取这个值。
具体操作步骤:
- 找到你需要修改的报价单报表模板(默认模板是
sale.report_saleorder_document,如果是自定义报表就找对应的模板) - 在模板的合适位置(比如报价单头部信息区域)插入以下代码:
<!-- 显示商机标题,仅当报价单关联了商机时才渲染 --> <div t-if="doc.opportunity_id" class="mb-2"> <strong>商机标题:</strong> <span t-field="doc.opportunity_id.name"/> </div>
我加了t-if="doc.opportunity_id"的判断,避免没有关联商机时显示空内容,你可以根据自己的需求调整样式和位置。
方法二:给报价单添加自定义字段(表单+报表通用)
如果不仅想在报表里看到商机标题,还希望在报价单的表单视图里也能展示,甚至同步更新,推荐给sale.order模型添加一个关联字段:
- 新建或使用已有的自定义模块,在
models/sale_order.py中添加代码:
from odoo import models, fields class SaleOrder(models.Model): _inherit = 'sale.order' # 关联商机标题,只读且自动同步 opportunity_title = fields.Char( string='商机标题', related='opportunity_id.name', readonly=True, help='同步自关联的CRM商机标题' )
这个related字段会自动同步关联商机的name值,设置为只读是因为商机标题应该在CRM模块里修改,避免两边不一致。
- 修改报价单的表单视图,在合适的位置加入这个字段:
<field name="opportunity_title"/>
这样在报价单表单里就能直接看到商机标题了,同时在QWeb报表里也可以直接用doc.opportunity_title来调用这个字段,写法更简洁。
小提示
不管用哪种方法,都要确保报价单已经关联了CRM商机:从商机转化生成的报价单会自动关联,手动创建的报价单可以在表单里找到「商机」字段选择对应的CRM记录。
内容的提问来源于stack exchange,提问作者Btashi
相关产品推荐
相关产品推荐

