1from odoo import models
2
3
4class StockValuationReport(models.AbstractModel):
5 _inherit = 'stock_account.stock.valuation.report'
6
7 def _get_report_data(self, date=False, product_category=False, warehouse=False):
8 data = super()._get_report_data(date, product_category, warehouse)
9 not_invoiced_received_data = self._compute_goods_received_not_invoiced(date, product_category)
10 data['not_invoiced_received_goods'] = not_invoiced_received_data
11 return data
12
13 def _compute_goods_received_not_invoiced(self, date=False, product_category=False):
14 """ Compute valuation for already received but not invoiced yet goods,
15 purchase order by purchase order."""
16 domain = [('qty_to_invoice', '!=', 0)]
17 if product_category:
18 domain += [('product_id.categ_id', '=', product_category.id)]
19 if date:
20 domain += [('date_approve', '<=', date)]
21 purchase_order_lines = self.env['purchase.order.line'].search(domain)
22 purchase_orders = purchase_order_lines.order_id
23 not_invoiced_received_lines = []
24 total = 0
25 for order in purchase_orders:
26 order_lines = purchase_order_lines.filtered(lambda pol: pol.order_id == order)
27 value = 0
28 for order_line in order_lines:
29 confirmed_invoice_lines = order_line.invoice_lines.filtered(
30 lambda aml: aml.move_id.state == 'posted'
31 )
32 invoiced_value = sum(confirmed_invoice_lines.mapped('amount_currency'), 0)
…lines 33–44 unchanged (12 lines)