Browse Source

[MERGE] Merge branch lp:~invitu/openerp-asterisk-connector/openerp-asterisk-connector_7_0 with minor modifications :

- move function _generic_reformat_phonenumbers to asterisk.common
- add "Dial" button on CRM claim form
Thanks to Invitu for this contribution !
pull/7/head
Alexis de Lattre 12 years ago
parent
commit
630202bd59
  1. 45
      asterisk_click2dial/asterisk_click2dial.py
  2. 4
      asterisk_click2dial/wizard/reformat_all_phonenumbers.py
  3. 5
      asterisk_click2dial_crm/__openerp__.py
  4. 4
      asterisk_click2dial_crm/asterisk_click2dial_crm.py
  5. 1
      asterisk_click2dial_crm_claim/__init__.py
  6. 10
      asterisk_click2dial_crm_claim/__openerp__.py
  7. 49
      asterisk_click2dial_crm_claim/asterisk_click2dial_crm_claim.py
  8. 29
      asterisk_click2dial_crm_claim/crm_claim_view.xml

45
asterisk_click2dial/asterisk_click2dial.py

@ -422,28 +422,7 @@ class asterisk_common(orm.AbstractModel):
#print "RESULT generic_phonenumber_to_e164", result #print "RESULT generic_phonenumber_to_e164", result
return result return result
class res_partner(osv.osv):
_name = 'res.partner'
_inherit = ['res.partner', 'asterisk.common']
def format_phonenumber_to_e164(self, cr, uid, ids, name, arg, context=None):
return self.generic_phonenumber_to_e164(cr, uid, ids, [('phone', 'phone_e164'), ('mobile', 'mobile_e164'), ('fax', 'fax_e164')], context=context)
_columns = {
'phone_e164': fields.function(format_phonenumber_to_e164, type='char', size=64, string='Phone in E.164 format', readonly=True, multi="e164", store={
'res.partner': (lambda self, cr, uid, ids, c={}: ids, ['phone'], 10),
}),
'mobile_e164': fields.function(format_phonenumber_to_e164, type='char', size=64, string='Mobile in E.164 format', readonly=True, multi="e164", store={
'res.partner': (lambda self, cr, uid, ids, c={}: ids, ['mobile'], 10),
}),
'fax_e164': fields.function(format_phonenumber_to_e164, type='char', size=64, string='Fax in E.164 format', readonly=True, multi="e164", store={
'res.partner': (lambda self, cr, uid, ids, c={}: ids, ['fax'], 10),
}),
}
def _generic_reformat_phonenumbers(self, cr, uid, vals, phonefields=['phone', 'fax', 'mobile'], context=None):
def _generic_reformat_phonenumbers(self, cr, uid, vals, phonefields=['phone', 'partner_phone', 'fax', 'mobile'], context=None):
"""Reformat phone numbers in international format i.e. +33141981242""" """Reformat phone numbers in international format i.e. +33141981242"""
if any([vals.get(field) for field in phonefields]): if any([vals.get(field) for field in phonefields]):
user = self.pool['res.users'].browse(cr, uid, uid, context=context) user = self.pool['res.users'].browse(cr, uid, uid, context=context)
@ -466,6 +445,28 @@ class res_partner(osv.osv):
return vals return vals
class res_partner(osv.osv):
_name = 'res.partner'
_inherit = ['res.partner', 'asterisk.common']
def format_phonenumber_to_e164(self, cr, uid, ids, name, arg, context=None):
return self.generic_phonenumber_to_e164(cr, uid, ids, [('phone', 'phone_e164'), ('mobile', 'mobile_e164'), ('fax', 'fax_e164')], context=context)
_columns = {
'phone_e164': fields.function(format_phonenumber_to_e164, type='char', size=64, string='Phone in E.164 format', readonly=True, multi="e164", store={
'res.partner': (lambda self, cr, uid, ids, c={}: ids, ['phone'], 10),
}),
'mobile_e164': fields.function(format_phonenumber_to_e164, type='char', size=64, string='Mobile in E.164 format', readonly=True, multi="e164", store={
'res.partner': (lambda self, cr, uid, ids, c={}: ids, ['mobile'], 10),
}),
'fax_e164': fields.function(format_phonenumber_to_e164, type='char', size=64, string='Fax in E.164 format', readonly=True, multi="e164", store={
'res.partner': (lambda self, cr, uid, ids, c={}: ids, ['fax'], 10),
}),
}
def create(self, cr, uid, vals, context=None): def create(self, cr, uid, vals, context=None):
vals_reformated = self._generic_reformat_phonenumbers(cr, uid, vals, context=context) vals_reformated = self._generic_reformat_phonenumbers(cr, uid, vals, context=context)
return super(res_partner, self).create(cr, uid, vals_reformated, context=context) return super(res_partner, self).create(cr, uid, vals_reformated, context=context)

4
asterisk_click2dial/wizard/reformat_all_phonenumbers.py

@ -42,9 +42,9 @@ class reformat_all_phonenumbers(osv.osv_memory):
phonenumbers_not_reformatted = '' phonenumbers_not_reformatted = ''
for partner in partner_obj.read(cr, uid, all_partner_ids, ['name'] + phonefields, context=context): for partner in partner_obj.read(cr, uid, all_partner_ids, ['name'] + phonefields, context=context):
init_partner = partner.copy() init_partner = partner.copy()
# partner is _updated_ by the fonction _reformat_phonenumbers()
# partner is _updated_ by the fonction _generic_reformat_phonenumbers()
try: try:
partner_obj._reformat_phonenumbers(cr, uid, partner, context=context)
partner_obj._generic_reformat_phonenumbers(cr, uid, partner, context=context)
except Exception, e: except Exception, e:
#raise osv.except_osv(_('Error :'), _("Problem on partner '%s'. Error message: %s" % (init_partner.get('name'), e[1]))) #raise osv.except_osv(_('Error :'), _("Problem on partner '%s'. Error message: %s" % (init_partner.get('name'), e[1])))
phonenumbers_not_reformatted += "Problem on partner '%s'. Error message: %s" % (init_partner.get('name'), e[1]) + "\n" phonenumbers_not_reformatted += "Problem on partner '%s'. Error message: %s" % (init_partner.get('name'), e[1]) + "\n"

5
asterisk_click2dial_crm/__openerp__.py

@ -53,9 +53,8 @@
'asterisk_click2dial', 'asterisk_click2dial',
'crm', 'crm',
], ],
"init_xml": [],
"demo_xml": [],
"update_xml": [
"demo": [],
"data": [
'wizard/open_calling_partner_view.xml', 'wizard/open_calling_partner_view.xml',
'wizard/create_crm_phonecall_view.xml', 'wizard/create_crm_phonecall_view.xml',
'res_users_view.xml', 'res_users_view.xml',

4
asterisk_click2dial_crm/asterisk_click2dial_crm.py

@ -107,11 +107,11 @@ class crm_lead(osv.osv):
def create(self, cr, uid, vals, context=None): def create(self, cr, uid, vals, context=None):
vals_reformated = self.pool['res.partner']._generic_reformat_phonenumbers(cr, uid, vals, context=context)
vals_reformated = self._generic_reformat_phonenumbers(cr, uid, vals, context=context)
return super(crm_lead, self).create(cr, uid, vals_reformated, context=context) return super(crm_lead, self).create(cr, uid, vals_reformated, context=context)
def write(self, cr, uid, ids, vals, context=None): def write(self, cr, uid, ids, vals, context=None):
vals_reformated = self.pool['res.partner']._generic_reformat_phonenumbers(cr, uid, vals, context=context)
vals_reformated = self._generic_reformat_phonenumbers(cr, uid, vals, context=context)
return super(crm_lead, self).write(cr, uid, ids, vals_reformated, context=context) return super(crm_lead, self).write(cr, uid, ids, vals_reformated, context=context)

1
asterisk_click2dial_crm_claim/__init__.py

@ -21,3 +21,4 @@
############################################################################## ##############################################################################
import wizard import wizard
import asterisk_click2dial_crm_claim

10
asterisk_click2dial_crm_claim/__openerp__.py

@ -3,6 +3,7 @@
# #
# Asterisk click2dial CRM Claim module for OpenERP # Asterisk click2dial CRM Claim module for OpenERP
# Copyright (c) 2012-2013 Akretion (http://www.akretion.com) # Copyright (c) 2012-2013 Akretion (http://www.akretion.com)
# Copyright (C) 2013 Invitu <contact@invitu.com>
# @author Alexis de Lattre <alexis.delattre@akretion.com> # @author Alexis de Lattre <alexis.delattre@akretion.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
@ -28,7 +29,7 @@
"license" : "AGPL-3", "license" : "AGPL-3",
"category": "Customer Relationship Management", "category": "Customer Relationship Management",
"description": """ "description": """
This module adds a button "Open Related CRM Claims" on the "Open calling partner" wizard.
This module adds a button "Open Related CRM Claims" on the "Open calling partner" wizard and a "Dial" button on the CRM Claim form.
A detailed documentation for the OpenERP-Asterisk connector is available on the Akretion Web site : http://www.akretion.com/open-source-contributions/openerp-asterisk-voip-connector A detailed documentation for the OpenERP-Asterisk connector is available on the Akretion Web site : http://www.akretion.com/open-source-contributions/openerp-asterisk-voip-connector
""", """,
@ -36,10 +37,11 @@
'asterisk_click2dial', 'asterisk_click2dial',
'crm_claim', 'crm_claim',
], ],
"init_xml": [],
"demo_xml": [],
"update_xml": [
"demo": [],
"data": [
'wizard/open_calling_partner_view.xml', 'wizard/open_calling_partner_view.xml',
'crm_claim_view.xml',
], ],
"installable": True, "installable": True,
"application": True,
} }

49
asterisk_click2dial_crm_claim/asterisk_click2dial_crm_claim.py

@ -0,0 +1,49 @@
# -*- encoding: utf-8 -*-
##############################################################################
#
# Asterisk click2dial CRM Claim module for OpenERP
# Copyright (C) 2013 Invitu <contact@invitu.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/>.
#
##############################################################################
from openerp.osv import osv, fields
class crm_claim(osv.osv):
_name = 'crm.claim'
_inherit = ['crm.claim', 'asterisk.common']
def format_phonenumber_to_e164(self, cr, uid, ids, name, arg, context=None):
return self.generic_phonenumber_to_e164(cr, uid, ids, [('partner_phone', 'partner_phone_e164')], context=context)
_columns = {
'partner_phone_e164': fields.function(format_phonenumber_to_e164, type='char', size=64, string='Phone in E.164 format', readonly=True, store={
'crm.claim': (lambda self, cr, uid, ids, c={}: ids, ['partner_phone'], 10),
}),
}
def create(self, cr, uid, vals, context=None):
vals_reformated = self._generic_reformat_phonenumbers(cr, uid, vals, context=context)
return super(crm_claim, self).create(cr, uid, vals_reformated, context=context)
def write(self, cr, uid, ids, vals, context=None):
vals_reformated = self._generic_reformat_phonenumbers(cr, uid, vals, context=context)
return super(crm_claim, self).write(cr, uid, ids, vals_reformated, context=context)

29
asterisk_click2dial_crm_claim/crm_claim_view.xml

@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Asterisk Click2dial CRM Claim module for OpenERP
Copyright (C) 2013 Invitu <contact@invitu.com>
The licence is in the file __openerp__.py
Inherit crm_claim view to add 'Dial' button next to 'phone'
field
-->
<openerp>
<data>
<record id="asterisk_crm_claim_form_dial" model="ir.ui.view">
<field name="name">asterisk.crm_claim.form.dial</field>
<field name="model">crm.claim</field>
<field name="inherit_id" ref="crm_claim.crm_case_claims_form_view"/>
<field name="arch" type="xml">
<field name="partner_phone" position="replace">
<group colspan="2" col="3">
<field name="partner_phone" colspan="2" />
<button name="action_dial" context="{'field2dial': ['partner_phone', 'partner_phone_e164']}" string="Dial" type="object" attrs="{'invisible':[('partner_phone','=',False)]}"/>
</group>
</field>
</field>
</record>
</data>
</openerp>
Loading…
Cancel
Save