2017-08-24 5 views
-1

Iは、質量ドラフト状態にある製造指図(MOS)を確認していると私は、製造オーダーのツリービュー内のMOSを選択した後に複数のボタンから実行される次のコードを使用しています:odoo 8つの質量確認製造

@api.multi 
def mass_action(self): 
    mo_obj = self.env['mrp.production'] 
    mo_ids = self.env.context.get('active_ids') 
    if self.confirm: 
     domain = [('state', '=', 'draft'), 
        ('id', 'in', mo_ids)] 
     draft_mo_lst = mo_obj.search(domain) 
     for x in draft_mo_lst: 
      x.action_confirm() 

をMOは販売注文から作成された場合、「強制予約」を押すとすべてが機能します(既に作成されていると確認済みです)。

他のテンプレートから作成ボタンまたは機能を使用して作成されたMOを確認すると、このウィザードを使用した後、[強制予約]ボタンを押してもプロダクションは準備完了状態になりません。それは製品を予約して在庫移動データベーステーブルに割り当てているようですが、MO自体は状態を準備完了に変更しません。それ以降はMOが詰まっているようだ。

何か不足していますか何とか別の方法で対応する必要がありますか?

+2

何がself.confirmは複数の意味ですか? – dccdany

+0

ウィザードが機能する前にチェックする必要があるブール値フィールドです – Madis

答えて

0

次のコードは、この問題を解決します。 action_confirm()関数は、ワークフロー信号 "button_confirm"によって呼び出す必要がありました。

@api.multi 
def mass_action(self): 
    mo_obj = self.env['mrp.production'] 
    mo_ids = self.env.context.get('active_ids') 
    from openerp import workflow 
    if self.confirm: 
     domain = [('state', '=', 'draft'), 
        ('id', 'in', mo_ids)] 
     draft_mo_lst = mo_obj.search(domain) 
     for x in draft_mo_lst: 
      workflow.trg_validate(self._uid, 'mrp.production', x.id, 'button_confirm', self._cr) 
関連する問題