avanzosc team mailing list archive
-
avanzosc team
-
Mailing list archive
-
Message #00517
[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