[MERGE] Sync with trunk

bzr revid: odo@openerp.com-20121001144941-16d8mbi5475c3tyb
This commit is contained in:
Olivier Dony 2012-10-01 16:49:41 +02:00
commit e35992cc53
352 changed files with 40675 additions and 19359 deletions

2
debian/control vendored
View File

@ -16,6 +16,7 @@ Depends:
python,
postgresql-client,
python-dateutil,
python-docutils,
python-feedparser,
python-gdata,
python-ldap,
@ -23,6 +24,7 @@ Depends:
python-lxml,
python-mako,
python-openid,
python-psutil,
python-psycopg2,
python-pybabel,
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
"""
import imp
import logging
import os
import signal
@ -92,7 +91,7 @@ def setup_pid_file():
def preload_registry(dbname):
""" Preload a registry, and start the cron."""
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()
registry.schedule_cron_jobs()
@ -105,13 +104,12 @@ def run_test_file(dbname, test_file):
db, registry = openerp.pooler.get_db_and_pool(dbname, update_module=config['init'] or config['update'], pooljobs=False)
cr = db.cursor()
_logger.info('loading test file %s', test_file)
openerp.tools.convert_yaml_import(cr, 'base', file(test_file), {}, 'test', True)
openerp.tools.convert_yaml_import(cr, 'base', file(test_file), 'test', {}, 'test', True)
cr.rollback()
cr.close()
except Exception:
_logger.exception('Failed to initialize database `%s` and run test file `%s`.', dbname, test_file)
def export_translation():
config = openerp.tools.config
dbname = config['db_name']
@ -203,9 +201,10 @@ def quit_on_signals():
try:
while quit_signals_received == 0:
time.sleep(60)
except KeyboardInterrupt, e:
except KeyboardInterrupt:
pass
config = openerp.tools.config
if config['pidfile']:
os.unlink(config['pidfile'])
@ -218,8 +217,7 @@ def configure_babel_localedata_path():
import babel
babel.localedata._dirname = os.path.join(os.path.dirname(sys.executable), 'localedata')
if __name__ == "__main__":
def main():
os.environ["TZ"] = "UTC"
check_root_user()
@ -248,20 +246,13 @@ if __name__ == "__main__":
sys.exit(0)
if not config["stop_after_init"]:
setup_pid_file()
# Some module register themselves when they are loaded so we need the
# services to be running before loading any registry.
openerp.service.start_services()
for m in openerp.conf.server_wide_modules:
try:
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['workers']:
openerp.service.start_services_workers()
else:
openerp.service.start_services()
if config['db_name']:
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"]:
sys.exit(0)
setup_pid_file()
_logger.info('OpenERP server is running, waiting for connections...')
quit_on_signals()
if __name__ == "__main__":
main()
# 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

@ -32,18 +32,25 @@ import modules
import netsvc
import osv
import pooler
import pychart
import release
import report
import run_tests
import service
import sql_db
import test
import tiny_socket
import tools
import wizard
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:

View File

@ -22,7 +22,6 @@
import ir
import module
import res
import publisher_warranty
import report
import test

View File

@ -25,20 +25,23 @@
'name': 'Base',
'version': '1.3',
'category': 'Hidden',
'description': """The kernel of OpenERP, needed for all installation.""",
'description': """
The kernel of OpenERP, needed for all installation.
===================================================
""",
'author': 'OpenERP SA',
'maintainer': 'OpenERP SA',
'website': 'http://www.openerp.com',
'depends': [],
'init_xml': [
'data': [
'base_data.xml',
'currency_data.xml',
'res/res_country_data.xml',
'security/base_security.xml',
'base_menu.xml',
'res/res_security.xml',
'res/res_config.xml',
'data/res.country.state.csv'
],
'update_xml': [
'data/res.country.state.csv',
'ir/wizard/wizard_menu_view.xml',
'ir/ir.xml',
'ir/ir_filters.xml',
@ -56,6 +59,7 @@
'module/wizard/base_module_configuration_view.xml',
'module/wizard/base_export_language_view.xml',
'module/wizard/base_update_translations_view.xml',
'module/wizard/base_module_immediate_install.xml',
'res/res_company_view.xml',
'res/res_request_view.xml',
'res/res_lang_view.xml',
@ -65,25 +69,19 @@
'res/res_bank_view.xml',
'res/res_country_view.xml',
'res/res_currency_view.xml',
'res/res_partner_event_view.xml',
'res/res_users_view.xml',
'res/wizard/partner_sms_send_view.xml',
'res/wizard/partner_wizard_massmail_view.xml',
'res/wizard/partner_clear_ids_view.xml',
'res/wizard/partner_wizard_ean_check_view.xml',
'res/res_partner_data.xml',
'res/ir_property_view.xml',
'security/base_security.xml',
'publisher_warranty/publisher_warranty_view.xml',
'security/ir.model.access.csv',
'security/ir.model.access-1.csv', # res.partner.address is deprecated; it is still there for backward compability only and will be removed in next version
'res/res_widget_view.xml',
'res/res_widget_data.xml',
'publisher_warranty/publisher_warranty_data.xml',
],
'demo_xml': [
'demo': [
'base_demo.xml',
'res/res_partner_demo.xml',
'res/res_partner_demo.yml',
'res/res_widget_demo.xml',
],
'test': [
@ -100,7 +98,6 @@
],
'installable': 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:

View File

@ -146,17 +146,15 @@ select setval('ir_ui_menu_id_seq', 2);
CREATE TABLE res_users (
id serial NOT NULL,
name varchar(64) not null,
active boolean default True,
login varchar(64) NOT NULL UNIQUE,
password varchar(64) default null,
email varchar(64) default null,
context_tz varchar(64) default null,
signature text,
context_lang varchar(64) default '',
tz varchar(64) default null,
lang varchar(64) default '',
-- No FK references below, will be added later by ORM
-- (when the destination rows exist)
company_id int,
partner_id int,
primary key(id)
);
alter table res_users add constraint res_users_login_uniq unique (login);
@ -286,6 +284,7 @@ CREATE TABLE ir_module_module (
write_date timestamp without time zone,
write_uid integer references res_users on delete set null,
website character varying(256),
summary character varying(256),
name character varying(128) NOT NULL,
author character varying(128),
url character varying(128),
@ -295,7 +294,6 @@ CREATE TABLE ir_module_module (
shortdesc character varying(256),
complexity character varying(32),
category_id integer REFERENCES ir_module_category ON DELETE SET NULL,
certificate character varying(64),
description text,
application boolean default False,
demo boolean default False,
@ -347,11 +345,44 @@ CREATE TABLE ir_model_data (
res_id integer, primary key(id)
);
-- Records foreign keys and constraints installed by a module (so they can be
-- removed when the module is uninstalled):
-- - for a foreign key: type is 'f',
-- - for a constraint: type is 'u' (this is the convention PostgreSQL uses).
CREATE TABLE ir_model_constraint (
id serial NOT NULL,
create_uid integer,
create_date timestamp without time zone,
write_date timestamp without time zone,
write_uid integer,
date_init timestamp without time zone,
date_update timestamp without time zone,
module integer NOT NULL references ir_module_module on delete restrict,
model integer NOT NULL references ir_model on delete restrict,
type character varying(1) NOT NULL,
name character varying(128) NOT NULL
);
-- Records relation tables (i.e. implementing many2many) installed by a module
-- (so they can be removed when the module is uninstalled).
CREATE TABLE ir_model_relation (
id serial NOT NULL,
create_uid integer,
create_date timestamp without time zone,
write_date timestamp without time zone,
write_uid integer,
date_init timestamp without time zone,
date_update timestamp without time zone,
module integer NOT NULL references ir_module_module on delete restrict,
model integer NOT NULL references ir_model on delete restrict,
name character varying(128) NOT NULL
);
---------------------------------
-- Users
---------------------------------
insert into res_users (id,login,password,name,active,company_id,context_lang) values (1,'admin','admin','Administrator',True,1,'en_US');
insert into res_users (id,login,password,active,company_id,partner_id,lang) values (1,'admin','admin',True,1,1,'en_US');
insert into ir_model_data (name,module,model,noupdate,res_id) values ('user_root','base','res.users',True,1);
-- Compatibility purpose, to remove V6.0

File diff suppressed because it is too large Load Diff

View File

@ -1,26 +1,25 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1">
<record id="demo_address" model="res.partner">
<field name="name">Fabien D'souza</field>
<field name="street">Chaussee de Namur</field>
<field name="zip">1367</field>
<field name="city">Gerompont</field>
<field name="phone">(+32).81.81.37.00</field>
<field name="type">default</field>
<field model="res.country" name="country_id" ref="be"/>
<!-- Company ID will be set later -->
<field name="company_id" eval="None"/>
<record id="partner_demo" model="res.partner">
<field name="name">Demo User</field>
<field name="company_id" ref="main_company"/>
<field name="customer" eval="False"/>
</record>
<record id="user_demo" model="res.users">
<field name="partner_id" ref="base.partner_demo"/>
<field name="login">demo</field>
<field name="password">demo</field>
<field name="name">Demo User</field>
<field name="signature">Mr Demo</field>
<field name="company_id" ref="main_company"/>
<field name="groups_id" eval="[(6,0,[ref('base.group_user')])]"/>
</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>
</openerp>

View File

@ -1,23 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<menuitem id="menu_reporting" name="Reporting" sequence="90"/>
<!-- Top menu item -->
<menuitem name="Reporting"
id="menu_reporting"
groups="base.group_user"
sequence="170"/>
<menuitem id="menu_reporting_dashboard" name="Dashboards" parent="menu_reporting" sequence="0"/>
<menuitem id="menu_reporting_config" name="Configuration" parent="menu_reporting" sequence="100" groups="base.group_system"/>
<menuitem id="menu_administration" name="Settings" sequence="100" icon="terp-administration"/>
<!-- Top menu item -->
<menuitem name="Settings"
id="menu_administration"
sequence="500"/>
<menuitem id="menu_management" name="Modules" parent="menu_administration" sequence="0"/>
<menuitem id="menu_config" name="Configuration" parent="menu_administration" sequence="1"/>
<menuitem id="menu_administration_shortcut" parent="menu_administration" name="Custom Shortcuts" sequence="50"/>
<menuitem id="menu_users" name="Users" parent="menu_administration" sequence="4"/>
<menuitem id="menu_translation" name="Translations" parent="menu_administration" sequence="7"/>
<menuitem id="menu_translation_app" name="Application Terms" parent="menu_translation" sequence="4" groups="base.group_no_one"/>
<menuitem id="menu_translation_export" name="Import / Export" groups="base.group_no_one" parent="menu_translation" sequence="3"/>
<menuitem id="menu_custom" name="Technical" parent="menu_administration" sequence="110" groups="base.group_no_one"/>
<menuitem id="next_id_2" name="User Interface" parent="menu_custom"/>
<menuitem id="menu_translation_export" name="Import / Export" parent="menu_translation" sequence="3" groups="base.group_no_one"/>
<menuitem id="menu_custom" name="Technical" parent="menu_administration" sequence="110" groups="base.group_no_one"/>
<menuitem id="next_id_2" name="User Interface" parent="menu_custom"/>
<menuitem id="menu_email" name="Email" parent="menu_custom" sequence="1"/>
<menuitem id="menu_security" name="Security" parent="menu_custom" sequence="25"/>
<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="menu_low_workflow" name="Workflows" parent="next_id_4"/>
<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>
</openerp>

File diff suppressed because it is too large Load Diff

View File

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

View File

@ -14,13 +14,13 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:32+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:35+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
msgid "Saint Helena"
msgstr ""
msgstr "St. Helena"
#. module: base
#: view:ir.actions.report.xml:0
@ -35,7 +35,7 @@ msgstr "DagTyd"
#. module: base
#: model:ir.module.module,shortdesc:base.module_project_mailgate
msgid "Tasks-Mail Integration"
msgstr ""
msgstr "Take - Vonkpos Integrasie"
#. module: base
#: code:addons/fields.py:582
@ -44,6 +44,8 @@ msgid ""
"The second argument of the many2many field %s must be a SQL table !You used "
"%s, which is not a valid SQL table name."
msgstr ""
"Die tweede argument van die baie2baie veld %s moet 'n SQL-tabel wees! U "
"gebruik %s, wat nie 'n geldige SQL tabel naam is nie."
#. module: base
#: field:ir.ui.view,arch:0
@ -70,11 +72,26 @@ msgid ""
" * Graph of My Remaining Hours by Project\n"
" "
msgstr ""
"\n"
"Projek bestuur module volg multi-vlak projekte, take, werk wat gedoen is aan "
"take, esm.\n"
"================================================== "
"====================================\n"
"\n"
"Dit is in staat om beplanning te lewer, take te sorteer, . eso\n"
"\n"
"Bedieningspaneel vir die projek lede wat insluit:\n"
"--------------------------------------------\n"
"* Lys van my oop take\n"
"* Lys van my gedelegeerde take\n"
"* Grafiek van my projekte: Beplande vs Totale ure\n"
"* Grafiek van my Oorblywende ure per Projek\n"
" "
#. module: base
#: field:base.language.import,code:0
msgid "Code (eg:en__US)"
msgstr ""
msgstr "Kode (bv.: en__US)"
#. module: base
#: view:workflow:0
@ -84,7 +101,7 @@ msgstr ""
#: field:workflow.transition,wkf_id:0
#: field:workflow.workitem,wkf_id:0
msgid "Workflow"
msgstr ""
msgstr "Werksvloei"
#. module: base
#: selection:ir.sequence,implementation:0
@ -94,12 +111,12 @@ msgstr ""
#. module: base
#: selection:base.language.install,lang:0
msgid "Hungarian / Magyar"
msgstr ""
msgstr "Hongaars / Magyar"
#. module: base
#: selection:base.language.install,lang:0
msgid "Spanish (PY) / Español (PY)"
msgstr ""
msgstr "Spaans (PY) / Español (PY)"
#. module: base
#: model:ir.module.category,description:base.module_category_project_management
@ -107,11 +124,13 @@ msgid ""
"Helps you manage your projects and tasks by tracking them, generating "
"plannings, etc..."
msgstr ""
"Help om jou projekte en take te bestuur deur dit na te volg, planne te maak, "
"ens .."
#. module: base
#: field:ir.actions.act_window,display_menu_tip:0
msgid "Display Menu Tips"
msgstr ""
msgstr "Vertoon Kieslys Wenke"
#. module: base
#: help:ir.cron,model:0

View File

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

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2012-03-19 10:06+0000\n"
"Last-Translator: Abdulwhhab A. Al-Shehri <Unknown>\n"
"PO-Revision-Date: 2012-08-20 15:46+0000\n"
"Last-Translator: OpenERP Administrators <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:33+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:35+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@ -34,7 +34,7 @@ msgstr "الوقت و التاريخ"
#. module: base
#: model:ir.module.module,shortdesc:base.module_project_mailgate
msgid "Tasks-Mail Integration"
msgstr ""
msgstr "دمج المهام عن طريق الإيميل"
#. module: base
#: code:addons/fields.py:582
@ -184,7 +184,7 @@ msgstr "عمليّة"
#. module: base
#: model:ir.module.module,shortdesc:base.module_analytic_journal_billing_rate
msgid "Billing Rates on Contracts"
msgstr ""
msgstr "عدل الفواتير علي العقود"
#. module: base
#: code:addons/base/res/res_users.py:558
@ -217,7 +217,7 @@ msgstr "ir.ui.view.custom"
#: code:addons/base/ir/ir_model.py:313
#, python-format
msgid "Renaming sparse field \"%s\" is not allowed"
msgstr ""
msgstr "إعادة تسمية الحقل \"%s\" غير مسموحة"
#. module: base
#: model:res.country,name:base.sz
@ -465,7 +465,7 @@ msgstr "أحد السجلات التي تحاول تعديلها قد تمّ ح
#. module: base
#: model:ir.module.module,shortdesc:base.module_pad_project
msgid "Specifications on PADs"
msgstr ""
msgstr "مواصفات الباد (PADs)"
#. module: base
#: help:ir.filters,user_id:0
@ -4155,7 +4155,9 @@ msgstr ""
msgid ""
"Your OpenERP Publisher's Warranty Contract unique key, also called serial "
"number."
msgstr "شفرة ضمان الناشر لأوبنيرب."
msgstr ""
"رمز اتفاقية ضمان الناشر الخاص بك لنظام أوبن إي آر بي، يدعى أيضاً الرقم "
"التسلسلي."
#. module: base
#: model:ir.module.module,description:base.module_base_setup

View File

@ -467,7 +467,7 @@ msgstr ""
#. module: base
#: field:res.bank,email:0
#: field:res.partner.address,email:0
msgid "E-Mail"
msgid "Email
msgstr ""
#. module: base
@ -544,16 +544,16 @@ msgid "\n"
"==========================================================================\n"
"\n"
"You can define your multiple levels of recall through the menu:\n"
" Accounting/Configuration/Miscellaneous/Follow-Ups\n"
" Accounting/Configuration/Miscellaneous/Follow-ups\n"
"\n"
"Once it is defined, you can automatically print recalls every day through simply clicking on the menu:\n"
" Accounting/Periodical Processing/Billing/Send followups\n"
" Accounting/Periodical Processing/Billing/Send follow-ups\n"
"\n"
"It will generate a PDF with all the letters according to the the\n"
"different levels of recall defined. You can define different policies\n"
"for different companies. You can also send mail to the customer.\n"
"\n"
"Note that if you want to check the followup level for a given partner/account entry, you can do from in the menu:\n"
"Note that if you want to check the follow-up level for a given partner/account entry, you can do from in the menu:\n"
" Accounting/Reporting/Generic Reporting/Partners/Follow-ups Sent\n"
"\n"
""
@ -727,7 +727,7 @@ msgstr ""
#: help:ir.actions.todo,type:0
msgid "Manual: Launched manually.\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 ""
#. module: base
@ -1317,11 +1317,6 @@ msgstr ""
msgid "Create _Menu"
msgstr ""
#. module: base
#: field:res.payterm,name:0
msgid "Payment Term (short name)"
msgstr ""
#. module: base
#: model:ir.model,name:base.model_res_bank
#: view:res.bank:0
@ -2155,7 +2150,7 @@ msgstr ""
#. module: base
#: selection:base.language.install,lang:0
msgid "Portugese (BR) / Português (BR)"
msgid "Portuguese (BR) / Português (BR)"
msgstr ""
#. module: base
@ -3002,7 +2997,7 @@ msgstr ""
#. module: base
#: selection:base.language.install,lang:0
msgid "Portugese / Português"
msgid "Portuguese / Português"
msgstr ""
#. module: base
@ -3206,11 +3201,6 @@ msgstr ""
msgid "Error ! You cannot create recursive associated members."
msgstr ""
#. module: base
#: view:res.payterm:0
msgid "Payment Term"
msgstr ""
#. module: base
#: selection:res.lang,direction:0
msgid "Right-to-Left"
@ -3383,7 +3373,7 @@ msgstr ""
#. module: base
#: field:res.partner,vat:0
msgid "VAT"
msgid "TIN"
msgstr ""
#. module: base
@ -3430,7 +3420,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_sir
msgid "M."
msgid "Sir"
msgstr ""
#. module: base
@ -5037,7 +5027,7 @@ msgstr ""
#. module: base
#: help:res.country.state,code:0
msgid "The state code in three chars.\n"
msgid "The state code in max. three chars."
""
msgstr ""
@ -7592,7 +7582,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_email_template
msgid "E-Mail Templates"
msgid "Email Templates
msgstr ""
#. module: base
@ -9064,7 +9054,7 @@ msgstr ""
#. module: base
#: code:addons/base/res/res_company.py:157
#, python-format
msgid "VAT: "
msgid "TIN: "
msgstr ""
#. module: base
@ -9455,7 +9445,7 @@ msgstr ""
#. module: base
#: field:res.partner,email:0
msgid "E-mail"
msgid "Email
msgstr ""
#. module: base
@ -10134,7 +10124,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_miss
msgid "Mss"
msgid "Miss"
msgstr ""
#. module: base
@ -10249,7 +10239,7 @@ msgstr ""
#. module: base
#: model:res.partner.title,shortcut:base.res_partner_title_madam
msgid "Ms."
msgid "Mrs."
msgstr ""
#. module: base
@ -11306,6 +11296,35 @@ msgstr ""
msgid "Madam"
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
#: model:res.country,name:base.ee
msgid "Estonia"
@ -12688,7 +12707,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_account_followup
msgid "Followup Management"
msgid "Follow-up Management"
msgstr ""
#. module: base

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2012-01-31 16:44+0000\n"
"PO-Revision-Date: 2012-08-20 15:49+0000\n"
"Last-Translator: Boris <boris.t.ivanov@gmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:33+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:36+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh

View File

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

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2012-01-31 16:24+0000\n"
"PO-Revision-Date: 2012-08-20 15:44+0000\n"
"Last-Translator: Antony Lesuisse (OpenERP) <al@openerp.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:33+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:36+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: openobject-server\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2012-04-05 13:24+0000\n"
"PO-Revision-Date: 2012-08-20 15:44+0000\n"
"Last-Translator: Jiří Hajda <robie@centrum.cz>\n"
"Language-Team: openerp-i18n-czech <openerp-i18n-czech@lists.launchpad.net>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:33+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:36+0000\n"
"X-Generator: Launchpad (build 15985)\n"
"X-Poedit-Language: Czech\n"
#. module: base

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2011-09-24 16:40+0000\n"
"Last-Translator: John Mertens Pallesen <Unknown>\n"
"PO-Revision-Date: 2012-08-20 15:44+0000\n"
"Last-Translator: OpenERP Administrators <Unknown>\n"
"Language-Team: Danish <da@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:34+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:36+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh

File diff suppressed because it is too large Load Diff

View File

@ -6,14 +6,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2012-01-31 16:03+0000\n"
"PO-Revision-Date: 2012-08-20 15:34+0000\n"
"Last-Translator: Dimitris Andavoglou <dimitrisand@gmail.com>\n"
"Language-Team: nls@hellug.gr <nls@hellug.gr>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:35+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:37+0000\n"
"X-Generator: Launchpad (build 15985)\n"
"X-Poedit-Country: GREECE\n"
"X-Poedit-Language: Greek\n"
"X-Poedit-SourceCharset: utf-8\n"

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-server\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2012-02-24 16:14+0000\n"
"Last-Translator: John Bradshaw <Unknown>\n"
"PO-Revision-Date: 2012-08-20 15:47+0000\n"
"Last-Translator: OpenERP Administrators <Unknown>\n"
"Language-Team: English (United Kingdom) <en_GB@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:40+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@ -35,7 +35,7 @@ msgstr "DateTime"
#. module: base
#: model:ir.module.module,shortdesc:base.module_project_mailgate
msgid "Tasks-Mail Integration"
msgstr ""
msgstr "Tasks-Mail Integration"
#. module: base
#: code:addons/fields.py:582
@ -72,6 +72,21 @@ msgid ""
" * Graph of My Remaining Hours by Project\n"
" "
msgstr ""
"\n"
"The Project management module tracks multi-level projects, tasks, work done "
"on tasks, etc.\n"
"============================================================================="
"=========\n"
"\n"
"It is able to render plans, order tasks, etc.\n"
"\n"
"Dashboard for project members that includes:\n"
"--------------------------------------------\n"
" * List of my open tasks\n"
" * List of my delegated tasks\n"
" * Graph of My Projects: Planned vs Total Hours\n"
" * Graph of My Remaining Hours by Project\n"
" "
#. module: base
#: field:base.language.import,code:0
@ -1817,6 +1832,22 @@ msgid ""
"\n"
" "
msgstr ""
"\n"
"This module adds generic sharing tools to your current OpenERP database.\n"
"========================================================================\n"
"\n"
"It specifically adds a 'share' button that is available in the Web client "
"to\n"
"share any kind of OpenERP data with colleagues, customers, friends, etc.\n"
"\n"
"The system will work by creating new users and groups on the fly, and by\n"
"combining the appropriate access rights and ir.rules to ensure that the\n"
"shared users only have access to the data that has been shared with them.\n"
"\n"
"This is extremely useful for collaborative work, knowledge sharing,\n"
"synchronisation with other companies, etc.\n"
"\n"
" "
#. module: base
#: field:res.currency,accuracy:0
@ -1946,6 +1977,8 @@ msgid ""
"simplified payment mode encoding, automatic picking lists generation and "
"more."
msgstr ""
"Get the most out of your points of sales with fast sale encoding, simplified "
"payment mode encoding, automatic picking lists generation and more."
#. module: base
#: model:res.country,name:base.mv
@ -1992,7 +2025,7 @@ msgstr "Days"
#. module: base
#: model:ir.module.module,shortdesc:base.module_web_rpc
msgid "OpenERP Web web"
msgstr ""
msgstr "OpenERP Web web"
#. module: base
#: model:ir.module.module,shortdesc:base.module_html_view
@ -3277,12 +3310,26 @@ msgid ""
"since it's the same which has been renamed.\n"
" "
msgstr ""
"\n"
"This module lets users perform segmentation within partners.\n"
"=================================================================\n"
"\n"
"It improves the profiles criteria from the earlier segmentation module. "
"Thanks to the new concept of questionnaire. You can now regroup questions "
"into a questionnaire and directly use it on a partner.\n"
"\n"
"It also has been merged with the earlier CRM & SRM segmentation tool because "
"they were overlapping.\n"
"\n"
" * Note: this module is not compatible with the module segmentation, "
"since it's the same which has been renamed.\n"
" "
#. module: base
#: code:addons/report_sxw.py:434
#, python-format
msgid "Unknown report type: %s"
msgstr ""
msgstr "Unknown report type: %s"
#. module: base
#: code:addons/base/ir/ir_model.py:282
@ -3397,11 +3444,34 @@ msgid ""
"\n"
" "
msgstr ""
"\n"
" \n"
"Belgian localisation for in- and outgoing invoices (prereq to "
"account_coda):\n"
" - Rename 'reference' field labels to 'Communication'\n"
" - Add support for Belgian Structured Communication\n"
"\n"
"A Structured Communication can be generated automatically on outgoing "
"invoices according to the following algorithms:\n"
" 1) Random : +++RRR/RRRR/RRRDD+++\n"
" R..R = Random Digits, DD = Check Digits\n"
" 2) Date : +++DOY/YEAR/SSSDD+++\n"
" DOY = Day of the Year, SSS = Sequence Number, DD = Check Digits)\n"
" 3) Customer Reference +++RRR/RRRR/SSSDDD+++\n"
" R..R = Customer Reference without non-numeric characters, SSS = "
"Sequence Number, DD = Check Digits) \n"
" \n"
"The preferred type of Structured Communication and associated Algorithm can "
"be specified on the Partner records. \n"
"A 'random' Structured Communication will generated if no algorithm is "
"specified on the Partner record. \n"
"\n"
" "
#. module: base
#: model:ir.module.module,shortdesc:base.module_wiki_quality_manual
msgid "Wiki: Quality Manual"
msgstr ""
msgstr "Wiki: Quality Manual"
#. module: base
#: selection:ir.actions.act_window.view,view_mode:0
@ -3429,7 +3499,7 @@ msgstr "HR sector"
#. module: base
#: model:ir.ui.menu,name:base.menu_dashboard_admin
msgid "Administration Dashboard"
msgstr ""
msgstr "Administration Dashboard"
#. module: base
#: code:addons/orm.py:4408
@ -3489,7 +3559,7 @@ msgstr ""
#. module: base
#: model:res.groups,name:base.group_survey_user
msgid "Survey / User"
msgstr ""
msgstr "Survey / User"
#. module: base
#: view:ir.module.module:0
@ -3510,17 +3580,17 @@ msgstr "Web Icon File (hover)"
#. module: base
#: model:ir.module.module,description:base.module_web_diagram
msgid "Openerp web Diagram view"
msgstr ""
msgstr "Openerp web Diagram view"
#. module: base
#: model:res.groups,name:base.group_hr_user
msgid "HR Officer"
msgstr ""
msgstr "HR Officer"
#. module: base
#: model:ir.module.module,shortdesc:base.module_hr_contract
msgid "Employee Contracts"
msgstr ""
msgstr "Employee Contracts"
#. module: base
#: model:ir.module.module,description:base.module_wiki_faq
@ -3533,6 +3603,13 @@ msgid ""
"for Wiki FAQ.\n"
" "
msgstr ""
"\n"
"This module provides a Wiki FAQ Template.\n"
"=========================================\n"
"\n"
"It provides demo data, thereby creating a Wiki Group and a Wiki Page\n"
"for Wiki FAQ.\n"
" "
#. module: base
#: view:ir.actions.server:0
@ -3573,18 +3650,18 @@ msgstr "Contact Titles"
#. module: base
#: model:ir.module.module,shortdesc:base.module_product_manufacturer
msgid "Products Manufacturers"
msgstr ""
msgstr "Products Manufacturers"
#. module: base
#: code:addons/base/ir/ir_mail_server.py:217
#, python-format
msgid "SMTP-over-SSL mode unavailable"
msgstr ""
msgstr "SMTP-over-SSL mode unavailable"
#. module: base
#: model:ir.module.module,shortdesc:base.module_survey
msgid "Survey"
msgstr ""
msgstr "Survey"
#. module: base
#: view:base.language.import:0
@ -3632,7 +3709,7 @@ msgstr "Uruguay"
#. module: base
#: model:ir.module.module,shortdesc:base.module_fetchmail_crm
msgid "eMail Gateway for Leads"
msgstr ""
msgstr "email Gateway for Leads"
#. module: base
#: selection:base.language.install,lang:0
@ -3662,7 +3739,7 @@ msgstr "Fields Mapping"
#. module: base
#: model:ir.module.module,shortdesc:base.module_web_dashboard
msgid "web Dashboard"
msgstr ""
msgstr "web Dashboard"
#. module: base
#: model:ir.module.module,description:base.module_sale
@ -3706,6 +3783,44 @@ msgid ""
" * Graph of Sales by Product's Category in last 90 days\n"
" "
msgstr ""
"\n"
"The base module to manage quotations and sales orders.\n"
"======================================================\n"
"\n"
"Workflow with validation steps:\n"
"-------------------------------\n"
" * Quotation -> Sales order -> Invoice\n"
"\n"
"Invoicing methods:\n"
"------------------\n"
" * Invoice on order (before or after shipping)\n"
" * Invoice on delivery\n"
" * Invoice on timesheets\n"
" * Advance invoice\n"
"\n"
"Partners preferences:\n"
"---------------------\n"
" * shipping\n"
" * invoicing\n"
" * incoterm\n"
"\n"
"Products stocks and prices\n"
"--------------------------\n"
"\n"
"Delivery methods:\n"
"-----------------\n"
" * all at once\n"
" * multi-parcel\n"
" * delivery costs\n"
"\n"
"Dashboard for Sales Manager that includes:\n"
"------------------------------------------\n"
" * Quotations\n"
" * Sales by Month\n"
" * Graph of Sales by Salesperson in last 90 days\n"
" * Graph of Sales per Customer in last 90 days\n"
" * Graph of Sales by Product's Category in last 90 days\n"
" "
#. module: base
#: selection:base.language.install,lang:0
@ -3729,6 +3844,14 @@ msgid ""
"Canadian accounting charts and localizations.\n"
" "
msgstr ""
"\n"
"This is the module to manage the English and French - Canadian accounting "
"chart in OpenERP.\n"
"============================================================================="
"==============\n"
"\n"
"Canadian accounting charts and localisations.\n"
" "
#. module: base
#: view:base.module.import:0
@ -3761,6 +3884,13 @@ msgid ""
" * the Tax Code Chart for Luxembourg\n"
" * the main taxes used in Luxembourg"
msgstr ""
"\n"
"This is the base module to manage the accounting chart for Luxembourg.\n"
"======================================================================\n"
"\n"
" * the KLUWER Chart of Accounts,\n"
" * the Tax Code Chart for Luxembourg\n"
" * the main taxes used in Luxembourg"
#. module: base
#: field:ir.module.module,demo:0
@ -3785,6 +3915,19 @@ msgid ""
"module 'share'.\n"
" "
msgstr ""
"\n"
"This module defines 'portals' to customise access to your OpenERP database\n"
"for external users.\n"
"\n"
"A portal defines customised user menu and access rights for a group of "
"users\n"
"(the ones associated to that portal). It also associates user groups to "
"the\n"
"portal users (adding a group in the portal automatically adds it to the "
"portal\n"
"users, etc). That feature is very handy when used in combination with the\n"
"module 'share'.\n"
" "
#. module: base
#: selection:res.request,priority:0
@ -3812,7 +3955,7 @@ msgstr "Instances"
#. module: base
#: help:ir.mail_server,smtp_host:0
msgid "Hostname or IP of SMTP server"
msgstr ""
msgstr "Hostname or IP of SMTP server"
#. module: base
#: selection:base.language.install,lang:0
@ -3842,12 +3985,12 @@ msgstr "Separator Format"
#. module: base
#: constraint:res.partner.bank:0
msgid "The RIB and/or IBAN is not valid"
msgstr ""
msgstr "The RIB and/or IBAN is not valid"
#. module: base
#: model:ir.module.module,shortdesc:base.module_report_webkit
msgid "Webkit Report Engine"
msgstr ""
msgstr "Webkit Report Engine"
#. module: base
#: selection:publisher_warranty.contract,state:0
@ -3874,13 +4017,13 @@ msgstr "Mayotte"
#. module: base
#: model:ir.module.module,shortdesc:base.module_crm_todo
msgid "Tasks on CRM"
msgstr ""
msgstr "Tasks on CRM"
#. module: base
#: model:ir.module.category,name:base.module_category_generic_modules_accounting
#: view:res.company:0
msgid "Accounting"
msgstr ""
msgstr "Accounting"
#. module: base
#: model:ir.module.module,description:base.module_account_payment
@ -3895,11 +4038,20 @@ msgid ""
"* a basic mechanism to easily plug various automated payment.\n"
" "
msgstr ""
"\n"
"Module to manage invoice payment.\n"
"=================================\n"
"\n"
"This module provides :\n"
"----------------------\n"
"* A more efficient way to manage invoice payment.\n"
"* A basic mechanism to easily plug various automated payment.\n"
" "
#. module: base
#: view:ir.rule:0
msgid "Interaction between rules"
msgstr ""
msgstr "Interaction between rules"
#. module: base
#: model:ir.module.module,description:base.module_account_invoice_layout
@ -3921,11 +4073,27 @@ msgid ""
"\n"
" "
msgstr ""
"\n"
"This module provides some features to improve the layout of the invoices.\n"
"=========================================================================\n"
"\n"
"It gives you the possibility to:\n"
"--------------------------------\n"
" * Order all the lines of an invoice\n"
" * Add titles, comment lines, sub total lines\n"
" * Draw horizontal lines and put page breaks\n"
"\n"
"Moreover, there is one option which allows you to print all the selected "
"invoices with a given special message at the bottom. This feature can be "
"very useful for printing your invoices with end-of-year wishes, special "
"punctual conditions.\n"
"\n"
" "
#. module: base
#: constraint:res.partner:0
msgid "Error ! You cannot create recursive associated members."
msgstr ""
msgstr "Error ! You cannot create recursive associated members."
#. module: base
#: view:res.payterm:0
@ -3958,6 +4126,9 @@ msgid ""
"or data in your OpenERP instance. To install some modules, click on the "
"button \"Install\" from the form view and then click on \"Start Upgrade\"."
msgstr ""
"You can install new modules to activate new features, menu, reports or data "
"in your OpenERP instance. To install modules, click on the button "
"\"Install\" from the form view and then click on \"Start Upgrade\"."
#. module: base
#: model:ir.actions.act_window,name:base.ir_cron_act
@ -3973,6 +4144,9 @@ msgid ""
" OpenERP Web chat module.\n"
" "
msgstr ""
"\n"
" OpenERP Web chat module.\n"
" "
#. module: base
#: field:res.partner.address,title:0
@ -3995,12 +4169,12 @@ msgstr "Recursivity detected."
#. module: base
#: model:ir.module.module,shortdesc:base.module_report_webkit_sample
msgid "Webkit Report Samples"
msgstr ""
msgstr "Webkit Report Samples"
#. module: base
#: model:ir.module.module,shortdesc:base.module_point_of_sale
msgid "Point Of Sale"
msgstr ""
msgstr "Point Of Sale"
#. module: base
#: code:addons/base/module/module.py:302
@ -4036,7 +4210,7 @@ msgstr ""
#. module: base
#: selection:ir.sequence,implementation:0
msgid "Standard"
msgstr ""
msgstr "Standard"
#. module: base
#: model:ir.model,name:base.model_maintenance_contract
@ -4065,11 +4239,13 @@ msgid ""
"Invalid value for reference field \"%s.%s\" (last part must be a non-zero "
"integer): \"%s\""
msgstr ""
"Invalid value for reference field \"%s.%s\" (last part must be a non-zero "
"integer): \"%s\""
#. module: base
#: model:ir.module.category,name:base.module_category_human_resources
msgid "Human Resources"
msgstr ""
msgstr "Human Resources"
#. module: base
#: model:ir.actions.act_window,name:base.action_country
@ -4085,7 +4261,7 @@ msgstr "RML (deprecated - use Report)"
#. module: base
#: sql_constraint:ir.translation:0
msgid "Language code of translation item must be among known languages"
msgstr ""
msgstr "Language code of translation item must be among known languages"
#. module: base
#: view:ir.rule:0
@ -4109,6 +4285,14 @@ msgid ""
"templates to target objects.\n"
" "
msgstr ""
"\n"
" * Multi language support for Chart of Accounts, Taxes, Tax Codes , "
"Journals, Accounting Templates,\n"
" Analytic Chart of Accounts and Analytic Journals.\n"
" * Setup wizard changes\n"
" - Copy translations for COA, Tax, Tax Code and Fiscal Position from "
"templates to target objects.\n"
" "
#. module: base
#: view:ir.actions.todo:0
@ -4129,7 +4313,7 @@ msgstr "VAT"
#. module: base
#: field:res.users,new_password:0
msgid "Set password"
msgstr ""
msgstr "Set password"
#. module: base
#: view:res.lang:0
@ -4223,6 +4407,8 @@ msgid ""
"la moneda Lempira. -- Adds accounting chart for Honduras. It also includes "
"taxes and the Lempira currency"
msgstr ""
"Adds accounting chart for Honduras. It also includes taxes and the Lempira "
"currency"
#. module: base
#: selection:ir.actions.act_window,view_type:0
@ -4243,6 +4429,10 @@ msgid ""
"Italian accounting chart and localization.\n"
" "
msgstr ""
"\n"
"Italian accounting chart and localization.\n"
"================================================\n"
" "
#. module: base
#: model:res.country,name:base.me
@ -4252,12 +4442,12 @@ msgstr "Montenegro"
#. module: base
#: model:ir.module.module,shortdesc:base.module_document_ics
msgid "iCal Support"
msgstr ""
msgstr "iCal Support"
#. module: base
#: model:ir.module.module,shortdesc:base.module_fetchmail
msgid "Email Gateway"
msgstr ""
msgstr "Email Gateway"
#. module: base
#: code:addons/base/ir/ir_mail_server.py:439
@ -4266,6 +4456,8 @@ msgid ""
"Mail delivery failed via SMTP server '%s'.\n"
"%s: %s"
msgstr ""
"Mail delivery failed via SMTP server '%s'.\n"
"%s: %s"
#. module: base
#: view:ir.cron:0
@ -4308,6 +4500,16 @@ msgid ""
"user rights to Demo user.\n"
" "
msgstr ""
"\n"
"Accounting Access Rights.\n"
"=========================\n"
"\n"
"This module gives the admin user access to all the accounting features\n"
"such as journal items and the chart of accounts.\n"
"\n"
"It assigns manager and user access rights to the Administrator, and only\n"
"user rights to Demo user.\n"
" "
#. module: base
#: selection:ir.module.module,state:0
@ -4333,12 +4535,12 @@ msgstr "Liechtenstein"
#. module: base
#: model:ir.module.module,description:base.module_web_rpc
msgid "Openerp web web"
msgstr ""
msgstr "Openerp web web"
#. module: base
#: model:ir.module.module,shortdesc:base.module_project_issue_sheet
msgid "Timesheet on Issues"
msgstr ""
msgstr "Timesheet on Issues"
#. module: base
#: model:res.partner.title,name:base.res_partner_title_ltd
@ -4359,6 +4561,16 @@ msgid ""
" * Cheque Register\n"
" "
msgstr ""
"\n"
"Account Voucher module includes all the basic requirements of Voucher "
"Entries for Bank, Cash, Sales, Purchase, Expanse, Contra, etc.\n"
"============================================================================="
"=======================================================\n"
"\n"
" * Voucher Entry\n"
" * Voucher Receipt\n"
" * Cheque Register\n"
" "
#. module: base
#: field:res.partner,ean13:0
@ -4379,7 +4591,7 @@ msgstr "Portugal"
#. module: base
#: model:ir.module.module,shortdesc:base.module_share
msgid "Share any Document"
msgstr ""
msgstr "Share any Document"
#. module: base
#: field:ir.module.module,certificate:0
@ -4425,11 +4637,41 @@ msgid ""
"\n"
"\n"
msgstr ""
"\n"
"This improves OpenERP multi-currency handling in analytic accountiong, "
"overall for multi-company.\n"
"\n"
"This module is based on the work made in all c2c_multicost* available on the "
"v5.0 stable version and\n"
"allow you to share analytic account between company (even if currency "
"differs in each one).\n"
"\n"
"What has been done here:\n"
"\n"
" * Adapt the owner of analytic line (= to company that own the general "
"account associated with en analytic line)\n"
" * Add multi-currency on analytic lines (similar to financial accounting)\n"
" * Correct all \"costs\" indicators into analytic account to base them on "
"the right currency (owner's company)\n"
" * By default, nothing change for single company implementation.\n"
"\n"
"As a result, we can now really share the same analytic account between "
"companies that don't have the same \n"
"currency. This setup becomes True, Enjoy !\n"
"\n"
"- Company A : EUR\n"
"- Company B : CHF\n"
"\n"
"- Analytic Account A : USD, owned by Company A\n"
" - Analytic Account B : CHF, owned by Company A\n"
" - Analytic Account C : EUR, owned by Company B\n"
"\n"
"\n"
#. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_it
msgid "Italy - Accounting"
msgstr ""
msgstr "Italy - Accounting"
#. module: base
#: field:ir.actions.act_window,help:0
@ -4448,6 +4690,9 @@ msgid ""
"its dependencies are satisfied. If the module has no dependency, it is "
"always installed."
msgstr ""
"An auto-installable module is automatically installed by the system when all "
"its dependencies are satisfied. If the module has no dependency, it is "
"always installed."
#. module: base
#: model:ir.actions.act_window,name:base.res_lang_act_window
@ -4470,6 +4715,16 @@ msgid ""
"automatically new claims based on incoming emails.\n"
" "
msgstr ""
"\n"
"This modules allows you to track your customers/suppliers claims and "
"grievances.\n"
"============================================================================="
"===\n"
"\n"
"It is fully integrated with the email gateway so you can automatically "
"create\n"
"new claims based on incoming emails.\n"
" "
#. module: base
#: selection:workflow.activity,join_mode:0
@ -4480,7 +4735,7 @@ msgstr "Xor"
#. module: base
#: model:ir.module.category,name:base.module_category_localization_account_charts
msgid "Account Charts"
msgstr ""
msgstr "Account Charts"
#. module: base
#: view:res.request:0
@ -4551,6 +4806,22 @@ msgid ""
"anonymization process to recover your previous data.\n"
" "
msgstr ""
"\n"
"This module allows you to anonymise a database.\n"
"===============================================\n"
"\n"
"This module lets you keep your data confidential for a given database.\n"
"This process is useful if you want to use the migration process and protect\n"
"your own or your customers confidential data. The principle is that you "
"run\n"
"an anonymisation tool which will hide your confidential data (they are "
"replaced\n"
"by XXX characters). Then you can send the anonymized database to the "
"migration\n"
"team. Once you get back your migrated database, you restore it and reverse "
"the\n"
"anonymisation process to recover your previous data.\n"
" "
#. module: base
#: help:publisher_warranty.contract,name:0
@ -4559,6 +4830,8 @@ msgid ""
"Your OpenERP Publisher's Warranty Contract unique key, also called serial "
"number."
msgstr ""
"Your OpenERP Publisher's Warranty Contract unique key, also called serial "
"number."
#. module: base
#: model:ir.module.module,description:base.module_base_setup
@ -4573,6 +4846,15 @@ msgid ""
"\n"
" "
msgstr ""
"\n"
"This module helps configure the system at the installation of a new "
"database.\n"
"============================================================================="
"===\n"
"\n"
"Shows you a list of applications features to install from.\n"
"\n"
" "
#. module: base
#: field:ir.actions.report.xml,report_sxw_content:0
@ -4583,7 +4865,7 @@ msgstr "SXW content"
#. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_pl
msgid "Poland - Accounting"
msgstr ""
msgstr "Poland - Accounting"
#. module: base
#: view:ir.cron:0
@ -4613,6 +4895,20 @@ msgid ""
"\n"
" "
msgstr ""
"\n"
"Purchase module is for generating a purchase order for purchase of goods "
"from a supplier.\n"
"============================================================================="
"============\n"
"\n"
"A supplier invoice is created for the particular purchase order.\n"
"\n"
"Dashboard for purchase management that includes:\n"
" * Current Purchase Orders\n"
" * Draft Purchase Orders\n"
" * Graph for quantity and amount per month\n"
"\n"
" "
#. module: base
#: view:ir.model.fields:0
@ -4634,7 +4930,7 @@ msgstr "Summary"
#. module: base
#: model:ir.module.category,name:base.module_category_hidden_dependency
msgid "Dependency"
msgstr ""
msgstr "Dependency"
#. module: base
#: field:multi_company.default,expression:0
@ -4657,6 +4953,8 @@ msgid ""
"When no specific mail server is requested for a mail, the highest priority "
"one is used. Default priority is 10 (smaller number = higher priority)"
msgstr ""
"When no specific mail server is requested for a mail, the highest priority "
"one is used. Default priority is 10 (smaller number = higher priority)"
#. module: base
#: model:ir.module.module,description:base.module_crm_partner_assign
@ -4675,6 +4973,19 @@ msgid ""
"You can also use the geolocalization without using the GPS coordinates.\n"
" "
msgstr ""
"\n"
"This is the module used by OpenERP SA to redirect customers to its partners, "
"based on geolocalisation.\n"
"============================================================================="
"=========================\n"
"\n"
"You can geolocalise your opportunities using this module.\n"
"\n"
"Use geolocalisation when assigning opportunities to partners.\n"
"Determine the GPS coordinates according to the address of the partner.\n"
"The most appropriate partner can be assigned.\n"
"You can also use the geolocalisation without GPS coordinates.\n"
" "
#. module: base
#: help:ir.actions.act_window,help:0
@ -4708,12 +5019,12 @@ msgstr "Trigger Object"
#. module: base
#: sql_constraint:ir.sequence.type:0
msgid "`code` must be unique."
msgstr ""
msgstr "`code` must be unique."
#. module: base
#: model:ir.module.module,shortdesc:base.module_hr_expense
msgid "Expenses Management"
msgstr ""
msgstr "Expenses Management"
#. module: base
#: view:workflow.activity:0
@ -4724,7 +5035,7 @@ msgstr "Incoming Transitions"
#. module: base
#: field:ir.values,value_unpickle:0
msgid "Default value or action reference"
msgstr ""
msgstr "Default value or action reference"
#. module: base
#: model:res.country,name:base.sr
@ -4734,7 +5045,7 @@ msgstr "Suriname"
#. module: base
#: model:ir.module.module,shortdesc:base.module_project_timesheet
msgid "Bill Time on Tasks"
msgstr ""
msgstr "Bill Time on Tasks"
#. module: base
#: model:ir.module.category,name:base.module_category_marketing
@ -4751,7 +5062,7 @@ msgstr "Bank account"
#. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_gr
msgid "Greece - Accounting"
msgstr ""
msgstr "Greece - Accounting"
#. module: base
#: selection:base.language.install,lang:0

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2012-03-12 08:10+0000\n"
"Last-Translator: German Figueredo <Unknown>\n"
"PO-Revision-Date: 2012-08-20 15:29+0000\n"
"Last-Translator: OpenERP Administrators <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:38+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:41+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@ -29,7 +29,7 @@ msgstr "Otra configuración"
#. module: base
#: selection:ir.property,type:0
msgid "DateTime"
msgstr "FechaHora"
msgstr "Fecha y hora"
#. module: base
#: model:ir.module.module,shortdesc:base.module_project_mailgate
@ -2098,7 +2098,7 @@ msgstr "Modelo archivo adjunto"
#. module: base
#: field:res.partner.bank,footer:0
msgid "Display on Reports"
msgstr ""
msgstr "Mostrar en Informes"
#. module: base
#: model:ir.module.module,description:base.module_l10n_cn
@ -2260,7 +2260,7 @@ msgstr "Finlandia"
#: code:addons/base/res/res_company.py:156
#, python-format
msgid "Website: "
msgstr ""
msgstr "Sitio web: "
#. module: base
#: model:ir.ui.menu,name:base.menu_administration
@ -2279,7 +2279,7 @@ msgstr "Árbol"
#. module: base
#: model:ir.module.module,shortdesc:base.module_analytic_multicurrency
msgid "Multi-Currency in Analytic"
msgstr ""
msgstr "Multi-Moneda en Analitica"
#. module: base
#: view:base.language.export:0
@ -2297,6 +2297,8 @@ msgid ""
"Display this bank account on the footer of printed documents like invoices "
"and sales orders."
msgstr ""
"Mostrar esta cuenta bancaria en el pie de página de los documentos impresos "
"como facturas y órdenes de venta."
#. module: base
#: view:base.language.import:0
@ -2400,12 +2402,12 @@ msgstr ""
#. module: base
#: field:ir.values,action_id:0
msgid "Action (change only)"
msgstr ""
msgstr "Acción (solo cambio)"
#. module: base
#: model:ir.module.module,shortdesc:base.module_subscription
msgid "Recurring Documents"
msgstr ""
msgstr "Documentos Recurrentes"
#. module: base
#: model:res.country,name:base.bs
@ -2444,7 +2446,7 @@ msgstr "Número de módulos actualizados"
#. module: base
#: field:ir.cron,function:0
msgid "Method"
msgstr ""
msgstr "Método"
#. module: base
#: view:res.partner.event:0
@ -2469,7 +2471,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_base_setup
msgid "Initial Setup Tools"
msgstr ""
msgstr "Herramientas de Configuración Inicial"
#. module: base
#: field:ir.actions.act_window,groups_id:0
@ -2531,7 +2533,7 @@ msgstr "Gestión de widgets de la página inicial"
#. module: base
#: field:res.company,rml_header1:0
msgid "Report Header / Company Slogan"
msgstr ""
msgstr "Encabezado del Informe / Lema de la Empresa"
#. module: base
#: model:res.country,name:base.pl
@ -2585,7 +2587,7 @@ msgstr ""
#. module: base
#: field:ir.mail_server,smtp_debug:0
msgid "Debugging"
msgstr ""
msgstr "Depurando"
#. module: base
#: model:ir.module.module,description:base.module_crm_helpdesk
@ -2696,12 +2698,12 @@ msgstr "Tasa"
#. module: base
#: model:ir.module.module,shortdesc:base.module_idea
msgid "Ideas"
msgstr ""
msgstr "Ideas"
#. module: base
#: model:ir.module.module,shortdesc:base.module_sale_crm
msgid "Opportunity to Quotation"
msgstr ""
msgstr "Oportunidad a Presupuesto"
#. module: base
#: model:ir.module.module,description:base.module_sale_analytic_plans
@ -2728,17 +2730,17 @@ msgstr ""
#. module: base
#: model:ir.actions.report.xml,name:base.report_ir_model_overview
msgid "Model Overview"
msgstr ""
msgstr "Información general del modelo"
#. module: base
#: model:ir.module.module,shortdesc:base.module_product_margin
msgid "Margins by Products"
msgstr ""
msgstr "Márgenes por Productos"
#. module: base
#: model:ir.ui.menu,name:base.menu_invoiced
msgid "Invoicing"
msgstr ""
msgstr "Facturar"
#. module: base
#: field:ir.ui.view_sc,name:0
@ -2773,13 +2775,13 @@ msgstr "Importar / Exportar"
#. module: base
#: model:ir.actions.todo.category,name:base.category_tools_customization_config
msgid "Tools / Customization"
msgstr ""
msgstr "Herramientas / Personalización"
#. module: base
#: field:ir.model.data,res_id:0
#: field:ir.values,res_id:0
msgid "Record ID"
msgstr ""
msgstr "ID de registro"
#. module: base
#: field:ir.actions.server,email:0
@ -2865,7 +2867,7 @@ msgstr ""
#: model:res.groups,name:base.group_sale_manager
#: model:res.groups,name:base.group_tool_manager
msgid "Manager"
msgstr ""
msgstr "Responsable"
#. module: base
#: model:ir.ui.menu,name:base.menu_custom
@ -2902,7 +2904,7 @@ msgstr "Eliminar ID's"
#. module: base
#: view:res.groups:0
msgid "Inherited"
msgstr ""
msgstr "Hededado"
#. module: base
#: field:ir.model.fields,serialization_field_id:0
@ -2915,6 +2917,8 @@ msgid ""
"Lets you install various tools to simplify and enhance OpenERP's report "
"creation."
msgstr ""
"Permite instalar varias herramientas para simplificar y mejorar la creación "
"de informes OpenERP."
#. module: base
#: view:res.lang:0
@ -2925,7 +2929,7 @@ msgstr "%y - Año sin el siglo [00,99]."
#: code:addons/base/res/res_company.py:155
#, python-format
msgid "Fax: "
msgstr ""
msgstr "Fax: "
#. module: base
#: model:res.country,name:base.si
@ -2935,7 +2939,7 @@ msgstr "Eslovenia"
#. module: base
#: help:res.currency,name:0
msgid "Currency Code (ISO 4217)"
msgstr ""
msgstr "Código de moneda (ISO 4217)"
#. module: base
#: model:ir.actions.act_window,name:base.res_log_act_window
@ -3135,7 +3139,7 @@ msgstr ""
#: code:addons/report_sxw.py:434
#, python-format
msgid "Unknown report type: %s"
msgstr ""
msgstr "Tipo de informe desconocido: %s"
#. module: base
#: code:addons/base/ir/ir_model.py:282

View File

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

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:40+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@ -1054,6 +1054,12 @@ msgid ""
"If Value type is selected, the value will be used directly without "
"evaluation."
msgstr ""
"Expresión que contiene una especificación de valor.\n"
"Cuando se selecciona el tipo fórmula, este campo puede ser una expresión "
"Python que puede utilizar los mismos valores para el campo de condición de "
"la acción del servidor.\n"
"Si se selecciona el tipo valor, el valor se puede utilizar directamente sin "
"evaluación."
#. module: base
#: model:res.country,name:base.ad
@ -3696,8 +3702,8 @@ msgid ""
"Value Added Tax number. Check the box if the partner is subjected to the "
"VAT. Used by the VAT legal statement."
msgstr ""
"Número CIF/NIF. Marque esta caja si la empresa está sujeta al IVA. Se "
"utiliza para la declaración legal del IVA."
"Marque esta casilla si la empresa está sujeta al IVA. Se utiliza para la "
"declaración legal del IVA."
#. module: base
#: selection:ir.sequence,implementation:0
@ -3790,12 +3796,12 @@ msgstr "Verificación EAN"
#. module: base
#: field:res.partner,vat:0
msgid "VAT"
msgstr "CIF/NIF"
msgstr "RUT"
#. module: base
#: field:res.users,new_password:0
msgid "Set password"
msgstr ""
msgstr "Establecer contraseña"
#. module: base
#: view:res.lang:0
@ -12419,6 +12425,12 @@ msgid ""
"queries regarding your account, please contact us.\n"
"Thank you in advance.\n"
msgstr ""
"Nuestros registros indican que los siguientes pagos se encuentran "
"pendientes. Si la cantidad\n"
"ya ha sido pagada, por favor ignore este aviso. Sin embargo, si usted tiene "
"alguna consulta\n"
"sobre su cuenta, póngase en contacto con nosotros.\n"
"De antemano gracias.\n"
#. module: base
#: model:ir.module.module,shortdesc:base.module_users_ldap
@ -13141,7 +13153,7 @@ msgstr ""
#. module: base
#: field:res.company,company_registry:0
msgid "Company Registry"
msgstr ""
msgstr "Registro empresa"
#. module: base
#: view:ir.actions.report.xml:0
@ -13468,7 +13480,7 @@ msgstr "Archivo CSV"
#: code:addons/base/res/res_company.py:154
#, python-format
msgid "Phone: "
msgstr ""
msgstr "Teléfono: "
#. module: base
#: field:res.company,account_no:0
@ -13507,7 +13519,7 @@ msgstr ""
#. module: base
#: field:res.company,vat:0
msgid "Tax ID"
msgstr ""
msgstr "RUT"
#. module: base
#: field:ir.model.fields,field_description:0
@ -14465,7 +14477,7 @@ msgstr "No puede suprimir el campo '%s' !"
#. module: base
#: view:res.users:0
msgid "Allowed Companies"
msgstr ""
msgstr "Compañias permitidas"
#. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_de

View File

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

View File

@ -13,8 +13,8 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:41+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:43+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: 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 "
"timesheets are respecting the planned time on each analytic account.\n"
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
#: selection:ir.property,type:0
@ -1496,6 +1513,26 @@ msgid ""
"database,\n"
" but in the servers rootpad like /server/bin/filestore.\n"
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
#: view:res.lang:0
@ -1564,6 +1601,15 @@ msgid ""
"Web.\n"
" "
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
#: model:ir.module.category,description:base.module_category_purchase_management
@ -1776,6 +1822,24 @@ msgid ""
"\n"
" "
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
#: field:res.currency,accuracy:0
@ -1856,6 +1920,49 @@ msgid ""
"\n"
" "
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
#: view:ir.sequence:0

File diff suppressed because it is too large Load Diff

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2012-01-31 16:32+0000\n"
"Last-Translator: Raphael Collet (OpenERP) <Unknown>\n"
"PO-Revision-Date: 2012-08-20 15:46+0000\n"
"Last-Translator: OpenERP Administrators <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:34+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:37+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh

View File

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

View File

@ -3,14 +3,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2012-01-31 16:23+0000\n"
"PO-Revision-Date: 2012-08-20 15:53+0000\n"
"Last-Translator: avion <nat@sethack.com>\n"
"Language-Team: OpenERP Iran <info@openerp-iran.com>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:37+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:39+0000\n"
"X-Generator: Launchpad (build 15985)\n"
"X-Poedit-Country: IRAN, ISLAMIC REPUBLIC OF\n"
"X-Poedit-Language: Persian\n"

View File

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

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2012-03-19 09:27+0000\n"
"Last-Translator: Juha Kotamäki <Unknown>\n"
"PO-Revision-Date: 2012-08-20 15:42+0000\n"
"Last-Translator: OpenERP Administrators <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:34+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:37+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2012-03-12 08:58+0000\n"
"Last-Translator: Numérigraphe <Unknown>\n"
"PO-Revision-Date: 2012-08-20 15:43+0000\n"
"Last-Translator: OpenERP Administrators <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:34+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:37+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@ -3637,7 +3637,7 @@ msgstr "Vue diagramme OpenERP web"
#. module: base
#: model:res.groups,name:base.group_hr_user
msgid "HR Officer"
msgstr "Responsable RH"
msgstr "Collaborateur RH"
#. module: base
#: model:ir.module.module,shortdesc:base.module_hr_contract
@ -6490,6 +6490,83 @@ msgid ""
"\n"
" "
msgstr ""
"\n"
" Module d'importation des états bancaires CODA.\n"
"\n"
" Les fichiers supportés sont les fichiers plats CODA en version v2 des "
"comptes bancaires Belges.\n"
" - CODA v1 supporté.\n"
" - CODA v2.2 supporté.\n"
" - Devises Étrangères supportées.\n"
" - Support pour tous les enregistrements de type (0, 1, 2, 3, 4, 8, 9).\n"
" - Parsing & logging pour tous les Types de Transactions et les Formats "
"Structurés de Communications.\n"
" - Imputation Automatique des Journaux Financiers via les paramètres de "
"configuration CODA.\n"
" - Support des Journaux multiples par numéro de compte bancaire.\n"
" - Support des états multiples de différents comptes bancaires sur un "
"fichier CODA unique.\n"
" - Support pour \"analyse seule\" ('parsing only') CODA des comptes "
"bancaires (définis comme type='info' dans les enregistrements de "
"configuration CODA du compte bancaire).\n"
" - Analyse CODA mulit-langues, données de configuration pour l'analyse "
"fournie en EN, NL, FR.\n"
"\n"
" Les fichiers CODA informatiquement lisibles sont analysés et enregistrés "
"en format texte dans des états bancaires CODA.\n"
" Also Bank Statements are generated containing a subset of the CODA "
"information (only those transaction lines\n"
" that are required for the creation of the Financial Accounting "
"records).\n"
" The CODA Bank Statement is a 'read-only' object, hence remaining a "
"reliable representation of the original CODA file\n"
" whereas the Bank Statement will get modified as required by accounting "
"business processes.\n"
"\n"
" CODA Bank Accounts configured as type 'Info' will only generate CODA "
"Bank Statements.\n"
"\n"
" A removal of one object in the CODA processing results in the removal of "
"the associated objects.\n"
" The removal of a CODA File containing multiple Bank Statements will also "
"remove those associated\n"
" statements.\n"
"\n"
" The following reconciliation logic has been implemented in the CODA "
"processing:\n"
" 1) The Company's Bank Account Number of the CODA statement is compared "
"against the Bank Account Number field\n"
" of the Company's CODA Bank Account configuration records (whereby "
"bank accounts defined in type='info' configuration records are ignored).\n"
" If this is the case an 'internal transfer' transaction is generated "
"using the 'Internal Transfer Account' field of the CODA File Import wizard.\n"
" 2) As a second step the 'Structured Communication' field of the CODA "
"transaction line is matched against\n"
" the reference field of in- and outgoing invoices (supported : Belgian "
"Structured Communication Type).\n"
" 3) When the previous step doesn't find a match, the transaction "
"counterparty is located via the\n"
" Bank Account Number configured on the OpenERP Customer and Supplier "
"records.\n"
" 4) In case the previous steps are not successful, the transaction is "
"generated by using the 'Default Account\n"
" for Unrecognized Movement' field of the CODA File Import wizard in "
"order to allow further manual processing.\n"
"\n"
" In stead of a manual adjustment of the generated Bank Statements, you "
"can also re-import the CODA\n"
" after updating the OpenERP database with the information that was "
"missing to allow automatic reconciliation.\n"
"\n"
" Remark on CODA V1 support:\n"
" In some cases a transaction code, transaction category or structured "
"communication code has been given a new or clearer description in CODA V2.\n"
" The description provided by the CODA configuration tables is based upon "
"the CODA V2.2 specifications.\n"
" If required, you can manually adjust the descriptions via the CODA "
"configuration menu.\n"
"\n"
" "
#. module: base
#: model:res.country,name:base.et
@ -7179,6 +7256,8 @@ msgid ""
"- Action: an action attached to one slot of the given model\n"
"- Default: a default value for a model field"
msgstr ""
"- Action : une action attachée à une instance du modèle donné\n"
"- Défaut : une valeur par défaut pour le champ modèle"
#. module: base
#: model:ir.actions.act_window,name:base.action_partner_addess_tree
@ -7287,6 +7366,9 @@ msgid ""
"An arbitrary string, interpreted by the client according to its own needs "
"and wishes. There is no central tag repository across clients."
msgstr ""
"Une chaîne de caractères arbitraire, interprétée par le client en fonction "
"de ses besoins et de ses souhaits. Il n'y a pas de répertoire central "
"d'étiquettes partagé par les clients."
#. module: base
#: sql_constraint:ir.rule:0
@ -7437,6 +7519,12 @@ msgid ""
"Mexican accounting chart and localization.\n"
" "
msgstr ""
"\n"
"Ceci est le module pour gérer le plan de comptes mexicain dans OpenERP\n"
"========================================================================\n"
"\n"
"Plan de comptes et localisation mexicaine.\n"
" "
#. module: base
#: field:res.lang,time_format:0
@ -8422,6 +8510,17 @@ msgid ""
"\n"
" "
msgstr ""
"\n"
"Vous permet d'ajouter des méthodes de livraison dans les commandes de ventes "
"et les envois de marchandises.\n"
"==============================================================\n"
"\n"
"Vous pouvez définir vos propres transporteurs et vos propres grilles de "
"tarifs de livraison.\n"
"Quand vous créérez des factures depuis les envois de marchandises, OpenERP "
"sera capable d'ajouter et de calculer une ligne pour la livraison.\n"
"\n"
" "
#. module: base
#: view:workflow.workitem:0
@ -9572,7 +9671,7 @@ msgstr ""
#: model:ir.ui.menu,name:base.menu_values_form_action
#: view:ir.values:0
msgid "Action Bindings"
msgstr ""
msgstr "Correspondances de l'action"
#. module: base
#: view:ir.sequence:0
@ -9812,6 +9911,13 @@ msgid ""
"la moneda del Quetzal. -- Adds accounting chart for Guatemala. It also "
"includes taxes and the Quetzal currency"
msgstr ""
"\n"
"This is the base module to manage the accounting chart for Guatemala.\n"
"=====================================================================\n"
"\n"
"Agrega una nomenclatura contable para Guatemala. También icluye impuestos y "
"la moneda del Quetzal. -- Adds accounting chart for Guatemala. It also "
"includes taxes and the Quetzal currency"
#. module: base
#: view:res.lang:0
@ -9894,6 +10000,28 @@ msgid ""
"created\n"
" CALENDAR_NAME: Name of calendar to access\n"
msgstr ""
"\n"
"Ce module contient les fonctionnalités basiques pour le système caldav.\n"
"===========================================================\n"
"\n"
" - Webdav server that provides remote access to calendar\n"
" - Synchronisation of calendar using WebDAV\n"
" - Customize calendar event and todo attribute with any of OpenERP model\n"
" - Provides iCal Import/Export functionality\n"
"\n"
"To access Calendars using CalDAV clients, point them to:\n"
" http://HOSTNAME:PORT/webdav/DATABASE_NAME/calendars/users/USERNAME/c\n"
"\n"
"To access OpenERP Calendar using WebCal to remote site use the URL like:\n"
" http://HOSTNAME:PORT/webdav/DATABASE_NAME/Calendars/CALENDAR_NAME.ics\n"
"\n"
" Ou,\n"
" HOSTNAME: Machine sur lequel OpenERP Server est lancé\n"
" PORT : Port sur lequel OpenERP serveur est lancé (par défaut : "
"8069)\n"
" DATABASE_NAME: Nom de la base de données sur lequel le calendrier "
"OpenERP est créé\n"
" CALENDAR_NAME: Nom du calendrier à accéder\n"
#. module: base
#: field:ir.model.fields,selectable:0
@ -10053,6 +10181,12 @@ msgid ""
"Greek accounting chart and localization.\n"
" "
msgstr ""
"\n"
"Ceci est le module de base pour la gestion du plan comptable Grec.\n"
"==================================================================\n"
"\n"
"Greek accounting chart and localization.\n"
" "
#. module: base
#: view:ir.values:0
@ -10500,7 +10634,7 @@ msgstr "Guide de référence"
#. module: base
#: view:ir.values:0
msgid "Default Value Scope"
msgstr ""
msgstr "Valeur par défaut de la plage"
#. module: base
#: view:ir.ui.view:0
@ -10951,7 +11085,7 @@ msgstr "Islande"
#: model:ir.actions.act_window,name:base.ir_action_window
#: model:ir.ui.menu,name:base.menu_ir_action_window
msgid "Window Actions"
msgstr "Actions de la fênetre"
msgstr "Actions de fênetres"
#. module: base
#: view:res.lang:0
@ -11542,7 +11676,7 @@ msgstr ""
#. module: base
#: view:ir.sequence:0
msgid "Current Year with Century: %(year)s"
msgstr "Année en cours avec le siècle : %(année)s"
msgstr "Année en cours avec le siècle : %(year)s"
#. module: base
#: field:ir.exports,export_fields:0
@ -13385,7 +13519,7 @@ msgstr "Gestion des courriels"
#. module: base
#: field:ir.actions.server,trigger_name:0
msgid "Trigger Signal"
msgstr ""
msgstr "Signal de déclenchement"
#. module: base
#: code:addons/base/res/res_users.py:119
@ -13830,6 +13964,8 @@ msgid ""
"External Key/Identifier that can be used for data integration with third-"
"party systems"
msgstr ""
"Clé/Identifiant externe qui peut être utiliser pour l'intégration de données "
"avec des systèmes tiers"
#. module: base
#: model:ir.module.module,description:base.module_mrp_operations
@ -14760,7 +14896,7 @@ msgstr "Paramétrer les comptes bancaires"
#. module: base
#: field:ir.actions.client,tag:0
msgid "Client action tag"
msgstr ""
msgstr "Étiquette de l'action client"
#. module: base
#: code:addons/base/res/res_lang.py:189
@ -17294,6 +17430,13 @@ msgid ""
"are accessible if installed.\n"
" "
msgstr ""
"\n"
"Base Commune pour les modules utilitaires.\n"
"===================================\n"
"\n"
"Crée un lien ce menu pour rendre accessibles les outils comme \"survey\", "
"\"lunch\", \"idea\", etc. lorsqu'ils sont installés.\n"
" "
#. module: base
#: field:ir.exports,name:0

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2012-01-31 16:22+0000\n"
"Last-Translator: Raphael Collet (OpenERP) <Unknown>\n"
"PO-Revision-Date: 2012-08-20 15:43+0000\n"
"Last-Translator: OpenERP Administrators <Unknown>\n"
"Language-Team: Galician <gl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:35+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:37+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh

View File

@ -14,13 +14,13 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:35+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:38+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
msgid "Saint Helena"
msgstr "સંત હેલેના"
msgstr ""
#. module: base
#: view:ir.actions.report.xml:0

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2010-12-10 07:42+0000\n"
"PO-Revision-Date: 2012-08-20 15:27+0000\n"
"Last-Translator: OpenERP Administrators <Unknown>\n"
"Language-Team: Hebrew <he@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:35+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:38+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2012-02-08 09:51+0000\n"
"PO-Revision-Date: 2012-08-20 15:48+0000\n"
"Last-Translator: Goran Cvijanović <goranc@gmail.com>\n"
"Language-Team: openerp-translators\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:38+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:40+0000\n"
"X-Generator: Launchpad (build 15985)\n"
"Language: hr\n"
#. module: base
@ -182,7 +182,7 @@ msgstr ""
#. module: base
#: field:res.partner,ref:0
msgid "Reference"
msgstr "Referenca"
msgstr "Šifra"
#. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_be_invoice_bba
@ -3689,8 +3689,8 @@ msgid ""
"Value Added Tax number. Check the box if the partner is subjected to the "
"VAT. Used by the VAT legal statement."
msgstr ""
"PDV broj. Označite ako je partner podvrgnut PDV-u. Korišteno pri zakonskim "
"PDV izvještajima."
"PDV broj. Označite ako je partner obveznik PDV-a. Koristi se u nekim "
"izvještajima."
#. module: base
#: selection:ir.sequence,implementation:0
@ -3785,7 +3785,7 @@ msgstr "Provjera Ean"
#. module: base
#: field:res.partner,vat:0
msgid "VAT"
msgstr "VAT"
msgstr "PDV"
#. module: base
#: field:res.users,new_password:0
@ -10051,7 +10051,7 @@ msgstr "Tjedni"
#: code:addons/base/res/res_company.py:157
#, python-format
msgid "VAT: "
msgstr ""
msgstr "PDV "
#. module: base
#: model:res.country,name:base.af

View File

@ -7,15 +7,15 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2012-01-31 15:49+0000\n"
"PO-Revision-Date: 2012-08-20 15:28+0000\n"
"Last-Translator: NOVOTRADE RENDSZERHÁZ ( novotrade.hu ) "
"<openerp@novotrade.hu>\n"
"Language-Team: Hungarian <openerp-hungarian-team@lists.launchpad.net>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:35+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:38+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@ -1821,7 +1821,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_hr_evaluation
msgid "Employee Appraisals"
msgstr ""
msgstr "Munkavállaló értékelése"
#. module: base
#: selection:ir.actions.server,state:0
@ -3141,7 +3141,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_hr_contract
msgid "Employee Contracts"
msgstr ""
msgstr "Munkavállalói szerződések"
#. module: base
#: model:ir.module.module,description:base.module_wiki_faq
@ -6487,7 +6487,7 @@ msgstr "Automatikus frissítést ad a nézethez."
#. module: base
#: help:res.partner,employee:0
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
#: 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
#: selection:workflow.activity,kind:0
msgid "Function"
msgstr "Függvény"
msgstr "Beosztás"
#. module: base
#: view:res.widget:0

View File

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

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -7,14 +7,15 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2012-02-16 22:06+0000\n"
"Last-Translator: Davide Corio - agilebg.com <davide.corio@agilebg.com>\n"
"PO-Revision-Date: 2012-08-20 15:28+0000\n"
"Last-Translator: Leonardo Pistone - Agile BG - Domsense "
"<leonardo.pistone@domsense.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:36+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:38+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@ -849,6 +850,10 @@ msgid ""
"Launch Manually Once: after hacing been launched manually, it sets "
"automatically to Done."
msgstr ""
"Manuale: Esegui manualmente\n"
"Automatico: Viene eseguito ogni volta che il sistema viene riconfigurato \n"
"Esegui manualmente una volta sola: una volta lanciata l'esecuzione, lo stato "
"viene impostato autmaticamente su \"Eseguito\""
#. module: base
#: selection:base.language.install,lang:0
@ -1593,7 +1598,7 @@ msgstr "Login"
#: model:ir.actions.act_window,name:base.action_wizard_update_translations
#: model:ir.ui.menu,name:base.menu_wizard_update_translations
msgid "Synchronize Terms"
msgstr ""
msgstr "Sincronizza Termini"
#. module: base
#: view:ir.actions.server:0
@ -2980,7 +2985,7 @@ msgstr "Armenia"
#: model:ir.actions.act_window,name:base.ir_property_form
#: model:ir.ui.menu,name:base.menu_ir_property_form_all
msgid "Configuration Parameters"
msgstr "Parametri Configurazione"
msgstr "Parametri di configurazione"
#. module: base
#: constraint:ir.cron:0
@ -3077,7 +3082,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_wiki_quality_manual
msgid "Wiki: Quality Manual"
msgstr ""
msgstr "Wiki: Manuale della Qualità"
#. module: base
#: selection:ir.actions.act_window.view,view_mode:0
@ -3105,7 +3110,7 @@ msgstr "Settore Risorse Umane"
#. module: base
#: model:ir.ui.menu,name:base.menu_dashboard_admin
msgid "Administration Dashboard"
msgstr ""
msgstr "Dashboard di Amministrazione"
#. module: base
#: code:addons/orm.py:4408
@ -3748,7 +3753,7 @@ msgstr ""
#. module: base
#: model:ir.module.category,name:base.module_category_human_resources
msgid "Human Resources"
msgstr ""
msgstr "Risorse Umane"
#. module: base
#: model:ir.actions.act_window,name:base.action_country
@ -3808,7 +3813,7 @@ msgstr "Partita IVA"
#. module: base
#: field:res.users,new_password:0
msgid "Set password"
msgstr ""
msgstr "Nuova password"
#. module: base
#: view:res.lang:0
@ -4737,7 +4742,7 @@ msgstr "Kenia"
#: model:ir.actions.act_window,name:base.action_translation
#: model:ir.ui.menu,name:base.menu_action_translation
msgid "Translated Terms"
msgstr ""
msgstr "Termini Tradotti"
#. module: base
#: view:res.partner.event:0
@ -6368,7 +6373,7 @@ msgstr "Menu"
#. module: base
#: selection:ir.actions.todo,type:0
msgid "Launch Manually Once"
msgstr ""
msgstr "Esegui manualmente una volta sola"
#. module: base
#: model:ir.module.category,name:base.module_category_hidden
@ -6741,6 +6746,8 @@ msgid ""
"password, otherwise leave empty. After a change of password, the user has to "
"login again."
msgstr ""
"Per modificare la password scrivila qui, altrimenti lascia il campo vuoto. "
"Dopo aver cambiato la password, l'utente deve fare nuovamente login."
#. module: base
#: view:publisher_warranty.contract:0
@ -6929,7 +6936,7 @@ msgstr ""
#. module: base
#: view:ir.property:0
msgid "Parameters that are used by all resources."
msgstr ""
msgstr "Parametri utilizzati da tutte le risorse"
#. module: base
#: model:res.country,name:base.mz
@ -9394,7 +9401,7 @@ msgstr ""
#: model:ir.model,name:base.model_ir_model
#: model:ir.ui.menu,name:base.ir_model_model_menu
msgid "Models"
msgstr ""
msgstr "Modelli"
#. module: base
#: code:addons/base/ir/ir_cron.py:292
@ -9405,7 +9412,7 @@ msgstr ""
#. module: base
#: selection:ir.actions.todo,type:0
msgid "Launch Manually"
msgstr ""
msgstr "Esegui manualmente"
#. module: base
#: model:res.country,name:base.be
@ -10753,7 +10760,7 @@ msgstr "Nazione"
#. module: base
#: model:ir.ui.menu,name:base.next_id_5
msgid "Sequences & Identifiers"
msgstr ""
msgstr "Sequenze e Identificatori"
#. module: base
#: model:ir.module.module,description:base.module_l10n_th
@ -12636,7 +12643,7 @@ msgstr "ir.values"
#. module: base
#: model:res.groups,name:base.group_no_one
msgid "Technical Features"
msgstr ""
msgstr "Funzionalità tecniche"
#. module: base
#: selection:base.language.install,lang:0
@ -12656,7 +12663,7 @@ msgstr ""
#: view:ir.model.data:0
#: model:ir.ui.menu,name:base.ir_model_data_menu
msgid "External Identifiers"
msgstr ""
msgstr "Identificatori Esterni"
#. module: base
#: model:res.groups,name:base.group_sale_salesman
@ -12950,6 +12957,7 @@ msgid ""
"Please define at least one SMTP server, or provide the SMTP parameters "
"explicitly."
msgstr ""
"Definire almeno un server SMTP, o fornire esplicitamente i parametri SMTP"
#. module: base
#: view:ir.attachment:0
@ -12993,7 +13001,7 @@ msgstr "Gabon"
#. module: base
#: model:res.groups,name:base.group_multi_company
msgid "Multi Companies"
msgstr ""
msgstr "Multi-azienda"
#. module: base
#: view:ir.model:0
@ -13166,7 +13174,7 @@ msgstr "Varie"
#: view:ir.mail_server:0
#: model:ir.ui.menu,name:base.menu_mail_servers
msgid "Outgoing Mail Servers"
msgstr ""
msgstr "Server della Posta in Uscita"
#. module: base
#: model:res.country,name:base.cn

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-server\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2012-06-09 01:13+0000\n"
"PO-Revision-Date: 2012-09-20 05:23+0000\n"
"Last-Translator: Akira Hiyama <Unknown>\n"
"Language-Team: Japanese <ja@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-10 04:36+0000\n"
"X-Generator: Launchpad (build 15376)\n"
"X-Launchpad-Export-Date: 2012-09-21 04:41+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@ -193,7 +193,7 @@ msgstr "販売分析の配布"
#. module: base
#: model:ir.module.module,shortdesc:base.module_web_process
msgid "Process"
msgstr "プロセス"
msgstr "処理"
#. module: base
#: model:ir.module.module,shortdesc:base.module_analytic_journal_billing_rate
@ -283,7 +283,7 @@ msgstr "イヌクウティトット語 / Inuktitut"
#: model:ir.module.category,name:base.module_category_sales_management
#: model:ir.module.module,shortdesc:base.module_sale
msgid "Sales Management"
msgstr "セールス管理"
msgstr "受注管理"
#. module: base
#: view:res.partner:0
@ -459,7 +459,7 @@ msgstr "ir.ui.view_sc"
#: field:res.widget.user,widget_id:0
#: field:res.widget.wizard,widgets_list:0
msgid "Widget"
msgstr "ウィジット"
msgstr "ウィジット"
#. module: base
#: view:ir.model.access:0
@ -885,7 +885,7 @@ msgstr "アルバニア語 / Shqip"
#. module: base
#: model:ir.ui.menu,name:base.menu_crm_config_opportunity
msgid "Opportunities"
msgstr "オポチュニティ"
msgstr "商談"
#. module: base
#: model:ir.model,name:base.model_base_language_export
@ -1002,7 +1002,7 @@ msgstr "オマーン"
#. module: base
#: model:ir.module.module,shortdesc:base.module_mrp
msgid "MRP"
msgstr "MRP(資材所要量計画)"
msgstr "MRP"
#. module: base
#: report:ir.module.reference.graph:0
@ -2042,7 +2042,7 @@ msgstr "優先度"
#. module: base
#: field:workflow.transition,act_from:0
msgid "Source Activity"
msgstr "ソースアクティビティ"
msgstr "元の活動"
#. module: base
#: view:ir.sequence:0
@ -2435,7 +2435,7 @@ msgstr "一般的な説明"
#. module: base
#: view:workflow.activity:0
msgid "Workflow Activity"
msgstr "ワークフローアクティビティ"
msgstr "ワークフロー活動"
#. module: base
#: model:ir.actions.act_window,help:base.action_ui_view
@ -2514,7 +2514,7 @@ msgstr ""
#. module: base
#: model:ir.actions.act_window,name:base.action_res_widget_wizard
msgid "Homepage Widgets Management"
msgstr "ホームページウィジット管理"
msgstr "ホームページウィジット管理"
#. module: base
#: field:res.company,rml_header1:0
@ -2704,7 +2704,7 @@ msgstr "アイデア"
#. module: base
#: model:ir.module.module,shortdesc:base.module_sale_crm
msgid "Opportunity to Quotation"
msgstr "オポチュニティから見積り"
msgstr "商談から見積り"
#. module: base
#: model:ir.module.module,description:base.module_sale_analytic_plans
@ -2782,7 +2782,7 @@ msgstr "インポート / エクスポート"
#. module: base
#: model:ir.actions.todo.category,name:base.category_tools_customization_config
msgid "Tools / Customization"
msgstr "ツール / カスタマイゼーション"
msgstr "ツール / カスタム化"
#. module: base
#: field:ir.model.data,res_id:0
@ -2895,7 +2895,7 @@ msgstr "マネジャ"
#. module: base
#: model:ir.ui.menu,name:base.menu_custom
msgid "Customization"
msgstr "カスタマイゼーション"
msgstr "カスタム化"
#. module: base
#: model:res.country,name:base.py
@ -3080,7 +3080,7 @@ msgstr "プロジェクトレトロ - 計画"
#. module: base
#: model:ir.module.module,shortdesc:base.module_stock_planning
msgid "Master Procurement Schedule"
msgstr "マスター獲得スケジュール"
msgstr "マスター調達スケジュール"
#. module: base
#: model:ir.model,name:base.model_ir_module_category
@ -3795,7 +3795,7 @@ msgstr "ホスト名またはSMTPサーバのIPアドレス"
#. module: base
#: selection:base.language.install,lang:0
msgid "Japanese / 日本語"
msgstr "Japanese / 日本語"
msgstr "日本語 / Japanese"
#. module: base
#: field:ir.actions.report.xml,auto:0
@ -4776,9 +4776,9 @@ msgstr ""
"============================================================================="
"=========================\n"
"\n"
"このモジュールを使うことで、あなたのオポチュニティを地理的ローカル化できます。\n"
"このモジュールを使うことで、あなたの商談を地理的ローカル化できます。\n"
"\n"
"オポチュニティをパートナに割り当てる場合に地理的ローカル化を使います。\n"
"商談をパートナに割り当てる場合に、地理的ローカル化を使います。\n"
"パートナの住所によるGPS座標を決定します。\n"
"最も適切なパートナの割り当てが可能です。\n"
"また、GPS座標なしでも地理的ローカル化はできます。\n"
@ -5871,8 +5871,8 @@ msgid ""
"will automatically attach incoming emails to the right partner."
msgstr ""
"顧客は会社または組織といったビジネス対象の存在です。会社で働く人々のため顧客は複数のコンタクト者や住所を管理できます。顧客と関係する全てのトランザクション"
"をたどるために履歴タブが利用できます受注、Eメール、オポチュニティ、クレームなど。もし、OutlookやThunderbirdプラグインのEメールゲート"
"ウェイを使う場合、ゲートウェイが自動的に入ってくるEメールを正しいパートナに結びつけるように各コンタクトにEメールを登録することを忘れないで下さい。"
"をたどるために履歴タブが利用できます受注、Eメール、商談、クレームなど。もし、OutlookやThunderbirdプラグインのEメールゲートウェイを使"
"う場合、ゲートウェイが自動的に入ってくるEメールを正しいパートナに結びつけるように各コンタクトにEメールを登録することを忘れないで下さい。"
#. module: base
#: field:ir.actions.report.xml,name:0
@ -6002,7 +6002,7 @@ msgstr "南極大陸"
msgid ""
"Source activity. When this activity is over, the condition is tested to "
"determine if we can start the ACT_TO activity."
msgstr "ソースアクティビティ。そのアクティビティを終えた時に、ACT_TO活動を始めるかどうか条件がテストされます。"
msgstr "元の活動。その活動を終えた時に、ACT_TO活動を始めるかどうか条件がテストされます。"
#. module: base
#: model:res.partner.category,name:base.res_partner_category_3
@ -6423,7 +6423,7 @@ msgstr "多対1項目の属性削除"
#. module: base
#: model:ir.module.category,name:base.module_category_accounting_and_finance
msgid "Accounting & Finance"
msgstr "会計と金融"
msgstr "会計と財務"
#. module: base
#: field:ir.actions.server,write_id:0
@ -6961,7 +6961,7 @@ msgstr ""
#: field:res.request,act_to:0
#: field:res.request.history,act_to:0
msgid "To"
msgstr ""
msgstr "宛先"
#. module: base
#: view:ir.sequence:0
@ -7472,7 +7472,7 @@ msgstr "アクセスの作成"
#: field:res.partner.address,state_id:0
#: field:res.partner.bank,state_id:0
msgid "Fed. State"
msgstr ""
msgstr "都道府県"
#. module: base
#: field:ir.actions.server,copy_object:0
@ -7703,7 +7703,7 @@ msgstr "販売員"
#. module: base
#: model:ir.module.module,shortdesc:base.module_account_accountant
msgid "Accounting and Finance"
msgstr "会計と金融"
msgstr "会計と財務"
#. module: base
#: code:addons/base/module/module.py:429
@ -7797,7 +7797,7 @@ msgstr ""
#. module: base
#: view:res.widget.wizard:0
msgid "Widget Wizard"
msgstr "ウィジットウィザード"
msgstr "ウィジットウィザード"
#. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_hn
@ -7933,7 +7933,7 @@ msgid ""
" "
msgstr ""
"\n"
"このモジュールはCRMにつあるいは幾つかのオポチュニティに近道を加えます。\n"
"このモジュールはCRMにつあるいは幾つかの商談に近道を加えます。\n"
"===========================================================================\n"
"\n"
"この方法は選択されたケースに基づき受注オーダーを作成します。\n"
@ -8215,7 +8215,7 @@ msgstr "中国語 / 简体中文"
#: field:res.partner.address,street:0
#: field:res.partner.bank,street:0
msgid "Street"
msgstr ""
msgstr "町名番地"
#. module: base
#: model:res.country,name:base.yu
@ -8676,7 +8676,7 @@ msgstr ""
"===========================================================================\n"
"\n"
"所定のメールボックスに到着した新しいEメールを元にタスクの生成を許します。\n"
"CRMアプリケーションがリード / オポチュニティを持つものも同様です。\n"
"CRMアプリケーションがリード / 商談を持つものも同様です。\n"
"メールボックス統合の設定のために2つの共通の選択肢があります:\n"
"\n"
" ・ fetchmailモジュールをインストールし、新しいメールボックスを設定し、それから\n"
@ -8874,7 +8874,7 @@ msgstr ""
#. module: base
#: field:workflow.transition,act_to:0
msgid "Destination Activity"
msgstr "行先のアクティビティ"
msgstr "宛先の活動"
#. module: base
#: help:res.currency,position:0
@ -9068,7 +9068,7 @@ msgid ""
msgstr ""
"顧客(システムの他のエリアではパートナと呼ばれる)は、彼らが見込み客、顧客であるのか、仕入先であるのかどうか会社の住所録の管理するのを手助けします。パート"
"ナのフォームは、会社のアドレスから、価格リストなどの多くの情報、パートナの連絡先まで相互に必要なすべての情報を追跡し、記録することができます。\r\n"
"CRMをインストールした場合は、履歴タブでパートナと共にオポチュニティ、電子メール、発行された受注など全ての対話を追跡することができます。"
"CRMをインストールした場合は、履歴タブでパートナと共に商談、電子メール、発行された受注など全ての対話を追跡することができます。"
#. module: base
#: model:res.country,name:base.ph
@ -10257,7 +10257,7 @@ msgstr ""
"\n"
"受注予測の解決のために製品の\"受注履歴\"を使うことができます。\n"
"あなたはこのテーブルの先頭と左のパラメータを入力しなければなりません。そして、システムはそれらのパラメータにより販売数量を計算します。\n"
"そして、所定の販売チームや期間のための結果を得ることができます。\n"
"そして、所定の営業チームや期間のための結果を得ることができます。\n"
"\n"
"MPSまたは調達計画\n"
"---------------------------\n"
@ -11064,7 +11064,7 @@ msgstr ""
"以下のような多くの電子メール対応のOpenERPドキュメントのために、電子メールベースの\n"
"ワークフローを簡単に作成するために利用することができます:\n"
"\n"
"・ CRMのリード / オポチュニティ\n"
"・ CRMのリード / 商談\n"
"・ CRMのクレーム\n"
"・ プロジェクトの問題\n"
"・ プロジェクトのタスク\n"
@ -11238,7 +11238,7 @@ msgid ""
"(default: 465)"
msgstr ""
"接続の暗号化方式を選択:\n"
"・ なし: SMTPセッションはクリアテキストで行われ。\n"
"・ なし: SMTPセッションはクリアテキストで行われます。\n"
"・ TLSSTARTTLSTLS暗号化はSMTPセッションの開始において要求されます推奨。\n"
"・ SSL/TLSSMTPセッションは専用のポートデフォルト465によってSSL/TLSで暗号化されます。"
@ -11312,7 +11312,7 @@ msgid ""
" "
msgstr ""
"\n"
"CRMのリードとオポチュニティのためのToDoリスト\n"
"CRMのリードと商談のためのToDoリスト\n"
" "
#. module: base
@ -11626,7 +11626,7 @@ msgstr "Googleインポート"
#. module: base
#: model:res.partner.category,name:base.res_partner_category_12
msgid "Segmentation"
msgstr "分"
msgstr "分"
#. module: base
#: field:res.lang,thousands_sep:0
@ -12022,7 +12022,7 @@ msgstr "%m - 月[01,12]."
#: field:res.partner.address,city:0
#: field:res.partner.bank,city:0
msgid "City"
msgstr "市"
msgstr "市区町村"
#. module: base
#: model:res.country,name:base.qa
@ -12068,7 +12068,7 @@ msgstr ""
"このモジュールはパートナのアドレスの中にGoogleマップ項目を追加します。\n"
"====================================================\n"
"\n"
"これを使うと、URLウィジットからGoogleマップを直接開くことができます。"
"これを使うと、URLウィジットからGoogleマップを直接開くことができます。"
#. module: base
#: field:workflow.activity,action:0
@ -12203,7 +12203,7 @@ msgstr "モジュール更新結果"
#: view:workflow.activity:0
#: field:workflow.workitem,act_id:0
msgid "Activity"
msgstr "アクティビティ"
msgstr "活動"
#. module: base
#: view:res.partner:0
@ -12413,7 +12413,7 @@ msgstr "あなたが作成 / 書き込みたいオブジェクト。もし、そ
#: selection:ir.module.module,state:0
#: selection:ir.module.module.dependency,state:0
msgid "Not Installed"
msgstr "インストールされていません。"
msgstr "インストール"
#. module: base
#: view:workflow.activity:0
@ -12489,8 +12489,7 @@ msgstr ""
"さまざまな画面のアクションを自動的にトリガーする自動アクションの使用ができます。\n"
"\n"
"例:特定のユーザにより作成されたリードは自動的に特定のセールスチームにセットされたり、\n"
"あるいは14日以上保留状態であるオポチュニティは自動的にリマインダー電子メールの\n"
"トリガーになります。\n"
"あるいは14日以上保留状態である商談は自動的に通知電子メールのトリガーになります。\n"
" "
#. module: base
@ -12748,9 +12747,8 @@ msgid ""
" \"Contacts\", \"Employees\", Meetings, Phonecalls, Emails, and "
"Project, Project Tasks Data into OpenERP Module."
msgstr ""
"このモジュールはSugarCRMの以下のデータをOpenERPモジュールにインポートします\n"
"  リード、オポチュニティ、ユーザ、会計、コンタクト、従業員、ミーティング、\n"
"  電話、Eメール、プロジェクト、プロジェクトタスク"
"このモジュールはSugarCRMの以下のデータをOpenERPモジュールの中にインポートします\n"
"  リード、商談、ユーザ、会計、コンタクト、従業員、ミーティング、電話、Eメール、プロジェクト、プロジェクトタスク"
#. module: base
#: model:ir.actions.act_window,name:base.action_publisher_warranty_contract_add_wizard
@ -12984,7 +12982,7 @@ msgstr "発注時の二重検証"
#: field:res.company,street2:0
#: field:res.partner.address,street2:0
msgid "Street2"
msgstr ""
msgstr "町名番地2"
#. module: base
#: model:ir.actions.act_window,name:base.action_view_base_module_update
@ -14299,7 +14297,7 @@ msgstr "連絡先を隠すためにはアクティブな項目のチェックを
#. module: base
#: model:ir.model,name:base.model_res_widget_wizard
msgid "Add a widget for User"
msgstr "ユーザのウィジットを追加"
msgstr "ユーザのウィジットを追加"
#. module: base
#: model:res.country,name:base.dk
@ -15307,7 +15305,7 @@ msgstr "イラン"
#: model:ir.actions.act_window,name:base.res_widget_user_act_window
#: model:ir.ui.menu,name:base.menu_res_widget_user_act_window
msgid "Widgets per User"
msgstr "ユーザ当りのウィジット"
msgstr "ユーザ当りのウィジット"
#. module: base
#: model:ir.actions.act_window,name:base.action_publisher_warranty_contract_form
@ -15581,7 +15579,7 @@ msgstr "情報"
#. module: base
#: view:res.widget.user:0
msgid "User Widgets"
msgstr "ユーザウィジット"
msgstr "ユーザウィジット"
#. module: base
#: view:base.module.update:0
@ -15655,7 +15653,7 @@ msgstr ""
#: view:workflow:0
#: field:workflow,activities:0
msgid "Activities"
msgstr "アクティビティ"
msgstr "活動"
#. module: base
#: model:ir.module.module,shortdesc:base.module_product
@ -15867,7 +15865,7 @@ msgstr "DBパスワードの暗号化"
#. module: base
#: help:workflow.transition,act_to:0
msgid "The destination activity."
msgstr "行先のアクティビティ"
msgstr "宛先の活動"
#. module: base
#: model:ir.module.module,shortdesc:base.module_account_check_writing
@ -16388,7 +16386,7 @@ msgstr ""
#. module: base
#: model:ir.ui.menu,name:base.menu_crm_config_lead
msgid "Leads & Opportunities"
msgstr "リードとオポチュニティ"
msgstr "リードと商談"
#. module: base
#: selection:base.language.install,lang:0
@ -17199,7 +17197,7 @@ msgstr ""
"一般的なOpenERPのCRMCustomer Relationship Management\n"
"=====================================================\n"
"\n"
"このシステムは人々のグループがリード、オポチュニティ、ミーティング、電話他を知的に効果的に\n"
"このシステムは人々のグループがリード、商談、ミーティング、電話他を知的に効果的に\n"
"管理することを可能にします。これはコミュニケーション、身分証明、優先度付け、割り当て、\n"
"問題解決、通知といった主要なタスクを管理します。\n"
"\n"
@ -17216,8 +17214,8 @@ msgstr ""
"Eメールゲートウェイを持ちます。\n"
"\n"
"CRMのために作成されるダッシュボードは次のものを含みます\n"
" ・ 分類別のオポチュニティ(グラフ)\n"
" ・ 工程別のオポチュニティ(グラフ)\n"
" ・ 分類別の商談(グラフ)\n"
" ・ 工程別の商談(グラフ)\n"
" ・ 工程とユーザ別の計画収益(グラフ)\n"
#. module: base
@ -17386,7 +17384,7 @@ msgstr ""
" ・ 各アクションが手動の検証を必要とする場合は、手動で実際のキャンペーンを開始することもできます。\n"
" ・ 最後にキャンペーンを実際に起動し、キャンペーンの全てが完全に自動的に行われるよう統計値を監視します。\n"
"\n"
"キャンペーンの実行中にも、ちろんパラメータ、入力セグメント、ワークフローなどの微調整を続ける事ができます。\n"
"キャンペーンの実行中にも、ちろんパラメータ、入力セグメント、ワークフローなどの微調整を続ける事ができます。\n"
"\n"
"注記デモデータが必要なら、marketing_campaign_crm_demoモジュールをインストールできます。それはCRMリードに依存するため、CR"
"Mアプリケーションもインストールすることになります。\n"
@ -17623,14 +17621,14 @@ msgstr "機能"
#. module: base
#: view:res.widget:0
msgid "Search Widget"
msgstr "ウィジットの検索"
msgstr "ウィジットの検索"
#. module: base
#: model:ir.module.category,description:base.module_category_customer_relationship_management
msgid ""
"Manage relations with prospects and customers using leads, opportunities, "
"requests or issues."
msgstr "リード、オポチュニティ、リクエスト、問題を使って、見込み客や顧客との関係を管理することができます。"
msgstr "リード、商談、リクエスト、問題を使って、見込み客や顧客との関係を管理することができます。"
#. module: base
#: selection:res.partner.address,type:0
@ -17744,7 +17742,7 @@ msgstr "受発注のドキュメントの内容に応じて、自動的に正し
#: model:ir.actions.act_window,name:base.res_widget_act_window
#: model:ir.ui.menu,name:base.menu_res_widget_act_window
msgid "Homepage Widgets"
msgstr "ホームページウィジット"
msgstr "ホームページウィジット"
#. module: base
#: help:res.company,rml_footer2:0
@ -17817,23 +17815,23 @@ msgid ""
" "
msgstr ""
"\n"
"このモジュールは何の開発もなし新しいモジュールの作成ができます。\n"
"このモジュールは何の開発もなし新しいモジュールの作成ができます。\n"
"======================================================================\n"
"\n"
"これは記録セッションの中でオブジェクトの全ての操作を記録します。そして、\n"
".ZIPモジュールを生成します。それによって、OpenERPクライアントから直接\n"
"独自モジュールを作成することができます。\n"
"\n"
"このバージョンは作成と既存のレコードの更新ために動作します。それは依存関係と、\n"
"全てのウィジットのタイプのためリンク(多対1、多対多など)を再計算します。\n"
"このバージョンは作成と既存のレコードの更新ために動作します。それは依存関係と、\n"
"全てのウィジットのタイプのためリンク(多対1、多対多など)を再計算します。\n"
"また、ワークフローとデモ / 更新データもサポートします。\n"
"\n"
"カスタム設定とデモ / テストデータのために、簡単に再利用と公表可能なモジュールを\n"
"作成するために役立つはずです。\n"
"\n"
"利用方法:\n"
"モジュールウィザードの アドミニストレーション/カスタマイゼーション/モジュール \n"
"作成/エクスポート カスタマイゼーション を実行します。\n"
"モジュールウィザードの アドミニストレーション/カスタム化/モジュール \n"
"作成/エクスポート カスタム化 を実行します。\n"
"記録の日時の基準、記録されるオブジェクト、記録モジュールを選択します。\n"
" "

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-server\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2012-03-14 15:06+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"PO-Revision-Date: 2012-08-20 15:35+0000\n"
"Last-Translator: OpenERP Administrators <Unknown>\n"
"Language-Team: Georgian <ka@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:34+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:37+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@ -238,7 +238,7 @@ msgstr "შეზღუდვის შეცდომა"
#. module: base
#: model:ir.model,name:base.model_ir_ui_view_custom
msgid "ir.ui.view.custom"
msgstr ""
msgstr "ir.ui.view.custom"
#. module: base
#: code:addons/base/ir/ir_model.py:313
@ -472,7 +472,7 @@ msgstr "კონფიგურაციის ვიზარდის სა
#. module: base
#: model:ir.model,name:base.model_ir_ui_view_sc
msgid "ir.ui.view_sc"
msgstr ""
msgstr "ir.ui.view_sc"
#. module: base
#: field:res.widget.user,widget_id:0
@ -532,6 +532,10 @@ msgid ""
"and reference view. The result is returned as an ordered list of pairs "
"(view_id,view_mode)."
msgstr ""
"ეს ფუნქციური ველი გათვლის რიგის მიხედვით დაწყობილი ხედების სიას, რომლებიც "
"უნდა ამუშავდნენ გარკვეული ქმედების შედეგის საჩვენებლად, აერთიანებენ რა ხედის "
"რეჟიმს, ხედებს და მიმთითებელ ხედს. შედეგი ბრუნდება, როგორც წყვილების "
"დაწყობილი სია (view_id,view_mode)."
#. module: base
#: model:res.country,name:base.tv
@ -929,7 +933,7 @@ msgstr "შესაძლებლობები"
#. module: base
#: model:ir.model,name:base.model_base_language_export
msgid "base.language.export"
msgstr ""
msgstr "base.language.export"
#. module: base
#: help:ir.actions.server,write_id:0
@ -1124,7 +1128,7 @@ msgstr "შვილობილი კატეგორიები"
#. module: base
#: model:ir.model,name:base.model_ir_config_parameter
msgid "ir.config_parameter"
msgstr ""
msgstr "ir.config_parameter"
#. module: base
#: selection:base.language.export,format:0
@ -1506,7 +1510,7 @@ msgstr "ჩანაწერების თანმიმდევრობ
#. module: base
#: model:ir.model,name:base.model_ir_exports
msgid "ir.exports"
msgstr ""
msgstr "ir.exports"
#. module: base
#: code:addons/base/module/wizard/base_update_translations.py:38
@ -1611,7 +1615,7 @@ msgstr "ბანკი"
#. module: base
#: model:ir.model,name:base.model_ir_exports_line
msgid "ir.exports.line"
msgstr ""
msgstr "ir.exports.line"
#. module: base
#: model:ir.module.module,description:base.module_html_view
@ -1762,7 +1766,7 @@ msgstr "საწყობის მართვა"
#. module: base
#: model:ir.model,name:base.model_res_request_link
msgid "res.request.link"
msgstr ""
msgstr "res.request.link"
#. module: base
#: field:ir.actions.wizard,name:0
@ -1897,7 +1901,7 @@ msgstr "ყირგიზეთი"
#. module: base
#: model:ir.model,name:base.model_wizard_ir_model_menu_create_line
msgid "wizard.ir.model.menu.create.line"
msgstr ""
msgstr "wizard.ir.model.menu.create.line"
#. module: base
#: field:ir.attachment,res_id:0
@ -2039,7 +2043,7 @@ msgstr ""
#. module: base
#: model:ir.model,name:base.model_ir_rule
msgid "ir.rule"
msgstr ""
msgstr "ir.rule"
#. module: base
#: selection:ir.cron,interval_type:0

View File

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

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2010-12-16 08:15+0000\n"
"PO-Revision-Date: 2012-08-20 15:29+0000\n"
"Last-Translator: ekodaq <ceo@ekosdaq.com>\n"
"Language-Team: Korean <ko@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:36+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:39+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2011-01-16 11:33+0000\n"
"PO-Revision-Date: 2012-08-20 15:52+0000\n"
"Last-Translator: Paulius Sladkevičius <paulius@hacbee.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:37+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:39+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh

View File

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

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2012-01-31 15:53+0000\n"
"PO-Revision-Date: 2012-08-20 15:31+0000\n"
"Last-Translator: Antony Lesuisse (OpenERP) <al@openerp.com>\n"
"Language-Team: Latvian <lv@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:36+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:39+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@ -107,6 +107,8 @@ msgid ""
"Helps you manage your projects and tasks by tracking them, generating "
"plannings, etc..."
msgstr ""
"Palīdz pārvaldīt projektus un uzdevumus, tiem sekojot, ģenerējot plānojumus "
"utt."
#. module: base
#: field:ir.actions.act_window,display_menu_tip:0
@ -220,7 +222,7 @@ msgstr "Svazilenda"
#: code:addons/orm.py:4206
#, python-format
msgid "created."
msgstr ""
msgstr "izveidots."
#. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_tr
@ -264,7 +266,7 @@ msgstr ""
#: model:ir.module.category,name:base.module_category_sales_management
#: model:ir.module.module,shortdesc:base.module_sale
msgid "Sales Management"
msgstr ""
msgstr "Tirdzniecības Vadība"
#. module: base
#: view:res.partner:0
@ -365,7 +367,7 @@ msgstr ""
#. module: base
#: model:ir.module.category,name:base.module_category_customer_relationship_management
msgid "Customer Relationship Management"
msgstr ""
msgstr "Klientu Attiecību Vadība (CRM)"
#. module: base
#: view:ir.module.module:0
@ -693,7 +695,7 @@ msgstr "Exports veikts"
#. module: base
#: model:ir.module.module,shortdesc:base.module_plugin_outlook
msgid "Outlook Plug-In"
msgstr ""
msgstr "Outlook spraudnis"
#. module: base
#: view:ir.model:0
@ -1057,7 +1059,7 @@ msgstr "Tips"
#. module: base
#: field:ir.mail_server,smtp_user:0
msgid "Username"
msgstr ""
msgstr "Lietotājvārds"
#. module: base
#: code:addons/orm.py:398
@ -1205,7 +1207,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_import_sugarcrm
msgid "SugarCRM Import"
msgstr ""
msgstr "SugarCRM Imports"
#. module: base
#: view:res.lang:0
@ -1228,7 +1230,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_web_tests
msgid "Tests"
msgstr ""
msgstr "Pārbaudes"
#. module: base
#: field:ir.ui.view_sc,res_id:0
@ -1355,7 +1357,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_account_sequence
msgid "Entries Sequence Numbering"
msgstr ""
msgstr "Ierakstu Kārtas Numerācija"
#. module: base
#: model:ir.model,name:base.model_ir_exports
@ -1461,6 +1463,8 @@ msgid ""
"Helps you manage your purchase-related processes such as requests for "
"quotations, supplier invoices, etc..."
msgstr ""
"Palīdz pārvaldīt ar iepirkumiem saistītus procesus, kā pieprasījumus pēc "
"cenas piedāvājumiem, piegādātāju rēķinus utt."
#. module: base
#: help:base.language.install,overwrite:0
@ -1556,7 +1560,7 @@ msgstr "Float"
#: model:ir.module.category,name:base.module_category_warehouse_management
#: model:ir.module.module,shortdesc:base.module_stock
msgid "Warehouse Management"
msgstr ""
msgstr "Noliktavas Vadība"
#. module: base
#: model:ir.model,name:base.model_res_request_link
@ -1585,7 +1589,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_lu
msgid "Luxembourg - Accounting"
msgstr ""
msgstr "Luksemburga - Grāmatvedība"
#. module: base
#: model:res.country,name:base.tp
@ -1987,12 +1991,12 @@ msgstr "Somija"
#: code:addons/base/res/res_company.py:156
#, python-format
msgid "Website: "
msgstr ""
msgstr "Vietne: "
#. module: base
#: model:ir.ui.menu,name:base.menu_administration
msgid "Settings"
msgstr ""
msgstr "Uzstādījumi"
#. module: base
#: selection:ir.actions.act_window,view_type:0
@ -2093,7 +2097,7 @@ msgstr "Logotips"
#. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_cr
msgid "Costa Rica - Accounting"
msgstr ""
msgstr "Kostarika - Grāmatvedība"
#. module: base
#: view:ir.module.module:0
@ -2166,7 +2170,7 @@ msgstr "Jaunināto moduļu skaits"
#. module: base
#: field:ir.cron,function:0
msgid "Method"
msgstr ""
msgstr "Metode"
#. module: base
#: view:res.partner.event:0
@ -2300,7 +2304,7 @@ msgstr ""
#. module: base
#: field:ir.mail_server,smtp_debug:0
msgid "Debugging"
msgstr ""
msgstr "Atkļūdošana"
#. module: base
#: model:ir.module.module,description:base.module_crm_helpdesk
@ -2410,12 +2414,12 @@ msgstr "Esošā Likme"
#. module: base
#: model:ir.module.module,shortdesc:base.module_idea
msgid "Ideas"
msgstr ""
msgstr "Idejas"
#. module: base
#: model:ir.module.module,shortdesc:base.module_sale_crm
msgid "Opportunity to Quotation"
msgstr ""
msgstr "Konvertēt Potenciālo darījumu uz Cenas Pieprasījumu"
#. module: base
#: model:ir.module.module,description:base.module_sale_analytic_plans
@ -2452,7 +2456,7 @@ msgstr ""
#. module: base
#: model:ir.ui.menu,name:base.menu_invoiced
msgid "Invoicing"
msgstr ""
msgstr "Rēķinu izrakstīšana"
#. module: base
#: field:ir.ui.view_sc,name:0
@ -2577,7 +2581,7 @@ msgstr ""
#: model:res.groups,name:base.group_sale_manager
#: model:res.groups,name:base.group_tool_manager
msgid "Manager"
msgstr ""
msgstr "Menedžeris"
#. module: base
#: model:ir.ui.menu,name:base.menu_custom
@ -2627,6 +2631,8 @@ msgid ""
"Lets you install various tools to simplify and enhance OpenERP's report "
"creation."
msgstr ""
"Ļauj instalēt dažādus rīkus, lai vienkāršotu un uzlabotu OpenERP atskaišu "
"izveidi."
#. module: base
#: view:res.lang:0
@ -2637,7 +2643,7 @@ msgstr "%y - Gads bez gadsimta [00,99]."
#: code:addons/base/res/res_company.py:155
#, python-format
msgid "Fax: "
msgstr ""
msgstr "Fakss: "
#. module: base
#: model:res.country,name:base.si
@ -2647,7 +2653,7 @@ msgstr "Slovēnija"
#. module: base
#: help:res.currency,name:0
msgid "Currency Code (ISO 4217)"
msgstr ""
msgstr "Valūtas kods (ISO 4217)"
#. module: base
#: model:ir.actions.act_window,name:base.res_log_act_window
@ -2769,7 +2775,7 @@ msgstr ""
#: field:ir.module.module,application:0
#: field:res.groups,category_id:0
msgid "Application"
msgstr ""
msgstr "Programma"
#. module: base
#: selection:publisher_warranty.contract,state:0
@ -2963,7 +2969,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_wiki_quality_manual
msgid "Wiki: Quality Manual"
msgstr ""
msgstr "Wiki: Kvalitātes rokasgrāmata"
#. module: base
#: selection:ir.actions.act_window.view,view_mode:0
@ -2991,7 +2997,7 @@ msgstr "HR Sektors"
#. module: base
#: model:ir.ui.menu,name:base.menu_dashboard_admin
msgid "Administration Dashboard"
msgstr ""
msgstr "Administrēšanas instrumentu panelis"
#. module: base
#: code:addons/orm.py:4408
@ -3076,7 +3082,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_hr_contract
msgid "Employee Contracts"
msgstr ""
msgstr "Darbinieku līgumi"
#. module: base
#: model:ir.module.module,description:base.module_wiki_faq
@ -3140,7 +3146,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_survey
msgid "Survey"
msgstr ""
msgstr "Aptauja"
#. module: base
#: view:base.language.import:0
@ -3432,7 +3438,7 @@ msgstr ""
#: model:ir.module.category,name:base.module_category_generic_modules_accounting
#: view:res.company:0
msgid "Accounting"
msgstr ""
msgstr "Grāmatvedība"
#. module: base
#: model:ir.module.module,description:base.module_account_payment
@ -15131,7 +15137,7 @@ msgstr "Partneri: "
#. module: base
#: field:res.partner.bank,name:0
msgid "Bank Account"
msgstr ""
msgstr "Bankas Konts"
#. module: base
#: model:res.country,name:base.kp
@ -15147,7 +15153,7 @@ msgstr "Izveidot Objektu"
#: view:ir.filters:0
#: field:res.log,context:0
msgid "Context"
msgstr ""
msgstr "Konteksts"
#. module: base
#: model:ir.module.module,shortdesc:base.module_sale_mrp
@ -15162,12 +15168,12 @@ msgstr ""
#. module: base
#: model:res.partner.category,name:base.res_partner_category_1
msgid "Prospect"
msgstr ""
msgstr "Nākotnes Plāni"
#. module: base
#: model:ir.module.module,shortdesc:base.module_stock_invoice_directly
msgid "Invoice Picking Directly"
msgstr ""
msgstr "Rēķina Izrakstīšana, Piegādājot preci"
#. module: base
#: selection:base.language.install,lang:0

View File

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

File diff suppressed because it is too large Load Diff

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-server\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2012-01-31 16:28+0000\n"
"PO-Revision-Date: 2012-08-20 15:45+0000\n"
"Last-Translator: Antony Lesuisse (OpenERP) <al@openerp.com>\n"
"Language-Team: Norwegian Bokmal <nb@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:37+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:39+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@ -30,12 +30,12 @@ msgstr "Annen konfigurasjon"
#. module: base
#: selection:ir.property,type:0
msgid "DateTime"
msgstr ""
msgstr "Dato og klokkeslett"
#. module: base
#: model:ir.module.module,shortdesc:base.module_project_mailgate
msgid "Tasks-Mail Integration"
msgstr ""
msgstr "Integrasjon Oppgaver - E-post"
#. module: base
#: code:addons/fields.py:582
@ -44,6 +44,8 @@ msgid ""
"The second argument of the many2many field %s must be a SQL table !You used "
"%s, which is not a valid SQL table name."
msgstr ""
"Det andre argumentet for mange-til-mange-feltet %s må være en SQL tabell! Du "
"anga %s som ikke er et gyldig SQL tabellnavn."
#. module: base
#: field:ir.ui.view,arch:0
@ -89,7 +91,7 @@ msgstr "Arbeidsflyt"
#. module: base
#: selection:ir.sequence,implementation:0
msgid "No gap"
msgstr ""
msgstr "Ingen gap"
#. module: base
#: selection:base.language.install,lang:0
@ -107,6 +109,8 @@ msgid ""
"Helps you manage your projects and tasks by tracking them, generating "
"plannings, etc..."
msgstr ""
"Hjelper deg med å håndtere dine prosjekter og oppgaver ved å spore dem, "
"generere planer, osv..."
#. module: base
#: field:ir.actions.act_window,display_menu_tip:0
@ -118,6 +122,8 @@ msgstr "Vis menytips"
msgid ""
"Model name on which the method to be called is located, e.g. 'res.partner'."
msgstr ""
"Navn på modell hvor metoden som skal kalles er definert, f.eks. "
"'res.partner'."
#. module: base
#: view:ir.module.module:0
@ -143,6 +149,12 @@ msgid ""
"\n"
"This module allows you to create retro planning for managing your events.\n"
msgstr ""
"\n"
"Organisering og administrasjon av arrangementer\n"
"===============================================\n"
"\n"
"Denne modulen gir deg mulighet for baklengs planlegging for å administrere "
"dine arrangementer.\n"
#. module: base
#: help:ir.model.fields,domain:0
@ -180,7 +192,7 @@ msgstr "Prosess"
#. module: base
#: model:ir.module.module,shortdesc:base.module_analytic_journal_billing_rate
msgid "Billing Rates on Contracts"
msgstr ""
msgstr "Faktureringsrater på kontrakter"
#. module: base
#: code:addons/base/res/res_users.py:558
@ -200,7 +212,7 @@ msgstr ""
#: code:addons/osv.py:129
#, python-format
msgid "Constraint Error"
msgstr ""
msgstr "Betingelsesfeil"
#. module: base
#: model:ir.model,name:base.model_ir_ui_view_custom
@ -265,12 +277,12 @@ msgstr ""
#: model:ir.module.category,name:base.module_category_sales_management
#: model:ir.module.module,shortdesc:base.module_sale
msgid "Sales Management"
msgstr ""
msgstr "Salgsadministrasjon"
#. module: base
#: view:res.partner:0
msgid "Search Partner"
msgstr ""
msgstr "Søk partner"
#. module: base
#: code:addons/base/module/wizard/base_export_language.py:60
@ -377,7 +389,7 @@ msgstr "Ekstra"
#: code:addons/orm.py:2526
#, python-format
msgid "Invalid group_by"
msgstr ""
msgstr "Ugyldig gruppering"
#. module: base
#: field:ir.module.category,child_ids:0
@ -2463,7 +2475,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_product_margin
msgid "Margins by Products"
msgstr ""
msgstr "Margin pr product"
#. module: base
#: model:ir.ui.menu,name:base.menu_invoiced
@ -2778,7 +2790,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_stock_planning
msgid "Master Procurement Schedule"
msgstr ""
msgstr "Hovedplanlegging av anskaffelser"
#. module: base
#: model:ir.model,name:base.model_ir_module_category
@ -3143,7 +3155,7 @@ msgstr "Kontakttitler"
#. module: base
#: model:ir.module.module,shortdesc:base.module_product_manufacturer
msgid "Products Manufacturers"
msgstr ""
msgstr "Vareprodusenter"
#. module: base
#: code:addons/base/ir/ir_mail_server.py:217
@ -6899,7 +6911,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_report_intrastat
msgid "Intrastat Reporting"
msgstr ""
msgstr "Intrastat-rapportering"
#. module: base
#: code:addons/base/res/res_users.py:222
@ -9530,7 +9542,7 @@ msgstr "Guyana"
#. module: base
#: model:ir.module.module,shortdesc:base.module_product_expiry
msgid "Products Expiry Date"
msgstr ""
msgstr "Utløpsdato"
#. module: base
#: model:ir.module.module,description:base.module_account
@ -12332,7 +12344,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_procurement
msgid "Procurements"
msgstr ""
msgstr "Anskaffelser"
#. module: base
#: model:ir.module.module,shortdesc:base.module_hr_payroll_account
@ -13385,7 +13397,7 @@ msgstr "Aktiviteter"
#. module: base
#: model:ir.module.module,shortdesc:base.module_product
msgid "Products & Pricelists"
msgstr ""
msgstr "Produkter & prislister"
#. module: base
#: field:ir.actions.act_window,auto_refresh:0
@ -14003,7 +14015,7 @@ msgstr ""
#: model:ir.ui.menu,name:base.menu_config_address_book
#: model:ir.ui.menu,name:base.menu_procurement_management_supplier
msgid "Address Book"
msgstr ""
msgstr "Adressebok"
#. module: base
#: model:ir.module.module,description:base.module_l10n_ma
@ -14437,7 +14449,7 @@ msgstr "Firma"
#. module: base
#: model:ir.module.category,name:base.module_category_report_designer
msgid "Advanced Reporting"
msgstr ""
msgstr "Avansert rapportering"
#. module: base
#: selection:ir.actions.act_window,target:0

File diff suppressed because it is too large Load Diff

View File

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

View File

@ -4711,7 +4711,7 @@ msgstr "html"
#. module: base
#: field:res.partner,vat:0
msgid "VAT"
msgid "TIN"
msgstr "BTW"
#. module: base
@ -5598,7 +5598,7 @@ msgstr "STOCK_MEDIA_PAUSE"
#. module: base
#: 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"
#. module: base

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2012-01-31 16:15+0000\n"
"PO-Revision-Date: 2012-08-20 15:42+0000\n"
"Last-Translator: Grzegorz Grzelak (OpenGLOBE.pl) <grzegorz@openglobe.pl>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:37+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:39+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@ -98,7 +98,7 @@ msgstr "Węgierski"
#. module: base
#: selection:base.language.install,lang:0
msgid "Spanish (PY) / Español (PY)"
msgstr ""
msgstr "Hiszpański (PY) / Español (PY)"
#. module: base
#: model:ir.module.category,description:base.module_category_project_management

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2012-06-05 10:01+0000\n"
"PO-Revision-Date: 2012-08-20 15:49+0000\n"
"Last-Translator: Tiago Rodrigues <tig.rodrigues@gmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-06 04:36+0000\n"
"X-Generator: Launchpad (build 15353)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:40+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@ -121,6 +121,7 @@ msgstr "Exibir dicas no menu"
msgid ""
"Model name on which the method to be called is located, e.g. 'res.partner'."
msgstr ""
"Nome do modelo onde está localizado o método que é chamado, exº 'res.partner'"
#. module: base
#: view:ir.module.module:0
@ -186,7 +187,7 @@ msgstr "Processo"
#. module: base
#: model:ir.module.module,shortdesc:base.module_analytic_journal_billing_rate
msgid "Billing Rates on Contracts"
msgstr ""
msgstr "Escalões de Preços de Contratos"
#. module: base
#: code:addons/base/res/res_users.py:558
@ -550,7 +551,7 @@ msgstr ""
#. module: base
#: view:ir.values:0
msgid "Action Binding"
msgstr ""
msgstr "Associação de Ação"
#. module: base
#: model:res.country,name:base.gf
@ -977,7 +978,7 @@ msgstr "Atualizar módulos"
#. module: base
#: selection:base.language.install,lang:0
msgid "Spanish (UY) / Español (UY)"
msgstr ""
msgstr "Espanhol (UY) / Español (UY)"
#. module: base
#: field:res.partner,mobile:0
@ -1495,6 +1496,9 @@ msgid ""
" OpenERP Web gantt chart view.\n"
" "
msgstr ""
"\n"
" OpenERP Web vista tabela Gantt.\n"
" "
#. module: base
#: report:ir.module.reference.graph:0
@ -1931,7 +1935,7 @@ msgstr "Vista de HTML"
#. module: base
#: field:res.currency,position:0
msgid "Symbol position"
msgstr ""
msgstr "Posição do símbolo"
#. module: base
#: model:ir.module.module,shortdesc:base.module_process
@ -1995,7 +1999,7 @@ msgstr "Modelo Anexado"
#. module: base
#: field:res.partner.bank,footer:0
msgid "Display on Reports"
msgstr ""
msgstr "Mostrar nos relatórios"
#. module: base
#: model:ir.module.module,description:base.module_l10n_cn
@ -2625,6 +2629,12 @@ msgid ""
"\n"
"Configure servers and trigger synchronization with its database objects.\n"
msgstr ""
"\n"
"Sincronização com todos os objectos.\n"
"=================================\n"
"\n"
"Configure a sincronização de servidores e gatilhos com os seus objectos de "
"base de dados.\n"
#. module: base
#: model:res.country,name:base.mg
@ -2686,7 +2696,7 @@ msgstr "Ação Alvo"
#. module: base
#: model:ir.module.module,shortdesc:base.module_base_calendar
msgid "Calendar Layer"
msgstr ""
msgstr "Camada de Calendário"
#. module: base
#: model:ir.actions.report.xml,name:base.report_ir_model_overview
@ -2930,7 +2940,7 @@ msgstr "Erro!"
#. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_fr_rib
msgid "French RIB Bank Details"
msgstr ""
msgstr "Detalhes Bancários do RIB Francês"
#. module: base
#: view:res.lang:0
@ -3011,12 +3021,12 @@ msgstr "Bangladesh"
#. module: base
#: model:ir.module.module,shortdesc:base.module_project_retro_planning
msgid "Project Retro-planning"
msgstr ""
msgstr "Retro-planeamento de Projeto"
#. module: base
#: model:ir.module.module,shortdesc:base.module_stock_planning
msgid "Master Procurement Schedule"
msgstr ""
msgstr "Calendário Principal de Compras"
#. module: base
#: model:ir.model,name:base.model_ir_module_category
@ -3062,7 +3072,7 @@ msgstr ""
#. module: base
#: field:ir.actions.client,params_store:0
msgid "Params storage"
msgstr ""
msgstr "Salvaguarda de parâmetros"
#. module: base
#: code:addons/base/module/module.py:409
@ -3098,7 +3108,7 @@ msgstr ""
#: code:addons/report_sxw.py:434
#, python-format
msgid "Unknown report type: %s"
msgstr ""
msgstr "Tipo de relatório desconhecido: %s"
#. module: base
#: code:addons/base/ir/ir_model.py:282
@ -3325,12 +3335,12 @@ msgstr "Ícone da Web do Ficheiro (hover)"
#. module: base
#: model:ir.module.module,description:base.module_web_diagram
msgid "Openerp web Diagram view"
msgstr ""
msgstr "Vista de Diagrama do Openerp web"
#. module: base
#: model:res.groups,name:base.group_hr_user
msgid "HR Officer"
msgstr ""
msgstr "Gestor de Recursos Humanos"
#. module: base
#: model:ir.module.module,shortdesc:base.module_hr_contract
@ -3394,7 +3404,7 @@ msgstr "Fabricantes de Artigos"
#: code:addons/base/ir/ir_mail_server.py:217
#, python-format
msgid "SMTP-over-SSL mode unavailable"
msgstr ""
msgstr "Modo SMTP-sobre-SSL indisponível"
#. module: base
#: model:ir.module.module,shortdesc:base.module_survey
@ -3447,7 +3457,7 @@ msgstr "Uruguai"
#. module: base
#: model:ir.module.module,shortdesc:base.module_fetchmail_crm
msgid "eMail Gateway for Leads"
msgstr ""
msgstr "Gateway de eMail para Oportunidades"
#. module: base
#: selection:base.language.install,lang:0
@ -3662,7 +3672,7 @@ msgstr "O RIB e / ou o IBAN não é válido"
#. module: base
#: model:ir.module.module,shortdesc:base.module_report_webkit
msgid "Webkit Report Engine"
msgstr ""
msgstr "Motor de Relatórios Webkit"
#. module: base
#: selection:publisher_warranty.contract,state:0
@ -3773,6 +3783,10 @@ msgid ""
"or data in your OpenERP instance. To install some modules, click on the "
"button \"Install\" from the form view and then click on \"Start Upgrade\"."
msgstr ""
"Pode instalar novos módulos para activar novas funcionalidades, menus, "
"relatórios ou dados na sua instância OpenERP. Para instalar módulos, clique "
"no botão \"instalar\" através da vista de formulário e depois clique em "
"\"Iniciar Actualização\"."
#. module: base
#: model:ir.actions.act_window,name:base.ir_cron_act
@ -3788,6 +3802,9 @@ msgid ""
" OpenERP Web chat module.\n"
" "
msgstr ""
"\n"
" Módulo OpenERP de conversação web.\n"
" "
#. module: base
#: field:res.partner.address,title:0
@ -3810,7 +3827,7 @@ msgstr "Recursividade Detetada."
#. module: base
#: model:ir.module.module,shortdesc:base.module_report_webkit_sample
msgid "Webkit Report Samples"
msgstr ""
msgstr "Relatórios Exemplo Webkit"
#. module: base
#: model:ir.module.module,shortdesc:base.module_point_of_sale
@ -3880,6 +3897,8 @@ msgid ""
"Invalid value for reference field \"%s.%s\" (last part must be a non-zero "
"integer): \"%s\""
msgstr ""
"Valor inválido para campo de referência \"%s.%s\" (ultima parte deve ser um "
"numero diferente de zero): \"%s\""
#. module: base
#: model:ir.module.category,name:base.module_category_human_resources
@ -3901,6 +3920,8 @@ msgstr "RML (desatualizado - use Report)"
#: sql_constraint:ir.translation:0
msgid "Language code of translation item must be among known languages"
msgstr ""
"Linguagem do código do item de tradução deve estar entre as linguagens "
"conhecidas"
#. module: base
#: view:ir.rule:0
@ -3968,6 +3989,9 @@ msgid ""
" OpenERP Web mobile.\n"
" "
msgstr ""
"\n"
" OpenERP Web móvel.\n"
" "
#. module: base
#: view:res.lang:0
@ -4081,6 +4105,8 @@ msgid ""
"Mail delivery failed via SMTP server '%s'.\n"
"%s: %s"
msgstr ""
"Entrega de email falhou através do servidor SMTP '%s'.\n"
"%s: %s"
#. module: base
#: view:ir.cron:0
@ -4148,12 +4174,12 @@ msgstr "Liechtenstein"
#. module: base
#: model:ir.module.module,description:base.module_web_rpc
msgid "Openerp web web"
msgstr ""
msgstr "Openerp web web"
#. module: base
#: model:ir.module.module,shortdesc:base.module_project_issue_sheet
msgid "Timesheet on Issues"
msgstr ""
msgstr "Folhas de horas de tickets de suporte"
#. module: base
#: model:res.partner.title,name:base.res_partner_title_ltd
@ -4263,6 +4289,9 @@ msgid ""
"its dependencies are satisfied. If the module has no dependency, it is "
"always installed."
msgstr ""
"Um módulo auto-instalável é automaticamente instalado pelo sistema quando "
"todas as suas dependências estão asseguradas. Se o módulo não tiver "
"dependências é sempre instalado."
#. module: base
#: model:ir.actions.act_window,name:base.res_lang_act_window
@ -4391,6 +4420,15 @@ msgid ""
"\n"
" "
msgstr ""
"\n"
"Este módulo ajuda a configurar o sistema na instalação de uma nova base de "
"dados.\n"
"============================================================================="
"===\n"
"\n"
"Mostra uma lista de funcionalidades e módulos de onde escolher.\n"
"\n"
" "
#. module: base
#: field:ir.actions.report.xml,report_sxw_content:0
@ -4475,6 +4513,9 @@ msgid ""
"When no specific mail server is requested for a mail, the highest priority "
"one is used. Default priority is 10 (smaller number = higher priority)"
msgstr ""
"Quando não é especificado um determinado servidor de email, é utilizado o de "
"maior prioridade. A prioridade por omissão é 10 (numero mais baixo = maior "
"prioridade)"
#. module: base
#: model:ir.module.module,description:base.module_crm_partner_assign
@ -4813,6 +4854,9 @@ msgid ""
"the same values as those available in the condition field, e.g. `Dear [[ "
"object.partner_id.name ]]`"
msgstr ""
"No conteúdos do email podem-se introduzir expressões entre duplas chavetas "
"baseadas nos mesmos valores disponíveis no campo de condição, exº `Caro [[ "
"object.partner_id.name ]]`"
#. module: base
#: model:ir.actions.act_window,name:base.action_workflow_form
@ -4837,7 +4881,7 @@ msgstr ""
#. module: base
#: model:ir.module.category,name:base.module_category_specific_industry_applications
msgid "Specific Industry Applications"
msgstr ""
msgstr "Aplicações para uma Indústria Específica"
#. module: base
#: model:res.partner.category,name:base.res_partner_category_retailers0
@ -5058,7 +5102,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_web_chat
msgid "Web Chat"
msgstr ""
msgstr "Conversação Web"
#. module: base
#: field:res.company,rml_footer2:0
@ -5090,6 +5134,7 @@ msgstr "Segurança"
#, python-format
msgid "Changing the storing system for field \"%s\" is not allowed."
msgstr ""
"Modificar o sistema de armazenamento do campo \"%s\" não é permitido."
#. module: base
#: help:res.partner.bank,company_id:0
@ -5446,7 +5491,7 @@ msgstr "Zâmbia"
#. module: base
#: view:ir.actions.todo:0
msgid "Launch Configuration Wizard"
msgstr ""
msgstr "Lançar Configurador"
#. module: base
#: help:res.partner,user_id:0
@ -5677,7 +5722,7 @@ msgstr "Web"
#. module: base
#: model:ir.module.module,shortdesc:base.module_lunch
msgid "Lunch Orders"
msgstr ""
msgstr "Encomendas de Refeição"
#. module: base
#: selection:base.language.install,lang:0
@ -5943,7 +5988,7 @@ msgstr ""
#: model:ir.ui.menu,name:base.menu_values_form_defaults
#: view:ir.values:0
msgid "User-defined Defaults"
msgstr ""
msgstr "Parâmetros de Utilizador por Omissão"
#. module: base
#: model:ir.module.category,name:base.module_category_usability
@ -5960,7 +6005,7 @@ msgstr "Valor do Domínio"
#. module: base
#: model:ir.module.module,shortdesc:base.module_base_module_quality
msgid "Analyse Module Quality"
msgstr ""
msgstr "Analisar Qualidade do Módulo"
#. module: base
#: selection:base.language.install,lang:0
@ -6213,7 +6258,7 @@ msgstr "Construtor de Pesquisas"
#. module: base
#: selection:ir.actions.todo,type:0
msgid "Launch Automatically"
msgstr ""
msgstr "Iniciar Automáticamente"
#. module: base
#: model:ir.module.module,description:base.module_mail
@ -6704,7 +6749,7 @@ msgstr "Perfil do Cliente"
#. module: base
#: model:ir.module.module,shortdesc:base.module_project_issue
msgid "Issues Tracker"
msgstr ""
msgstr "Registo de Tickets de Suporte"
#. module: base
#: selection:ir.cron,interval_type:0
@ -6877,7 +6922,7 @@ msgstr "Auditoria"
#. module: base
#: help:ir.values,company_id:0
msgid "If set, action binding only applies for this company"
msgstr ""
msgstr "Se activada, a associação de acções só se aplica a esta empresa"
#. module: base
#: model:res.country,name:base.lc
@ -7220,7 +7265,7 @@ msgstr "Honduras - Contabilidade"
#. module: base
#: model:ir.module.module,shortdesc:base.module_report_intrastat
msgid "Intrastat Reporting"
msgstr ""
msgstr "Relatórios Intrastat"
#. module: base
#: code:addons/base/res/res_users.py:222
@ -7728,7 +7773,7 @@ msgstr "Alemão / Nederlands"
#. module: base
#: selection:res.company,paper_format:0
msgid "US Letter"
msgstr ""
msgstr "Letter (EUA)"
#. module: base
#: model:ir.module.module,description:base.module_stock_location
@ -8253,7 +8298,7 @@ msgstr "Web Icon Image"
#. module: base
#: field:ir.actions.server,wkf_model_id:0
msgid "Target Object"
msgstr ""
msgstr "Objecto de Destino"
#. module: base
#: selection:ir.model.fields,select_level:0
@ -8433,7 +8478,7 @@ msgstr "Rotas Avançadas"
#. module: base
#: model:ir.module.module,shortdesc:base.module_pad
msgid "Collaborative Pads"
msgstr ""
msgstr "Painéis Colaborativos"
#. module: base
#: model:ir.module.module,shortdesc:base.module_account_anglo_saxon
@ -8448,7 +8493,7 @@ msgstr "Nepal"
#. module: base
#: help:res.groups,implied_ids:0
msgid "Users of this group automatically inherit those groups"
msgstr ""
msgstr "Utilizadores deste grupo automaticamente herdam os seguintes grupos"
#. module: base
#: model:ir.module.module,shortdesc:base.module_hr_attendance
@ -8489,7 +8534,7 @@ msgstr ""
#: model:ir.ui.menu,name:base.menu_values_form_action
#: view:ir.values:0
msgid "Action Bindings"
msgstr ""
msgstr "Associações de Acções"
#. module: base
#: view:ir.sequence:0
@ -8513,7 +8558,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_account
msgid "eInvoicing"
msgstr ""
msgstr "Faturação Electrónica"
#. module: base
#: model:ir.module.module,description:base.module_association
@ -9243,7 +9288,7 @@ msgstr "Ilhas Marianas do Norte"
#. module: base
#: model:ir.module.module,shortdesc:base.module_claim_from_delivery
msgid "Claim on Deliveries"
msgstr ""
msgstr "Reclamação nas Entregas"
#. module: base
#: model:res.country,name:base.sb
@ -9309,7 +9354,7 @@ msgstr "Traduções"
#. module: base
#: model:ir.module.module,shortdesc:base.module_project_gtd
msgid "Todo Lists"
msgstr ""
msgstr "Lista de Assuntos a Tratar"
#. module: base
#: view:ir.actions.report.xml:0
@ -9360,7 +9405,7 @@ msgstr "Guia de Referência"
#. module: base
#: view:ir.values:0
msgid "Default Value Scope"
msgstr ""
msgstr "Valor por Omissão para Âmbito"
#. module: base
#: view:ir.ui.view:0
@ -9470,7 +9515,7 @@ msgstr "Data da Criação"
#. module: base
#: help:ir.actions.server,trigger_name:0
msgid "The workflow signal to trigger"
msgstr ""
msgstr "O sinal do fluxo de trabalho para o gatilho"
#. module: base
#: model:ir.module.module,description:base.module_mrp
@ -9519,7 +9564,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,description:base.module_google_base_account
msgid "The module adds google user in res user"
msgstr ""
msgstr "Este módulo adiciona o utilizador Google no res user"
#. module: base
#: selection:base.language.install,state:0
@ -9619,7 +9664,7 @@ msgstr "Empresas"
#. module: base
#: help:res.currency,symbol:0
msgid "Currency sign, to be used when printing amounts."
msgstr ""
msgstr "Sinal da moeda, a ser utilizado na impressão de quantias."
#. module: base
#: view:res.lang:0
@ -9633,6 +9678,8 @@ msgid ""
"Your server does not seem to support SSL, you may want to try STARTTLS "
"instead"
msgstr ""
"O seu servidor aparentemente não suporta SSL, pode tentar STARTTLS como "
"alternativa"
#. module: base
#: model:ir.model,name:base.model_res_widget
@ -9657,7 +9704,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_mrp_jit
msgid "Just In Time Scheduling"
msgstr ""
msgstr "Agendamento em Tempo Real"
#. module: base
#: model:ir.module.module,shortdesc:base.module_account_bank_statement_extensions
@ -10595,6 +10642,7 @@ msgstr "%A - Nome completo do dia da semana."
#: help:ir.values,user_id:0
msgid "If set, action binding only applies for this user."
msgstr ""
"Se seleccionado, a associação de acção apenas se aplica a este utilizador."
#. module: base
#: model:res.country,name:base.gw
@ -10922,7 +10970,7 @@ msgstr "Estado do País"
#. module: base
#: model:ir.ui.menu,name:base.next_id_5
msgid "Sequences & Identifiers"
msgstr ""
msgstr "Sequências & Identificadores"
#. module: base
#: model:ir.module.module,description:base.module_l10n_th
@ -11294,6 +11342,7 @@ msgstr ""
msgid ""
"2. Group-specific rules are combined together with a logical OR operator"
msgstr ""
"2. Regras específicas a um grupo são agregadas através do operador lógico OR"
#. module: base
#: model:res.partner.category,name:base.res_partner_category_woodsuppliers0
@ -11453,7 +11502,7 @@ msgstr "Fuso Horário"
#. module: base
#: model:ir.module.module,shortdesc:base.module_wiki_faq
msgid "Wiki: Internal FAQ"
msgstr ""
msgstr "Wiki: FAQ Interno"
#. module: base
#: model:ir.model,name:base.model_ir_actions_report_xml
@ -11718,7 +11767,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_hr
msgid "Employee Directory"
msgstr ""
msgstr "Lista de Colaboradores"
#. module: base
#: view:ir.cron:0
@ -11895,7 +11944,7 @@ msgstr "Tunísia"
#. module: base
#: view:ir.actions.todo:0
msgid "Wizards to be Launched"
msgstr ""
msgstr "Configuradores a serem Iniciados"
#. module: base
#: model:ir.module.category,name:base.module_category_manufacturing
@ -11973,7 +12022,7 @@ msgstr "Gestão de Emails"
#. module: base
#: field:ir.actions.server,trigger_name:0
msgid "Trigger Signal"
msgstr ""
msgstr "Sinal do Gatilho"
#. module: base
#: code:addons/base/res/res_users.py:119
@ -12029,7 +12078,7 @@ msgstr ""
#. module: base
#: field:res.groups,trans_implied_ids:0
msgid "Transitively inherits"
msgstr ""
msgstr "Herda transitivamente"
#. module: base
#: field:ir.default,ref_table:0
@ -12405,6 +12454,8 @@ msgid ""
"External Key/Identifier that can be used for data integration with third-"
"party systems"
msgstr ""
"Chave externa/identificador pode ser utilizado para integração de dados com "
"aplicações externas"
#. module: base
#: model:ir.module.module,description:base.module_mrp_operations
@ -12847,7 +12898,7 @@ msgstr "Identificadores Externos"
#. module: base
#: model:res.groups,name:base.group_sale_salesman
msgid "User - Own Leads Only"
msgstr ""
msgstr "Utilizador - Apenas as suas Oportunidades"
#. module: base
#: model:res.country,name:base.cd
@ -13295,7 +13346,7 @@ msgstr "Definir Contas Bancárias"
#. module: base
#: field:ir.actions.client,tag:0
msgid "Client action tag"
msgstr ""
msgstr "Etiqueta de acção de cliente"
#. module: base
#: code:addons/base/res/res_lang.py:189
@ -13368,6 +13419,8 @@ msgid ""
"The object that should receive the workflow signal (must have an associated "
"workflow)"
msgstr ""
"O objecto que deve receber o sinal do fluxo de trabalho (deve ter um fluxo "
"de trabalho associado)"
#. module: base
#: model:ir.module.category,description:base.module_category_account_voucher
@ -13864,7 +13917,7 @@ msgstr "Espanha - Contabilidade (PGCE 2008)"
#. module: base
#: model:ir.module.module,shortdesc:base.module_stock_no_autopicking
msgid "Picking Before Manufacturing"
msgstr ""
msgstr "Recolha Antes da Produção"
#. module: base
#: model:res.country,name:base.wf
@ -14021,7 +14074,7 @@ msgstr "Erro"
#. module: base
#: model:ir.module.module,shortdesc:base.module_base_crypt
msgid "DB Password Encryption"
msgstr ""
msgstr "Encriptação da palavra-chave da BD"
#. module: base
#: help:workflow.transition,act_to:0
@ -14088,7 +14141,7 @@ msgstr "Ilhas do Natal"
#. module: base
#: model:ir.module.module,shortdesc:base.module_web_livechat
msgid "Live Chat Support"
msgstr ""
msgstr "Suporte por Conversação Online"
#. module: base
#: view:ir.actions.server:0
@ -14107,6 +14160,9 @@ msgid ""
" OpenERP Web dashboard view.\n"
" "
msgstr ""
"\n"
" OpenERP Web vista de painel.\n"
" "
#. module: base
#: view:res.partner:0
@ -14291,6 +14347,7 @@ msgstr "TLS (STARTTLS)"
#: help:ir.actions.act_window,usage:0
msgid "Used to filter menu and home actions from the user form."
msgstr ""
"Utilizado para filtrar menu e acções principais do formulário do utilizador"
#. module: base
#: model:res.country,name:base.sa
@ -14301,11 +14358,12 @@ msgstr "Arábia Saudita"
#: help:res.company,rml_header1:0
msgid "Appears by default on the top right corner of your printed documents."
msgstr ""
"Aparece por omissão no topo superior direito dos seus documentos impressos."
#. module: base
#: model:ir.module.module,shortdesc:base.module_fetchmail_crm_claim
msgid "eMail Gateway for CRM Claim"
msgstr ""
msgstr "Servidor de eMail para Reclamações do CRM"
#. module: base
#: help:res.partner,supplier:0
@ -14482,6 +14540,9 @@ msgid ""
" OpenERP Web calendar view.\n"
" "
msgstr ""
"\n"
" OpenERP Web vista de calendário.\n"
" "
#. module: base
#: model:ir.ui.menu,name:base.menu_crm_config_lead
@ -14509,6 +14570,8 @@ msgstr "E"
msgid ""
"Database identifier of the record to which this applies. 0 = for all records"
msgstr ""
"Identificador de base de dados do registo ao quali se aplica. 0 = todos os "
"registos"
#. module: base
#: field:ir.model.fields,relation:0
@ -14566,7 +14629,7 @@ msgstr "Recurso do Objeto"
#. module: base
#: model:ir.module.module,shortdesc:base.module_crm_helpdesk
msgid "Helpdesk"
msgstr ""
msgstr "Suporte"
#. module: base
#: model:ir.actions.act_window,help:base.grant_menu_access
@ -14591,7 +14654,7 @@ msgstr "Campos Descendentes"
#. module: base
#: view:ir.rule:0
msgid "Detailed algorithm:"
msgstr ""
msgstr "Algoritmo detalhado:"
#. module: base
#: field:ir.actions.act_window,usage:0
@ -14682,7 +14745,7 @@ msgstr "Alemanha - Contabilidade"
#. module: base
#: model:ir.module.module,shortdesc:base.module_auction
msgid "Auction Houses"
msgstr ""
msgstr "Casas de Leilão"
#. module: base
#: field:ir.ui.menu,web_icon:0
@ -14796,7 +14859,7 @@ msgstr "Aruba"
#: code:addons/base/module/wizard/base_module_import.py:60
#, python-format
msgid "File is not a zip file!"
msgstr ""
msgstr "O ficheiro não tem extensão .zip!"
#. module: base
#: model:res.country,name:base.ar
@ -14963,7 +15026,7 @@ msgstr ""
#: code:addons/orm.py:791
#, python-format
msgid "Serialization field `%s` not found for sparse field `%s`!"
msgstr ""
msgstr "O campo de serialização `%s` não foi encontrado para o campo `%s`!"
#. module: base
#: model:res.country,name:base.jm
@ -15004,7 +15067,7 @@ msgstr "Aviso"
#. module: base
#: model:ir.module.module,shortdesc:base.module_edi
msgid "Electronic Data Interchange (EDI)"
msgstr ""
msgstr "Interface Electrónico de Documentos (EDI)"
#. module: base
#: model:ir.module.category,name:base.module_category_tools
@ -15126,6 +15189,7 @@ msgstr ""
#: help:ir.mail_server,smtp_port:0
msgid "SMTP Port. Usually 465 for SSL, and 25 or 587 for other cases."
msgstr ""
"Porta SMTP. Normalmente 465 para SSL, e 25 ou 587 nos restantes casos."
#. module: base
#: view:ir.sequence:0
@ -15200,6 +15264,8 @@ msgid ""
"Helps you handle your accounting needs, if you are not an accountant, we "
"suggest you to install only the Invoicing."
msgstr ""
"Ajuda-o nas suas necessidades de contabilidade. Se não é um contabilista, "
"recomendamos a instalação apenas da facturação."
#. module: base
#: model:ir.module.module,shortdesc:base.module_plugin_thunderbird
@ -15222,7 +15288,7 @@ msgstr "País"
#. module: base
#: model:ir.module.module,shortdesc:base.module_project_messages
msgid "In-Project Messaging System"
msgstr ""
msgstr "Sistema de Mensagens intra Projecto"
#. module: base
#: model:res.country,name:base.pn
@ -15236,11 +15302,14 @@ msgid ""
" OpenERP Web test suite.\n"
" "
msgstr ""
"\n"
" OpenERP Web plataforma de teste.\n"
" "
#. module: base
#: view:ir.values:0
msgid "Action Bindings/Defaults"
msgstr ""
msgstr "Associação de Acções/Por Omissão"
#. module: base
#: view:ir.rule:0
@ -15534,7 +15603,7 @@ msgstr "Ilhas Turks e Caicos"
#. module: base
#: model:ir.module.module,shortdesc:base.module_fetchmail_project_issue
msgid "eMail Gateway for Project Issues"
msgstr ""
msgstr "Servidor de eMail para Tickets de Projecto"
#. module: base
#: field:res.partner.bank,partner_id:0
@ -15589,6 +15658,8 @@ msgid ""
"Manage relations with prospects and customers using leads, opportunities, "
"requests or issues."
msgstr ""
"Gira relacionamento com prospectos e cliente utilizando dicas oportunidade, "
"solicitações e pedidos de suporte."
#. module: base
#: selection:res.partner.address,type:0
@ -15706,6 +15777,8 @@ msgid ""
"This field is computed automatically based on bank accounts defined, having "
"the display on footer checkbox set."
msgstr ""
"Este campo é calculado automaticamente baseado nas contas bancárias "
"definidas, quando está seleccionada a opção de mostrar no footer."
#. module: base
#: model:ir.module.module,description:base.module_mrp_subproduct

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2012-01-31 16:57+0000\n"
"PO-Revision-Date: 2012-08-20 15:39+0000\n"
"Last-Translator: Peter Kohaut <peter.kohaut@gmail.com>\n"
"Language-Team: Slovak <sk@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:38+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:40+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2012-01-31 15:48+0000\n"
"PO-Revision-Date: 2012-08-20 15:52+0000\n"
"Last-Translator: Mustufa Rangwala (Open ERP) <mra@tinyerp.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:38+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:41+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh

View File

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

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2012-01-31 15:52+0000\n"
"PO-Revision-Date: 2012-08-20 15:30+0000\n"
"Last-Translator: Antony Lesuisse (OpenERP) <al@openerp.com>\n"
"Language-Team: Serbian <sr@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:38+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:40+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-server\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2012-02-15 22:07+0000\n"
"Last-Translator: zmmaj <Unknown>\n"
"PO-Revision-Date: 2012-08-20 15:35+0000\n"
"Last-Translator: OpenERP Administrators <Unknown>\n"
"Language-Team: Serbian latin <sr@latin@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:41+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:43+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh

File diff suppressed because it is too large Load Diff

View File

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

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2009-11-30 07:48+0000\n"
"Last-Translator: <>\n"
"PO-Revision-Date: 2012-07-10 17:36+0000\n"
"Last-Translator: Felix Malmenbeck <felixm@kth.se>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:39+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:41+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@ -24,7 +24,7 @@ msgstr ""
#. module: base
#: view:ir.actions.report.xml:0
msgid "Other Configuration"
msgstr ""
msgstr "latlh Qur"
#. module: base
#: selection:ir.property,type:0

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2012-02-09 21:13+0000\n"
"Last-Translator: Ahmet Altınışık <Unknown>\n"
"PO-Revision-Date: 2012-08-20 15:34+0000\n"
"Last-Translator: OpenERP Administrators <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:39+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:41+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@ -50,7 +50,7 @@ msgstr ""
#: field:ir.ui.view,arch:0
#: field:ir.ui.view.custom,arch:0
msgid "View Architecture"
msgstr "Mimari Görüntüleme"
msgstr "Görünüm Yapısı"
#. module: base
#: model:ir.module.module,description:base.module_project

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2012-01-31 16:43+0000\n"
"PO-Revision-Date: 2012-08-20 15:49+0000\n"
"Last-Translator: Antony Lesuisse (OpenERP) <al@openerp.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:39+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:41+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh

View File

@ -4551,7 +4551,7 @@ msgstr "html"
#. module: base
#: field:res.partner,vat:0
msgid "VAT"
msgid "TIN"
msgstr "ПДВ"
#. module: base
@ -5424,7 +5424,7 @@ msgstr "STOCK_MEDIA_PAUSE"
#. module: base
#: help:res.country.state,code:0
msgid "The state code in three chars.\n"
msgid "The state code in max. three chars."
""
msgstr ""

View File

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

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2011-11-05 03:38+0000\n"
"Last-Translator: Vuong Kien Hung <Unknown>\n"
"PO-Revision-Date: 2012-08-20 15:37+0000\n"
"Last-Translator: OpenERP Administrators <Unknown>\n"
"Language-Team: Vietnamese <vi@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:39+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2012-03-11 06:21+0000\n"
"PO-Revision-Date: 2012-08-20 15:29+0000\n"
"Last-Translator: Wei \"oldrev\" Li <oldrev@gmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:41+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:43+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh
@ -170,7 +170,7 @@ msgstr "过滤条件这个字段是可选输入的,用于在输入关系型字
#. module: base
#: field:res.partner,ref:0
msgid "Reference"
msgstr "引用"
msgstr "编号"
#. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_be_invoice_bba
@ -220,7 +220,7 @@ msgstr "约束错误"
#. module: base
#: model:ir.model,name:base.model_ir_ui_view_custom
msgid "ir.ui.view.custom"
msgstr "自定义视图"
msgstr "ir.ui.view.custom"
#. module: base
#: code:addons/base/ir/ir_model.py:313
@ -322,7 +322,7 @@ msgstr "字段长度"
#: model:ir.ui.menu,name:base.next_id_73
#: model:ir.ui.menu,name:base.reporting_menu
msgid "Reporting"
msgstr "报"
msgstr "报"
#. module: base
#: view:res.partner:0
@ -1043,7 +1043,7 @@ msgid ""
"If Value type is selected, the value will be used directly without "
"evaluation."
msgstr ""
"笔者哦是一个值定义。\n"
"表达式是一个值定义。\n"
"如果选择了公式类型此字段可以是一个Python语句可以使用服务器动作条件字段上的相同值。\n"
"如果选择了值类型,此值将被直接使用。"
@ -1576,7 +1576,7 @@ msgstr "报表"
msgid ""
"If set to true, the action will not be displayed on the right toolbar of a "
"form view."
msgstr "如果设为真,该动作将不会显示表单右侧的工具栏中。"
msgstr "如果设为真,该动作将不会显示表单右侧的工具栏中。"
#. module: base
#: field:workflow,on_create:0
@ -6134,7 +6134,7 @@ msgstr "易用性"
#: field:ir.actions.act_window,domain:0
#: field:ir.filters,domain:0
msgid "Domain Value"
msgstr "所有权价值"
msgstr "过滤条件值"
#. module: base
#: model:ir.module.module,shortdesc:base.module_base_module_quality
@ -9048,7 +9048,7 @@ msgstr "美属萨摩亚"
#. module: base
#: help:ir.actions.act_window,res_model:0
msgid "Model name of the object to open in the view window"
msgstr "模型对象的名称打开视图窗口"
msgstr "在视图中打开的模型对象的名称"
#. module: base
#: model:ir.module.module,description:base.module_caldav
@ -9137,6 +9137,7 @@ msgid ""
"use the same timezone that is otherwise used to pick and render date and "
"time values: your computer's timezone."
msgstr ""
"用户的时区为打印报表配置正确的日期时间输出格式。设置这个值是很重要的。你应该根据你的计算机时区来选取相同的时区,因为它也影响系统中日期的选取和呈现。"
#. module: base
#: help:res.country,name:0
@ -10215,6 +10216,9 @@ msgid ""
" OpenERP Web example module.\n"
" "
msgstr ""
"\n"
" OpenERP Web 示例模块。\n"
" "
#. module: base
#: model:res.country,name:base.gy
@ -10268,7 +10272,7 @@ msgstr ""
msgid ""
"View type: set to 'tree' for a hierarchical tree view, or 'form' for other "
"views"
msgstr "视图类型:设为“tree”来使用树形控件显示层次数据或者设为“form”使用其他类型视图。"
msgstr "视图类型:设为“树形列表”来使用树形控件显示层次数据,或者设为“表单”使用其他类型视图。"
#. module: base
#: code:addons/base/res/res_config.py:385
@ -11507,7 +11511,7 @@ msgstr "阿尔巴尼亚"
msgid ""
"Level of difficulty of module. Easy: intuitive and easy to use for everyone. "
"Normal: easy to use for business experts. Expert: requires technical skills."
msgstr ""
msgstr "模块难度。简单:直观、易于使用。普通:对商务专家来说易于使用。专家:需要技术能力。"
#. module: base
#: code:addons/base/res/res_lang.py:191
@ -11771,7 +11775,7 @@ msgstr "人事经理"
#: field:ir.rule,domain_force:0
#: field:res.partner.title,domain:0
msgid "Domain"
msgstr ""
msgstr "过滤条件"
#. module: base
#: model:ir.module.module,shortdesc:base.module_marketing_campaign
@ -11972,7 +11976,7 @@ msgid ""
"This wizard helps you to import a new module to your OpenERP system. After "
"importing a new module you can install it by clicking on the button "
"\"Install\" from the form view."
msgstr ""
msgstr "此向导帮助您向 OpenERP 系统中导入一个新模块。模块导入后,您可以通过点击表单视图上的\"安装\"按钮进行安装。"
#. module: base
#: model:res.country,name:base.ch
@ -12952,7 +12956,7 @@ msgstr "哥斯达黎加"
#. module: base
#: model:ir.module.module,shortdesc:base.module_base_module_doc_rst
msgid "Generate Docs of Modules"
msgstr ""
msgstr "生成模块文档"
#. module: base
#: model:res.company,overdue_msg:base.main_company
@ -12968,7 +12972,7 @@ msgstr ""
#. module: base
#: model:ir.module.module,shortdesc:base.module_users_ldap
msgid "Authentication via LDAP"
msgstr ""
msgstr "使用 LDAP 认证"
#. module: base
#: view:workflow.activity:0
@ -13055,7 +13059,7 @@ msgstr ""
#. module: base
#: view:ir.rule:0
msgid "Rule definition (domain filter)"
msgstr ""
msgstr "规则定义(过滤条件)"
#. module: base
#: model:ir.model,name:base.model_workflow_instance
@ -13159,7 +13163,7 @@ msgstr ""
#. module: base
#: field:res.country,address_format:0
msgid "Address Format"
msgstr ""
msgstr "地址格式"
#. module: base
#: model:ir.model,name:base.model_ir_values
@ -13543,7 +13547,7 @@ msgstr ""
#. module: base
#: field:res.partner.bank,acc_number:0
msgid "Account Number"
msgstr "科目编号"
msgstr "银行账号"
#. module: base
#: view:ir.rule:0
@ -13964,7 +13968,7 @@ msgid ""
"The default language used in the graphical user interface, when translations "
"are available. To add a new language, you can use the 'Load an Official "
"Translation' wizard available from the 'Administration' menu."
msgstr ""
msgstr "选可用的翻译作为图形界面的默认语言。你可以通过设置菜单的载入一个官方翻译来添加一个新翻译"
#. module: base
#: model:ir.module.module,description:base.module_l10n_es
@ -14978,7 +14982,7 @@ msgstr "您不能删除字段 '%s' !"
#. module: base
#: view:res.users:0
msgid "Allowed Companies"
msgstr ""
msgstr "允许的公司"
#. module: base
#: model:ir.module.module,shortdesc:base.module_l10n_de
@ -15864,7 +15868,7 @@ msgstr "%r 错误的浏览记录标识符,其应该为一个整数。"
#: field:res.partner.address,function:0
#: selection:workflow.activity,kind:0
msgid "Function"
msgstr "能"
msgstr "能"
#. module: base
#: view:res.widget:0

View File

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

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-02-08 00:44+0000\n"
"PO-Revision-Date: 2012-01-31 16:14+0000\n"
"PO-Revision-Date: 2012-08-20 15:41+0000\n"
"Last-Translator: Walter Cheuk <wwycheuk@gmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 05:41+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-09-20 04:42+0000\n"
"X-Generator: Launchpad (build 15985)\n"
#. module: base
#: model:res.country,name:base.sh

View File

@ -20,6 +20,8 @@
##############################################################################
import ir_model
import ir_model_constraint
import ir_model_relation
import ir_sequence
import ir_needaction
import ir_ui_menu

File diff suppressed because it is too large Load Diff

View File

@ -35,6 +35,7 @@ from tools.config import config
from tools.safe_eval import safe_eval as eval
from tools.translate import _
from socket import gethostname
from openerp import SUPERUSER_ID
_logger = logging.getLogger(__name__)
@ -43,7 +44,7 @@ class actions(osv.osv):
_table = 'ir_actions'
_order = 'name'
_columns = {
'name': fields.char('Action Name', required=True, size=64),
'name': fields.char('Name', size=64, required=True),
'type': fields.char('Action Type', required=True, size=32,readonly=True),
'usage': fields.char('Action Usage', size=32),
}
@ -203,59 +204,13 @@ class act_window(osv.osv):
def _search_view(self, cr, uid, ids, name, arg, context=None):
res = {}
def encode(s):
if isinstance(s, unicode):
return s.encode('utf8')
return s
for act in self.browse(cr, uid, ids, context=context):
fields_from_fields_get = self.pool.get(act.res_model).fields_get(cr, uid, context=context)
search_view_id = False
if act.search_view_id:
search_view_id = act.search_view_id.id
else:
res_view = self.pool.get('ir.ui.view').search(cr, uid,
[('model','=',act.res_model),('type','=','search'),
('inherit_id','=',False)], context=context)
if res_view:
search_view_id = res_view[0]
if search_view_id:
field_get = self.pool.get(act.res_model).fields_view_get(cr, uid, search_view_id,
'search', context)
fields_from_fields_get.update(field_get['fields'])
field_get['fields'] = fields_from_fields_get
res[act.id] = str(field_get)
else:
def process_child(node, new_node, doc):
for child in node.childNodes:
if child.localName=='field' and child.hasAttribute('select') \
and child.getAttribute('select')=='1':
if child.childNodes:
fld = doc.createElement('field')
for attr in child.attributes.keys():
fld.setAttribute(attr, child.getAttribute(attr))
new_node.appendChild(fld)
else:
new_node.appendChild(child)
elif child.localName in ('page','group','notebook'):
process_child(child, new_node, doc)
form_arch = self.pool.get(act.res_model).fields_view_get(cr, uid, False, 'form', context)
dom_arc = dom.minidom.parseString(encode(form_arch['arch']))
new_node = copy.deepcopy(dom_arc)
for child_node in new_node.childNodes[0].childNodes:
if child_node.nodeType == child_node.ELEMENT_NODE:
new_node.childNodes[0].removeChild(child_node)
process_child(dom_arc.childNodes[0],new_node.childNodes[0],dom_arc)
form_arch['arch'] = new_node.toxml()
form_arch['fields'].update(fields_from_fields_get)
res[act.id] = str(form_arch)
field_get = self.pool.get(act.res_model).fields_view_get(cr, uid,
act.search_view_id and act.search_view_id.id or False,
'search', context=context)
res[act.id] = str(field_get)
return res
def _get_help_status(self, cr, uid, ids, name, arg, context=None):
activate_tips = self.pool.get('res.users').browse(cr, uid, uid).menu_tips
return dict([(id, activate_tips) for id in ids])
_columns = {
'name': fields.char('Action Name', size=64, translate=True),
'type': fields.char('Action Type', size=32, required=True),
@ -264,15 +219,16 @@ class act_window(osv.osv):
help="Optional domain filtering of the destination data, as a Python expression"),
'context': fields.char('Context Value', size=250, required=True,
help="Context dictionary as Python expression, empty by default (Default: {})"),
'res_model': fields.char('Object', size=64, required=True,
'res_id': fields.integer('Record ID', help="Database ID of record to open in form view, when ``view_mode`` is set to 'form' only"),
'res_model': fields.char('Destination Model', size=64, required=True,
help="Model name of the object to open in the view window"),
'src_model': fields.char('Source Object', size=64,
'src_model': fields.char('Source Model', size=64,
help="Optional model name of the objects on which this action should be visible"),
'target': fields.selection([('current','Current Window'),('new','New Window'),('inline','Inline')], 'Target Window'),
'view_type': fields.selection((('tree','Tree'),('form','Form')), string='View Type', required=True,
help="View type: set to 'tree' for a hierarchical tree view, or 'form' for other views"),
'target': fields.selection([('current','Current Window'),('new','New Window'),('inline','Inline Edit'),('inlineview','Inline View')], 'Target Window'),
'view_mode': fields.char('View Mode', size=250, required=True,
help="Comma-separated list of allowed view modes, such as 'form', 'tree', 'calendar', etc. (Default: tree,form)"),
'view_type': fields.selection((('tree','Tree'),('form','Form')), string='View Type', required=True,
help="View type: Tree type to use for the tree view, set to 'tree' for a hierarchical tree view, or 'form' for a regular list view"),
'usage': fields.char('Action Usage', size=32,
help="Used to filter menu and home actions from the user form."),
'view_ids': fields.one2many('ir.actions.act_window.view', 'act_window_id', 'Views'),
@ -292,8 +248,6 @@ class act_window(osv.osv):
'help': fields.text('Action description',
help='Optional help text for the users with a description of the target view, such as its usage and purpose.',
translate=True),
'display_menu_tip':fields.function(_get_help_status, type='boolean', string='Display Menu Tips',
help='It gives the status if the tip has to be displayed or not when a user executes an action'),
'multi': fields.boolean('Action on Multiple Doc.', help="If set to true, the action will not be displayed on the right toolbar of a form view"),
}
@ -318,7 +272,7 @@ class act_window(osv.osv):
:return: A read() view of the ir.actions.act_window
"""
dataobj = self.pool.get('ir.model.data')
data_id = dataobj._get_id (cr, 1, module, xml_id)
data_id = dataobj._get_id (cr, SUPERUSER_ID, module, xml_id)
res_id = dataobj.browse(cr, uid, data_id, context).res_id
return self.read(cr, uid, res_id, [], context)
@ -619,7 +573,7 @@ class actions_server(osv.osv):
# ids : original ids
# id : current id of the object
# OUT:
# False : Finnished correctly
# False : Finished correctly
# ACTION_ID : Action to launch
# FIXME: refactor all the eval() calls in run()!
@ -672,8 +626,8 @@ class actions_server(osv.osv):
if not email_from:
_logger.debug('--email-from command line option is not specified, using a fallback value instead.')
if user.user_email:
email_from = user.user_email
if user.email:
email_from = user.email
else:
email_from = "%s@%s" % (user.login, gethostname())
@ -796,20 +750,6 @@ class act_window_close(osv.osv):
}
act_window_close()
class ir_actions_todo_category(osv.osv):
"""
Category of Configuration Wizards
"""
_name = 'ir.actions.todo.category'
_description = "Configuration Wizard Category"
_columns = {
'name':fields.char('Name', size=64, translate=True, required=True),
'sequence': fields.integer('Sequence'),
'wizards_ids': fields.one2many('ir.actions.todo', 'category_id', 'Configuration Wizards'),
}
ir_actions_todo_category()
# This model use to register action services.
TODO_STATES = [('open', 'To Do'),
('done', 'Done')]
@ -823,25 +763,23 @@ class ir_actions_todo(osv.osv):
_description = "Configuration Wizards"
_columns={
'action_id': fields.many2one(
'ir.actions.act_window', 'Action', select=True, required=True,
ondelete='cascade'),
'ir.actions.actions', 'Action', select=True, required=True),
'sequence': fields.integer('Sequence'),
'state': fields.selection(TODO_STATES, string='State', required=True),
'name': fields.char('Name', size=64),
'type': fields.selection(TODO_TYPES, 'Type', required=True,
help="""Manual: Launched manually.
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'),
'note': fields.text('Text', translate=True),
'category_id': fields.many2one('ir.actions.todo.category','Category'),
}
_defaults={
'state': 'open',
'sequence': 10,
'type': 'manual',
}
_order="sequence,name,id"
_order="sequence,id"
def action_launch(self, cr, uid, ids, context=None):
""" Launch Action of Wizard"""
@ -851,7 +789,11 @@ Launch Manually Once: after hacing been launched manually, it sets automatically
wizard.write({'state': 'done'})
# Load action
res = self.pool.get('ir.actions.act_window').read(cr, uid, wizard.action_id.id, [], context=context)
act_type = self.pool.get('ir.actions.actions').read(cr, uid, wizard.action_id.id, ['type'], context=context)
res = self.pool.get(act_type['type']).read(cr, uid, wizard.action_id.id, [], context=context)
if act_type<>'ir.actions.act_window':
return res
res.setdefault('context','{}')
res['nodestroy'] = True
@ -919,21 +861,27 @@ class act_client(osv.osv):
_order = 'name'
def _get_params(self, cr, uid, ids, field_name, arg, context):
return dict([
((record.id, ast.literal_eval(record.params_store))
if record.params_store else (record.id, False))
for record in self.browse(cr, uid, ids, context=context)
])
result = {}
for record in self.browse(cr, uid, ids, context=context):
result[record.id] = record.params_store and eval(record.params_store, {'uid': uid}) or False
return result
def _set_params(self, cr, uid, id, field_name, field_value, arg, context):
assert isinstance(field_value, dict), "params can only be dictionaries"
self.write(cr, uid, id, {'params_store': repr(field_value)}, context=context)
if isinstance(field_value, dict):
self.write(cr, uid, id, {'params_store': repr(field_value)}, context=context)
else:
self.write(cr, uid, id, {'params_store': field_value}, context=context)
_columns = {
'name': fields.char('Action Name', required=True, size=64, translate=True),
'tag': fields.char('Client action tag', size=64, required=True,
help="An arbitrary string, interpreted by the client"
" according to its own needs and wishes. There "
"is no central tag repository across clients."),
'res_model': fields.char('Destination Model', size=64,
help="Optional model, mostly used for needactions."),
'context': fields.char('Context Value', size=250, required=True,
help="Context dictionary as Python expression, empty by default (Default: {})"),
'params': fields.function(_get_params, fnct_inv=_set_params,
type='binary',
string="Supplementary arguments",
@ -943,6 +891,7 @@ class act_client(osv.osv):
}
_defaults = {
'type': 'ir.actions.client',
'context': '{}',
}
act_client()

View File

@ -26,6 +26,7 @@ from osv import osv,fields
import uuid
import datetime
from tools import misc, config
from openerp import SUPERUSER_ID
"""
A dictionary holding some configuration parameters to be initialized when the database is created.
@ -55,9 +56,9 @@ class ir_config_parameter(osv.osv):
Initializes the parameters listed in _default_parameters.
"""
for key, func in _default_parameters.iteritems():
ids = self.search(cr, 1, [('key','=',key)])
ids = self.search(cr, SUPERUSER_ID, [('key','=',key)])
if not ids:
self.set_param(cr, 1, key, func())
self.set_param(cr, SUPERUSER_ID, key, func())
def get_param(self, cr, uid, key, default=False, context=None):
"""Retrieve the value for a given key.

View File

@ -1,13 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record model="ir.ui.view" id="view_ir_config_search">
<field name="name">ir.config_parameter.search</field>
<field name="model">ir.config_parameter</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="System Properties">
<field name="key"/>
<field name="key" string="Key"/>
<field name="value"/>
</search>
</field>
@ -15,7 +15,6 @@
<record model="ir.ui.view" id="view_ir_config_list">
<field name="name">ir.config_parameter.list</field>
<field name="model">ir.config_parameter</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="System Parameters">
<field name="key"/>
@ -26,17 +25,19 @@
<record model="ir.ui.view" id="view_ir_config_form">
<field name="name">ir.config_parameter.form</field>
<field name="model">ir.config_parameter</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="System Parameters">
<field name="key" colspan="4"/>
<field name="value" colspan="4"/>
<form string="System Parameters" version="7.0">
<sheet>
<group>
<field name="key"/>
<field name="value"/>
</group>
</sheet>
</form>
</field>
</record>
<act_window name="System Parameters" res_model="ir.config_parameter" id="ir_config_list_action"/>
<menuitem name="System Parameters" id="ir_config_menu"
parent="base.next_id_4" action="ir_config_list_action" groups="base.group_no_one"/>
<menuitem id="ir_config_menu" name="System Parameters" parent="menu_ir_property" action="ir_config_list_action"/>
</data>
</openerp>

View File

@ -266,6 +266,105 @@ class ir_cron(osv.osv):
cr.commit()
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):
""" 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

View File

@ -14,20 +14,19 @@
<record id="ir_filters_view_form" model="ir.ui.view">
<field name="name">ir.filters.form</field>
<field name="model">ir.filters</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Filters">
<group colspan="4" col="6" >
<form string="Filters" version="7.0">
<sheet>
<group col="4">
<field name="name"/>
<field name="model_id"/>
<field name="user_id"/>
<field name="model_id"/>
</group>
<group col="4" expand="1">
<separator string="Domain" colspan="2" />
<separator string="Context" colspan="2" />
<field name="domain" nolabel="1" colspan="2"/>
<field name="context" nolabel="1" colspan="2"/>
<group>
<field name="domain"/>
<field name="context"/>
</group>
</sheet>
</form>
</field>
</record>
@ -35,7 +34,6 @@
<record id="ir_filters_view_tree" model="ir.ui.view">
<field name="name">ir.filters.tree</field>
<field name="model">ir.filters</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Filters">
<field name="name"/>
@ -50,19 +48,17 @@
<record id="ir_filters_view_search" model="ir.ui.view">
<field name="name">ir.filters.search</field>
<field name="model">ir.filters</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Filters">
<field name="name" string="Filter Name"/>
<filter string="Personal" domain="[('user_id','!=',False)]" help="Filters visible only for one user"/>
<filter string="Shared" domain="[('user_id','=',False)]" help="Filters shared with all users"/>
<separator orientation="vertical"/>
<field name="name"/>
<separator/>
<filter icon="terp-personal" domain="[('user_id','in',(uid, False))]"
name="my_filters"
string="My Filters"/>
<field name="model_id"/>
<field name="user_id">
<filter icon="terp-personal" domain="[('user_id','in',(uid, False))]"
name="my_filters"
string="My Filters" />
</field>
<field name="user_id"/>
</search>
</field>
</record>
@ -76,4 +72,4 @@
<menuitem parent="base.next_id_2" name="User-defined Filters"
id="menu_ir_filters" action="actions_ir_filters_view" sequence="5"/>
</data>
</openerp>
</openerp>

View File

@ -161,7 +161,7 @@ def encode_rfc2822_address_header(header_text):
class ir_mail_server(osv.osv):
"""Represents an SMTP server, able to send outgoing e-mails, with SSL and TLS capabilities."""
"""Represents an SMTP server, able to send outgoing emails, with SSL and TLS capabilities."""
_name = "ir.mail_server"
_columns = {
@ -396,7 +396,7 @@ class ir_mail_server(osv.osv):
MailDeliveryException and logs root cause.
"""
smtp_from = message['Return-Path'] or message['From']
assert smtp_from, "The Return-Path or From header is required for any outbound e-mail"
assert smtp_from, "The Return-Path or From header is required for any outbound email"
# The email's "Envelope From" (Return-Path), and all recipient addresses must only contain ASCII characters.
from_rfc2822 = extract_rfc2822_addresses(smtp_from)

View File

@ -29,8 +29,7 @@ from openerp import netsvc, pooler, tools
from openerp.tools.safe_eval import safe_eval as eval
from openerp.tools import config
from openerp.tools.translate import _
from openerp.osv.orm import except_orm, browse_record, EXT_ID_PREFIX_FK, \
EXT_ID_PREFIX_M2M_TABLE, EXT_ID_PREFIX_CONSTRAINT
from openerp.osv.orm import except_orm, browse_record
_logger = logging.getLogger(__name__)
@ -97,9 +96,9 @@ class ir_model(osv.osv):
'field_id': fields.one2many('ir.model.fields', 'model_id', 'Fields', required=True),
'state': fields.selection([('manual','Custom Object'),('base','Base Object')],'Type',readonly=True),
'access_ids': fields.one2many('ir.model.access', 'model_id', 'Access'),
'osv_memory': fields.function(_is_osv_memory, string='In-Memory Model', type='boolean',
'osv_memory': fields.function(_is_osv_memory, string='Transient Model', type='boolean',
fnct_search=_search_osv_memory,
help="Indicates whether this object model lives in memory only, i.e. is not persisted (osv.osv_memory)"),
help="This field specifies whether the model is transient or not (i.e. if records are automatically deleted from the database or not)"),
'modules': fields.function(_in_modules, type='char', size=128, string='In Modules', help='List of modules in which the object is defined or inherited'),
'view_ids': fields.function(_view_ids, type='one2many', obj='ir.ui.view', string='Views'),
}
@ -179,14 +178,15 @@ class ir_model(osv.osv):
def create(self, cr, user, vals, context=None):
if context is None:
context = {}
if context and context.get('manual',False):
if context and context.get('manual'):
vals['state']='manual'
res = super(ir_model,self).create(cr, user, vals, context)
if vals.get('state','base')=='manual':
self.instanciate(cr, user, vals['model'], context)
self.pool.get(vals['model']).__init__(self.pool, cr)
ctx = context.copy()
ctx.update({'field_name':vals['name'],'field_state':'manual','select':vals.get('select_level','0')})
ctx = dict(context,
field_name=vals['name'],
field_state='manual',
select=vals.get('select_level', '0'))
self.pool.get(vals['model'])._auto_init(cr, ctx)
#pooler.restart_pool(cr.dbname)
return res
@ -197,7 +197,9 @@ class ir_model(osv.osv):
x_custom_model._name = model
x_custom_model._module = False
a = x_custom_model.create_instance(self.pool, cr)
if (not a._columns) or ('x_name' in a._columns.keys()):
if not a._columns:
x_name = 'id'
elif 'x_name' in a._columns.keys():
x_name = 'x_name'
else:
x_name = a._columns.keys()[0]
@ -226,7 +228,7 @@ class ir_model_fields(osv.osv):
'required': fields.boolean('Required'),
'readonly': fields.boolean('Readonly'),
'select_level': fields.selection([('0','Not Searchable'),('1','Always Searchable'),('2','Advanced Search (deprecated)')],'Searchable', required=True),
'translate': fields.boolean('Translate', help="Whether values for this field can be translated (enables the translation mechanism for that field)"),
'translate': fields.boolean('Translatable', help="Whether values for this field can be translated (enables the translation mechanism for that field)"),
'size': fields.integer('Size'),
'state': fields.selection([('manual','Custom Field'),('base','Base Field')],'Type', required=True, readonly=True, select=1),
'on_delete': fields.selection([('cascade','Cascade'),('set null','Set NULL')], 'On Delete', help='On delete property for many2one fields'),
@ -336,8 +338,11 @@ class ir_model_fields(osv.osv):
if self.pool.get(vals['model']):
self.pool.get(vals['model']).__init__(self.pool, cr)
#Added context to _auto_init for special treatment to custom field for select_level
ctx = context.copy()
ctx.update({'field_name':vals['name'],'field_state':'manual','select':vals.get('select_level','0'),'update_custom_fields':True})
ctx = dict(context,
field_name=vals['name'],
field_state='manual',
select=vals.get('select_level', '0'),
update_custom_fields=True)
self.pool.get(vals['model'])._auto_init(cr, ctx)
return res
@ -447,8 +452,8 @@ class ir_model_fields(osv.osv):
# was called earlier, they will be in-sync before the _auto_init.
# Anything we don't update in _columns now will be reset from
# the model into ir.model.fields (db).
ctx = context.copy()
ctx.update({'select': vals.get('select_level','0'),'update_custom_fields':True})
ctx = dict(context, select=vals.get('select_level', '0'),
update_custom_fields=True)
for __, patch_struct in models_patch.items():
obj = patch_struct[0]
@ -463,6 +468,7 @@ class ir_model_access(osv.osv):
_name = 'ir.model.access'
_columns = {
'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'),
'group_id': fields.many2one('res.groups', 'Group', ondelete='cascade', select=True),
'perm_read': fields.boolean('Read Access'),
@ -470,6 +476,9 @@ class ir_model_access(osv.osv):
'perm_create': fields.boolean('Create Access'),
'perm_unlink': fields.boolean('Delete Access'),
}
_defaults = {
'active': True,
}
def check_groups(self, cr, uid, group):
grouparr = group.split('.')
@ -494,14 +503,16 @@ class ir_model_access(osv.osv):
cr.execute("SELECT perm_" + mode + " "
" FROM ir_model_access a "
" 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()
if r is None:
cr.execute("SELECT perm_" + mode + " "
" FROM ir_model_access a "
" 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()
@ -518,15 +529,17 @@ class ir_model_access(osv.osv):
"""
assert access_mode in ['read','write','create','unlink'], 'Invalid access mode: %s' % access_mode
cr.execute('''SELECT
g.name
c.name, g.name
FROM
ir_model_access a
JOIN ir_model m ON (a.model_id=m.id)
JOIN res_groups g ON (a.group_id=g.id)
LEFT JOIN ir_module_category c ON (c.id=g.category_id)
WHERE
m.model=%s AND
a.active IS True AND
a.perm_''' + access_mode, (model_name,))
return [x[0] for x in cr.fetchall()]
return [('%s/%s' % x) if x[0] else x[1] for x in cr.fetchall()]
@tools.ormcache()
def check(self, cr, uid, model, mode='read', raise_exception=True, context=None):
@ -554,6 +567,7 @@ class ir_model_access(osv.osv):
' JOIN res_groups_users_rel gu ON (gu.gid = a.group_id) '
' WHERE m.model = %s '
' AND gu.uid = %s '
' AND a.active IS True '
, (model_name, uid,)
)
r = cr.fetchone()[0]
@ -565,20 +579,29 @@ class ir_model_access(osv.osv):
' JOIN ir_model m ON (m.id = a.model_id) '
' WHERE a.group_id IS NULL '
' AND m.model = %s '
' AND a.active IS True '
, (model_name,)
)
r = cr.fetchone()[0]
if not r and raise_exception:
groups = ', '.join(self.group_names_with_access(cr, model_name, mode)) or '/'
msgs = {
'read': _("You can not read this document (%s) ! Be sure your user belongs to one of these groups: %s."),
'write': _("You can not write in this document (%s) ! Be sure your user belongs to one of these groups: %s."),
'create': _("You can not create this document (%s) ! Be sure your user belongs to one of these groups: %s."),
'unlink': _("You can not delete this document (%s) ! Be sure your user belongs to one of these groups: %s."),
groups = '\n\t'.join('- %s' % g for g in self.group_names_with_access(cr, model_name, mode))
msg_heads = {
# Messages are declared in extenso so they are properly exported in translation terms
'read': _("Sorry, you are not allowed to access this document."),
'write': _("Sorry, you are not allowed to modify this document."),
'create': _("Sorry, you are not allowed to create this kind of document."),
'unlink': _("Sorry, you are not allowed to delete this document."),
}
raise except_orm(_('AccessError'), msgs[mode] % (model_name, groups) )
if groups:
msg_tail = _("Only users with the following access level are currently allowed to do that") + ":\n%s\n\n(" + _("Document model") + ": %s)"
msg_params = (groups, model_name)
else:
msg_tail = _("Please contact your system administrator if you think this is an error.") + "\n\n(" + _("Document model") + ": %s)"
msg_params = (model_name,)
_logger.warning('Access Denied by ACLs for operation: %s, uid: %s, model: %s', mode, uid, model_name)
msg = '%s %s' % (msg_heads[mode], msg_tail)
raise except_orm(_('Access Denied'), msg % msg_params)
return r or False
__cache_clearing_methods = []
@ -633,10 +656,37 @@ class ir_model_data(osv.osv):
"""
_name = 'ir.model.data'
_order = 'module,model,name'
def _display_name_get(self, cr, uid, ids, prop, unknow_none, context=None):
result = {}
result2 = {}
for res in self.browse(cr, uid, ids, context=context):
if res.id:
result.setdefault(res.model, {})
result[res.model][res.res_id] = res.id
result2[res.id] = False
for model in result:
try:
r = dict(self.pool.get(model).name_get(cr, uid, result[model].keys(), context=context))
for key,val in result[model].items():
result2[val] = r.get(key, False)
except:
# some object have no valid name_get implemented, we accept this
pass
return result2
def _complete_name_get(self, cr, uid, ids, prop, unknow_none, context=None):
result = {}
for res in self.browse(cr, uid, ids, context=context):
result[res.id] = (res.module and (res.module + '.') or '')+res.name
return result
_columns = {
'name': fields.char('External Identifier', required=True, size=128, select=1,
help="External Key/Identifier that can be used for "
"data integration with third-party systems"),
'complete_name': fields.function(_complete_name_get, type='char', string='Complete ID'),
'display_name': fields.function(_display_name_get, type='char', string='Record Name'),
'model': fields.char('Model Name', required=True, size=64, select=1),
'module': fields.char('Module', required=True, size=64, select=1),
'res_id': fields.integer('Record ID', select=1,
@ -790,20 +840,16 @@ class ir_model_data(osv.osv):
'res_id': inherit_id.id,
'noupdate': noupdate,
},context=context)
if xml_id:
if res_id:
self.loads[(module, xml_id)] = (model, res_id)
if model_obj._inherits:
for table in model_obj._inherits:
inherit_field = model_obj._inherits[table]
inherit_id = model_obj.read(cr, uid, res_id,
[inherit_field])[inherit_field]
self.loads[(module, xml_id + '_' + \
table.replace('.', '_'))] = (table, inherit_id)
if xml_id and res_id:
self.loads[(module, xml_id)] = (model, res_id)
for table, inherit_field in model_obj._inherits.iteritems():
inherit_id = model_obj.read(cr, uid, res_id,
[inherit_field])[inherit_field]
self.loads[(module, xml_id + '_' + table.replace('.', '_'))] = (table, inherit_id)
return res_id
def ir_set(self, cr, uid, key, key2, name, models, value, replace=True, isobject=False, meta=None, xml_id=False):
if type(models[0])==type([]) or type(models[0])==type(()):
if isinstance(models[0], (list, tuple)):
model,res_id = models[0]
else:
res_id=None
@ -823,12 +869,12 @@ class ir_model_data(osv.osv):
res = cr.fetchone()
if not res:
ir_values_obj = pooler.get_pool(cr.dbname).get('ir.values')
res = ir_values_obj.set(cr, uid, key, key2, name, models, value, replace, isobject, meta)
ir_values_obj.set(cr, uid, key, key2, name, models, value, replace, isobject, meta)
elif xml_id:
cr.execute('UPDATE ir_values set value=%s WHERE model=%s and key=%s and name=%s'+where,(value, model, key, name))
return True
def _module_data_uninstall(self, cr, uid, ids, context=None):
def _module_data_uninstall(self, cr, uid, modules_to_remove, context=None):
"""Deletes all the records referenced by the ir.model.data entries
``ids`` along with their corresponding database backed (including
dropping tables, columns, FKs, etc, as long as there is no other
@ -839,6 +885,8 @@ class ir_model_data(osv.osv):
This step is performed as part of the full uninstallation of a module.
"""
ids = self.search(cr, uid, [('module', 'in', modules_to_remove)])
if uid != 1 and not self.pool.get('ir.model.access').check_groups(cr, uid, "base.group_system"):
raise except_orm(_('Permission Denied'), (_('Administrator access is required to uninstall a module')))
@ -848,50 +896,11 @@ class ir_model_data(osv.osv):
ids_set = set(ids)
wkf_todo = []
to_unlink = []
to_drop_table = []
ids.sort()
ids.reverse()
for data in self.browse(cr, uid, ids, context):
model = data.model
res_id = data.res_id
model_obj = self.pool.get(model)
name = tools.ustr(data.name)
if name.startswith(EXT_ID_PREFIX_FK) or name.startswith(EXT_ID_PREFIX_M2M_TABLE)\
or name.startswith(EXT_ID_PREFIX_CONSTRAINT):
# double-check we are really going to delete all the owners of this schema element
cr.execute("""SELECT id from ir_model_data where name = %s and res_id IS NULL""", (data.name,))
external_ids = [x[0] for x in cr.fetchall()]
if (set(external_ids)-ids_set):
# as installed modules have defined this element we must not delete it!
continue
if name.startswith(EXT_ID_PREFIX_FK):
name = name[len(EXT_ID_PREFIX_FK):]
# test if FK exists on this table (it could be on a related m2m table, in which case we ignore it)
cr.execute("""SELECT 1 from pg_constraint cs JOIN pg_class cl ON (cs.conrelid = cl.oid)
WHERE cs.contype=%s and cs.conname=%s and cl.relname=%s""", ('f', name, model_obj._table))
if cr.fetchone():
cr.execute('ALTER TABLE "%s" DROP CONSTRAINT "%s"' % (model_obj._table, name),)
_logger.info('Dropped FK CONSTRAINT %s@%s', name, model)
continue
if name.startswith(EXT_ID_PREFIX_M2M_TABLE):
name = name[len(EXT_ID_PREFIX_M2M_TABLE):]
cr.execute("SELECT 1 FROM information_schema.tables WHERE table_name=%s", (name,))
if cr.fetchone() and not name in to_drop_table:
to_drop_table.append(name)
continue
if name.startswith(EXT_ID_PREFIX_CONSTRAINT):
name = name[len(EXT_ID_PREFIX_CONSTRAINT):]
# test if constraint exists
cr.execute("""SELECT 1 from pg_constraint cs JOIN pg_class cl ON (cs.conrelid = cl.oid)
WHERE cs.contype=%s and cs.conname=%s and cl.relname=%s""", ('u', name, model_obj._table))
if cr.fetchone():
cr.execute('ALTER TABLE "%s" DROP CONSTRAINT "%s"' % (model_obj._table, name),)
_logger.info('Dropped CONSTRAINT %s@%s', name, model)
continue
pair_to_unlink = (model, res_id)
if pair_to_unlink not in to_unlink:
@ -909,24 +918,19 @@ class ir_model_data(osv.osv):
for model,res_id in wkf_todo:
try:
wf_service.trg_write(uid, model, res_id, cr)
except:
_logger.info('Unable to force processing of workflow for item %s@%s in order to leave activity to be deleted', res_id, model)
# drop m2m relation tables
for table in to_drop_table:
cr.execute('DROP TABLE %s CASCADE'% (table),)
_logger.info('Dropped table %s', table)
except Exception:
_logger.info('Unable to force processing of workflow for item %s@%s in order to leave activity to be deleted', res_id, model, exc_info=True)
def unlink_if_refcount(to_unlink):
for model, res_id in to_unlink:
external_ids = self.search(cr, uid, [('model', '=', model),('res_id', '=', res_id)])
if (set(external_ids)-ids_set):
if set(external_ids)-ids_set:
# if other modules have defined this record, we must not delete it
return
continue
_logger.info('Deleting %s@%s', res_id, model)
try:
self.pool.get(model).unlink(cr, uid, [res_id], context=context)
except:
except Exception:
_logger.info('Unable to delete %s@%s', res_id, model, exc_info=True)
# Remove non-model records first, then model fields, and finish with models
@ -934,11 +938,21 @@ class ir_model_data(osv.osv):
if model not in ('ir.model','ir.model.fields'))
unlink_if_refcount((model, res_id) for model, res_id in to_unlink
if model == 'ir.model.fields')
ir_model_relation = self.pool.get('ir.model.relation')
relation_ids = ir_model_relation.search(cr, uid, [('module', 'in', modules_to_remove)])
ir_module_module = self.pool.get('ir.module.module')
modules_to_remove_ids = ir_module_module.search(cr, uid, [('name', 'in', modules_to_remove)])
relation_ids = ir_model_relation.search(cr, uid, [('module', 'in', modules_to_remove_ids)])
ir_model_relation._module_data_uninstall(cr, uid, relation_ids, context)
unlink_if_refcount((model, res_id) for model, res_id in to_unlink
if model == 'ir.model')
cr.commit()
self.unlink(cr, uid, ids, context)
def _process_end(self, cr, uid, modules):
""" Clear records removed from updated module data.
This method is called at the end of the module loading process.

View File

@ -0,0 +1,77 @@
import logging
import openerp
from openerp import SUPERUSER_ID
from openerp.osv import fields
from openerp.osv.orm import Model
_logger = logging.getLogger(__name__)
class ir_model_constraint(Model):
"""
This model tracks PostgreSQL foreign keys and constraints used by OpenERP
models.
"""
_name = 'ir.model.constraint'
_columns = {
'name': fields.char('Constraint', required=True, size=128, select=1,
help="PostgreSQL constraint or foreign key name."),
'model': fields.many2one('ir.model', string='Model',
required=True, select=1),
'module': fields.many2one('ir.module.module', string='Module',
required=True, select=1),
'type': fields.char('Constraint Type', required=True, size=1, select=1,
help="Type of the constraint: `f` for a foreign key, "
"`u` for other constraints."),
'date_update': fields.datetime('Update Date'),
'date_init': fields.datetime('Initialization Date')
}
_sql_constraints = [
('module_name_uniq', 'unique(name, module)',
'Constraints with the same name are unique per module.'),
]
def _module_data_uninstall(self, cr, uid, ids, context=None):
"""
Delete PostgreSQL foreign keys and constraints tracked by this model.
"""
if uid != SUPERUSER_ID and not self.pool.get('ir.model.access').check_groups(cr, uid, "base.group_system"):
raise except_orm(_('Permission Denied'), (_('Administrator access is required to uninstall a module')))
context = dict(context or {})
ids_set = set(ids)
ids.sort()
ids.reverse()
for data in self.browse(cr, uid, ids, context):
model = data.model.model
model_obj = self.pool.get(model)
name = openerp.tools.ustr(data.name)
typ = data.type
# double-check we are really going to delete all the owners of this schema element
cr.execute("""SELECT id from ir_model_constraint where name=%s""", (data.name,))
external_ids = [x[0] for x in cr.fetchall()]
if (set(external_ids)-ids_set):
# as installed modules have defined this element we must not delete it!
continue
if typ == 'f':
# test if FK exists on this table (it could be on a related m2m table, in which case we ignore it)
cr.execute("""SELECT 1 from pg_constraint cs JOIN pg_class cl ON (cs.conrelid = cl.oid)
WHERE cs.contype=%s and cs.conname=%s and cl.relname=%s""", ('f', name, model_obj._table))
if cr.fetchone():
cr.execute('ALTER TABLE "%s" DROP CONSTRAINT "%s"' % (model_obj._table, name),)
_logger.info('Dropped FK CONSTRAINT %s@%s', name, model)
if typ == 'u':
# test if constraint exists
cr.execute("""SELECT 1 from pg_constraint cs JOIN pg_class cl ON (cs.conrelid = cl.oid)
WHERE cs.contype=%s and cs.conname=%s and cl.relname=%s""", ('u', name, model_obj._table))
if cr.fetchone():
cr.execute('ALTER TABLE "%s" DROP CONSTRAINT "%s"' % (model_obj._table, name),)
_logger.info('Dropped CONSTRAINT %s@%s', name, model)
self.unlink(cr, uid, ids, context)

View File

@ -0,0 +1,62 @@
import logging
import openerp
from openerp import SUPERUSER_ID
from openerp.osv import fields
from openerp.osv.orm import Model
_logger = logging.getLogger(__name__)
class ir_model_relation(Model):
"""
This model tracks PostgreSQL tables used to implement OpenERP many2many
relations.
"""
_name = 'ir.model.relation'
_columns = {
'name': fields.char('Relation Name', required=True, size=128, select=1,
help="PostgreSQL table name implementing a many2many relation."),
'model': fields.many2one('ir.model', string='Model',
required=True, select=1),
'module': fields.many2one('ir.module.module', string='Module',
required=True, select=1),
'date_update': fields.datetime('Update Date'),
'date_init': fields.datetime('Initialization Date')
}
def _module_data_uninstall(self, cr, uid, ids, context=None):
"""
Delete PostgreSQL many2many relations tracked by this model.
"""
if uid != SUPERUSER_ID and not self.pool.get('ir.model.access').check_groups(cr, uid, "base.group_system"):
raise except_orm(_('Permission Denied'), (_('Administrator access is required to uninstall a module')))
ids_set = set(ids)
to_drop_table = []
ids.sort()
ids.reverse()
for data in self.browse(cr, uid, ids, context):
model = data.model
model_obj = self.pool.get(model)
name = openerp.tools.ustr(data.name)
# double-check we are really going to delete all the owners of this schema element
cr.execute("""SELECT id from ir_model_relation where name = %s""", (data.name,))
external_ids = [x[0] for x in cr.fetchall()]
if (set(external_ids)-ids_set):
# as installed modules have defined this element we must not delete it!
continue
cr.execute("SELECT 1 FROM information_schema.tables WHERE table_name=%s", (name,))
if cr.fetchone() and not name in to_drop_table:
to_drop_table.append(name)
self.unlink(cr, uid, ids, context)
# drop m2m relation tables
for table in to_drop_table:
cr.execute('DROP TABLE %s CASCADE'% (table),)
_logger.info('Dropped table %s', table)
cr.commit()

View File

@ -19,186 +19,45 @@
#
##############################################################################
import openerp.pooler as pooler
from operator import itemgetter
from osv import osv, fields
from tools.translate import _
from osv import osv
class ir_needaction_users_rel(osv.osv):
'''
ir_needaction_users_rel holds data related to the needaction
mechanism inside OpenERP. A row in this model is characterized by:
- res_model: model of the record requiring an action
- res_id: ID of the record requiring an action
- user_id: foreign key to the res.users table, to the user that
has to perform the action
This model can be seen as a many2many, linking (res_model, res_id) to
users (those whose attention is required on the record).'''
_name = 'ir.needaction_users_rel'
_description = 'Needaction relationship table'
_rec_name = 'id'
_order = 'id desc'
_columns = {
'res_model': fields.char('Related Document Model', size=128,
select=1, required=True),
'res_id': fields.integer('Related Document ID',
select=1, required=True),
'user_id': fields.many2one('res.users', string='Related User',
ondelete='cascade', select=1, required=True),
}
def _get_users(self, cr, uid, res_ids, res_model, context=None):
"""Given res_ids of res_model, get user_ids present in table"""
rel_ids = self.search(cr, uid, [('res_model', '=', res_model), ('res_id', 'in', res_ids)], context=context)
return list(set(map(itemgetter('user_id'), self.read(cr, uid, rel_ids, ['user_id'], context=context))))
def create_users(self, cr, uid, res_ids, res_model, user_ids, context=None):
"""Given res_ids of res_model, add user_ids to the relationship table"""
for res_id in res_ids:
for user_id in user_ids:
self.create(cr, uid, {'res_model': res_model, 'res_id': res_id, 'user_id': user_id}, context=context)
return True
def unlink_users(self, cr, uid, res_ids, res_model, context=None):
"""Given res_ids of res_model, delete all entries in the relationship table"""
to_del_ids = self.search(cr, uid, [('res_model', '=', res_model), ('res_id', 'in', res_ids)], context=context)
return self.unlink(cr, uid, to_del_ids, context=context)
def update_users(self, cr, uid, res_ids, res_model, user_ids, context=None):
"""Given res_ids of res_model, update their entries in the relationship table to user_ids"""
# read current records
cur_users = self._get_users(cr, uid, res_ids, res_model, context=context)
if len(cur_users) == len(user_ids) and all(cur_user in user_ids for cur_user in cur_users):
return True
# unlink old records
self.unlink_users(cr, uid, res_ids, res_model, context=context)
# link new records
self.create_users(cr, uid, res_ids, res_model, user_ids, context=context)
return True
class ir_needaction_mixin(osv.osv):
class ir_needaction_mixin(osv.AbstractModel):
'''Mixin class for objects using the need action feature.
Need action feature can be used by objects willing to be able to
signal that an action is required on a particular record. If in the
business logic an action must be performed by somebody, for instance
validation by a manager, this mechanism allows to set a list of
users asked to perform an action.
This class wraps a class (ir.ir_needaction_users_rel) that behaves
like a many2many field. However, no field is added to the model
inheriting from this mixin class. This class handles the low-level
considerations of updating relationships. Every change made on the
record calls a method that updates the relationships.
Objects using the 'need_action' feature should override the
``get_needaction_user_ids`` method. This methods returns a dictionary
whose keys are record ids, and values a list of user ids, like
in a many2many relationship. Therefore by defining only one method,
you can specify if an action is required by defining the users
that have to do it, in every possible situation.
This class also offers several global services,:
- ``needaction_get_record_ids``: for the current model and uid, get
all record ids that ask this user to perform an action. This
mechanism is used for instance to display the number of pending
actions in menus, such as Leads (12)
- ``needaction_get_action_count``: as ``needaction_get_record_ids``
but returns only the number of action, not the ids (performs a
search with count=True)
- ``needaction_get_user_record_references``: for a given uid, get all
the records that ask this user to perform an action. Records
are given as references, a list of tuples (model_name, record_id)
The ``ir_needaction_mixin`` class adds a function field on models inheriting
from the class. This field allows to state whether a given record has
a needaction for the current user. This is usefull if you want to customize
views according to the needaction feature. For example, you may want to
set records in bold in a list view if the current user has an action to
perform on the record. This makes the class not a pure abstract class,
but allows to easily use the action information.'''
Need action feature can be used by models that have to be able to
signal that an action is required on a particular record. If in
the business logic an action must be performed by somebody, for
instance validation by a manager, this mechanism allows to set a
list of users asked to perform an action.
Models using the 'need_action' feature should override the
``_needaction_domain_get`` method. This method returns a
domain to filter records requiring an action for a specific user.
This class also offers several global services:
- ``_needaction_count``: returns the number of actions uid has to perform
'''
_name = 'ir.needaction_mixin'
_description = '"Need action" mixin'
def get_needaction_pending(self, cr, uid, ids, name, arg, context=None):
res = {}
needaction_user_ids = self.get_needaction_user_ids(cr, uid, ids, context=context)
for id in ids:
res[id] = uid in needaction_user_ids[id]
return res
_columns = {
'needaction_pending': fields.function(get_needaction_pending, type='boolean',
string='Need action pending',
help='If True, this field states that users have to perform an action. \
This field comes from the needaction mechanism. Please refer \
to the ir.needaction_mixin class.'),
}
_needaction = True
#------------------------------------------------------
# Addon API
# Addons API
#------------------------------------------------------
def get_needaction_user_ids(self, cr, uid, ids, context=None):
""" Returns the user_ids that have to perform an action
:return: dict { record_id: [user_ids], }
def _needaction_domain_get(self, cr, uid, context=None):
""" Returns the domain to filter records that require an action
:return: domain or False is no action
"""
return dict.fromkeys(ids, [])
def create(self, cr, uid, values, context=None):
rel_obj = self.pool.get('ir.needaction_users_rel')
# perform create
obj_id = super(ir_needaction_mixin, self).create(cr, uid, values, context=context)
# link user_ids
needaction_user_ids = self.get_needaction_user_ids(cr, uid, [obj_id], context=context)
rel_obj.create_users(cr, uid, [obj_id], self._name, needaction_user_ids[obj_id], context=context)
return obj_id
def write(self, cr, uid, ids, values, context=None):
rel_obj = self.pool.get('ir.needaction_users_rel')
# perform write
write_res = super(ir_needaction_mixin, self).write(cr, uid, ids, values, context=context)
# get and update user_ids
needaction_user_ids = self.get_needaction_user_ids(cr, uid, ids, context=context)
for id in ids:
rel_obj.update_users(cr, uid, [id], self._name, needaction_user_ids[id], context=context)
return write_res
def unlink(self, cr, uid, ids, context=None):
# unlink user_ids
rel_obj = self.pool.get('ir.needaction_users_rel')
rel_obj.unlink_users(cr, uid, ids, self._name, context=context)
# perform unlink
return super(ir_needaction_mixin, self).unlink(cr, uid, ids, context=context)
return False
#------------------------------------------------------
# "Need action" API
#------------------------------------------------------
def needaction_get_record_ids(self, cr, uid, user_id, limit=80, context=None):
"""Given the current model and a user_id
return the record ids that require the user to perform an
action"""
rel_obj = self.pool.get('ir.needaction_users_rel')
rel_ids = rel_obj.search(cr, uid, [('res_model', '=', self._name), ('user_id', '=', user_id)], limit=limit, context=context)
return map(itemgetter('res_id'), rel_obj.read(cr, uid, rel_ids, ['res_id'], context=context))
def needaction_get_action_count(self, cr, uid, user_id, limit=80, context=None):
"""Given the current model and a user_id
get the number of actions it has to perform"""
rel_obj = self.pool.get('ir.needaction_users_rel')
return rel_obj.search(cr, uid, [('res_model', '=', self._name), ('user_id', '=', user_id)], limit=limit, count=True, context=context)
def needaction_get_record_references(self, cr, uid, user_id, offset=None, limit=None, order=None, context=None):
"""For a given user_id, get all the records that asks this user to
perform an action. Records are given as references, a list of
tuples (model_name, record_id).
This method is trans-model."""
rel_obj = self.pool.get('ir.needaction_users_rel')
rel_ids = rel_obj.search(cr, uid, [('user_id', '=', user_id)], offset=offset, limit=limit, order=order, context=context)
return map(itemgetter('res_model', 'res_id'), rel_obj.read(cr, uid, rel_ids, ['res_model', 'res_id'], context=context))
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
def _needaction_count(self, cr, uid, domain=[], context=None):
""" Get the number of actions uid has to perform. """
dom = self._needaction_domain_get(cr, uid, context=context)
if not dom:
return 0
return self.search(cr, uid, (domain or []) +dom, context=context, count=True)

View File

@ -44,7 +44,7 @@ class ir_rule(osv.osv):
def _eval_context(self, cr, uid):
"""Returns a dictionary to use as evaluation context for
ir.rule domains."""
return {'user': self.pool.get('res.users').browse(cr, 1, uid),
return {'user': self.pool.get('res.users').browse(cr, SUPERUSER_ID, uid),
'time':time}
def _domain_force_get(self, cr, uid, ids, field_name, arg, context=None):
@ -75,6 +75,7 @@ class ir_rule(osv.osv):
_columns = {
'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"),
'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'),
@ -89,6 +90,7 @@ class ir_rule(osv.osv):
_order = 'model_id DESC'
_defaults = {
'active': True,
'perm_read': True,
'perm_write': True,
'perm_create': True,
@ -114,6 +116,7 @@ class ir_rule(osv.osv):
FROM ir_rule r
JOIN ir_model m ON (r.model_id = m.id)
WHERE m.model = %s
AND r.active is True
AND r.perm_""" + mode + """
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)
@ -152,7 +155,7 @@ class ir_rule(osv.osv):
# involve objects on which the real uid has no acces rights.
# This means also there is no implicit restriction (e.g. an object
# references another object the user can't see).
query = self.pool.get(model_name)._where_calc(cr, 1, dom, active_test=False)
query = self.pool.get(model_name)._where_calc(cr, SUPERUSER_ID, dom, active_test=False)
return query.where_clause, query.where_clause_params, query.tables
return [], [], ['"'+self.pool.get(model_name)._table+'"']

View File

@ -210,7 +210,7 @@ class ir_sequence(openerp.osv.osv.osv):
def next_by_id(self, cr, uid, sequence_id, context=None):
""" Draw an interpolated string using the specified sequence."""
self.check_read(cr, uid)
self.check_access_rights(cr, uid, 'read')
company_ids = self.pool.get('res.company').search(cr, uid, [], order='company_id', context=context) + [False]
ids = self.search(cr, uid, ['&',('id','=', sequence_id),('company_id','in',company_ids)])
return self._next(cr, uid, ids, context)
@ -227,7 +227,7 @@ class ir_sequence(openerp.osv.osv.osv):
sequence selection. A matching sequence for that
specific company will get higher priority.
"""
self.check_read(cr, uid)
self.check_access_rights(cr, uid, 'read')
company_ids = self.pool.get('res.company').search(cr, uid, [], order='company_id', context=context) + [False]
ids = self.search(cr, uid, ['&',('code','=', sequence_code),('company_id','in',company_ids)])
return self._next(cr, uid, ids, context)

View File

@ -77,14 +77,14 @@ class ir_translation_import_cursor(object):
def push(self, ddict):
"""Feed a translation, as a dictionary, into the cursor
"""
state = "translated" if (ddict['value'] and ddict['value'] != "") else "to_translate"
self._cr.execute("INSERT INTO " + self._table_name \
+ """(name, lang, res_id, src, type,
imd_model, imd_module, imd_name, value)
VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s)""",
imd_model, imd_module, imd_name, value,state)
VALUES(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)""",
(ddict['name'], ddict['lang'], ddict.get('res_id'), ddict['src'], ddict['type'],
ddict.get('imd_model'), ddict.get('imd_module'), ddict.get('imd_name'),
ddict['value']))
ddict['value'],state))
def finish(self):
""" Transfer the data from the temp table to ir.translation
@ -125,15 +125,16 @@ class ir_translation_import_cursor(object):
# Step 2: update existing (matching) translations
if self._overwrite:
cr.execute("""UPDATE ONLY %s AS irt
SET value = ti.value
SET value = ti.value,
state = 'translated'
FROM %s AS ti
WHERE %s AND ti.value IS NOT NULL AND ti.value != ''
""" % (self._parent_table, self._table_name, find_expr))
# Step 3: insert new translations
cr.execute("""INSERT INTO %s(name, lang, res_id, src, type, value)
SELECT name, lang, res_id, src, type, value
cr.execute("""INSERT INTO %s(name, lang, res_id, src, type, value,state)
SELECT name, lang, res_id, src, type, value,state
FROM %s AS ti
WHERE NOT EXISTS(SELECT 1 FROM ONLY %s AS irt WHERE %s);
""" % (self._parent_table, self._table_name, self._parent_table, find_expr))
@ -167,6 +168,11 @@ class ir_translation(osv.osv):
'type': fields.selection(TRANSLATION_TYPE, string='Type', size=16, select=True),
'src': fields.text('Source'),
'value': fields.text('Translation Value'),
'state':fields.selection([('to_translate','To Translate'),('inprogress','Translation in Progress'),('translated','Translated')])
}
_defaults = {
'state':'to_translate',
}
_sql_constraints = [ ('lang_fkey_res_lang', 'FOREIGN KEY(lang) REFERENCES res_lang(code)',
@ -261,7 +267,7 @@ class ir_translation(osv.osv):
# FIXME: should assert that `source` is unicode and fix all callers to always pass unicode
# so we can remove the string encoding/decoding.
if not lang:
return u''
return tools.ustr(source or '')
if isinstance(types, basestring):
types = (types,)
if source:
@ -301,6 +307,10 @@ class ir_translation(osv.osv):
context = {}
if isinstance(ids, (int, long)):
ids = [ids]
if vals.get('src') or ('value' in vals and not(vals.get('value'))):
result = vals.update({'state':'to_translate'})
if vals.get('value'):
result = vals.update({'state':'translated'})
result = super(ir_translation, self).write(cursor, user, ids, vals, context=context)
for trans_obj in self.read(cursor, user, ids, ['name','type','res_id','src','lang'], context=context):
self._get_source.clear_cache(self, user, trans_obj['name'], trans_obj['type'], trans_obj['lang'], trans_obj['src'])
@ -318,6 +328,52 @@ class ir_translation(osv.osv):
result = super(ir_translation, self).unlink(cursor, user, ids, context=context)
return result
def translate_fields(self, cr, uid, model, id, field=None, context=None):
trans_model = self.pool.get(model)
domain = ['&', ('res_id', '=', id), ('name', '=like', model + ',%')]
langs_ids = self.pool.get('res.lang').search(cr, uid, [('code', '!=', 'en_US')], context=context)
langs = [lg.code for lg in self.pool.get('res.lang').browse(cr, uid, langs_ids, context=context)]
main_lang = 'en_US'
translatable_fields = []
for f, info in trans_model._all_columns.items():
if info.column.translate:
if info.parent_model:
parent_id = trans_model.read(cr, uid, [id], [info.parent_column], context=context)[0][info.parent_column][0]
translatable_fields.append({ 'name': f, 'id': parent_id, 'model': info.parent_model })
domain.insert(0, '|')
domain.extend(['&', ('res_id', '=', parent_id), ('name', '=', "%s,%s" % (info.parent_model, f))])
else:
translatable_fields.append({ 'name': f, 'id': id, 'model': model })
if len(langs):
fields = [f.get('name') for f in translatable_fields]
record = trans_model.read(cr, uid, [id], fields, context={ 'lang': main_lang })[0]
for lg in langs:
for f in translatable_fields:
# Check if record exists, else create it (at once)
sql = """INSERT INTO ir_translation (lang, src, name, type, res_id, value)
SELECT %s, %s, %s, 'model', %s, %s WHERE NOT EXISTS
(SELECT 1 FROM ir_translation WHERE lang=%s AND name=%s AND res_id=%s AND type='model');
UPDATE ir_translation SET src = %s WHERE lang=%s AND name=%s AND res_id=%s AND type='model';
"""
src = record[f['name']] or None
name = "%s,%s" % (f['model'], f['name'])
cr.execute(sql, (lg, src , name, f['id'], src, lg, name, f['id'], src, lg, name, id))
action = {
'name': 'Translate',
'res_model': 'ir.translation',
'type': 'ir.actions.act_window',
'view_type': 'form',
'view_mode': 'tree,form',
'domain': domain,
}
if field:
info = trans_model._all_columns[field]
action['context'] = {
'search_default_name': "%s,%s" % (info.parent_model or model, field)
}
return action
def _get_import_cursor(self, cr, uid, context=None):
""" Return a cursor-like object for fast inserting translations
"""

View File

@ -23,11 +23,12 @@
import base64
import re
import threading
from tools.safe_eval import safe_eval as eval
import tools
import openerp.modules
from osv import fields, osv
from tools.translate import _
from openerp import SUPERUSER_ID
def one_in(setA, setB):
"""Check the presence of an element of setA in setB
@ -59,7 +60,7 @@ class ir_ui_menu(osv.osv):
"""
with self.cache_lock:
modelaccess = self.pool.get('ir.model.access')
user_groups = set(self.pool.get('res.users').read(cr, 1, uid, ['groups_id'])['groups_id'])
user_groups = set(self.pool.get('res.users').read(cr, SUPERUSER_ID, uid, ['groups_id'])['groups_id'])
result = []
for menu in self.browse(cr, uid, ids, context=context):
# this key works because user access rights are all based on user's groups (cfr ir_model_access.check)
@ -256,19 +257,23 @@ class ir_ui_menu(osv.osv):
return res
def _get_needaction(self, cr, uid, ids, field_names, args, context=None):
if context is None:
context = {}
res = {}
for menu in self.browse(cr, uid, ids, context=context):
res[menu.id] = {}
if menu.action and menu.action.type == 'ir.actions.act_window' and menu.action.res_model:
menu_needaction_res = self.pool.get(menu.action.res_model)._get_needaction_info(cr, uid, uid, domain=menu.action.domain, context=context)
else:
menu_needaction_res = [False, 0]
res[menu.id]['needaction_enabled'] = menu_needaction_res[0]
res[menu.id]['needaction_counter'] = menu_needaction_res[1]
res[menu.id] = {
'needaction_enabled': False,
'needaction_counter': False,
}
if menu.action and menu.action.type in ('ir.actions.act_window','ir.actions.client') and menu.action.res_model:
obj = self.pool.get(menu.action.res_model)
if obj._needaction:
if menu.action.type=='ir.actions.act_window':
dom = menu.action.domain and eval(menu.action.domain, {'uid': uid}) or []
else:
dom = eval(menu.action.params_store or '{}', {'uid': uid}).get('domain')
res[menu.id]['needaction_enabled'] = obj._needaction
res[menu.id]['needaction_counter'] = obj._needaction_count(cr, uid, dom, context=context)
return res
_columns = {
'name': fields.char('Menu', size=64, required=True, translate=True),
'sequence': fields.integer('Sequence'),
@ -278,7 +283,7 @@ class ir_ui_menu(osv.osv):
'menu_id', 'gid', 'Groups', help="If you have groups, the visibility of this menu will be based on these groups. "\
"If this field is empty, OpenERP will compute visibility based on the related object's read access."),
'complete_name': fields.function(_get_full_name,
string='Complete Name', type='char', size=128),
string='Full Path', type='char', size=128),
'icon': fields.selection(tools.icons, 'Icon', size=64),
'icon_pict': fields.function(_get_icon_pict, type='char', size=32),
'web_icon': fields.char('Web Icon File', size=128),

View File

@ -24,6 +24,7 @@ from lxml import etree
from tools import graph
from tools.safe_eval import safe_eval as eval
import tools
from tools.view_validation import valid_view
import os
import logging
@ -47,11 +48,22 @@ view_custom()
class view(osv.osv):
_name = 'ir.ui.view'
def _type_field(self, cr, uid, ids, name, args, context=None):
result = {}
for record in self.browse(cr, uid, ids, context):
# Get the type from the inherited view if any.
if record.inherit_id:
result[record.id] = record.inherit_id.type
else:
result[record.id] = etree.fromstring(record.arch.encode('utf8')).tag
return result
_columns = {
'name': fields.char('View Name',size=64, required=True),
'model': fields.char('Object', size=64, required=True, select=True),
'priority': fields.integer('Sequence', required=True),
'type': fields.selection((
'type': fields.function(_type_field, type='selection', selection=[
('tree','Tree'),
('form','Form'),
('mdx','mdx'),
@ -60,12 +72,14 @@ class view(osv.osv):
('diagram','Diagram'),
('gantt', 'Gantt'),
('kanban', 'Kanban'),
('search','Search')), 'View Type', required=True, select=True),
('search','Search')], string='View Type', required=True, select=True, store=True),
'arch': fields.text('View Architecture', required=True),
'inherit_id': fields.many2one('ir.ui.view', 'Inherited View', ondelete='cascade', select=True),
'field_parent': fields.char('Child Field',size=64),
'xml_id': fields.function(osv.osv.get_xml_id, type='char', size=128, string="External ID",
help="ID of the view defined in xml file"),
'groups_id': fields.many2many('res.groups', 'ir_ui_view_group_rel', 'view_id', 'group_id',
string='Groups', help="If this field is empty, the view applies to all users. Otherwise, the view applies to the users of those groups only."),
}
_defaults = {
'arch': '<?xml version="1.0"?>\n<tree string="My view">\n\t<field name="name"/>\n</tree>',
@ -73,21 +87,63 @@ class view(osv.osv):
}
_order = "priority,name"
def _check_xml(self, cr, uid, ids, context=None):
for view in self.browse(cr, uid, ids, context):
eview = etree.fromstring(view.arch.encode('utf8'))
if eview.get('layout') or eview.get('validate'):
continue
# Holds the RNG schema
_relaxng_validator = None
def create(self, cr, uid, values, context=None):
if 'type' in values:
_logger.warning("Setting the `type` field is deprecated in the `ir.ui.view` model.")
return super(osv.osv, self).create(cr, uid, values, context)
def _relaxng(self):
if not self._relaxng_validator:
frng = tools.file_open(os.path.join('base','rng','view.rng'))
try:
relaxng_doc = etree.parse(frng)
relaxng = etree.RelaxNG(relaxng_doc)
if not relaxng.validate(eview):
for error in relaxng.error_log:
_logger.error(tools.ustr(error))
return False
self._relaxng_validator = etree.RelaxNG(relaxng_doc)
except Exception:
_logger.exception('Failed to load RelaxNG XML schema for views validation')
finally:
frng.close()
return self._relaxng_validator
def _check_render_view(self, cr, uid, view, context=None):
"""Verify that the given view's hierarchy is valid for rendering, along with all the changes applied by
its inherited views, by rendering it using ``fields_view_get()``.
@param browse_record view: view to validate
@return: the rendered definition (arch) of the view, always utf-8 bytestring (legacy convention)
if no error occurred, else False.
"""
try:
fvg = self.pool.get(view.model).fields_view_get(cr, uid, view_id=view.id, view_type=view.type, context=context)
return fvg['arch']
except:
_logger.exception("Can't render view %s for model: %s", view.xml_id, view.model)
return False
def _check_xml(self, cr, uid, ids, context=None):
for view in self.browse(cr, uid, ids, context):
# Sanity check: the view should not break anything upon rendering!
view_arch_utf8 = self._check_render_view(cr, uid, view, context=context)
# always utf-8 bytestring - legacy convention
if not view_arch_utf8: return False
# RNG-based validation is not possible anymore with 7.0 forms
# TODO 7.0: provide alternative assertion-based validation of view_arch_utf8
view_docs = [etree.fromstring(view_arch_utf8)]
if view_docs[0].tag == 'data':
# A <data> element is a wrapper for multiple root nodes
view_docs = view_docs[0]
validator = self._relaxng()
for view_arch in view_docs:
if (view_arch.get('version') < '7.0') and validator and not validator.validate(view_arch):
for error in validator.error_log:
_logger.error(tools.ustr(error))
return False
if not valid_view(view_arch):
return False
return True
_constraints = [
@ -98,25 +154,44 @@ class view(osv.osv):
super(view, self)._auto_init(cr, context)
cr.execute('SELECT indexname FROM pg_indexes WHERE indexname = \'ir_ui_view_model_type_inherit_id\'')
if not cr.fetchone():
cr.execute('CREATE INDEX ir_ui_view_model_type_inherit_id ON ir_ui_view (model, type, inherit_id)')
cr.execute('CREATE INDEX ir_ui_view_model_type_inherit_id ON ir_ui_view (model, inherit_id)')
def get_inheriting_views_arch(self, cr, uid, view_id, model, context=None):
"""Retrieves the architecture of views that inherit from the given view.
"""Retrieves the architecture of views that inherit from the given view, from the sets of
views that should currently be used in the system. During the module upgrade phase it
may happen that a view is present in the database but the fields it relies on are not
fully loaded yet. This method only considers views that belong to modules whose code
is already loaded. Custom views defined directly in the database are loaded only
after the module initialization phase is completely finished.
:param int view_id: id of the view whose inheriting views should be retrieved
:param str model: model identifier of the view's related model (for double-checking)
:rtype: list of tuples
:return: [(view_arch,view_id), ...]
"""
cr.execute("""SELECT arch, id FROM ir_ui_view WHERE inherit_id=%s AND model=%s
ORDER BY priority""",
(view_id, model))
return cr.fetchall()
user_groups = frozenset(self.pool.get('res.users').browse(cr, 1, uid, context).groups_id)
if self.pool._init:
# Module init currently in progress, only consider views from modules whose code was already loaded
query = """SELECT v.id FROM ir_ui_view v LEFT JOIN ir_model_data md ON (md.model = 'ir.ui.view' AND md.res_id = v.id)
WHERE v.inherit_id=%s AND v.model=%s AND md.module in %s
ORDER BY priority"""
query_params = (view_id, model, tuple(self.pool._init_modules))
else:
# Modules fully loaded, consider all views
query = """SELECT v.id FROM ir_ui_view v
WHERE v.inherit_id=%s AND v.model=%s
ORDER BY priority"""
query_params = (view_id, model)
cr.execute(query, query_params)
view_ids = [v[0] for v in cr.fetchall()]
# filter views based on user groups
return [(view.arch, view.id)
for view in self.browse(cr, 1, view_ids, context)
if not (view.groups_id and user_groups.isdisjoint(view.groups_id))]
def write(self, cr, uid, ids, vals, context=None):
if not isinstance(ids, (list, tuple)):
ids = [ids]
result = super(view, self).write(cr, uid, ids, vals, context)
# drop the corresponding view customizations (used for dashboards for example), otherwise
# not all users would see the updated views
@ -124,7 +199,7 @@ class view(osv.osv):
if 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):
nodes=[]

View File

@ -1,22 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_model_menu_create" model="ir.ui.view">
<field name="name">Create Menu</field>
<field name="model">wizard.ir.model.menu.create</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Create Menu">
<separator colspan="4" string="Create Menu"/>
<field name="name"/>
<field name="menu_id" domain="[('parent_id','&lt;&gt;',False)]"/>
<separator colspan="4" string=""/>
<label colspan="2" string=""/>
<group col="2" colspan="2">
<button special="cancel" string="_Close" icon="gtk-cancel"/>
<button name="menu_create" string="Create _Menu" type="object" icon="gtk-ok"/>
<form string="Create Menu" version="7.0">
<group>
<field name="name"/>
<field name="menu_id" domain="[('parent_id','&lt;&gt;',False)]"/>
</group>
<footer>
<button name="menu_create" string="Create _Menu" type="object" class="oe_highlight"/>
or
<button string="Cancel" class="oe_link" special="cancel" />
</footer>
</form>
</field>
</record>

View File

@ -12,36 +12,31 @@
<record id="view_workflow_form" model="ir.ui.view">
<field name="name">workflow.form</field>
<field name="model">workflow</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Workflow">
<group col="6" colspan="4" >
<form string="Workflow" version="7.0">
<group col="4">
<field name="name"/>
<field name="osv"/>
<field name="on_create"/>
</group>
<separator colspan="4" string="Activities"/>
<field colspan="4" name="activities" nolabel="1"/>
</form>
<field name="activities"/>
</form>
</field>
</record>
<record id="view_workflow_search" model="ir.ui.view">
<field name="name">workflow.search</field>
<field name="model">workflow</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Workflow">
<field name="name"/>
<field name="osv"/>
</search>
</field>
<field name="name">workflow.search</field>
<field name="model">workflow</field>
<field name="arch" type="xml">
<search string="Workflow">
<field name="name" filter_domain="['|', ('name','ilike',self), ('osv','ilike',self)]" string="Workflow"/>
</search>
</field>
</record>
<record id="view_workflow_diagram" model="ir.ui.view">
<field name="name">workflow.diagram</field>
<field name="model">workflow</field>
<field name="type">diagram</field>
<field name="arch" type="xml">
<diagram string="Workflow Editor">
<node object="workflow.activity" shape="rectangle:subflow_id!=False" bgcolor="gray:flow_start==True;grey:flow_stop==True">
@ -57,13 +52,13 @@
<field name="act_to"/>
<field name="signal"/>
</arrow>
<label string="When customizing a workflow, be sure you do not modify an existing node or arrow, but rather add new nodes or arrows. If you absolutly need to modify a node or arrow, you can only change fields that are empty or set to the default value. If you don't do that, your customization will be overwrited at the next update or upgrade to a future version of OpenERP."/>
</diagram>
</field>
</record>
<record id="view_workflow_tree" model="ir.ui.view">
<field name="name">workflow.tree</field>
<field name="model">workflow</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Workflow">
<field name="name"/>
@ -91,68 +86,61 @@
<record id="view_workflow_activity_form" model="ir.ui.view">
<field name="name">workflow.activity.form</field>
<field name="model">workflow.activity</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Activity">
<group col="6" colspan="4">
<field name="name"/>
<field name="wkf_id"/>
<field name="kind"/>
<form string="Activity" version="7.0">
<sheet>
<group>
<group>
<field name="name"/>
<field name="wkf_id"/>
<field name="kind"/>
</group>
<group>
<field name="flow_start"/>
<field name="flow_stop"/>
</group>
</group>
<group colspan="2">
<field name="flow_start"/>
<field name="flow_stop"/>
</group>
<notebook colspan="4">
<notebook>
<page string="Properties">
<group colspan="4" col="6">
<group colspan="1" col="2">
<separator string="Subflow" colspan="2"/>
<group>
<group string="Subflow">
<field name="subflow_id" attrs="{'readonly':[('kind','&lt;&gt;','subflow')]}"/>
<field name="signal_send"/>
</group>
<group colspan="1" col="2">
<separator string="Conditions" colspan="2"/>
<group string="Conditions">
<field name="split_mode"/>
<field name="join_mode"/>
</group>
<group colspan="1" col="2">
<separator string="Actions" colspan="2"/>
<group string="Actions">
<field name="action_id"/>
<field name="action" attrs="{'readonly':[('kind','=','dummy')]}"/>
</group>
</group>
</page>
<page string="Transitions">
<group colspan="4" col="4">
<group col="2" colspan="2">
<field name="in_transitions" nolabel="1" height="400">
<tree string="Incoming Transitions">
<field name="act_from"/>
<field name="signal"/>
<field name="condition"/>
</tree>
</field>
</group>
<group col="2" colspan="2">
<field name="out_transitions" nolabel="1" height="400">
<tree string="Outgoing Transitions">
<field name="act_to"/>
<field name="signal"/>
<field name="condition"/>
</tree>
</field>
</group>
</group>
<field name="in_transitions">
<tree string="Incoming Transitions">
<field name="act_from"/>
<field name="signal"/>
<field name="condition"/>
</tree>
</field>
<field name="out_transitions">
<tree string="Outgoing Transitions">
<field name="act_to"/>
<field name="signal"/>
<field name="condition"/>
</tree>
</field>
</page>
</notebook>
</sheet>
</form>
</field>
</record>
<record id="view_workflow_activity_tree" model="ir.ui.view">
<field name="name">workflow.activity.tree</field>
<field name="model">workflow.activity</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Activity">
<field name="name"/>
@ -165,27 +153,23 @@
</record>
<record id="view_workflow_activity_search" model="ir.ui.view">
<field name="name">workflow.activity.search</field>
<field name="model">workflow.activity</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Workflow Activity">
<filter icon="terp-camera_test" string="Flow Start"
domain="[('flow_start', '=',True)]" />
<filter icon="terp-gtk-stop" string="Flow Stop"
domain="[('flow_stop', '=',True)]" />
<separator orientation="vertical"/>
<field name="name"/>
<field name="wkf_id"/>
<field name="kind"/>
<field name="action_id"/>
<field name="action"/>
<newline/>
<group expand="0" string="Group By...">
<filter string="Workflow" icon="terp-stage" domain="[]" context="{'group_by':'wkf_id'}"/>
</group>
</search>
</field>
<field name="name">workflow.activity.search</field>
<field name="model">workflow.activity</field>
<field name="arch" type="xml">
<search string="Workflow Activity">
<field name="name" string="Workflow Activity"/>
<filter icon="terp-camera_test" string="Flow Start"
domain="[('flow_start', '=',True)]" />
<filter icon="terp-gtk-stop" string="Flow Stop"
domain="[('flow_stop', '=',True)]" />
<field name="wkf_id"/>
<field name="action_id"/>
<field name="kind"/>
<group expand="0" string="Group By...">
<filter string="Workflow" icon="terp-stage" domain="[]" context="{'group_by':'wkf_id'}"/>
</group>
</search>
</field>
</record>
<record id="action_workflow_activity_form" model="ir.actions.act_window">
@ -207,25 +191,29 @@
<record id="view_workflow_transition_form" model="ir.ui.view">
<field name="name">workflow.transition.form</field>
<field name="model">workflow.transition</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Transition">
<group col="6" colspan ="4">
<field name="act_from"/>
<field name="act_to"/>
<field name="signal"/>
<field name="condition"/>
<field name="trigger_model"/>
<field name="trigger_expr_id"/>
<field name="group_id"/>
<form string="Transition" version="7.0">
<sheet>
<group>
<group>
<field name="act_from"/>
<field name="act_to"/>
<field name="signal"/>
<field name="condition"/>
</group>
<group>
<field name="group_id"/>
<field name="trigger_model"/>
<field name="trigger_expr_id"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
<record id="view_workflow_transition_tree" model="ir.ui.view">
<field name="name">workflow.transition.tree</field>
<field name="model">workflow.transition</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Transition">
<field name="act_from"/>
@ -237,17 +225,15 @@
</record>
<record id="view_workflow_transition_search" model="ir.ui.view">
<field name="name">workflow.transition.search</field>
<field name="model">workflow.transition</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Transition">
<field name="act_from"/>
<field name="act_to"/>
<field name="signal"/>
<field name="condition"/>
</search>
</field>
<field name="name">workflow.transition.search</field>
<field name="model">workflow.transition</field>
<field name="arch" type="xml">
<search string="Transition">
<field name="signal" filter_domain="['|', ('signal','ilike',self), ('condition','ilike',self)]" string="Workflow Transition"/>
<field name="act_from"/>
<field name="act_to"/>
</search>
</field>
</record>
<record id="action_workflow_transition_form" model="ir.actions.act_window">
@ -268,20 +254,22 @@
<record id="view_workflow_instance_form" model="ir.ui.view">
<field name="name">workflow.instance.form</field>
<field name="model">workflow.instance</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Workflow Instances">
<field name="wkf_id" readonly="1"/>
<field name="res_id" readonly="1"/>
<field name="res_type" readonly="1"/>
<field name="state" readonly="1"/>
<form string="Workflow Instances" version="7.0">
<sheet>
<group col="4">
<field name="wkf_id"/>
<field name="res_id"/>
<field name="res_type"/>
<field name="state"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="view_workflow_instance_tree" model="ir.ui.view">
<field name="name">workflow.instance.tree</field>
<field name="model">workflow.instance</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Workflow Instances">
<field name="wkf_id"/>
@ -292,17 +280,15 @@
</field>
</record>
<record id="view_workflow_instance_search" model="ir.ui.view">
<field name="name">workflow.instance.search</field>
<field name="model">workflow.instance</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Workflow Instances">
<filter icon="terp-camera_test" string="Active" domain="[('state','=','active')]" name="active"/>
<separator orientation="vertical"/>
<field name="wkf_id" widget="selection"/>
<field name="res_id"/>
<field name="res_type"/>
<field name="state"/>
<field name="name">workflow.instance.search</field>
<field name="model">workflow.instance</field>
<field name="arch" type="xml">
<search string="Workflow Instances">
<field name="res_type" string="Resource Object"/>
<filter icon="terp-camera_test" string="Active" domain="[('state','=','active')]" name="active"/>
<field name="wkf_id"/>
<field name="res_id"/>
<field name="state"/>
</search>
</field>
</record>
@ -315,7 +301,7 @@
<field name="context">{'search_default_active':1}</field>
<field name="search_view_id" ref="view_workflow_instance_search"/>
</record>
<menuitem action="action_workflow_instance_form" id="menu_workflow_instance" parent="base.menu_low_workflow"/>
<menuitem action="action_workflow_instance_form" id="menu_workflow_instance" parent="base.menu_workflow_root"/>
<!--
================================
@ -326,24 +312,26 @@
<record id="view_workflow_workitem_form" model="ir.ui.view">
<field name="name">workflow.workitem.form</field>
<field name="model">workflow.workitem</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Workflow Workitems">
<field name="wkf_id" readonly="1"/>
<field name="act_id" readonly="1"/>
<field name="subflow_id" readonly="1"/>
<field name="inst_id" readonly="1"/>
<field name="state" readonly="1"/>
<form string="Workflow Workitems" version="7.0">
<sheet>
<group col="4">
<field name="wkf_id"/>
<field name="act_id"/>
<field name="subflow_id"/>
<field name="inst_id"/>
<field name="state"/>
</group>
</sheet>
</form>
</field>
</record>
<record id="view_workflow_workitem_tree" model="ir.ui.view">
<field name="name">workflow.workitem.tree</field>
<field name="model">workflow.workitem</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Workflow Workitems">
<field name="wkf_id"/>
<field name="wkf_id"/>
<field name="act_id"/>
<field name="subflow_id"/>
<field name="inst_id"/>
@ -352,20 +340,18 @@
</field>
</record>
<record id="view_workflow_workitem_search" model="ir.ui.view">
<field name="name">workflow.workitem.search</field>
<field name="model">workflow.workitem</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Workflow Workitems">
<filter icon="terp-camera_test" string="Active" name="active" domain="[('state','=','active')]"/>
<separator orientation="vertical"/>
<field name="wkf_id" widget="selection"/>
<field name="act_id"/>
<field name="subflow_id"/>
<field name="inst_id"/>
<field name="state"/>
</search>
</field>
<field name="name">workflow.workitem.search</field>
<field name="model">workflow.workitem</field>
<field name="arch" type="xml">
<search string="Workflow Workitems">
<field name="state" string="State"/>
<filter icon="terp-camera_test" string="Active" name="active" domain="[('state','=','active')]"/>
<field name="wkf_id"/>
<field name="act_id"/>
<field name="subflow_id"/>
<field name="inst_id"/>
</search>
</field>
</record>
<record id="action_workflow_workitem_form" model="ir.actions.act_window">
@ -376,7 +362,7 @@
<field name="context">{'search_default_active':1}</field>
<field name="search_view_id" ref="view_workflow_workitem_search"/>
</record>
<menuitem action="action_workflow_workitem_form" id="menu_workflow_workitem" parent="base.menu_low_workflow"/>
<menuitem action="action_workflow_workitem_form" id="menu_workflow_workitem" parent="base.menu_workflow_root"/>
</data>
</openerp>

View File

@ -18,13 +18,16 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import base64
from docutils.core import publish_string
import imp
import logging
import re
import urllib
import zipimport
from openerp import modules, pooler, release, tools
from openerp import modules, pooler, release, tools, addons
from openerp.tools.parse_version import parse_version
from openerp.tools.translate import _
from openerp.osv import fields, osv, orm
@ -79,6 +82,7 @@ class module_category(osv.osv):
class module(osv.osv):
_name = "ir.module.module"
_rec_name = "shortdesc"
_description = "Module"
@classmethod
@ -92,6 +96,14 @@ class module(osv.osv):
'module %s', name, exc_info=True)
return info
def _get_desc(self, cr, uid, ids, field_name=None, arg=None, context=None):
res = dict.fromkeys(ids, '')
for module in self.browse(cr, uid, ids, context=context):
overrides = dict(embed_stylesheet=False, doctitle_xform=False, output_encoding='unicode')
output = publish_string(source=module.description, writer_name='html', settings_overrides=overrides)
res[module.id] = output
return res
def _get_latest_version(self, cr, uid, ids, field_name=None, arg=None, context=None):
res = dict.fromkeys(ids, '')
for m in self.browse(cr, uid, ids):
@ -137,14 +149,17 @@ class module(osv.osv):
# We use try except, because views or menus may not exist.
try:
res_mod_dic = res[module_rec.id]
for v in view_obj.browse(cr, uid, imd_models.get('ir.ui.view', []), context=context):
view_ids = imd_models.get('ir.ui.view', [])
for v in view_obj.browse(cr, uid, view_ids, context=context):
aa = v.inherit_id and '* INHERIT ' or ''
res_mod_dic['views_by_module'].append(aa + v.name + '('+v.type+')')
for rx in report_obj.browse(cr, uid, imd_models.get('ir.actions.report.xml', []), context=context):
report_ids = imd_models.get('ir.actions.report.xml', [])
for rx in report_obj.browse(cr, uid, report_ids, context=context):
res_mod_dic['reports_by_module'].append(rx.name)
for um in menu_obj.browse(cr, uid, imd_models.get('ir.ui.menu', []), context=context):
menu_ids = imd_models.get('ir.ui.menu', [])
for um in menu_obj.browse(cr, uid, menu_ids, context=context):
res_mod_dic['menus_by_module'].append(um.complete_name)
except KeyError, e:
_logger.warning(
@ -160,11 +175,25 @@ class module(osv.osv):
res[key][k] = "\n".join(sorted(v))
return res
def _get_icon_image(self, cr, uid, ids, field_name=None, arg=None, context=None):
res = dict.fromkeys(ids, '')
for module in self.browse(cr, uid, ids, context=context):
path = addons.get_module_resource(module.name, 'static', 'src', 'img', 'icon.png')
if path:
image_file = tools.file_open(path, 'rb')
try:
res[module.id] = image_file.read().encode('base64')
finally:
image_file.close()
return res
_columns = {
'name': fields.char("Technical Name", size=128, readonly=True, required=True, select=True),
'category_id': fields.many2one('ir.module.category', 'Category', readonly=True, select=True),
'shortdesc': fields.char('Name', size=256, readonly=True, translate=True),
'shortdesc': fields.char('Module Name', size=64, readonly=True, translate=True),
'summary': fields.char('Summary', size=64, readonly=True, translate=True),
'description': fields.text("Description", readonly=True, translate=True),
'description_html': fields.function(_get_desc, string='Description HTML', type='html', method=True, readonly=True),
'author': fields.char("Author", size=128, readonly=True),
'maintainer': fields.char('Maintainer', size=128, readonly=True),
'contributors': fields.text('Contributors', readonly=True),
@ -204,13 +233,13 @@ class module(osv.osv):
('AGPL-3', 'Affero GPL-3'),
('Other OSI approved licence', 'Other OSI Approved Licence'),
('Other proprietary', 'Other Proprietary')
], string='License', readonly=True),
], string='License', readonly=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),
'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),
'icon': fields.char('Icon URL', size=128),
'icon_image': fields.function(_get_icon_image, string='Icon', type="binary"),
}
_defaults = {
@ -223,12 +252,9 @@ class module(osv.osv):
def _name_uniq_msg(self, cr, uid, ids, context=None):
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 = [
('name_uniq', 'UNIQUE (name)',_name_uniq_msg ),
('certificate_uniq', 'UNIQUE (certificate)',_certificate_uniq_msg )
]
def unlink(self, cr, uid, ids, context=None):
@ -339,21 +365,7 @@ class module(osv.osv):
:returns: next res.config item to execute
:rtype: dict[str, object]
"""
self.button_install(cr, uid, ids, context=context)
cr.commit()
_, pool = pooler.restart_pool(cr.dbname, update_module=True)
config = pool.get('res.config').next(cr, uid, [], context=context) or {}
if config.get('type') not in ('ir.actions.reload', 'ir.actions.act_window_close'):
return config
# reload the client
menu_ids = self.root_menus(cr,uid,ids,context)
return {
'type': 'ir.actions.client',
'tag': 'reload',
'params': {'menu_id': menu_ids and menu_ids[0] or False},
}
return self._button_immediate_function(cr, uid, ids, self.button_install, context=context)
def button_install_cancel(self, cr, uid, ids, context=None):
self.write(cr, uid, ids, {'state': 'uninstalled', 'demo':False})
@ -364,10 +376,12 @@ class module(osv.osv):
including the deletion of all database structures created by the module:
tables, columns, constraints, etc."""
ir_model_data = self.pool.get('ir.model.data')
ir_model_constraint = self.pool.get('ir.model.constraint')
modules_to_remove = [m.name for m in self.browse(cr, uid, ids, context)]
data_ids = ir_model_data.search(cr, uid, [('module', 'in', modules_to_remove)])
ir_model_data._module_data_uninstall(cr, uid, data_ids, context)
ir_model_data.unlink(cr, uid, data_ids, context)
modules_to_remove_ids = [m.id for m in self.browse(cr, uid, ids, context)]
constraint_ids = ir_model_constraint.search(cr, uid, [('module', 'in', modules_to_remove_ids)])
ir_model_constraint._module_data_uninstall(cr, uid, constraint_ids, context)
ir_model_data._module_data_uninstall(cr, uid, modules_to_remove, context)
self.write(cr, uid, ids, {'state': 'uninstalled'})
return True
@ -397,8 +411,35 @@ class module(osv.osv):
known_dep_ids, exclude_states,context))
return list(known_dep_ids)
def _button_immediate_function(self, cr, uid, ids, function, context=None):
function(cr, uid, ids, context=context)
cr.commit()
_, pool = pooler.restart_pool(cr.dbname, update_module=True)
config = pool.get('res.config').next(cr, uid, [], context=context) or {}
if config.get('type') not in ('ir.actions.reload', 'ir.actions.act_window_close'):
return config
# reload the client; open the first available root menu
menu_obj = self.pool.get('ir.ui.menu')
menu_ids = menu_obj.search(cr, uid, [('parent_id', '=', False)], context=context)
return {
'type' : 'ir.actions.client',
'tag' : 'reload',
'params' : {'menu_id' : menu_ids and menu_ids[0] or False}
}
def button_immediate_uninstall(self, cr, uid, ids, context=None):
"""
Uninstall the selected module(s) immediately and fully,
returns the next res.config action to execute
"""
return self._button_immediate_function(cr, uid, ids, self.button_uninstall, context=context)
def button_uninstall(self, cr, uid, ids, context=None):
if any(m.name == 'base' for m in self.browse(cr, uid, ids)):
if any(m.name == 'base' for m in self.browse(cr, uid, ids, context=context)):
raise orm.except_orm(_('Error'), _("The `base` module cannot be uninstalled"))
dep_ids = self.downstream_dependencies(cr, uid, ids, context=context)
self.write(cr, uid, ids + dep_ids, {'state': 'to remove'})
@ -408,6 +449,13 @@ class module(osv.osv):
self.write(cr, uid, ids, {'state': 'installed'})
return True
def button_immediate_upgrade(self, cr, uid, ids, context=None):
"""
Upgrade the selected module(s) immediately and fully,
return the next res.config action to execute
"""
return self._button_immediate_function(cr, uid, ids, self.button_upgrade, context=context)
def button_upgrade(self, cr, uid, ids, context=None):
depobj = self.pool.get('ir.module.module.dependency')
todo = self.browse(cr, uid, ids, context=context)
@ -439,7 +487,7 @@ class module(osv.osv):
to_install.extend(ids2)
self.button_install(cr, uid, to_install, context=context)
return dict(ACTION_DICT, name=_('Upgrade'))
return dict(ACTION_DICT, name=_('Apply Schedule Upgrade'))
def button_upgrade_cancel(self, cr, uid, ids, context=None):
self.write(cr, uid, ids, {'state': 'installed'})
@ -459,11 +507,11 @@ class module(osv.osv):
'contributors': ', '.join(terp.get('contributors', [])) or False,
'website': terp.get('website', ''),
'license': terp.get('license', 'AGPL-3'),
'certificate': terp.get('certificate') or False,
'sequence': terp.get('sequence', 100),
'application': terp.get('application', False),
'auto_install': terp.get('auto_install', False),
'icon': terp.get('icon', False),
'summary': terp.get('summary', ''),
}
# update the list of available packages
@ -624,37 +672,6 @@ class module(osv.osv):
if not mod.description:
_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,))
def root_menus(self, cr, uid, ids, context=None):
""" Return root menu ids the menus created by the modules whose ids are
provided.
:param list[int] ids: modules to get menus from
"""
values = self.read(cr, uid, ids, ['name'], context=context)
module_names = [i['name'] for i in values]
ids = self.pool.get('ir.model.data').search(cr, uid, [ ('model', '=', 'ir.ui.menu'), ('module', 'in', module_names) ], context=context)
values = self.pool.get('ir.model.data').read(cr, uid, ids, ['res_id'], context=context)
all_menu_ids = [i['res_id'] for i in values]
root_menu_ids = []
for menu in self.pool.get('ir.ui.menu').browse(cr, uid, all_menu_ids, context=context):
while menu.parent_id:
menu = menu.parent_id
if not menu.id in root_menu_ids:
root_menu_ids.append((menu.sequence,menu.id))
root_menu_ids.sort()
root_menu_ids = [i[1] for i in root_menu_ids]
return root_menu_ids
class module_dependency(osv.osv):
_name = "ir.module.module.dependency"
_description = "Module dependency"

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