← 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

 

Buenos días Pedro.

Ya está corregido.

Un saludo

El 26/06/14 01:39, Pedro Manuel Baeza escribió:
> Review: Needs Fixing code review
>
> Comentarios inline.
>
> 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-25 16:19:57 +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-25 16:19:57 +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-25 16:19:57 +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-25 16:19:57 +0000
>> @@ -20,78 +20,84 @@
>>   #
>>   ##############################################################################
>>   
>> -from osv import fields, osv
>> -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()
>> +from openerp.osv import orm, fields
>> +from . import decimal_precision as dp
> Este import es from openerp.addons import decimal_precision as dp
>
>> +from . import time
> Ésta es una librería estándar, entonces no hay que poner el from . Sería simplemente import time.
>
>> +
>> +
>> +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):
>> +        if not contract:
>> +            return {'value': {'elevator_partner_id': False,
>> +                              'middleman_partner_id': False}}
>> +        contract = self.pool.get('contract.contract').browse(cr, uid, contract)
> Poner self.pool[]
>
>> +        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-25 16:19:57 +0000
>> @@ -19,167 +19,204 @@
>>   #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
>>   #
>>   ##############################################################################
>> -
>> -from osv import fields, osv
>> -import decimal_precision as dp
>> -import time
>> -
>> -class sale_order(osv.osv):
>> +from openerp.osv import orm, fields
>> +from . import decimal_precision as dp
> Ídem que en el otro archivo.
>
>> +from . import time
>> +
>> +
>> +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.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),
>>       }
>> -
>> +
>>       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)
>> +
>> +    def action_invoice_create(self, cr, uid, ids, grouped=False,
>> +                              states=['confirmed', 'done', 'exception'],
>> +                              date_inv=False, context=None):
>>           inv_obj = self.pool.get('account.invoice')
> Utilizar self.pool[]
>
>> +        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)
>>           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']
>> +        address_obj = self.pool['res.partner.address']
> Este modelo ya no existe. Hay que eliminarlo y sustituirlo por res.partner. Hay que apuntar en la tarea del sistema que luego hay que hacer migración de los datos.
>
>> +        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']:
>> +                        address = address_obj.browse(
> Hay que sustituir esto como ya no existe el modelo de dirección. Mirar si address_get devuelve un id o ya directamente el browse_record.
>
>> +                            cr, uid, values['partner_shipping_id'],
>> +                            context=None)
>> +                        values['contact_id'] = (address and address.job_id and
>> +                                                address.job_id.id or False)
>>               # 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']
>> +        address_obj = self.pool['res.partner.address']
> Ídem.
>
>>           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
>> -
>> +                address = address_obj.browse(cr, uid, addr['delivery'],
> Ídem.
>
>> +                                             context=None)
>> +                val['contact_id'] = (address and address.job_id and
>> +                                     address.job_id.id or False)
>>           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']
>> +        address_obj = self.pool['res.partner.address']
> Ídem.
>
>>           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
>> -
>> +            address = address_obj.browse(cr, uid, addr['delivery'],
> Ídem.
>
>> +                                         context=None)
>> +            values['contact_id'] = (address and address.job_id and
>> +                                    address.job_id.id or False)
>>           return {'value': values}
>>   
>> -
>>       def onchange_partner_shipping_id(self, cr, uid, ids, partner_shipping_id):
>> +        address_obj = self.pool['res.partner.address']
>>           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
>> +            address = address_obj.browse(cr, uid, partner_shipping_id,
> Ídem
>
>> +                                         context=None)
>> +            contact_id = (address and address.job_id and address.job_id.id or
>> +                          False)
>>           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-25 16:19:57 +0000
>> @@ -19,123 +19,148 @@
>>   #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
>>   #
>>   ##############################################################################
>> -
>> -from osv import fields, osv
>> -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()
>> +from openerp.osv import orm, fields
>> +from . import decimal_precision as dp
> Ídem.
>
>> +from . import time
>> +
>> +
>> +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)
>> +            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):
>> +        address_obj = self.pool['res.partner.address']
>> +        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:
>> +            address = address_obj.browse(cr, uid, partner_id)
>> +            condition = [('customer_id', '=', address.partner_id.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['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']
> Si address_get devuelve un browse_record, esto no sería válido.
>
>> +        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-25 16:19:57 +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-25 16:19:57 +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-25 16:19:57 +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>
>>
>


-- 
*Alfredo de la Fuente Muniain*
Responsable Equipo Técnico Avanzosc S.L.

Telefono: 943.02.69.02
Email.....: alfredodelafuente@xxxxxxxxxxx
Skype....: alfredo.avanzosc



www.avanzosc.es

El contenido de esta comunicación y de toda su documentación anexa es 
confidencial y se dirige exclusivamente a su destinatario. El uso no 
autorizado de esta información está prohibido por la legislación 
vigente. Si usted no es el destinatario le rogamos nos lo indique, no 
comunique su contenido a terceros y proceda a su destrucción. Disculpe 
las molestias que le haya ocasionado la recepción indebida de este 
e-mail. Sus datos figuran en un fichero cuyo titular es Avanzosc, S.L., 
a quien usted puede dirigirse para ejercer sus derechos de acceso, 
rectificación, cancelación y oposición en Julio Urkijo, 32, 20720, 
Azkoitia (Gipuzkoa), Tef. 943 02 69 02 - administracion@xxxxxxxxxxxx
Komunikazio honen edukia eta dokumentazio erantsia konfidentziala da eta 
hartzaileak bakarrik jaso beharko luke. Indarrean dagoen legeriak 
debekatu egiten du bertan eskainitako informazioa baimenik gabe 
erabiltzea. Komunikazioa zuri iritsi bazaizu, baina zu ez bazara 
hartzailea, mesedez, guri jakinarazi, eta jasotako informazioa ez inori 
jakinarazi eta suntsitu. Barkatu okerreko email hau jasotzeak eragindako 
eragozpenak. Zure datuak Avanzosc, S.L. enpresaren fitxategietan sartuta 
daude. Zure datuak atzitzea eska dezakezu, bai eta, datuak zuzentzea, 
ezereztea eta tratamenduari aurka egitea ere. Horretarako, enpresara jo 
dezakezu, helbide honetan: Julio Urkijo, 32, 20720, Azkoitia (Gipuzkoa), 
telefonoa: 943 02 69 02 - administracion@xxxxxxxxxxxx
This message and all documents attached to it are confidential and 
intended only for the person or entity to which it is addressed. Any use 
of this information by unauthorised persons is prohibited under current 
legislation. If you received this message by error, please advise us, 
destroy it and refrain from communicating its contents to third parties. 
We apologise for any inconvenience receiving this email improperly may 
cause to you. Your personal data are included in a file owned by 
Avanzosc, S.L. If you want to exercise your rights of access, 
correction, erasure and objection you can contact the Controller at 
Julio Urkijo, 32, 20720, Azkoitia (Gipuzkoa), T: 943 02 69 02 – 
administracion@xxxxxxxxxxxx


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