Odoo从“更多”按钮更改工作流状态

时间:2015-11-30 13:54:32

标签: xml python-2.7 odoo-8 odoo

我想从“更多”按钮更改某些发票的状态。因此,当我从树视图中选择一些发票并从“更多”按钮下方选择“全部取消”按钮时。

请帮助

1 个答案:

答案 0 :(得分:5)

您必须使用服务器操作来执行此操作。将下一个代码添加到自定义模块中的XML文件中:

<record id="change_state_action" model="ir.actions.server">
    <field name="name">Change invoice state</field>
    <field name="model_id" ref="model_account_invoice"/>
    <field name="state">code</field>
    <field name="code">
action = self.your_method_to_change_state(cr, user.id, context.get('active_ids', []), context=context)
    </field>
</record>

<record id="change_state_option" model="ir.values">
    <field name="name">Change invoice state</field>
    <field name="key2" eval="'client_action_multi'"/>
    <field name="model" eval="'account.invoice'"/>
    <field name="value" eval="'ir.actions.server,%d'%change_state_action"/>
</record>

code字段中,您必须写action = whatever python code you want。您必须考虑到Python代码的行为必须与您在account.invoice模型中工作一样。

因此,您必须将此代码放在模块中的Python文件中:

class account_invoice(models.Model):
    _inherit = 'account.invoice'

    @api.multi
    def your_method_to_change_state(self):
        self.write({'state': 'XXXXX'})