avanzosc team mailing list archive
-
avanzosc team
-
Mailing list archive
-
Message #00510
Re: [Merge] lp:~alfredodelafuente/avanzosc/dos_sales_elevator_partner into lp:~avanzosc-security-team/avanzosc/72horas
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>
>
--
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.
Follow ups
References