Skip to Content
Meniu
Trebuie să fiți înregistrat pentru a interacționa cu comunitatea.
Această întrebare a fost marcată
4 Răspunsuri
6443 Vizualizări

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!

Imagine profil
Abandonează

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

Autor

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

Cel mai bun răspuns

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

Imagine profil
Abandonează
Autor Cel mai bun răspuns

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

Imagine profil
Abandonează
Related Posts Răspunsuri Vizualizări Activitate
4
dec. 19
14684
2
ian. 16
17018
1
iun. 15
5088
0
iun. 15
4517
1
mar. 15
5369