2016-03-07 9 views
0

Я строю модуль (Odoo 8), моя цель - создавать предложения в порядке продажи, это предложение может установить цену за установку для определенного продукта или установить подарок к нулевой стоимости.Odoo 8 @ api.onchange функция not let update/Создано one2many значение

Я добавляю свою пользовательскую модель offer_лайн, в новую вкладку внутри заказа на продажу.

Определяется так:

class OfferSaleOrderLine(models.Model): 

_name = 'offer.sale.order.line' 

sale_order_ref = fields.Many2one('sale.order',ondelete='set null', string="Sale Order", index=True) 

offer_ref = fields.Many2one('offer',ondelete='set null', string="Oferta", index=True) 

is_active = fields.Boolean(default=True,string='Activo') 

accumulations = fields.Float(digits=(6, 2), help="Acumulaciones") 

class SaleOrder(models.Model): 

_inherit = 'sale.order' 

offers_lines = fields.One2many('offer.sale.order.line','sale_order_ref', string="Lineas de Ofertas") 

У меня есть новый API OnChange метод внутри продажи заказа:

@api.onchange('offers_lines') 

def _onchange_offers_lines(self): 

я проверить это нужно применить предложение, и я добавить в offers_line новые строки из этого onchange функция, как это:

self.offers_lines += self.env['offer.sale.order.line'].new({'is_active': True, 'offer_ref': offer, 'accumulations' : is_offer}) 

Это прекрасно работает, линии создаются, добавляются на вкладку в форме и методах обмена является триггером.

Но проблема заключается в следующем, если я не попробовать то же самое с продажи строки заказа, не работает:

 val = { 

'name': gift_line.free_product.name, 

'order_id': self.id, 

'product_id': gift_line.free_product.id, 

'product_uom_qty': gift_line.qty, 

'product_uom': self.order_line[0].product_uom.id, 

'price_unit': 0.0, 

'state': 'draft', 

} 

self.order_line += self.env['sale.order.line'].new(val) 

В журнале, эти строки создается, я могу видеть NEWID идентификатор создается, когда я Foreach сам .order_line

**** ЗАКАЗНЫЕ ЛИНИИ: ID:; Продукт: product.product (5152,); Кол-во: 6,0; Цена: 0.0; ****

, но элемент не создан на вкладке строки заказа на продажу, я не знаю, почему, мои пользовательские строки (One2many) созданы, но, sale_order_lines, с тем же кодом и одним большим полем тоже , не создается. У меня такая же проблема, если я попытаюсь установить price_unit в эту sale_order_lines. Журнал сообщает, что изменения добавляются, но не обновляются в форме. В следующем триггере обмена изменения исчезают.

Спасибо всем!

ответ

0

Odoo не поддерживает onchange on * 2many поля, больше.

Вы можете видеть, что в openerp.models здесь https://github.com/odoo/odoo/blob/9.0/openerp/models.py#L6050

и, кроме того дискуссий на эту тему здесь: https://github.com/odoo/odoo/issues/2693

+0

Thx por ответ, я прочитал это, но я не понимаю, почему работает с моей пользовательской моделью: offers_lines = fields.One2many ('offer.sale.order.line ',' sale_order_ref ', string = "Lineas de Ofertas"). Это тоже много, но работает правильно. – aparrac88

+0

Я думаю, что уже есть onchange для order_line на sale.order. Возможно, что onchange блокирует ваш новый обмен? – CZoellner

+0

Здравствуйте, спасибо за ответ, может быть, это правильно, я решил проблему с помощью кнопки (не автоматически, но кажется единственным способом). – aparrac88

0

Я не уверен, чтобы правильно понять вашу проблему, но я вижу две вещи Это.

Прежде всего вам нужно проверить, что поле, которое вы хотите установить onchange еще не установлено в базовом модуле, который вы распространяете. Если это так, вам пришлось отключить старый стиль onchange в представлении, установив атрибут в поле (имейте в виду, что, отключив api-v7 onchange в поле, не будет вызывать старую функцию обмена вы, вероятно, захотите назвать это в своей новой функции обмена).

Вторая проблема заключается в том, что вы не можете добавить элемент в поле one2many, вы, вероятно, можете вместо него использовать many2one. Вы также не можете использовать var += value, чтобы добавить элемент в поле отношения, вы должны использовать специальный баннер (как описано here).

Смежные вопросы