You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
3.4 KiB
97 lines
3.4 KiB
# -*- encoding: utf-8 -*-
|
|
##############################################################################
|
|
#
|
|
# OpenERP, Open Source Management Solution
|
|
# This module copyright (C) 2013 Savoir-faire Linux
|
|
# (<http://www.savoirfairelinux.com>).
|
|
#
|
|
# 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/>.
|
|
#
|
|
##############################################################################
|
|
|
|
import time
|
|
from openerp.osv import orm, fields
|
|
|
|
|
|
class res_partner(orm.Model):
|
|
"""
|
|
Inherits partner and adds function_ids : List of functions
|
|
"""
|
|
_inherit = 'res.partner'
|
|
|
|
def onchange_partner_function(self, cr, uid, ids, part, context=None):
|
|
partner_pool = self.pool['res.partner']
|
|
if not part:
|
|
return {'value': None}
|
|
partner_ids = partner_pool.search(cr, uid, [('id', '=', part)])
|
|
function_ids = partner_pool.browse(
|
|
cr, uid, partner_ids, context=context)[0].function_ids
|
|
result = []
|
|
if function_ids:
|
|
for line in function_ids:
|
|
result.append(line.id)
|
|
dom = {'function_id': [('id', 'in', result)]}
|
|
return {'domain': dom}
|
|
|
|
def _get_history_lines(self, cr, uid, ids, name, arg, context=None):
|
|
res = {}
|
|
res_partner_pool = self.pool.get('res.partner')
|
|
for record in self.browse(cr, uid, ids, context=context):
|
|
|
|
if record.is_company:
|
|
return res
|
|
contact_ids = res_partner_pool.search(
|
|
cr, uid, [
|
|
('contact_id', '=', record.id),
|
|
('active', '=', False),
|
|
], context=context
|
|
)
|
|
res[record.id] = [
|
|
x.id for x in res_partner_pool.browse(cr, uid, contact_ids)
|
|
if x.end_date and x.end_date <= time.strftime('%Y-%m-%d')
|
|
]
|
|
return res
|
|
|
|
_columns = {
|
|
'function_ids': fields.many2many(
|
|
'res.partner.function',
|
|
'function_partner_rel',
|
|
'partner_id',
|
|
'function_id',
|
|
'Functions',
|
|
),
|
|
'start_date': fields.date('Start date'),
|
|
'end_date': fields.date('End date'),
|
|
'naming': fields.char(
|
|
'Naming',
|
|
help="Naming.",
|
|
),
|
|
'function_id': fields.many2one(
|
|
'res.partner.function',
|
|
'Position Occupied',
|
|
),
|
|
'other_contact_history_ids': fields.function(
|
|
_get_history_lines,
|
|
relation="res.partner",
|
|
method=True,
|
|
type="one2many",
|
|
),
|
|
# Replace company by Organisation
|
|
'use_parent_address': fields.boolean(
|
|
'Use Organisation Address',
|
|
help="Select this if you want to set organisation's address "
|
|
"information for this contact",
|
|
),
|
|
|
|
}
|