[MERGE] from trunk

bzr revid: xmo@openerp.com-20121010154436-wz29sdkbs9vvhjba
This commit is contained in:
Xavier Morel 2012-10-10 17:44:36 +02:00
commit 1e4a677f05
155 changed files with 5205 additions and 2511 deletions

1
debian/control vendored
View File

@ -24,6 +24,7 @@ Depends:
python-lxml, python-lxml,
python-mako, python-mako,
python-openid, python-openid,
python-psutil,
python-psycopg2, python-psycopg2,
python-pybabel, python-pybabel,
python-pychart, python-pychart,

View File

@ -1,63 +0,0 @@
# Gunicorn sample configuration file.
# See http://gunicorn.org/configure.html for more details.
#
# To run the OpenERP server via Gunicorn, change the appropriate
# settings below, in order to provide the parameters that
# would normally be passed in the command-line,
# (at least `bind` and `conf['addons_path']`), then execute:
# $ gunicorn openerp:wsgi.core.application -c gunicorn.conf.py
# or if you want to run it behind a reverse proxy, add the line
# import openerp.wsgi.proxied
# in this file and execute:
# $ gunicorn openerp:wsgi.proxied.application -c gunicorn.conf.py
import openerp
# Standard OpenERP XML-RPC port is 8069
bind = '127.0.0.1:8069'
pidfile = '.gunicorn.pid'
# Gunicorn recommends 2-4 x number_of_cpu_cores, but
# you'll want to vary this a bit to find the best for your
# particular work load.
workers = 4
# Some application-wide initialization is needed.
on_starting = openerp.wsgi.core.on_starting
when_ready = openerp.wsgi.core.when_ready
pre_request = openerp.wsgi.core.pre_request
post_request = openerp.wsgi.core.post_request
# openerp request-response cycle can be quite long for
# big reports for example
timeout = 240
max_requests = 2000
# Equivalent of --load command-line option
openerp.conf.server_wide_modules = ['web']
# internal TODO: use openerp.conf.xxx when available
conf = openerp.tools.config
# Path to the OpenERP Addons repository (comma-separated for
# multiple locations)
conf['addons_path'] = '/home/openerp/addons/trunk,/home/openerp/web/trunk/addons'
# Optional database config if not using local socket
#conf['db_name'] = 'mycompany'
#conf['db_host'] = 'localhost'
#conf['db_user'] = 'foo'
#conf['db_port'] = 5432
#conf['db_password'] = 'secret'
# OpenERP Log Level
# DEBUG=10, DEBUG_RPC=8, DEBUG_RPC_ANSWER=6, DEBUG_SQL=5, INFO=20,
# WARNING=30, ERROR=40, CRITICAL=50
# conf['log_level'] = 20
# If --static-http-enable is used, path for the static web directory
#conf['static_http_document_root'] = '/var/www'
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -30,7 +30,6 @@ GNU Public Licence.
(c) 2003-TODAY, Fabien Pinckaers - OpenERP SA (c) 2003-TODAY, Fabien Pinckaers - OpenERP SA
""" """
import imp
import logging import logging
import os import os
import signal import signal
@ -92,7 +91,7 @@ def setup_pid_file():
def preload_registry(dbname): def preload_registry(dbname):
""" Preload a registry, and start the cron.""" """ Preload a registry, and start the cron."""
try: try:
db, registry = openerp.pooler.get_db_and_pool(dbname, update_module=config['init'] or config['update'], pooljobs=False) db, registry = openerp.pooler.get_db_and_pool(dbname, update_module=openerp.tools.config['init'] or openerp.tools.config['update'], pooljobs=False)
# jobs will start to be processed later, when openerp.cron.start_master_thread() is called by openerp.service.start_services() # jobs will start to be processed later, when openerp.cron.start_master_thread() is called by openerp.service.start_services()
registry.schedule_cron_jobs() registry.schedule_cron_jobs()
@ -111,7 +110,6 @@ def run_test_file(dbname, test_file):
except Exception: except Exception:
_logger.exception('Failed to initialize database `%s` and run test file `%s`.', dbname, test_file) _logger.exception('Failed to initialize database `%s` and run test file `%s`.', dbname, test_file)
def export_translation(): def export_translation():
config = openerp.tools.config config = openerp.tools.config
dbname = config['db_name'] dbname = config['db_name']
@ -203,9 +201,10 @@ def quit_on_signals():
try: try:
while quit_signals_received == 0: while quit_signals_received == 0:
time.sleep(60) time.sleep(60)
except KeyboardInterrupt, e: except KeyboardInterrupt:
pass pass
config = openerp.tools.config
if config['pidfile']: if config['pidfile']:
os.unlink(config['pidfile']) os.unlink(config['pidfile'])
@ -218,8 +217,7 @@ def configure_babel_localedata_path():
import babel import babel
babel.localedata._dirname = os.path.join(os.path.dirname(sys.executable), 'localedata') babel.localedata._dirname = os.path.join(os.path.dirname(sys.executable), 'localedata')
if __name__ == "__main__": def main():
os.environ["TZ"] = "UTC" os.environ["TZ"] = "UTC"
check_root_user() check_root_user()
@ -248,20 +246,13 @@ if __name__ == "__main__":
sys.exit(0) sys.exit(0)
if not config["stop_after_init"]: if not config["stop_after_init"]:
setup_pid_file()
# Some module register themselves when they are loaded so we need the # Some module register themselves when they are loaded so we need the
# services to be running before loading any registry. # services to be running before loading any registry.
openerp.service.start_services() if config['workers']:
openerp.service.start_services_workers()
for m in openerp.conf.server_wide_modules: else:
try: openerp.service.start_services()
openerp.modules.module.load_openerp_module(m)
except Exception:
msg = ''
if m == 'web':
msg = """
The `web` module is provided by the addons found in the `openerp-web` project.
Maybe you forgot to add those addons in your addons_path configuration."""
_logger.exception('Failed to load server-wide module `%s`.%s', m, msg)
if config['db_name']: if config['db_name']:
for dbname in config['db_name'].split(','): for dbname in config['db_name'].split(','):
@ -270,8 +261,10 @@ Maybe you forgot to add those addons in your addons_path configuration."""
if config["stop_after_init"]: if config["stop_after_init"]:
sys.exit(0) sys.exit(0)
setup_pid_file()
_logger.info('OpenERP server is running, waiting for connections...') _logger.info('OpenERP server is running, waiting for connections...')
quit_on_signals() quit_on_signals()
if __name__ == "__main__":
main()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

54
openerp-wsgi.py Normal file
View File

@ -0,0 +1,54 @@
#!/usr/bin/python
# WSGI Handler sample configuration file.
#
# Change the appropriate settings below, in order to provide the parameters
# that would normally be passed in the command-line.
# (at least conf['addons_path'])
#
# For generic wsgi handlers a global application is defined.
# For uwsgi this should work:
# $ uwsgi_python --http :9090 --pythonpath . --wsgi-file openerp-wsgi.py
#
# For gunicorn additional globals need to be defined in the Gunicorn section.
# Then the following command should run:
# $ gunicorn openerp:service.wsgi_server.application -c openerp-wsgi.py
import openerp
#----------------------------------------------------------
# Common
#----------------------------------------------------------
openerp.multi_process = True # Nah!
# Equivalent of --load command-line option
openerp.conf.server_wide_modules = ['web']
conf = openerp.tools.config
# Path to the OpenERP Addons repository (comma-separated for
# multiple locations)
conf['addons_path'] = '../../addons/trunk,../../web/trunk/addons'
# Optional database config if not using local socket
#conf['db_name'] = 'mycompany'
#conf['db_host'] = 'localhost'
#conf['db_user'] = 'foo'
#conf['db_port'] = 5432
#conf['db_password'] = 'secret'
#----------------------------------------------------------
# Generic WSGI handlers application
#----------------------------------------------------------
application = openerp.service.wsgi_server.application
#----------------------------------------------------------
# Gunicorn
#----------------------------------------------------------
# Standard OpenERP XML-RPC port is 8069
bind = '127.0.0.1:8069'
pidfile = '.gunicorn.pid'
workers = 4
timeout = 240
max_requests = 2000
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -38,11 +38,19 @@ import run_tests
import service import service
import sql_db import sql_db
import test import test
import tiny_socket
import tools import tools
import wizard import wizard
import workflow import workflow
import wsgi # backward compatilbility
# TODO: This is for the web addons, can be removed later.
wsgi = service
wsgi.register_wsgi_handler = wsgi.wsgi_server.register_wsgi_handler
# Is the server running in multi-process mode (e.g. behind Gunicorn).
# If this is True, the processes have to communicate some events,
# e.g. database update or cache invalidation. Each process has also
# its own copy of the data structure and we don't need to care about
# locks between threads.
multi_process = False
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -36,7 +36,7 @@ The kernel of OpenERP, needed for all installation.
'data': [ 'data': [
'base_data.xml', 'base_data.xml',
'currency_data.xml', 'currency_data.xml',
'country_data.xml', 'res/res_country_data.xml',
'security/base_security.xml', 'security/base_security.xml',
'base_menu.xml', 'base_menu.xml',
'res/res_security.xml', 'res/res_security.xml',
@ -98,7 +98,6 @@ The kernel of OpenERP, needed for all installation.
], ],
'installable': True, 'installable': True,
'auto_install': True, 'auto_install': True,
'certificate': '0076807797149',
'css': ['static/src/css/modules.css'], 'css': ['static/src/css/modules.css'],
} }
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -294,7 +294,6 @@ CREATE TABLE ir_module_module (
shortdesc character varying(256), shortdesc character varying(256),
complexity character varying(32), complexity character varying(32),
category_id integer REFERENCES ir_module_category ON DELETE SET NULL, category_id integer REFERENCES ir_module_category ON DELETE SET NULL,
certificate character varying(64),
description text, description text,
application boolean default False, application boolean default False,
demo boolean default False, demo boolean default False,

File diff suppressed because it is too large Load Diff

View File

@ -14,5 +14,12 @@
<field name="company_id" ref="main_company"/> <field name="company_id" ref="main_company"/>
<field name="groups_id" eval="[(6,0,[ref('base.group_user')])]"/> <field name="groups_id" eval="[(6,0,[ref('base.group_user')])]"/>
</record> </record>
<!-- new rate for demo transactions in multi currency -->
<record id="rateUSDbis" model="res.currency.rate">
<field name="rate">1.5289</field>
<field name="currency_id" ref="USD"/>
<field eval="time.strftime('%Y-06-06')" name="name"/>
</record>
</data> </data>
</openerp> </openerp>

View File

@ -29,5 +29,17 @@
<menuitem id="menu_ir_property" name="Parameters" parent="menu_custom" sequence="24"/> <menuitem id="menu_ir_property" name="Parameters" parent="menu_custom" sequence="24"/>
<menuitem id="next_id_4" name="Low Level Objects" parent="menu_custom" sequence="30"/> <menuitem id="next_id_4" name="Low Level Objects" parent="menu_custom" sequence="30"/>
<record id="action_client_base_menu" model="ir.actions.client">
<field name="name">Open Settings Menu</field>
<field name="tag">reload</field>
<field name="params" eval="{'menu_id': ref('base.menu_administration')}"/>
</record>
<record id="open_menu" model="ir.actions.todo">
<field name="action_id" ref="action_client_base_menu"/>
<field name="type">automatic</field>
<field name="sequence">100</field>
<field name="state">done</field>
</record>
</data> </data>
</openerp> </openerp>

View File

@ -8,6 +8,7 @@
<field name="symbol">$</field> <field name="symbol">$</field>
<field name="rounding">0.01</field> <field name="rounding">0.01</field>
<field name="accuracy">4</field> <field name="accuracy">4</field>
<field name="position">before</field>
<field name="company_id" ref="main_company"/> <field name="company_id" ref="main_company"/>
</record> </record>
<record id="rateUSD" model="res.currency.rate"> <record id="rateUSD" model="res.currency.rate">

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:37+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:35+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:38+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:35+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:38+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:35+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:38+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:35+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -727,7 +727,7 @@ msgstr ""
#: help:ir.actions.todo,type:0 #: help:ir.actions.todo,type:0
msgid "Manual: Launched manually.\n" msgid "Manual: Launched manually.\n"
"Automatic: Runs whenever the system is reconfigured.\n" "Automatic: Runs whenever the system is reconfigured.\n"
"Launch Manually Once: after hacing been launched manually, it sets automatically to Done." "Launch Manually Once: after having been launched manually, it sets automatically to Done."
msgstr "" msgstr ""
#. module: base #. module: base
@ -1317,11 +1317,6 @@ msgstr ""
msgid "Create _Menu" msgid "Create _Menu"
msgstr "" msgstr ""
#. module: base
#: field:res.payterm,name:0
msgid "Payment Term (short name)"
msgstr ""
#. module: base #. module: base
#: model:ir.model,name:base.model_res_bank #: model:ir.model,name:base.model_res_bank
#: view:res.bank:0 #: view:res.bank:0
@ -2155,7 +2150,7 @@ msgstr ""
#. module: base #. module: base
#: selection:base.language.install,lang:0 #: selection:base.language.install,lang:0
msgid "Portugese (BR) / Português (BR)" msgid "Portuguese (BR) / Português (BR)"
msgstr "" msgstr ""
#. module: base #. module: base
@ -3002,7 +2997,7 @@ msgstr ""
#. module: base #. module: base
#: selection:base.language.install,lang:0 #: selection:base.language.install,lang:0
msgid "Portugese / Português" msgid "Portuguese / Português"
msgstr "" msgstr ""
#. module: base #. module: base
@ -3206,11 +3201,6 @@ msgstr ""
msgid "Error ! You cannot create recursive associated members." msgid "Error ! You cannot create recursive associated members."
msgstr "" msgstr ""
#. module: base
#: view:res.payterm:0
msgid "Payment Term"
msgstr ""
#. module: base #. module: base
#: selection:res.lang,direction:0 #: selection:res.lang,direction:0
msgid "Right-to-Left" msgid "Right-to-Left"
@ -3430,7 +3420,7 @@ msgstr ""
#. module: base #. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir #: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "M." msgid "Sir"
msgstr "" msgstr ""
#. module: base #. module: base
@ -5037,7 +5027,7 @@ msgstr ""
#. module: base #. module: base
#: help:res.country.state,code:0 #: help:res.country.state,code:0
msgid "The state code in three chars.\n" msgid "The state code in max. three chars."
"" ""
msgstr "" msgstr ""
@ -10134,7 +10124,7 @@ msgstr ""
#. module: base #. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss #: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Mss" msgid "Miss"
msgstr "" msgstr ""
#. module: base #. module: base
@ -10249,7 +10239,7 @@ msgstr ""
#. module: base #. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam #: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Ms." msgid "Mrs."
msgstr "" msgstr ""
#. module: base #. module: base
@ -11306,6 +11296,35 @@ msgstr ""
msgid "Madam" msgid "Madam"
msgstr "" msgstr ""
#. module: base
#: model:res.partner.title,name:base.res_partner_title_mister
msgid "Mister"
msgstr ""
#. module: base
#: model:res.partner.title,name:base.res_partner_title_doctor
msgid "Doctor"
msgstr ""
#. module: base
#: model:res.partner.title,name:base.res_partner_title_prof
msgid "Professor"
msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_mister
msgid "Mr."
msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_doctor
msgid "Dr."
msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_prof
msgid "Prof."
msgstr ""
#. module: base #. module: base
#: model:res.country,name:base.ee #: model:res.country,name:base.ee
msgid "Estonia" msgid "Estonia"

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:39+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:36+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:38+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:36+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:39+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:36+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:39+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:36+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
"X-Poedit-Language: Czech\n" "X-Poedit-Language: Czech\n"
#. module: base #. module: base

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:39+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:36+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:40+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:37+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh
@ -7492,7 +7492,7 @@ msgstr "Arbeitstage"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_multi_company #: model:ir.module.module,shortdesc:base.module_multi_company
msgid "Multi-Company" msgid "Multi-Company"
msgstr "" msgstr "Mehrfach-Unternehmen"
#. module: base #. module: base
#: field:ir.actions.report.xml,report_rml_content:0 #: field:ir.actions.report.xml,report_rml_content:0
@ -8331,6 +8331,21 @@ msgid ""
"Secondly, price differences between actual purchase price and fixed product " "Secondly, price differences between actual purchase price and fixed product "
"standard price are booked on a separate account" "standard price are booked on a separate account"
msgstr "" msgstr ""
"\n"
"Dieses Modul unterstützt die Angelsächsische Buchungsmethodik durch Änderung "
"der Buchungslogik bei Lagerbewegungen.\n"
"============================================================================="
"=========================\n"
"\n"
"Der Unterschied zwischen Angelsächsischer und der \"Rheinischen\" (auch "
"kontinentale genannt) Buchungsmethoden liegt im Bewertungsansatz. "
"Angelsächsisch werden die Kosten im Moment des Verkaufs, Kontinental werden "
"die Kosten bis zum Versand herangezogen. Dieses Modul fügt diese "
"Funktionalität durch Hinzufügen eines Interimskontos ein, in dem der Wert "
"der ausgelieferten Ware gegengebucht wird, wenn die Rechnung erstellt wird "
"und der Gegenwert auf das Debtoren- bzw. Kreditorenkonto wertgestellt wird.\n"
"Zweitens werden Preisunterschiede zwischen aktuellen Einkaufspreis und dem "
"vorgegebenen Einstandspreis auf einem separaten Konto verbucht."
#. module: base #. module: base
#: field:res.partner,title:0 #: field:res.partner,title:0
@ -8689,6 +8704,95 @@ msgid ""
"from Gate A\n" "from Gate A\n"
" " " "
msgstr "" msgstr ""
"\n"
"Dieses Modul ergänzt das Lager-Verwaltungs-Modul durch Umsetzung Push- und "
"Pull-Warenflüsse.\n"
"============================================================================="
"=====\n"
"\n"
"Typischerweise kann dies verwendet werden für:\n"
"* Verwaltung von Produkt-Fertigungs-Flüssen\n"
"* Verwaltung von Standard-Lagerorten je Produkt\n"
"* Waren-Routing innerhalb der Lager an betriebliche Erfordernisse anpassen, "
"wie z. B.\n"
" - Qualitätskontrollen\n"
" - \"After Sales\" Dienstleistungen\n"
" - Retouren an Lieferanten\n"
"\n"
"* Unterstützen von Vermietungsverwaltung, durch Erzeugen von automatischen "
"Retouren für Mietobjekte\n"
"\n"
"Nach der Installation dieses Moduls erscheint ein zusätzlicher Reiter im "
"Produkt-Formular, in dem Sie Push-/Pull-Flüsse festlegen können. Die "
"Demodaten des Produktes CPU1 zeigen dies:\n"
"\n"
"Push-Flüsse\n"
"----------\n"
"Push-Flüsse sind sinnvoll, wenn der Warenzugang immer eine entsprechende "
"Warenbewegung \n"
"an einen anderen Ort, ggf. mit Zeitverzögerung, zur Folge haben soll. Die "
"ursprüngliche\n"
"Lagerverwaltung sieht bereits Push-Flüsse per Lagerort vor, diese können "
"jedoch nicht per\n"
"Produkt detailliert werden.\n"
"\n"
"Ein Push-Fluss wird durch die Festlegung der Verkettung der Lagerorte und "
"der jeweiligen \n"
"Parameter. Sobald eine vorgegebene Anzahl Produkte am Quellort bewegt "
"wurden, wird eine \n"
"verkettete Bewegung gemäß der Fluss-Parameter (Zielort, Verzögerung, "
"Bewegungsart, \n"
"Berichtsinhalt, ...) vorgesehen. Die neue Lagerbewegung kann, je nach "
"Angaben, automatisch\n"
"geschehen oder aber manuell bestätigt und angestossen werden.\n"
"\n"
"Pull-Flüsse\n"
"----------\n"
"Pull-Flüsse sind ein wenig anders als Push-Flüsse, in dem sie nicht so sehr "
"in Bezug stehen \n"
"zu Lagerbewegungen, sondern vielmehr aus Bedarfen abgeleitet werden.\n"
"Was \"bezogen\" wird erzeugt einen Bedarf, nicht notwendigerweise ein "
"Produkt.\n"
"Ein klassisches Beispiel für einen Pull-Fluss ist ein Unternehmen mit "
"Verkaufsfilialen (Outlets).\n"
"Das Mutterhaus ist für die Belieferung der Filialen zuständig.\n"
"\n"
"[Kunde] <- A [Filiale A] <- B [Holding] <~ C [Lieferant]\n"
"\n"
"Wenn ein Beschaffungsauftrag in der Filiale A (z. B. durch einen "
"Verkauf/Auftrag) eintrifft, wird\n"
"daraus ein weiterer Beschaffungsauftrag erstellt, welcher an \"Holding B\" "
"eine Anforderung\n"
"bewirkt (Bezugsanforderung). Hier wird lediglich ein Lagertransfer von der "
"Holding B nach \n"
"Filiale A angestossen.\n"
"Wenn die Bedarfsanforderung der Filiale in der Holding bearbeitet wird und, "
"sollte der\n"
"Bestand in der Holding ausverkauft sein, so kann daraus ein "
"Beschaffungsauftrag an den\n"
"Lieferanten C erstellt werden (Pull/Bezug).\n"
"Im Ergebnis wird der Bezug des Kunden in der Filiale Bedarfsanforderungen "
"bis hin zum \n"
"Lieferanten bewirken.\n"
"\n"
"Technisch erlaubt ein Pull-Fluss eine andere Behandlung von Beschaffungen in "
"Abhängigkeit\n"
"nicht nur des betrachteten Produktes selbst, sondern auch vom Ort an dem der "
"Bedarf\n"
"auftritt bzw. dessen Ziel.\n"
"\n"
"Anwendungsfall:\n"
"--------\n"
"\n"
"Sie können die Demonstrationsdaten folgendemassen verwenden:\n"
"CPU1: Eine CPU1 im Shop 1 verkaufen und die Terminierung laufen lassen\n"
"- Lager: Lieferschein, Shop 1: Wareneingang\n"
"CPU3:\n"
"- Bei Erhalt des Produktes wird dies der Qualitätskontrolle zugeführt, "
"danach im Regal 2 abgelegt.\n"
"- Bei Lieferung an den Kunden: Warenentnahmeschein -> Packliste -> "
"Lieferschein von Tor A\n"
" "
#. module: base #. module: base
#: model:ir.module.module,description:base.module_marketing #: model:ir.module.module,description:base.module_marketing
@ -8880,6 +8984,21 @@ msgid ""
"invoice and send propositions for membership renewal.\n" "invoice and send propositions for membership renewal.\n"
" " " "
msgstr "" msgstr ""
"\n"
"Dieses Modul ermöglicht die Mitglieder-Verwaltung.\n"
"==============================================\n"
"\n"
"Es werden verschiedene Arten von Mitgliedern unterstützt:\n"
"* Beitragsfreie Mitglieder\n"
"* Gruppenmitglieder (z. B. Teilnehmer-Gruppen zur Mitgliedschaft aller "
"Gruppenmitglieder)\n"
"* Beitragspflichtige Mitglieder\n"
"* Sonderpreise für bestimmte Mitglieder\n"
"\n"
"Integriert wird dieses Modul in das Verkaufsmodul und die Buchhaltung und "
"erlaubt automatische\n"
"Rechnungsstellung und das Versenden von Mitgliedschaftsverlängerungen.\n"
" "
#. module: base #. module: base
#: model:ir.module.module,description:base.module_hr_attendance #: model:ir.module.module,description:base.module_hr_attendance
@ -8892,6 +9011,13 @@ msgid ""
"actions(Sign in/Sign out) performed by them.\n" "actions(Sign in/Sign out) performed by them.\n"
" " " "
msgstr "" msgstr ""
"\n"
"Dieses Modul verwaltet die Anwesenheitszeiten von Mitarbeitern.\n"
"=========================================================\n"
"\n"
"Führt Konten über die Anwesenheiten der Mitarbeiter aus Basis von Aktionen \n"
"(An- und Abmeldung) durch diese.\n"
" "
#. module: base #. module: base
#: field:ir.module.module,maintainer:0 #: field:ir.module.module,maintainer:0
@ -8961,6 +9087,21 @@ msgid ""
" * Number Padding\n" " * Number Padding\n"
" " " "
msgstr "" msgstr ""
"\n"
"Dieses Modul verwaltet intern verwendete Folgen-/Sequenznummern für Einträge "
"der Buchhaltung.\n"
"============================================================================="
"======\n"
"\n"
"Ermöglich Ihnen die Einstellung der geführten Buchungssequenzen.\n"
"\n"
"Sie können dabei folgende Einstellungen vornehmen:\n"
" * Präfix\n"
" * Postfix (Anhang)\n"
" * Nächste Zahl\n"
" * Inkrement / Erhöhungswert\n"
" * Ziffernanzahl / führende Nullen\n"
" "
#. module: base #. module: base
#: model:res.country,name:base.to #: model:res.country,name:base.to
@ -9309,7 +9450,7 @@ msgstr "Dominika"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_base_module_record #: model:ir.module.module,shortdesc:base.module_base_module_record
msgid "Record and Create Modules" msgid "Record and Create Modules"
msgstr "" msgstr "Module Aufzeichnen und Erzeugen"
#. module: base #. module: base
#: model:ir.model,name:base.model_partner_sms_send #: model:ir.model,name:base.model_partner_sms_send
@ -9353,6 +9494,45 @@ msgid ""
" Administration / Users / Users\n" " Administration / Users / Users\n"
" for example, you maybe will do it for the user 'admin'.\n" " for example, you maybe will do it for the user 'admin'.\n"
msgstr "" msgstr ""
"\n"
"Dieses Modul dient der Verwaltung von Urlaub und Urlaubsanträgen.\n"
"=========================================================\n"
"\n"
"Setzt eine Pinwand für die Personalverwaltung um, welches folgen Inhalt "
"hat:\n"
" * Abwesenheiten / Urlaub\n"
"\n"
"Nehmen Sie zur Kenntnis:\n"
" - Eine Synchronisation mit internen Terminkalendern (Kundenverwaltung) "
"ist möglich: Um automatisch\n"
" ein Ereignis anzulegen, wenn ein Urlaubsantrag genehmigt wird, müssen "
"Sie den Urlaubsstatus mit\n"
" mit einer Ereigniskategorie verknüpfen. Diese Information und Ihre "
"Farbwahl treffen Sie in:\n"
" Personal->Konfiguration->Abwesenheiten->Abwesenheitsarten\n"
" - Ein Mitarbeiter kann eine Anfrage nach mehr freien Tagen, abhängig von "
"der Abwesenheitsart, stellen.\n"
" Die Gesamtzahl der Abwesenheitstage wird entsprechend erhöht, wenn der "
"Antrag gewährt wird.\n"
" - Es gibt zwei Wege die Abwesenheiten eines Mitarbeiters zu drucken:\n"
" * Mitarbeiter können nach Abteilungen ausgewählt werden, bei Auswahl "
"im Menü:\n"
" Personal->Berichtswesen->Urlaubstage->Urlaube nach Abteilung\n"
" * Mitarbeiterspezifisch kann eine Übersicht zur Urlaubsnahme und "
"Abwesenheiten erstellt werden:\n"
" Personal->Personal->Mitarbeiter\n"
" dort wählen Sie die Mitarbeiter aus, die Sie interessieren. "
"Anschließend wählen Sie den \n"
" Bericht \"Mitarbieter Urlaub\"\n"
" - Der Assistent \"Mitarbieter Urlaub\" erlaubt Ihnen die Auswahl der "
"Urlaube nach Status \"bestätigt\" \n"
" oder \"bestätigt und genehmigt\". Dieser Status muss durch einen "
"Mitarbeiter der Zuständigkeitsgruppe\n"
" Peronalverwaltung vorgenommen werden. Diese Einstellungen nehmen Sie "
"im Menü:\n"
" Einstellungen -> Benutzer -> Benutzer (Zugriffsrechte)\n"
" vor. Als Benutzer \"admin\" können Sie diese Eintragungen "
"beispielsweise auf jeden Fall vornehmen.\n"
#. module: base #. module: base
#: field:ir.actions.report.xml,report_xsl:0 #: field:ir.actions.report.xml,report_xsl:0
@ -9372,7 +9552,7 @@ msgstr "Erweiterte Lieferketten"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_pad #: model:ir.module.module,shortdesc:base.module_pad
msgid "Collaborative Pads" msgid "Collaborative Pads"
msgstr "" msgstr "Plattform für Zusammenarbeit"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_account_anglo_saxon #: model:ir.module.module,shortdesc:base.module_account_anglo_saxon
@ -9786,6 +9966,30 @@ msgid ""
"created\n" "created\n"
" CALENDAR_NAME: Name of calendar to access\n" " CALENDAR_NAME: Name of calendar to access\n"
msgstr "" msgstr ""
"\n"
"Dieses Modul fügt die Funktionalität eines CalDAV-System hinzu.\n"
"========================================================\n"
"\n"
" - WebDAV-Server liefert den Zugang zu Kalendern\n"
" - Synchronisation von Kalendern mittels WebDAV\n"
" - Ereignis-Kategorien und Aufgaben-Attribute des Kalenders anpassen\n"
" - Liefert iCal -import und -export-Funktionalität\n"
"\n"
"Um auf Kalender mittels CalDAV-Anwendungen zuzugreifen, tragen Sie folgende "
"Adresse ein:\n"
" http://HOST:PORT/webdav/DATENBANK/calendars/users/BENUTZER/c\n"
"\n"
"Für den Zugriff auf den OpenERP-Kalender mittels WebCal von entferntem Ort, "
"benutzen Sie eine URL wie:\n"
" http://HOST:PORT/webdav/DATENBANK/Calendars/KALENDER_NAME.ics\n"
"\n"
"Wobei \n"
"- HOST Die Adresse des Servers auf dem WebDAV läuft\n"
"- PORT: TCP-Port des OpenERP-Server, Standardmässig 8069\n"
"- DATENBANK: Name der Datenbank, in der der OpenERP-Kalender erstellt ist "
"(und die gerade \n"
" von OpenERP im Einsatz ist!)\n"
"- KALENDER_NAME Name des zu verwendenden Kalenders\n"
#. module: base #. module: base
#: field:ir.model.fields,selectable:0 #: field:ir.model.fields,selectable:0
@ -9821,6 +10025,15 @@ msgid ""
"mail into mail.message with attachments.\n" "mail into mail.message with attachments.\n"
" " " "
msgstr "" msgstr ""
"\n"
"Dieses Modul stellt ein Outlook-Plugin zur Verfügung.\n"
"=============================================\n"
"\n"
"Das Outlook-Plugin erlaubt Ihnen die Auswahl eines Objektes, dem Sie Ihre\n"
"E-Mail oder Anhänge hinzufügen möchten. Sie können einen Partner, eine\n"
"Aufgabe ein Projekt, eine Kostenstelle/Kostenart oder ein anderes Objekt \n"
"auswählen, dem Sie Mail oder Anhänge hinzufügen möchten.\n"
" "
#. module: base #. module: base
#: view:ir.attachment:0 #: view:ir.attachment:0

View File

@ -12,8 +12,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:40+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:37+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
"X-Poedit-Country: GREECE\n" "X-Poedit-Country: GREECE\n"
"X-Poedit-Language: Greek\n" "X-Poedit-Language: Greek\n"
"X-Poedit-SourceCharset: utf-8\n" "X-Poedit-SourceCharset: utf-8\n"

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:45+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:42+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh
@ -5024,7 +5024,7 @@ msgstr "`code` must be unique."
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_hr_expense #: model:ir.module.module,shortdesc:base.module_hr_expense
msgid "Expenses Management" msgid "Expenses Management"
msgstr "" msgstr "Expenses Management"
#. module: base #. module: base
#: view:workflow.activity:0 #: view:workflow.activity:0
@ -5035,7 +5035,7 @@ msgstr "Incoming Transitions"
#. module: base #. module: base
#: field:ir.values,value_unpickle:0 #: field:ir.values,value_unpickle:0
msgid "Default value or action reference" msgid "Default value or action reference"
msgstr "" msgstr "Default value or action reference"
#. module: base #. module: base
#: model:res.country,name:base.sr #: model:res.country,name:base.sr
@ -5045,7 +5045,7 @@ msgstr "Suriname"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_project_timesheet #: model:ir.module.module,shortdesc:base.module_project_timesheet
msgid "Bill Time on Tasks" msgid "Bill Time on Tasks"
msgstr "" msgstr "Bill Time on Tasks"
#. module: base #. module: base
#: model:ir.module.category,name:base.module_category_marketing #: model:ir.module.category,name:base.module_category_marketing
@ -5062,7 +5062,7 @@ msgstr "Bank account"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_gr #: model:ir.module.module,shortdesc:base.module_l10n_gr
msgid "Greece - Accounting" msgid "Greece - Accounting"
msgstr "" msgstr "Greece - Accounting"
#. module: base #. module: base
#: selection:base.language.install,lang:0 #: selection:base.language.install,lang:0

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:43+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:41+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:45+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:42+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:45+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:42+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:45+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:43+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
"Language: \n" "Language: \n"
#. module: base #. module: base

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:46+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:43+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh
@ -1229,6 +1229,23 @@ msgid ""
"At the end of the month, the planning manager can also check if the encoded " "At the end of the month, the planning manager can also check if the encoded "
"timesheets are respecting the planned time on each analytic account.\n" "timesheets are respecting the planned time on each analytic account.\n"
msgstr "" msgstr ""
"Realizar un seguimiento de su planificación\n"
"Este módulo le ayuda a gestionar sus planificaciones.\n"
"===============================================\n"
"\n"
"Este módulo es la base de la contabilidad analítica y está totalmente "
"integrado con\n"
"* Hojas de servicio\n"
"* Gestión de ausencias\n"
"* Gestión de proyectos\n"
"\n"
"Así, cada director de departamento puede saber si alguien en su equipo aún "
"tiene tiempo asignado para una planificación determinada (teniendo en cuenta "
"las hojas de validación) o si todavía necesita codificar tareas.\n"
"\n"
"Al final del mes, el encargado de la planificación también puede comprobar "
"si la tabla de tiempos codificados están respetando los plazos previstos en "
"cada cuenta analítica.\n"
#. module: base #. module: base
#: selection:ir.property,type:0 #: selection:ir.property,type:0
@ -1496,6 +1513,26 @@ msgid ""
"database,\n" "database,\n"
" but in the servers rootpad like /server/bin/filestore.\n" " but in the servers rootpad like /server/bin/filestore.\n"
msgstr "" msgstr ""
"\n"
"Este es un sistema de gestión documental completo.\n"
"==============================================\n"
"\n"
" * Autenticación de usuarios\n"
" * Indexación de documentos: -.. Pptx y docx no son compatibles con la "
"plataforma Windows.\n"
" * El tablero de documentos que incluye:\n"
" * Nuevos archivos (lista)\n"
" * Los archivos por tipo de recurso (gráfico)\n"
" * Los archivos por empresa (gráfico)\n"
" * Tamaño de archivos por mes (gráfico)\n"
"\n"
"ATENCIÓN:\n"
" - Al instalar este módulo en una compañía en funcionamiento que que "
"tienen ya PDF almacenados en la base de datos, \n"
" los pierde todos.\n"
" - Después de instalar este módulo los PDF ya no se almacenan en la base "
"de datos,\n"
" si no en los servidores rootpad como / server / bin / filestore.\n"
#. module: base #. module: base
#: view:res.lang:0 #: view:res.lang:0
@ -1564,6 +1601,15 @@ msgid ""
"Web.\n" "Web.\n"
" " " "
msgstr "" msgstr ""
"\n"
"Este es el módulo test que permite mostrar etiquetas HTML en vistas de "
"formulario en XML.\n"
"============================================================================="
"\n"
"\n"
"Crea una vista de formulario ejemplo utilizando etiquetas HTML. Esto es "
"visible solo en el cliente Web.\n"
" "
#. module: base #. module: base
#: model:ir.module.category,description:base.module_category_purchase_management #: model:ir.module.category,description:base.module_category_purchase_management
@ -1776,6 +1822,24 @@ msgid ""
"\n" "\n"
" " " "
msgstr "" msgstr ""
"\n"
"Este módulo agrega herramientas para compartir genéricas a su base de datos "
"de OpenERP.\n"
"========================================================================\n"
"\n"
"Específicamente agrega un botón 'compartir' disponible en el cliente Web "
"para\n"
"compartir cualquier tipo de datos OpenERP con colegas, clientes, amigos, "
"etc.\n"
"\n"
"El sistema funciona creando nuevos usuarios y grupos sobre la marcha, y\n"
"combinando los derechos de acceso adecuados y reglas para asegurar que los\n"
"usuarios compartidos sólo tienen acceso a los datos compartidos con ellos.\n"
"\n"
"Esto es muy útil para el trabajo colaborativo, compartir conocimientos,\n"
"sincronización con otras empresas, etc\n"
"\n"
" "
#. module: base #. module: base
#: field:res.currency,accuracy:0 #: field:res.currency,accuracy:0
@ -1856,6 +1920,49 @@ msgid ""
"\n" "\n"
" " " "
msgstr "" msgstr ""
"\n"
"Validación de IVA para números IVA de las empresas\n"
"========================================\n"
"\n"
"Después de instalar este módulo, los valores ingresados en el campo IVA de "
"Empresas\n"
"serán validados para todos los países soportados. El país se infiere del "
"código\n"
"de país de 2 letras que es prefijo del número IVA, por ejemplo "
"\"BE0477472701\"\n"
"se validará usando las reglas belgas.\n"
"\n"
"Hay dos niveles diferentes de validación de números IVA:\n"
"\n"
" * Por defecto, se ejecuta una validación simple fuera de línea usando las "
"reglas de\n"
" validación conocidas para el país, usualmente un simple control de "
"dígitos. Esto es \n"
" rápido y está siempre disponible, pero permite números que quizá no "
"están\n"
" verdaderamente asignados, o que ya no son válidos.\n"
" * Cuando la opción \"Verificación VAT VIES\" está activada (en la "
"configuración de la\n"
" compañía del usuario), los números IVA se enviarán a la base de datos en "
"línea\n"
" VIES de la UE, que verificará realmente si el número es válido y está "
"asignado\n"
" actualmente a una empresa de la UE. Esto es un poco mas lento que la "
"validación\n"
" simple fuera de línea, requiere una conexión a Internet, y podría no "
"estar disponible\n"
" todo el tiempo. Si el servicio no está disponible o no es compatible con "
"el país\n"
" requerido (por ejemplo, para países no comunitarios), se ejecutará en su "
"lugar una\n"
" validación simple.\n"
"\n"
"Los países soportados actualmente son los países de la UE, y algunos países "
"no\n"
"comunitarios como Chile, Colombia, México, Noruega o Rusia. Para países no\n"
"soportados, solo se validará el código de país.\n"
"\n"
" "
#. module: base #. module: base
#: view:ir.sequence:0 #: view:ir.sequence:0

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-08 04:54+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:43+0000\n"
"X-Generator: Launchpad (build 15914)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:39+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:37+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:38+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:36+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -9,8 +9,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:42+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:39+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
"X-Poedit-Country: IRAN, ISLAMIC REPUBLIC OF\n" "X-Poedit-Country: IRAN, ISLAMIC REPUBLIC OF\n"
"X-Poedit-Language: Persian\n" "X-Poedit-Language: Persian\n"

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:46+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:43+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:39+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:37+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:40+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:37+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:40+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:37+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:40+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:38+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:40+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:38+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:43+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:40+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
"Language: hr\n" "Language: hr\n"
#. module: base #. module: base

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:41+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:38+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh
@ -1821,7 +1821,7 @@ msgstr ""
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_hr_evaluation #: model:ir.module.module,shortdesc:base.module_hr_evaluation
msgid "Employee Appraisals" msgid "Employee Appraisals"
msgstr "" msgstr "Munkavállaló értékelése"
#. module: base #. module: base
#: selection:ir.actions.server,state:0 #: selection:ir.actions.server,state:0
@ -3141,7 +3141,7 @@ msgstr ""
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_hr_contract #: model:ir.module.module,shortdesc:base.module_hr_contract
msgid "Employee Contracts" msgid "Employee Contracts"
msgstr "" msgstr "Munkavállalói szerződések"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_wiki_faq #: model:ir.module.module,description:base.module_wiki_faq
@ -6487,7 +6487,7 @@ msgstr "Automatikus frissítést ad a nézethez."
#. module: base #. module: base
#: help:res.partner,employee:0 #: help:res.partner,employee:0
msgid "Check this box if the partner is an Employee." msgid "Check this box if the partner is an Employee."
msgstr "Jelölje be, ha a partner egy alkalmazott." msgstr "Jelölje be, ha a partner egy alkalmazott"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_crm_profiling #: model:ir.module.module,shortdesc:base.module_crm_profiling
@ -15321,7 +15321,7 @@ msgstr "Wrong ID for the browse record, got %r, expected an integer."
#: field:res.partner.address,function:0 #: field:res.partner.address,function:0
#: selection:workflow.activity,kind:0 #: selection:workflow.activity,kind:0
msgid "Function" msgid "Function"
msgstr "Függvény" msgstr "Beosztás"
#. module: base #. module: base
#: view:res.widget:0 #: view:res.widget:0

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:38+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:35+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:41+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:38+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:41+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:38+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:41+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:38+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-server\n" "Project-Id-Version: openobject-server\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n" "POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2012-08-20 15:37+0000\n" "PO-Revision-Date: 2012-09-20 05:23+0000\n"
"Last-Translator: OpenERP Administrators <Unknown>\n" "Last-Translator: Akira Hiyama <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n" "Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:41+0000\n" "X-Launchpad-Export-Date: 2012-09-21 04:41+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh
@ -193,7 +193,7 @@ msgstr "販売分析の配布"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_web_process #: model:ir.module.module,shortdesc:base.module_web_process
msgid "Process" msgid "Process"
msgstr "プロセス" msgstr "処理"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_analytic_journal_billing_rate #: model:ir.module.module,shortdesc:base.module_analytic_journal_billing_rate
@ -17384,7 +17384,7 @@ msgstr ""
" ・ 各アクションが手動の検証を必要とする場合は、手動で実際のキャンペーンを開始することもできます。\n" " ・ 各アクションが手動の検証を必要とする場合は、手動で実際のキャンペーンを開始することもできます。\n"
" ・ 最後にキャンペーンを実際に起動し、キャンペーンの全てが完全に自動的に行われるよう統計値を監視します。\n" " ・ 最後にキャンペーンを実際に起動し、キャンペーンの全てが完全に自動的に行われるよう統計値を監視します。\n"
"\n" "\n"
"キャンペーンの実行中にも、ちろんパラメータ、入力セグメント、ワークフローなどの微調整を続ける事ができます。\n" "キャンペーンの実行中にも、ちろんパラメータ、入力セグメント、ワークフローなどの微調整を続ける事ができます。\n"
"\n" "\n"
"注記デモデータが必要なら、marketing_campaign_crm_demoモジュールをインストールできます。それはCRMリードに依存するため、CR" "注記デモデータが必要なら、marketing_campaign_crm_demoモジュールをインストールできます。それはCRMリードに依存するため、CR"
"Mアプリケーションもインストールすることになります。\n" "Mアプリケーションもインストールすることになります。\n"

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:40+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:37+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:41+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:38+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:41+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:39+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:42+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:39+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -5407,7 +5407,7 @@ msgstr ""
#. module: base #. module: base
#: help:res.country.state,code:0 #: help:res.country.state,code:0
msgid "The state code in three chars.\n" msgid "The state code in max. three chars."
"" ""
msgstr "" msgstr ""

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:42+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:39+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:42+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:39+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:42+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:39+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:42+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:39+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:39+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:36+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh
@ -97,7 +97,7 @@ msgstr "Code (bijv: nl__NL)"
#: field:workflow.transition,wkf_id:0 #: field:workflow.transition,wkf_id:0
#: field:workflow.workitem,wkf_id:0 #: field:workflow.workitem,wkf_id:0
msgid "Workflow" msgid "Workflow"
msgstr "Werkschema" msgstr "Workflow"
#. module: base #. module: base
#: selection:ir.sequence,implementation:0 #: selection:ir.sequence,implementation:0
@ -363,6 +363,13 @@ msgid ""
" - tree_but_open\n" " - tree_but_open\n"
"For defaults, an optional condition" "For defaults, an optional condition"
msgstr "" msgstr ""
"Voor acties, een van deze mogelijke acties:\n"
" - client_action_multi\n"
" - client_print_multi\n"
" - client_action_relate\n"
" - tree_but_open\n"
"Voor standaard waarden:\n"
" - een optionele conditie"
#. module: base #. module: base
#: sql_constraint:res.lang:0 #: sql_constraint:res.lang:0
@ -572,7 +579,7 @@ msgstr ""
#. module: base #. module: base
#: view:ir.values:0 #: view:ir.values:0
msgid "Action Binding" msgid "Action Binding"
msgstr "" msgstr "Actie koppeling"
#. module: base #. module: base
#: model:res.country,name:base.gf #: model:res.country,name:base.gf
@ -2811,7 +2818,7 @@ msgstr "Overgeërfd"
#. module: base #. module: base
#: field:ir.model.fields,serialization_field_id:0 #: field:ir.model.fields,serialization_field_id:0
msgid "Serialization Field" msgid "Serialization Field"
msgstr "" msgstr "Reeks veld"
#. module: base #. module: base
#: model:ir.module.category,description:base.module_category_report_designer #: model:ir.module.category,description:base.module_category_report_designer
@ -2873,7 +2880,7 @@ msgstr "Fout!"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_fr_rib #: model:ir.module.module,shortdesc:base.module_l10n_fr_rib
msgid "French RIB Bank Details" msgid "French RIB Bank Details"
msgstr "" msgstr "Franse RIB bank details"
#. module: base #. module: base
#: view:res.lang:0 #: view:res.lang:0
@ -2954,7 +2961,7 @@ msgstr "Bangladesh"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_project_retro_planning #: model:ir.module.module,shortdesc:base.module_project_retro_planning
msgid "Project Retro-planning" msgid "Project Retro-planning"
msgstr "" msgstr "Project Retro-planning"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_stock_planning #: model:ir.module.module,shortdesc:base.module_stock_planning
@ -3005,7 +3012,7 @@ msgstr ""
#. module: base #. module: base
#: field:ir.actions.client,params_store:0 #: field:ir.actions.client,params_store:0
msgid "Params storage" msgid "Params storage"
msgstr "" msgstr "Parameters opslag"
#. module: base #. module: base
#: code:addons/base/module/module.py:409 #: code:addons/base/module/module.py:409
@ -3036,6 +3043,10 @@ msgid ""
"since it's the same which has been renamed.\n" "since it's the same which has been renamed.\n"
" " " "
msgstr "" msgstr ""
"\n"
"Met deze module kunt u relaties segmenten/indelen op basis van vragen.\n"
"===========================================================\n"
" "
#. module: base #. module: base
#: code:addons/report_sxw.py:434 #: code:addons/report_sxw.py:434
@ -3160,7 +3171,7 @@ msgstr ""
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_wiki_quality_manual #: model:ir.module.module,shortdesc:base.module_wiki_quality_manual
msgid "Wiki: Quality Manual" msgid "Wiki: Quality Manual"
msgstr "" msgstr "Wiki: Kwaliteit handleiding"
#. module: base #. module: base
#: selection:ir.actions.act_window.view,view_mode:0 #: selection:ir.actions.act_window.view,view_mode:0
@ -3274,7 +3285,7 @@ msgstr "OpenERP web-diagram weergave"
#. module: base #. module: base
#: model:res.groups,name:base.group_hr_user #: model:res.groups,name:base.group_hr_user
msgid "HR Officer" msgid "HR Officer"
msgstr "" msgstr "HR Officer"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_hr_contract #: model:ir.module.module,shortdesc:base.module_hr_contract
@ -3633,7 +3644,7 @@ msgstr "Mayotte"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_crm_todo #: model:ir.module.module,shortdesc:base.module_crm_todo
msgid "Tasks on CRM" msgid "Tasks on CRM"
msgstr "" msgstr "Relatiebeheer taken"
#. module: base #. module: base
#: model:ir.module.category,name:base.module_category_generic_modules_accounting #: model:ir.module.category,name:base.module_category_generic_modules_accounting
@ -4219,6 +4230,9 @@ msgid ""
"its dependencies are satisfied. If the module has no dependency, it is " "its dependencies are satisfied. If the module has no dependency, it is "
"always installed." "always installed."
msgstr "" msgstr ""
"Een auto-installatie module wordt automatisch geïnstalleerd door het systeem "
"als aan alle afhankelijkheden zijn voldaan. Als de module geen "
"afhankelijkheden heeft, wordt de module altijd geïnstalleerd."
#. module: base #. module: base
#: model:ir.actions.act_window,name:base.res_lang_act_window #: model:ir.actions.act_window,name:base.res_lang_act_window
@ -4605,6 +4619,20 @@ msgid ""
"above. Specify the interval information and partner to be invoice.\n" "above. Specify the interval information and partner to be invoice.\n"
" " " "
msgstr "" msgstr ""
"\n"
"Maak herhalende documenten (abonnementen).\n"
"=======================================\n"
"\n"
"Met deze module kunt u een nieuw document maken en een abonnement hieraan "
"koppelen.\n"
"\n"
"U kunt bijvoorbeeld een factuur automatisch periodiek laten aanmaken. Dit "
"doet u door:\n"
"* Maak een document type gebaseerd op het object factuur\n"
"* Maak een abonnement aan waarvan de bron het document is, zoals aangemaakt "
"bij stap 1.\n"
"* Specificeer het interval en de klant voor de factuur\n"
" "
#. module: base #. module: base
#: field:ir.actions.server,srcmodel_id:0 #: field:ir.actions.server,srcmodel_id:0
@ -4826,7 +4854,7 @@ msgstr "BTW nummer validatie"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_crm_partner_assign #: model:ir.module.module,shortdesc:base.module_crm_partner_assign
msgid "Partners Geo-Localization" msgid "Partners Geo-Localization"
msgstr "" msgstr "Partners Geo-Localisatie"
#. module: base #. module: base
#: model:res.country,name:base.ke #: model:res.country,name:base.ke
@ -5334,6 +5362,13 @@ msgid ""
" those assets. And it allows to create Move's of the depreciation lines.\n" " those assets. And it allows to create Move's of the depreciation lines.\n"
" " " "
msgstr "" msgstr ""
"Financieel beheer van uw activa.\n"
"=========================\n"
"Met deze module beheert u, uw activa van uw bedrijf of van een individu. U "
"beheert uw afschrijvingen van \n"
"deze activa. Deze afschrijvingen worden als journaalposten verwerkt in uw "
"financiële administratie.\n"
" "
#. module: base #. module: base
#: model:res.country,name:base.bv #: model:res.country,name:base.bv
@ -5640,6 +5675,31 @@ msgid ""
"Budgets per Budgets.\n" "Budgets per Budgets.\n"
"\n" "\n"
msgstr "" msgstr ""
"\n"
"Deze module geeft accountants de mogelijkheid om kostenplaats- en "
"overlappende budgetten te beheren.\n"
"============================================================================="
"==========\n"
"\n"
"Wanneer de hoofdbudgetten en onderliggende budgetten zijn gedefinieerd (in "
"financieel/budgetten)\n"
"kunnen de projectmanagers de geplande bedragen invoeren per kostenplaats.\n"
"\n"
"De accountant heeft de mogelijkheid om alle gebudgetteerde bedragen te zien "
"van ieder\n"
"budget en hoofdbudget, zodat het totale gebudgetteerde bedrag niet groter of "
"lager \n"
"is dan wat was gebudgetteerd. deze informatie kan ook als grafiek worden "
"bekeken.\n"
"\n"
"Er zijn drie rapportages beschikbaar:\n"
"1. Deze is beschikbaar bij de lijst van budgetten. Het geeft de spreiding "
"van deze budgetten weer over de kostenplaatsen per hoofdbudget.\n"
"2. Dit is een totaal van het eerste rapport. het geeft alleen de spreiding "
"weer voor de geselecteerde budgetten van de kostenplaatsen.\n"
"3. Dit rapport is beschikbaar bij de kostenplaats. Het geeft de spreiding "
"weer van de geselecteerde kostenplaats van het hoofdbudget, per budget.\n"
"\n"
#. module: base #. module: base
#: help:res.lang,iso_code:0 #: help:res.lang,iso_code:0
@ -5968,6 +6028,8 @@ msgid ""
"How many times the method is called,\n" "How many times the method is called,\n"
"a negative number indicates no limit." "a negative number indicates no limit."
msgstr "" msgstr ""
"Hoeveel keer deze regel wordt aangeroepen,\n"
"een negatieve waarde geeft aan dat er geen limiet is."
#. module: base #. module: base
#: field:res.partner.bank.type.field,bank_type_id:0 #: field:res.partner.bank.type.field,bank_type_id:0
@ -6025,7 +6087,7 @@ msgstr "Vul aub de sleutelcode in die staat in uw contract document:"
#: view:workflow.activity:0 #: view:workflow.activity:0
#: field:workflow.activity,flow_start:0 #: field:workflow.activity,flow_start:0
msgid "Flow Start" msgid "Flow Start"
msgstr "Begin werkschema" msgstr "Begin workflow"
#. module: base #. module: base
#: model:ir.model,name:base.model_res_partner_title #: model:ir.model,name:base.model_res_partner_title
@ -6453,6 +6515,11 @@ msgid ""
"\n" "\n"
" " " "
msgstr "" msgstr ""
"\n"
"Met deze module kunt u aangeven welk factureerproduct moet worden gebruikt "
"als een werknemer uren boekt op het contract/kostenplaats.\n"
"\n"
" "
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_audittrail #: model:ir.module.module,shortdesc:base.module_audittrail
@ -6601,7 +6668,7 @@ msgstr "Ongelezen"
#. module: base #. module: base
#: field:res.users,id:0 #: field:res.users,id:0
msgid "ID" msgid "ID"
msgstr "" msgstr "ID"
#. module: base #. module: base
#: field:ir.cron,doall:0 #: field:ir.cron,doall:0
@ -6676,7 +6743,7 @@ msgstr "Vink aan als de relatie een werknemer is."
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_crm_profiling #: model:ir.module.module,shortdesc:base.module_crm_profiling
msgid "Customer Profiling" msgid "Customer Profiling"
msgstr "" msgstr "Klant profiling"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_project_issue #: model:ir.module.module,shortdesc:base.module_project_issue
@ -6712,6 +6779,8 @@ msgid ""
"Please check that all your lines have %d columns.Stopped around line %d " "Please check that all your lines have %d columns.Stopped around line %d "
"having %d columns." "having %d columns."
msgstr "" msgstr ""
"Controleer of al uw regels %d kolommen hebben. Gestopt bij regel %d met %d "
"kolommen."
#. module: base #. module: base
#: field:base.language.export,advice:0 #: field:base.language.export,advice:0
@ -6853,6 +6922,7 @@ msgstr "Controle"
#: help:ir.values,company_id:0 #: help:ir.values,company_id:0
msgid "If set, action binding only applies for this company" msgid "If set, action binding only applies for this company"
msgstr "" msgstr ""
"Indien aangevinkt is deze regel alleen van toepassing voor dit bedrijf."
#. module: base #. module: base
#: model:res.country,name:base.lc #: model:res.country,name:base.lc
@ -6866,6 +6936,9 @@ msgid ""
"password, otherwise leave empty. After a change of password, the user has to " "password, otherwise leave empty. After a change of password, the user has to "
"login again." "login again."
msgstr "" msgstr ""
"Specificeer een waarde alleen wanneer u een gebruiker aanmaakt of als u het "
"wachtwoord van de gebruiker wijzigt. Laat anders de waarde leeg. Na het "
"wijzigen van het wachtwoord, dient de gebruiker opnieuw in te loggen."
#. module: base #. module: base
#: view:publisher_warranty.contract:0 #: view:publisher_warranty.contract:0
@ -6915,7 +6988,7 @@ msgstr "Bewerken"
#. module: base #. module: base
#: field:ir.actions.client,params:0 #: field:ir.actions.client,params:0
msgid "Supplementary arguments" msgid "Supplementary arguments"
msgstr "" msgstr "Aanvullende argumenten"
#. module: base #. module: base
#: field:res.users,view:0 #: field:res.users,view:0
@ -7067,6 +7140,8 @@ msgid ""
"Action bound to this entry - helper field for binding an action, will " "Action bound to this entry - helper field for binding an action, will "
"automatically set the correct reference" "automatically set the correct reference"
msgstr "" msgstr ""
"Actie gekoppeld aan deze regel. Hulp veld voor het koppelen van een actie. "
"De referentie wordt automatisch correct ingevuld."
#. module: base #. module: base
#: model:ir.ui.menu,name:base.menu_project_long_term #: model:ir.ui.menu,name:base.menu_project_long_term
@ -7384,7 +7459,7 @@ msgstr "Lezen"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_association #: model:ir.module.module,shortdesc:base.module_association
msgid "Associations Management" msgid "Associations Management"
msgstr "" msgstr "Verenigingenbeheer"
#. module: base #. module: base
#: help:ir.model,modules:0 #: help:ir.model,modules:0
@ -7425,7 +7500,7 @@ msgstr ""
#. module: base #. module: base
#: view:workflow.workitem:0 #: view:workflow.workitem:0
msgid "Workflow Workitems" msgid "Workflow Workitems"
msgstr "Werkschema taken" msgstr "Workflow taken"
#. module: base #. module: base
#: model:res.country,name:base.vc #: model:res.country,name:base.vc
@ -7543,7 +7618,7 @@ msgstr "Myanmar (Birma)"
#. module: base #. module: base
#: help:ir.model.fields,modules:0 #: help:ir.model.fields,modules:0
msgid "List of modules in which the field is defined" msgid "List of modules in which the field is defined"
msgstr "" msgstr "Lijst van modules waarin het veld wordt gebruikt."
#. module: base #. module: base
#: selection:base.language.install,lang:0 #: selection:base.language.install,lang:0
@ -7666,6 +7741,13 @@ msgid ""
"all the tasks will change accordingly.\n" "all the tasks will change accordingly.\n"
" " " "
msgstr "" msgstr ""
"\n"
"Verander de data op basis van een verandering in de einddatum.\n"
"===================================================\n"
"\n"
"Indien de einddatun van een project is gewijzigd, dan worden de deadline "
"datum en de startdatum van alle taken ook gewijzgd.\n"
" "
#. module: base #. module: base
#: help:res.users,view:0 #: help:res.users,view:0
@ -7710,7 +7792,7 @@ msgstr "Dutch / Nederlands"
#. module: base #. module: base
#: selection:res.company,paper_format:0 #: selection:res.company,paper_format:0
msgid "US Letter" msgid "US Letter"
msgstr "" msgstr "US Letter"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_stock_location #: model:ir.module.module,description:base.module_stock_location
@ -7813,6 +7895,12 @@ msgid ""
"Contains the installer for marketing-related modules.\n" "Contains the installer for marketing-related modules.\n"
" " " "
msgstr "" msgstr ""
"\n"
"Menu voor marketing.\n"
"==================\n"
"\n"
"Bevat de installer voor marketing gerelateerde modules.\n"
" "
#. module: base #. module: base
#: model:ir.module.category,name:base.module_category_knowledge_management #: model:ir.module.category,name:base.module_category_knowledge_management
@ -7996,6 +8084,9 @@ msgid ""
"the same values as those available in the condition field, e.g. `Hello [[ " "the same values as those available in the condition field, e.g. `Hello [[ "
"object.partner_id.name ]]`" "object.partner_id.name ]]`"
msgstr "" msgstr ""
"Het e-mail onderwerp kan expressies bevatten welke worden gekenmerkt door "
"rechte haken. De velden zijn gebaseerd op dezelfde waarden zoals beschikbaar "
"in de conditievelden. Bijv.: `Hallo [[ object.partner_id.name ]]`"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_account_sequence #: model:ir.module.module,description:base.module_account_sequence
@ -8027,11 +8118,14 @@ msgid ""
"serialization field, instead of having its own database column. This cannot " "serialization field, instead of having its own database column. This cannot "
"be changed after creation." "be changed after creation."
msgstr "" msgstr ""
"Indien aangevinkt wordt dit veld opgeslagen in vrije ruimte van het reeks "
"veld in plaats dat het veld een eigen database kolom heeft. Dit kan achteraf "
"niet worden veranderd!"
#. module: base #. module: base
#: view:res.partner.bank:0 #: view:res.partner.bank:0
msgid "Bank accounts belonging to one of your companies" msgid "Bank accounts belonging to one of your companies"
msgstr "" msgstr "Bankrekening welke behoort aan één van uw bedrijven."
#. module: base #. module: base
#: help:res.users,action_id:0 #: help:res.users,action_id:0
@ -8058,6 +8152,8 @@ msgid ""
"The field on the current object that links to the target object record (must " "The field on the current object that links to the target object record (must "
"be a many2one, or an integer field with the record ID)" "be a many2one, or an integer field with the record ID)"
msgstr "" msgstr ""
"Het veld van het huidige object wat is gekoppeld aan het doel object record "
"(moet een many2one, of een integer veld zijn met het record ID)"
#. module: base #. module: base
#: code:addons/base/module/module.py:423 #: code:addons/base/module/module.py:423
@ -8194,6 +8290,8 @@ msgid ""
"You cannot have multiple records with the same external ID in the same " "You cannot have multiple records with the same external ID in the same "
"module!" "module!"
msgstr "" msgstr ""
"Het is niet toegestaan om meerdere records te hebben met dezelfde externe ID "
"in hetzelfde model."
#. module: base #. module: base
#: selection:ir.property,type:0 #: selection:ir.property,type:0
@ -8287,6 +8385,9 @@ msgid ""
"Model to which this entry applies - helper field for setting a model, will " "Model to which this entry applies - helper field for setting a model, will "
"automatically set the correct model name" "automatically set the correct model name"
msgstr "" msgstr ""
"Model waarover deze regel gaat. Deze zoekwaarde helpt u bij het instellen "
"van het juiste modelnaam. Na de keuze wordt de modelnaam automatisch voor u "
"ingevuld."
#. module: base #. module: base
#: view:res.lang:0 #: view:res.lang:0
@ -8419,7 +8520,7 @@ msgstr ""
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_account_anglo_saxon #: model:ir.module.module,shortdesc:base.module_account_anglo_saxon
msgid "Anglo-Saxon Accounting" msgid "Anglo-Saxon Accounting"
msgstr "" msgstr "Angelsaksische boekhouding"
#. module: base #. module: base
#: model:res.country,name:base.np #: model:res.country,name:base.np
@ -8470,7 +8571,7 @@ msgstr ""
#: model:ir.ui.menu,name:base.menu_values_form_action #: model:ir.ui.menu,name:base.menu_values_form_action
#: view:ir.values:0 #: view:ir.values:0
msgid "Action Bindings" msgid "Action Bindings"
msgstr "" msgstr "Actie koppeling"
#. module: base #. module: base
#: view:ir.sequence:0 #: view:ir.sequence:0
@ -8850,7 +8951,7 @@ msgstr "Herhaling"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_project_planning #: model:ir.module.module,shortdesc:base.module_project_planning
msgid "Resources Planing" msgid "Resources Planing"
msgstr "" msgstr "Resource planing"
#. module: base #. module: base
#: field:ir.module.module,complexity:0 #: field:ir.module.module,complexity:0
@ -8860,7 +8961,7 @@ msgstr "Complexiteit"
#. module: base #. module: base
#: selection:ir.actions.act_window,target:0 #: selection:ir.actions.act_window,target:0
msgid "Inline" msgid "Inline"
msgstr "" msgstr "Inline"
#. module: base #. module: base
#: model:res.partner.bank.type.field,name:base.bank_normal_field_bic #: model:res.partner.bank.type.field,name:base.bank_normal_field_bic
@ -8967,7 +9068,7 @@ msgstr "Reparatie management"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_account_asset #: model:ir.module.module,shortdesc:base.module_account_asset
msgid "Assets Management" msgid "Assets Management"
msgstr "" msgstr "Beheer van activa"
#. module: base #. module: base
#: view:ir.model.access:0 #: view:ir.model.access:0
@ -9358,7 +9459,7 @@ msgstr "Referentiegids"
#. module: base #. module: base
#: view:ir.values:0 #: view:ir.values:0
msgid "Default Value Scope" msgid "Default Value Scope"
msgstr "" msgstr "Bereik standaard waarde"
#. module: base #. module: base
#: view:ir.ui.view:0 #: view:ir.ui.view:0
@ -9468,7 +9569,7 @@ msgstr "Aanmaakdatum"
#. module: base #. module: base
#: help:ir.actions.server,trigger_name:0 #: help:ir.actions.server,trigger_name:0
msgid "The workflow signal to trigger" msgid "The workflow signal to trigger"
msgstr "" msgstr "Het workflow signaal om te triggeren"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_mrp #: model:ir.module.module,description:base.module_mrp
@ -9517,7 +9618,7 @@ msgstr ""
#. module: base #. module: base
#: model:ir.module.module,description:base.module_google_base_account #: model:ir.module.module,description:base.module_google_base_account
msgid "The module adds google user in res user" msgid "The module adds google user in res user"
msgstr "" msgstr "De module voegt een Google gebruiker toe aan het gebruikers bestand"
#. module: base #. module: base
#: selection:base.language.install,state:0 #: selection:base.language.install,state:0
@ -9554,7 +9655,7 @@ msgstr "Algerije"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_plugin #: model:ir.module.module,shortdesc:base.module_plugin
msgid "CRM Plugins" msgid "CRM Plugins"
msgstr "" msgstr "Relatiebeheer plugins"
#. module: base #. module: base
#: model:ir.actions.act_window,name:base.action_model_model #: model:ir.actions.act_window,name:base.action_model_model
@ -9657,7 +9758,7 @@ msgstr ""
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_mrp_jit #: model:ir.module.module,shortdesc:base.module_mrp_jit
msgid "Just In Time Scheduling" msgid "Just In Time Scheduling"
msgstr "" msgstr "Just In Time Planning"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_account_bank_statement_extensions #: model:ir.module.module,shortdesc:base.module_account_bank_statement_extensions
@ -10047,7 +10148,7 @@ msgstr ""
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_base_synchro #: model:ir.module.module,shortdesc:base.module_base_synchro
msgid "Multi-DB Synchronization" msgid "Multi-DB Synchronization"
msgstr "" msgstr "Meerdere databases synchronisatie"
#. module: base #. module: base
#: selection:ir.module.module,complexity:0 #: selection:ir.module.module,complexity:0
@ -10088,6 +10189,9 @@ msgid ""
"Todo list for CRM leads and opportunities.\n" "Todo list for CRM leads and opportunities.\n"
" " " "
msgstr "" msgstr ""
"\n"
"TODO lijst voor relatiebeheer leads en prospects.\n"
" "
#. module: base #. module: base
#: field:ir.actions.act_window.view,view_id:0 #: field:ir.actions.act_window.view,view_id:0
@ -10100,7 +10204,7 @@ msgstr "Weergave"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_wiki_sale_faq #: model:ir.module.module,shortdesc:base.module_wiki_sale_faq
msgid "Wiki: Sale FAQ" msgid "Wiki: Sale FAQ"
msgstr "" msgstr "Wiki: Verkoop FAQ"
#. module: base #. module: base
#: selection:ir.module.module,state:0 #: selection:ir.module.module,state:0
@ -10266,6 +10370,20 @@ msgid ""
"\n" "\n"
" " " "
msgstr "" msgstr ""
"\n"
"Deze module geeft u de mogelijkheid om het standaard factuurtarief te "
"definiëren per kostenplaats.\n"
"============================================================================="
"====\n"
"\n"
"Dit wordt vaak gebruikt wanneer een werknemer zijn urenstaat invult. De "
"waarden worden dan automatisch ingevuld, maar de mogelijkheid om deze aan te "
"passen blijft bestaan.\n"
"\n"
"Indien geen gegevens zijn ingevoerd voor de rekening, wordt de standaard "
"waarde van de kostenplaats gebruikt.\n"
"\n"
" "
#. module: base #. module: base
#: model:ir.ui.menu,name:base.menu_fundrising #: model:ir.ui.menu,name:base.menu_fundrising
@ -10316,7 +10434,7 @@ msgstr "res.log"
#: view:workflow.activity:0 #: view:workflow.activity:0
#: field:workflow.activity,flow_stop:0 #: field:workflow.activity,flow_stop:0
msgid "Flow Stop" msgid "Flow Stop"
msgstr "Einde werkschema" msgstr "Einde workflow"
#. module: base #. module: base
#: selection:ir.cron,interval_type:0 #: selection:ir.cron,interval_type:0
@ -10344,7 +10462,7 @@ msgstr "Fout !"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_marketing_campaign_crm_demo #: model:ir.module.module,shortdesc:base.module_marketing_campaign_crm_demo
msgid "Marketing Campaign - Demo" msgid "Marketing Campaign - Demo"
msgstr "" msgstr "Marketing Campagne - Demo gegevens"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_fetchmail_hr_recruitment #: model:ir.module.module,shortdesc:base.module_fetchmail_hr_recruitment
@ -10376,7 +10494,7 @@ msgstr "Deze methode bestaat niet meer"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_import_google #: model:ir.module.module,shortdesc:base.module_import_google
msgid "Google Import" msgid "Google Import"
msgstr "" msgstr "Google Import"
#. module: base #. module: base
#: model:res.partner.category,name:base.res_partner_category_12 #: model:res.partner.category,name:base.res_partner_category_12
@ -10594,7 +10712,7 @@ msgstr ""
"Maak een claim van een uitgaande levering.\n" "Maak een claim van een uitgaande levering.\n"
"===================================\n" "===================================\n"
"\n" "\n"
"Voegt claim link toe aan een uitgaande order.\n" "Voegt claim link toe aan een uitgaande levering.\n"
#. module: base #. module: base
#: view:ir.model:0 #: view:ir.model:0
@ -10632,6 +10750,7 @@ msgstr "%A - Volledige naam van de dag."
#: help:ir.values,user_id:0 #: help:ir.values,user_id:0
msgid "If set, action binding only applies for this user." msgid "If set, action binding only applies for this user."
msgstr "" msgstr ""
"Indien aangevinkt is deze regel alleen van toepassing voor deze gebruiker."
#. module: base #. module: base
#: model:res.country,name:base.gw #: model:res.country,name:base.gw
@ -10699,6 +10818,8 @@ msgstr "Voltooid"
msgid "" msgid ""
"Specify if missed occurrences should be executed when the server restarts." "Specify if missed occurrences should be executed when the server restarts."
msgstr "" msgstr ""
"Specificeert of gemiste acties, opnieuw moeten worden gestart als de server "
"herstart."
#. module: base #. module: base
#: model:res.partner.title,name:base.res_partner_title_miss #: model:res.partner.title,name:base.res_partner_title_miss
@ -11367,7 +11488,7 @@ msgstr "Alles stoppen"
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_analytic_user_function #: model:ir.module.module,shortdesc:base.module_analytic_user_function
msgid "Jobs on Contracts" msgid "Jobs on Contracts"
msgstr "" msgstr "Werknemerfunctie per contract/kostenplaats"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_import_sugarcrm #: model:ir.module.module,description:base.module_import_sugarcrm
@ -11472,7 +11593,7 @@ msgstr "Contract bevestiging fout"
#. module: base #. module: base
#: field:ir.values,key2:0 #: field:ir.values,key2:0
msgid "Qualifier" msgid "Qualifier"
msgstr "" msgstr "Kwalificatie"
#. module: base #. module: base
#: field:res.country.state,name:0 #: field:res.country.state,name:0
@ -11717,7 +11838,7 @@ msgstr "ir.wizard.screen"
#. module: base #. module: base
#: model:ir.model,name:base.model_workflow #: model:ir.model,name:base.model_workflow
msgid "workflow" msgid "workflow"
msgstr "Werkschema" msgstr "workflow"
#. module: base #. module: base
#: code:addons/base/ir/ir_model.py:255 #: code:addons/base/ir/ir_model.py:255
@ -11949,7 +12070,7 @@ msgstr "Tunesië"
#. module: base #. module: base
#: view:ir.actions.todo:0 #: view:ir.actions.todo:0
msgid "Wizards to be Launched" msgid "Wizards to be Launched"
msgstr "" msgstr "Wizards welke worden gestart"
#. module: base #. module: base
#: model:ir.module.category,name:base.module_category_manufacturing #: model:ir.module.category,name:base.module_category_manufacturing
@ -12083,7 +12204,7 @@ msgstr ""
#. module: base #. module: base
#: field:res.groups,trans_implied_ids:0 #: field:res.groups,trans_implied_ids:0
msgid "Transitively inherits" msgid "Transitively inherits"
msgstr "" msgstr "Transitieve overerving"
#. module: base #. module: base
#: field:ir.default,ref_table:0 #: field:ir.default,ref_table:0
@ -12293,7 +12414,7 @@ msgstr "Guatemala - Boekhouding"
#. module: base #. module: base
#: help:ir.cron,args:0 #: help:ir.cron,args:0
msgid "Arguments to be passed to the method, e.g. (uid,)." msgid "Arguments to be passed to the method, e.g. (uid,)."
msgstr "" msgstr "Argumenten welke worden doorgegeven aan de methodes, bijv. (uid)."
#. module: base #. module: base
#: model:res.partner.category,name:base.res_partner_category_5 #: model:res.partner.category,name:base.res_partner_category_5
@ -12704,7 +12825,7 @@ msgstr "ir.actions.client"
#. module: base #. module: base
#: help:ir.values,value:0 #: help:ir.values,value:0
msgid "Default value (pickled) or reference to an action" msgid "Default value (pickled) or reference to an action"
msgstr "" msgstr "Standaardwaarde of verwijzing naar een actie"
#. module: base #. module: base
#: sql_constraint:res.groups:0 #: sql_constraint:res.groups:0
@ -12763,7 +12884,7 @@ msgstr ""
#. module: base #. module: base
#: view:ir.rule:0 #: view:ir.rule:0
msgid "Rule definition (domain filter)" msgid "Rule definition (domain filter)"
msgstr "" msgstr "Regel definitie (domein filter)"
#. module: base #. module: base
#: model:ir.model,name:base.model_workflow_instance #: model:ir.model,name:base.model_workflow_instance
@ -12862,7 +12983,7 @@ msgstr "Low Level-objecten"
#. module: base #. module: base
#: help:ir.values,model:0 #: help:ir.values,model:0
msgid "Model to which this entry applies" msgid "Model to which this entry applies"
msgstr "" msgstr "Model waarover deze regel gaat."
#. module: base #. module: base
#: field:res.country,address_format:0 #: field:res.country,address_format:0
@ -13012,6 +13133,9 @@ msgid ""
" OpenERP Web kanban view.\n" " OpenERP Web kanban view.\n"
" " " "
msgstr "" msgstr ""
"\n"
" OpenERP Web kanban weergave.\n"
" "
#. module: base #. module: base
#: model:ir.ui.menu,name:base.menu_project_management_time_tracking #: model:ir.ui.menu,name:base.menu_project_management_time_tracking
@ -13209,6 +13333,9 @@ msgid ""
"Python code to be executed if condition is met.\n" "Python code to be executed if condition is met.\n"
"It is a Python block that can use the same values as for the condition field" "It is a Python block that can use the same values as for the condition field"
msgstr "" msgstr ""
"Python code welke wordt gestart als aan de conditie is voldaan.\n"
"Het is een Python block dat dezelfde waardes kan gebruiken als voor een "
"conditie veld."
#. module: base #. module: base
#: model:ir.actions.act_window,name:base.action_partner_supplier_form #: model:ir.actions.act_window,name:base.action_partner_supplier_form
@ -13352,7 +13479,7 @@ msgstr "Stel bankrekeningen in"
#. module: base #. module: base
#: field:ir.actions.client,tag:0 #: field:ir.actions.client,tag:0
msgid "Client action tag" msgid "Client action tag"
msgstr "" msgstr "Client actie tag"
#. module: base #. module: base
#: code:addons/base/res/res_lang.py:189 #: code:addons/base/res/res_lang.py:189
@ -13363,7 +13490,7 @@ msgstr "U kunt geen taal verwijderen die gebruikers voorkeurstaal is !"
#. module: base #. module: base
#: field:ir.values,model_id:0 #: field:ir.values,model_id:0
msgid "Model (change only)" msgid "Model (change only)"
msgstr "" msgstr "Model"
#. module: base #. module: base
#: model:ir.module.module,description:base.module_marketing_campaign_crm_demo #: model:ir.module.module,description:base.module_marketing_campaign_crm_demo
@ -13432,6 +13559,8 @@ msgid ""
"The object that should receive the workflow signal (must have an associated " "The object that should receive the workflow signal (must have an associated "
"workflow)" "workflow)"
msgstr "" msgstr ""
"et object dat het workflow signaal moet ontvangen (moet een verbonden "
"workflow heben)"
#. module: base #. module: base
#: model:ir.module.category,description:base.module_category_account_voucher #: model:ir.module.category,description:base.module_category_account_voucher
@ -13690,6 +13819,18 @@ msgid ""
"supplier in the routing of the assembly operation.\n" "supplier in the routing of the assembly operation.\n"
" " " "
msgstr "" msgstr ""
"\n"
"Deze module maakt het mogelijk een tussentijdse verzamelproces mogelijk voor "
"de ontvangst van grondstoffen aan productieorders.\n"
"============================================================================="
"================\n"
"\n"
"Dit kunt u bijvoorbeeld gebruiken indien u productie uitbesteed aan uw "
"leverancier/onderaannemer.\n"
"Zet in dit geval bij de grondstof de optie \"Automatisch verzamelen\" uit en "
"zet de locatie van de leverancier\n"
"in de routing van de assemblage verwerking.\n"
" "
#. module: base #. module: base
#: view:ir.actions.server:0 #: view:ir.actions.server:0
@ -13703,6 +13844,9 @@ msgid ""
"are available. To add a new language, you can use the 'Load an Official " "are available. To add a new language, you can use the 'Load an Official "
"Translation' wizard available from the 'Administration' menu." "Translation' wizard available from the 'Administration' menu."
msgstr "" msgstr ""
"De standaard taal welke wordt gebruikt in de user interface, wanneer "
"vertalingen aanwezig zijn. Om een nieuwe taal toe te voegen kunt u de \"Laad "
"een officiële vertaling\" gebruiken vanuit het instellingen menu."
#. module: base #. module: base
#: model:ir.module.module,description:base.module_l10n_es #: model:ir.module.module,description:base.module_l10n_es
@ -13999,6 +14143,8 @@ msgid ""
"This cron task is currently being executed and may not be modified, please " "This cron task is currently being executed and may not be modified, please "
"try again in a few minutes" "try again in a few minutes"
msgstr "" msgstr ""
"Deze planner taak wordt op dit moment uitgevoerd en kan zodoende niet worden "
"aangepast. Probeert u het over enkele minuten opnieuw."
#. module: base #. module: base
#: model:ir.module.module,description:base.module_product_expiry #: model:ir.module.module,description:base.module_product_expiry
@ -14378,6 +14524,8 @@ msgstr "TLS (STARTTLS)"
#: help:ir.actions.act_window,usage:0 #: help:ir.actions.act_window,usage:0
msgid "Used to filter menu and home actions from the user form." msgid "Used to filter menu and home actions from the user form."
msgstr "" msgstr ""
"Wordt gebruikt om het menu en home acties te filteren van het "
"gebruikersbestand."
#. module: base #. module: base
#: model:res.country,name:base.sa #: model:res.country,name:base.sa
@ -14394,7 +14542,7 @@ msgstr ""
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_fetchmail_crm_claim #: model:ir.module.module,shortdesc:base.module_fetchmail_crm_claim
msgid "eMail Gateway for CRM Claim" msgid "eMail Gateway for CRM Claim"
msgstr "E-mail gateway voor CRM Claims" msgstr "E-mail Gateway voor CRM Claims"
#. module: base #. module: base
#: help:res.partner,supplier:0 #: help:res.partner,supplier:0
@ -14498,7 +14646,7 @@ msgstr ""
#. module: base #. module: base
#: model:ir.module.module,description:base.module_auth_openid #: model:ir.module.module,description:base.module_auth_openid
msgid "Allow users to login through OpenID." msgid "Allow users to login through OpenID."
msgstr "" msgstr "Geeft gebruikers de mogelijkheid om in te loggen met OpenID."
#. module: base #. module: base
#: model:ir.module.module,shortdesc:base.module_account_payment #: model:ir.module.module,shortdesc:base.module_account_payment
@ -14605,6 +14753,8 @@ msgstr "En"
msgid "" msgid ""
"Database identifier of the record to which this applies. 0 = for all records" "Database identifier of the record to which this applies. 0 = for all records"
msgstr "" msgstr ""
"Database identifier van het record waar dit toe behoort. 0 = voor alle "
"records"
#. module: base #. module: base
#: field:ir.model.fields,relation:0 #: field:ir.model.fields,relation:0
@ -14687,7 +14837,7 @@ msgstr "Onderliggend veld"
#. module: base #. module: base
#: view:ir.rule:0 #: view:ir.rule:0
msgid "Detailed algorithm:" msgid "Detailed algorithm:"
msgstr "" msgstr "Gedetailleerde algoritme:"
#. module: base #. module: base
#: field:ir.actions.act_window,usage:0 #: field:ir.actions.act_window,usage:0
@ -14856,6 +15006,10 @@ msgid ""
" This module provides the core of the OpenERP web client.\n" " This module provides the core of the OpenERP web client.\n"
" " " "
msgstr "" msgstr ""
"\n"
" OpenERP Web core module.\n"
" deze module bevat de core functionaliteiten van de web cliënt.\n"
" "
#. module: base #. module: base
#: sql_constraint:res.country:0 #: sql_constraint:res.country:0
@ -15061,7 +15215,7 @@ msgstr ""
#: code:addons/orm.py:791 #: code:addons/orm.py:791
#, python-format #, python-format
msgid "Serialization field `%s` not found for sparse field `%s`!" msgid "Serialization field `%s` not found for sparse field `%s`!"
msgstr "" msgstr "Reeks veld '%s' niet gevonden voor sparse veld '%s'!"
#. module: base #. module: base
#: model:res.country,name:base.jm #: model:res.country,name:base.jm
@ -15335,11 +15489,14 @@ msgid ""
" OpenERP Web test suite.\n" " OpenERP Web test suite.\n"
" " " "
msgstr "" msgstr ""
"\n"
" OpenERP Web test suite.\n"
" "
#. module: base #. module: base
#: view:ir.values:0 #: view:ir.values:0
msgid "Action Bindings/Defaults" msgid "Action Bindings/Defaults"
msgstr "" msgstr "Acties/Standaard waarden"
#. module: base #. module: base
#: view:ir.rule:0 #: view:ir.rule:0
@ -15713,7 +15870,7 @@ msgstr "Maanden"
#. module: base #. module: base
#: view:workflow.instance:0 #: view:workflow.instance:0
msgid "Workflow Instances" msgid "Workflow Instances"
msgstr "Exemplaren werkschema" msgstr "Workflow instanties"
#. module: base #. module: base
#: code:addons/base/res/res_partner.py:284 #: code:addons/base/res/res_partner.py:284
@ -15805,6 +15962,8 @@ msgid ""
"This field is computed automatically based on bank accounts defined, having " "This field is computed automatically based on bank accounts defined, having "
"the display on footer checkbox set." "the display on footer checkbox set."
msgstr "" msgstr ""
"Dit veld wordt automatisch berekend, gebaseerd op de gedefinieerde "
"bankrekeningen, indien het veld voor het weergeven in de voet is aangevinkt."
#. module: base #. module: base
#: model:ir.module.module,description:base.module_mrp_subproduct #: model:ir.module.module,description:base.module_mrp_subproduct

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:45+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:42+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -5598,7 +5598,7 @@ msgstr "STOCK_MEDIA_PAUSE"
#. module: base #. module: base
#: help:res.country.state,code:0 #: help:res.country.state,code:0
msgid "The state code in three chars.\n" msgid "The state code in max. three chars."
msgstr "De provinciecode in drie karakters.\n" msgstr "De provinciecode in drie karakters.\n"
#. module: base #. module: base

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:42+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:39+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:43+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:40+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

File diff suppressed because it is too large Load Diff

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:43+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:40+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh
@ -460,7 +460,7 @@ msgstr "Obiect Sursa"
#. module: base #. module: base
#: model:res.partner.bank.type,format_layout:base.bank_normal #: model:res.partner.bank.type,format_layout:base.bank_normal
msgid "%(bank_name)s: %(acc_number)s" msgid "%(bank_name)s: %(acc_number)s"
msgstr "%(nume_banca)s: %(numar_de_cont)s" msgstr "%(bank_name)s: %(acc_number)s"
#. module: base #. module: base
#: view:ir.actions.todo:0 #: view:ir.actions.todo:0

File diff suppressed because it is too large Load Diff

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:43+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:40+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:43+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:41+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:38+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:35+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:43+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:40+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:46+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:43+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:44+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:41+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:44+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:41+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:44+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:41+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:44+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:41+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:44+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:41+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -5424,7 +5424,7 @@ msgstr "STOCK_MEDIA_PAUSE"
#. module: base #. module: base
#: help:res.country.state,code:0 #: help:res.country.state,code:0
msgid "The state code in three chars.\n" msgid "The state code in max. three chars."
"" ""
msgstr "" msgstr ""

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:44+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:42+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:44+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:42+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:46+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:43+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -14,8 +14,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:44+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:42+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-09-05 04:45+0000\n" "X-Launchpad-Export-Date: 2012-09-20 04:42+0000\n"
"X-Generator: Launchpad (build 15901)\n" "X-Generator: Launchpad (build 15985)\n"
#. module: base #. module: base
#: model:res.country,name:base.sh #: model:res.country,name:base.sh

View File

@ -1170,9 +1170,9 @@
<field name="model">ir.translation</field> <field name="model">ir.translation</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="Translations" version="7.0"> <form string="Translations" version="7.0">
<header> <t t-call="ui.Header">
<field name="state" widget="statusbar" nolabel="1"/> <field name="state" widget="statusbar" nolabel="1"/>
</header> </t>
<sheet> <sheet>
<group> <group>
<group> <group>
@ -1442,6 +1442,7 @@
<field name="name"/> <field name="name"/>
<field name="model_id"/> <field name="model_id"/>
<field name="group_id"/> <field name="group_id"/>
<field name="active"/>
</group> </group>
<group string="Access" col="4"> <group string="Access" col="4">
<field name="perm_read"/> <field name="perm_read"/>
@ -1493,8 +1494,9 @@
<sheet> <sheet>
<group> <group>
<group string="General"> <group string="General">
<field colspan="4" name="name"/> <field name="name"/>
<field name="model_id"/> <field name="model_id"/>
<field name="active"/>
</group> </group>
<group col="4" string="Access Rights"> <group col="4" string="Access Rights">
<field name="perm_read"/> <field name="perm_read"/>
@ -1731,26 +1733,30 @@
<field name="name">Config Wizard Steps</field> <field name="name">Config Wizard Steps</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<form string="Config Wizard Steps" version="7.0"> <form string="Config Wizard Steps" version="7.0">
<header> <t t-call="ui.Header">
<button name="action_launch" <button name="action_launch"
states="open" string="Launch" states="open" string="Launch"
type="object" icon="gtk-execute" class="oe_highlight" type="object" icon="gtk-execute"
help="Launch Configuration Wizard"/> class="oe_highlight"
help="Launch Configuration Wizard"/>
<button name="action_open" states="done" <button name="action_open" states="done"
string="Set as Todo" type="object" string="Set as Todo" type="object"
icon="gtk-convert" class="oe_highlight"/> icon="gtk-convert" class="oe_highlight"/>
<field name="state" widget="statusbar" statusbar_visible="open,done" nolabel="1" readonly="1" statusbar_colors='{"open":"red","done":"blue"}'/> <field name="state" widget="statusbar"
</header> statusbar_visible="open,done" nolabel="1"
<sheet> readonly="1"
<group col="4"> statusbar_colors='{"open":"red","done":"blue"}'/>
<field name="action_id"/> </t>
<field name="type"/> <sheet>
<field name="sequence"/> <group col="4">
</group> <field name="action_id"/>
<group string="Groups"> <field name="type"/>
<field name="groups_id" nolabel="1" colspan="4"/> <field name="sequence"/>
</group> </group>
</sheet> <group string="Groups">
<field name="groups_id" nolabel="1" colspan="4"/>
</group>
</sheet>
</form> </form>
</field> </field>
</record> </record>

View File

@ -328,7 +328,7 @@ class act_wizard(osv.osv):
act_wizard() act_wizard()
class act_url(osv.osv): class act_url(osv.osv):
_name = 'ir.actions.url' _name = 'ir.actions.act_url'
_table = 'ir_act_url' _table = 'ir_act_url'
_inherit = 'ir.actions.actions' _inherit = 'ir.actions.actions'
_sequence = 'ir_actions_id_seq' _sequence = 'ir_actions_id_seq'
@ -574,7 +574,7 @@ class actions_server(osv.osv):
# ids : original ids # ids : original ids
# id : current id of the object # id : current id of the object
# OUT: # OUT:
# False : Finnished correctly # False : Finished correctly
# ACTION_ID : Action to launch # ACTION_ID : Action to launch
# FIXME: refactor all the eval() calls in run()! # FIXME: refactor all the eval() calls in run()!
@ -771,7 +771,7 @@ class ir_actions_todo(osv.osv):
'type': fields.selection(TODO_TYPES, 'Type', required=True, 'type': fields.selection(TODO_TYPES, 'Type', required=True,
help="""Manual: Launched manually. help="""Manual: Launched manually.
Automatic: Runs whenever the system is reconfigured. Automatic: Runs whenever the system is reconfigured.
Launch Manually Once: after hacing been launched manually, it sets automatically to Done."""), Launch Manually Once: after having been launched manually, it sets automatically to Done."""),
'groups_id': fields.many2many('res.groups', 'res_groups_action_rel', 'uid', 'gid', 'Groups'), 'groups_id': fields.many2many('res.groups', 'res_groups_action_rel', 'uid', 'gid', 'Groups'),
'note': fields.text('Text', translate=True), 'note': fields.text('Text', translate=True),
} }

View File

@ -266,6 +266,105 @@ class ir_cron(osv.osv):
cr.commit() cr.commit()
cr.close() cr.close()
def _process_job(self, cr, job):
""" Run a given job taking care of the repetition.
The cursor has a lock on the job (aquired by _acquire_job()).
:param job: job to be run (as a dictionary).
"""
try:
now = datetime.now()
nextcall = datetime.strptime(job['nextcall'], DEFAULT_SERVER_DATETIME_FORMAT)
numbercall = job['numbercall']
ok = False
while nextcall < now and numbercall:
if numbercall > 0:
numbercall -= 1
if not ok or job['doall']:
self._callback(cr, job['user_id'], job['model'], job['function'], job['args'], job['id'])
if numbercall:
nextcall += _intervalTypes[job['interval_type']](job['interval_number'])
ok = True
addsql = ''
if not numbercall:
addsql = ', active=False'
cr.execute("UPDATE ir_cron SET nextcall=%s, numbercall=%s"+addsql+" WHERE id=%s",
(nextcall.strftime(DEFAULT_SERVER_DATETIME_FORMAT), numbercall, job['id']))
finally:
cr.commit()
cr.close()
@classmethod
def _acquire_job(cls, db_name):
# TODO remove 'check' argument from addons/base_action_rule/base_action_rule.py
""" Try to process one cron job.
This selects in database all the jobs that should be processed. It then
tries to lock each of them and, if it succeeds, run the cron job (if it
doesn't succeed, it means the job was already locked to be taken care
of by another thread) and return.
If a job was processed, returns True, otherwise returns False.
"""
db = openerp.sql_db.db_connect(db_name)
cr = db.cursor()
try:
# Careful to compare timestamps with 'UTC' - everything is UTC as of v6.1.
cr.execute("""SELECT * FROM ir_cron
WHERE numbercall != 0
AND active AND nextcall <= (now() at time zone 'UTC')
ORDER BY priority""")
for job in cr.dictfetchall():
task_cr = db.cursor()
try:
# Try to grab an exclusive lock on the job row from within the task transaction
acquired_lock = False
task_cr.execute("""SELECT *
FROM ir_cron
WHERE id=%s
FOR UPDATE NOWAIT""",
(job['id'],), log_exceptions=False)
acquired_lock = True
except psycopg2.OperationalError, e:
if e.pgcode == '55P03':
# Class 55: Object not in prerequisite state; 55P03: lock_not_available
_logger.debug('Another process/thread is already busy executing job `%s`, skipping it.', job['name'])
continue
else:
# Unexpected OperationalError
raise
finally:
if not acquired_lock:
# we're exiting due to an exception while acquiring the lot
task_cr.close()
# Got the lock on the job row, run its code
_logger.debug('Starting job `%s`.', job['name'])
openerp.modules.registry.RegistryManager.check_registry_signaling(db_name)
registry = openerp.pooler.get_pool(db_name)
registry[cls._name]._process_job(task_cr, job)
openerp.modules.registry.RegistryManager.signal_caches_change(db_name)
return True
except psycopg2.ProgrammingError, e:
if e.pgcode == '42P01':
# Class 42 — Syntax Error or Access Rule Violation; 42P01: undefined_table
# The table ir_cron does not exist; this is probably not an OpenERP database.
_logger.warning('Tried to poll an undefined table on database %s.', db_name)
else:
raise
except Exception, ex:
_logger.warning('Exception in cron:', exc_info=True)
finally:
cr.commit()
cr.close()
return False
def update_running_cron(self, cr): def update_running_cron(self, cr):
""" Schedule as soon as possible a wake-up for this database. """ """ Schedule as soon as possible a wake-up for this database. """
# Verify whether the server is already started and thus whether we need to commit # Verify whether the server is already started and thus whether we need to commit

View File

@ -468,6 +468,7 @@ class ir_model_access(osv.osv):
_name = 'ir.model.access' _name = 'ir.model.access'
_columns = { _columns = {
'name': fields.char('Name', size=64, required=True, select=True), 'name': fields.char('Name', size=64, required=True, select=True),
'active': fields.boolean('Active', help='If you uncheck the active field, it will disable the ACL without deleting it (if you delete a native ACL, it will be re-created when you reload the module.'),
'model_id': fields.many2one('ir.model', 'Object', required=True, domain=[('osv_memory','=', False)], select=True, ondelete='cascade'), 'model_id': fields.many2one('ir.model', 'Object', required=True, domain=[('osv_memory','=', False)], select=True, ondelete='cascade'),
'group_id': fields.many2one('res.groups', 'Group', ondelete='cascade', select=True), 'group_id': fields.many2one('res.groups', 'Group', ondelete='cascade', select=True),
'perm_read': fields.boolean('Read Access'), 'perm_read': fields.boolean('Read Access'),
@ -475,6 +476,9 @@ class ir_model_access(osv.osv):
'perm_create': fields.boolean('Create Access'), 'perm_create': fields.boolean('Create Access'),
'perm_unlink': fields.boolean('Delete Access'), 'perm_unlink': fields.boolean('Delete Access'),
} }
_defaults = {
'active': True,
}
def check_groups(self, cr, uid, group): def check_groups(self, cr, uid, group):
grouparr = group.split('.') grouparr = group.split('.')
@ -499,14 +503,16 @@ class ir_model_access(osv.osv):
cr.execute("SELECT perm_" + mode + " " cr.execute("SELECT perm_" + mode + " "
" FROM ir_model_access a " " FROM ir_model_access a "
" JOIN ir_model m ON (m.id = a.model_id) " " JOIN ir_model m ON (m.id = a.model_id) "
" WHERE m.model = %s AND a.group_id = %s", (model_name, group_id) " WHERE m.model = %s AND a.active IS True "
" AND a.group_id = %s", (model_name, group_id)
) )
r = cr.fetchone() r = cr.fetchone()
if r is None: if r is None:
cr.execute("SELECT perm_" + mode + " " cr.execute("SELECT perm_" + mode + " "
" FROM ir_model_access a " " FROM ir_model_access a "
" JOIN ir_model m ON (m.id = a.model_id) " " JOIN ir_model m ON (m.id = a.model_id) "
" WHERE m.model = %s AND a.group_id IS NULL", (model_name, ) " WHERE m.model = %s AND a.active IS True "
" AND a.group_id IS NULL", (model_name, )
) )
r = cr.fetchone() r = cr.fetchone()
@ -531,6 +537,7 @@ class ir_model_access(osv.osv):
LEFT JOIN ir_module_category c ON (c.id=g.category_id) LEFT JOIN ir_module_category c ON (c.id=g.category_id)
WHERE WHERE
m.model=%s AND m.model=%s AND
a.active IS True AND
a.perm_''' + access_mode, (model_name,)) a.perm_''' + access_mode, (model_name,))
return [('%s/%s' % x) if x[0] else x[1] for x in cr.fetchall()] return [('%s/%s' % x) if x[0] else x[1] for x in cr.fetchall()]
@ -560,6 +567,7 @@ class ir_model_access(osv.osv):
' JOIN res_groups_users_rel gu ON (gu.gid = a.group_id) ' ' JOIN res_groups_users_rel gu ON (gu.gid = a.group_id) '
' WHERE m.model = %s ' ' WHERE m.model = %s '
' AND gu.uid = %s ' ' AND gu.uid = %s '
' AND a.active IS True '
, (model_name, uid,) , (model_name, uid,)
) )
r = cr.fetchone()[0] r = cr.fetchone()[0]
@ -571,6 +579,7 @@ class ir_model_access(osv.osv):
' JOIN ir_model m ON (m.id = a.model_id) ' ' JOIN ir_model m ON (m.id = a.model_id) '
' WHERE a.group_id IS NULL ' ' WHERE a.group_id IS NULL '
' AND m.model = %s ' ' AND m.model = %s '
' AND a.active IS True '
, (model_name,) , (model_name,)
) )
r = cr.fetchone()[0] r = cr.fetchone()[0]

View File

@ -75,6 +75,7 @@ class ir_rule(osv.osv):
_columns = { _columns = {
'name': fields.char('Name', size=128, select=1), 'name': fields.char('Name', size=128, select=1),
'active': fields.boolean('Active', help="If you uncheck the active field, it will disable the record rule without deleting it (if you delete a native record rule, it may be re-created when you reload the module."),
'model_id': fields.many2one('ir.model', 'Object',select=1, required=True, ondelete="cascade"), 'model_id': fields.many2one('ir.model', 'Object',select=1, required=True, ondelete="cascade"),
'global': fields.function(_get_value, string='Global', type='boolean', store=True, help="If no group is specified the rule is global and applied to everyone"), 'global': fields.function(_get_value, string='Global', type='boolean', store=True, help="If no group is specified the rule is global and applied to everyone"),
'groups': fields.many2many('res.groups', 'rule_group_rel', 'rule_group_id', 'group_id', 'Groups'), 'groups': fields.many2many('res.groups', 'rule_group_rel', 'rule_group_id', 'group_id', 'Groups'),
@ -89,6 +90,7 @@ class ir_rule(osv.osv):
_order = 'model_id DESC' _order = 'model_id DESC'
_defaults = { _defaults = {
'active': True,
'perm_read': True, 'perm_read': True,
'perm_write': True, 'perm_write': True,
'perm_create': True, 'perm_create': True,
@ -114,6 +116,7 @@ class ir_rule(osv.osv):
FROM ir_rule r FROM ir_rule r
JOIN ir_model m ON (r.model_id = m.id) JOIN ir_model m ON (r.model_id = m.id)
WHERE m.model = %s WHERE m.model = %s
AND r.active is True
AND r.perm_""" + mode + """ AND r.perm_""" + mode + """
AND (r.id IN (SELECT rule_group_id FROM rule_group_rel g_rel AND (r.id IN (SELECT rule_group_id FROM rule_group_rel g_rel
JOIN res_groups_users_rel u_rel ON (g_rel.group_id = u_rel.gid) JOIN res_groups_users_rel u_rel ON (g_rel.group_id = u_rel.gid)

View File

@ -267,7 +267,7 @@ class ir_translation(osv.osv):
# FIXME: should assert that `source` is unicode and fix all callers to always pass unicode # FIXME: should assert that `source` is unicode and fix all callers to always pass unicode
# so we can remove the string encoding/decoding. # so we can remove the string encoding/decoding.
if not lang: if not lang:
return u'' return tools.ustr(source or '')
if isinstance(types, basestring): if isinstance(types, basestring):
types = (types,) types = (types,)
if source: if source:

View File

@ -298,7 +298,7 @@ class ir_ui_menu(osv.osv):
('ir.actions.report.xml', 'ir.actions.report.xml'), ('ir.actions.report.xml', 'ir.actions.report.xml'),
('ir.actions.act_window', 'ir.actions.act_window'), ('ir.actions.act_window', 'ir.actions.act_window'),
('ir.actions.wizard', 'ir.actions.wizard'), ('ir.actions.wizard', 'ir.actions.wizard'),
('ir.actions.url', 'ir.actions.url'), ('ir.actions.act_url', 'ir.actions.act_url'),
('ir.actions.server', 'ir.actions.server'), ('ir.actions.server', 'ir.actions.server'),
('ir.actions.client', 'ir.actions.client'), ('ir.actions.client', 'ir.actions.client'),
]), ]),

View File

@ -192,7 +192,6 @@ class view(osv.osv):
def write(self, cr, uid, ids, vals, context=None): def write(self, cr, uid, ids, vals, context=None):
if not isinstance(ids, (list, tuple)): if not isinstance(ids, (list, tuple)):
ids = [ids] ids = [ids]
result = super(view, self).write(cr, uid, ids, vals, context)
# drop the corresponding view customizations (used for dashboards for example), otherwise # drop the corresponding view customizations (used for dashboards for example), otherwise
# not all users would see the updated views # not all users would see the updated views
@ -200,7 +199,7 @@ class view(osv.osv):
if custom_view_ids: if custom_view_ids:
self.pool.get('ir.ui.view.custom').unlink(cr, uid, custom_view_ids) self.pool.get('ir.ui.view.custom').unlink(cr, uid, custom_view_ids)
return result return super(view, self).write(cr, uid, ids, vals, context)
def graph_get(self, cr, uid, id, model, node_obj, conn_obj, src_node, des_node, label, scale, context=None): def graph_get(self, cr, uid, id, model, node_obj, conn_obj, src_node, des_node, label, scale, context=None):
nodes=[] nodes=[]

View File

@ -237,7 +237,6 @@ class module(osv.osv):
'menus_by_module': fields.function(_get_views, string='Menus', type='text', multi="meta", store=True), 'menus_by_module': fields.function(_get_views, string='Menus', type='text', multi="meta", store=True),
'reports_by_module': fields.function(_get_views, string='Reports', type='text', multi="meta", store=True), 'reports_by_module': fields.function(_get_views, string='Reports', type='text', multi="meta", store=True),
'views_by_module': fields.function(_get_views, string='Views', type='text', multi="meta", store=True), 'views_by_module': fields.function(_get_views, string='Views', type='text', multi="meta", store=True),
'certificate' : fields.char('Quality Certificate', size=64, readonly=True),
'application': fields.boolean('Application', readonly=True), 'application': fields.boolean('Application', readonly=True),
'icon': fields.char('Icon URL', size=128), 'icon': fields.char('Icon URL', size=128),
'icon_image': fields.function(_get_icon_image, string='Icon', type="binary"), 'icon_image': fields.function(_get_icon_image, string='Icon', type="binary"),
@ -253,12 +252,9 @@ class module(osv.osv):
def _name_uniq_msg(self, cr, uid, ids, context=None): def _name_uniq_msg(self, cr, uid, ids, context=None):
return _('The name of the module must be unique !') return _('The name of the module must be unique !')
def _certificate_uniq_msg(self, cr, uid, ids, context=None):
return _('The certificate ID of the module must be unique !')
_sql_constraints = [ _sql_constraints = [
('name_uniq', 'UNIQUE (name)',_name_uniq_msg ), ('name_uniq', 'UNIQUE (name)',_name_uniq_msg ),
('certificate_uniq', 'UNIQUE (certificate)',_certificate_uniq_msg )
] ]
def unlink(self, cr, uid, ids, context=None): def unlink(self, cr, uid, ids, context=None):
@ -511,7 +507,6 @@ class module(osv.osv):
'contributors': ', '.join(terp.get('contributors', [])) or False, 'contributors': ', '.join(terp.get('contributors', [])) or False,
'website': terp.get('website', ''), 'website': terp.get('website', ''),
'license': terp.get('license', 'AGPL-3'), 'license': terp.get('license', 'AGPL-3'),
'certificate': terp.get('certificate') or False,
'sequence': terp.get('sequence', 100), 'sequence': terp.get('sequence', 100),
'application': terp.get('application', False), 'application': terp.get('application', False),
'auto_install': terp.get('auto_install', False), 'auto_install': terp.get('auto_install', False),
@ -677,14 +672,6 @@ class module(osv.osv):
if not mod.description: if not mod.description:
_logger.warning('module %s: description is empty !', mod.name) _logger.warning('module %s: description is empty !', mod.name)
if not mod.certificate or not mod.certificate.isdigit():
_logger.info('module %s: no quality certificate', mod.name)
else:
val = long(mod.certificate[2:]) % 97 == 29
if not val:
_logger.critical('module %s: invalid quality certificate: %s', mod.name, mod.certificate)
raise osv.except_osv(_('Error'), _('Module %s: Invalid Quality Certificate') % (mod.name,))
class module_dependency(osv.osv): class module_dependency(osv.osv):
_name = "ir.module.module.dependency" _name = "ir.module.module.dependency"
_description = "Module dependency" _description = "Module dependency"

View File

@ -25,25 +25,25 @@
</record> </record>
<record model="ir.module.category" id="module_category_sales_management"> <record model="ir.module.category" id="module_category_sales_management">
<field name="name">Sales Management</field> <field name="name">Sales</field>
<field name="description">Helps you handle your quotations, sale orders and invoicing.</field> <field name="description">Helps you handle your quotations, sale orders and invoicing.</field>
<field name="sequence">2</field> <field name="sequence">2</field>
</record> </record>
<record model="ir.module.category" id="module_category_project_management"> <record model="ir.module.category" id="module_category_project_management">
<field name="name">Project Management</field> <field name="name">Project</field>
<field name="description">Helps you manage your projects and tasks by tracking them, generating plannings, etc...</field> <field name="description">Helps you manage your projects and tasks by tracking them, generating plannings, etc...</field>
<field name="sequence">3</field> <field name="sequence">3</field>
</record> </record>
<record model="ir.module.category" id="module_category_knowledge_management"> <record model="ir.module.category" id="module_category_knowledge_management">
<field name="name">Knowledge Management</field> <field name="name">Knowledge</field>
<field name="description">Lets you install addons geared towards sharing knowledge with and between your employees.</field> <field name="description">Lets you install addons geared towards sharing knowledge with and between your employees.</field>
<field name="sequence">4</field> <field name="sequence">4</field>
</record> </record>
<record model="ir.module.category" id="module_category_warehouse_management"> <record model="ir.module.category" id="module_category_warehouse_management">
<field name="name">Warehouse Management</field> <field name="name">Warehouse</field>
<field name="description">Helps you manage your inventory and main stock operations: delivery orders, receptions, etc.</field> <field name="description">Helps you manage your inventory and main stock operations: delivery orders, receptions, etc.</field>
<field name="sequence">5</field> <field name="sequence">5</field>
</record> </record>
@ -67,7 +67,7 @@
</record> </record>
<record model="ir.module.category" id="module_category_purchase_management"> <record model="ir.module.category" id="module_category_purchase_management">
<field name="name">Purchase Management</field> <field name="name">Purchases</field>
<field name="description">Helps you manage your purchase-related processes such as requests for quotations, supplier invoices, etc...</field> <field name="description">Helps you manage your purchase-related processes such as requests for quotations, supplier invoices, etc...</field>
<field name="sequence">9</field> <field name="sequence">9</field>
</record> </record>
@ -134,7 +134,7 @@
</record> </record>
<record model="res.groups" id="group_multi_currency"> <record model="res.groups" id="group_multi_currency">
<field name="category_id" ref="module_category_usability"/> <field name="category_id" ref="module_category_hidden"/>
</record> </record>
<record model="res.groups" id="group_no_one"> <record model="res.groups" id="group_no_one">

View File

@ -47,10 +47,10 @@ class base_module_upgrade(osv.osv_memory):
ids = self.get_module_list(cr, uid, context=context) ids = self.get_module_list(cr, uid, context=context)
if not ids: if not ids:
res['arch'] = '''<form string="Apply Schedule Upgrade" version="7.0"> res['arch'] = '''<form string="Apply Schedule Upgrade" version="7.0">
<header> <t t-call="ui.Header">
<button name="config" string="Start configuration" type="object" icon="gtk-ok"/> <button name="config" string="Start configuration" type="object" icon="gtk-ok"/>
<button special="cancel" string="Close" icon="gtk-cancel"/> <button special="cancel" string="Close" icon="gtk-cancel"/>
</header> </t>
<separator string="Apply Schedule Upgrade" colspan="4"/> <separator string="Apply Schedule Upgrade" colspan="4"/>
</form>''' </form>'''

View File

@ -172,38 +172,35 @@ class res_partner_bank(osv.osv):
('required', field.required)] ('required', field.required)]
return res return res
def _prepare_name_get(self, cr, uid, bank_type_obj, bank_obj, context=None): def _prepare_name_get(self, cr, uid, bank_dicts, context=None):
""" Format the name of a res.partner.bank.
This function is designed to be inherited to add replacement fields.
:param bank_dicts: a list of res.partner.bank dicts, as returned by the method read()
:return: [(id, name), ...], as returned by the method name_get()
""" """
Format the name of a res.partner.bank. # prepare a mapping {code: format_layout} for all bank types
This function is designed to be inherited to add replacement fields. bank_type_obj = self.pool.get('res.partner.bank.type')
:param browse_record bank_type_obj: res.partner.bank.type object bank_types = bank_type_obj.browse(cr, uid, bank_type_obj.search(cr, uid, []), context=context)
:param browse_record bank_obj: res.partner.bank object bank_code_format = dict((bt.code, bt.format_layout) for bt in bank_types)
:rtype: str
:return: formatted name of a res.partner.bank record res = []
""" for data in bank_dicts:
return bank_type_obj.format_layout % bank_obj._data[bank_obj.id] name = data['acc_number']
if data['state'] and bank_code_format.get(data['state']):
try:
if not data.get('bank_name'):
data['bank_name'] = _('BANK')
name = bank_code_format[data['state']] % data
except Exception:
raise osv.except_osv(_("Formating Error"), _("Invalid Bank Account Type Name format."))
res.append((data.get('id', False), name))
return res
def name_get(self, cr, uid, ids, context=None): def name_get(self, cr, uid, ids, context=None):
if not len(ids): if not len(ids):
return [] return []
bank_type_obj = self.pool.get('res.partner.bank.type') bank_dicts = self.read(cr, uid, ids, context=context)
res = [] return self._prepare_name_get(cr, uid, bank_dicts, context=context)
for val in self.browse(cr, uid, ids, context=context):
result = val.acc_number
if val.state:
type_ids = bank_type_obj.search(cr, uid, [('code','=',val.state)])
if type_ids:
t = bank_type_obj.browse(cr, uid, type_ids[0], context=context)
try:
# avoid the default format_layout to result in "False: ..."
if not val._data[val.id]['bank_name']:
val._data[val.id]['bank_name'] = _('BANK')
result = self._prepare_name_get(cr, uid, t, val, context=context)
except:
result += ' [Formatting Error]'
raise
res.append((val.id, result))
return res
def onchange_company_id(self, cr, uid, ids, company_id, context=None): def onchange_company_id(self, cr, uid, ids, company_id, context=None):
result = {} result = {}

View File

@ -90,8 +90,8 @@
<form string="Bank account" version="7.0"> <form string="Bank account" version="7.0">
<group col="4"> <group col="4">
<field name="state"/> <field name="state"/>
<field name="acc_number"/> <field name="acc_number" placeholder="Account Number"/>
<field name="company_id" on_change="onchange_company_id(company_id)" <field name="company_id" groups="base.group_multi_company" on_change="onchange_company_id(company_id)"
invisible="context.get('company_hide', True)" widget="selection"/> invisible="context.get('company_hide', True)" widget="selection"/>
<field name="footer" invisible="context.get('footer_hide', True)"/> <field name="footer" invisible="context.get('footer_hide', True)"/>
</group> </group>
@ -113,7 +113,7 @@
<group name="bank" string="Information About the Bank"> <group name="bank" string="Information About the Bank">
<field name="bank" on_change="onchange_bank_id(bank)"/> <field name="bank" on_change="onchange_bank_id(bank)"/>
<field name="bank_name" attrs="{'required': [('company_id','&lt;&gt;',False)]}"/> <field name="bank_name" attrs="{'required': [('company_id','&lt;&gt;',False)]}"/>
<field name="bank_bic" placeholder="[Identifier code]" /> <field name="bank_bic" placeholder="e.g. GEBABEBB" />
</group> </group>
</group> </group>

View File

@ -111,8 +111,8 @@ class res_company(osv.osv):
'rml_header1': fields.char('Company Slogan', size=200, help="Appears by default on the top right corner of your printed documents (report header)."), 'rml_header1': fields.char('Company Slogan', size=200, help="Appears by default on the top right corner of your printed documents (report header)."),
'rml_header2': fields.text('RML Internal Header', required=True), 'rml_header2': fields.text('RML Internal Header', required=True),
'rml_header3': fields.text('RML Internal Header for Landscape Reports', required=True), 'rml_header3': fields.text('RML Internal Header for Landscape Reports', required=True),
'rml_footer': fields.text('Report Footer', help="Footer text displayed at the bottom of all reports. Automatically set based on company details, "\ 'rml_footer': fields.text('Report Footer', help="Footer text displayed at the bottom of all reports."),
"but may also be customized by directly editing it."), 'rml_footer_readonly': fields.related('rml_footer', type='text', string='Report Footer', readonly=True),
'custom_footer': fields.boolean('Custom Footer', help="Check this to define the report footer manually. Otherwise it will be filled in automatically."), 'custom_footer': fields.boolean('Custom Footer', help="Check this to define the report footer manually. Otherwise it will be filled in automatically."),
'logo': fields.related('partner_id', 'image', string="Logo", type="binary"), 'logo': fields.related('partner_id', 'image', string="Logo", type="binary"),
'currency_id': fields.many2one('res.currency', 'Currency', required=True), 'currency_id': fields.many2one('res.currency', 'Currency', required=True),
@ -138,36 +138,28 @@ class res_company(osv.osv):
('name_uniq', 'unique (name)', 'The company name must be unique !') ('name_uniq', 'unique (name)', 'The company name must be unique !')
] ]
def onchange_footer(self, cr, uid, ids, context=None): def onchange_footer(self, cr, uid, ids, custom_footer, phone, fax, email, website, vat, company_registry, bank_ids, context=None):
# when touched, the footer becomes custom if custom_footer:
return {'value': {'custom_footer': True}} return {}
def set_auto_footer(self, cr, uid, ids, context=None): # first line (notice that missing elements are filtered out before the join)
# unset the flag 'custom_footer'; this will automatically compute the footer res = ' | '.join(filter(bool, [
return self.write(cr, uid, ids, {'custom_footer': False}, context=context) phone and '%s: %s' % (_('Phone'), phone),
fax and '%s: %s' % (_('Fax'), fax),
def compute_footer(self, cr, uid, ids, context=None): email and '%s: %s' % (_('Email'), email),
website and '%s: %s' % (_('Website'), website),
vat and '%s: %s' % (_('TIN'), vat),
company_registry and '%s: %s' % (_('Reg'), company_registry),
]))
# second line: bank accounts
res_partner_bank = self.pool.get('res.partner.bank') res_partner_bank = self.pool.get('res.partner.bank')
for company in self.browse(cr, uid, ids, context): account_data = self.resolve_2many_commands(cr, uid, 'bank_ids', bank_ids, context=context)
if not company.custom_footer: account_names = res_partner_bank._prepare_name_get(cr, uid, account_data, context=context)
# first line (notice that missing elements are filtered out before the join) if account_names:
res = ' | '.join(filter(bool, [ title = _('Bank Accounts') if len(account_names) > 1 else _('Bank Account')
company.phone and '%s: %s' % (_('Phone'), company.phone), res += '\n%s: %s' % (title, ', '.join(name for id, name in account_names))
company.fax and '%s: %s' % (_('Fax'), company.fax),
company.email and '%s: %s' % (_('Email'), company.email), return {'value': {'rml_footer': res, 'rml_footer_readonly': res}}
company.website and '%s: %s' % (_('Website'), company.website),
company.vat and '%s: %s' % (_('TIN'), company.vat),
company.company_registry and '%s: %s' % (_('Reg'), company.company_registry),
]))
# second line: bank accounts
account_ids = [acc.id for acc in company.bank_ids if acc.footer]
account_names = res_partner_bank.name_get(cr, uid, account_ids, context=context)
if account_names:
title = _('Bank Accounts') if len(account_names) > 1 else _('Bank Account')
res += '\n%s: %s' % (title, ', '.join(name for id, name in account_names))
# update footer
self.write(cr, uid, [company.id], {'rml_footer': res}, context=context)
return True
def on_change_country(self, cr, uid, ids, country_id, context=None): def on_change_country(self, cr, uid, ids, country_id, context=None):
currency_id = self._get_euro(cr, uid, context=context) currency_id = self._get_euro(cr, uid, context=context)
@ -203,7 +195,7 @@ class res_company(osv.osv):
] ]
ids = proxy.search(cr, uid, args, context=context) ids = proxy.search(cr, uid, args, context=context)
user = self.pool.get('res.users').browse(cr, uid, uid, context=context) user = self.pool.get('res.users').browse(cr, SUPERUSER_ID, uid, context=context)
for rule in proxy.browse(cr, uid, ids, context): for rule in proxy.browse(cr, uid, ids, context):
if eval(rule.expression, {'context': context, 'user': user}): if eval(rule.expression, {'context': context, 'user': user}):
return rule.company_dest_id.id return rule.company_dest_id.id
@ -248,17 +240,11 @@ class res_company(osv.osv):
self.cache_restart(cr) self.cache_restart(cr)
company_id = super(res_company, self).create(cr, uid, vals, context=context) company_id = super(res_company, self).create(cr, uid, vals, context=context)
obj_partner.write(cr, uid, partner_id, {'company_id': company_id}, context=context) obj_partner.write(cr, uid, partner_id, {'company_id': company_id}, context=context)
self.compute_footer(cr, uid, [company_id], context=context)
return company_id return company_id
def write(self, cr, uid, ids, values, context=None): def write(self, cr, uid, ids, values, context=None):
self.cache_restart(cr) self.cache_restart(cr)
if isinstance(ids, (int, long)): return super(res_company, self).write(cr, uid, ids, values, context=context)
ids = [ids]
super(res_company, self).write(cr, uid, ids, values, context=context)
if 'rml_footer' not in values:
self.compute_footer(cr, uid, ids, context=context)
return True
def _get_euro(self, cr, uid, context=None): def _get_euro(self, cr, uid, context=None):
rate_obj = self.pool.get('res.currency.rate') rate_obj = self.pool.get('res.currency.rate')

View File

@ -55,29 +55,26 @@
<div> <div>
<field name="rml_header1" placeholder="e.g. Global Business Solutions"/> <field name="rml_header1" placeholder="e.g. Global Business Solutions"/>
</div> </div>
<field name="website" widget="url" placeholder="e.g. www.openerp.com"/> <field name="website" widget="url" placeholder="e.g. www.openerp.com"
on_change="onchange_footer(custom_footer, phone, fax, email, website, vat, company_registry, bank_ids)"/>
</group> </group>
<group> <group>
<field name="phone"/> <field name="phone" on_change="onchange_footer(custom_footer, phone, fax, email, website, vat, company_registry, bank_ids)"/>
<field name="fax"/> <field name="fax" on_change="onchange_footer(custom_footer, phone, fax, email, website, vat, company_registry, bank_ids)"/>
<field name="email"/> <field name="email" on_change="onchange_footer(custom_footer, phone, fax, email, website, vat, company_registry, bank_ids)"/>
<field name="vat"/> <field name="vat" on_change="onchange_footer(custom_footer, phone, fax, email, website, vat, company_registry, bank_ids)"/>
<field name="company_registry"/> <field name="company_registry" on_change="onchange_footer(custom_footer, phone, fax, email, website, vat, company_registry, bank_ids)"/>
</group> </group>
</group> </group>
<group string="Bank Accounts"> <group string="Bank Accounts">
<field name="bank_ids" nolabel="1" <field name="bank_ids" nolabel="1" context="{'default_company_id': active_id, 'footer_hide': False}"
context="{'default_company_id': active_id, 'footer_hide': False}"/> on_change="onchange_footer(custom_footer, phone, fax, email, website, vat, company_registry, bank_ids)"/>
</group> </group>
<group string="Report Footer Configuration"> <group string="Report Footer Configuration">
<field name="paper_format" on_change="onchange_paper_format(paper_format)"/> <field name="paper_format" on_change="onchange_paper_format(paper_format)"/>
<field name="custom_footer" invisible="1"/> <field name="custom_footer" on_change="onchange_footer(custom_footer, phone, fax, email, website, vat, company_registry, bank_ids)"/>
<label for="rml_footer"/> <field name="rml_footer" attrs="{'invisible': [('custom_footer','=',False)]}"/>
<div> <field name="rml_footer_readonly" attrs="{'invisible': [('custom_footer','=',True)]}"/>
<field name="rml_footer" on_change="onchange_footer()"/>
<button string="Set Automatic Footer" type="object" name="set_auto_footer"
attrs="{'invisible': [('custom_footer','=',False)]}" class="oe_edit_only"/>
</div>
</group> </group>
</page> </page>
<page string="Header/Footer" groups="base.group_no_one"> <page string="Header/Footer" groups="base.group_no_one">

View File

@ -552,5 +552,22 @@ class res_config_settings(osv.osv_memory):
if action_ids: if action_ids:
return act_window.read(cr, uid, action_ids[0], [], context=context) return act_window.read(cr, uid, action_ids[0], [], context=context)
return {} return {}
def name_get(self, cr, uid, ids, context=None):
""" Override name_get method to return an appropriate configuration wizard
name, and not the generated name."""
if not ids:
return []
# name_get may receive int id instead of an id list
if isinstance(ids, (int, long)):
ids = [ids]
act_window = self.pool.get('ir.actions.act_window')
action_ids = act_window.search(cr, uid, [('res_model', '=', self._name)], context=context)
name = self._name
if action_ids:
name = act_window.read(cr, uid, action_ids[0], ['name'], context=context)['name']
return [(record.id, name) for record in self.browse(cr, uid , ids, context=context)]
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -64,7 +64,7 @@ addresses belonging to this country.\n\nYou can use the python-style string pate
'The code of the country must be unique !') 'The code of the country must be unique !')
] ]
_defaults = { _defaults = {
'address_format': "%(company_name)s\n%(street)s\n%(street2)s\n%(city)s,%(state_code)s %(zip)s\n%(country_name)s", 'address_format': "%(street)s\n%(street2)s\n%(city)s %(state_code)s %(zip)s\n%(country_name)s",
} }
_order='name' _order='name'
@ -89,9 +89,10 @@ class CountryState(osv.osv):
_columns = { _columns = {
'country_id': fields.many2one('res.country', 'Country', 'country_id': fields.many2one('res.country', 'Country',
required=True), required=True),
'name': fields.char('State Name', size=64, required=True), 'name': fields.char('State Name', size=64, required=True,
help='Administrative divisions of a country. E.g. Fed. State, Departement, Canton'),
'code': fields.char('State Code', size=3, 'code': fields.char('State Code', size=3,
help='The state code in three chars.\n', required=True), help='The state code in max. three chars.', required=True),
} }
_order = 'code' _order = 'code'

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<openerp> <openerp>
<data noupdate="1"> <data noupdate="1">
<record id="ad" model="res.country"> <record id="ad" model="res.country">
<field name="name">Andorra, Principality of</field> <field name="name">Andorra, Principality of</field>
<field name="code">ad</field> <field name="code">ad</field>
@ -70,7 +70,7 @@
<record id="au" model="res.country"> <record id="au" model="res.country">
<field name="name">Australia</field> <field name="name">Australia</field>
<field name="code">au</field> <field name="code">au</field>
<field name="address_format" eval="'%(street)s\n%(street2)s %(state_code)s %(zip)s\n%(country_name)s'" /> <field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s %(state_code)s %(zip)s\n%(country_name)s'" />
<field name="currency_id" ref="AUD"/> <field name="currency_id" ref="AUD"/>
</record> </record>
<record id="aw" model="res.country"> <record id="aw" model="res.country">
@ -106,7 +106,7 @@
<record id="be" model="res.country"> <record id="be" model="res.country">
<field name="name">Belgium</field> <field name="name">Belgium</field>
<field name="code">be</field> <field name="code">be</field>
<field name="address_format" eval="'%(street)s\n%(zip)s, %(city)s\n%(country_name)s'" /> <field name="address_format" eval="'%(street)s\n%(street2)s\n%(zip)s %(city)s\n%(country_name)s'" />
<field name="currency_id" ref="EUR"/> <field name="currency_id" ref="EUR"/>
</record> </record>
<record id="bf" model="res.country"> <record id="bf" model="res.country">
@ -162,7 +162,7 @@
<record id="br" model="res.country"> <record id="br" model="res.country">
<field name="name">Brazil</field> <field name="name">Brazil</field>
<field name="code">br</field> <field name="code">br</field>
<field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s,%(state_code)s %(zip)s%(country_name)s'" /> <field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s %(state_code)s\n%(zip)s\n%(country_name)s'" />
<field name="currency_id" ref="BRL"/> <field name="currency_id" ref="BRL"/>
</record> </record>
<record id="bs" model="res.country"> <record id="bs" model="res.country">
@ -198,7 +198,7 @@
<record id="ca" model="res.country"> <record id="ca" model="res.country">
<field name="name">Canada</field> <field name="name">Canada</field>
<field name="code">ca</field> <field name="code">ca</field>
<field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s, %(state_code)s %(zip)s\n%(country_name)s'" /> <field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s %(state_code)s %(zip)s\n%(country_name)s'" />
<field name="currency_id" ref="CAD"/> <field name="currency_id" ref="CAD"/>
</record> </record>
<record id="cc" model="res.country"> <record id="cc" model="res.country">
@ -350,7 +350,7 @@
<record id="es" model="res.country"> <record id="es" model="res.country">
<field name="name">Spain</field> <field name="name">Spain</field>
<field name="code">es</field> <field name="code">es</field>
<field name="address_format" eval="'%(street)s\n%(zip)s %(city)s,%(state_name)s\n%(country_name)s'" /> <field name="address_format" eval="'%(street)s\n%(street2)s\n%(zip)s %(city)s\n%(country_name)s'" />
<field name="currency_id" ref="EUR"/> <field name="currency_id" ref="EUR"/>
</record> </record>
<record id="et" model="res.country"> <record id="et" model="res.country">
@ -386,7 +386,7 @@
<record id="fr" model="res.country"> <record id="fr" model="res.country">
<field name="name">France</field> <field name="name">France</field>
<field name="code">fr</field> <field name="code">fr</field>
<field name="address_format" eval="'%(street)s\n%(zip)s %(city)s\n%(country_name)s'" /> <field name="address_format" eval="'%(street)s\n%(street2)s\n%(zip)s %(city)s\n%(country_name)s'" />
<field name="currency_id" ref="EUR"/> <field name="currency_id" ref="EUR"/>
</record> </record>
<record id="ga" model="res.country"> <record id="ga" model="res.country">
@ -532,7 +532,7 @@
<record id="in" model="res.country"> <record id="in" model="res.country">
<field name="name">India</field> <field name="name">India</field>
<field name="code">in</field> <field name="code">in</field>
<field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s, %(zip)s\n%(state_name)s%(country_name)s'" /> <field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s %(zip)s\n%(state_name)s\n%(country_name)s'" />
<field name="currency_id" ref="INR"/> <field name="currency_id" ref="INR"/>
</record> </record>
<record id="io" model="res.country"> <record id="io" model="res.country">
@ -1174,7 +1174,7 @@
</record> </record>
<record id="uk" model="res.country"> <record id="uk" model="res.country">
<field name="name">United Kingdom</field> <field name="name">United Kingdom</field>
<field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s\n%(country_name)s\n%(zip)s'" /> <field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s\n%(state_name)s\n%(zip)s\n%(country_name)s'" />
<field name="code">gb</field> <field name="code">gb</field>
<field name="currency_id" ref="GBP"/> <field name="currency_id" ref="GBP"/>
</record> </record>
@ -1186,7 +1186,7 @@
<record id="us" model="res.country"> <record id="us" model="res.country">
<field name="name">United States</field> <field name="name">United States</field>
<field name="code">us</field> <field name="code">us</field>
<field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s, %(state_code)s %(zip)s\n%(country_name)s'" /> <field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s %(state_code)s %(zip)s\n%(country_name)s'" />
<field name="currency_id" ref="USD"/> <field name="currency_id" ref="USD"/>
</record> </record>
<record id="uy" model="res.country"> <record id="uy" model="res.country">
@ -1269,6 +1269,7 @@
<field name="code">zm</field> <field name="code">zm</field>
<field name="currency_id" ref="ZMK"/> <field name="currency_id" ref="ZMK"/>
</record> </record>
<!-- DEPRECATED, New name of Zaire is Democratic Republic of the Congo ! --> <!-- DEPRECATED, New name of Zaire is Democratic Republic of the Congo ! -->
<record id="zr" model="res.country"> <record id="zr" model="res.country">
<field name="name">Zaire</field> <field name="name">Zaire</field>
@ -1280,5 +1281,5 @@
<field name="code">zw</field> <field name="code">zw</field>
<field name="currency_id" ref="ZWD"/> <field name="currency_id" ref="ZWD"/>
</record> </record>
</data> </data>
</openerp> </openerp>

View File

@ -77,7 +77,7 @@ class lang(osv.osv):
_logger.warning(msg, lang, lc) _logger.warning(msg, lang, lc)
if not lang_name: if not lang_name:
lang_name = tools.get_languages().get(lang, lang) lang_name = tools.ALL_LANGUAGES.get(lang, lang)
def fix_xa0(s): def fix_xa0(s):

View File

@ -22,24 +22,59 @@
import math import math
import openerp import openerp
from osv import osv, fields from osv import osv, fields
from openerp import SUPERUSER_ID
import re import re
import tools import tools
from tools.translate import _ from tools.translate import _
import logging import logging
import pooler import pooler
import pytz import pytz
from lxml import etree
class format_address(object):
def fields_view_get_address(self, cr, uid, arch, context={}):
user_obj = self.pool.get('res.users')
fmt = user_obj.browse(cr, SUPERUSER_ID, uid, context).company_id.country_id
fmt = fmt and fmt.address_format
layouts = {
'%(city)s %(state_code)s\n%(zip)s': """
<div class="address_format">
<field name="city" placeholder="City" style="width: 50%%"/>
<field name="state_id" class="oe_no_button" placeholder="State" style="width: 47%%" options='{"no_open": true}'/>
<br/>
<field name="zip" placeholder="ZIP"/>
</div>
""",
'%(zip)s %(city)s': """
<div class="address_format">
<field name="zip" placeholder="ZIP" style="width: 40%%"/>
<field name="city" placeholder="City" style="width: 57%%"/>
<br/>
<field name="state_id" class="oe_no_button" placeholder="State" options='{"no_open": true}'/>
</div>
""",
'%(city)s\n%(state_name)s\n%(zip)s': """
<div class="address_format">
<field name="city" placeholder="City"/>
<field name="state_id" class="oe_no_button" placeholder="State" options='{"no_open": true}'/>
<field name="zip" placeholder="ZIP"/>
</div>
"""
}
for k,v in layouts.items():
if fmt and (k in fmt):
doc = etree.fromstring(arch)
for node in doc.xpath("//div[@class='address_format']"):
tree = etree.fromstring(v)
node.getparent().replace(node, tree)
arch = etree.tostring(doc)
break
return arch
def _tz_get(self,cr,uid, context=None): def _tz_get(self,cr,uid, context=None):
return [(x, x) for x in pytz.all_timezones] return [(x, x) for x in pytz.all_timezones]
class res_payterm(osv.osv):
_description = 'Payment term'
_name = 'res.payterm'
_order = 'name'
_columns = {
'name': fields.char('Payment Term (short name)', size=64),
}
class res_partner_category(osv.osv): class res_partner_category(osv.osv):
def name_get(self, cr, uid, ids, context=None): def name_get(self, cr, uid, ids, context=None):
@ -127,7 +162,7 @@ def _lang_get(self, cr, uid, context=None):
POSTAL_ADDRESS_FIELDS = ('street', 'street2', 'zip', 'city', 'state_id', 'country_id') POSTAL_ADDRESS_FIELDS = ('street', 'street2', 'zip', 'city', 'state_id', 'country_id')
ADDRESS_FIELDS = POSTAL_ADDRESS_FIELDS + ('email', 'phone', 'fax', 'mobile', 'website', 'ref', 'lang') ADDRESS_FIELDS = POSTAL_ADDRESS_FIELDS + ('email', 'phone', 'fax', 'mobile', 'website', 'ref', 'lang')
class res_partner(osv.osv): class res_partner(osv.osv, format_address):
_description = 'Partner' _description = 'Partner'
_name = "res.partner" _name = "res.partner"
@ -151,28 +186,31 @@ class res_partner(osv.osv):
'name': fields.char('Name', size=128, required=True, select=True), 'name': fields.char('Name', size=128, required=True, select=True),
'date': fields.date('Date', select=1), 'date': fields.date('Date', select=1),
'title': fields.many2one('res.partner.title', 'Title'), 'title': fields.many2one('res.partner.title', 'Title'),
'parent_id': fields.many2one('res.partner', 'Owned by'), 'parent_id': fields.many2one('res.partner', 'Company'),
'child_ids': fields.one2many('res.partner', 'parent_id', 'Contacts'), 'child_ids': fields.one2many('res.partner', 'parent_id', 'Contacts'),
'ref': fields.char('Reference', size=64, select=1), 'ref': fields.char('Reference', size=64, select=1),
'lang': fields.selection(_lang_get, 'Language', 'lang': fields.selection(_lang_get, 'Language',
help="If the selected language is loaded in the system, all documents related to this partner will be printed in this language. If not, it will be english."), help="If the selected language is loaded in the system, all documents related to this contact will be printed in this language. If not, it will be English."),
'tz': fields.selection(_tz_get, 'Timezone', size=64, 'tz': fields.selection(_tz_get, 'Timezone', size=64,
help="The partner's timezone, used to output proper date and time values inside printed reports. " help="The partner's timezone, used to output proper date and time values inside printed reports. "
"It is important to set a value for this field. You should use the same timezone " "It is important to set a value for this field. You should use the same timezone "
"that is otherwise used to pick and render date and time values: your computer's timezone."), "that is otherwise used to pick and render date and time values: your computer's timezone."),
'user_id': fields.many2one('res.users', 'Salesperson', help='The internal user that is in charge of communicating with this partner if any.'), 'user_id': fields.many2one('res.users', 'Salesperson', help='The internal user that is in charge of communicating with this contact if any.'),
'vat': fields.char('TIN', size=32, help="Tax Identification Number. Check the box if the partner is subjected to taxes. Used by the some of the legal statements."), 'vat': fields.char('TIN', size=32, help="Tax Identification Number. Check the box if this contact is subjected to taxes. Used by the some of the legal statements."),
'bank_ids': fields.one2many('res.partner.bank', 'partner_id', 'Banks'), 'bank_ids': fields.one2many('res.partner.bank', 'partner_id', 'Banks'),
'website': fields.char('Website', size=64, help="Website of Partner or Company"), 'website': fields.char('Website', size=64, help="Website of Partner or Company"),
'comment': fields.text('Notes'), 'comment': fields.text('Notes'),
'address': fields.one2many('res.partner.address', 'partner_id', 'Contacts'), # should be removed in version 7, but kept until then for backward compatibility 'address': fields.one2many('res.partner.address', 'partner_id', 'Addresses',
deprecated="The address information is now directly stored on each Partner record. "\
"Multiple contacts with their own address can be added via the child_ids relationship. "\
"This field will be removed as of OpenERP 7.1."),
'category_id': fields.many2many('res.partner.category', id1='partner_id', id2='category_id', string='Tags'), 'category_id': fields.many2many('res.partner.category', id1='partner_id', id2='category_id', string='Tags'),
'credit_limit': fields.float(string='Credit Limit'), 'credit_limit': fields.float(string='Credit Limit'),
'ean13': fields.char('EAN13', size=13), 'ean13': fields.char('EAN13', size=13),
'active': fields.boolean('Active'), 'active': fields.boolean('Active'),
'customer': fields.boolean('Customer', help="Check this box if the partner is a customer."), 'customer': fields.boolean('Customer', help="Check this box if this contact is a customer."),
'supplier': fields.boolean('Supplier', help="Check this box if the partner is a supplier. If it's not checked, purchase people will not see it when encoding a purchase order."), 'supplier': fields.boolean('Supplier', help="Check this box if this contact is a supplier. If it's not checked, purchase people will not see it when encoding a purchase order."),
'employee': fields.boolean('Employee', help="Check this box if the partner is an Employee."), 'employee': fields.boolean('Employee', help="Check this box if this contact is an Employee."),
'function': fields.char('Job Position', size=128), 'function': fields.char('Job Position', size=128),
'type': fields.selection([('default', 'Default'), ('invoice', 'Invoice'), 'type': fields.selection([('default', 'Default'), ('invoice', 'Invoice'),
('delivery', 'Delivery'), ('contact', 'Contact'), ('delivery', 'Delivery'), ('contact', 'Contact'),
@ -184,7 +222,8 @@ class res_partner(osv.osv):
'city': fields.char('City', size=128), 'city': fields.char('City', size=128),
'state_id': fields.many2one("res.country.state", 'State'), 'state_id': fields.many2one("res.country.state", 'State'),
'country_id': fields.many2one('res.country', 'Country'), 'country_id': fields.many2one('res.country', 'Country'),
'country': fields.related('country_id', type='many2one', relation='res.country', string='Country'), # for backward compatibility 'country': fields.related('country_id', type='many2one', relation='res.country', string='Country',
deprecated="This field will be removed as of OpenERP 7.1, use country_id instead"),
'email': fields.char('Email', size=240), 'email': fields.char('Email', size=240),
'phone': fields.char('Phone', size=64), 'phone': fields.char('Phone', size=64),
'fax': fields.char('Fax', size=64), 'fax': fields.char('Fax', size=64),
@ -194,13 +233,13 @@ class res_partner(osv.osv):
'use_parent_address': fields.boolean('Use Company Address', help="Select this if you want to set company's address information for this contact"), 'use_parent_address': fields.boolean('Use Company Address', help="Select this if you want to set company's address information for this contact"),
# image: all image fields are base64 encoded and PIL-supported # image: all image fields are base64 encoded and PIL-supported
'image': fields.binary("Image", 'image': fields.binary("Image",
help="This field holds the image used as avatar for the partner, limited to 1024x1024px"), help="This field holds the image used as avatar for this contact, limited to 1024x1024px"),
'image_medium': fields.function(_get_image, fnct_inv=_set_image, 'image_medium': fields.function(_get_image, fnct_inv=_set_image,
string="Medium-sized image", type="binary", multi="_get_image", string="Medium-sized image", type="binary", multi="_get_image",
store={ store={
'res.partner': (lambda self, cr, uid, ids, c={}: ids, ['image'], 10), 'res.partner': (lambda self, cr, uid, ids, c={}: ids, ['image'], 10),
}, },
help="Medium-sized image of the partner. It is automatically "\ help="Medium-sized image of this contact. It is automatically "\
"resized as a 128x128px image, with aspect ratio preserved. "\ "resized as a 128x128px image, with aspect ratio preserved. "\
"Use this field in form views or some kanban views."), "Use this field in form views or some kanban views."),
'image_small': fields.function(_get_image, fnct_inv=_set_image, 'image_small': fields.function(_get_image, fnct_inv=_set_image,
@ -208,7 +247,7 @@ class res_partner(osv.osv):
store={ store={
'res.partner': (lambda self, cr, uid, ids, c={}: ids, ['image'], 10), 'res.partner': (lambda self, cr, uid, ids, c={}: ids, ['image'], 10),
}, },
help="Small-sized image of the partner. It is automatically "\ help="Small-sized image of this contact. It is automatically "\
"resized as a 64x64px image, with aspect ratio preserved. "\ "resized as a 64x64px image, with aspect ratio preserved. "\
"Use this field anywhere a small image is required."), "Use this field anywhere a small image is required."),
'company_id': fields.many2one('res.company', 'Company', select=1), 'company_id': fields.many2one('res.company', 'Company', select=1),
@ -231,6 +270,14 @@ class res_partner(osv.osv):
image = tools.image_colorize(open(openerp.modules.get_module_resource('base', 'static/src/img', 'avatar.png')).read()) image = tools.image_colorize(open(openerp.modules.get_module_resource('base', 'static/src/img', 'avatar.png')).read())
return tools.image_resize_image_big(image.encode('base64')) return tools.image_resize_image_big(image.encode('base64'))
def fields_view_get(self, cr, user, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
if (not view_id) and (view_type=='form') and context and context.get('force_email', False):
view_id = self.pool.get('ir.model.data').get_object_reference(cr, user, 'base', 'view_partner_simple_form')[1]
res = super(res_partner,self).fields_view_get(cr, user, view_id, view_type, context, toolbar=toolbar, submenu=submenu)
if view_type == 'form':
res['arch'] = self.fields_view_get_address(cr, user, res['arch'], context=context)
return res
_defaults = { _defaults = {
'active': True, 'active': True,
'lang': lambda self, cr, uid, ctx: ctx.get('lang', 'en_US'), 'lang': lambda self, cr, uid, ctx: ctx.get('lang', 'en_US'),
@ -350,7 +397,7 @@ class res_partner(osv.osv):
- otherwise: default, everything is set as the name """ - otherwise: default, everything is set as the name """
match = re.search(r'([^\s,<@]+@[^>\s,]+)', text) match = re.search(r'([^\s,<@]+@[^>\s,]+)', text)
if match: if match:
email = match.group(1) email = match.group(1)
name = text[:text.index(email)].replace('"','').replace('<','').strip() name = text[:text.index(email)].replace('"','').replace('<','').strip()
else: else:
name, email = text, '' name, email = text, ''
@ -398,7 +445,7 @@ class res_partner(osv.osv):
def find_or_create(self, cr, uid, email, context=None): def find_or_create(self, cr, uid, email, context=None):
""" Find a partner with the given ``email`` or use :py:method:`~.name_create` """ Find a partner with the given ``email`` or use :py:method:`~.name_create`
to create one to create one
:param str email: email-like string, which should contain at least one email, :param str email: email-like string, which should contain at least one email,
e.g. ``"Raoul Grosbedon <r.g@grosbedon.fr>"``""" e.g. ``"Raoul Grosbedon <r.g@grosbedon.fr>"``"""
assert email, 'an email is required for find_or_create to work' assert email, 'an email is required for find_or_create to work'
@ -498,7 +545,7 @@ class res_partner(osv.osv):
# get the information that will be injected into the display format # get the information that will be injected into the display format
# get the address format # get the address format
address_format = address.country_id and address.country_id.address_format or \ address_format = address.country_id and address.country_id.address_format or \
'%(company_name)s\n%(street)s\n%(street2)s\n%(city)s,%(state_code)s %(zip)s' "%(street)s\n%(street2)s\n%(city)s %(state_code)s %(zip)s\n%(country_name)s"
args = { args = {
'state_code': address.state_id and address.state_id.code or '', 'state_code': address.state_id and address.state_id.code or '',
'state_name': address.state_id and address.state_id.name or '', 'state_name': address.state_id and address.state_id.name or '',
@ -511,10 +558,10 @@ class res_partner(osv.osv):
args[field] = getattr(address, field) or '' args[field] = getattr(address, field) or ''
if without_company: if without_company:
args['company_name'] = '' args['company_name'] = ''
elif address.parent_id:
address_format = '%(company_name)s\n' + address_format
return address_format % args return address_format % args
# res.partner.address is deprecated; it is still there for backward compability only and will be removed in next version # res.partner.address is deprecated; it is still there for backward compability only and will be removed in next version
class res_partner_address(osv.osv): class res_partner_address(osv.osv):
_table = "res_partner" _table = "res_partner"

View File

@ -20,17 +20,32 @@
<record id="res_partner_title_madam" model="res.partner.title"> <record id="res_partner_title_madam" model="res.partner.title">
<field name="domain">contact</field> <field name="domain">contact</field>
<field name="name">Madam</field> <field name="name">Madam</field>
<field name="shortcut">Ms.</field> <field name="shortcut">Mrs.</field>
</record> </record>
<record id="res_partner_title_miss" model="res.partner.title"> <record id="res_partner_title_miss" model="res.partner.title">
<field name="domain">contact</field> <field name="domain">contact</field>
<field name="name">Miss</field> <field name="name">Miss</field>
<field name="shortcut">Mss</field> <field name="shortcut">Miss</field>
</record> </record>
<record id="res_partner_title_sir" model="res.partner.title"> <record id="res_partner_title_sir" model="res.partner.title">
<field name="domain">contact</field> <field name="domain">contact</field>
<field name="name">Sir</field> <field name="name">Sir</field>
<field name="shortcut">M.</field> <field name="shortcut">Sir</field>
</record>
<record id="res_partner_title_mister" model="res.partner.title">
<field name="domain">contact</field>
<field name="name">Mister</field>
<field name="shortcut">Mr.</field>
</record>
<record id="res_partner_title_doctor" model="res.partner.title">
<field name="domain">contact</field>
<field name="name">Doctor</field>
<field name="shortcut">Dr.</field>
</record>
<record id="res_partner_title_prof" model="res.partner.title">
<field name="domain">contact</field>
<field name="name">Professor</field>
<field name="shortcut">Prof.</field>
</record> </record>
<!-- Default bank account description --> <!-- Default bank account description -->

Some files were not shown because too many files have changed in this diff Show More