2016-11-09 4 views
0

Ich bin neu in odoo 9 comunity.Ich habe viele2one in meinem benutzerdefinierten Modul abgelegt, die sale.order.line vererben, und ich möchte den Standardwert für das many2one Feld mit der Bedingung fto aufrufen die Funscion ist das Produkt, das kommen mit Stückliste. Was sind Schritte, um diesen Zweck zu erreichen? Danke für deine Zeit.Wie setzt man den Standardwert eines many2one-Feldes?

Antwort

0

Nehmen Sie dieses Beispiel, hier nehme ich Produkte gehört ein Lager in sale.order ausgewählt und zurück zu product_id in sale.order.line.

obj_location = self.pool.get('stock.warehouse').browse(cr, uid, warehouse_id, context=context).lot_stock_id.id 
obj_inventory = self.pool.get('stock.quant').search(cr, uid, [('location_id', '=', obj_location)]) 
product_ids = [] 
products_qty = [] 
    for obj in obj_inventory: 
      obj_products_id = self.pool.get('stock.quant').browse(cr, uid, obj) 
      product_ids.append(obj_products_id.product_id.id) 
return {'domain': {'product_id': [('id', 'in', product_ids)]}} 
+0

Wie Sie im folgenden Code sehen, mein Ziel ist, wenn ich erstellen ein Verkaufsauftrag, wenn Produkte [die mit Stückliste (BOM) erstellt wird] der Standardwert für width_id archiviert wird automatisch gesetzt, wenn Produkt ohne Stückliste kommen, die Funktion erhalten False, sorry, weil mein niedriges Niveau von Englisch, danke für die Antwort . –

+0

haben Sie Domänenfilter versucht? – 111sree

+0

Eigentlich fange ich an, über Programmierung zu lernen, also habe ich keine Ahnung über den möglichen Weg, um den Zweck zu bekommen. Bitte geben Sie mir eine Hand, um die Schritte aufzulisten, um den Zweck zu erreichen. Danke, sorry, weil mein schlechtes Englisch, ich hoffe, du kannst die Bedeutung bekommen. –

0

Klasse unit_rate (models.Model):

_name = "sale.order.line.width" 

name = fields.Char(u'Tên', required=True) 
rate = fields.Float(u'Hệ số', required=True, default=1) 
unit_id = fields.Many2one('product.uom', string=u'Đơn vị', required=True) 
description = fields.Text(u'Chú thích') 

Klasse SaleLine (models.Model):

_inherit = "sale.order.line" 
@api.model 
def create(self, vals): 
    if vals['rate'] < 1: 
     raise UserError(_(u'Không thể đưa vào hệ số nhỏ hơn 0')) 
    return super(unit_rate, self).create(vals) 

_inherit = "sale.order.line" 

width_id = fields.Many2one('sale.order.line.width', u'Kiểu tính') 
Verwandte Themen