2014-07-03 37 views
0

我想在account.invoice的工作流程中添加「打開」和「付費」之間的另一個狀態(「高級」)。 於是我繼承了OpenERP 7 - 爲account.invoice工作流程添加另一個狀態

class advance_invoice_workflow(osv.osv) : 
    _name = 'account.invoice' 
    _inherit = "account.invoice" 
    _columns = { 
    'state': fields.selection([ 
     ('draft','Draft'), 
     ('proforma','Pro-forma'), 
     ('proforma2','Pro-forma'), 
     ('open','Open'), 
     ('advanced','Advanced'), 
     ('paid','Paid'), 
     ('paid_advanced','Paid advanced'), 
     ('cancel','Cancelled'), 
     ],'Status', select=True, readonly=True, track_visibility='onchange', 
     help='* The \'Draft\' status is used when a user is encoding a new and unconfirmed Invoice. \ 
      \n* The \'Pro-forma\' when invoice is in Pro-forma status,invoice does not have an invoice number. \ 
      \n* The \'Open\' status is used when user create invoice,a invoice number is generated.Its in open status till user does not pay invoice. \ 
      \n* The \'Paid\' status is set automatically when the invoice is paid. Its related journal entries may or may not be reconciled. \ 
      \n* The \'Cancelled\' status is used when user cancel invoice. \ 
     '), 
    } 

模塊,並通過使聲明的XML文件中的狀態

<record id="act_advanced" model="workflow.activity"> 
     <field name="wkf_id" ref="account.wkf" /> 
     <field name="name">advanced</field> 
     <field name="kind">function</field> 
     <field name="action">set_advanced()</field> 
    </record> 

所以,我有兩個轉變:

  • 從開到第一個高級,

    <record id="t2" model="workflow.transition"> 
        <field name="act_from" ref="account.act_open" /> 
        <field name="act_to" ref="act_advanced" /> 
        <field name="trigger_model">account.move.line</field> 
        <field name="trigger_expr_id">move_line_id_payment_get()</field> 
        <field name="condition">test_advanced()</field> 
        <field name="signal">button_confirm_advance</field> 
    </record> 
    
  • 第二個從高級到支付

    <record id="t1" model="workflow.transition"> 
        <field name="act_from" ref="act_advanced"/> 
        <field name="act_to" ref="account.act_paid"/> 
        <field name="trigger_model">account.move.line</field> 
        <field name="trigger_expr_id">move_line_id_payment_get()</field> 
        <field name="condition">test_paid()</field> 
    </record> 
    

從外部模塊,不從account.invoice繼承,而是指它,我想將信號發送到工作流移動從「act_open」到「act_advanced」。 所以我增加了一個按鈕,名字=「button_confirm_advance」結合這個動作:

def button_confirm_advance(self,cr,uid,ids,context=None): 
    context = context or {} 
    for invoice in self.browse(cr,uid,ids,context=context): 
     wf_service = netsvc.LocalService("workflow") 
     self.write(cr, uid, [invoice.id],{}) 
     wf_service.trg_validate(uid,'account.invoice',invoice.id,'button_confirm_advance',cr) 
    return {'type': 'ir.actions.act_window_close'} 

所有變量都是正確的,但是trg_validate返回False。 我錯了什麼?

感謝, 帕特里齊奧

回答

0

我解決了委託的流程管理,從繼承另一個類account.invoice

class advance_invoice_account_ui(osv.osv) : 
    _name = 'account.invoice' 
    _inherit = "account.invoice" 
相關問題