← Back to team overview

avanzosc team mailing list archive

Re: [Merge] lp:~alfredodelafuente/avanzosc/dos_sales_elevator_partner into lp:~avanzosc-security-team/avanzosc/72horas

 

Review: Needs Fixing code review

Varias cosillas menores para ya dejarlo rematado.

Un saludo.

Diff comments:

> === modified file 'dos_sales_elevator_partner/__init__.py'
> --- dos_sales_elevator_partner/__init__.py	2014-06-11 10:23:47 +0000
> +++ dos_sales_elevator_partner/__init__.py	2014-06-26 08:48:12 +0000
> @@ -17,10 +17,4 @@
>  #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
>  #
>  ##############################################################################
> -
> -import sale
> -import stock
> -import account
> -
> -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
> -
> +from . import models
> \ No newline at end of file
> 
> === modified file 'dos_sales_elevator_partner/__openerp__.py'
> --- dos_sales_elevator_partner/__openerp__.py	2014-06-11 10:23:47 +0000
> +++ dos_sales_elevator_partner/__openerp__.py	2014-06-26 08:48:12 +0000
> @@ -1,7 +1,7 @@
>  # -*- encoding: utf-8 -*-
>  ##############################################################################
> -# 
> -#    OpenERP, Open Source Management Solution	
> +#
> +#    OpenERP, Open Source Management Solution
>  #    Copyright (C) 2004-2008 Tiny SPRL (<http://tiny.be>). All Rights Reserved
>  #    $Id$
>  #
> @@ -20,21 +20,22 @@
>  #
>  ##############################################################################
>  {
> -	"name" : "DOS Sales Elevator Partner",
> -	"version" : "1.0",
> -	"author" : "DOS",
> -	"category" : "Enterprise Specific Modules",
> -	"description":"""Module to allow set elevator partner in sale orders, stock picking and account invoice.""",
> -	"depends" : ["base", "sale", "stock", "account", "dos_partner_additional_info", "dos_contracts"],
> -	"init_xml" : [],
> -	"demo_xml" : [],
> -	"update_xml" : [
> -					'sale_view.xml',
> -					'stock_view.xml',
> -					'account_view.xml',
> -					],
> -	"website": 'http://www.dos-sl.es',
> -	"active": False,
> -	"installable": True
> +    "name": "DOS Sales Elevator Partner",
> +    "version": "1.0",
> +    "author": "DOS",
> +    "category": "Enterprise Specific Modules",
> +    "description": """
> +    Module to allow set elevator partner in sale orders, stock picking and
> +     account invoice.
> +    """,
> +    "depends": ["base", "sale", "stock", "account",
> +                "dos_partner_additional_info", "dos_contracts",
> +                ],
> +    "demo_xml": [],
> +    "data": ['view/sale_view.xml',
> +             'view/stock_view.xml',
> +             'view/account_view.xml',
> +             ],
> +    "website": 'http://www.dos-sl.es',
> +    "installable": True
>  }
> -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
> 
> === added directory 'dos_sales_elevator_partner/models'
> === added file 'dos_sales_elevator_partner/models/__init__.py'
> --- dos_sales_elevator_partner/models/__init__.py	1970-01-01 00:00:00 +0000
> +++ dos_sales_elevator_partner/models/__init__.py	2014-06-26 08:48:12 +0000
> @@ -0,0 +1,23 @@
> +# -*- coding: utf-8 -*-
> +##############################################################################
> +#
> +#    OpenERP, Open Source Management Solution
> +#    Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
> +#
> +#    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 account
> +from . import sale
> +from . import stock
> \ No newline at end of file
> 
> === renamed file 'dos_sales_elevator_partner/account.py' => 'dos_sales_elevator_partner/models/account.py'
> --- dos_sales_elevator_partner/account.py	2014-06-11 10:23:47 +0000
> +++ dos_sales_elevator_partner/models/account.py	2014-06-26 08:48:12 +0000
> @@ -20,78 +20,85 @@
>  #
>  ##############################################################################
>  
> -from osv import fields, osv
> -import decimal_precision as dp
> +from openerp.osv import orm, fields
> +from openerp.addons import decimal_precision as dp
>  import time
>  
> -class account_invoice(osv.osv):
> -	"""Inherit account_invoice to add elevator partner field"""
> -
> -	_inherit ="account.invoice"
> -	
> -	_columns = {
> -		'ref': fields.char('Reference', size=64),
> -		'elevator_partner_id': fields.many2one('res.partner', 'Elevator', readonly=True, states={'draft':[('readonly',False)]}, select=True),
> -		'middleman_partner_id': fields.many2one('res.partner', 'Middleman', readonly=True, states={'draft': [('readonly', False)]}, select=True),
> -	}
> -	
> -	
> -	def onchange_partner_id(self, cr, uid, ids, type, partner_id,\
> -			date_invoice=False, payment_term=False, partner_bank_id=False, company_id=False):
> -		
> -		res = super(account_invoice, self).onchange_partner_id(cr, uid, ids, type, partner_id,\
> -			date_invoice, payment_term, partner_bank_id, company_id)
> -		
> -		values = res['value']
> -		
> -		values['contract_id'] = False
> -		values['elevator_partner_id'] = False
> -		values['middleman_partner_id'] = False
> -		values['user_id'] = False
> -
> -		if partner_id:
> -			partner =  self.pool.get('res.partner').browse(cr, uid, partner_id, context=None)
> -			contract_ids = self.pool.get('contract.contract').search(cr, uid, [('customer_id', '=', partner_id), ('active_contract', '=', True)], limit=1)
> -			contract_id = contract_ids and contract_ids[0] or False
> -			
> -			if contract_id:
> -				contract = self.pool.get('contract.contract').browse(cr, uid, contract_id)
> -				values['contract_id'] = contract_id
> -				values['elevator_partner_id'] = contract.elevator_id and contract.elevator_id.id or False
> -				values['middleman_partner_id'] = contract.middleman_id and contract.middleman_id.id or False
> -				
> -			values['user_id'] = partner.user_id and partner.user_id.id or False					
> -
> -		return {'value': values}
> -	
> -	
> -	def onchange_contract_id(self, cr, uid, ids, contract):
> -		if not contract:
> -			return {'value': {'elevator_partner_id': False, 'middleman_partner_id': False}}
> -
> -		contract = self.pool.get('contract.contract').browse(cr, uid, contract)
> -		elevator_partner_id = contract.elevator_id and contract.elevator_id.id or False
> -		middleman_partner_id = contract.middleman_id and contract.middleman_id.id or False
> -
> -		val = {
> -			'elevator_partner_id': elevator_partner_id,
> -			'middleman_partner_id': middleman_partner_id,
> -		}
> -
> -		return {'value': val}
> -	
> -account_invoice()
> -
> -
> -class account_invoice_line(osv.osv):
> -
> -	_inherit ="account.invoice.line"
> -	
> -	_columns = {
> -		'ref': fields.char('Reference', size=64),
> -		'contract_id': fields.many2one('contract.contract', 'Contract', select=True),
> -		'contract_annexe_id': fields.many2one('contract.annexe', 'Annexe', select=True),
> -		'stock_move_id': fields.many2one('stock.move', 'Stock Move', select=True),
> -	}
> -			
> -account_invoice_line()
> +
> +class AccountInvoice(orm.Model):
> +    """Inherit account_invoice to add elevator partner field"""
> +    _inherit = "account.invoice"
> +
> +    _columns = {
> +        'ref': fields.char('Reference', size=64),
> +        'elevator_partner_id':
> +            fields.many2one('res.partner', 'Elevator', readonly=True,
> +                            select=True, states={'draft': [('readonly',
> +                                                            False)]}),
> +        'middleman_partner_id':
> +            fields.many2one('res.partner', 'Middleman', readonly=True,
> +                            select=True, states={'draft': [('readonly',
> +                                                            False)]}),
> +    }
> +
> +    def onchange_partner_id(self, cr, uid, ids, type, partner_id,
> +                            date_invoice=False, payment_term=False,
> +                            partner_bank_id=False, company_id=False):
> +        partner_obj = self.pool['res.partner']
> +        contract_obj = self.pool['contract.contract']
> +        res = super(AccountInvoice, self).onchange_partner_id(
> +            cr, uid, ids, type, partner_id, date_invoice, payment_term,
> +            partner_bank_id, company_id)
> +        values = res['value']
> +        values['contract_id'] = False
> +        values['elevator_partner_id'] = False
> +        values['middleman_partner_id'] = False
> +        values['user_id'] = False
> +        if partner_id:
> +            partner = partner_obj.browse(cr, uid, partner_id, context=None)
> +            condition = [('customer_id', '=', partner_id),
> +                         ('active_contract', '=', True)]
> +            contract_ids = contract_obj.search(cr, uid, condition, limit=1)
> +            contract_id = contract_ids and contract_ids[0] or False
> +            if contract_id:
> +                contract = contract_obj.browse(cr, uid, contract_id)
> +                values['contract_id'] = contract_id
> +                values['elevator_partner_id'] = (contract.elevator_id and
> +                                                 contract.elevator_id.id or
> +                                                 False)
> +                values['middleman_partner_id'] = (contract.middleman_id and
> +                                                  contract.middleman_id.id or
> +                                                  False)
> +            values['user_id'] = partner.user_id and partner.user_id.id or False
> +        return {'value': values}
> +
> +    def onchange_contract_id(self, cr, uid, ids, contract):
> +        contract_obj = self.pool['contract.contract']
> +        if not contract:
> +            return {'value': {'elevator_partner_id': False,
> +                              'middleman_partner_id': False}}
> +        contract = contract_obj.browse(cr, uid, contract)
> +        elevator_partner_id = (contract.elevator_id and
> +                               contract.elevator_id.id or False)
> +        middleman_partner_id = (contract.middleman_id and
> +                                contract.middleman_id.id or False)
> +        val = {
> +            'elevator_partner_id': elevator_partner_id,
> +            'middleman_partner_id': middleman_partner_id,
> +            }
> +
> +        return {'value': val}
> +
> +
> +class AccountInvoiceLine(orm.Model):
> +    _inherit = "account.invoice.line"
> +
> +    _columns = {
> +        'ref': fields.char('Reference', size=64),
> +        'contract_id': fields.many2one('contract.contract', 'Contract',
> +                                       select=True),
> +        'contract_annexe_id': fields.many2one('contract.annexe', 'Annexe',
> +                                              select=True),
> +        'stock_move_id': fields.many2one('stock.move', 'Stock Move',
> +                                         select=True),
> +    }
> 
> === renamed file 'dos_sales_elevator_partner/sale.py' => 'dos_sales_elevator_partner/models/sale.py'
> --- dos_sales_elevator_partner/sale.py	2014-06-11 10:23:47 +0000
> +++ dos_sales_elevator_partner/models/sale.py	2014-06-26 08:48:12 +0000
> @@ -19,167 +19,197 @@
>  #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
>  #
>  ##############################################################################
> -
> -from osv import fields, osv
> -import decimal_precision as dp
> +from openerp.osv import orm, fields
> +from openerp.addons import decimal_precision as dp
>  import time
>  
> -class sale_order(osv.osv):
> +
> +class SaleOrder(orm.Model):
>      """Inherit sale_order to add elevator partner field"""
> -
> -    _inherit ="sale.order"
> -    
> +    _inherit = "sale.order"
>      _columns = {
>          'ref': fields.char('Reference', size=64),
> -        'elevator_partner_id': fields.many2one('res.partner', 'Elevator', readonly=True, states={'draft': [('readonly', False)]}, select=True),
> -        'elevator_invoice_id': fields.many2one('res.partner.address', 'Elevator Invoice Address', readonly=True, states={'draft': [('readonly', False)]}, help="Elevator invoice address for current sales order."),
> -        'middleman_partner_id': fields.many2one('res.partner', 'Middleman', readonly=True, states={'draft': [('readonly', False)]}, select=True),
> +        'elevator_partner_id':
> +            fields.many2one('res.partner', 'Elevator', readonly=True,
> +                            states={'draft': [('readonly', False)]},
> +                            select=True),
> +        'elevator_invoice_id':
> +            fields.many2one('res.partner', 'Elevator Invoice Address',
> +                            readonly=True,
> +                            states={'draft': [('readonly', False)]},
> +                            help="Elevator invoice address for current sales "
> +                            "order."),
> +        'middleman_partner_id':
> +            fields.many2one('res.partner', 'Middleman', readonly=True,
> +                            states={'draft': [('readonly', False)]},
> +                            select=True),
>      }
> -    
> +
>      def action_ship_create(self, cr, uid, ids, *args):
> -        result = super(sale_order, self).action_ship_create(cr, uid, ids, *args)
> +        picking_obj = self.pool['stock.picking']
> +        result = super(SaleOrder, self).action_ship_create(cr, uid, ids, *args)
>          for order in self.browse(cr, uid, ids, context={}):
> -            pids = [ x.id for x in order.picking_ids]
> -            self.pool.get('stock.picking').write(cr, uid, pids, {
> -                'elevator_partner_id': order.elevator_partner_id and order.elevator_partner_id.id or False,
> -                'elevator_invoice_id': order.elevator_invoice_id and order.elevator_invoice_id.id or False,
> -                'middleman_partner_id': order.middleman_partner_id and order.middleman_partner_id.id or False,
> -                'contract_id': order.contract_id and order.contract_id.id or False,
> -                'contact_id': order.contact_id and order.contact_id.id or False,
> -            })
> +            pids = [x.id for x in order.picking_ids]
> +            vals = {
> +                'elevator_partner_id': (order.elevator_partner_id and
> +                                        order.elevator_partner_id.id or False),
> +                'elevator_invoice_id': (order.elevator_invoice_id and
> +                                        order.elevator_invoice_id.id or False),
> +                'middleman_partner_id': (order.middleman_partner_id and
> +                                         order.middleman_partner_id.id or
> +                                         False),
> +                'contract_id': (order.contract_id and order.contract_id.id or
> +                                False),
> +                'contact_id': (order.contact_id and order.contact_id.id or
> +                               False),
> +                }
> +            picking_obj.write(cr, uid, pids, vals)
>          return result
> -        
> -        
> -    def action_invoice_create(self, cr, uid, ids, grouped=False, states=['confirmed', 'done', 'exception'], date_inv = False, context=None):
> -        invoice_id = super(sale_order, self).action_invoice_create(cr, uid, ids, grouped=grouped, states=states, date_inv = date_inv, context=context)
> -        inv_obj = self.pool.get('account.invoice')
> +
> +    def action_invoice_create(self, cr, uid, ids, grouped=False,
> +                              states=['confirmed', 'done', 'exception'],
> +                              date_inv=False, context=None):
> +        inv_obj = self.pool['account.invoice']
> +        invoice_id = super(SaleOrder, self).action_invoice_create(
> +            cr, uid, ids, grouped=grouped, states=states,
> +            date_inv=date_inv, context=context)
>          for order in self.browse(cr, uid, ids, context=context):
>              for invoice in order.invoice_ids:
> -                inv_obj.write(cr, uid, [invoice.id], {
> -                    'elevator_partner_id': order.elevator_partner_id and order.elevator_partner_id.id or False,
> -                    'elevator_invoice_id': order.elevator_invoice_id and order.elevator_invoice_id.id or False,
> -                    'middleman_partner_id': order.middleman_partner_id and order.middleman_partner_id.id or False,
> -                    'contract_id': order.contract_id and order.contract_id.id or False,
> -                    'contact_id': order.contact_id and order.contact_id.id or False,
> -                })
> +                vals = {
> +                    'elevator_partner_id': (order.elevator_partner_id and
> +                                            order.elevator_partner_id.id or
> +                                            False),
> +                    'elevator_invoice_id': (order.elevator_invoice_id and
> +                                            order.elevator_invoice_id.id or
> +                                            False),
> +                    'middleman_partner_id': (order.middleman_partner_id and
> +                                             order.middleman_partner_id.id or
> +                                             False),
> +                    'contract_id': (order.contract_id and
> +                                    order.contract_id.id or False),
> +                    'contact_id': (order.contact_id and order.contact_id.id or
> +                                   False),
> +                    }
> +                inv_obj.write(cr, uid, [invoice.id], vals)

propagar context

>          return invoice_id
> -    
> -    
> +
>      def onchange_partner_id(self, cr, uid, ids, part):
> -        
> -        res = super(sale_order, self).onchange_partner_id(cr, uid, ids, part)
> -        
> -        values = ('value' in res) and res['value'] or {'partner_invoice_id': False,
> -                                                     'partner_shipping_id': False,
> -                                                     'partner_order_id': False,
> -                                                     'payment_term': False,
> -                                                     'fiscal_position': False,
> -                                                     }
> -        
> +        partner_obj = self.pool['res.partner']
> +        contract_obj = self.pool['contract.contract']
> +        res = super(SaleOrder, self).onchange_partner_id(cr, uid, ids, part)
> +        values = (('value' in res) and
> +                  res['value'] or {'partner_invoice_id': False,
> +                                   'partner_shipping_id': False,
> +                                   'partner_order_id': False,
> +                                   'payment_term': False,
> +                                   'fiscal_position': False,
> +                                   })
>          values['contract_id'] = False
>          values['middleman_partner_id'] = False
>          values['elevator_partner_id'] = False
>          values['elevator_invoice_id'] = False
> -        
>          domain = {}
>          domain['contract_id'] = []
> -
>          if part:
> -            partner =  self.pool.get('res.partner').browse(cr, uid, part, context=None)
> -            contract_ids = self.pool.get('contract.contract').search(cr, uid, [('customer_id', '=', part), ('active_contract', '=', True)])
> -            contract_id = contract_ids and (len(contract_ids)==1) and contract_ids[0] or False
> -            
> +            condition = [('customer_id', '=', part),
> +                         ('active_contract', '=', True)]
> +            contract_ids = contract_obj.search(cr, uid, condition)
> +            contract_id = (contract_ids and (len(contract_ids) == 1) and
> +                           contract_ids[0] or False)
>              if contract_id:
> -                contract = self.pool.get('contract.contract').browse(cr, uid, contract_id)
> +                contract = contract_obj.browse(cr, uid, contract_id)
>                  values['contract_id'] = contract_id
> -                values['middleman_partner_id'] = contract.middleman_id and contract.middleman_id.id or False
> -                values['elevator_partner_id'] = contract.elevator_id and contract.elevator_id.id or False
> +                values['middleman_partner_id'] = (contract.middleman_id and
> +                                                  contract.middleman_id.id or
> +                                                  False)
> +                values['elevator_partner_id'] = (contract.elevator_id and
> +                                                 contract.elevator_id.id or
> +                                                 False)
>                  if contract.elevator_id:
> -                    addr = self.pool.get('res.partner').address_get(cr, uid, [contract.elevator_id.id], ['delivery', 'invoice'])
> -		    values['partner_shipping_id'] = addr['delivery']
> +                    addr = partner_obj.address_get(cr, uid,
> +                                                   [contract.elevator_id.id],
> +                                                   ['delivery', 'invoice'])
> +                    values['partner_shipping_id'] = addr['delivery']
>                      values['elevator_invoice_id'] = addr['invoice']
> -		    if values['partner_shipping_id']:
> -                        address =  self.pool.get('res.partner.address').browse(cr, uid, values['partner_shipping_id'], context=None)
> -                        values['contact_id'] = address and address.job_id and address.job_id.id or False
> -            
> +                    if values['partner_shipping_id']:
> +                        contact_id = values['partner_shipping_id']
> +                        contact = partner_obj.address_get(
> +                            cr, uid, [contact_id], ['contact'])
> +                        values['contact_id'] = contact['contact']
>              # Filtramos contrato por cliente
> -            domain['contract_id'] = [('customer_id','=', part)]
> -        
> +            domain['contract_id'] = [('customer_id', '=', part)]
>          return {'value': values, 'domain': domain}
> -    
> -    
> +
>      def onchange_contract_id(self, cr, uid, ids, contract):
>          if not contract:
> -            return {'value': {'elevator_partner_id': False, 'middleman_partner_id': False, 'elevator_invoice_id': False}}
> +            return {'value': {'elevator_partner_id': False,
> +                              'middleman_partner_id': False,
> +                              'elevator_invoice_id': False}}
>  
> -        contract_obj = self.pool.get('contract.contract')
> -        partner_obj = self.pool.get('res.partner')
> -        
> +        contract_obj = self.pool['contract.contract']
> +        partner_obj = self.pool['res.partner']
>          val = {}
> -        
>          domain = {}
>          domain['contract_id'] = []
> -        
>          contract = contract_obj.browse(cr, uid, contract)
>          partner = contract.customer_id or False
> -        middleman_partner_id = contract.middleman_id and contract.middleman_id.id or False
> -        elevator_partner_id = contract.elevator_id and contract.elevator_id.id or False
> -        elevator_invoice_id = False
> +        middleman_partner_id = (contract.middleman_id and
> +                                contract.middleman_id.id or False)
> +        elevator_partner_id = (contract.elevator_id and
> +                               contract.elevator_id.id or False)
>          if elevator_partner_id:
> -            addr = partner_obj.address_get(cr, uid, [elevator_partner_id], ['delivery', 'invoice'])
> +            addr = partner_obj.address_get(
> +                cr, uid, [elevator_partner_id], ['delivery', 'invoice'])
>              val['partner_shipping_id'] = addr['delivery']
>              val['elevator_invoice_id'] = addr['invoice']
>              if addr['delivery']:
> -                address =  self.pool.get('res.partner.address').browse(cr, uid, addr['delivery'], context=None)
> -                val['contact_id'] = address and address.job_id and address.job_id.id or False
> -
> +                contact = partner_obj.address_get(
> +                    cr, uid, [addr['delivery']], ['contact'])
> +                val['contact_id'] = contact['contact']
>          if partner:
> -            addr = partner_obj.address_get(cr, uid, [partner.id], ['invoice', 'contact'])
> -            pricelist = partner.property_product_pricelist and partner.property_product_pricelist.id or False
> -            payment_term = partner.property_payment_term and partner.property_payment_term.id or False
> -            fiscal_position = partner.property_account_position and partner.property_account_position.id or False
> +            addr = partner_obj.address_get(cr, uid, [partner.id],
> +                                           ['invoice', 'contact'])
> +            pricelist = (partner.property_product_pricelist and
> +                         partner.property_product_pricelist.id or False)
> +            payment_term = (partner.property_payment_term and
> +                            partner.property_payment_term.id or False)
> +            fiscal_position = (partner.property_account_position and
> +                               partner.property_account_position.id or False)
>              dedicated_salesman = partner.user_id and partner.user_id.id or uid
> -            
>              val['partner_id'] = partner.id
>              val['partner_invoice_id'] = addr['invoice']
>              val['partner_order_id'] = addr['contact']
>              val['payment_term'] = payment_term
>              val['fiscal_position'] = fiscal_position
>              val['user_id'] = dedicated_salesman
> -
>              if pricelist:
>                  val['pricelist_id'] = pricelist
> -                
>              # Filtramos contrato por cliente
> -            domain['contract_id'] = [('customer_id','=', partner.id)]
> -
> +            domain['contract_id'] = [('customer_id', '=', partner.id)]
>          val['middleman_partner_id'] = middleman_partner_id
>          val['elevator_partner_id'] = elevator_partner_id
> -
>          return {'value': val, 'domain': domain}
> -    
> -    
> +
>      def onchange_elevator_partner_id(self, cr, uid, ids, elevator_partner):
> +        partner_obj = self.pool['res.partner']
>          if not elevator_partner:
>              return {'value': {'elevator_invoice_id': False}}
> -
>          values = {}
> -        addr = self.pool.get('res.partner').address_get(cr, uid, [elevator_partner], ['delivery', 'invoice'])
> +        addr = partner_obj.address_get(cr, uid, [elevator_partner],
> +                                       ['delivery', 'invoice'])
>          values['partner_shipping_id'] = addr['delivery']
>          values['elevator_invoice_id'] = addr['invoice']
>          if addr['delivery']:
> -            address =  self.pool.get('res.partner.address').browse(cr, uid, addr['delivery'], context=None)
> -            values['contact_id'] = address and address.job_id and address.job_id.id or False
> -
> +            contact = partner_obj.address_get(cr, uid, [addr['delivery']],
> +                                              ['contact'])
> +            values['contact_id'] = contact['contact']
>          return {'value': values}
>  
> -
>      def onchange_partner_shipping_id(self, cr, uid, ids, partner_shipping_id):
> +        partner_obj = self.pool['res.partner']
>          contact_id = False
>          if partner_shipping_id:
> -            address =  self.pool.get('res.partner.address').browse(cr, uid, partner_shipping_id, context=None)
> -            contact_id = address and address.job_id and address.job_id.id or False
> +            contact = partner_obj.address_get(cr, uid, [partner_shipping_id],
> +                                              ['contact'], context=None)
> +            contact_id = contact['contact']
>          return {'value': {'contact_id': contact_id}}
> -        
> -sale_order()
> -
> 
> === renamed file 'dos_sales_elevator_partner/stock.py' => 'dos_sales_elevator_partner/models/stock.py'
> --- dos_sales_elevator_partner/stock.py	2014-06-11 10:23:47 +0000
> +++ dos_sales_elevator_partner/models/stock.py	2014-06-26 08:48:12 +0000
> @@ -19,123 +19,146 @@
>  #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
>  #
>  ##############################################################################
> -
> -from osv import fields, osv
> -import decimal_precision as dp
> +from openerp.osv import orm, fields
> +from openerp.addons import decimal_precision as dp
>  import time
>  
> -class stock_picking(osv.osv):
> -	"""Inherit stock_picking to add elevator partner field"""
> -
> -	_inherit ="stock.picking"
> -	
> -	_columns = {
> -		'ref': fields.char('Reference', size=64),
> -		'elevator_partner_id': fields.many2one('res.partner', 'Elevator', states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}, select=True),
> -		'elevator_invoice_id': fields.many2one('res.partner.address', 'Elevator Invoice Address', states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}, help="Elevator invoice address for current picking."),
> -		'middleman_partner_id': fields.many2one('res.partner', 'Middleman', states={'done': [('readonly', True)], 'cancel': [('readonly', True)]}, select=True),
> -	}
> -	
> -	def _invoice_line_hook(self, cr, uid, move_line, invoice_line_id):
> -		'''Call after the creation of the invoice line'''
> -		if move_line:
> -			self.pool.get('account.invoice.line').write(cr, uid, [invoice_line_id], {
> -				'contract_id': move_line.contract_id and move_line.contract_id.id or False,
> -				'contract_annexe_id': move_line.contract_annexe_id and move_line.contract_annexe_id.id or False,
> -				'stock_move_id': move_line.id,
> -			}, context=None)			
> -			
> -			
> -		return super(stock_picking, self)._invoice_line_hook(cr, uid, move_line, invoice_line_id)
> -	
> -	
> -	def action_invoice_create(self, cr, uid, ids, journal_id=False, group=False, type='out_invoice', context=None):
> -	
> -		res = super(stock_picking, self).action_invoice_create(cr, uid, ids, journal_id=journal_id, group=group, type=type, context=context)
> -	
> -		for picking_id, invoice_id in res.items():
> -			picking = self.browse(cr, uid, picking_id, context=context)
> -			
> -			invoice_ids = self.pool.get('account.invoice').search(cr, uid, [('id', '=', invoice_id)], limit=1)
> -			
> -			if invoice_ids:
> -				# Write the sale_order_type info into the invoice.
> -				self.pool.get('account.invoice').write(cr, uid, [invoice_id], {
> -					'elevator_partner_id': picking.elevator_partner_id and picking.elevator_partner_id.id or False,
> -					'middleman_partner_id': picking.middleman_partner_id and picking.middleman_partner_id.id or False,
> -					'contract_id': picking.contract_id and picking.contract_id.id or False,
> -					'contact_id': picking.contact_id and picking.contact_id.id or False,
> -				}, context=context)
> -					
> -		return res
> -	
> -	def onchange_partner_in(self, cr, uid, context=None, partner_id=None):
> -		
> -		res = super(stock_picking, self).onchange_partner_in(cr, uid, context, partner_id)
> -		
> -		values = ('value' in res) and res['value'] or {}
> -		
> -		values['contract_id'] = False
> -		values['middleman_partner_id'] = False
> -		values['elevator_partner_id'] = False
> -		values['elevator_invoice_id'] = False
> -		
> -		if partner_id:
> -			address = self.pool.get('res.partner.address').browse(cr, uid, partner_id)
> -			contract_ids = self.pool.get('contract.contract').search(cr, uid, [('customer_id', '=', address.partner_id.id), ('active_contract', '=', True)], limit=1)
> -			contract_id = contract_ids and contract_ids[0] or False
> -			
> -			if contract_id:
> -				contract = self.pool.get('contract.contract').browse(cr, uid, contract_id)
> -				values['contract_id'] = contract_id
> -				values['middleman_partner_id'] = contract.middleman_id and contract.middleman_id.id or False
> -				values['elevator_partner_id'] = contract.elevator_id and contract.elevator_id.id or False
> -				if contract.elevator_id:
> -					addr = self.pool.get('res.partner').address_get(cr, uid, [contract.elevator_id.id], ['invoice'])
> -					values['elevator_invoice_id'] = addr['invoice']				
> -
> -		return {'value': values}
> -	
> -	
> -	def onchange_contract_id(self, cr, uid, ids, contract):
> -		if not contract:
> -			return {'value': {'elevator_partner_id': False, 'middleman_partner_id': False, 'elevator_invoice_id': False}}
> -
> -		contract = self.pool.get('contract.contract').browse(cr, uid, contract)
> -		middleman_partner_id = contract.middleman_id and contract.middleman_id.id or False
> -		elevator_partner_id = contract.elevator_id and contract.elevator_id.id or False
> -		if elevator_partner_id:
> -			addr = self.pool.get('res.partner').address_get(cr, uid, [elevator_partner_id], ['invoice'])
> -			elevator_invoice_id = addr['invoice']
> -
> -		val = {
> -			'middleman_partner_id': middleman_partner_id,
> -			'elevator_partner_id': elevator_partner_id,
> -			'elevator_invoice_id': elevator_invoice_id,
> -		}
> -
> -		return {'value': val}
> -	
> -	
> -	def onchange_elevator_partner_id(self, cr, uid, ids, elevator_partner):
> -		if not elevator_partner:
> -			return {'value': {'elevator_invoice_id': False}}
> -
> -		addr = self.pool.get('res.partner').address_get(cr, uid, [elevator_partner], ['invoice'])
> -
> -		return {'value': {'elevator_invoice_id': addr['invoice']}}
> -			
> -stock_picking()
> -
> -
> -class stock_move(osv.osv):
> -
> -	_inherit ="stock.move"
> -	
> -	_columns = {
> -		'ref': fields.char('Reference', size=64),
> -		'contract_id': fields.many2one('contract.contract', 'Contract', select=True),
> -		'contract_annexe_id': fields.many2one('contract.annexe', 'Annexe', select=True),
> -	}
> -			
> -stock_move()
> +
> +class StockPicking(orm.Model):
> +    """Inherit stock_picking to add elevator partner field"""
> +    _inherit = "stock.picking"
> +
> +    _columns = {
> +        'ref': fields.char('Reference', size=64),
> +        'elevator_partner_id':
> +            fields.many2one('res.partner', 'Elevator', select=True,
> +                            states={'done': [('readonly', True)],
> +                                    'cancel': [('readonly', True)]}),
> +        'elevator_invoice_id':
> +            fields.many2one('res.partner.address', 'Elevator Invoice Address',
> +                            states={'done': [('readonly', True)],
> +                                    'cancel': [('readonly', True)]},
> +                            help="Elevator invoice address for current "
> +                            "picking."),
> +        'middleman_partner_id':
> +            fields.many2one('res.partner', 'Middleman', select=True,
> +                            states={'done': [('readonly', True)],
> +                                    'cancel': [('readonly', True)]}),
> +    }
> +
> +    def _invoice_line_hook(self, cr, uid, move_line, invoice_line_id):
> +        '''Call after the creation of the invoice line'''
> +        invoice_line_obj = self.pool['account.invoice.line']
> +        if move_line:
> +            vals = {'contract_id': (move_line.contract_id and
> +                                    move_line.contract_id.id or
> +                                    False),
> +                    'contract_annexe_id': (move_line.contract_annexe_id and
> +                                           move_line.contract_annexe_id.id or
> +                                           False),
> +                    'stock_move_id': move_line.id,
> +                    }
> +            invoice_line_obj.write(cr, uid, [invoice_line_id], vals,
> +                                   context=None)
> +        return super(StockPicking, self)._invoice_line_hook(cr, uid, move_line,
> +                                                            invoice_line_id)
> +
> +    def action_invoice_create(self, cr, uid, ids, journal_id=False,
> +                              group=False, type='out_invoice', context=None):
> +        invoice_obj = self.pool['account.invoice']
> +        res = super(StockPicking, self).action_invoice_create(
> +            cr, uid, ids, journal_id=journal_id, group=group, type=type,
> +            context=context)
> +        for picking_id, invoice_id in res.items():
> +            picking = self.browse(cr, uid, picking_id, context=context)
> +            condition = [('id', '=', invoice_id)]
> +            invoice_ids = invoice_obj.search(cr, uid, condition, limit=1)

propagar context

> +            if invoice_ids:
> +                # Write the sale_order_type info into the invoice.
> +                vals = {
> +                    'elevator_partner_id': (picking.elevator_partner_id and
> +                                            picking.elevator_partner_id.id or
> +                                            False),
> +                    'middleman_partner_id': (picking.middleman_partner_id and
> +                                             picking.middleman_partner_id.id or
> +                                             False),
> +                    'contract_id': (picking.contract_id and
> +                                    picking.contract_id.id or False),
> +                    'contact_id': (picking.contact_id and picking.contact_id.id
> +                                   or False),
> +                    }
> +                invoice_obj.write(cr, uid, [invoice_id], vals, context=context)
> +        return res
> +
> +    def onchange_partner_in(self, cr, uid, context=None, partner_id=None):
> +        contract_obj = self.pool['contract.contract']
> +        partner_obj = self.pool['res.partner']
> +        res = super(StockPicking, self).onchange_partner_in(
> +            cr, uid, context, partner_id)
> +        values = ('value' in res) and res['value'] or {}
> +        values['contract_id'] = False
> +        values['middleman_partner_id'] = False
> +        values['elevator_partner_id'] = False
> +        values['elevator_invoice_id'] = False
> +        if partner_id:
> +            condition = [('customer_id', '=', partner_id),
> +                         ('active_contract', '=', True), ]
> +            contract_ids = contract_obj.search(cr, uid, condition, limit=1)

propagar context

> +            contract_id = contract_ids and contract_ids[0] or False
> +            if contract_id:
> +                contract = contract_obj.browse(cr, uid, contract_id)

propagar context

> +                values['contract_id'] = contract_id
> +                values['middleman_partner_id'] = (contract.middleman_id and
> +                                                  contract.middleman_id.id or
> +                                                  False)
> +                values['elevator_partner_id'] = (contract.elevator_id and
> +                                                 contract.elevator_id.id or
> +                                                 False)
> +                if contract.elevator_id:
> +                    addr = partner_obj.address_get(
> +                        cr, uid, [contract.elevator_id.id], ['invoice'])
> +                    values['elevator_invoice_id'] = addr['invoice']
> +        return {'value': values}
> +
> +    def onchange_contract_id(self, cr, uid, ids, contract):
> +        contract_obj = self.pool['contract.contract']
> +        partner_obj = self.pool['res.partner']
> +        if not contract:
> +            return {'value': {'elevator_partner_id': False,
> +                              'middleman_partner_id': False,
> +                              'elevator_invoice_id': False}}
> +        contract = contract_obj.browse(cr, uid, contract)
> +        middleman_partner_id = (contract.middleman_id and
> +                                contract.middleman_id.id or False)
> +        elevator_partner_id = (contract.elevator_id and
> +                               contract.elevator_id.id or False)
> +        if elevator_partner_id:
> +            addr = partner_obj.address_get(
> +                cr, uid, [elevator_partner_id], ['invoice'])
> +            elevator_invoice_id = addr['invoice']
> +        val = {
> +            'middleman_partner_id': middleman_partner_id,
> +            'elevator_partner_id': elevator_partner_id,
> +            'elevator_invoice_id': elevator_invoice_id,
> +        }
> +        return {'value': val}
> +
> +    def onchange_elevator_partner_id(self, cr, uid, ids, elevator_partner):
> +        partner_obj = self.pool['res.partner']
> +        if not elevator_partner:
> +            return {'value': {'elevator_invoice_id': False}}
> +        addr = partner_obj.address_get(
> +            cr, uid, [elevator_partner], ['invoice'])
> +        return {'value': {'elevator_invoice_id': addr['invoice']}}
> +
> +
> +class StockMove(orm.Model):
> +    _inherit = "stock.move"
> +
> +    _columns = {
> +        'ref': fields.char('Reference', size=64),
> +        'contract_id': fields.many2one('contract.contract', 'Contract',
> +                                       select=True),
> +        'contract_annexe_id': fields.many2one('contract.annexe', 'Annexe',
> +                                              select=True),
> +    }
> 
> === added directory 'dos_sales_elevator_partner/views'
> === renamed file 'dos_sales_elevator_partner/account_view.xml' => 'dos_sales_elevator_partner/views/account_view.xml'
> --- dos_sales_elevator_partner/account_view.xml	2014-06-11 10:23:47 +0000
> +++ dos_sales_elevator_partner/views/account_view.xml	2014-06-26 08:48:12 +0000
> @@ -5,7 +5,6 @@
>              <field name="name">account.invoice.form.add_elevator_partner</field>
>              <field name="model">account.invoice</field>
>              <field name="inherit_id" ref="account.invoice_form"/>
> -            <field name="type">form</field>
>              <field name="arch" type="xml">
>                  <field name="date_invoice" position="before">
>                      <field name="contract_id" on_change="onchange_contract_id(contract_id)" domain="['|', ('customer_id','=', partner_id), ('elevator_id','=', partner_id)]" />
> 
> === renamed file 'dos_sales_elevator_partner/sale_view.xml' => 'dos_sales_elevator_partner/views/sale_view.xml'
> --- dos_sales_elevator_partner/sale_view.xml	2014-06-11 10:23:47 +0000
> +++ dos_sales_elevator_partner/views/sale_view.xml	2014-06-26 08:48:12 +0000
> @@ -5,23 +5,21 @@
>        <field name="name">sale.order.form.add_elevator_partner</field>
>        <field name="model">sale.order</field>
>        <field name="inherit_id" ref="sale.view_order_form"/>
> -      <field name="type">form</field>
>        <field name="arch" type="xml">
> -	<field name="project_id" position="after">
> -	  <field name="contract_id" on_change="onchange_contract_id(contract_id)" />
> -	  <field name="middleman_partner_id" />
> -	  <field name="elevator_partner_id" domain="[('tipo_cliente','=','ascensorista')]" on_change="onchange_elevator_partner_id(elevator_partner_id)" />
> -	  <field name="elevator_invoice_id" domain="[('partner_id','=',elevator_partner_id)]" groups="base.group_extended"/>
> -	</field>
> -
> -	<field name="partner_shipping_id" position="replace">
> -	  <field name="partner_shipping_id" domain="['|', ('partner_id','=',partner_id), ('partner_id','=',elevator_partner_id)]" on_change="onchange_partner_shipping_id(partner_shipping_id)" groups="base.group_extended"/>
> -	</field>
> -
> -	<field name="partner_order_id" position="replace">
> -	  <field name="partner_order_id" domain="['|', ('partner_id','=',partner_id), ('partner_id','=',elevator_partner_id)]" invisible="1" />
> -	</field>
> -
> +            <field name="project_id" position="after">
> +                <field name="contract_id" on_change="onchange_contract_id(contract_id)" />
> +                <field name="middleman_partner_id" />
> +                <field name="elevator_partner_id" domain="[('tipo_cliente','=','ascensorista')]" on_change="onchange_elevator_partner_id(elevator_partner_id)" />
> +                <field name="elevator_invoice_id" domain="[('partner_id','=',elevator_partner_id)]" groups="base.group_extended"/>
> +            </field>
> +            <field name="partner_shipping_id" position="attributes">
> +                <attribute name="domain">['|', ('partner_id','=',partner_id), ('partner_id','=',elevator_partner_id)]</attribute>
> +                <attribute name="on_change">onchange_partner_shipping_id(partner_shipping_id)</attribute>
> +            </field>
> +            <field name="partner_order_id" position="attributes">
> +                <attribute name="domain">['|', ('partner_id','=',partner_id), ('partner_id','=',elevator_partner_id)]</attribute>
> +                <attribute name="invisible">1</attribute>
> +            </field>
>        </field>
>      </record>
>    </data>
> 
> === renamed file 'dos_sales_elevator_partner/stock_view.xml' => 'dos_sales_elevator_partner/views/stock_view.xml'
> --- dos_sales_elevator_partner/stock_view.xml	2014-06-11 10:23:47 +0000
> +++ dos_sales_elevator_partner/views/stock_view.xml	2014-06-26 08:48:12 +0000
> @@ -5,13 +5,12 @@
>              <field name="name">stock.picking.out.form.add_elevator_partner</field>
>              <field name="model">stock.picking</field>
>              <field name="inherit_id" ref="stock.view_picking_out_form"/>
> -            <field name="type">form</field>
>              <field name="arch" type="xml">
>                  <field name="company_id" position="after">
>                      <field name="contract_id" on_change="onchange_contract_id(contract_id)" domain="['|', ('customer_address_id','=', address_id), ('elevator_address_id','=', address_id)]" />
>                      <field name="elevator_partner_id" domain="[('tipo_cliente','=','ascensorista')]" on_change="onchange_elevator_partner_id(elevator_partner_id)" />
> -					<field name="middleman_partner_id" />
> -					<field name="elevator_invoice_id" domain="[('partner_id','=',elevator_partner_id)]" groups="base.group_extended"/>
> +                    <field name="middleman_partner_id" />
> +                    <field name="elevator_invoice_id" domain="[('partner_id','=',elevator_partner_id)]" groups="base.group_extended"/>
>                  </field>
>              </field>
>          </record>
> 


-- 
https://code.launchpad.net/~alfredodelafuente/avanzosc/dos_sales_elevator_partner/+merge/224476
Your team Avanzosc_security is subscribed to branch lp:~avanzosc-security-team/avanzosc/72horas.


References