From 34a763d894ab88df4911f3a3b2cebb285d56f828 Mon Sep 17 00:00:00 2001 From: Alexis de Lattre Date: Mon, 30 May 2016 15:55:57 +0200 Subject: [PATCH] Add inventory valuation without per stock location analysis --- stock_inventory_valuation_ods/inventory.ods | Bin 16248 -> 16464 bytes .../inventory_grouped.ods | Bin 0 -> 16428 bytes .../inventory_grouped.py | 38 ++++++++++++++++++ stock_inventory_valuation_ods/report.xml | 24 ++++++++++- 4 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 stock_inventory_valuation_ods/inventory_grouped.ods create mode 100644 stock_inventory_valuation_ods/inventory_grouped.py diff --git a/stock_inventory_valuation_ods/inventory.ods b/stock_inventory_valuation_ods/inventory.ods index 6acaf7d7b482c843ebbc8e5bc29db603766d98a9..12d28702e71c13934860ac5950edea379d9e2ee5 100644 GIT binary patch delta 14294 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 +# 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 b9f1f11..8f5d20d 100644 --- a/stock_inventory_valuation_ods/report.xml +++ b/stock_inventory_valuation_ods/report.xml @@ -4,7 +4,7 @@ - Inventory Valuation ODS + Inventory Valuation per Location (ODS) stock.inventory stock.inventory.ods aeroo @@ -16,12 +16,32 @@ - Inventory Valuation ODS + Inventory Valuation per Location ODS stock.inventory client_print_multi + + Inventory Valuation (ODS) + stock.inventory + stock.inventory.grouped.ods + aeroo + oo-ods + stock_inventory_valuation_ods/inventory_grouped.ods + loc + stock_inventory_valuation_ods/inventory_grouped.py + file + + + + + Inventory Valuation ODS + stock.inventory + client_print_multi + + +