2017-01-12 5 views
0

Я создал модуль с полем состояние, которое имеет следующие атрибуты: «сквозняк», «открытый», «платный», «отменить». В xml у меня есть кнопка подтвердить, и когда пользователь нажмет на эту кнопку, состояние должно измениться с «черновик», чтобы «открыть». Однако коды не работают, состояние не изменилось. Любая подсказка? Благодарярабочий процесс в Odoo 9

Ниже приведены мои коды:

(1) module.py

'state': fields.selection([('draft', "New"), ('open', "Awaiting Payments"), ('paid', "Paid"), ('cancel', "Cancelled")], 'Status', default='draft', track_visibility='onchange'), 

def action_draft(self, cr, uid, ids, context=None): 
     return self.write(cr, uid, ids, {'state':'draft'}) 

def action_open(self , cr, uid, ids, context=None): 
     return self.write(cr, uid, ids, {'state':'open'}) 

def action_paid(self , cr, uid, ids, context=None): 
     return self.write(cr, uid, ids, {'state':'paid'}) 

def action_cancel(self , cr, uid, ids, context=None): 
     return self.write(cr, uid, ids, {'state':'cancel'}) 

(2) module.xml

<header> 

      <button name="button_confirm" string="Confirm Application" states="draft" class="oe_highlight" type="action"/> 

      <button name="button_email" string="Send by Email" states="open" class="oe_highlight" type="action"/> 

      <button name="button_print" string="Print" states="open" class="oe_highlight" type="action"/> 

      <button name="%(test9_receipt_action)d" string="Register Payment" states="open" class="oe_highlight" type="action"/> 

      <button name="button_refund" type="action" string="Refund Invoice" states="paid" class="oe_highlight"/> 

      <button name="button_cancel" type="action" string="Cancel Application" states="draft,open,paid" class="oe_highlight"/> 


      <field name="state" widget="statusbar" statusbar_visible="draft,open,paid,cancel" statusbar_colors='{"confirmed":"blue"}'/> 

</header> 

(3) workflow.xml

<openerp> 
    <data> 
     <record model="workflow" id="wkf_land2"> 
      <field name="name">m.wkf.land2</field> 
      <field name="osv">m.land2</field> 
      <field name="on_create">True</field> 
     </record> 

     <!-- Draft--> 

     <record model="workflow.activity" id="land_draft"> 
      <field name="name">draft</field> 
      <field name="wkf_id" ref="wkf_land2"/> 
      <field name="flow_start" eval="True"/> 
     </record> 

     <!-- Awaiting Payments--> 
     <record model="workflow.activity" id="land_open"> 
      <field name="name">open</field> 
      <field name="wkf_id" ref="wkf_land2"/> 
      <field name="kind">function</field> 
      <field name="action">write({'state':'open'})</field> 
     </record> 


     <!--Paid--> 
     <record model="workflow.activity" id="land_paid"> 
      <field name="name">paid</field> 
      <field name="wkf_id" ref="wkf_land2"/> 
      <field name="kind">function</field> 
      <field name="action">write({'state':'paid'})</field> 
      <field name="flow_stop">True</field> 
     </record> 

     <!--Cancel--> 
     <record model="workflow.activity" id="land_cancel"> 
      <field name="name">cancel</field> 
      <field name="wkf_id" ref="wkf_land2"/> 
      <field name="kind">function</field> 
      <field name="action">write({'state':'cancel'})</field> 
      <field name="flow_stop">True</field> 
     </record> 



     <!-- WORKFLOW TRANSITION --> 


     <record model="workflow.transition" id="land_draft_to_open"> 
      <field name="act_from" ref="land_draft"/> 
      <field name="act_to" ref="land_open"/> 
      <field name="condition">True</field> 
      <field name="signal">button_confirm</field> 
     </record> 

     <record model="workflow.transition" id="land_open_to_paid"> 
      <field name="act_from" ref="land_open"/> 
      <field name="act_to" ref="land_paid"/> 
      <field name="condition">True</field> 
      <field name="signal">button_register</field> 
     </record> 

     <record model="workflow.transition" id="land_paid_to_cancel"> 
      <field name="act_from" ref="land_paid"/> 
      <field name="act_to" ref="land_cancel"/> 
      <field name="signal">button_cancel</field> 
      <field name="condition">True</field> 
     </record> 

     <record model="workflow.transition" id="land_draft_to_cancel"> 
      <field name="act_from" ref="land_draft"/> 
      <field name="act_to" ref="land_cancel"/> 
      <field name="signal">button_cancel</field> 
      <field name="condition">True</field> 
     </record> 
     <record model="workflow.transition" id="land_open_to_cancel"> 
      <field name="act_from" ref="land_open"/> 
      <field name="act_to" ref="land_cancel"/> 
      <field name="signal">button_cancel</field> 
      <field name="condition">True</field> 
     </record> 
    </data> 
</openerp> 

ответ

1

The n Название кнопки должно совпадать с именем вашей функции.

Пример:

...button name="action_cancel" type="action" string="Cancel Applicat... 

и

def action_cancel(self , cr, uid, ids, context=None): 
    return self.write(cr, uid, ids, {'state':'cancel'}) 

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

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