← Back to team overview

avanzosc team mailing list archive

[Merge] lp:~mikelarregi/avanzosc/dos_shipping_labels_print into lp:~avanzosc-security-team/avanzosc/72horas

 

mikel arregi has proposed merging lp:~mikelarregi/avanzosc/dos_shipping_labels_print into lp:~avanzosc-security-team/avanzosc/72horas.

Requested reviews:
  Avanzosc_security (avanzosc-security-team)

For more details, see:
https://code.launchpad.net/~mikelarregi/avanzosc/dos_shipping_labels_print/+merge/225040

dos_shipping_labels_print
-- 
https://code.launchpad.net/~mikelarregi/avanzosc/dos_shipping_labels_print/+merge/225040
Your team Avanzosc_security is requested to review the proposed merge of lp:~mikelarregi/avanzosc/dos_shipping_labels_print into lp:~avanzosc-security-team/avanzosc/72horas.
=== modified file 'dos_shipping_labels_report/__init__.py'
--- dos_shipping_labels_report/__init__.py	2014-06-11 10:23:47 +0000
+++ dos_shipping_labels_report/__init__.py	2014-06-30 15:47:21 +0000
@@ -19,8 +19,7 @@
 ##############################################################################
 
 import report
-import stock
 import wizard
+import models
 
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== modified file 'dos_shipping_labels_report/__openerp__.py'
--- dos_shipping_labels_report/__openerp__.py	2014-06-11 10:23:47 +0000
+++ dos_shipping_labels_report/__openerp__.py	2014-06-30 15:47:21 +0000
@@ -19,22 +19,19 @@
 ##############################################################################
 
 {
-	"name" : "DOS Shipping Labels Report",
-	"version" : "1.0",
-	"author" : "DOS",
-	"category" : "Enterprise Specific Modules",
-	"description":"""Module to print shipping labes from picking with custom format.
-	""",
-	"depends" : ["stock"],
-	"init_xml" : [],
-	"demo_xml" : [],
-	"update_xml" : [
-		'shipping_labels_report.xml',
-		'stock_view.xml',
-		'shipping_labels_wizard.xml',
-	],
-	"website": 'http://www.dos-sl.es',
-	"active": False,
-	"installable": True,
+    "name": "DOS Shipping Labels Report",
+    "version": "1.0",
+    "author": "DOS",
+    "category": "Enterprise Specific Modules",
+    "description": ("""Module to print shipping labes from """
+                    """picking with custom format."""),
+    "depends": ["stock"],
+    "data": [
+        'report/shipping_labels_report.xml',
+        'views/stock_view.xml',
+        'wizard/shipping_labels_wizard.xml',
+    ],
+    "website": 'http://www.dos-sl.es',
+    "installable": True,
 }
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== added directory 'dos_shipping_labels_report/models'
=== added file 'dos_shipping_labels_report/models/__init__.py'
--- dos_shipping_labels_report/models/__init__.py	1970-01-01 00:00:00 +0000
+++ dos_shipping_labels_report/models/__init__.py	2014-06-30 15:47:21 +0000
@@ -0,0 +1,22 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+#    OpenERP, Open Source Management Solution
+#    Copyright (C) 2004-2010 DOS (<http://www.dos-sl.es>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+from . import stock

=== renamed file 'dos_shipping_labels_report/stock.py' => 'dos_shipping_labels_report/models/stock.py'
--- dos_shipping_labels_report/stock.py	2014-06-11 10:23:47 +0000
+++ dos_shipping_labels_report/models/stock.py	2014-06-30 15:47:21 +0000
@@ -20,65 +20,60 @@
 ##############################################################################
 
 
-from osv import osv
-from osv import fields
-from tools.translate import _
-import netsvc
+from openerp.osv import orm, fields
+from openerp.tools.translate import _
+from openerp import netsvc
 import base64
 
-class stock_picking(osv.osv):
-
-	_inherit ="stock.picking"
-	
-	
-	def create_report(self, cr, uid, res_ids, report_name=False, context={}):
-		if not report_name or not res_ids:
-			raise osv.except_osv(_('Error !'),_('Report name and Resources ids are required !!!'))
-		
-		try:
-			service = netsvc.LocalService("report."+report_name);
-			result, format = service.create(cr, uid, res_ids, {}, context)
-			
-		except Exception,e:
-			print 'Exception in create report:',e
-			raise osv.except_osv(_('Error !'),_('Exception in create report.'))
-		
-		return result, format
-	
-
-	def print_shipping_labels(self, cr, uid, ids, context=None):
-		
-		report_obj = self.pool.get('ir.actions.report.xml')
-		printer_obj = self.pool.get('printing.printer')
-		
-		# Obtenemos la impresora Brother-QL-1060N-62x100
-		default_printer = printer_obj.search(cr, uid, [('system_name', '=', 'Brother-QL-1060N-62x100')])
-	
-		if default_printer:
-			default_printer = default_printer[0]
-			printer = printer_obj.browse(cr, uid, default_printer, context).system_name
-		else:
-			raise osv.except_osv(_('Error !'),_('Not found any default printer. Please set the default printer.')) 
-		
-			
-		for picking in self.browse(cr, uid, ids, context):
-			
-			num_packages = picking.number_of_packages or 0
-			
-			# Imprimimos un informe por cada paquete
-			for i in range(1, num_packages+1):
-			
-				# Creamos informe
-				result, format = self.create_report(cr, uid, [picking.id], 'shipping.labels.package.report', {'page_number': i})
-			
-				# Imprimimos informe
-				report_obj.print_direct(cr, uid, base64.encodestring(result), format, printer)
-				
-			# Imprimimos informe con datos del receptor
-			# result, format = self.create_report(cr, uid, [picking.id], 'shipping.labels.receiver.report')
-		
-			# report_obj.print_direct(cr, uid, base64.encodestring(result), format, printer)			
-				
-		return True
-
-stock_picking()
+
+class StockPicking(orm.Model):
+
+    _inherit = "stock.picking"
+
+    def create_report(self, cr, uid, res_ids, report_name=False,
+                      context=None):
+        if not report_name or not res_ids:
+            raise orm.except_orm(_('Error !'),
+                                 _('Report name and '
+                                   'Resources ids are required !!!'))
+        try:
+            service = netsvc.LocalService("report." + report_name)
+            result, format = service.create(cr, uid, res_ids, {}, context)
+        except Exception, e:
+            print 'Exception in create report:', e
+            raise orm.except_orm(_('Error !'),
+                                 _('Exception in create report.'))
+        return result, format
+
+    def print_shipping_labels(self, cr, uid, ids, context=None):
+        report_obj = self.pool['ir.actions.report.xml']
+        printer_obj = self.pool['printing.printer']
+        # Obtenemos la impresora Brother-QL-1060N-62x100
+        default_printer = printer_obj.search(
+            cr, uid, [('system_name', '=', 'Brother-QL-1060N-62x100')],
+            context=context)
+        if default_printer:
+            default_printer = default_printer[0]
+            printer = printer_obj.browse(
+                cr, uid, default_printer, context).system_name
+        else:
+            raise orm.except_orm(
+                _('Error !'), _('Not found any default printer.'
+                                ' Please set the default printer.'))
+        for picking in self.browse(cr, uid, ids, context):
+            num_packages = picking.number_of_packages or 0
+            # Imprimimos un informe por cada paquete
+            for i in range(1, num_packages+1):
+                # Creamos informe
+                result, format = self.create_report(
+                    cr, uid, [picking.id], 'shipping.labels.package.report',
+                    {'page_number': i})
+                # Imprimimos informe
+                report_obj.print_direct(cr, uid, base64.encodestring(result),
+                                        format, printer)
+            # Imprimimos informe con datos del receptor
+            # result, format = self.create_report(cr, uid, [picking.id],
+            # 'shipping.labels.receiver.report')
+            # report_obj.print_direct(cr, uid, base64.encodestring(result),
+            # format, printer)
+        return True

=== modified file 'dos_shipping_labels_report/report/__init__.py'
--- dos_shipping_labels_report/report/__init__.py	2014-06-11 10:23:47 +0000
+++ dos_shipping_labels_report/report/__init__.py	2014-06-30 15:47:21 +0000
@@ -18,9 +18,8 @@
 #
 ##############################################################################
 
-import shipping_labels
-import shipping_labels_package
-import shipping_labels_receiver
+from . import shipping_labels
+from . import shipping_labels_package
+from . import shipping_labels_receiver
 
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-

=== modified file 'dos_shipping_labels_report/report/shipping_labels.py'
--- dos_shipping_labels_report/report/shipping_labels.py	2014-06-11 10:23:47 +0000
+++ dos_shipping_labels_report/report/shipping_labels.py	2014-06-30 15:47:21 +0000
@@ -22,13 +22,14 @@
 import time
 from datetime import datetime
 from report import report_sxw
-from osv import osv
-from tools.translate import _
-import pooler
-
-class shipping_labels_report(report_sxw.rml_parse):
+from openerp.osv import orm, fields
+from openerp.tools.translate import _
+
+
+class ShippingLabelsReport(report_sxw.rml_parse):
     def __init__(self, cr, uid, name, context):
-        super(shipping_labels_report, self).__init__(cr, uid, name, context=context)
+        super(ShippingLabelsReport, self).__init__(cr, uid, name,
+                                                   context=context)
         self.localcontext.update({
             'time': time,
             'get_phone_contact': self.get_phone_contact,
@@ -38,89 +39,65 @@
             'get_packages_lines': self.get_packages_lines,
         })
         self.context = context
-        user = self.pool.get('res.users').browse(cr, uid, uid)
+        user = self.pool['res.users'].browse(cr, uid, uid)
         self.company = user.company_id
-		
-        
-    def get_partner_contact (self, picking):
+
+    def get_partner_contact(self, picking):
         contact = picking.contact_id and picking.contact_id.contact_id or None
         if contact:
-            return ((contact.first_name if contact.first_name else '') + ' ' + contact.name).strip()
+            return ('%s %s' % (contact.first_name
+                               if contact.first_name else '',
+                               contact.name)).strip()
         else:
             return ''
 
-            
-    def get_phone_contact (self, picking):
+    def get_phone_contact(self, picking):
         if picking.contact_id:
             return picking.contact_id.phone or ''
         else:
             return picking.address_id and picking.address_id.phone or ''
 
-    
-    def get_email_contact (self, picking):
+    def get_email_contact(self, picking):
         if picking.contact_id:
             return picking.contact_id.email or ''
         else:
             return picking.address_id and picking.address_id.email or ''
 
-    
-    def get_company_address (self, picking):
-        
+    def get_company_address(self, picking):
         res = []
-        
         company = picking.company_id or self.company or None
-        
         if company and company.partner_id:
-            
-            partner = company.partner_id
-            addr_ids = self.pool.get('res.partner').address_get(self.cr, self.uid, [partner.id], ['default'])
-            addr_id = addr_ids['default']
-            addr = self.pool.get('res.partner.address').browse(self.cr, self.uid, addr_id)
-            
-            phone = addr and addr.phone or ''
+            phone = partner.phone or ''
             format_phone = phone[0:3] + ' ' + phone[3:6] + ' ' + phone[6:9]
-            
-            res.append(partner and partner.name or "")
-            res.append(addr and addr.street or '')
-            res.append(addr and addr.city or '')
-            res.append(addr and addr.zip or '')
-            res.append(addr and addr.state_id and addr.state_id.name or '')
+            res.append(partner.name or "")
+            res.append(partner.street or '')
+            res.append(partner.city or '')
+            res.append(partner.zip or '')
+            res.append(partner.state_id and partner.state_id.name or '')
             res.append(phone)
             res.append(format_phone)
-            res.append(addr and addr.email or '')
-            
+            res.append(partner.email or '')
         else:
-            
-            res.append(" ")
-            res.append(" ")
-            res.append(" ")
-            res.append(" ")
-            res.append(" ")
-            res.append(" ")
-            res.append(" ")
-            res.append(" ")
-            
+            for i in range(8):
+                res.append(" ")
             """
             res.append("Nayar Systems S.L.")
             res.append("Calle Taxida 10")
             res.append("12003 Castellón")
             res.append("España")
-            res.append("B-12757795") 
+            res.append("B-12757795")
             """
-            
         return res
-                            
-    def get_packages_lines (self, picking):
-        
+
+    def get_packages_lines(self, picking):
         res = []
-        
         num_packages = picking.number_of_packages or 0
-      
         for i in range(0, num_packages):
-
             res.append(i+1)
-                
         return res
-		
-report_sxw.report_sxw('report.shipping.labels.report','stock.picking','addons/dos_shipping_labels_report/report/shipping_labels.rml',parser=shipping_labels_report)
+
+report_sxw.report_sxw('report.shipping.labels.report', 'stock.picking',
+                      'addons/dos_shipping_labels_report/'
+                      'report/shipping_labels.rml',
+                      parser=shipping_labels_report)
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== modified file 'dos_shipping_labels_report/report/shipping_labels_package.py'
--- dos_shipping_labels_report/report/shipping_labels_package.py	2014-06-11 10:23:47 +0000
+++ dos_shipping_labels_report/report/shipping_labels_package.py	2014-06-30 15:47:21 +0000
@@ -22,16 +22,15 @@
 import time
 from datetime import datetime
 from report import report_sxw
-from osv import osv
-from tools.translate import _
-import pooler
-
-class shipping_labels_package_report(report_sxw.rml_parse):
+from openerp.osv import orm, fields
+from openerp.tools.translate import _
+
+
+class ShippingLabelsPackageReport(report_sxw.rml_parse):
     def __init__(self, cr, uid, name, context):
-        super(shipping_labels_package_report, self).__init__(cr, uid, name, context=context)
-        
+        super(ShippingLabelsPackageReport, self).__init__(cr, uid, name,
+                                                          context=context)
         self.context = context
-        
         self.localcontext.update({
             'time': time,
             'context': self.context,
@@ -40,71 +39,53 @@
             'get_partner_contact': self.get_partner_contact,
             'get_company_address': self.get_company_address,
         })
-
-        user = self.pool.get('res.users').browse(cr, uid, uid)
+        user = self.pool['res.users'].browse(cr, uid, uid)
         self.company = user.company_id
 
-
-    def get_partner_contact (self, picking):
+    def get_partner_contact(self, picking):
         contact = picking.contact_id and picking.contact_id.contact_id or None
         if contact:
-            return ((contact.first_name if contact.first_name else '') + ' ' + contact.name).strip()
+            return ('%s %s' % (contact.first_name
+                               if contact.first_name else '',
+                               contact.name)).strip()
         else:
             return ''
 
-            
-    def get_phone_contact (self, picking):
+    def get_phone_contact(self, picking):
         if picking.contact_id:
             return picking.contact_id.phone or ''
         else:
             return picking.address_id and picking.address_id.phone or ''
 
-    
-    def get_email_contact (self, picking):
+    def get_email_contact(self, picking):
         if picking.contact_id:
             return picking.contact_id.email or ''
         else:
             return picking.address_id and picking.address_id.email or ''
 
-    
-    def get_company_address (self, picking):
-        
+    def get_company_address(self, picking):
         res = []
-        
         company = picking.company_id or self.company or None
-        
         if company and company.partner_id:
-            
             partner = company.partner_id
-            addr_ids = self.pool.get('res.partner').address_get(self.cr, self.uid, [partner.id], ['default'])
-            addr_id = addr_ids['default']
-            addr = self.pool.get('res.partner.address').browse(self.cr, self.uid, addr_id)
-            
-            phone = addr and addr.phone or ''
+            phone = partner and partner.phone or ''
             format_phone = phone[0:3] + ' ' + phone[3:6] + ' ' + phone[6:9]
-            
-            res.append(partner and partner.name or "")
-            res.append(addr and addr.street or '')
-            res.append(addr and addr.city or '')
-            res.append(addr and addr.zip or '')
-            res.append(addr and addr.state_id and addr.state_id.name or '')
+            res.append(partner.name or "")
+            res.append(partner.street or '')
+            res.append(partner.city or '')
+            res.append(partner.zip or '')
+            res.append(partner.state_id
+                       and partner.state_id.name or '')
             res.append(phone)
             res.append(format_phone)
-            res.append(addr and addr.email or '')
-            
+            res.append(partner.email or '')
         else:
-            
-            res.append(" ")
-            res.append(" ")
-            res.append(" ")
-            res.append(" ")
-            res.append(" ")
-            res.append(" ")
-            res.append(" ")
-            res.append(" ")
-            
+            for i in range(8):
+                res.append(" ")
         return res
-                    
-		
-report_sxw.report_sxw('report.shipping.labels.package.report','stock.picking','addons/dos_shipping_labels_report/report/shipping_labels_package.rml',parser=shipping_labels_package_report)
+
+report_sxw.report_sxw('report.shipping.labels.package.report', 'stock.picking',
+                      'addons/dos_shipping_labels_report/report/'
+                      'shipping_labels_package.rml',
+                      parser=shipping_labels_package_report)
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== modified file 'dos_shipping_labels_report/report/shipping_labels_receiver.py'
--- dos_shipping_labels_report/report/shipping_labels_receiver.py	2014-06-11 10:23:47 +0000
+++ dos_shipping_labels_report/report/shipping_labels_receiver.py	2014-06-30 15:47:21 +0000
@@ -22,13 +22,14 @@
 import time
 from datetime import datetime
 from report import report_sxw
-from osv import osv
-from tools.translate import _
-import pooler
-
-class shipping_labels_receiver_report(report_sxw.rml_parse):
+from openerp.osv import orm, fields
+from openerp.tools.translate import _
+
+
+class ShippingLabelsReceiverReport(report_sxw.rml_parse):
     def __init__(self, cr, uid, name, context):
-        super(shipping_labels_receiver_report, self).__init__(cr, uid, name, context=context)
+        super(ShippingLabelsReceiverReport, self).__init__(cr, uid, name,
+                                                           context=context)
         self.localcontext.update({
             'time': time,
             'get_phone_contact': self.get_phone_contact,
@@ -37,70 +38,52 @@
             'get_company_address': self.get_company_address,
         })
         self.context = context
-        user = self.pool.get('res.users').browse(cr, uid, uid)
+        user = self.pool['res.users'].browse(cr, uid, uid)
         self.company = user.company_id
-		
-        
-    def get_partner_contact (self, picking):
+
+    def get_partner_contact(self, picking):
         contact = picking.contact_id and picking.contact_id.contact_id or None
         if contact:
-            return ((contact.first_name if contact.first_name else '') + ' ' + contact.name).strip()
+            return ('%s %s' % (contact.first_name
+                               if contact.first_name else '',
+                               contact.name)).strip()
         else:
             return ''
 
-            
-    def get_phone_contact (self, picking):
+    def get_phone_contact(self, picking):
         if picking.contact_id:
             return picking.contact_id.phone or ''
         else:
             return picking.address_id and picking.address_id.phone or ''
 
-    
-    def get_email_contact (self, picking):
+    def get_email_contact(self, picking):
         if picking.contact_id:
             return picking.contact_id.email or ''
         else:
             return picking.address_id and picking.address_id.email or ''
 
-    
-    def get_company_address (self, picking):
-        
+    def get_company_address(self, picking):
         res = []
-        
         company = picking.company_id or self.company or None
-        
         if company and company.partner_id:
-            
             partner = company.partner_id
-            addr_ids = self.pool.get('res.partner').address_get(self.cr, self.uid, [partner.id], ['default'])
-            addr_id = addr_ids['default']
-            addr = self.pool.get('res.partner.address').browse(self.cr, self.uid, addr_id)
-            
             phone = addr and addr.phone or ''
             format_phone = phone[0:3] + ' ' + phone[3:6] + ' ' + phone[6:9]
-            
             res.append(partner and partner.name or "")
-            res.append(addr and addr.street or '')
-            res.append(addr and addr.city or '')
-            res.append(addr and addr.zip or '')
-            res.append(addr and addr.state_id and addr.state_id.name or '')
+            res.append(partner.street or '')
+            res.append(partner.city or '')
+            res.append(partner.zip or '')
+            res.append(partner.state_id and partner.state_id.name or '')
             res.append(phone)
             res.append(format_phone)
-            res.append(addr and addr.email or '')
-            
+            res.append(partner.email or '')
         else:
-            
-            res.append(" ")
-            res.append(" ")
-            res.append(" ")
-            res.append(" ")
-            res.append(" ")
-            res.append(" ")
-            res.append(" ")
-            res.append(" ")
-            
+            for i in range(8):
+                res.append(" ")
         return res
-                            
-		
-report_sxw.report_sxw('report.shipping.labels.receiver.report','stock.picking','addons/dos_shipping_labels_report/report/shipping_labels_receiver.rml',parser=shipping_labels_receiver_report)
+
+report_sxw.report_sxw('report.shipping.labels.receiver.report',
+                      'stock.picking', 'addons/dos_shipping_labels_report/'
+                      'report/shipping_labels_receiver.rml',
+                      parser=shipping_labels_receiver_report)
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== renamed file 'dos_shipping_labels_report/shipping_labels_report.xml' => 'dos_shipping_labels_report/report/shipping_labels_report.xml'
=== added directory 'dos_shipping_labels_report/views'
=== renamed file 'dos_shipping_labels_report/stock_view.xml' => 'dos_shipping_labels_report/views/stock_view.xml'
--- dos_shipping_labels_report/stock_view.xml	2014-06-11 10:23:47 +0000
+++ dos_shipping_labels_report/views/stock_view.xml	2014-06-30 15:47:21 +0000
@@ -4,7 +4,6 @@
 
         <record id="view_stock_picking_labels_inherit" model="ir.ui.view">
             <field name="name">stock.picking.out.report.form</field>
-            <field name="type">form</field>
             <field name="model">stock.picking</field>
             <field name="inherit_id" ref="delivery.view_delivery_order_inherit_stock"/>
             <field name="arch" type="xml">

=== modified file 'dos_shipping_labels_report/wizard/__init__.py'
--- dos_shipping_labels_report/wizard/__init__.py	2014-06-11 10:23:47 +0000
+++ dos_shipping_labels_report/wizard/__init__.py	2014-06-30 15:47:21 +0000
@@ -2,7 +2,8 @@
 ##############################################################################
 #
 #    OpenERP, Open Source Management Solution
-#    Copyright (c) 2008 Zikzakmedia S.L. (http://zikzakmedia.com) All Rights Reserved.
+#    Copyright (c) 2008 Zikzakmedia S.L. (http://zikzakmedia.com)
+#    All Rights Reserved.
 #                       Jordi Esteve <jesteve@xxxxxxxxxxxxxxx>
 #    $Id$
 #
@@ -21,4 +22,4 @@
 #
 ##############################################################################
 
-import wizard_shipping_labels_print
\ No newline at end of file
+from . import wizard_shipping_labels_print

=== renamed file 'dos_shipping_labels_report/shipping_labels_wizard.xml' => 'dos_shipping_labels_report/wizard/shipping_labels_wizard.xml'
--- dos_shipping_labels_report/shipping_labels_wizard.xml	2014-06-11 10:23:47 +0000
+++ dos_shipping_labels_report/wizard/shipping_labels_wizard.xml	2014-06-30 15:47:21 +0000
@@ -1,9 +1,44 @@
 <?xml version="1.0" encoding="utf-8"?>
 <openerp>
-    <data>
-        <wizard string="Print Shipping Labels" 
-        		model="stock.picking"
-        		name="stock.picking.print_shipping_labels" 
-        		id="stock_picking_print_shipping_labels"/>
-    </data>
+	<data>
+	
+	<record id="view_print_shipping_labels" model="ir.ui.view">
+		<field name="name">view.print.production.labels</field>
+		<field name="model">print.labels</field>
+		<field name="arch" type="xml">
+			<form string="Print Production Labels" version="7.0">
+				<separator string="The following production labels will be print:" colspan="4"/>
+				<field name="text_print" nolabel="1" colspan="4" width="600" height="250" />
+				<footer>
+					<button class="oe_link" special="cancel" string="Cancel"/>
+					<button  icon="gtk-ok" name="print_labels" string="Print" type="object"/>
+				</footer>
+				<newline />
+			</form>
+		</field>
+	</record>
+	
+	<record id="view_done_form" model="ir.ui.view">
+		<field name="name">view.done.form</field>
+		<field name="model">print.labels</field>
+		<field name="type">form</field>
+		<field name="arch" type="xml">
+		<form string="Print Production Labels">
+			<separator string="Production labels have been successfully sent to print" colspan="4"/>
+			<field name="qty_labels" readonly="1"/>
+			<button class="oe_link" special="cancel" string="Done"/>
+		</form>
+		</field>
+	</record>
+
+	<act_window 
+		id= "mrp_production_print_labels"
+		name= "Print Production Labels" 
+		res_model= "print.labels"
+		src_model= "stock.picking"
+		key2= "client_action_multi"
+		view_id = "view_print_shipping_labels"
+		target ="new" />
+
+	</data>
 </openerp>

=== modified file 'dos_shipping_labels_report/wizard/wizard_shipping_labels_print.py'
--- dos_shipping_labels_report/wizard/wizard_shipping_labels_print.py	2014-06-11 10:23:47 +0000
+++ dos_shipping_labels_report/wizard/wizard_shipping_labels_print.py	2014-06-30 15:47:21 +0000
@@ -18,129 +18,103 @@
 #
 ##############################################################################
 
-import wizard
-import pooler
-import tools
-
-from tools.translate import _
-from osv import fields,osv
+from openerp.tools.translate import _
+from openerp.osv import fields, orm
 import time
 import netsvc
-from tools.misc import UpdateableStr, UpdateableDict
 import base64
 
-print_init_form = '''<?xml version="1.0" encoding="utf-8"?>
-<form string="Print Shipping Labels">
-	<separator string="The following shipping labels will be print:" colspan="4"/>
-	<field name="text_print" nolabel="1" colspan="4" width="600" height="250" />
-	<newline />
-</form>'''
-
-print_init_fields = {
-	'text_print': {'string':'Message', 'type':'text', 'readonly':True},
-}
-
-print_done_form = '''<?xml version="1.0" encoding="utf-8"?>
-<form string="Print Shipping Labels">
-	<separator string="Shipping labels have been successfully sent to print" colspan="4"/>
-	<field name="qty_labels"/>
-</form>'''
-
-print_done_fields = {
-	'qty_labels': {'string':'Printed Labels', 'type':'integer', 'readonly': True},
-}
-
-
-def _get_defaults(self, cr, uid, data, context):
-	p = pooler.get_pool(cr.dbname)
-	user = p.get('res.users').browse(cr, uid, uid, context)
-	
-	text_print = ''
-	i = 0
-	
-	pickings = p.get(data['model']).browse(cr, uid, data['ids'], context)
- 
-	for picking in pickings:
-
-		i += 1
-		name = picking.name or ''
-		partner_name = picking.partner_id and picking.partner_id.name or ''
-			
-		text_print += str(i) + '. ' + name + ' - ' + partner_name + '\n'
-			
-	return {'text_print': text_print}
-
-
-def create_report(cr, uid, res_ids, report_name=False, context={}):
-	if not report_name or not res_ids:
-		raise osv.except_osv(_('Error !'),_('Report name and Resources ids are required !!!'))
-	
-	try:
-		service = netsvc.LocalService("report."+report_name);
-		result, format = service.create(cr, uid, res_ids, {}, context)
-		
-	except Exception,e:
-		print 'Exception in create report:',e
-		raise osv.except_osv(_('Error !'),_('Exception in create report.'))
-	
-	return result, format
-
-
-def _print_labels(self, cr, uid, data, context):
-	import re
-	p = pooler.get_pool(cr.dbname)
-	user = p.get('res.users').browse(cr, uid, uid, context)
-	
-	report_obj = p.get('ir.actions.report.xml')
-	printer_obj = p.get('printing.printer')
-	
-	qty_labels = 0
-	
-	# Obtenemos la impresora Brother-QL-1060N-62x100
-	default_printer = printer_obj.search(cr, uid, [('system_name', '=', 'Brother-QL-1060N-62x100')])
-
-	if default_printer:
-		default_printer = default_printer[0]
-		printer = printer_obj.browse(cr, uid, default_printer, context).system_name
-	else:
-		raise osv.except_osv(_('Error !'),_('Not found any default printer. Please set the default printer.')) 
-	
-	
-	pickings = p.get(data['model']).browse(cr, uid, data['ids'], context)
-	
-	for picking in pickings:
-		
-		num_packages = picking.number_of_packages or 0
-		
-		# Imprimimos un informe por cada paquete
-		for i in range(1, num_packages+1):
-		
-			# Creamos informe
-			result, format = create_report(cr, uid, [picking.id], 'shipping.labels.package.report', {'page_number': i})
-		
-			# Imprimimos informe
-			report_obj.print_direct(cr, uid, base64.encodestring(result), format, printer)
-			
-		# Imprimimos informe con datos del receptor
-		# result, format = create_report(cr, uid, [picking.id], 'shipping.labels.receiver.report')
-	
-		# report_obj.print_direct(cr, uid, base64.encodestring(result), format, printer)	
-		
-		qty_labels += num_packages
-		
-	return {'qty_labels': qty_labels}
-	
-	
-class print_labels(wizard.interface):
-	states = {
-		'init': {
-			'actions': [_get_defaults],
-			'result': {'type': 'form', 'arch': print_init_form, 'fields': print_init_fields, 'state':[('end','Cancel'), ('done','Print')]}
-		},
-		'done': {
-			'actions': [_print_labels],
-			'result': {'type': 'form', 'arch': print_done_form, 'fields': print_done_fields, 'state': [('end', 'Close')] }
-		}
-	}
-	
-print_labels('stock.picking.print_shipping_labels')
+
+class PrintLabels(orm.TransientModel):
+
+    _name = 'print.labels'
+
+    def _get_defaults(self, cr, uid, data, context):
+        user = self.pool['res.users'].browse(cr, uid, uid, context)
+        text_print = ''
+        i = 0
+        pickings = p.get(data['model']).browse(cr, uid, data['ids'], context)
+        for picking in pickings:
+            i += 1
+            name = picking.name or ''
+            partner_name = picking.partner_id and picking.partner_id.name or ''
+            text_print += str(i) + '. ' + name + ' - ' + partner_name + '\n'
+        return text_print
+
+    _columns = {
+        'text_print': fields.text('Message', readonly=True),
+        'qty_labels': fields.integer('Printed Labels'),
+    }
+    _defaults = {
+        'text_print': _get_defaults,
+        'qty_labels':
+            lambda self, cr, uid, context: context.get('qty_labels', 0)
+    }
+
+    def create_report(cr, uid, res_ids, report_name=False, context=None):
+        if not report_name or not res_ids:
+            raise osv.except_osv(
+                _('Error !'),
+                _('Report name and Resources ids are required !!!'))
+        try:
+            service = netsvc.LocalService("report."+report_name)
+            result, format = service.create(cr, uid, res_ids, {}, context)
+        except Exception, e:
+            print 'Exception in create report:', e
+            raise osv.except_osv(_('Error !'),
+                                 _('Exception in create report.'))
+        return result, format
+
+    def _print_labels(self, cr, uid, data, context):
+        user = self.pool['res.users'].browse(cr, uid, uid, context)
+        report_obj = self.pool['ir.actions.report.xml']
+        printer_obj = self.pool['printing.printer']
+        qty_labels = 0
+        # Obtenemos la impresora Brother-QL-1060N-62x100
+        default_printer = printer_obj.search(
+            cr, uid, [('system_name', '=', 'Brother-QL-1060N-62x100')])
+        if default_printer:
+            default_printer = default_printer[0]
+            printer = (
+                printer_obj.browse(
+                    cr, uid, default_printer, context).system_name)
+        else:
+            raise osv.except_osv(_('Error !'),
+                                 _('Not found any default printer. '
+                                   'Please set the default printer.'))
+        pickings = self.pool[data['model']].browse(cr, uid, data['ids'],
+                                                   context)
+        for picking in pickings:
+            num_packages = picking.number_of_packages or 0
+            # Imprimimos un informe por cada paquete
+            for i in range(1, num_packages+1):
+                # Creamos informe
+                result, format = (
+                    self.create_report(cr, uid, [picking.id],
+                                       'shipping.labels.package.report',
+                                       {'page_number': i}))
+                # Imprimimos informe
+                report_obj.print_direct(cr, uid, base64.encodestring(result),
+                                        format, printer)
+            # Imprimimos informe con datos del receptor
+            # result, format = create_report(cr, uid, [picking.id],
+            # 'shipping.labels.receiver.report')
+            # report_obj.print_direct(cr, uid, base64.encodestring(result),
+            # format, printer)
+            qty_labels += num_packages
+        data_obj = self.pool['ir.model.data']
+        id2 = data_obj._get_id(cr, uid, 'dos_shipping_labels_report',
+                               'view_done_form')
+        if id2:
+            id2 = data_obj.browse(cr, uid, id2, context=context).res_id
+            context['qty_labels'] = qty_labels
+        return {
+            'view_type': 'form',
+            'view_mode': 'form',
+            'res_model': 'print.labels',
+            'views': [(id2, 'form')],
+            'view_id': False,
+            'type': 'ir.actions.act_window',
+            'target': 'new',
+            'context': context
+            }


Follow ups