2016-11-30 4 views
0

У меня есть два поля состояния, которые применяются к двум различным рабочим процессам той же модели, и я хотел бы переключаться между ними на основе значения поля.Odoo - Как я могу переключить рабочий процесс на основе поля?

Могу ли я достичь этого?

Заранее спасибо.

[EDIT]

файл .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. Я могу скрыть статусная строка 'branch1' в view.x ml на основе условия в атрибуте attrs, но он не работает для кнопок (здесь не присутствует в коде, но я пытаюсь использовать оба атрибута «attrs» и «invisible»).
  2. Я не могу показать строку состояния «branch2» и даже кнопки.
  3. Я не знаю, как сказать Odoo, чтобы разнообразить два рабочих процесса, поскольку они принадлежат к одной и той же модели.
  4. Я не думаю, что решение подзаголовка будет хорошо для моего случая, так как я бы использовал поток, если модель одного типа, а другая - в противном случае.

Еще раз спасибо.

+1

Измените свой вопрос и добавьте: 1. Ваш код/​​ваши попытки 2. Ваш вход, текущий выход и ожидаемый результат –

ответ

1

Исправлено.

Я поместил обе ветви внутри одного рабочего процесса и разделил их на «split_mode» и условные переходы.

Все еще остается проблемой, но это вторично. Я бы хотел показать в строке состояния только состояния одной ветви. Я не знаю, возможно ли это или нет.

[EDIT]

Решено, что тоже. Я показываю только текущее состояние с 'statusbar_visible = ""'

 Смежные вопросы

  • Нет связанных вопросов^_^