Browse Source

Merge pull request #83 from syleam/9.0-migrate-base_phone

9.0 migrate base phone
pull/85/merge
Alexis de Lattre 9 years ago
parent
commit
1064839764
  1. 2
      .travis.yml
  2. 98
      base_phone/README.rst
  3. 19
      base_phone/__init__.py
  4. 46
      base_phone/__openerp__.py
  5. 195
      base_phone/base_phone.py
  6. 18
      base_phone/base_phone_demo.xml
  7. 2
      base_phone/controller.py
  8. 337
      base_phone/i18n/en.po
  9. 339
      base_phone/i18n/es.po
  10. 194
      base_phone/i18n/fr.po
  11. 209
      base_phone/i18n/sl.po
  12. 338
      base_phone/i18n/tr.po
  13. 6
      base_phone/report_sxw_format.py
  14. 26
      base_phone/res_partner_view.xml
  15. 4
      base_phone/res_users_view.xml
  16. 62
      base_phone/static/src/js/phone_widget.js
  17. 4
      base_phone/static/src/xml/phone.xml
  18. 5
      base_phone/test/phonenum.yml
  19. 114
      base_phone/wizard/number_not_found.py
  20. 3
      base_phone/wizard/number_not_found_view.xml
  21. 77
      base_phone/wizard/reformat_all_phonenumbers.py

2
.travis.yml

@ -32,7 +32,7 @@ install:
- export PATH=${HOME}/maintainer-quality-tools/travis:${PATH}
- travis_install_nightly
- pip install phonenumbers py-Asterisk SOAPpy
- hg clone http://bitbucket.org/anybox/web_action_request -b ${VERSION} ${HOME}/web_action_request
- hg clone http://bitbucket.org/juris_malinens/web_action_request -b ${VERSION} ${HOME}/web_action_request # Pull request is not merged in anybox
- hg clone http://bitbucket.org/anybox/bus_enhanced ${HOME}/bus_enhanced
script:

98
base_phone/README.rst

@ -0,0 +1,98 @@
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
==========
Base Phone
==========
This module validate phone numbers using the *phonenumbers* Python library,
which is a port of the library used in Android smartphones. For example, if
your user is linked to a French company and you update the form view of a
partner with a badly written French phone number such as '01-55-42-12-42',
Odoo will automatically update the phone number to E.164 format '+33155421242'
and display in the form and tree view of the partner the readable equivalent
'+33 1 55 42 12 42'.
This module also adds *tel:* links on phone numbers and *fax:* links on fax
numbers. If you have a softphone or a client software on your PC that is
associated with *tel:* links, the softphone should propose you to dial the
phone number when you click on such a link.
This module also updates the format() function for reports and adds 2
arguments :
* *phone* : should be True for a phone number, False (default) otherwize.
* *phone_format* : it can have 3 possible values :
* *international* (default) : the report will display '+33 1 55 42 12 42'
* *national* : the report will display '01 55 42 12 42'
* *e164* : the report will display '+33155421242'
For example, in the Sale Order report, to display the phone number of the
Salesman, you can write : o.user_id and o.user_id.phone and
format(o.user_id.phone, phone=True, phone_format='national') or ''
This module is independant from the Asterisk connector.
Please contact Alexis de Lattre from Akretion <alexis.delattre@akretion.com>
for any help or question about this module.
Installation
============
There is no specific installation procedure for this module.
Configuration
=============
There is no specific configuration procedure for this module.
Usage
=====
There is no specific usage procedure for this module.
.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
:alt: Try me on Runbot
:target: https://runbot.odoo-community.org/runbot/{repo_id}/9.0
Known issues / Roadmap
======================
Bug Tracker
===========
Bugs are tracked on `GitHub Issues
<https://github.com/OCA/{project_repo}/issues>`_. In case of trouble, please
check there if your issue has already been reported. If you spotted it first,
help us smashing it by providing a detailed and welcomed `feedback
<https://github.com/OCA/connector-telephony/issues/new?body=module:%20base_phone%0Aversion:%209.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Credits
=======
Images
------
* Odoo Community Association: `Icon <https://github.com/OCA/maintainer-tools/blob/master/template/module/static/description/icon.svg>`_.
Contributors
------------
* Alexis de Lattre <alexis.delattre@akretion.com>
Maintainer
----------
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
This module is maintained by the OCA.
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
To contribute to this module, please visit https://odoo-community.org.

19
base_phone/__init__.py

@ -1,23 +1,4 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Base Phone module for OpenERP
# Copyright (C) 2014 Alexis de Lattre <alexis@via.ecp.fr>
#
# 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 base_phone
from . import wizard

46
base_phone/__openerp__.py

@ -1,8 +1,8 @@
# -*- encoding: utf-8 -*-
# -*- coding: utf-8 -*-
##############################################################################
#
# Base Phone module for OpenERP
# Copyright (C) 2014 Alexis de Lattre <alexis@via.ecp.fr>
# Base Phone module for Odoo
# Copyright (C) 2014-2015 Alexis de Lattre <alexis@via.ecp.fr>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@ -22,45 +22,10 @@
{
'name': 'Base Phone',
'version': '8.0.0.1.0',
'version': '9.0.0.1.0',
'category': 'Phone',
'license': 'AGPL-3',
'summary': 'Validate phone numbers',
'description': """
Base Phone
==========
This module validate phone numbers using the *phonenumbers* Python library,
which is a port of the library used in Android smartphones. For example, if
your user is linked to a French company and you update the form view of a
partner with a badly written French phone number such as '01-55-42-12-42',
Odoo will automatically update the phone number to E.164 format '+33155421242'
and display in the form and tree view of the partner the readable equivalent
'+33 1 55 42 12 42'.
This module also adds *tel:* links on phone numbers and *fax:* links on fax
numbers. If you have a softphone or a client software on your PC that is
associated with *tel:* links, the softphone should propose you to dial the
phone number when you click on such a link.
This module also updates the format() function for reports and adds 2
arguments :
* *phone* : should be True for a phone number, False (default) otherwize.
* *phone_format* : it can have 3 possible values :
* *international* (default) : the report will display '+33 1 55 42 12 42'
* *national* : the report will display '01 55 42 12 42'
* *e164* : the report will display '+33155421242'
For example, in the Sale Order report, to display the phone number of the
Salesman, you can write : o.user_id and o.user_id.phone and
format(o.user_id.phone, phone=True, phone_format='national') or ''
This module is independant from the Asterisk connector.
Please contact Alexis de Lattre from Akretion <alexis.delattre@akretion.com>
for any help or question about this module.
""",
'author': "Akretion,Odoo Community Association (OCA)",
'website': 'http://www.akretion.com/',
'depends': ['base', 'web'],
@ -76,8 +41,7 @@ for any help or question about this module.
'web_phone.xml',
],
'qweb': ['static/src/xml/*.xml'],
'demo': ['base_phone_demo.xml'],
'test': ['test/phonenum.yml'],
'images': [],
'installable': False,
'installable': True,
}

195
base_phone/base_phone.py

@ -1,8 +1,8 @@
# -*- encoding: utf-8 -*-
# -*- coding: utf-8 -*-
##############################################################################
#
# Base Phone module for Odoo/OpenERP
# Copyright (C) 2010-2014 Alexis de Lattre <alexis@via.ecp.fr>
# Base Phone module for Odoo
# Copyright (C) 2010-2015 Alexis de Lattre <alexis@via.ecp.fr>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@ -21,7 +21,7 @@
from openerp import models, fields, api, _
from openerp.tools.safe_eval import safe_eval
from openerp.exceptions import Warning
from openerp.exceptions import UserError
import logging
# Lib for phone number reformating -> pip install phonenumbers
import phonenumbers
@ -32,86 +32,96 @@ _logger = logging.getLogger(__name__)
class PhoneCommon(models.AbstractModel):
_name = 'phone.common'
def _generic_reformat_phonenumbers(
self, cr, uid, ids, vals, context=None):
"""Reformat phone numbers in E.164 format i.e. +33141981242"""
assert isinstance(self._country_field, (str, unicode, type(None))),\
'Wrong self._country_field'
assert isinstance(self._partner_field, (str, unicode, type(None))),\
'Wrong self._partner_field'
@api.model
def _reformat_phonenumbers_create(self, vals):
assert isinstance(self._phone_fields, list),\
'self._phone_fields must be a list'
if any([vals.get(field) for field in self._phone_fields]):
countrycode = self._get_countrycode_from_vals(vals)
countrycode = self._countrycode_fallback(countrycode)
vals = self._reformat_phonenumbers(vals, countrycode)
return vals
@api.multi
def _reformat_phonenumbers_write(self, vals):
assert isinstance(self._phone_fields, list),\
'self._phone_fields must be a list'
if context is None:
context = {}
if ids and isinstance(ids, (int, long)):
ids = [ids]
if any([vals.get(field) for field in self._phone_fields]):
user = self.pool['res.users'].browse(cr, uid, uid, context=context)
# country_id on res.company is a fields.function that looks at
# company_id.partner_id.addres(default).country_id
countrycode = None
if self._country_field:
if vals.get(self._country_field):
country = self.pool['res.country'].browse(
cr, uid, vals[self._country_field], context=context)
countrycode = country.code
elif ids:
rec = self.browse(cr, uid, ids[0], context=context)
countrycode = self._get_countrycode_from_vals(vals)
if not countrycode:
if self._country_field:
country = safe_eval(
'rec.' + self._country_field, {'rec': rec})
'self.' + self._country_field, {'self': self})
countrycode = country and country.code or None
elif self._partner_field:
if vals.get(self._partner_field):
partner = self.pool['res.partner'].browse(
cr, uid, vals[self._partner_field], context=context)
countrycode = partner.country_id and\
partner.country_id.code or None
elif ids:
rec = self.browse(cr, uid, ids[0], context=context)
elif self._partner_field:
partner = safe_eval(
'rec.' + self._partner_field, {'rec': rec})
'self.' + self._partner_field, {'self': self})
if partner:
countrycode = partner.country_id and\
partner.country_id.code or None
if not countrycode:
if user.company_id.country_id:
countrycode = user.company_id.country_id.code
else:
countrycode = self._countrycode_fallback(countrycode)
vals = self._reformat_phonenumbers(vals, countrycode)
return vals
@api.model
def _get_countrycode_from_vals(self, vals):
assert isinstance(self._country_field, (str, unicode, type(None))),\
'Wrong self._country_field'
assert isinstance(self._partner_field, (str, unicode, type(None))),\
'Wrong self._partner_field'
countrycode = None
if self._country_field and vals.get(self._country_field):
country = self.env['res.country'].browse(
int(vals[self._country_field]))
countrycode = country.code
elif self._partner_field and vals.get(self._partner_field):
partner = self.env['res.partner'].browse(
int(vals[self._partner_field]))
countrycode = partner.country_id.code or False
return countrycode
@api.model
def _countrycode_fallback(self, countrycode):
if not countrycode:
if self.env.user.company_id.country_id:
countrycode = self.env.user.company_id.country_id.code
else:
_logger.error(
"You should set a country on the company '%s' "
"to allow the reformat of phone numbers",
self.env.user.company_id.name)
return countrycode
@api.model
def _reformat_phonenumbers(self, vals, countrycode):
for field in self._phone_fields:
if vals.get(field):
init_value = vals.get(field)
try:
res_parse = phonenumbers.parse(
vals.get(field), countrycode.upper())
vals[field] = phonenumbers.format_number(
res_parse, phonenumbers.PhoneNumberFormat.E164)
if init_value != vals[field]:
_logger.info(
"%s initial value: '%s' updated value: '%s'"
% (field, init_value, vals[field]))
except Exception, e:
# I do BOTH logger and raise, because:
# raise is usefull when the record is created/written
# by a user via the Web interface
# logger is usefull when the record is created/written
# via the webservices
_logger.error(
_("You should set a country on the company '%s' "
"to allow the reformat of phone numbers")
% user.company_id.name)
countrycode = None
# with country code = None, phonenumbers.parse() will work
# with phonenumbers formatted in E164, but will fail with
# phone numbers in national format
for field in self._phone_fields:
if vals.get(field):
init_value = vals.get(field)
try:
res_parse = phonenumbers.parse(
vals.get(field), countrycode.upper())
vals[field] = phonenumbers.format_number(
res_parse, phonenumbers.PhoneNumberFormat.E164)
if init_value != vals[field]:
_logger.info(
"%s initial value: '%s' updated value: '%s'"
% (field, init_value, vals[field]))
except Exception, e:
# I do BOTH logger and raise, because:
# raise is usefull when the record is created/written
# by a user via the Web interface
# logger is usefull when the record is created/written
# via the webservices
_logger.error(
"Cannot reformat the phone number '%s' to "
"international format with region=%s"
% (vals.get(field), countrycode))
if context.get('raise_if_phone_parse_fails'):
raise Warning(
_("Cannot reformat the phone number '%s' to "
"international format. Error message: %s")
% (vals.get(field), e))
"Cannot reformat the phone number '%s' to "
"international format with region=%s",
vals.get(field), countrycode)
if self.env.context.get('raise_if_phone_parse_fails'):
raise UserError(
_("Cannot reformat the phone number '%s' to "
"international format. Error message: %s")
% (vals.get(field), e))
return vals
@api.model
@ -196,7 +206,7 @@ class PhoneCommon(models.AbstractModel):
def _get_phone_fields(self):
'''Returns a dict with key = object name
and value = list of phone fields'''
models = self.env['ir.model'].search([('osv_memory', '=', False)])
models = self.env['ir.model'].search([('transient', '=', False)])
res = []
for model in models:
senv = False
@ -210,7 +220,8 @@ class PhoneCommon(models.AbstractModel):
res.append(model.model)
return res
def click2dial(self, cr, uid, erp_number, context=None):
@api.model
def click2dial(self, erp_number):
'''This function is designed to be overridden in IPBX-specific
modules, such as asterisk_click2dial or ovh_telephony_connector'''
return {'dialed_number': erp_number}
@ -247,26 +258,21 @@ class ResPartner(models.Model):
_country_field = 'country_id'
_partner_field = None
def create(self, cr, uid, vals, context=None):
vals_reformated = self._generic_reformat_phonenumbers(
cr, uid, None, vals, context=context)
return super(ResPartner, self).create(
cr, uid, vals_reformated, context=context)
@api.model
def create(self, vals):
vals_reformated = self._reformat_phonenumbers_create(vals)
return super(ResPartner, self).create(vals_reformated)
def write(self, cr, uid, ids, vals, context=None):
vals_reformated = self._generic_reformat_phonenumbers(
cr, uid, ids, vals, context=context)
return super(ResPartner, self).write(
cr, uid, ids, vals_reformated, context=context)
@api.multi
def write(self, vals):
vals_reformated = self._reformat_phonenumbers_write(vals)
return super(ResPartner, self).write(vals_reformated)
def name_get(self, cr, uid, ids, context=None):
if context is None:
context = {}
if context.get('callerid'):
@api.multi
def name_get(self):
if self._context.get('callerid'):
res = []
if isinstance(ids, (int, long)):
ids = [ids]
for partner in self.browse(cr, uid, ids, context=context):
for partner in self:
if partner.parent_id and partner.parent_id.is_company:
name = u'%s (%s)' % (partner.name, partner.parent_id.name)
else:
@ -274,8 +280,7 @@ class ResPartner(models.Model):
res.append((partner.id, name))
return res
else:
return super(ResPartner, self).name_get(
cr, uid, ids, context=context)
return super(ResPartner, self).name_get()
class ResCompany(models.Model):

18
base_phone/base_phone_demo.xml

@ -1,18 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2014 Alexis de Lattre
@author Alexis de Lattre <alexis@via.ecp.fr>
The licence is in the file __openerp__.py
-->
<openerp>
<data noupdate="1">
<!-- I need a country on the company, because otherwize it raises an error -->
<record id="base.main_company" model="res.company">
<field name="country_id" ref="base.fr"/>
</record>
</data>
</openerp>

2
base_phone/controller.py

@ -1,4 +1,4 @@
# -*- encoding: utf-8 -*-
# -*- coding: utf-8 -*-
##############################################################################
#
# Base Phone module for Odoo

337
base_phone/i18n/en.po

@ -0,0 +1,337 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * base_phone
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: connector-telephony (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-10-29 13:29+0000\n"
"PO-Revision-Date: 2015-10-29 13:29+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
"Language-Team: English (http://www.transifex.com/oca/OCA-connector-telephony-8-0/language/en/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: en\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: base_phone
#: field:number.not.found,calling_number:0
msgid "Calling Number"
msgstr "Calling Number"
#. module: base_phone
#: view:reformat.all.phonenumbers:base_phone.reformat_all_phonenumbers_form
msgid "Cancel"
msgstr "Cancel"
#. module: base_phone
#: code:addons/base_phone/base_phone.py:112
#, python-format
msgid ""
"Cannot reformat the phone number '%s' to international format. Error "
"message: %s"
msgstr "Cannot reformat the phone number '%s' to international format. Error message: %s"
#. module: base_phone
#. openerp-web
#: code:addons/base_phone/static/src/js/phone_widget.js:46
#, python-format
msgid "Click2dial started"
msgstr "Click2dial started"
#. module: base_phone
#. openerp-web
#: code:addons/base_phone/static/src/js/phone_widget.js:58
#, python-format
msgid "Click2dial successfull"
msgstr "Click2dial successfull"
#. module: base_phone
#: view:number.not.found:base_phone.number_not_found_form
#: view:reformat.all.phonenumbers:base_phone.reformat_all_phonenumbers_form
msgid "Close"
msgstr "Close"
#. module: base_phone
#: model:ir.model,name:base_phone.model_res_company
msgid "Companies"
msgstr "Companies"
#. module: base_phone
#: code:addons/base_phone/wizard/number_not_found.py:87
#, python-format
msgid "Create New Partner"
msgstr "Create New Partner"
#. module: base_phone
#: view:number.not.found:base_phone.number_not_found_form
msgid "Create Partner with this Number"
msgstr "Create Partner with this Number"
#. module: base_phone
#: view:number.not.found:base_phone.number_not_found_form
msgid "Create or Update a Partner"
msgstr "Create or Update a Partner"
#. module: base_phone
#: field:number.not.found,create_uid:0
#: field:reformat.all.phonenumbers,create_uid:0
msgid "Created by"
msgstr "Created by"
#. module: base_phone
#: field:number.not.found,create_date:0
#: field:reformat.all.phonenumbers,create_date:0
msgid "Created on"
msgstr "Created on"
#. module: base_phone
#: field:number.not.found,current_partner_mobile:0
msgid "Current Mobile"
msgstr "Current Mobile"
#. module: base_phone
#: field:number.not.found,current_partner_phone:0
msgid "Current Phone"
msgstr "Current Phone"
#. module: base_phone
#. openerp-web
#: code:addons/base_phone/static/src/js/phone_widget.js:39
#, python-format
msgid "Dial"
msgstr "Dial"
#. module: base_phone
#: selection:reformat.all.phonenumbers,state:0
msgid "Done"
msgstr "Done"
#. module: base_phone
#: selection:reformat.all.phonenumbers,state:0
msgid "Draft"
msgstr "Draft"
#. module: base_phone
#: field:number.not.found,e164_number:0
msgid "E.164 Number"
msgstr "E.164 Number"
#. module: base_phone
#: help:number.not.found,e164_number:0
msgid "E.164 equivalent of the calling number."
msgstr "E.164 equivalent of the calling number."
#. module: base_phone
#: view:res.users:base_phone.view_users_form_simple_modif
msgid "Email Preferences"
msgstr "Email Preferences"
#. module: base_phone
#: code:addons/base_phone/wizard/number_not_found.py:101
#, python-format
msgid "Error:"
msgstr "Error:"
#. module: base_phone
#: selection:number.not.found,number_type:0
msgid "Fixed"
msgstr "Fixed"
#. module: base_phone
#: field:number.not.found,number_type:0
msgid "Fixed/Mobile"
msgstr "Fixed/Mobile"
#. module: base_phone
#: field:base.phone.installed,id:0 field:number.not.found,id:0
#: field:phone.common,id:0 field:reformat.all.phonenumbers,id:0
msgid "ID"
msgstr "ID"
#. module: base_phone
#: help:res.company,number_of_digits_to_match_from_end:0
msgid ""
"In several situations, OpenERP will have to find a Partner/Lead/Employee/..."
" from a phone number presented by the calling party. As the phone numbers "
"presented by your phone operator may not always be displayed in a standard "
"format, the best method to find the related Partner/Lead/Employee/... in "
"OpenERP is to try to match the end of the phone number in OpenERP with the N"
" last digits of the phone number presented by the calling party. N is the "
"value you should enter in this field."
msgstr "In several situations, OpenERP will have to find a Partner/Lead/Employee/... from a phone number presented by the calling party. As the phone numbers presented by your phone operator may not always be displayed in a standard format, the best method to find the related Partner/Lead/Employee/... in OpenERP is to try to match the end of the phone number in OpenERP with the N last digits of the phone number presented by the calling party. N is the value you should enter in this field."
#. module: base_phone
#: field:number.not.found,write_uid:0
#: field:reformat.all.phonenumbers,write_uid:0
msgid "Last Updated by"
msgstr "Last Updated by"
#. module: base_phone
#: field:number.not.found,write_date:0
#: field:reformat.all.phonenumbers,write_date:0
msgid "Last Updated on"
msgstr "Last Updated on"
#. module: base_phone
#: selection:number.not.found,number_type:0
msgid "Mobile"
msgstr "Mobile"
#. module: base_phone
#: view:number.not.found:base_phone.number_not_found_form
msgid "Number Not Found"
msgstr "Number Not Found"
#. module: base_phone
#: view:number.not.found:base_phone.number_not_found_form
msgid "Number converted to international format:"
msgstr "Number converted to international format:"
#. module: base_phone
#. openerp-web
#: code:addons/base_phone/static/src/js/phone_widget.js:59
#, python-format
msgid "Number dialed:"
msgstr "Number dialed:"
#. module: base_phone
#: model:ir.model,name:base_phone.model_number_not_found
msgid "Number not found"
msgstr "Number not found"
#. module: base_phone
#: view:number.not.found:base_phone.number_not_found_form
msgid "Number not found:"
msgstr "Number not found:"
#. module: base_phone
#: field:res.company,number_of_digits_to_match_from_end:0
msgid "Number of Digits To Match From End"
msgstr "Number of Digits To Match From End"
#. module: base_phone
#: model:ir.model,name:base_phone.model_res_partner
msgid "Partner"
msgstr "Partner"
#. module: base_phone
#: help:number.not.found,to_update_partner_id:0
msgid "Partner on which the phone number will be written"
msgstr "Partner on which the phone number will be written"
#. module: base_phone
#: field:number.not.found,to_update_partner_id:0
msgid "Partner to Update"
msgstr "Partner to Update"
#. module: base_phone
#: code:addons/base_phone/wizard/number_not_found.py:107
#, python-format
msgid "Partner: %s"
msgstr "Partner: %s"
#. module: base_phone
#: view:res.company:base_phone.view_company_form
msgid "Phone"
msgstr "Phone"
#. module: base_phone
#: model:res.groups,name:base_phone.group_callerid
msgid "Phone CallerID"
msgstr "Phone CallerID"
#. module: base_phone
#: help:number.not.found,calling_number:0
msgid ""
"Phone number of calling party that has been obtained from the telephony "
"server, in the format used by the telephony server (not E.164)."
msgstr "Phone number of calling party that has been obtained from the telephony server, in the format used by the telephony server (not E.164)."
#. module: base_phone
#: field:reformat.all.phonenumbers,phonenumbers_not_reformatted:0
msgid "Phone numbers that couldn't be reformatted"
msgstr "Phone numbers that couldn't be reformatted"
#. module: base_phone
#: view:reformat.all.phonenumbers:base_phone.reformat_all_phonenumbers_form
msgid "Phone numbers that couldn't be reformatted:"
msgstr "Phone numbers that couldn't be reformatted:"
#. module: base_phone
#: model:ir.actions.act_window,name:base_phone.reformat_all_phonenumbers_action
#: model:ir.ui.menu,name:base_phone.reformat_all_phonenumbers_menu
msgid "Reformat Phone Numbers"
msgstr "Reformat Phone Numbers"
#. module: base_phone
#: model:ir.model,name:base_phone.model_reformat_all_phonenumbers
#: view:reformat.all.phonenumbers:base_phone.reformat_all_phonenumbers_form
msgid "Reformat all phone numbers"
msgstr "Reformat all phone numbers"
#. module: base_phone
#: code:addons/base_phone/wizard/number_not_found.py:102
#, python-format
msgid "Select the Partner to Update."
msgstr "Select the Partner to Update."
#. module: base_phone
#: field:reformat.all.phonenumbers,state:0
msgid "State"
msgstr "State"
#. module: base_phone
#: model:ir.ui.menu,name:base_phone.menu_config_phone
#: view:res.users:base_phone.view_users_form
msgid "Telephony"
msgstr "Telephony"
#. module: base_phone
#: view:res.users:base_phone.view_users_form
#: view:res.users:base_phone.view_users_form_simple_modif
msgid "Telephony Preferences"
msgstr "Telephony Preferences"
#. module: base_phone
#: sql_constraint:res.company:0
msgid ""
"The value of the field 'Number of Digits To Match From End' must be "
"positive."
msgstr "The value of the field 'Number of Digits To Match From End' must be positive."
#. module: base_phone
#: view:reformat.all.phonenumbers:base_phone.reformat_all_phonenumbers_form
msgid ""
"This wizard reformats the phone, mobile and fax numbers of all partners in "
"standard international format e.g. +33141981242"
msgstr "This wizard reformats the phone, mobile and fax numbers of all partners in standard international format e.g. +33141981242"
#. module: base_phone
#. openerp-web
#: code:addons/base_phone/static/src/js/phone_widget.js:47
#, python-format
msgid "Unhook your ringing phone"
msgstr "Unhook your ringing phone"
#. module: base_phone
#: view:number.not.found:base_phone.number_not_found_form
msgid "Update Partner with this Number"
msgstr "Update Partner with this Number"
#. module: base_phone
#: view:res.company:base_phone.view_company_form
#: view:res.partner:base_phone.view_partner_form
msgid "fax"
msgstr "fax"
#. module: base_phone
#: view:res.company:base_phone.view_company_form
#: view:res.partner:base_phone.view_partner_form
#: view:res.partner:base_phone.view_partner_simple_form
#: view:res.partner:base_phone.view_partner_tree
msgid "phone"
msgstr "phone"

339
base_phone/i18n/es.po

@ -0,0 +1,339 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * base_phone
#
# Translators:
# Antonio Trueba, 2016
# Enrique Zanardi <ezanardi@atlantux.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: connector-telephony (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-11-01 04:07+0000\n"
"PO-Revision-Date: 2016-01-07 14:27+0000\n"
"Last-Translator: Antonio Trueba\n"
"Language-Team: Spanish (http://www.transifex.com/oca/OCA-connector-telephony-8-0/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: base_phone
#: field:number.not.found,calling_number:0
msgid "Calling Number"
msgstr "Número llamante"
#. module: base_phone
#: view:reformat.all.phonenumbers:base_phone.reformat_all_phonenumbers_form
msgid "Cancel"
msgstr "Cancelar"
#. module: base_phone
#: code:addons/base_phone/base_phone.py:112
#, python-format
msgid ""
"Cannot reformat the phone number '%s' to international format. Error "
"message: %s"
msgstr "No se puede reformatear el número de teléfono '%s' al formato internacional. Mensaje de error: %s"
#. module: base_phone
#. openerp-web
#: code:addons/base_phone/static/src/js/phone_widget.js:46
#, python-format
msgid "Click2dial started"
msgstr "Click2dial iniciado"
#. module: base_phone
#. openerp-web
#: code:addons/base_phone/static/src/js/phone_widget.js:58
#, python-format
msgid "Click2dial successfull"
msgstr ""
#. module: base_phone
#: view:number.not.found:base_phone.number_not_found_form
#: view:reformat.all.phonenumbers:base_phone.reformat_all_phonenumbers_form
msgid "Close"
msgstr "Cerrar"
#. module: base_phone
#: model:ir.model,name:base_phone.model_res_company
msgid "Companies"
msgstr "Compañías"
#. module: base_phone
#: code:addons/base_phone/wizard/number_not_found.py:87
#, python-format
msgid "Create New Partner"
msgstr "Crear nueva empresa"
#. module: base_phone
#: view:number.not.found:base_phone.number_not_found_form
msgid "Create Partner with this Number"
msgstr "Crear empresa con éste número"
#. module: base_phone
#: view:number.not.found:base_phone.number_not_found_form
msgid "Create or Update a Partner"
msgstr "Crear o actualizar empresa"
#. module: base_phone
#: field:number.not.found,create_uid:0
#: field:reformat.all.phonenumbers,create_uid:0
msgid "Created by"
msgstr "Creado por"
#. module: base_phone
#: field:number.not.found,create_date:0
#: field:reformat.all.phonenumbers,create_date:0
msgid "Created on"
msgstr "Creado el"
#. module: base_phone
#: field:number.not.found,current_partner_mobile:0
msgid "Current Mobile"
msgstr "Móvil actual"
#. module: base_phone
#: field:number.not.found,current_partner_phone:0
msgid "Current Phone"
msgstr "Teléfono actual"
#. module: base_phone
#. openerp-web
#: code:addons/base_phone/static/src/js/phone_widget.js:39
#, python-format
msgid "Dial"
msgstr "Llamar"
#. module: base_phone
#: selection:reformat.all.phonenumbers,state:0
msgid "Done"
msgstr "Hecho"
#. module: base_phone
#: selection:reformat.all.phonenumbers,state:0
msgid "Draft"
msgstr "Borrador"
#. module: base_phone
#: field:number.not.found,e164_number:0
msgid "E.164 Number"
msgstr "Número E.164"
#. module: base_phone
#: help:number.not.found,e164_number:0
msgid "E.164 equivalent of the calling number."
msgstr "Equivalente E.164 del número que llama"
#. module: base_phone
#: view:res.users:base_phone.view_users_form_simple_modif
msgid "Email Preferences"
msgstr "Preferencias de correo electrónico"
#. module: base_phone
#: code:addons/base_phone/wizard/number_not_found.py:101
#, python-format
msgid "Error:"
msgstr "Error:"
#. module: base_phone
#: selection:number.not.found,number_type:0
msgid "Fixed"
msgstr "Teléfono fijo"
#. module: base_phone
#: field:number.not.found,number_type:0
msgid "Fixed/Mobile"
msgstr "Fijo/móvil"
#. module: base_phone
#: field:base.phone.installed,id:0 field:number.not.found,id:0
#: field:phone.common,id:0 field:reformat.all.phonenumbers,id:0
msgid "ID"
msgstr "ID"
#. module: base_phone
#: help:res.company,number_of_digits_to_match_from_end:0
msgid ""
"In several situations, OpenERP will have to find a Partner/Lead/Employee/..."
" from a phone number presented by the calling party. As the phone numbers "
"presented by your phone operator may not always be displayed in a standard "
"format, the best method to find the related Partner/Lead/Employee/... in "
"OpenERP is to try to match the end of the phone number in OpenERP with the N"
" last digits of the phone number presented by the calling party. N is the "
"value you should enter in this field."
msgstr "En varias ocasiones, OpenERP tendrá que encontrar una empresa/oportunidad/empleado/... a partir del número de teléfono enviado por el interlocutor. Como los números de teléfono enviados por su operador de telefonía puede que a veces se muestren en un formato no estándar, el mejor método para encontrar la empresa/oportunidad/empleado/... relacionado en OpenERP es buscar que coincida el final del número de teléfono en OpenERP con los últimos N dígitos del número de teléfono enviado por el interlocutor. N es el número que debe introducir en este campo."
#. module: base_phone
#: field:number.not.found,write_uid:0
#: field:reformat.all.phonenumbers,write_uid:0
msgid "Last Updated by"
msgstr "Última actualización por"
#. module: base_phone
#: field:number.not.found,write_date:0
#: field:reformat.all.phonenumbers,write_date:0
msgid "Last Updated on"
msgstr "Última actualización el"
#. module: base_phone
#: selection:number.not.found,number_type:0
msgid "Mobile"
msgstr "Teléfono móvil"
#. module: base_phone
#: view:number.not.found:base_phone.number_not_found_form
msgid "Number Not Found"
msgstr "Número no encontrado"
#. module: base_phone
#: view:number.not.found:base_phone.number_not_found_form
msgid "Number converted to international format:"
msgstr "Número convertido a formato internacional:"
#. module: base_phone
#. openerp-web
#: code:addons/base_phone/static/src/js/phone_widget.js:59
#, python-format
msgid "Number dialed:"
msgstr "Número marcado:"
#. module: base_phone
#: model:ir.model,name:base_phone.model_number_not_found
msgid "Number not found"
msgstr "Número no encontrado"
#. module: base_phone
#: view:number.not.found:base_phone.number_not_found_form
msgid "Number not found:"
msgstr "Número no encontrado:"
#. module: base_phone
#: field:res.company,number_of_digits_to_match_from_end:0
msgid "Number of Digits To Match From End"
msgstr "Número de dígitos que coinciden al final."
#. module: base_phone
#: model:ir.model,name:base_phone.model_res_partner
msgid "Partner"
msgstr "Empresa"
#. module: base_phone
#: help:number.not.found,to_update_partner_id:0
msgid "Partner on which the phone number will be written"
msgstr "Empresa en la que se escribirá el número de teléfono"
#. module: base_phone
#: field:number.not.found,to_update_partner_id:0
msgid "Partner to Update"
msgstr "Empresa a actualizar"
#. module: base_phone
#: code:addons/base_phone/wizard/number_not_found.py:107
#, python-format
msgid "Partner: %s"
msgstr "Empresa: %s"
#. module: base_phone
#: view:res.company:base_phone.view_company_form
msgid "Phone"
msgstr "Teléfono"
#. module: base_phone
#: model:res.groups,name:base_phone.group_callerid
msgid "Phone CallerID"
msgstr "Identificación de llamada del teléfono"
#. module: base_phone
#: help:number.not.found,calling_number:0
msgid ""
"Phone number of calling party that has been obtained from the telephony "
"server, in the format used by the telephony server (not E.164)."
msgstr "Número de teléfono del interlocutor que ha sido obtenido desde el servidor de telefonía, en el formato usado por el servidor de telefonía (no E.164)"
#. module: base_phone
#: field:reformat.all.phonenumbers,phonenumbers_not_reformatted:0
msgid "Phone numbers that couldn't be reformatted"
msgstr "Números de teléfono que no pudieron reformatearse"
#. module: base_phone
#: view:reformat.all.phonenumbers:base_phone.reformat_all_phonenumbers_form
msgid "Phone numbers that couldn't be reformatted:"
msgstr "Números de teléfono que no pudieron reformatearse:"
#. module: base_phone
#: model:ir.actions.act_window,name:base_phone.reformat_all_phonenumbers_action
#: model:ir.ui.menu,name:base_phone.reformat_all_phonenumbers_menu
msgid "Reformat Phone Numbers"
msgstr "Reformatear números de teléfono"
#. module: base_phone
#: model:ir.model,name:base_phone.model_reformat_all_phonenumbers
#: view:reformat.all.phonenumbers:base_phone.reformat_all_phonenumbers_form
msgid "Reformat all phone numbers"
msgstr "Reformatear todos los números de teléfono"
#. module: base_phone
#: code:addons/base_phone/wizard/number_not_found.py:102
#, python-format
msgid "Select the Partner to Update."
msgstr "Escoja la empresa a actualizar"
#. module: base_phone
#: field:reformat.all.phonenumbers,state:0
msgid "State"
msgstr "Estado"
#. module: base_phone
#: model:ir.ui.menu,name:base_phone.menu_config_phone
#: view:res.users:base_phone.view_users_form
msgid "Telephony"
msgstr "Telefonía"
#. module: base_phone
#: view:res.users:base_phone.view_users_form
#: view:res.users:base_phone.view_users_form_simple_modif
msgid "Telephony Preferences"
msgstr "Preferencias de telefonía"
#. module: base_phone
#: sql_constraint:res.company:0
msgid ""
"The value of the field 'Number of Digits To Match From End' must be "
"positive."
msgstr "El valor del campo 'Número de dígitos que coinciden al final' debe ser positivo."
#. module: base_phone
#: view:reformat.all.phonenumbers:base_phone.reformat_all_phonenumbers_form
msgid ""
"This wizard reformats the phone, mobile and fax numbers of all partners in "
"standard international format e.g. +33141981242"
msgstr "Este asistente reformatea los números de teléfono fijo, móvil y fax de todas las empresas en formato estandar internacional, p.ej. +33141981242"
#. module: base_phone
#. openerp-web
#: code:addons/base_phone/static/src/js/phone_widget.js:47
#, python-format
msgid "Unhook your ringing phone"
msgstr "Descuelgue su teléfono que está sonando."
#. module: base_phone
#: view:number.not.found:base_phone.number_not_found_form
msgid "Update Partner with this Number"
msgstr "Actualizar empresa con éste número"
#. module: base_phone
#: view:res.company:base_phone.view_company_form
#: view:res.partner:base_phone.view_partner_form
msgid "fax"
msgstr "fax"
#. module: base_phone
#: view:res.company:base_phone.view_company_form
#: view:res.partner:base_phone.view_partner_form
#: view:res.partner:base_phone.view_partner_simple_form
#: view:res.partner:base_phone.view_partner_tree
msgid "phone"
msgstr "teléfono"

194
base_phone/i18n/fr.po

@ -1,47 +1,57 @@
# Translation of OpenERP Server.
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * base_phone
#
# * base_phone
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0\n"
"Project-Id-Version: connector-telephony (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-08-25 21:29+0000\n"
"PO-Revision-Date: 2014-08-25 21:29+0000\n"
"Last-Translator: Alexis de Lattre <alexis.delattre@akretion.com>\n"
"Language-Team: \n"
"POT-Creation-Date: 2015-10-14 02:09+0000\n"
"PO-Revision-Date: 2015-10-12 18:36+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
"Language-Team: French (http://www.transifex.com/oca/OCA-connector-telephony-8-0/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: base_phone
#: view:reformat.all.phonenumbers:0
#: field:number.not.found,calling_number:0
msgid "Calling Number"
msgstr ""
#. module: base_phone
#: view:reformat.all.phonenumbers:base_phone.reformat_all_phonenumbers_form
msgid "Cancel"
msgstr "Annuler"
#. module: base_phone
#: code:addons/base_phone/base_phone.py:95
#: code:addons/base_phone/base_phone.py:112
#, python-format
msgid "Cannot reformat the phone number '%s' to international format. Error message: %s"
msgid ""
"Cannot reformat the phone number '%s' to international format. Error "
"message: %s"
msgstr "Impossible de reformatter le numéro de téléphone '%s' au format international. Message d'erreur : %s"
#. module: base_phone
#. openerp-web
#: code:addons/base_phone/static/src/js/phone_widget.js:34
#: code:addons/base_phone/static/src/js/phone_widget.js:46
#, python-format
msgid "Click2dial started"
msgstr "Début du Click2dial"
#. module: base_phone
#. openerp-web
#: code:addons/base_phone/static/src/js/phone_widget.js:46
#: code:addons/base_phone/static/src/js/phone_widget.js:58
#, python-format
msgid "Click2dial successfull"
msgstr "Click2dial réussi"
#. module: base_phone
#: view:number.not.found:0
#: view:number.not.found:base_phone.number_not_found_form
#: view:reformat.all.phonenumbers:base_phone.reformat_all_phonenumbers_form
msgid "Close"
msgstr "Fermer"
@ -51,21 +61,33 @@ msgid "Companies"
msgstr "Sociétés"
#. module: base_phone
#: code:addons/base_phone/wizard/number_not_found.py:85
#: code:addons/base_phone/wizard/number_not_found.py:87
#, python-format
msgid "Create New Partner"
msgstr "Créer un nouveau partenaire"
#. module: base_phone
#: view:number.not.found:0
#: view:number.not.found:base_phone.number_not_found_form
msgid "Create Partner with this Number"
msgstr "Créer un partenaire avec ce numéro"
#. module: base_phone
#: view:number.not.found:0
#: view:number.not.found:base_phone.number_not_found_form
msgid "Create or Update a Partner"
msgstr "Créer ou mettre à jour un partenaire"
#. module: base_phone
#: field:number.not.found,create_uid:0
#: field:reformat.all.phonenumbers,create_uid:0
msgid "Created by"
msgstr ""
#. module: base_phone
#: field:number.not.found,create_date:0
#: field:reformat.all.phonenumbers,create_date:0
msgid "Created on"
msgstr ""
#. module: base_phone
#: field:number.not.found,current_partner_mobile:0
msgid "Current Mobile"
@ -78,11 +100,21 @@ msgstr "Téléphone actuel"
#. module: base_phone
#. openerp-web
#: code:addons/base_phone/static/src/js/phone_widget.js:31
#: code:addons/base_phone/static/src/js/phone_widget.js:39
#, python-format
msgid "Dial"
msgstr "Composer"
#. module: base_phone
#: selection:reformat.all.phonenumbers,state:0
msgid "Done"
msgstr ""
#. module: base_phone
#: selection:reformat.all.phonenumbers,state:0
msgid "Draft"
msgstr ""
#. module: base_phone
#: field:number.not.found,e164_number:0
msgid "E.164 Number"
@ -94,14 +126,12 @@ msgid "E.164 equivalent of the calling number."
msgstr "Equivalent au format E.164 du numéro appelant."
#. module: base_phone
#: view:res.users:0
#: view:res.users:base_phone.view_users_form_simple_modif
msgid "Email Preferences"
msgstr "Préférences de messagerie électronique"
#. module: base_phone
#: code:addons/base_phone/base_phone.py:83
#: code:addons/base_phone/base_phone.py:94
#: code:addons/base_phone/wizard/number_not_found.py:99
#: code:addons/base_phone/wizard/number_not_found.py:101
#, python-format
msgid "Error:"
msgstr "Erreur :"
@ -116,29 +146,54 @@ msgstr "Fixe"
msgid "Fixed/Mobile"
msgstr "Fixe/Portable"
#. module: base_phone
#: field:base.phone.installed,id:0 field:number.not.found,id:0
#: field:phone.common,id:0 field:reformat.all.phonenumbers,id:0
msgid "ID"
msgstr ""
#. module: base_phone
#: help:res.company,number_of_digits_to_match_from_end:0
msgid "In several situations, OpenERP will have to find a Partner/Lead/Employee/... from a phone number presented by the calling party. As the phone numbers presented by your phone operator may not always be displayed in a standard format, the best method to find the related Partner/Lead/Employee/... in OpenERP is to try to match the end of the phone number in OpenERP with the N last digits of the phone number presented by the calling party. N is the value you should enter in this field."
msgid ""
"In several situations, OpenERP will have to find a Partner/Lead/Employee/..."
" from a phone number presented by the calling party. As the phone numbers "
"presented by your phone operator may not always be displayed in a standard "
"format, the best method to find the related Partner/Lead/Employee/... in "
"OpenERP is to try to match the end of the phone number in OpenERP with the N"
" last digits of the phone number presented by the calling party. N is the "
"value you should enter in this field."
msgstr "In several situations, OpenERP will have to find a Partner/Lead/Employee/... from a phone number presented by the calling party. As the phone numbers presented by your phone operator may not always be displayed in a standard format, the best method to find the related Partner/Lead/Employee/... in OpenERP is to try to match the end of the phone number in OpenERP with the N last digits of the phone number presented by the calling party. N is the value you should enter in this field."
#. module: base_phone
#: field:number.not.found,write_uid:0
#: field:reformat.all.phonenumbers,write_uid:0
msgid "Last Updated by"
msgstr ""
#. module: base_phone
#: field:number.not.found,write_date:0
#: field:reformat.all.phonenumbers,write_date:0
msgid "Last Updated on"
msgstr ""
#. module: base_phone
#: selection:number.not.found,number_type:0
msgid "Mobile"
msgstr "Portable"
#. module: base_phone
#: view:number.not.found:0
#: view:number.not.found:base_phone.number_not_found_form
msgid "Number Not Found"
msgstr "Numéro introuvable"
#. module: base_phone
#: view:number.not.found:0
#: view:number.not.found:base_phone.number_not_found_form
msgid "Number converted to international format:"
msgstr "Numéro converti au format international :"
#. module: base_phone
#. openerp-web
#: code:addons/base_phone/static/src/js/phone_widget.js:47
#: code:addons/base_phone/static/src/js/phone_widget.js:59
#, python-format
msgid "Number dialed:"
msgstr "Numéro composé :"
@ -149,7 +204,7 @@ msgid "Number not found"
msgstr "Numéro introuvable"
#. module: base_phone
#: view:number.not.found:0
#: view:number.not.found:base_phone.number_not_found_form
msgid "Number not found:"
msgstr "Numéro introuvable :"
@ -164,13 +219,23 @@ msgid "Partner"
msgstr "Partenaire"
#. module: base_phone
#: code:addons/base_phone/wizard/number_not_found.py:105
#: help:number.not.found,to_update_partner_id:0
msgid "Partner on which the phone number will be written"
msgstr ""
#. module: base_phone
#: field:number.not.found,to_update_partner_id:0
msgid "Partner to Update"
msgstr ""
#. module: base_phone
#: code:addons/base_phone/wizard/number_not_found.py:107
#, python-format
msgid "Partner: %s"
msgstr "Partenaire : %s"
#. module: base_phone
#: view:res.company:0
#: view:res.company:base_phone.view_company_form
msgid "Phone"
msgstr "Téléphone"
@ -179,13 +244,20 @@ msgstr "Téléphone"
msgid "Phone CallerID"
msgstr "CallerID du téléphone"
#. module: base_phone
#: help:number.not.found,calling_number:0
msgid ""
"Phone number of calling party that has been obtained from the telephony "
"server, in the format used by the telephony server (not E.164)."
msgstr ""
#. module: base_phone
#: field:reformat.all.phonenumbers,phonenumbers_not_reformatted:0
msgid "Phone numbers that couldn't be reformatted"
msgstr "Numéros de téléphone qui n'ont pas pu être reformatés"
#. module: base_phone
#: view:reformat.all.phonenumbers:0
#: view:reformat.all.phonenumbers:base_phone.reformat_all_phonenumbers_form
msgid "Phone numbers that couldn't be reformatted:"
msgstr "Numéros de téléphone qui n'ont pas pu être reformatés :"
@ -197,77 +269,77 @@ msgstr "Reformate les numéros de téléphone"
#. module: base_phone
#: model:ir.model,name:base_phone.model_reformat_all_phonenumbers
#: view:reformat.all.phonenumbers:0
#: view:reformat.all.phonenumbers:base_phone.reformat_all_phonenumbers_form
msgid "Reformat all phone numbers"
msgstr "Reformate tous les numéros de téléphone"
#. module: base_phone
#: code:addons/base_phone/wizard/number_not_found.py:100
#: code:addons/base_phone/wizard/number_not_found.py:102
#, python-format
msgid "Select the Partner to Update."
msgstr "Selectionnez le partenaire à mettre à jour."
#. module: base_phone
#: field:reformat.all.phonenumbers,state:0
msgid "State"
msgstr ""
#. module: base_phone
#: model:ir.ui.menu,name:base_phone.menu_config_phone
#: view:res.users:0
#: view:res.users:base_phone.view_users_form
msgid "Telephony"
msgstr "Téléphonie"
#. module: base_phone
#: view:res.users:0
#: view:res.users:base_phone.view_users_form
#: view:res.users:base_phone.view_users_form_simple_modif
msgid "Telephony Preferences"
msgstr "Préférences téléphoniques"
#. module: base_phone
#: sql_constraint:res.company:0
msgid "The value of the field 'Number of Digits To Match From End' must be positive."
msgid ""
"The value of the field 'Number of Digits To Match From End' must be "
"positive."
msgstr "The value of the field 'Number of Digits To Match From End' must be positive."
#. module: base_phone
#: view:reformat.all.phonenumbers:0
msgid "This wizard reformats the phone, mobile and fax numbers of all partners in standard international format e.g. +33141981242"
#: view:reformat.all.phonenumbers:base_phone.reformat_all_phonenumbers_form
msgid ""
"This wizard reformats the phone, mobile and fax numbers of all partners in "
"standard international format e.g. +33141981242"
msgstr "Cet assistant reformate le numéro de téléphone fixe, portable et le fax de tous les partenaires au format standard international i.e. +33141981242"
#. module: base_phone
#. openerp-web
#: code:addons/base_phone/static/src/js/phone_widget.js:35
#: code:addons/base_phone/static/src/js/phone_widget.js:47
#, python-format
msgid "Unhook your ringing phone"
msgstr "Décrochez votre téléphone"
#. module: base_phone
#: view:number.not.found:0
#: view:number.not.found:base_phone.number_not_found_form
msgid "Update Partner with this Number"
msgstr "Mettre à jour le partenaire avec ce numéro"
#. module: base_phone
#: constraint:res.partner:0
msgid "You cannot create recursive Partner hierarchies."
msgstr "You cannot create recursive Partner hierarchies."
#. module: base_phone
#: code:addons/base_phone/base_phone.py:84
#: code:addons/base_phone/base_phone.py:81
#, python-format
msgid "You should set a country on the company '%s'"
msgstr "Vous devez renseigner un pays pour la société '%s'"
#. module: base_phone
#: model:ir.model,name:base_phone.model_base_phone_installed
msgid "base.phone.installed"
msgstr "base.phone.installed"
msgid ""
"You should set a country on the company '%s' to allow the reformat of phone "
"numbers"
msgstr ""
#. module: base_phone
#: view:res.partner:0
#: view:res.company:base_phone.view_company_form
#: view:res.partner:base_phone.view_partner_form
msgid "fax"
msgstr "fax"
#. module: base_phone
#: view:res.partner:0
#: view:res.company:base_phone.view_company_form
#: view:res.partner:base_phone.view_partner_form
#: view:res.partner:base_phone.view_partner_simple_form
#: view:res.partner:base_phone.view_partner_tree
msgid "phone"
msgstr "phone"
#. module: base_phone
#: model:ir.model,name:base_phone.model_phone_common
msgid "phone.common"
msgstr "phone.common"

209
base_phone/i18n/sl.po

@ -1,54 +1,58 @@
# Translation of OpenERP Server.
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * base_phone
#
# Matjaž Mozetič <m.mozetic@matmoz.si>, 2015.
# * base_phone
#
# Translators:
# Matjaž Mozetič <m.mozetic@matmoz.si>, 2015
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 7.0\n"
"Project-Id-Version: connector-telephony (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-08-25 21:28+0000\n"
"PO-Revision-Date: 2015-04-05 09:22+0200\n"
"Last-Translator: Matjaž Mozetič <m.mozetic@matmoz.si>\n"
"Language-Team: Slovenian <translate@matmoz.si>\n"
"POT-Creation-Date: 2015-10-29 13:29+0000\n"
"PO-Revision-Date: 2015-10-29 13:29+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-connector-telephony-8-0/language/sl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
"Language: sl\n"
"X-Generator: Lokalize 1.5\n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\n"
#. module: base_phone
#: view:reformat.all.phonenumbers:0
#: field:number.not.found,calling_number:0
msgid "Calling Number"
msgstr "Klicna številka"
#. module: base_phone
#: view:reformat.all.phonenumbers:base_phone.reformat_all_phonenumbers_form
msgid "Cancel"
msgstr "Preklic"
#. module: base_phone
#: code:addons/base_phone/base_phone.py:95
#: code:addons/base_phone/base_phone.py:112
#, python-format
msgid ""
"Cannot reformat the phone number '%s' to international format. Error message: "
"%s"
msgstr ""
"Ni mogoče pretvoriti telefonske številke '%s' v mednarodni format. Sporočilo "
"o napaki: %s"
"Cannot reformat the phone number '%s' to international format. Error "
"message: %s"
msgstr "Ni mogoče pretvoriti telefonske številke '%s' v mednarodni format. Sporočilo o napaki: %s"
#. module: base_phone
#. openerp-web
#: code:addons/base_phone/static/src/js/phone_widget.js:34
#: code:addons/base_phone/static/src/js/phone_widget.js:46
#, python-format
msgid "Click2dial started"
msgstr "Click2dial zagnan"
#. module: base_phone
#. openerp-web
#: code:addons/base_phone/static/src/js/phone_widget.js:46
#: code:addons/base_phone/static/src/js/phone_widget.js:58
#, python-format
msgid "Click2dial successfull"
msgstr "Click2dial uspešen"
#. module: base_phone
#: view:number.not.found:0
#: view:number.not.found:base_phone.number_not_found_form
#: view:reformat.all.phonenumbers:base_phone.reformat_all_phonenumbers_form
msgid "Close"
msgstr "Zaključi"
@ -58,21 +62,33 @@ msgid "Companies"
msgstr "Družbe"
#. module: base_phone
#: code:addons/base_phone/wizard/number_not_found.py:85
#: code:addons/base_phone/wizard/number_not_found.py:87
#, python-format
msgid "Create New Partner"
msgstr "Ustvari novega partnerja"
#. module: base_phone
#: view:number.not.found:0
#: view:number.not.found:base_phone.number_not_found_form
msgid "Create Partner with this Number"
msgstr "Ustvari partnerja s to številko"
#. module: base_phone
#: view:number.not.found:0
#: view:number.not.found:base_phone.number_not_found_form
msgid "Create or Update a Partner"
msgstr "Ustvari ali posodobi partnerja"
#. module: base_phone
#: field:number.not.found,create_uid:0
#: field:reformat.all.phonenumbers,create_uid:0
msgid "Created by"
msgstr "Ustvaril"
#. module: base_phone
#: field:number.not.found,create_date:0
#: field:reformat.all.phonenumbers,create_date:0
msgid "Created on"
msgstr "Ustvarjeno"
#. module: base_phone
#: field:number.not.found,current_partner_mobile:0
msgid "Current Mobile"
@ -85,11 +101,21 @@ msgstr "Trenutna telefonska številka"
#. module: base_phone
#. openerp-web
#: code:addons/base_phone/static/src/js/phone_widget.js:31
#: code:addons/base_phone/static/src/js/phone_widget.js:39
#, python-format
msgid "Dial"
msgstr "Kliči"
#. module: base_phone
#: selection:reformat.all.phonenumbers,state:0
msgid "Done"
msgstr "Opravljeno"
#. module: base_phone
#: selection:reformat.all.phonenumbers,state:0
msgid "Draft"
msgstr "Osnutek"
#. module: base_phone
#: field:number.not.found,e164_number:0
msgid "E.164 Number"
@ -101,14 +127,12 @@ msgid "E.164 equivalent of the calling number."
msgstr "E.164 ekvivalent klicne številke."
#. module: base_phone
#: view:res.users:0
#: view:res.users:base_phone.view_users_form_simple_modif
msgid "Email Preferences"
msgstr "Prednostne nastavitve E-pošte"
#. module: base_phone
#: code:addons/base_phone/base_phone.py:83
#: code:addons/base_phone/base_phone.py:94
#: code:addons/base_phone/wizard/number_not_found.py:99
#: code:addons/base_phone/wizard/number_not_found.py:101
#, python-format
msgid "Error:"
msgstr "Napaka:"
@ -123,23 +147,35 @@ msgstr "Fiksni"
msgid "Fixed/Mobile"
msgstr "Fiksni/Mobilni"
#. module: base_phone
#: field:base.phone.installed,id:0 field:number.not.found,id:0
#: field:phone.common,id:0 field:reformat.all.phonenumbers,id:0
msgid "ID"
msgstr "ID"
#. module: base_phone
#: help:res.company,number_of_digits_to_match_from_end:0
msgid ""
"In several situations, OpenERP will have to find a Partner/Lead/Employee/... "
"from a phone number presented by the calling party. As the phone numbers "
"In several situations, OpenERP will have to find a Partner/Lead/Employee/..."
" from a phone number presented by the calling party. As the phone numbers "
"presented by your phone operator may not always be displayed in a standard "
"format, the best method to find the related Partner/Lead/Employee/... in "
"OpenERP is to try to match the end of the phone number in OpenERP with the N "
"last digits of the phone number presented by the calling party. N is the "
"OpenERP is to try to match the end of the phone number in OpenERP with the N"
" last digits of the phone number presented by the calling party. N is the "
"value you should enter in this field."
msgstr ""
"V različnih situacijah bo OpenERP moral najti partnerja/indic/kader/ preko "
"številke klicatelja. Ker telefonski operaterji telefonske številke "
"klicateljev ne prikazujejo vedno v standardnem formatu, je najboljša metoda "
"iskanja ustreznega partnerja/indica/kadra/... s primerjanjem končnega dela "
"številke z zadnjimi N znaki telefonske številke klicatelja. N je vrednost, ki "
"se vstavi v to polje."
msgstr "V različnih situacijah bo OpenERP moral najti partnerja/indic/kader/ preko številke klicatelja. Ker telefonski operaterji telefonske številke klicateljev ne prikazujejo vedno v standardnem formatu, je najboljša metoda iskanja ustreznega partnerja/indica/kadra/... s primerjanjem končnega dela številke z zadnjimi N znaki telefonske številke klicatelja. N je vrednost, ki se vstavi v to polje."
#. module: base_phone
#: field:number.not.found,write_uid:0
#: field:reformat.all.phonenumbers,write_uid:0
msgid "Last Updated by"
msgstr "Zadnji posodobil"
#. module: base_phone
#: field:number.not.found,write_date:0
#: field:reformat.all.phonenumbers,write_date:0
msgid "Last Updated on"
msgstr "Zadnjič posodobljeno"
#. module: base_phone
#: selection:number.not.found,number_type:0
@ -147,18 +183,18 @@ msgid "Mobile"
msgstr "Mobilni telefon"
#. module: base_phone
#: view:number.not.found:0
#: view:number.not.found:base_phone.number_not_found_form
msgid "Number Not Found"
msgstr "Številka ni najdena"
#. module: base_phone
#: view:number.not.found:0
#: view:number.not.found:base_phone.number_not_found_form
msgid "Number converted to international format:"
msgstr "Številka pretvorjena v mednarodni format:"
#. module: base_phone
#. openerp-web
#: code:addons/base_phone/static/src/js/phone_widget.js:47
#: code:addons/base_phone/static/src/js/phone_widget.js:59
#, python-format
msgid "Number dialed:"
msgstr "Klicana številka:"
@ -169,7 +205,7 @@ msgid "Number not found"
msgstr "Številka ni najdena"
#. module: base_phone
#: view:number.not.found:0
#: view:number.not.found:base_phone.number_not_found_form
msgid "Number not found:"
msgstr "Številka ni najdena:"
@ -184,13 +220,23 @@ msgid "Partner"
msgstr "Partner"
#. module: base_phone
#: code:addons/base_phone/wizard/number_not_found.py:105
#: help:number.not.found,to_update_partner_id:0
msgid "Partner on which the phone number will be written"
msgstr "Partner, pod katerega se bo zapisala telefonska številka"
#. module: base_phone
#: field:number.not.found,to_update_partner_id:0
msgid "Partner to Update"
msgstr "Partner za posodobitev"
#. module: base_phone
#: code:addons/base_phone/wizard/number_not_found.py:107
#, python-format
msgid "Partner: %s"
msgstr "Partner: %s"
#. module: base_phone
#: view:res.company:0
#: view:res.company:base_phone.view_company_form
msgid "Phone"
msgstr "Telefon"
@ -199,13 +245,20 @@ msgstr "Telefon"
msgid "Phone CallerID"
msgstr "ID klicatelja"
#. module: base_phone
#: help:number.not.found,calling_number:0
msgid ""
"Phone number of calling party that has been obtained from the telephony "
"server, in the format used by the telephony server (not E.164)."
msgstr "Telefonska številka klicatelja, ki je bila pridobljena iz telefonskega strežnika v formatu strežnika (ne E.164)."
#. module: base_phone
#: field:reformat.all.phonenumbers,phonenumbers_not_reformatted:0
msgid "Phone numbers that couldn't be reformatted"
msgstr "Telefonske številke, ki niso bile pretvorjene"
#. module: base_phone
#: view:reformat.all.phonenumbers:0
#: view:reformat.all.phonenumbers:base_phone.reformat_all_phonenumbers_form
msgid "Phone numbers that couldn't be reformatted:"
msgstr "Telefonske številke, ki niso bile pretvorjene:"
@ -217,85 +270,69 @@ msgstr "Pretvorba telefonskih številk"
#. module: base_phone
#: model:ir.model,name:base_phone.model_reformat_all_phonenumbers
#: view:reformat.all.phonenumbers:0
#: view:reformat.all.phonenumbers:base_phone.reformat_all_phonenumbers_form
msgid "Reformat all phone numbers"
msgstr "Pretvorba vseh telefonskih številk"
#. module: base_phone
#: code:addons/base_phone/wizard/number_not_found.py:100
#: code:addons/base_phone/wizard/number_not_found.py:102
#, python-format
msgid "Select the Partner to Update."
msgstr "Izbira partnerja za posodobitev"
#. module: base_phone
#: field:reformat.all.phonenumbers,state:0
msgid "State"
msgstr "Stanje"
#. module: base_phone
#: model:ir.ui.menu,name:base_phone.menu_config_phone
#: view:res.users:0
#: view:res.users:base_phone.view_users_form
msgid "Telephony"
msgstr "Telefonija"
#. module: base_phone
#: view:res.users:0
#: view:res.users:base_phone.view_users_form
#: view:res.users:base_phone.view_users_form_simple_modif
msgid "Telephony Preferences"
msgstr "Nastavitve telefonije"
#. module: base_phone
#: sql_constraint:res.company:0
msgid ""
"The value of the field 'Number of Digits To Match From End' must be positive."
msgstr ""
"Vrednost polja 'Število znakov od konca številke za primerjavo' mora biti "
"pozitivna."
"The value of the field 'Number of Digits To Match From End' must be "
"positive."
msgstr "Vrednost polja 'Število znakov od konca številke za primerjavo' mora biti pozitivna."
#. module: base_phone
#: view:reformat.all.phonenumbers:0
#: view:reformat.all.phonenumbers:base_phone.reformat_all_phonenumbers_form
msgid ""
"This wizard reformats the phone, mobile and fax numbers of all partners in "
"standard international format e.g. +33141981242"
msgstr ""
"Čarovnik za pretvorbo telefonskih številk partnerjev v mednarodni format, "
"npr, +33141981242"
msgstr "Čarovnik za pretvorbo telefonskih številk partnerjev v mednarodni format, npr, +33141981242"
#. module: base_phone
#. openerp-web
#: code:addons/base_phone/static/src/js/phone_widget.js:35
#: code:addons/base_phone/static/src/js/phone_widget.js:47
#, python-format
msgid "Unhook your ringing phone"
msgstr "Dvigni slušalko pri zvonjenju"
#. module: base_phone
#: view:number.not.found:0
#: view:number.not.found:base_phone.number_not_found_form
msgid "Update Partner with this Number"
msgstr "Posodobitev partnerja s to številko"
#. module: base_phone
#: constraint:res.partner:0
msgid "You cannot create recursive Partner hierarchies."
msgstr "Ni mogoče ustvariti rekurzivne hierarhije partnerjev."
#. module: base_phone
#: code:addons/base_phone/base_phone.py:84
#, python-format
msgid "You should set a country on the company '%s'"
msgstr "Pri družbi '%s' morate nastaviti državo."
#. module: base_phone
#: model:ir.model,name:base_phone.model_base_phone_installed
msgid "base.phone.installed"
msgstr "base.phone.installed"
#. module: base_phone
#: view:res.partner:0
#: view:res.company:base_phone.view_company_form
#: view:res.partner:base_phone.view_partner_form
msgid "fax"
msgstr "faks"
#. module: base_phone
#: view:res.partner:0
#: view:res.company:base_phone.view_company_form
#: view:res.partner:base_phone.view_partner_form
#: view:res.partner:base_phone.view_partner_simple_form
#: view:res.partner:base_phone.view_partner_tree
msgid "phone"
msgstr "telefon"
#. module: base_phone
#: model:ir.model,name:base_phone.model_phone_common
msgid "phone.common"
msgstr "phone.common"

338
base_phone/i18n/tr.po

@ -0,0 +1,338 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * base_phone
#
# Translators:
# Altinisik <aaltinisik@altinkaya.com.tr>, 2015
msgid ""
msgstr ""
"Project-Id-Version: connector-telephony (8.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-11-01 04:07+0000\n"
"PO-Revision-Date: 2015-12-18 20:39+0000\n"
"Last-Translator: Altinisik <aaltinisik@altinkaya.com.tr>\n"
"Language-Team: Turkish (http://www.transifex.com/oca/OCA-connector-telephony-8-0/language/tr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: tr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: base_phone
#: field:number.not.found,calling_number:0
msgid "Calling Number"
msgstr "Arayan No"
#. module: base_phone
#: view:reformat.all.phonenumbers:base_phone.reformat_all_phonenumbers_form
msgid "Cancel"
msgstr "İptal"
#. module: base_phone
#: code:addons/base_phone/base_phone.py:112
#, python-format
msgid ""
"Cannot reformat the phone number '%s' to international format. Error "
"message: %s"
msgstr "Telefon numarası '%s' uluslararası formata çevrilemedi. Hata mesajı: %s"
#. module: base_phone
#. openerp-web
#: code:addons/base_phone/static/src/js/phone_widget.js:46
#, python-format
msgid "Click2dial started"
msgstr "Tıkla çevir başlatıldı"
#. module: base_phone
#. openerp-web
#: code:addons/base_phone/static/src/js/phone_widget.js:58
#, python-format
msgid "Click2dial successfull"
msgstr "Tıkla çevir başarılı"
#. module: base_phone
#: view:number.not.found:base_phone.number_not_found_form
#: view:reformat.all.phonenumbers:base_phone.reformat_all_phonenumbers_form
msgid "Close"
msgstr "Kapat"
#. module: base_phone
#: model:ir.model,name:base_phone.model_res_company
msgid "Companies"
msgstr "Şirketler"
#. module: base_phone
#: code:addons/base_phone/wizard/number_not_found.py:87
#, python-format
msgid "Create New Partner"
msgstr "Yeni iş ortağı oluştur"
#. module: base_phone
#: view:number.not.found:base_phone.number_not_found_form
msgid "Create Partner with this Number"
msgstr "Bu numara ile yeni iş ortağı oluştur"
#. module: base_phone
#: view:number.not.found:base_phone.number_not_found_form
msgid "Create or Update a Partner"
msgstr "Bir iş ortağı Oluştur ya da Güncelle"
#. module: base_phone
#: field:number.not.found,create_uid:0
#: field:reformat.all.phonenumbers,create_uid:0
msgid "Created by"
msgstr "Oluşturan"
#. module: base_phone
#: field:number.not.found,create_date:0
#: field:reformat.all.phonenumbers,create_date:0
msgid "Created on"
msgstr "Oluşturuldu"
#. module: base_phone
#: field:number.not.found,current_partner_mobile:0
msgid "Current Mobile"
msgstr "Kayıtlı Cep"
#. module: base_phone
#: field:number.not.found,current_partner_phone:0
msgid "Current Phone"
msgstr "Kayıtlı Telefon"
#. module: base_phone
#. openerp-web
#: code:addons/base_phone/static/src/js/phone_widget.js:39
#, python-format
msgid "Dial"
msgstr "Çevir"
#. module: base_phone
#: selection:reformat.all.phonenumbers,state:0
msgid "Done"
msgstr "Tamam"
#. module: base_phone
#: selection:reformat.all.phonenumbers,state:0
msgid "Draft"
msgstr "Taslak"
#. module: base_phone
#: field:number.not.found,e164_number:0
msgid "E.164 Number"
msgstr "E.164 Numara"
#. module: base_phone
#: help:number.not.found,e164_number:0
msgid "E.164 equivalent of the calling number."
msgstr "arayan numaranın E.164 eşdeğeri"
#. module: base_phone
#: view:res.users:base_phone.view_users_form_simple_modif
msgid "Email Preferences"
msgstr "E posta Seçenekleri"
#. module: base_phone
#: code:addons/base_phone/wizard/number_not_found.py:101
#, python-format
msgid "Error:"
msgstr "Hata:"
#. module: base_phone
#: selection:number.not.found,number_type:0
msgid "Fixed"
msgstr "Sabit"
#. module: base_phone
#: field:number.not.found,number_type:0
msgid "Fixed/Mobile"
msgstr "Sabit/Cep"
#. module: base_phone
#: field:base.phone.installed,id:0 field:number.not.found,id:0
#: field:phone.common,id:0 field:reformat.all.phonenumbers,id:0
msgid "ID"
msgstr "ID"
#. module: base_phone
#: help:res.company,number_of_digits_to_match_from_end:0
msgid ""
"In several situations, OpenERP will have to find a Partner/Lead/Employee/..."
" from a phone number presented by the calling party. As the phone numbers "
"presented by your phone operator may not always be displayed in a standard "
"format, the best method to find the related Partner/Lead/Employee/... in "
"OpenERP is to try to match the end of the phone number in OpenERP with the N"
" last digits of the phone number presented by the calling party. N is the "
"value you should enter in this field."
msgstr "Bir çok farklı durumda Odoo arayan numaradan bir İş ortağı/Çalışan vs bulmalıdır. Telefon numaraları servis sağlayıcılar tarafından farklı biçimlerde gönderilebildiği için en iyi yöntem telefon numarasının son N hanesi ile eşleşen kaydı bulmaktır. N bu alana girmeniz gereken değerdir."
#. module: base_phone
#: field:number.not.found,write_uid:0
#: field:reformat.all.phonenumbers,write_uid:0
msgid "Last Updated by"
msgstr "Son güncelleyen"
#. module: base_phone
#: field:number.not.found,write_date:0
#: field:reformat.all.phonenumbers,write_date:0
msgid "Last Updated on"
msgstr "Son güncellendiği"
#. module: base_phone
#: selection:number.not.found,number_type:0
msgid "Mobile"
msgstr "Cep"
#. module: base_phone
#: view:number.not.found:base_phone.number_not_found_form
msgid "Number Not Found"
msgstr "Numara bulunamadı"
#. module: base_phone
#: view:number.not.found:base_phone.number_not_found_form
msgid "Number converted to international format:"
msgstr "Uluslarası biçime çevrilen numara:"
#. module: base_phone
#. openerp-web
#: code:addons/base_phone/static/src/js/phone_widget.js:59
#, python-format
msgid "Number dialed:"
msgstr "Aranan numara:"
#. module: base_phone
#: model:ir.model,name:base_phone.model_number_not_found
msgid "Number not found"
msgstr "Numara bulunamadı"
#. module: base_phone
#: view:number.not.found:base_phone.number_not_found_form
msgid "Number not found:"
msgstr "Numara bulunamadı:"
#. module: base_phone
#: field:res.company,number_of_digits_to_match_from_end:0
msgid "Number of Digits To Match From End"
msgstr "Sondan eşleştirilecek rakam adedi"
#. module: base_phone
#: model:ir.model,name:base_phone.model_res_partner
msgid "Partner"
msgstr "İş Ortağı"
#. module: base_phone
#: help:number.not.found,to_update_partner_id:0
msgid "Partner on which the phone number will be written"
msgstr "Telefon numarasının yazılacağı iş ortağı"
#. module: base_phone
#: field:number.not.found,to_update_partner_id:0
msgid "Partner to Update"
msgstr "Güncellenecek iş ortağı"
#. module: base_phone
#: code:addons/base_phone/wizard/number_not_found.py:107
#, python-format
msgid "Partner: %s"
msgstr "iş ortağı: %s"
#. module: base_phone
#: view:res.company:base_phone.view_company_form
msgid "Phone"
msgstr "Telefon"
#. module: base_phone
#: model:res.groups,name:base_phone.group_callerid
msgid "Phone CallerID"
msgstr "Telefon CallerID"
#. module: base_phone
#: help:number.not.found,calling_number:0
msgid ""
"Phone number of calling party that has been obtained from the telephony "
"server, in the format used by the telephony server (not E.164)."
msgstr "Sizi arayan numaranın telefon sunucusundan alınan telefon numarası (E.164 değil)"
#. module: base_phone
#: field:reformat.all.phonenumbers,phonenumbers_not_reformatted:0
msgid "Phone numbers that couldn't be reformatted"
msgstr "yeniden biçimlendirilemeyen telefon numaraları "
#. module: base_phone
#: view:reformat.all.phonenumbers:base_phone.reformat_all_phonenumbers_form
msgid "Phone numbers that couldn't be reformatted:"
msgstr "Yeniden biçimlendirilemeyen telefon numaraları:"
#. module: base_phone
#: model:ir.actions.act_window,name:base_phone.reformat_all_phonenumbers_action
#: model:ir.ui.menu,name:base_phone.reformat_all_phonenumbers_menu
msgid "Reformat Phone Numbers"
msgstr "Telefon numaralarını yeniden biçimlendir"
#. module: base_phone
#: model:ir.model,name:base_phone.model_reformat_all_phonenumbers
#: view:reformat.all.phonenumbers:base_phone.reformat_all_phonenumbers_form
msgid "Reformat all phone numbers"
msgstr "Bütün telefon numaralarını yeniden biçimlendir"
#. module: base_phone
#: code:addons/base_phone/wizard/number_not_found.py:102
#, python-format
msgid "Select the Partner to Update."
msgstr "Güncellenecek iş ortağını seçin."
#. module: base_phone
#: field:reformat.all.phonenumbers,state:0
msgid "State"
msgstr "Durum"
#. module: base_phone
#: model:ir.ui.menu,name:base_phone.menu_config_phone
#: view:res.users:base_phone.view_users_form
msgid "Telephony"
msgstr "Telefon"
#. module: base_phone
#: view:res.users:base_phone.view_users_form
#: view:res.users:base_phone.view_users_form_simple_modif
msgid "Telephony Preferences"
msgstr "Telefon Ayarları"
#. module: base_phone
#: sql_constraint:res.company:0
msgid ""
"The value of the field 'Number of Digits To Match From End' must be "
"positive."
msgstr "'Sondan eşleştirilecek rakam adedi' alanına sadece pozitif sayılar girilmelidir."
#. module: base_phone
#: view:reformat.all.phonenumbers:base_phone.reformat_all_phonenumbers_form
msgid ""
"This wizard reformats the phone, mobile and fax numbers of all partners in "
"standard international format e.g. +33141981242"
msgstr "Bu sihirbaz Cep, sabit telefon ve faks numaralarını standart E.164 uluslararası biçime sokar."
#. module: base_phone
#. openerp-web
#: code:addons/base_phone/static/src/js/phone_widget.js:47
#, python-format
msgid "Unhook your ringing phone"
msgstr "Çalan telefonunuzu açın"
#. module: base_phone
#: view:number.not.found:base_phone.number_not_found_form
msgid "Update Partner with this Number"
msgstr "İş ortağını bu numara ile güncelle"
#. module: base_phone
#: view:res.company:base_phone.view_company_form
#: view:res.partner:base_phone.view_partner_form
msgid "fax"
msgstr "Faks"
#. module: base_phone
#: view:res.company:base_phone.view_company_form
#: view:res.partner:base_phone.view_partner_form
#: view:res.partner:base_phone.view_partner_simple_form
#: view:res.partner:base_phone.view_partner_tree
msgid "phone"
msgstr "telefon"

6
base_phone/report_sxw_format.py

@ -1,4 +1,4 @@
# -*- encoding: utf-8 -*-
# -*- coding: utf-8 -*-
##############################################################################
#
# Base Phone module for OpenERP
@ -19,12 +19,12 @@
#
##############################################################################
from openerp.osv import orm
from openerp import models
from openerp.report import report_sxw
import phonenumbers
class base_phone_installed(orm.AbstractModel):
class BasePhoneInstalled(models.AbstractModel):
'''When you use monkey patching, the code is executed when the module
is in the addons_path of the OpenERP server, even is the module is not
installed ! In order to avoid the side-effects it can create,

26
base_phone/res_partner_view.xml

@ -8,40 +8,14 @@
<openerp>
<data>
<record id="view_partner_simple_form" model="ir.ui.view">
<field name="name">base.phone.res.partner.simplified.form</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_simple_form"/>
<field name="arch" type="xml">
<field name="phone" position="attributes">
<attribute name="widget">phone</attribute>
</field>
<field name="mobile" position="attributes">
<attribute name="widget">phone</attribute>
</field>
</field>
</record>
<record id="view_partner_form" model="ir.ui.view">
<field name="name">base.phone.res.partner.form</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<xpath expr="//group/group/field[@name='phone']" position="attributes">
<attribute name="widget">phone</attribute>
</xpath>
<xpath expr="//group/group/field[@name='mobile']" position="attributes">
<attribute name="widget">phone</attribute>
</xpath>
<xpath expr="//group/group/field[@name='fax']" position="attributes">
<attribute name="widget">fax</attribute>
</xpath>
<xpath expr="//form[@string='Contact']/sheet/group/field[@name='phone']" position="attributes">
<attribute name="widget">phone</attribute>
</xpath>
<xpath expr="//form[@string='Contact']/sheet/group/field[@name='mobile']" position="attributes">
<attribute name="widget">phone</attribute>
</xpath>
</field>
</record>

4
base_phone/res_users_view.xml

@ -28,11 +28,11 @@
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form_simple_modif" />
<field name="arch" type="xml">
<group string="Email Preferences" position="after">
<xpath expr="//field[@name='email']/.." position="after">
<group name="phone" string="Telephony Preferences" invisible="1">
<!-- Empty group, that is used by other phone modules -->
</group>
</group>
</xpath>
</field>
</record>

62
base_phone/static/src/js/phone_widget.js

@ -1,12 +1,16 @@
/* Base phone module for OpenERP
Copyright (C) 2013-2014 Alexis de Lattre <alexis@via.ecp.fr>
/* Base phone module for Odoo
Copyright (C) 2013-2015 Alexis de Lattre <alexis@via.ecp.fr>
The licence is in the file __openerp__.py */
openerp.base_phone = function (instance) {
odoo.define('base_phone.phone_widget', function (require) {
"use strict";
var _t = instance.web._t;
var core = require('web.core');
var formwidgets = require('web.form_widgets');
var _t = core._t;
instance.base_phone.FieldPhone = instance.web.form.FieldChar.extend({
var FieldPhone = formwidgets.FieldChar.extend({
template: 'FieldPhone',
initialize_content: function() {
this._super();
@ -20,7 +24,7 @@ openerp.base_phone = function (instance) {
} else {
var self = this;
var phone_num = this.get('value');
//console.log('BASE_PHONE phone_num = %s', phone_num);
// console.log('BASE_PHONE phone_num = %s', phone_num);
var href = '#';
var href_text = '';
if (phone_num) {
@ -50,7 +54,7 @@ openerp.base_phone = function (instance) {
'click2dial_model': self.view.dataset.model,
'click2dial_id': self.view.datarecord.id};
self.rpc('/base_phone/click2dial', arg).done(function(r) {
//console.log('Click2dial r=%s', JSON.stringify(r));
// console.log('Click2dial r=%s', JSON.stringify(r));
if (r === false) {
self.do_warn("Click2dial failed");
} else if (typeof r === 'object') {
@ -72,7 +76,7 @@ openerp.base_phone = function (instance) {
target: 'new',
context: context,
};
instance.client.action_manager.do_action(action);
formwidgets.client.action_manager.do_action(action);
}
}
});
@ -84,9 +88,8 @@ openerp.base_phone = function (instance) {
}
});
instance.web.form.widgets.add('phone', 'instance.base_phone.FieldPhone');
instance.base_phone.FieldFax = instance.web.form.FieldChar.extend({
var FieldFax = formwidgets.FieldChar.extend({
template: 'FieldFax',
initialize_content: function() {
this._super();
@ -99,7 +102,7 @@ openerp.base_phone = function (instance) {
this._super();
} else {
var fax_num = this.get('value');
//console.log('BASE_PHONE fax_num = %s', fax_num);
// console.log('BASE_PHONE fax_num = %s', fax_num);
var href = '#';
var href_text = '';
if (fax_num) {
@ -120,17 +123,36 @@ openerp.base_phone = function (instance) {
}
});
instance.web.form.widgets.add('fax', 'instance.base_phone.FieldFax');
// To avoid conflicts, we check that widgets do not exist before using
if(!core.form_widget_registry.get('fax')){
core.form_widget_registry.add('fax', FieldFax);
}
if(!core.form_widget_registry.get('phone')){
core.form_widget_registry.add('phone', FieldPhone);
}
/* ability to add widget="phone" in TREE view */
var _super_list_char_format_ = instance.web.list.Char.prototype._format;
instance.web.list.Char.prototype._format = function(row_data, options) {
res = _super_list_char_format_.call(this, row_data, options);
/*
var Column = require('web.list_view.js');
var ColumnPhone = Column.extend({
// ability to add widget="phone" in TREE view
_format: function(row_data, options) {
console.log('row_data=' + row_data);
console.log('options=');
console.log(options);
var value = row_data[this.id].value;
if (value && this.widget === 'phone') {
return formatInternational('', value);
readable_space = formatInternational('', value);
readable_no_break_space = readable_space.replace(/\s/g, ' ');
return readable_no_break_space;
}
return res;
};
console.log('return normal');
return this._super(row_data, options);
}
});
};
core.list_widget_registry.add('field.phone', ColumnPhone);
*/
});

4
base_phone/static/src/xml/phone.xml

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Base phone module for OpenERP
Copyright (C) 2013-2014 Alexis de Lattre <alexis@via.ecp.fr>
Base phone module for Odoo
Copyright (C) 2013-2015 Alexis de Lattre <alexis@via.ecp.fr>
The licence is in the file __openerp__.py
-->

5
base_phone/test/phonenum.yml

@ -1,3 +1,8 @@
-
Write country = FR for the main company
-
!record {model: res.company, id: base.main_company}:
country_id: base.fr
-
Write french phone numbers in national format
-

114
base_phone/wizard/number_not_found.py

@ -1,4 +1,4 @@
# -*- encoding: utf-8 -*-
# -*- coding: utf-8 -*-
##############################################################################
#
# Base Phone module for Odoo
@ -19,7 +19,7 @@
#
##############################################################################
from openerp.osv import orm, fields
from openerp import models, fields, api, exceptions
from openerp.tools.translate import _
import logging
import phonenumbers
@ -27,43 +27,40 @@ import phonenumbers
_logger = logging.getLogger(__name__)
class number_not_found(orm.TransientModel):
class NumberNotFound(models.TransientModel):
_name = "number.not.found"
_description = "Number not found"
_columns = {
'calling_number': fields.char(
'Calling Number', size=64, readonly=True,
help="Phone number of calling party that has been obtained "
"from the telephony server, in the format used by the "
"telephony server (not E.164)."),
'e164_number': fields.char(
'E.164 Number', size=64,
help="E.164 equivalent of the calling number."),
'number_type': fields.selection(
[('phone', 'Fixed'), ('mobile', 'Mobile')],
'Fixed/Mobile', required=True),
'to_update_partner_id': fields.many2one(
'res.partner', 'Partner to Update',
help="Partner on which the phone number will be written"),
'current_partner_phone': fields.related(
'to_update_partner_id', 'phone', type='char',
relation='res.partner', string='Current Phone', readonly=True),
'current_partner_mobile': fields.related(
'to_update_partner_id', 'mobile', type='char',
relation='res.partner', string='Current Mobile', readonly=True),
}
calling_number = fields.Char(string='Calling Number', size=64,
readonly=True,
help="Phone number of calling party that has "
"been obtained from the telephony server, in "
"the format used by the telephony server "
"(not E.164).")
e164_number = fields.Char(string='E.164 Number', size=64,
help="E.164 equivalent of the calling number.")
number_type = fields.Selection(selection=[
('phone', 'Fixed'),
('mobile', 'Mobile')
], string='Fixed/Mobile', required=True)
to_update_partner_id = fields.Many2one(comodel_name='res.partner',
string='Partner to Update',
help="Partner on which the phone "
"number will be written")
current_partner_phone = fields.Char(related='to_update_partner_id.phone',
string='Current Phone', readonly=True)
current_partner_mobile = fields.Char(related='to_update_partner_id.mobile',
string='Current Mobile',
readonly=True)
def default_get(self, cr, uid, fields_list, context=None):
res = super(number_not_found, self).default_get(
cr, uid, fields_list, context=context
)
@api.model
def default_get(self, fields_list):
res = super(NumberNotFound, self).default_get(fields_list)
if not res:
res = {}
if res.get('calling_number'):
convert = self.pool['res.partner']._generic_reformat_phonenumbers(
cr, uid, None, {'phone': res.get('calling_number')},
context=context)
convert = self.env['res.partner']._generic_reformat_phonenumbers(
None, {'phone': res.get('calling_number')})
parsed_num = phonenumbers.parse(convert.get('phone'))
res['e164_number'] = phonenumbers.format_number(
parsed_num, phonenumbers.PhoneNumberFormat.INTERNATIONAL)
@ -74,15 +71,15 @@ class number_not_found(orm.TransientModel):
res['number_type'] = 'phone'
return res
def create_partner(self, cr, uid, ids, context=None):
@api.multi
def create_partner(self):
'''Function called by the related button of the wizard'''
if context is None:
context = {}
wiz = self.browse(cr, uid, ids[0], context=context)
wiz = self[0]
parsed_num = phonenumbers.parse(wiz.e164_number, None)
phonenumbers.number_type(parsed_num)
context['default_%s' % wiz.number_type] = wiz.e164_number
context = dict(self._context or {})
context.update({'default_%s' % wiz.number_type: wiz.e164_number})
action = {
'name': _('Create New Partner'),
'view_mode': 'form,tree,kanban',
@ -91,18 +88,19 @@ class number_not_found(orm.TransientModel):
'nodestroy': False,
'target': 'current',
'context': context,
}
}
return action
def update_partner(self, cr, uid, ids, context=None):
wiz = self.browse(cr, uid, ids[0], context=context)
@api.multi
def update_partner(self):
wiz = self[0]
if not wiz.to_update_partner_id:
raise orm.except_orm(
_('Error:'),
_("Select the Partner to Update."))
self.pool['res.partner'].write(
cr, uid, wiz.to_update_partner_id.id,
{wiz.number_type: wiz.e164_number}, context=context)
raise exceptions.Warning(
_('Error'),
_('Select the Partner to Update.'))
self.env['res.partner'].write(
wiz.to_update_partner_id.id,
{wiz.number_type: wiz.e164_number})
action = {
'name': _('Partner: %s' % wiz.to_update_partner_id.name),
'type': 'ir.actions.act_window',
@ -111,23 +109,11 @@ class number_not_found(orm.TransientModel):
'nodestroy': False,
'target': 'current',
'res_id': wiz.to_update_partner_id.id,
'context': context,
}
'context': self._context,
}
return action
def onchange_to_update_partner(
self, cr, uid, ids, to_update_partner_id, context=None):
res = {'value': {}}
if to_update_partner_id:
to_update_partner = self.pool['res.partner'].browse(
cr, uid, to_update_partner_id, context=context)
res['value'].update({
'current_partner_phone': to_update_partner.phone,
'current_partner_mobile': to_update_partner.mobile,
})
else:
res['value'].update({
'current_partner_phone': False,
'current_partner_mobile': False,
})
return res
@api.onchange('to_update_partner_id')
def onchange_to_update_partner(self):
self.current_partner_phone = self.to_update_partner.phone or False
self.current_partner_mobile = self.to_update_partner.mobile or False

3
base_phone/wizard/number_not_found_view.xml

@ -32,8 +32,7 @@
colspan="1" col="2">
<button name="create_partner" class="oe_highlight" colspan="2"
string="Create Partner with this Number" type="object"/>
<field name="to_update_partner_id"
on_change="onchange_to_update_partner(to_update_partner_id)"/>
<field name="to_update_partner_id" />
<field name="current_partner_phone" widget="phone"
options="{'dial_button_invisible': True}"/>
<field name="current_partner_mobile" widget="phone"

77
base_phone/wizard/reformat_all_phonenumbers.py

@ -1,4 +1,4 @@
# -*- encoding: utf-8 -*-
# -*- coding: utf-8 -*-
##############################################################################
#
# Base Phone module for Odoo
@ -19,13 +19,13 @@
#
##############################################################################
from openerp import models, fields
from openerp import models, fields, api
import logging
logger = logging.getLogger(__name__)
class reformat_all_phonenumbers(models.TransientModel):
class ReformatAllPhonenumbers(models.TransientModel):
_name = "reformat.all.phonenumbers"
_inherit = "res.config.installer"
_description = "Reformat all phone numbers"
@ -37,18 +37,18 @@ class reformat_all_phonenumbers(models.TransientModel):
('done', 'Done'),
], string='State', default='draft')
def run_reformat_all_phonenumbers(self, cr, uid, ids, context=None):
@api.multi
def run_reformat_all_phonenumbers(self):
self.ensure_one()
logger.info('Starting to reformat all the phone numbers')
phonenumbers_not_reformatted = ''
phoneobjects = self.pool['phone.common']._get_phone_fields(
cr, uid, context=context)
ctx_raise = dict(context, raise_if_phone_parse_fails=True)
phonenumbers_not_reformatted = u''
phoneobjects = self.env['phone.common']._get_phone_fields()
for objname in phoneobjects:
fields = self.pool[objname]._phone_fields
obj = self.pool[objname]
fields = self.env[objname]._phone_fields
obj = self.env[objname]
logger.info(
'Starting to reformat phone numbers on object %s '
'(fields = %s)' % (objname, fields))
'(fields = %s)', objname, fields)
# search if this object has an 'active' field
if obj._columns.get('active') or objname == 'hr.employee':
# hr.employee inherits from 'resource.resource' and
@ -58,47 +58,44 @@ class reformat_all_phonenumbers(models.TransientModel):
domain = ['|', ('active', '=', True), ('active', '=', False)]
else:
domain = []
all_ids = obj.search(cr, uid, domain, context=context)
for entry in obj.read(
cr, uid, all_ids, fields, context=context):
init_entry = entry.copy()
all_entries = obj.search(domain)
for entry in all_entries:
init_entry_vals = {}
for field in fields:
init_entry_vals[field] = entry[field]
entry_vals = init_entry_vals.copy()
# entry is _updated_ by the fonction
# _generic_reformat_phonenumbers()
try:
obj._generic_reformat_phonenumbers(
cr, uid, [entry['id']], entry, context=ctx_raise)
entry.with_context(raise_if_phone_parse_fails=True).\
_reformat_phonenumbers_write(entry_vals)
except Exception, e:
name = obj.name_get(
cr, uid, [init_entry['id']], context=context)[0][1]
name = entry.name_get()[0][1]
phonenumbers_not_reformatted += \
"Problem on %s '%s'. Error message: %s\n" % (
obj._description, name, unicode(e))
logger.warning(
"Problem on %s '%s'. Error message: %s" % (
obj._description, name, unicode(e)))
"Problem on %s '%s'. Error message: %s",
obj._description, name, unicode(e))
continue
if any(
[init_entry.get(field)
!= entry.get(field) for field
in fields]):
entry.pop('id')
if any([
init_entry_vals.get(field) != entry_vals.get(field) for
field in fields]):
logger.info(
'[%s] Reformating phone number: FROM %s TO %s' % (
obj._description, unicode(init_entry),
unicode(entry)))
obj.write(
cr, uid, init_entry['id'], entry, context=context)
'[%s] Reformating phone number: FROM %s TO %s',
obj._description, unicode(init_entry_vals),
unicode(entry_vals))
entry.write(entry_vals)
if not phonenumbers_not_reformatted:
phonenumbers_not_reformatted = \
'All phone numbers have been reformatted successfully.'
self.write(
cr, uid, ids[0], {
'phonenumbers_not_reformatted': phonenumbers_not_reformatted,
'state': 'done',
}, context=context)
self.write({
'phonenumbers_not_reformatted': phonenumbers_not_reformatted,
'state': 'done',
})
logger.info('End of the phone number reformatting wizard')
action = self.pool['ir.actions.act_window'].for_xml_id(
cr, uid, 'base_phone', 'reformat_all_phonenumbers_action',
context=context)
action['res_id'] = ids[0]
action = self.env['ir.actions.act_window'].for_xml_id(
'base_phone', 'reformat_all_phonenumbers_action')
action['res_id'] = self.id
return action
Loading…
Cancel
Save