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

i added 'product_dimension' field in 'sale.order.line' and want to send it's value to 'stock.move' so i did :

class InheritStockMove(models.Model):
_inherit = 'stock.move'

product_dimension = fields.Char()

then :

class InheritSaleOrderLine(models.Model):
_inherit = 'sale.order.line'

product_dimension = fields.Char(string="Dimension")

def _prepare_procurement_values(self, group_id=False):
res = super(InheritSaleOrderLine, self)._prepare_procurement_values(group_id)
res.update({'product_dimension': self.product_dimension})
return res


then i added :

class StockRuleInherit(models.Model):
_inherit = 'stock.rule'

def _get_stock_move_values(self, product_id, product_qty, product_uom, location_id, name, origin, values, group_id):
res = super(StockRuleInherit, self)._get_stock_move_values(product_id, product_qty, product_uom, location_id,
name, origin, values, group_id)
res['product_dimension'] = values.get('product_dimension', False)
return res

but i get this error :
res['product_dimension'] = values.get('product_dimension', False) AttributeError: 'res.company' object has no attribute 'get'
Ảnh đại diện
Huỷ bỏ
Câu trả lời hay nhất

you can try this way:
class InheritSaleOrderLine(models.Model):

_inherit = 'sale.order.line'


product_dimension = fields.Char(string="Dimension")


def _prepare_procurement_values(self, group_id=False):

res = super(InheritSaleOrderLine, self)._prepare_procurement_values(group_id)

res.update({'product_dimension': self.product_dimension})

return res


class StockRuleInherit(models.Model):

_inherit = 'stock.rule'


def _get_stock_move_values(self, product_id, product_qty, product_uom, location_id, name, origin, values, group_id):

res = super(StockRuleInherit, self)._get_stock_move_values(product_id, product_qty, product_uom, location_id,

name, origin, values, group_id)

res['product_dimension'] = values.get('product_dimension', False)

return res



make sure that the values parameter passed to the _get_stock_move_values method is a dictionary containing the required information. Additionally, ensure that you are passing the correct arguments when calling the _prepare_procurement_values method to set the product_dimension field value.

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

Hi,

You cannot use the get method on values because it is an instance of the res.company object and not a dictionary, which is why you are getting the problem. Field values from the stock.move records are contained in the values parameter. You must use dot notation to directly retrieve the value of the product_dimension field from the values object.

Inherit sale.order.line and override the _prepare_procurement_values method to include the product_dimension:

from odoo import models, fields

class InheritSaleOrderLine(models.Model):
    _inherit =
'sale.order.line'
  
    product_dimension = fields.Char(string=
"Dimension")
  
   
def _prepare_procurement_values(self, group_id=False):
        res =
super(InheritSaleOrderLine, self)._prepare_procurement_values(group_id)
        res.update({
           
'product_dimension': self.product_dimension,
        })
       
return res

Hope it helps

Ảnh đại diện
Huỷ bỏ
Bài viết liên quan Trả lời Lượt xem Hoạt động
0
thg 8 20
6562
4
thg 5 24
12706
1
thg 4 24
3319
0
thg 11 23
2039
1
thg 9 23
2139