35 lines
1.4 KiB
Python
35 lines
1.4 KiB
Python
# -*- 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
|