# -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. from collections import defaultdict from odoo import _, models from odoo.exceptions import UserError class ReportProductLabel(models.AbstractModel): _name = 'report.stock.label_product_product_view' _description = 'Product Label Report' def _get_report_values(self, docids, data): if data.get('active_model') == 'product.template': Product = self.env['product.template'] elif data.get('active_model') == 'product.product': Product = self.env['product.product'] else: raise UserError(_('Product model not defined, Please contact your administrator.')) quantity_by_product = defaultdict(list) for p, q in data.get('quantity_by_product').items(): product = Product.browse(int(p)) quantity_by_product[product].append((product.barcode, q)) if data.get('custom_barcodes'): # we expect custom barcodes to be: {product: [(barcode, qty_of_barcode)]} for product, barcodes_qtys in data.get('custom_barcodes').items(): quantity_by_product[Product.browse(int(product))] += (barcodes_qtys) data['quantity'] = quantity_by_product layout_wizard = self.env['product.label.layout'].browse(data.get('layout_wizard')) data['pricelist'] = layout_wizard.pricelist_id return data