Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
4 Trả lời
6453 Lượt xem

I am building a module (Odoo 8) , my target is create offers in sale order, this offer can set a fix price for a determinate product or set a gift to zero cost.

I am adding my custom model offer_line, in new tab inside sale order.

Is defined like this:

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")

I have a new api onchange method inside sale order:

 @api.onchange('offers_lines')
def _onchange_offers_lines(self):

I check is offer need apply, and i add to offers_line new lines from this onchange function, like this:

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

This is working perfect, lines is created, added to tab in form and onchange methods is trigger.

But the problem is next, if i try the same with sale order line but no working:

      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)

In log, this lines is created, i can see the newid id is created when i foreach self.order_line

 ORDER LINES : ID : <openerp.models.NewId object at 0x08088230> ; Product: product.product(5152,) ; Qty: 6.0 ; Price: 0.0 ;

but the item is no created in sale order line tab, i dont know why, my custom lines(One2many) is created, but, the sale_order_lines, with same code and one2many field too, is not created. I have the same problem if i try set the price_unit to this sale_order_lines. Log says changes is added, but is not updated in form. In next onchange trigger, the changes is dissapear.

Thanks to all!

Ảnh đại diện
Huỷ bỏ

Try to use |= operator, instead of += operator.

Tác giả

Thx for reply, i try whith |= operator, and result is same.

Câu trả lời hay nhất

I've got the same problem and didn't manage to solve it. Anyone?

Ảnh đại diện
Huỷ bỏ
Tác giả Câu trả lời hay nhất

Thx for reply, i try whith |= operator, and result is same. 

Ảnh đại diện
Huỷ bỏ
Bài viết liên quan Trả lời Lượt xem Hoạt động
4
thg 12 19
14684
2
thg 1 16
17018
1
thg 6 15
5090
0
thg 6 15
4521
1
thg 3 15
5370