发送电子邮件odoo 8时如何更新报价状态

时间:2018-08-07 06:22:05

标签: python odoo odoo-8

默认情况下,通过电子邮件发送报价后,状态会更新为“已发送”。我想使用电子邮件功能发送通知电子邮件并更新除“已发送”(如“需要批准”,“已验证”等)以外的状态。

默认 报价(草稿)->发送电子邮件->报价(已发送)

我希望发送通知电子邮件;而不是使用现有电子邮件功能的整个报价 报价(草稿)->发送电子邮件->报价(需要批准)->报价(已批准)->报价(已发送)

谁能建议我该怎么做。

1 个答案:

答案 0 :(得分:0)

首先,您可以看到文件sale.py # Line 652。当您发送电子邮件时,它将使用上下文mail.compose.message调用向导'mark_so_as_sent': True

接下来,您可以在samme文件中查找mail.compose.message,您将看到它sale.py # Line 1277。因此,如果您发送电子邮件,它将称为工作流quotation_sent

在文件sale_workflow.xml上,您将看到类似的内容:

<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>
        <record id="act_sent" model="workflow.activity">
            <field name="wkf_id" ref="wkf_sale"/>
            <field name="name">sent</field>
            <field name="kind">function</field>
            <field name="action">write({'state':'sent'})</field>
        </record>

        <record id="trans_draft_sent" model="workflow.transition">
            <field name="act_from" ref="act_draft"/>
            <field name="act_to" ref="act_sent"/>
            <field name="signal">quotation_sent</field>
        </record>
    </data>
</openerp>

现在,您只需要在状态字段中添加新状态并编辑工作流程即可:

Python

state = fields.Selection(selection_add=[('not_approval', 'Quotation (Approval Required)')])

XML

<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>
        <record id="act_not_approval" model="workflow.activity">
            <field name="wkf_id" ref="wkf_approval"/>
            <field name="name">not_approval</field>
            <field name="kind">function</field>
            <field name="action">write({'state':'not_approval'})</field>
        </record>

        <record id="trans_draft_sent" model="workflow.transition">
            <field name="act_from" ref="act_draft"/>
            <field name="act_to" ref="act_not_approval"/>
            <field name="signal">quotation_sent</field>
        </record>
    </data>
</openerp>