product_print_zpl_barcode: print multi labels at once
Print from product tree view and form view (product.product and product.template) Print from done stock picking using must_print_barcode
This commit is contained in:
@@ -1 +1,2 @@
|
||||
from . import product
|
||||
from . import stock_picking
|
||||
|
||||
@@ -29,22 +29,6 @@ class ProductTemplate(models.Model):
|
||||
% (self.display_name, self.product_variant_count))
|
||||
return self.product_variant_ids[0].generate_barcode_from_product_product()
|
||||
|
||||
def print_zpl_barcode_from_product_template(self):
|
||||
self.ensure_one()
|
||||
if self.product_variant_count != 1:
|
||||
raise UserError(_(
|
||||
"You cannot call the method "
|
||||
"print_zpl_barcode_from_product_template on product '%s' "
|
||||
"because it has %d variants and not just one.")
|
||||
% (self.display_name, self.product_variant_count))
|
||||
action = self.env["ir.actions.actions"]._for_xml_id(
|
||||
'product_print_zpl_barcode.product_print_zpl_barcode_action')
|
||||
action['context'] = {
|
||||
'active_id': self.product_variant_ids[0].id,
|
||||
'active_model': 'product.product',
|
||||
}
|
||||
return action
|
||||
|
||||
|
||||
class ProductProduct(models.Model):
|
||||
_inherit = 'product.product'
|
||||
|
||||
25
product_print_zpl_barcode/models/stock_picking.py
Normal file
25
product_print_zpl_barcode/models/stock_picking.py
Normal file
@@ -0,0 +1,25 @@
|
||||
# Copyright 2023 Akretion France (http://www.akretion.com/)
|
||||
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import api, fields, models
|
||||
from odoo.tools import float_compare
|
||||
|
||||
|
||||
class StockPicking(models.Model):
|
||||
_inherit = "stock.picking"
|
||||
|
||||
show_print_zpl_barcode = fields.Boolean(compute='_compute_show_print_zpl_barcode')
|
||||
|
||||
@api.depends('state')
|
||||
def _compute_show_print_zpl_barcode(self):
|
||||
prec = self.env['decimal.precision'].precision_get('Product Unit of Measure')
|
||||
for picking in self:
|
||||
show = False
|
||||
if picking.state == 'done' and picking.picking_type_code != 'outgoing':
|
||||
for line in picking.move_line_ids:
|
||||
if (
|
||||
line.product_id.must_print_barcode and
|
||||
float_compare(line.qty_done, 0, precision_digits=prec) > 0):
|
||||
show = True
|
||||
picking.show_print_zpl_barcode = show
|
||||
Reference in New Issue
Block a user