Alfredo has proposed merging lp:~alfredodelafuente/avanzosc/dos_sales_elevator_partner into lp:~avanzosc-security-team/avanzosc/72horas.
Requested reviews: Avanzosc_security (avanzosc-security-team) For more details, see: https://code.launchpad.net/~alfredodelafuente/avanzosc/dos_sales_elevator_partner/+merge/224476 -- https://code.launchpad.net/~alfredodelafuente/avanzosc/dos_sales_elevator_partner/+merge/224476 Your team Avanzosc_security is requested to review the proposed merge of lp:~alfredodelafuente/avanzosc/dos_sales_elevator_partner into lp:~avanzosc-security-team/avanzosc/72horas.
=== 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 +from . 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) + 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 +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') + 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'] + 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( + 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'] 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'], + 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'] 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'], + 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, + 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 +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'] + 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>
-- Mailing list: https://launchpad.net/~avanzosc Post to : [email protected] Unsubscribe : https://launchpad.net/~avanzosc More help : https://help.launchpad.net/ListHelp

