From f9552e72710dd77652870b0caf8621ad1710f74c Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Mon, 12 Mar 2018 00:34:43 +0100 Subject: [PATCH] Also port stock inventory ODS location-independant --- stock_inventory_valuation_ods/__init__.py | 2 + .../inventory_grouped.ods | Bin 16428 -> 16941 bytes .../inventory_grouped.py | 38 ------------------ stock_inventory_valuation_ods/report.xml | 13 ++---- .../stock_inventory.py | 33 +++++++++++++++ 5 files changed, 39 insertions(+), 47 deletions(-) delete mode 100644 stock_inventory_valuation_ods/inventory_grouped.py create mode 100644 stock_inventory_valuation_ods/stock_inventory.py diff --git a/stock_inventory_valuation_ods/__init__.py b/stock_inventory_valuation_ods/__init__.py index 40a96af..9525632 100644 --- a/stock_inventory_valuation_ods/__init__.py +++ b/stock_inventory_valuation_ods/__init__.py @@ -1 +1,3 @@ # -*- coding: utf-8 -*- + +from . import stock_inventory diff --git a/stock_inventory_valuation_ods/inventory_grouped.ods b/stock_inventory_valuation_ods/inventory_grouped.ods index 8886005a5e9d1c679e40a5f421c340d4d4e40f20..bcba10f54fbeca9fb790bf9a83ed6c90a5e774cf 100644 GIT binary patch delta 14826 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 delta 14349 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 wY$lF2mKLsVOfKe@|C;) -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). - -from openerp.report import report_sxw - - -class Parser(report_sxw.rml_parse): - def __init__(self, cr, uid, name, context=None): - super(Parser, self).__init__(cr, uid, name, context=context) - self.localcontext.update({ - 'group_lines': self._group_lines, - }) - - def _group_lines(self, inventory, context=None): - assert inventory, 'Missing inventory' - self.cr.execute(""" - SELECT - min(id) AS min_line_id, - product_id, - package_id, - prod_lot_id, - product_uom_id, - standard_price, - sum(product_qty) AS product_qty, - sum(theoretical_qty) AS theoretical_qty - FROM stock_inventory_line - WHERE inventory_id=%s - GROUP BY product_id, package_id, prod_lot_id, - product_uom_id, standard_price - """, (inventory.id, )) - res = [] - silo = self.pool['stock.inventory.line'] - for row in self.cr.dictfetchall(): - row['min_line'] = silo.browse( - self.cr, self.uid, row['min_line_id'], context=context) - res.append(row) - return res diff --git a/stock_inventory_valuation_ods/report.xml b/stock_inventory_valuation_ods/report.xml index 6ec8e7c..4b0b74c 100644 --- a/stock_inventory_valuation_ods/report.xml +++ b/stock_inventory_valuation_ods/report.xml @@ -19,18 +19,14 @@ - diff --git a/stock_inventory_valuation_ods/stock_inventory.py b/stock_inventory_valuation_ods/stock_inventory.py new file mode 100644 index 0000000..e9745d6 --- /dev/null +++ b/stock_inventory_valuation_ods/stock_inventory.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- +# Copyright 2016-2018 Akretion (Alexis de Lattre ) +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import models + + +class StockInventory(models.Model): + _inherit = 'stock.inventory' + + def report_group_lines(self): + self.ensure_one() + self._cr.execute(""" + SELECT + min(id) AS min_line_id, + product_id, + package_id, + prod_lot_id, + product_uom_id, + standard_price, + sum(product_qty) AS product_qty, + sum(theoretical_qty) AS theoretical_qty + FROM stock_inventory_line + WHERE inventory_id=%s + GROUP BY product_id, package_id, prod_lot_id, + product_uom_id, standard_price + """, (self.id, )) + res = [] + silo = self.env['stock.inventory.line'] + for row in self._cr.dictfetchall(): + row['min_line'] = silo.browse(row['min_line_id']) + res.append(row) + return res