← Back to team overview

openerp-community-reviewer team mailing list archive

[Merge] lp:~camptocamp/carriers-deliveries/7.0-delivery_carrier_label_dispatch-generate-new-labels-option-yvr into lp:carriers-deliveries

 

Yannick Vaucher @ Camptocamp has proposed merging lp:~camptocamp/carriers-deliveries/7.0-delivery_carrier_label_dispatch-generate-new-labels-option-yvr into lp:carriers-deliveries with lp:~camptocamp/carriers-deliveries/7.0-delivery_carrier_label_dispatch-output-file-yvr as a prerequisite.

Requested reviews:
  Stock and Logistic Core Editors (stock-logistic-core-editors)

For more details, see:
https://code.launchpad.net/~camptocamp/carriers-deliveries/7.0-delivery_carrier_label_dispatch-generate-new-labels-option-yvr/+merge/206969
-- 
https://code.launchpad.net/~camptocamp/carriers-deliveries/7.0-delivery_carrier_label_dispatch-generate-new-labels-option-yvr/+merge/206969
Your team Stock and Logistic Core Editors is requested to review the proposed merge of lp:~camptocamp/carriers-deliveries/7.0-delivery_carrier_label_dispatch-generate-new-labels-option-yvr into lp:carriers-deliveries.
=== modified file 'delivery_carrier_label_dispatch/stock.py'
--- delivery_carrier_label_dispatch/stock.py	2014-02-18 15:42:00 +0000
+++ delivery_carrier_label_dispatch/stock.py	2014-02-18 15:42:00 +0000
@@ -35,13 +35,15 @@
         """
         res = dict.fromkeys(ids, False)
         label_obj = self.pool.get('shipping.label')
-        for picking_id in ids:
+        for picking in self.browse(cr, uid, ids, context=context):
             label_ids = label_obj.search(cr, uid,
                                          [('file_type', '=', 'pdf'),
-                                          ('res_id', '=', picking_id)],
-                                         order='create_date',
+                                          ('res_id', '=', picking.id)],
+                                         order='create_date DESC',
                                          context=context)
             if label_ids:
+                pack_tracking_ids = set([line.tracking_id.id
+                                         for line in picking.move_lines])
                 all_picking_labels = label_obj.browse(cr, uid,
                                                       label_ids,
                                                       context=context)
@@ -49,14 +51,20 @@
                 tracking_ids = [l.tracking_id for l in all_picking_labels]
 
                 # filter for newest created label for each trackings
+                # and tracking existing in pack linked to a move line
+                # of current picking
                 label_datas = []
-                tracking_ids = set(tracking_ids)
+                tracking_register = []
                 while tracking_ids:
                     tracking_id = tracking_ids.pop()
                     for label in all_picking_labels:
-                        if label.tracking_id.id == tracking_id.id:
+                        if (label.tracking_id.id == tracking_id.id
+                                and (not tracking_id
+                                     or tracking_id.id in pack_tracking_ids)
+                                and tracking_id.id not in tracking_register):
                             label_datas.append(label.datas.decode('base64'))
+                            tracking_register.append(tracking_id.id)
 
                 label_pdf = assemble_pdf(label_datas)
-                res[picking_id] = label_pdf.encode('base64')
+                res[picking.id] = label_pdf.encode('base64')
         return res

=== modified file 'delivery_carrier_label_dispatch/wizard/generate_labels.py'
--- delivery_carrier_label_dispatch/wizard/generate_labels.py	2014-02-18 15:42:00 +0000
+++ delivery_carrier_label_dispatch/wizard/generate_labels.py	2014-02-18 15:42:00 +0000
@@ -40,10 +40,12 @@
     _columns = {
         'dispatch_ids': fields.many2many('picking.dispatch',
                                          string='Picking Dispatch'),
+        'generate_new_labels': fields.boolean('Generate new labels'),
     }
 
     _defaults = {
         'dispatch_ids': _get_dispatch_ids,
+        'generate_new_labels': False,
     }
 
     def action_generate_labels(self, cr, uid, ids, context=None):
@@ -63,11 +65,15 @@
         for dispatch in this.dispatch_ids:
             # flatten all picking in one list to keep the order in case
             # if pickings have been ordered to ease packaging
-            pickings = [(pick, pick.get_pdf_label()[pick.id])
-                        for pick in dispatch.related_picking_ids]
+            if this.generate_new_labels:
+                pickings = [(pick, False)
+                            for pick in dispatch.related_picking_ids]
+            else:
+                pickings = [(pick, pick.get_pdf_label()[pick.id])
+                            for pick in dispatch.related_picking_ids]
             # get picking ids for which we want to generate pdf label
             picking_ids = [pick.id for pick, pdf in pickings
-                           if not pdf]
+                           if not pdf or this.generate_new_labels]
             # generate missing picking labels
             picking_out_obj.action_generate_carrier_label(cr, uid,
                                                           picking_ids,

=== modified file 'delivery_carrier_label_dispatch/wizard/generate_labels_view.xml'
--- delivery_carrier_label_dispatch/wizard/generate_labels_view.xml	2014-02-18 15:42:00 +0000
+++ delivery_carrier_label_dispatch/wizard/generate_labels_view.xml	2014-02-18 15:42:00 +0000
@@ -9,7 +9,10 @@
         <form string="Generate Carriers Labels" version="7.0">
           <group>
             <label string="This wizard creates an attachement on each selected dispatch containing picking labels"/>
+          </group>
+          <group>
             <field name="dispatch_ids"/>
+            <field name="generate_new_labels"/>
           </group>
           <footer>
             <button name="action_generate_labels" string="Generate Labels" type="object" icon="gtk-execute" class="oe_highlight"/>


Follow ups