Skip to Content
เมนู
คุณต้องลงทะเบียนเพื่อโต้ตอบกับคอมมูนิตี้
คำถามนี้ถูกตั้งค่าสถานะ
1 ตอบกลับ
4423 มุมมอง

Origianl code :

class Inventory(models.Model):
_name = "stock.inventory"
_description = "Inventory"
_order = "date desc, id desc"

@api.model
def _default_location_id(self):
company_user = self.env.user.company_id
warehouse = self.env['stock.warehouse'].search([('company_id', '=', company_user.id)], limit=1)
if warehouse:
return warehouse.lot_stock_id.id
else:
raise UserError(_('You must define a warehouse for the company: %s.') % (company_user.name,))

My overriding :

class Inventory(models.Model):
_inherit = 'stock.inventory'

print("test")
@api.model
def _default_location_id(self):
print("pass")
res = super(Inventory, self)._default_location_id()
if self.env.user.context_default_warehouse_id:
res['location_id'] = self.env.user.context_default_warehouse_id.\
lot_stock_id.id
return res

I don't understand why it didn't work !

อวตาร
ละทิ้ง
คำตอบที่ดีที่สุด

As you can see in original _default_location_id method, it's not returned any value and in your code you call super method and set it to res and that's why it's not working, try to use self.update

Please try the below:

@api.model
def _default_location_id(self):
    super(Inventory, self)._default_location_id()
    if self.env.user.context_default_warehouse_id:
        self.update({'location_id': self.env.user.context_default_warehouse_id.lot_stock_id.id})
อวตาร
ละทิ้ง
Related Posts ตอบกลับ มุมมอง กิจกรรม
0
ส.ค. 24
155
0
ม.ค. 22
3441
0
มี.ค. 15
3617
2
มี.ค. 15
4054
0
ส.ค. 24
866