diff --git a/delivery_carrier_label_batch/__manifest__.py b/delivery_carrier_label_batch/__manifest__.py index dd4dc79f8d..0944f93eba 100644 --- a/delivery_carrier_label_batch/__manifest__.py +++ b/delivery_carrier_label_batch/__manifest__.py @@ -7,7 +7,7 @@ 'maintainer': 'Camptocamp', 'category': 'Carrier', 'complexity': 'normal', - 'depends': ['base_delivery_carrier_label', 'stock_batch_picking'], + 'depends': ['base_delivery_carrier_label', 'stock_picking_batch_extended'], 'website': 'http://github.com/OCA/delivery-carrier', 'data': [ 'views/stock_batch_picking.xml', diff --git a/delivery_carrier_label_batch/models/stock_batch_picking.py b/delivery_carrier_label_batch/models/stock_batch_picking.py index 1de266d701..8a8d97c7e8 100644 --- a/delivery_carrier_label_batch/models/stock_batch_picking.py +++ b/delivery_carrier_label_batch/models/stock_batch_picking.py @@ -10,7 +10,7 @@ class StockBatchPicking(models.Model): to be able to massively set those options on related picking. """ - _inherit = "stock.batch.picking" + _inherit = "stock.picking.batch" carrier_id = fields.Many2one( 'delivery.carrier', 'Carrier', @@ -52,7 +52,7 @@ def carrier_id_change(self): available_options = self.carrier_id.available_option_ids default_options = self._get_options_to_add() self.option_ids = [(6, 0, default_options.ids)] - self.carrier_type = self.carrier_id.type + self.carrier_type = self.carrier_id.delivery_type self.carrier_code = self.carrier_id.code return {'domain': { 'option_ids': [('id', 'in', available_options.ids)], diff --git a/delivery_carrier_label_batch/pdf_utils.py b/delivery_carrier_label_batch/pdf_utils.py index 574799168c..86853d475f 100644 --- a/delivery_carrier_label_batch/pdf_utils.py +++ b/delivery_carrier_label_batch/pdf_utils.py @@ -21,9 +21,10 @@ def assemble_pdf(pdf_list): output = PdfFileWriter() for pdf in pdf_list: + if not pdf: continue - reader = PdfFileReader(StringIO(pdf)) + reader = PdfFileReader(BytesIO(pdf)) for page in range(reader.getNumPages()): output.addPage(reader.getPage(page)) diff --git a/delivery_carrier_label_batch/views/stock_batch_picking.xml b/delivery_carrier_label_batch/views/stock_batch_picking.xml index dc3f2a9319..1a966106a4 100644 --- a/delivery_carrier_label_batch/views/stock_batch_picking.xml +++ b/delivery_carrier_label_batch/views/stock_batch_picking.xml @@ -2,9 +2,9 @@ - stock.batch.picking.form - stock.batch.picking - + stock.picking.batch.form + stock.picking.batch + diff --git a/delivery_carrier_label_batch/wizard/apply_carrier.py b/delivery_carrier_label_batch/wizard/apply_carrier.py index eabc67fbfe..0e5b3a79f3 100644 --- a/delivery_carrier_label_batch/wizard/apply_carrier.py +++ b/delivery_carrier_label_batch/wizard/apply_carrier.py @@ -30,7 +30,7 @@ def apply(self): raise exceptions.UserError( _('No selected picking batch')) - batch_obj = self.env['stock.batch.picking'] + batch_obj = self.env['stock.picking.batch'] domain = self._check_domain(batch_ids) batchs = batch_obj.search(domain) batchs.write({'carrier_id': self.carrier_id.id}) diff --git a/delivery_carrier_label_batch/wizard/apply_carrier_view.xml b/delivery_carrier_label_batch/wizard/apply_carrier_view.xml index d433a591ec..491368f281 100644 --- a/delivery_carrier_label_batch/wizard/apply_carrier_view.xml +++ b/delivery_carrier_label_batch/wizard/apply_carrier_view.xml @@ -24,7 +24,7 @@ form form - + new diff --git a/delivery_carrier_label_batch/wizard/generate_labels.py b/delivery_carrier_label_batch/wizard/generate_labels.py index d9ae608869..01e64649ad 100644 --- a/delivery_carrier_label_batch/wizard/generate_labels.py +++ b/delivery_carrier_label_batch/wizard/generate_labels.py @@ -5,10 +5,10 @@ import logging import odoo import threading +import codecs from contextlib import contextmanager from itertools import groupby from odoo import _, api, exceptions, fields, models - from ..pdf_utils import assemble_pdf _logger = logging.getLogger(__name__) @@ -21,13 +21,13 @@ class DeliveryCarrierLabelGenerate(models.TransientModel): @api.multi def _get_batch_ids(self): res = False - if (self.env.context.get('active_model') == 'stock.batch.picking' and + if (self.env.context.get('active_model') == 'stock.picking.batch' and self.env.context.get('active_ids')): res = self.env.context['active_ids'] return res batch_ids = fields.Many2many( - 'stock.batch.picking', + 'stock.picking.batch', string='Picking Batch', default=_get_batch_ids) generate_new_labels = fields.Boolean( @@ -86,9 +86,7 @@ def _do_generate_labels(self, group): # generate the label of the pack package_ids = [pack.id] if pack else None try: - picking.with_env(new_env).generate_labels( - package_ids=package_ids - ) + picking.with_env(new_env).action_generate_carrier_label() except Exception as e: # add information on picking and pack in the exception picking_name = _('Picking: %s') % picking.name @@ -220,7 +218,7 @@ def action_generate_labels(self): to_generate = self.batch_ids if not self.generate_new_labels: already_generated_ids = self.env['ir.attachment'].search( - [('res_model', '=', 'stock.batch.picking'), + [('res_model', '=', 'stock.picking.batch'), ('res_id', 'in', self.batch_ids.ids)] ).mapped('res_id') to_generate = to_generate.filtered( @@ -229,12 +227,12 @@ def action_generate_labels(self): for batch in to_generate: labels = self._get_all_pdf(batch) - labels = (label.decode('base64') for label in labels if label) + labels = (codecs.decode(label, 'base64') for label in labels if label) filename = batch.name + '.pdf' data = { 'name': filename, 'res_id': batch.id, - 'res_model': 'stock.batch.picking', + 'res_model': 'stock.picking.batch', 'datas': base64.b64encode(assemble_pdf(labels)), 'datas_fname': filename, } diff --git a/delivery_carrier_label_batch/wizard/generate_labels_view.xml b/delivery_carrier_label_batch/wizard/generate_labels_view.xml index 451cb67f31..b3b384d0cc 100644 --- a/delivery_carrier_label_batch/wizard/generate_labels_view.xml +++ b/delivery_carrier_label_batch/wizard/generate_labels_view.xml @@ -29,7 +29,7 @@ form - + new