odoo工作流程无效,遵循odoo 10文档

时间:2017-10-10 18:04:27

标签: workflow odoo odoo-10

我正在关注odoo 10 workflow documentation tutorial,我无法通过点击工作流程按钮获得任何回复,没有显示错误。

*请注意,在我的代码中,我正在开发的模块的名称是“testModule”,它在python中写为“test_module”,而不是在docs教程中使用的“openacademy”。并且视图文件是views.xml而不是openacademy.xml,是否会产生任何影响?

views.xml

...
<!-- this is the sessions views -->
    <!-- session form view -->
    <record model="ir.ui.view" id="session_form_view">
        <field name="name">session.form</field>
        <field name="model">test_module.session</field>
        <field name="arch" type="xml">
            <form string="Session Form">
              <header>
                    <button name="draft" type="workflow"
                          string="Reset to draft"
                          states="confirmed,done"/>
                    <button name="confirm" type="workflow"
                          string="Confirm" states="draft"
                          class="oe_highlight"/>
                    <button name="done" type="workflow"
                          string="Mark as done" states="confirmed"
                          class="oe_highlight"/>
                  <field name="state" widget="statusbar"/>
              </header>
                ...

session_workflow.xml

<odoo>
<data>
    <record model="workflow" id="wkf_session">
        <field name="name">OpenAcademy sessions workflow</field>
        <field name="osv">test_module.session</field>
        <field name="on_create">True</field>
    </record>
    <record model="ir.actions.server" id="set_session_to_draft">
        <field name="name">Set session to Draft</field>
        <field name="model_id" ref="model_test_module_session"/>
        <field name="code">
model.search([('id', 'in', context['active_ids'])]).action_draft()
        </field>
    </record>

    <record model="workflow.activity" id="draft">
        <field name="name">Draft</field>
        <field name="wkf_id" ref="wkf_session"/>
        <field name="flow_start" eval="True"/>
        <field name="kind">dummy</field>
        <field name="action"></field>
        <field name="action_id" ref="set_session_to_draft"/>
    </record>
    <record model="ir.actions.server" id="set_session_to_confirmed">
        <field name="name">Set session to Confirmed</field>
        <field name="model_id" ref="model_test_module_session"/>
        <field name="code">
model.search([('id', 'in', context['active_ids'])]).action_confirm()
        </field>
    </record>

    <record model="workflow.activity" id="confirmed">
        <field name="name">Confirmed</field>
        <field name="wkf_id" ref="wkf_session"/>
        <field name="kind">dummy</field>
        <field name="action"></field>
        <field name="action_id" ref="set_session_to_confirmed"/>
    </record>
    <record model="ir.actions.server" id="set_session_to_done">
        <field name="name">Set session to Done</field>
        <field name="model_id" ref="model_test_module_session"/>
        <field name="code">
model.search([('id', 'in', context['active_ids'])]).action_done()
        </field>
    </record>
    <record model="workflow.activity" id="done">
        <field name="name">Done</field>
        <field name="wkf_id" ref="wkf_session"/>
        <field name="kind">dummy</field>
        <field name="action"></field>
        <field name="action_id" ref="set_session_to_done"/>
    </record>

    <record model="workflow.transition" id="session_draft_to_confirmed">
        <field name="act_from" ref="draft"/>
        <field name="act_to" ref="confirmed"/>
        <field name="signal">confirm</field>
    </record>
    <record model="workflow.transition" id="session_confirmed_to_draft">
        <field name="act_from" ref="confirmed"/>
        <field name="act_to" ref="draft"/>
        <field name="signal">draft</field>
    </record>
    <record model="workflow.transition" id="session_done_to_draft">
        <field name="act_from" ref="done"/>
        <field name="act_to" ref="draft"/>
        <field name="signal">draft</field>
    </record>
    <record model="workflow.transition" id="session_confirmed_to_done">
        <field name="act_from" ref="confirmed"/>
        <field name="act_to" ref="done"/>
        <field name="signal">done</field>
    </record>
    <record model="workflow.transition" id="session_auto_confirm_half_filled">
        <field name="act_from" ref="draft"/>
        <field name="act_to" ref="confirmed"/>
        <field name="condition">taken_seats &gt; 50</field>
    </record>

</data>

manafest.py

中加入了通话
 'data': [
    # 'security/ir.model.access.csv',
    'views/views.xml',
    'views/templates.xml',
    'views/partner.xml',
    'views/session_workflow.xml',

],

models.py

中的会话模型中创建了字段和函数
state = fields.Selection([
    ('draft', "Draft"),
    ('confirmed', "Confirmed"),
    ('done', "Done"),
])

@api.multi
def action_draft(self):
    self.state = 'draft'

@api.multi
def action_confirm(self):
    self.state = 'confirmed'

@api.multi
def action_done(self):
    self.state = 'done'

最后我升级了模块

1 个答案:

答案 0 :(得分:1)

在您实现session_workflow.xml之前创建的会话中会发生这种情况

对于在实现session_workflow.xml之后创建的会话,它应该可以正常工作。他们在示例中间的某个地方对此发出了警告。

  

警告

     

仅在模型的   记录已创建。因此,没有关联的工作流程实例   在工作流程定义之前创建的会话实例