oca-ocb-accounting/odoo-bringout-oca-ocb-stock_account/stock_account/report/stock_forecasted.py
Ernad Husremovic 768b70e05e 19.0 vanilla
2026-03-09 09:30:07 +01:00

35 lines
1.5 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import models
from odoo.tools.float_utils import float_repr
class StockForecasted_Product_Product(models.AbstractModel):
_inherit = 'stock.forecasted_product_product'
def _get_report_header(self, product_template_ids, product_ids, wh_location_ids):
""" Overrides to computes the valuations of the stock. """
res = super()._get_report_header(product_template_ids, product_ids, wh_location_ids)
if not self.env.user.has_group('stock.group_stock_manager') or not wh_location_ids:
return res
company = self.env['stock.location'].browse(wh_location_ids[0]).company_id
domain_quants = [
('company_id', '=', company.id),
('location_id', 'in', wh_location_ids)
]
if product_template_ids:
domain_quants += [('product_id.product_tmpl_id', 'in', product_template_ids)]
else:
domain_quants += [('product_id', 'in', product_ids)]
quants = self.env['stock.quant'].search(domain_quants)
currency = self.env.company.currency_id
value = sum(quants.mapped('value'))
value = float_repr(value, precision_digits=currency.decimal_places)
if currency.position == 'after':
value = '%s %s' % (value, currency.symbol)
else:
value = '%s %s' % (currency.symbol, value)
res['value'] = value
return res