繁体   English   中英

Odoo-如何根据现场条件切换工作流程?

[英]Odoo - How can i switch workflow based on a field condition?

我有两个“状态”字段可应用于同一模型的两个不同工作流程,我想根据一个字段值在它们之间进行切换。

我能做到吗?

提前致谢。

[编辑]

文件.py

branch1 = fields.Selection([
     ('state1', 'State 1'),
     ('state2', 'State 2'),
     ]
)

branch2 = fields.Selection([
     ('b2_state1', 'State 1'),
     ('b2_state2', 'State 2'),
     ]
)

wkf.xml

我对两个分支使用相同的状态和转换方法,显然带有适当的字段名称,我在此处对其进行了修改。

定义

<record model="workflow" id="wkf_branch1">
    <field name="name">Branch 1</field>
    <field name="osv">model.name</field>
    <field name="on_create">True</field>
</record>

<record model="workflow" id="wkf_branch2">
    <field name="name">Branch 2</field>
    <field name="osv">model.name</field>
    <field name="on_create">True</field>
</record>

状态

<record model="ir.actions.server" id="set_model_to_state2">
    <field name="name">Set Model to State2</field>
    <field name="model_id" ref="model_name"/>
    <field name="code">
            model.search([('id', 'in', context['active_ids'])]).function()
    </field>
</record>
<record model="workflow.activity" id="state1">
    <field name="name">State 1</field>
    <field name="wkf_id" ref="wkf_branch1"/>
    <field name="flow_start" eval="True"/>
    <field name="kind">dummy</field>
    <field name="action"></field>
    <field name="action_id" ref="set_model_to_state2"/>
</record>

....

所以对于branch2

转换

<record model="workflow.transition" id="model_state1_to_state2">
    <field name="act_from" ref="state1"/>
    <field name="act_to" ref="state2"/>
    <field name="signal">state2</field>
</record>

....

所以对于branch2


view.xml

<header>
    <!-- FORWARD BUTTONS -->
    <button name="state1" type="workflow"
            string="Reset to state1"
            states="state2"/>
    <button name="state2" type="workflow"
            string="State 2" states="state1"/>

    <button name="b2_state1" type="workflow"
            string="Reset to State1"
            states="b2_state2"/>
    <button name="b2_state2" type="workflow"
            string="State 2"
            states="state1"/>

    <field name="branch1" widget="statusbar"
           attrs="{'invisible': [('type', '=', 'certain_type')]}"/>
    <field name="branch2" widget="statusbar"
           attrs="{'invisible': [('type', 'in', ['other_type1', 'other_type2'])]}"/>
</header>

因此问题是:

  1. 我可以基于“ attrs”属性中的条件在view.xml中隐藏“ branch1”的状态栏,但不适用于按钮(此处代码中未显示按钮,但是我尝试同时使用两个“ attrs” '和'invisible'属性)。
  2. 我无法显示“ branch2”的状态栏,甚至无法显示按钮。
  3. 我不知道如何告诉Odoo使这两个工作流程多样化,因为它们属于同一模型。
  4. 我认为子流解决方案不适用于我的情况,因为如果模型属于一种类型,则我将使用流,否则使用另一种类型。

再次感谢。

固定。

我将两个分支都放在同一个工作流程中,并使用“ split_mode”和条件转换对其进行了拆分。

仍然是一个问题,但这是次要的。 我只想在状态栏中显示一个分支的状态。 我不知道是否有可能。

[编辑]

也解决了。 我只显示“ statusbar_visible =“”的当前状态

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM