2017-11-29 11 views
1

は自動的に、特定のジャーナルにいくつかの数量を書きread'emし、状況に応じて、デビットカードまたはクレジットフィールドにそれらを書くことです。書き込み量 - 私は必要なものOdooのV8

しかし、全体のポイントは、私がこれを行う必要があること、である:クラス/テーブル

の状態に応じて、請求書

2.-を作成せずに

1.-を3.-関数を任意のフィールドに追加することなく、状態が変わるとすぐに、クオンタイトはジャーナルに書き込まれます。

アイブ氏は、この方法を試してみましたが、私はそれがcomputed floatまたは整数フィールド上にある必要がありますので、この作品ではないんだと思う:

@api.multi 
@api.depends('order_picking', 'order_picking.isbn', 'contract_worksheet') 
def accounting_scenarios(self): 
    for record in self: 
     if record.state == awaitingraw: 
      record.isbn.printer_wip_account.debit = record.contract_worksheet.total_alles 
     elif record.state == work_in_progress: 
      record.transporter.transp_transit.debit = record.contract_worksheet.total_alles 

だから、それは基本的に何もしません。

購入または販売が完了したときに、debitまたはcredit fiedsが生成された請求書とともに更新されるような行動が必要です。しかし、この場合、請求書は必要ありません。私は読んで、フィールド(計算済みかどうか)をコピーして、選択したジャーナルの前述のフィールドに貼り付けてください。

私は自分自身を説明してきました願っています。

アイデア?

+1

? – forvas

+0

ISBNは= Many2oneがprodudct.productし、printer_wip_accountはcontract_worksheetは別のモデルにOne2many(そこから計算を読み取ることしようとしている)である、トランスポーターはres.partner、transp_transit、トランスポーターのアカウントjournnalで、res.partnerジャーナルアカウントをあります、total_allesは、デビットカードまたはクレジットフィールドに結果を書き、私はOne2many contract_worksheetからフィールドを読まされて行われるべきである何 – NeoVe

+0

モデルをcontract_worksheetに属し、それらの計算された分野の一つであります、特定のジャーナルに、状態に応じて、私は、私はOne2manyの関連フィールドはすなわち、1つの関連Many2one、のように呼び出すことができないと思い – NeoVe

答えて

1

フィールドが変更されるたびにアクションを実行する必要があるが、計算メソッド(デコレータ@api.dependsを使用)を呼び出す新しいフィールドを作成する必要がない場合は、モデルのORM writeメソッドを上書きする必要がありますフィールドはに属します。だから、あなたのケースで、私はこのような何かをするだろう:

@api.multi 
def write(self, vals): 
    res = super(YourModel, self).write(vals) 
    if 'state' in vals: 
     for record in self: 
      contract_worksheet = record.contract_worksheet 
      if record.state == awaitingraw: 
       printer_wip_account = record.isbn.printer_wip_account 
       res &= printer_wip_account.write({ 
        'debit': sum(c.total_alles for c in contract_worksheet), 
       }) 
      elif record.state == work_in_progress: 
       transp_transit = record.transporter.transp_transit 
       res &= transp_transit.write({ 
        'debit': sum(c.total_alles for c in contract_worksheet), 
       }) 
    return res 

私はあなたがそこに使用しているすべてのフィールドの種類が分からないので、上記のコードは、正確ではないかもしれない、しかし、あなたは「できます「One2many」フィールドの値を直接取ると、ループして必要な値を取得する必要があります。私はtotal_allesが計算さFloatあり、そしてあなたがdebit値に書き込むための唯一のフロートを得るためにそれらを合計する必要がありますので、各contract_worksheetレコードは、それに異なる値を持つフィールドを想定しています。 `isbn`、` printer_wip_account`、 `transporter`、` transp_transit`、 `contract_worksheet`と` total_alles`なフィールドの種類

+0

私はこれが本当に良いスタートだと思う、ありがとう、とにかく私は何かを見つけたと思うが、私はそのことについて新しい質問を開くだろう、ありがとう – NeoVe

関連する問題