38 lines
1.4 KiB
Python
38 lines
1.4 KiB
Python
# Copyright 2015-2024 Akretion France (https://www.akretion.com)
|
|
# @author Alexis de Lattre <alexis.delattre@akretion.com>
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
|
|
from odoo import fields, models
|
|
from odoo.tools import float_compare, float_round
|
|
|
|
|
|
class SaleOrder(models.Model):
|
|
_inherit = 'sale.order'
|
|
|
|
warehouse_id = fields.Many2one(tracking=True)
|
|
incoterm = fields.Many2one(tracking=True)
|
|
incoterm_location = fields.Char(tracking=True)
|
|
picking_policy = fields.Selection(tracking=True)
|
|
|
|
def report_qty_to_deliver(self):
|
|
# Can be useful for delivery report
|
|
self.ensure_one()
|
|
res = []
|
|
prec = self.env['decimal.precision'].precision_get(
|
|
'Product Unit of Measure')
|
|
for line in self.order_line:
|
|
if (
|
|
line.product_id.type == 'consu' and
|
|
float_compare(
|
|
line.product_uom_qty, line.qty_delivered,
|
|
precision_digits=prec) > 0):
|
|
qty_to_deliver = float_round(
|
|
line.product_uom_qty - line.qty_delivered, precision_digits=prec)
|
|
res.append({
|
|
'product': line.product_id,
|
|
'name': line.name,
|
|
'uom': line.product_uom,
|
|
'qty_to_deliver': qty_to_deliver,
|
|
})
|
|
return res
|