← Back to team overview

avanzosc team mailing list archive

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

 

Review: Needs Fixing code review

Varios comentarios inline.

Tienes que además mover el archivo xml y cambiar el replace por los atributos.

Diff comments:

> === modified file 'dos_delivery/__init__.py'
> --- dos_delivery/__init__.py	2014-06-11 10:23:47 +0000
> +++ dos_delivery/__init__.py	2014-06-23 15:30:31 +0000
> @@ -19,6 +19,6 @@
>  #
>  ##############################################################################
>  
> -import wizard
> +from . import wizard
>  
>  # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
> 
> === modified file 'dos_delivery/__openerp__.py'
> --- dos_delivery/__openerp__.py	2014-06-11 10:23:47 +0000
> +++ dos_delivery/__openerp__.py	2014-06-23 15:30:31 +0000
> @@ -21,20 +21,16 @@
>  
>  
>  {
> -	"name" : "DOS Delivery",
> -	"version" : "1.0",
> -	"author" : "DOS",
> -	"category" : "Contract, Sale, Delivery",
> -	"website" : "www.dos-sl.es",
> -	"description": "This module allows to calculate contracts shipping costs.",
> -	"depends" : ["base", "sale", "delivery", "dos_contracts"],
> -	"init_xml" : [],
> -	"update_xml" : [
> -		'wizard/make_contract_delivery.xml',
> -		'delivery_view.xml',
> -	],
> -	"active": False,
> -	"installable": True
> +    "name": "DOS Delivery",
> +    "version": "1.0",
> +    "author": "DOS",
> +    "category": "Contract, Sale, Delivery",
> +    "website": "www.dos-sl.es",
> +    "description": "This module allows to calculate contracts shipping costs.",
> +    "depends": ["base", "sale", "delivery", "dos_contracts"],
> +    "data": [
> +        'wizard/make_contract_delivery.xml',
> +        'views/delivery_view.xml',
> +    ],
> +    "installable": True
>  }
> -
> -
> 
> === added directory 'dos_delivery/views'
> === renamed file 'dos_delivery/delivery_view.xml' => 'dos_delivery/views/delivery_view.xml'
> === modified file 'dos_delivery/wizard/__init__.py'
> --- dos_delivery/wizard/__init__.py	2014-06-11 10:23:47 +0000
> +++ dos_delivery/wizard/__init__.py	2014-06-23 15:30:31 +0000
> @@ -1,6 +1,6 @@
>  # -*- coding: utf-8 -*-
>  ##############################################################################
> -#    
> +#
>  #    OpenERP, Open Source Management Solution
>  #    Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
>  #
> @@ -15,11 +15,10 @@
>  #    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/>.     
> +#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
>  #
>  ##############################################################################
>  
> -import make_contract_delivery
> +from . import make_contract_delivery
>  
>  # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
> -
> 
> === modified file 'dos_delivery/wizard/make_contract_delivery.py'
> --- dos_delivery/wizard/make_contract_delivery.py	2014-06-11 10:23:47 +0000
> +++ dos_delivery/wizard/make_contract_delivery.py	2014-06-23 15:30:31 +0000
> @@ -1,6 +1,6 @@
>  # -*- coding: utf-8 -*-
>  ##############################################################################
> -#    
> +#
>  #    OpenERP, Open Source Management Solution
>  #    Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
>  #
> @@ -15,184 +15,178 @@
>  #    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/>.     
> +#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
>  #
>  ##############################################################################
>  
>  import time
> -import ir
> +from openerp.addons.base import ir
>  from tools.translate import _
> -
> -from osv import osv, fields
> -
> -class delivery_carrier(osv.osv):
> -	
> -    _inherit ="delivery.carrier"
> +from openerp.osv import orm, fields
> +
> +
> +class DeliveryCarrier(orm.Models):

orm.Model. Esta clase debería ir en un archivo en la carpeta models.

> +
> +    _inherit = "delivery.carrier"
>  
>      def name_get(self, cr, uid, ids, context=None):
>          if not len(ids):
>              return []
>          if context is None:
>              context = {}
> -        order_id = context.get('order_id',False)
> +        order_id = context.get('order_id', False)
>          if not order_id:
> -            res = super(delivery_carrier, self).name_get(cr, uid, ids, context=context)
> +            res = super(DeliveryCarrier, self).name_get(cr, uid, ids,
> +                                                        context=context)
>          else:
> -            order = self.pool.get('sale.order').browse(cr, uid, order_id, context=context)
> +            order = self.pool['sale.order'].browse(cr, uid, order_id,
> +                                                   context=context)
>              currency = order.pricelist_id.currency_id.name or ''
> -            
> -            #Obtenemos precio de coste de los gastos de envío en función del número de unidades
> +            # Obtenemos precio de coste de los gastos de envío en
> +            # función del número de unidades
>              price = 0
> -            
>              if order.contract_id:
> -				#Obtenemos número de productos
> -				num_products = 0
> -				for line in order.order_line:
> -					num_products = num_products + line.product_uom_qty
> -				#Obtenemos precio de coste
> -				for ship_cost in order.contract_id.contract_shipping_cost_ids:
> -					if ship_cost.min_units <= num_products:
> -						price = ship_cost.price
> -            
> -            res = [(r['id'], r['name']+' ('+(str(price))+' '+currency+')') for r in self.read(cr, uid, ids, ['name'], context)]
> -        return res
> -       
> -delivery_carrier()
> -       
> -class make_contract_delivery(osv.osv_memory):
> -	_name = "make.contract.delivery"
> -	_description = 'Make Contract Delivery'
> -
> -	_columns = {
> -		'carrier_id': fields.many2one('delivery.carrier','Delivery Method', required=True),
> -	}
> -
> -
> -	def default_get(self, cr, uid, fields, context=None):
> -		""" 
> -			 To get default values for the object.
> -			
> -			 @param self: The object pointer.
> -			 @param cr: A database cursor
> -			 @param uid: ID of the user currently logged in
> -			 @param fields: List of fields for which we want default values 
> -			 @param context: A standard dictionary 
> -			 
> -			 @return: A dictionary which of fields with values. 
> -		
> -		"""
> -		res = super(make_contract_delivery, self).default_get(cr, uid, fields, context=context)
> -		order_obj = self.pool.get('sale.order')
> -		for order in order_obj.browse(cr, uid, context.get('active_ids', []), context=context):
> -			 carrier = order.carrier_id.id
> -			 if not carrier:
> -				carrier = order.partner_id.property_delivery_carrier.id
> -			 res.update({'carrier_id': carrier})
> -			 
> -		return res
> -
> -	def view_init(self, cr , uid , fields, context=None):
> -		 if context is None:
> -			context = {}
> -		 order_obj = self.pool.get('sale.order')
> -		 for order in order_obj.browse(cr, uid, context.get('active_ids', []), context=context):     
> -	 		if not order.state in ('draft'):
> -				raise osv.except_osv(_('Order not in draft state !'), _('The order state have to be draft to add delivery lines.'))
> -			if not order.contract_id:
> -				raise osv.except_osv(_('No contract available !'), _('No matching contract for the customer order !'))
> -		 pass     
> -		
> -	def delivery_set(self, cr, uid, ids, context=None):
> -		""" 
> -			 Adds delivery costs to Sale Order Line.
> -			
> -			 @param self: The object pointer.
> -			 @param cr: A database cursor
> -			 @param uid: ID of the user currently logged in
> -			 @param ids: List of IDs selected 
> -			 @param context: A standard dictionary 
> -			 
> -			 @return:  
> -		
> -		"""
> -		if context is None:
> -			context = {}
> -		rec_ids = context and context.get('active_ids',[])
> -		order_obj = self.pool.get('sale.order')
> -		line_obj = self.pool.get('sale.order.line')
> -		carrier_obj = self.pool.get('delivery.carrier')
> -		acc_fp_obj = self.pool.get('account.fiscal.position')
> -		contract_obj = self.pool.get('contract.contract')
> -		order_objs = order_obj.browse(cr, uid, rec_ids, context=context)
> -		
> -		for datas in self.browse(cr, uid, ids, context=context):    
> -			for order in order_objs:
> -				if not order.state in ('draft'):
> -					raise osv.except_osv(_('Order not in draft state !'), _('The order state have to be draft to add delivery lines.'))
> -				
> -				#Obtenemos número de productos
> -				num_products = 0
> -				for line in order.order_line:
> -					num_products = num_products + line.product_uom_qty
> -				
> -				#Obtenemos contrato del cliente del pedido
> -				#contract_ids = contract_obj.search(cr, uid, [('customer_id', '=', order.partner_id.id), ('active_contract', '=', True)], limit=1)
> -				
> -				if not order.contract_id:
> -					raise osv.except_osv(_('No contract available !'), _('No matching contract for the customer order !'))
> -					
> -				contract_id = order.contract_id
> -				
> -				#Obtenemos precio de coste de los gastos de envío en función del número de unidades
> -				price = 0
> -				found_ship_cost = False
> -				
> -				for ship_cost in contract_id.contract_shipping_cost_ids:
> -					if ship_cost.min_units <= num_products:
> -						price = ship_cost.price
> -						found_ship_cost = True
> -				
> -
> -				if not found_ship_cost:
> -					raise osv.except_osv(_('No shipping cost available !'), _('No matching shipping cost defined in the contract !'))
> -				
> -				carrier = carrier_obj.browse(cr, uid, datas.carrier_id.id, context=context)
> -				taxes = carrier.product_id.taxes_id
> -				fpos = order.fiscal_position or False
> -				taxes_ids = acc_fp_obj.map_tax(cr, uid, fpos, taxes)
> -				
> -				#Obtenemos destinatario del producto
> -				receiver = False
> -				
> -				for info in contract_id.info_invoice_ids:
> -					receiver = line_obj._find_receiver(carrier.product_id.categ_id, info)
> -					if receiver:
> -						break
> -					
> -				if not receiver:
> -					receiver = 'cliente'
> -				
> -				#Creamos línea de gastos de envío
> -				line_obj.create(cr, uid, {
> -					'order_id': order.id,
> -					'name': carrier.product_id.name,
> -					'product_uom_qty': 1,
> -					'product_uom': carrier.product_id.uom_id.id,
> -					'product_id': carrier.product_id.id,
> -					'price_unit': price,
> -					'receiver': receiver,
> -					'num_cabins': 0,
> -					'tax_id': [(6,0,taxes_ids)],
> -					'type': 'make_to_stock',
> -					'sequence': 30
> -				})
> -				
> -				#Actualizamos transportista seleccionado en el pedido
> -				order_obj.write(cr, uid, [order.id], {'carrier_id': carrier.id })
> -
> -		return {'type': 'ir.actions.act_window_close'}
> -
> -make_contract_delivery()
> +                # Obtenemos número de productos
> +                num_products = 0
> +                for line in order.order_line:
> +                    num_products = num_products + line.product_uom_qty
> +                # Obtenemos precio de coste
> +                for ship_cost in order.contract_id.contract_shipping_cost_ids:
> +                    if ship_cost.min_units <= num_products:
> +                        price = ship_cost.price
> +            res = [(r['id'], r['name']+' ('+(str(price))+' '+currency+')')
> +                   for r in self.read(cr, uid, ids, ['name'], context)]
> +        return res
> +
> +
> +class make_contract_delivery(orm.TransientModel):

Nombre de la clase en CapsWord

> +    _name = "make.contract.delivery"
> +    _description = 'Make Contract Delivery'
> +    _columns = {
> +        'carrier_id': fields.many2one('delivery.carrier',
> +                                      'Delivery Method', required=True)
> +        }
> +
> +    def default_get(self, cr, uid, fields, context=None):
> +        """
> +            To get default values for the object.
> +            @param self: The object pointer.
> +            @param cr: A database cursor
> +            @param uid: ID of the user currently logged in
> +            @param fields: List of fields for which we want default value
> +            @param context: A standard dictionary
> +            @return: A dictionary which of fields with values.
> +        """
> +        res = super(make_contract_delivery, self).default_get(cr, uid, fields,
> +                                                              context=context)
> +        order_obj = self.pool['sale.order']
> +        for order in order_obj.browse(cr, uid, context.get('active_ids', []),
> +                                      context=context):
> +            carrier = order.carrier_id.id
> +            if not carrier:
> +                carrier = order.partner_id.property_delivery_carrier.id
> +            res.update({'carrier_id': carrier})
> +        return res
> +
> +    def view_init(self, cr, uid, fields, context=None):
> +        if context is None:
> +            context = {}
> +        order_obj = self.pool['sale.order']
> +        for order in order_obj.browse(cr, uid, context.get('active_ids', []),
> +                                      context=context):
> +            if order.state not in ('draft'):
> +                raise orm.except_orm(_('Order not in draft state !'),
> +                                     _('The order state have to be draft'
> +                                       ' to add delivery lines.'))
> +            if not order.contract_id:
> +                raise osv.except_osv(_('No contract available !'),

orm.except_orm

> +                                     _('No matching contract '
> +                                       'for the customer order !'))
> +        pass
> +
> +    def delivery_set(self, cr, uid, ids, context=None):
> +        """
> +            Adds delivery costs to Sale Order Line.
> +
> +            @param self: The object pointer.
> +            @param cr: A database cursor
> +            @param uid: ID of the user currently logged in
> +            @param ids: List of IDs selected
> +            @param context: A standard dictionary
> +
> +            @return:
> +        """
> +        if context is None:
> +            context = {}
> +        rec_ids = context and context.get('active_ids', [])
> +        order_obj = self.pool['sale.order']
> +        line_obj = self.pool['sale.order.line']
> +        carrier_obj = self.pool['delivery.carrier']
> +        acc_fp_obj = self.pool['account.fiscal.position']
> +        contract_obj = self.pool['contract.contract']
> +        order_objs = order_obj.browse(cr, uid, rec_ids, context=context)
> +        for datas in self.browse(cr, uid, ids, context=context):
> +            for order in order_objs:
> +                if order.state not in ('draft'):
> +                    raise osv.except_osv(_('Order not in draft state !'),

orm.except_orm

> +                                         _('The order state have to be draft'
> +                                           ' to add delivery lines.'))
> +                # Obtenemos número de productos
> +                num_products = 0
> +                for line in order.order_line:
> +                    num_products = num_products + line.product_uom_qty

Poner num_product += line.product_uom_qty

> +                # Obtenemos contrato del cliente del pedido
> +                # contract_ids = contract_obj.search(cr, uid,
> +                # [('customer_id', '=', order.partner_id.id),
> +                # ('active_contract', '=', True)], limit=1)
> +                if not order.contract_id:
> +                    raise osv.except_osv(_('No contract available !'),

orm.except_orm

> +                                         _('No matching contract'
> +                                           'for the customer order !'))
> +                contract_id = order.contract_id
> +                # Obtenemos precio de coste de los gastos de envío
> +                # en función del número de unidades
> +                price = 0

No hace falta iniciarlo, ya que hay una excepción en caso de no encontrarlo.

> +                found_ship_cost = False
> +                for ship_cost in contract_id.contract_shipping_cost_ids:
> +                    if ship_cost.min_units <= num_products:
> +                        price = ship_cost.price
> +                        found_ship_cost = True

Poner un break aquí.

> +                if not found_ship_cost:
> +                    raise osv.except_osv(_('No shipping cost available !'),

orm.except_orm

> +                                         _('No matching shipping cost'
> +                                           'defined in the contract !'))
> +                carrier = carrier_obj.browse(cr, uid, datas.carrier_id.id,
> +                                             context=context)
> +                taxes = carrier.product_id.taxes_id
> +                fpos = order.fiscal_position or False
> +                taxes_ids = acc_fp_obj.map_tax(cr, uid, fpos, taxes)
> +                # Obtenemos destinatario del producto
> +                receiver = False

Inicializar receiver a 'cliente'

> +                for info in contract_id.info_invoice_ids:
> +                    categ = carrier.product_id.categ_id
> +                    receiver = line_obj._find_receiver(categ, info)
> +                    if receiver:
> +                        break
> +                if not receiver:

Estas dos líneas no hacen falta, ya que está arriba inicializado.

> +                    receiver = 'cliente'
> +                # Creamos línea de gastos de envío
> +                line_obj.create(cr, uid, {
> +                                'order_id': order.id,
> +                                'name': carrier.product_id.name,
> +                                'product_uom_qty': 1,
> +                                'product_uom': carrier.product_id.uom_id.id,
> +                                'product_id': carrier.product_id.id,
> +                                'price_unit': price,
> +                                'receiver': receiver,
> +                                'num_cabins': 0,
> +                                'tax_id': [(6, 0, taxes_ids)],
> +                                'type': 'make_to_stock',
> +                                'sequence': 30
> +                                })

propagar context

> +                # Actualizamos transportista seleccionado en el pedido
> +                order_obj.write(cr, uid, [order.id], {'carrier_id': carrier.id
> +                                                      })
> +        return {'type': 'ir.actions.act_window_close'}
>  
>  # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
> -
> 


-- 
https://code.launchpad.net/~mikelarregi/avanzosc/dos_delivery/+merge/224157
Your team Avanzosc_security is subscribed to branch lp:~avanzosc-security-team/avanzosc/72horas.


References