← Back to team overview

avanzosc team mailing list archive

[Merge] lp:~dani-ds/avanzosc/dos_sale_group into lp:~avanzosc-security-team/avanzosc/72horas

 

Daniel Campos (Avanzosc) has proposed merging lp:~dani-ds/avanzosc/dos_sale_group into lp:~avanzosc-security-team/avanzosc/72horas.

Requested reviews:
  Avanzosc_security (avanzosc-security-team)

For more details, see:
https://code.launchpad.net/~dani-ds/avanzosc/dos_sale_group/+merge/223900
-- 
https://code.launchpad.net/~dani-ds/avanzosc/dos_sale_group/+merge/223900
Your team Avanzosc_security is requested to review the proposed merge of lp:~dani-ds/avanzosc/dos_sale_group into lp:~avanzosc-security-team/avanzosc/72horas.
=== modified file 'dos_sale_group/__init__.py'
--- dos_sale_group/__init__.py	2014-06-11 10:23:47 +0000
+++ dos_sale_group/__init__.py	2014-06-20 11:40:50 +0000
@@ -19,7 +19,7 @@
 #
 ##############################################################################
 
-import sale_group
-import sale_order_line
+from . import models
+from . import wizard
 
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== modified file 'dos_sale_group/__openerp__.py'
--- dos_sale_group/__openerp__.py	2014-06-11 10:23:47 +0000
+++ dos_sale_group/__openerp__.py	2014-06-20 11:40:50 +0000
@@ -21,21 +21,18 @@
 
 
 {
-    "name" : "DOS Sale Group",
-    "version" : "1.0",
-    "author" : "DOS",
-    "category" : "Production, Sale",
-    "website" : "www.dos-sl.es",
-    "description": "This module allows you to create groups which include product sales.",
-    "depends" : ["sale", "sale_layout", "product"],
-    "init_xml" : [],
-    "update_xml" : [
-		'security/ir.model.access.csv',
-		'sale_group_view.xml',
-		'sale_order_line_view.xml',
-	],
+    "name": "DOS Sale Group",
+    "version": "1.0",
+    "author": "DOS",
+    "category": "Production, Sale",
+    "website": "www.dos-sl.es",
+    "description": "This module allows you to create groups which include "
+    "product sales.",
+    "depends": ["sale", "sale_layout", "product"],
+    "data": ['security/ir.model.access.csv',
+             'views/sale_group_view.xml',
+             'views/sale_order_line_view.xml',
+             ],
     "active": False,
     "installable": True
 }
-
-

=== added directory 'dos_sale_group/models'
=== renamed file 'dos_sale_group/sale_group.py' => 'dos_sale_group/models/sale_group.py'
--- dos_sale_group/sale_group.py	2014-06-11 10:23:47 +0000
+++ dos_sale_group/models/sale_group.py	2014-06-20 11:40:50 +0000
@@ -19,114 +19,118 @@
 #
 ##############################################################################
 
-from osv import osv
-from osv import fields
-from tools.translate import _
-import time
-
-class sale_group(osv.osv):
-
-	_name = 'sale.group'
-	_description = "Sale Group"
-
-	_columns = {	
-		'name': fields.char('Group Name', size=250, required=True),
-		'type' : fields.selection([('sim', 'SIM'), ('enlace', 'Enlace'), ('pack', 'Pack')], 'Type', required=True),
-		'partner_sales': fields.boolean('Partner Sales', help="If checked the calculations of sales are made on the active client."),
-		'sale_group_line_ids': fields.one2many('sale.group.line', 'sale_group_id', 'Sale Group Lines'),
-	}
-	
-	def create(self, cr, uid, vals, context=None):
-			
-		sale_group_id = super(sale_group, self).create(cr, uid, vals, context=context)
-		
-		if sale_group_id:
-			sale_group_obj = self.browse(cr, uid, sale_group_id, context)
-			total = 0
-			if sale_group_obj.sale_group_line_ids:
-				""" Comprobamos que el porcentage total de las líneas sea 100 """
-				for sale_group_line_obj in sale_group_obj.sale_group_line_ids:
-					total += sale_group_line_obj.percentage
-			"""
-			if total != 100:
-				raise osv.except_osv(_('Error'),
-				_('It is necessary that the sum total of the percentages of sales of products is exactly 100.'))
-			"""
-			
-		return sale_group_id
-		
-	def write(self, cr, uid, ids, vals, context=None):
-		
-		result =  super(sale_group, self).write(cr, uid, ids, vals, context = context)	
-	
-		for ident in ids:
-			
-			sale_group_obj = self.browse(cr, uid, ident, context)
-			total = 0
-			
-			if sale_group_obj.sale_group_line_ids:
-				""" Comprobamos que el porcentage total de las líneas sea 100 """
-				for sale_group_line_obj in sale_group_obj.sale_group_line_ids:
-					total += sale_group_line_obj.percentage
-			
-			"""
-			if total != 100:
-				raise osv.except_osv(_('Error'),
-				_('It is necessary that the sum total of the percentages of sales of products is exactly 100.'))
-
-			"""
-		return result
-
-sale_group()
-
-class sale_group_line(osv.osv):
-
-	_name = 'sale.group.line'
-	_description = "Sale Group Line"
-
-	_columns = {	
-		'sale_group_id': fields.many2one('sale.group', 'Sale Group', ondelete='cascade'),
-		'product_id': fields.many2one('product.product', 'Product', required=True, ondelete='cascade'),
-		'percentage': fields.integer('Percentage', required=True),
-	}
-	
-	_order = 'percentage desc'
-	
-	def create(self, cr, uid, vals, context=None):
-			
-		sale_group_line_id = super(sale_group_line, self).create(cr, uid, vals, context=context)
-		
-		if sale_group_line_id:
-			sale_group_line_obj = self.browse(cr, uid, sale_group_line_id, context)
-
-			if sale_group_line_obj.percentage:
-				if sale_group_line_obj.percentage <= 0 or sale_group_line_obj.percentage > 100:
-					""" Comprobamos que el porcentage de la lineas esté entre 0 y 100 """
-					raise osv.except_osv(_('Error'),
-					_('It is necessary the sales percentage of lines is between 0 and 100.'))
-			else:
-				raise osv.except_osv(_('Error'),
-				_('The percentage of sales can not be 0.'))
-				
-		return sale_group_line_id
-		
-	def write(self, cr, uid, ids, vals, context=None):
-		
-		result =  super(sale_group_line, self).write(cr, uid, ids, vals, context = context)	
-		
-		for ident in ids:
-			
-			sale_group_line_obj = self.browse(cr, uid, ident, context)
-
-			if sale_group_line_obj.percentage:
-				if sale_group_line_obj.percentage <= 0 or sale_group_line_obj.percentage > 100:
-					""" Comprobamos que el porcentage de la lineas esté entre 0 y 100 """
-					raise osv.except_osv(_('Error'),
-					_('It is necessary the sales percentage of lines is between 0 and 100.'))
-			else:
-				raise osv.except_osv(_('Error'),
-				_('The percentage of sales can not be 0.'))
-	
-		return result
-	
-sale_group_line()
\ No newline at end of file
+from openerp.orm import fields, orm
+from openerp.tools.translate import _
+
+
+class SaleGroup(orm.Model):
+
+    _name = 'sale.group'
+    _description = "Sale Group"
+
+    _columns = {
+        'name': fields.char('Group Name', size=250, required=True),
+        'type': fields.selection([('sim', 'SIM'), ('enlace', 'Enlace'),
+                                  ('pack', 'Pack')], 'Type', required=True),
+        'partner_sales': fields.boolean('Partner Sales',
+                                        help="If checked the calculations of "
+                                        "sales are made on the active"
+                                        " client."),
+        'sale_group_line_ids': fields.one2many('sale.group.line',
+                                               'sale_group_id',
+                                               'Sale Group Lines'),
+    }
+
+    def create(self, cr, uid, vals, context=None):
+        sale_group_id = super(SaleGroup, self).create(cr, uid, vals,
+                                                      context=context)
+        if sale_group_id:
+            sale_group_obj = self.browse(cr, uid, sale_group_id, context)
+            total = 0
+            if sale_group_obj.sale_group_line_ids:
+                """ Comprobamos que el porcentage total de las líneas"
+                " sea 100 """
+                for sale_group_line_obj in sale_group_obj.sale_group_line_ids:
+                    total += sale_group_line_obj.percentage
+                    """ if total != 100:
+                    raise osv.except_osv(_('Error'),
+                    _('It is necessary that the sum total of the percentages
+                     of sales of products is exactly 100.'))
+                    """
+        return sale_group_id
+
+    def write(self, cr, uid, ids, vals, context=None):
+        result = super(SaleGroup, self).write(cr, uid, ids, vals,
+                                              context=context)
+        for ident in ids:
+            sale_group_obj = self.browse(cr, uid, ident, context)
+            total = 0
+            if sale_group_obj.sale_group_line_ids:
+                """ Comprobamos que el porcentage total de las líneas
+                sea 100 """
+                for sale_group_line_obj in sale_group_obj.sale_group_line_ids:
+                    total += sale_group_line_obj.percentage
+            """
+            if total != 100:
+                raise osv.except_osv(_('Error'),
+                _('It is necessary that the sum total of the percentages of
+                sales of products is exactly 100.'))
+            """
+        return result
+
+
+class SaleGroupLine(orm.Model):
+
+    _name = 'sale.group.line'
+    _description = "Sale Group Line"
+
+    _columns = {
+        'sale_group_id': fields.many2one('sale.group', 'Sale Group',
+                                         ondelete='cascade'),
+        'product_id': fields.many2one('product.product', 'Product',
+                                      required=True, ondelete='cascade'),
+        'percentage': fields.integer('Percentage', required=True),
+    }
+
+    _order = 'percentage desc'
+
+    def create(self, cr, uid, vals, context=None):
+        sale_group_line_id = super(SaleGroupLine, self).create(cr, uid, vals,
+                                                               context=context)
+        if sale_group_line_id:
+            sale_group_line_obj = self.browse(cr, uid, sale_group_line_id,
+                                              context)
+            if sale_group_line_obj.percentage:
+                if (sale_group_line_obj.percentage <= 0 or
+                        sale_group_line_obj.percentage > 100):
+                    """ Comprobamos que el porcentage de la lineas esté entre
+                    0 y 100 """
+                    raise orm.except_orm(_('Error'),
+                                         _('It is necessary the sales '
+                                           'percentage of lines is between 0'
+                                           ' and 100.'))
+            else:
+                raise orm.except_orm(_('Error'),
+                                     _('The percentage of sales can not'
+                                       ' be 0.'))
+        return sale_group_line_id
+
+    def write(self, cr, uid, ids, vals, context=None):
+        result = super(SaleGroupLine, self).write(cr, uid, ids, vals,
+                                                  context=context)
+        for ident in ids:
+            sale_group_line_obj = self.browse(cr, uid, ident, context)
+            if sale_group_line_obj.percentage:
+                if (sale_group_line_obj.percentage <= 0 or
+                        sale_group_line_obj.percentage > 100):
+                    """ Comprobamos que el porcentage de la lineas esté
+                    entre 0 y 100 """
+                    raise orm.except_orm(_('Error'),
+                                         _('It is necessary the sales '
+                                           'percentage of lines is between 0 '
+                                           'and 100.'))
+            else:
+                raise orm.except_orm(_('Error'),
+                                     _('The percentage of sales can not '
+                                       'be 0.'))
+        return result

=== renamed file 'dos_sale_group/sale_order_line.py' => 'dos_sale_group/models/sale_order_line.py'
--- dos_sale_group/sale_order_line.py	2014-06-11 10:23:47 +0000
+++ dos_sale_group/models/sale_order_line.py	2014-06-20 11:40:50 +0000
@@ -19,196 +19,224 @@
 #
 ##############################################################################
 
-from osv import osv
-from osv import fields
-from tools.translate import _
-import time
+from openerp.orm import orm, fields
+from openerp.tools.translate import _
 from datetime import datetime
-from dateutil.relativedelta import relativedelta
-
-class sale_order_line(osv.osv): 
-
-    _name = 'sale.order.line'
+
+
+class SaleOrderLine(orm.Model):
     _inherit = 'sale.order.line'
-    
+
     _columns = {
-        'sale_group_type': fields.selection([('sim', 'SIM'), ('enlace', 'Enlace'), ('pack', 'Pack')], 'Sale Type', change_default=True, help="When you select a type of sales will recommend the necessary product sales according to the group defined in the customer contract."),
-        'sale_group_id': fields.many2one('sale.group', 'Sale Group', change_default=True, help="When you select a sales group will recommend the product necessary to fulfill the rules of sale."),
+        'sale_group_type': fields.selection(
+            [('sim', 'SIM'), ('enlace', 'Enlace'), ('pack', 'Pack')],
+            'Sale Type', change_default=True, help="When you select a type of "
+            "sales will recommend the necessary product sales according to the"
+            " group defined in the customer contract."),
+        'sale_group_id': fields.many2one('sale.group', 'Sale Group',
+                                         change_default=True,
+                                         help="When you select a sales group "
+                                         "will recommend the product necessary"
+                                         "to fulfill the rules of sale."),
     }
-    
-    def get_suggested_sale_product(self, cr, uid, sale_group_id, partner_id, date_order, product_ids=[]):
-        
+
+    def get_suggested_sale_product(self, cr, uid, sale_group_id,
+                                   partner_id, date_order, product_ids=[],
+                                   context=None):
         product_id = None
-        
         if sale_group_id:
             sale_group_obj = self.pool.get('sale.group')
-            sale_group = sale_group_obj.browse(cr, uid, sale_group_id, context=None)
-            
+            sale_group = sale_group_obj.browse(cr, uid, sale_group_id,
+                                               context=None)
             date_order_obj = datetime.strptime(date_order, "%Y-%m-%d")
             date_start = date_order_obj.strftime('%Y-%m-01')
             date_end = date_order_obj.strftime('%Y-%m-%d')
-            
             sql = "     SELECT COALESCE(SUM(sl.product_uom_qty), 0) AS total "
-            sql += "    FROM sale_order_line sl "
-            sql += "    INNER JOIN sale_order s ON sl.order_id=s.id "
-            sql += "    INNER JOIN sale_group_line gl ON sl.product_id=gl.product_id "
-            sql += "    INNER JOIN sale_group g ON gl.sale_group_id=g.id "
-            sql += "    WHERE g.id=" + str(sale_group_id) + " AND s.date_order >= '" + date_start + "' AND s.date_order <= '" + date_end + "' "
-            sql += "    UNION "
-            sql += "    SELECT COALESCE(SUM(sl.product_uom_qty), 0) AS total "
-            sql += "    FROM (SELECT DISTINCT order_id, pack_product_id, pack_prodlot_id, product_uom_qty "
-            sql += "          FROM sale_order_line "
-            sql += "          WHERE NOT pack_product_id IS NULL) sl" 
-            sql += "    INNER JOIN sale_order s ON sl.order_id=s.id "
-            sql += "    INNER JOIN sale_group_line gl ON sl.pack_product_id=gl.product_id "
-            sql += "    INNER JOIN sale_group g ON gl.sale_group_id=g.id "
-            sql += "    WHERE g.id=" + str(sale_group_id) + " AND s.date_order >= '" + date_start + "' AND s.date_order <= '" + date_end + "' "
-            sql += "    UNION"    
-            sql += "    SELECT COALESCE(SUM(sl.product_uom_qty), 0) AS total "
-            sql += "    FROM (SELECT DISTINCT l.order_id, b.product_id, l.prodlot_id, l.product_uom_qty "
-            sql += "          FROM sale_order_line l "
-            sql += "          INNER JOIN product_product p ON l.product_id=p.id "
-            sql += "          INNER JOIN product_template t ON p.product_tmpl_id=t.id AND t.supply_method='produce' "
-            sql += "          INNER JOIN mrp_bom b ON b.bom_id IN (SELECT id FROM mrp_bom where product_id=p.id) "
-            sql += "          WHERE pack_product_id IS NULL) sl "
-            sql += "    INNER JOIN sale_order s ON sl.order_id=s.id "
-            sql += "    INNER JOIN sale_group_line gl ON sl.product_id=gl.product_id "
-            sql += "    INNER JOIN sale_group g ON gl.sale_group_id=g.id "
-            sql += "    WHERE g.id=" + str(sale_group_id) + " AND s.date_order >= '" + date_start + "' AND s.date_order <= '" + date_end + "' "            
-
-
+            "    FROM sale_order_line sl "
+            "    INNER JOIN sale_order s ON sl.order_id=s.id "
+            "    INNER JOIN sale_group_line gl ON sl.product_id=gl.product_id "
+            "    INNER JOIN sale_group g ON gl.sale_group_id=g.id "
+            "    WHERE g.id=" + str(sale_group_id) + " AND s.date_order >= '"
+            + date_start + "' AND s.date_order <= '" + date_end + "' "
+            "    UNION "
+            "    SELECT COALESCE(SUM(sl.product_uom_qty), 0) AS total "
+            "    FROM (SELECT DISTINCT order_id, pack_product_id, "
+            "pack_prodlot_id, product_uom_qty "
+            "          FROM sale_order_line "
+            "          WHERE NOT pack_product_id IS NULL) sl"
+            "    INNER JOIN sale_order s ON sl.order_id=s.id "
+            "    INNER JOIN sale_group_line gl ON "
+            "sl.pack_product_id=gl.product_id "
+            "    INNER JOIN sale_group g ON gl.sale_group_id=g.id "
+            "    WHERE g.id=" + str(sale_group_id) + " AND s.date_order >= '"
+            + date_start + "' AND s.date_order <= '" + date_end + "' "
+            "    UNION"
+            "    SELECT COALESCE(SUM(sl.product_uom_qty), 0) AS total "
+            "    FROM (SELECT DISTINCT l.order_id, b.product_id, l.prodlot_id,"
+            " l.product_uom_qty "
+            "          FROM sale_order_line l "
+            "          INNER JOIN product_product p ON l.product_id=p.id "
+            "          INNER JOIN product_template t ON p.product_tmpl_id=t.id"
+            " AND t.supply_method='produce' "
+            "          INNER JOIN mrp_bom b ON b.bom_id IN (SELECT id FROM"
+            " mrp_bom where product_id=p.id) "
+            "          WHERE pack_product_id IS NULL) sl "
+            "    INNER JOIN sale_order s ON sl.order_id=s.id "
+            "    INNER JOIN sale_group_line gl ON sl.product_id=gl.product_id "
+            "    INNER JOIN sale_group g ON gl.sale_group_id=g.id "
+            "    WHERE g.id=" + str(sale_group_id) + " AND s.date_order >= '"
+            + date_start + "' AND s.date_order <= '" + date_end + "' "
             """ Contamos total de productos vendidos del grupo de ventas """
-            
             sql_total = "SELECT SUM(total) FROM ( "
             sql_total += sql
-        
             if sale_group.partner_sales and partner_id:
-                sql_total += "AND s.partner_id= " + str(partner_id)            
-            
+                sql_total += "AND s.partner_id= " + str(partner_id)
             sql_total += ") t "
-
             cr.execute(sql_total)
-            
             t = cr.fetchall()
             total = t[0][0] or 0
-            
-            """ Calculamos porcentajes actuales de los productos del grupo de ventas """
+            """ Calculamos porcentajes actuales de los productos del grupo de
+             ventas """
             products = []
             for line in sale_group.sale_group_line_ids:
                 product = {}
-                
                 sql_total = "SELECT SUM(total) FROM ( "
                 sql_total += sql
-                sql_total += "AND gl.product_id=" + str(line.product_id.id) + " "
-                
+                sql_total += "AND gl.product_id=" + str(line.product_id.id)
+                + " "
                 if sale_group.partner_sales and partner_id:
-                    sql_total += "AND s.partner_id= " + str(partner_id)        
-                
+                    sql_total += "AND s.partner_id= " + str(partner_id)
                 sql_total += ") t "
-                
                 cr.execute(sql_total)
-                
                 t = cr.fetchall()
                 total_product = t[0][0] or 0
-                            
                 product['id'] = line.product_id.id
                 product['percentage'] = line.percentage
                 if total > 0:
-                    product['actual_percentage'] = (total_product / total) * 100
+                    product['actual_percentage'] = total_product / total * 100
                 else:
                     product['actual_percentage'] = 0
-                
                 products.append(product)
-                
             """ Filtramos por productos """
             if product_ids:
                 products = filter(lambda x: x['id'] in product_ids, products)
-
-            """ Devolvemos el primer producto que no cumpla su porcentage estimado """
+            """ Devolvemos el primer producto que no cumpla su porcentage
+             estimado """
             if products and len(products) > 0:
-                
-                """ Guardamos primer producto con mayor porcentage del grupo de ventas """
+                """ Guardamos primer producto con mayor porcentage del
+                 grupo de ventas """
                 product_id = products[0]['id']
-                
                 """ Recorremos productos """
                 for p in products:
                     if p['actual_percentage'] < p['percentage']:
-                        product_id = p['id'] 
+                        product_id = p['id']
                         return product_id
-                
         return product_id
-    
-    def sale_group_type_change(self, cr, uid, ids, sale_group_type, pricelist, product, contract_id=False, prodlot_id=False, num_cabins=0, qty=0,
-            uom=False, qty_uos=0, uos=False, name='', partner_id=False,
-            lang=False, update_tax=True, date_order=False, packaging=False, fiscal_position=False, flag=False):
-    
+
+    def sale_group_type_change(self, cr, uid, ids, sale_group_type,
+                               pricelist, product, contract_id=False,
+                               prodlot_id=False, num_cabins=0, qty=0,
+                               uom=False, qty_uos=0, uos=False, name='',
+                               partner_id=False, lang=False, update_tax=True,
+                               date_order=False, packaging=False,
+                               fiscal_position=False, flag=False,
+                               context=None):
         result = {}
         domain = {}
         warning = {}
-        
         if sale_group_type:
             if contract_id:
-                contract_obj = self.pool.get('contract.contract')
-                contract = contract_obj.browse(cr, uid, contract_id, context=None)
+                contract_obj = self.pool['contract.contract']
+                contract = contract_obj.browse(cr, uid, contract_id,
+                                               context=None)
                 sale_group_id = None
-                
                 if sale_group_type == 'sim':
-                    sale_group_id = contract.sale_group_sim_id and contract.sale_group_sim_id.id or None
+                    sale_group_id = (contract.sale_group_sim_id and
+                                     contract.sale_group_sim_id.id or None)
                 elif sale_group_type == 'enlace':
-                    sale_group_id = contract.sale_group_link_id and contract.sale_group_link_id.id or None
+                    sale_group_id = (contract.sale_group_link_id and
+                                     contract.sale_group_link_id.id or None)
                 elif sale_group_type == 'pack':
-                    sale_group_id = contract.sale_group_pack_id and contract.sale_group_pack_id.id or None
-                    
+                    sale_group_id = (contract.sale_group_pack_id and
+                                     contract.sale_group_pack_id.id or None)
                 if sale_group_id:
-                    product_id = self.get_suggested_sale_product(cr, uid, sale_group_id, partner_id, date_order)
-                    
-                    """ Llamamos a la funcion on_change por defecto de product_id """
-                    product_id_change = super(sale_order_line, self).product_id_change(cr, uid, ids, pricelist, product_id, qty, uom, qty_uos, uos, name, partner_id, lang, update_tax, date_order, packaging, fiscal_position, flag)
-                    
-                    if product_id_change != None:    
-                        if product_id_change.has_key('value'):
-                            result = product_id_change['value']
-                        if product_id_change.has_key('domain'):
-                            domain = product_id_change['domain']
-                        if product_id_change.has_key('warning'):
-                            warning = product_id_change['warning']    
-                            
+                    product_id = self.get_suggested_sale_product(cr, uid,
+                                                                 sale_group_id,
+                                                                 partner_id,
+                                                                 date_order,
+                                                                 context)
+                    """ Llamamos a la funcion on_change por defecto de
+                     product_id """
+                    super_sol = super(SaleOrderLine, self)
+                    pro_id_chng = super_sol.product_id_change(cr, uid, ids,
+                                                              pricelist,
+                                                              product_id, qty,
+                                                              uom, qty_uos,
+                                                              uos, name,
+                                                              partner_id,
+                                                              lang, update_tax,
+                                                              date_order,
+                                                              packaging,
+                                                              fiscal_position,
+                                                              flag, context)
+                    if pro_id_chng is not None:
+                        if 'value' in pro_id_chng:
+                            result = pro_id_chng['value']
+                        if 'domain' in pro_id_chng:
+                            domain = pro_id_chng['domain']
+                        if 'warning' in pro_id_chng:
+                            warning = pro_id_chng['warning']
                     result['sale_group_id'] = sale_group_id
                     result['product_id'] = product_id
-                
-                else:        
-                    raise osv.except_osv(_('No Sales Group Defined !'), _('You have to select a sales group in the partner contract form !\nPlease set one sales group before choosing a sales type.'))
+                else:
+                    raise orm.except_orm(_('No Sales Group Defined !'),
+                                         _('You have to select a sales group '
+                                           'in the partner contract form '
+                                           '!\nPlease set one sales group '
+                                           'before choosing a sales type.'))
             else:
-                raise osv.except_osv(_('No Contract Defined !'), _('You have to select a contract in the sales form !\nPlease set one contract before choosing a sales type.'))
-                
+                raise orm.except_orm(_('No Contract Defined !'),
+                                     _('You have to select a contract in the '
+                                       'sales form !\nPlease set one contract '
+                                       'before choosing a sales type.'))
         return {'value': result, 'domain': domain, 'warning': warning}
-    
-    def sale_group_id_change(self, cr, uid, ids, sale_group_id, pricelist, product, contract_id=False, prodlot_id=False, num_cabins=0, qty=0,
-            uom=False, qty_uos=0, uos=False, name='', partner_id=False,
-            lang=False, update_tax=True, date_order=False, packaging=False, fiscal_position=False, flag=False):
-    
+
+    def sale_group_id_change(self, cr, uid, ids, sale_group_id, pricelist,
+                             product, contract_id=False, prodlot_id=False,
+                             num_cabins=0, qty=0, uom=False, qty_uos=0,
+                             uos=False, name='', partner_id=False, lang=False,
+                             update_tax=True, date_order=False,
+                             packaging=False, fiscal_position=False,
+                             flag=False, context=None):
         result = {}
         domain = {}
         warning = {}
-        
         if sale_group_id:
-            
-            product_id = self.get_suggested_sale_product(cr, uid, sale_group_id, partner_id, date_order)
-            
+            product_id = self.get_suggested_sale_product(cr, uid,
+                                                         sale_group_id,
+                                                         partner_id,
+                                                         date_order)
             """ Llamamos a la funcion on_change por defecto de product_id """
-            product_id_change = super(sale_order_line, self).product_id_change(cr, uid, ids, pricelist, product_id, qty, uom, qty_uos, uos, name, partner_id, lang, update_tax, date_order, packaging, fiscal_position, flag)
-            
-            if product_id_change != None:    
-                if product_id_change.has_key('value'):
+            product_id_change = super(SaleOrderLine,
+                                      self).product_id_change(cr, uid, ids,
+                                                              pricelist,
+                                                              product_id, qty,
+                                                              uom, qty_uos,
+                                                              uos, name,
+                                                              partner_id,
+                                                              lang, update_tax,
+                                                              date_order,
+                                                              packaging,
+                                                              fiscal_position,
+                                                              flag,
+                                                              context)
+            if product_id_change is not None:
+                if 'value' in product_id_change:
                     result = product_id_change['value']
-                if product_id_change.has_key('domain'):
+                if 'domain' in product_id_change:
                     domain = product_id_change['domain']
-                if product_id_change.has_key('warning'):
+                if 'warning' in product_id_change:
                     warning = product_id_change['warning']
-                    
             result['sale_group_type'] = None
             result['product_id'] = product_id
-        
         return {'value': result, 'domain': domain, 'warning': warning}
-        
-sale_order_line()

=== added directory 'dos_sale_group/views'
=== renamed file 'dos_sale_group/sale_group_view.xml' => 'dos_sale_group/views/sale_group_view.xml'
--- dos_sale_group/sale_group_view.xml	2014-06-11 10:23:47 +0000
+++ dos_sale_group/views/sale_group_view.xml	2014-06-20 11:40:50 +0000
@@ -5,7 +5,6 @@
 		<record model="ir.ui.view" id="sale_group_search_view">
 			<field name="name">sale.group.search.view</field>
 			<field name="model">sale.group</field>
-			<field name="type">search</field>
 			<field name="arch" type="xml">
 				<search string="Sale Group">
 					<field name="type" string="Type"/>	
@@ -15,11 +14,10 @@
 			</field>
 		</record>
 		
-         <!--Sale Group Tree View -->
-        <record model="ir.ui.view" id="sale_group_tree_view">
+			<!--Sale Group Tree View -->
+		<record model="ir.ui.view" id="sale_group_tree_view">
 			<field name="name">sale.group.tree.view</field>
 			<field name="model">sale.group</field>
-			<field name="type">tree</field>
 			<field name="arch" type="xml">
 				<tree string="Sale Group">
 					<field name="type"/>
@@ -33,7 +31,6 @@
         <record model="ir.ui.view" id="sale_group_form_view">
 			<field name="name">sale.group.form.view</field>
 			<field name="model">sale.group</field>
-			<field name="type">form</field>
 			<field name="arch" type="xml">
 				<form string="Sale Group">
 					<group colspan="4" col="4">

=== renamed file 'dos_sale_group/sale_order_line_view.xml' => 'dos_sale_group/views/sale_order_line_view.xml'

Follow ups