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