Odoo18-Base/addons/stock_delivery/models/stock_quant_package.py

33 lines
1.6 KiB
Python
Raw Permalink Normal View History

2025-01-06 10:57:38 +07:00
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import api, fields, models
class StockQuantPackage(models.Model):
_inherit = "stock.quant.package"
@api.depends('quant_ids', 'package_type_id')
def _compute_weight(self):
packages_weight = self.sudo()._get_weight(self.env.context.get('picking_id'))
for package in self:
package.weight = packages_weight[package]
def _get_default_weight_uom(self):
return self.env['product.template']._get_weight_uom_name_from_ir_config_parameter()
def _compute_weight_uom_name(self):
for package in self:
package.weight_uom_name = self.env['product.template']._get_weight_uom_name_from_ir_config_parameter()
def _compute_weight_is_kg(self):
self.weight_is_kg = False
uom_id = self.env['product.template']._get_weight_uom_id_from_ir_config_parameter()
if uom_id == self.env.ref('uom.product_uom_kgm'):
self.weight_is_kg = True
self.weight_uom_rounding = uom_id.rounding
weight = fields.Float(compute='_compute_weight', digits='Stock Weight', help="Total weight of all the products contained in the package.")
weight_uom_name = fields.Char(string='Weight unit of measure label', compute='_compute_weight_uom_name', readonly=True, default=_get_default_weight_uom)
weight_is_kg = fields.Boolean("Technical field indicating whether weight uom is kg or not (i.e. lb)", compute="_compute_weight_is_kg")
weight_uom_rounding = fields.Float("Technical field indicating weight's number of decimal places", compute="_compute_weight_is_kg")