請求書の検証後に、請求書に関連する "SaleOrder"クラスの "invoice_status"フィールドを修正したいとします。私は「SaleOrder」クラスから「名前」フィールドは「起源」と関連していることに気づいodoo 9の別のクラスの選択フィールドを変更するにはどうすればよいですか?
@api.multi
def invoice_validate(self):
...
:
請求書の検証は、アカウントモジュール内、「AccountInvoice」クラスで定義されています"AccountInvoice"クラスのフィールド。
だから、私はこのようなinvoice_validate機能修正:何らかの理由で
@api.multi
def invoice_validate(self):
for invoice in self:
...
origin = self.origin
sale_order_id = self.env['sale.order'].search([('name', '=', origin)])[0].id
sale_order_obj = self.env['sale.order'].browse(sale_order_id)
sale_order_obj.write({'invoice_status': 'invoiced'})
return self.write({'state': 'open'})
を、書き込みPARTEは動作しません。
SaleOrderクラスから "invoice_status" 欄の正式な定義です:
invoice_status = fields.Selection([
('upselling', 'Upselling Opportunity'),
('invoiced', 'Fully Invoiced'),
('to invoice', 'To Invoice'),
('no', 'Nothing to Invoice')
], string='Invoice Status', compute='_get_invoiced', store=True, readonly=True, default='no')
はい、私は、フィールドが変更されているフィールドが変更された場合、フィールドが再計算されることを知っていますが、請求書の有効性を確認する際に、その販売注文または請求書を変更することはなく、invoice_statusフィールドにその値を設定します。あなたの答えは私にはっきりと分かります。ありがとう – MouTio
ボタンをクリックすると、レコードの書き込みがトリガーされます。 'sale.order'のフィールドがinvoice_id(参照)に依存しているとします。参照された請求書の書面を呼び出すたびに、そのフィールドの計算が開始されます。最後の行( 'return self.write({'state'; 'open'})')では、レコードを書き込んだ後に計算が行われ、値はあなたが望まない値に変更されます。 – Majikat