diff --git a/addons/stock/report/product_label_report.py b/addons/stock/report/product_label_report.py index e6e876e09c5..42c42449b15 100644 --- a/addons/stock/report/product_label_report.py +++ b/addons/stock/report/product_label_report.py @@ -6,6 +6,7 @@ from collections import defaultdict from odoo import _, models from odoo.exceptions import UserError +import markupsafe class ReportProductLabel(models.AbstractModel): _name = 'report.stock.label_product_product_view' @@ -22,13 +23,47 @@ class ReportProductLabel(models.AbstractModel): 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)) + default_code_markup = markupsafe.Markup(product.default_code) if product.default_code else '' + product_info = { + 'barcode': markupsafe.Markup(product.barcode), + 'quantity': q, + 'display_name_markup': markupsafe.Markup(product.display_name), + 'default_code': (default_code_markup[:15], default_code_markup[15:30]) + } + quantity_by_product[product].append(product_info) 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) + product = Product.browse(int(product)) + default_code_markup = markupsafe.Markup(product.default_code) if product.default_code else '' + for barcode_qty in barcodes_qtys: + quantity_by_product[product].append({ + 'barcode': markupsafe.Markup(barcode_qty[0]), + 'quantity': barcode_qty[1], + 'display_name_markup': markupsafe.Markup(product.display_name), + 'default_code': (default_code_markup[:15], default_code_markup[15:30]) + } + ) 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 + + +class ReportLotLabel(models.AbstractModel): + _name = 'report.stock.label_lot_template_view' + _description = 'Lot Label Report' + + def _get_report_values(self, docids, data): + lots = self.env['stock.lot'].browse(docids) + lot_list = [] + for lot in lots: + lot_list.append({ + 'display_name_markup': markupsafe.Markup(lot.product_id.display_name), + 'name': markupsafe.Markup(lot.name), + 'lot_record': lot + }) + return { + 'docs': lot_list, + } diff --git a/addons/stock/report/product_templates.xml b/addons/stock/report/product_templates.xml index 2aed1f80402..77c9830819e 100644 --- a/addons/stock/report/product_templates.xml +++ b/addons/stock/report/product_templates.xml @@ -4,23 +4,22 @@