[MERGE] turnk
bzr revid: al@openerp.com-20121220020708-ioiaoz58ncgw5wg7
This commit is contained in:
commit
549c011893
|
@ -19,6 +19,7 @@ Depends:
|
|||
python-docutils,
|
||||
python-feedparser,
|
||||
python-gdata,
|
||||
python-jinja2,
|
||||
python-ldap,
|
||||
python-libxslt1,
|
||||
python-lxml,
|
||||
|
|
|
@ -141,10 +141,6 @@ for users who do not belong to the authorized groups:
|
|||
|
||||
.. note:: The tests related to this feature are in ``openerp/tests/test_acl.py``.
|
||||
|
||||
.. warning:: At the time of writing the implementation of this feature is partial
|
||||
and does not yet restrict read/write RPC access to the field.
|
||||
The corresponding test is written already but currently disabled.
|
||||
|
||||
Workflow transition rules
|
||||
+++++++++++++++++++++++++
|
||||
|
||||
|
|
|
@ -149,7 +149,6 @@ CREATE TABLE res_users (
|
|||
active boolean default True,
|
||||
login varchar(64) NOT NULL UNIQUE,
|
||||
password 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,
|
||||
|
@ -316,13 +315,29 @@ CREATE TABLE ir_module_module_dependency (
|
|||
primary key(id)
|
||||
);
|
||||
|
||||
CREATE TABLE res_company (
|
||||
CREATE TABLE res_partner (
|
||||
id serial NOT NULL,
|
||||
name character varying(64) not null,
|
||||
parent_id integer references res_company on delete set null,
|
||||
name character varying(128),
|
||||
lang varchar(64),
|
||||
company_id int,
|
||||
primary key(id)
|
||||
);
|
||||
|
||||
|
||||
CREATE TABLE res_currency (
|
||||
id serial PRIMARY KEY,
|
||||
name VARCHAR(32) NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE res_company (
|
||||
id serial PRIMARY KEY,
|
||||
name character varying(128) not null,
|
||||
parent_id integer references res_company on delete set null,
|
||||
partner_id integer not null references res_partner,
|
||||
currency_id integer not null references res_currency
|
||||
|
||||
);
|
||||
|
||||
CREATE TABLE res_lang (
|
||||
id serial PRIMARY KEY,
|
||||
name VARCHAR(64) NOT NULL UNIQUE,
|
||||
|
@ -375,16 +390,24 @@ CREATE TABLE ir_model_relation (
|
|||
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,active,company_id,partner_id) VALUES (1,'admin','admin',true,1,1);
|
||||
insert into ir_model_data (name,module,model,noupdate,res_id) VALUES ('user_root','base','res.users',true,1);
|
||||
|
||||
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);
|
||||
insert into res_partner (id, name, lang, company_id) VALUES (1, 'Your Company', 'en_US', 1);
|
||||
insert into ir_model_data (name,module,model,noupdate,res_id) VALUES ('main_partner','base','res.partner',true,1);
|
||||
|
||||
-- Compatibility purpose, to remove V6.0
|
||||
insert into ir_model_data (name,module,model,noupdate,res_id) values ('user_admin','base','res.users',True,1);
|
||||
insert into res_currency (id, name) VALUES (1, 'EUR');
|
||||
insert into ir_model_data (name,module,model,noupdate,res_id) VALUES ('EUR','base','res.currency',true,1);
|
||||
|
||||
insert into res_company (id, name, partner_id, currency_id) VALUES (1, 'Your Company', 1, 1);
|
||||
insert into ir_model_data (name,module,model,noupdate,res_id) VALUES ('main_company','base','res.company',true,1);
|
||||
|
||||
select setval('res_company_id_seq', 2);
|
||||
select setval('res_users_id_seq', 2);
|
||||
select setval('res_partner_id_seq', 2);
|
||||
select setval('res_currency_id_seq', 2);
|
|
@ -82,7 +82,7 @@ BZrmED0AAAAASUVORK5CYII=
|
|||
<field name="signature">--
|
||||
Mr Demo</field>
|
||||
<field name="company_id" ref="main_company"/>
|
||||
<field name="groups_id" eval="[(6,0,[ref('base.group_user')])]"/>
|
||||
<field name="groups_id" eval="[(6,0,[ref('base.group_user'), ref('base.group_partner_manager')])]"/>
|
||||
<field name="image">/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8LCwkMEQ8SEhEP
|
||||
ERETFhwXExQaFRERGCEYGh0dHx8fExciJCIeJBweHx7/2wBDAQUFBQcGBw4ICA4eFBEUHh4eHh4e
|
||||
Hh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh7/wAARCACEAIQDASIA
|
||||
|
|
|
@ -8,14 +8,15 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 5.0.4\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2012-12-03 16:01+0000\n"
|
||||
"PO-Revision-Date: 2012-12-10 22:51+0000\n"
|
||||
"Last-Translator: Felix Schubert <Unknown>\n"
|
||||
"PO-Revision-Date: 2012-12-18 19:16+0000\n"
|
||||
"Last-Translator: Thorsten Vocks (OpenBig.org) <thorsten.vocks@big-"
|
||||
"consulting.net>\n"
|
||||
"Language-Team: German <kde-i18n-doc@kde.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-12-12 04:37+0000\n"
|
||||
"X-Generator: Launchpad (build 16361)\n"
|
||||
"X-Launchpad-Export-Date: 2012-12-19 05:14+0000\n"
|
||||
"X-Generator: Launchpad (build 16378)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
@ -1087,7 +1088,7 @@ msgstr "Gemeinsame Verzeichnisse (WebDav)"
|
|||
#. module: base
|
||||
#: view:res.users:0
|
||||
msgid "Email Preferences"
|
||||
msgstr "EMail Optionen"
|
||||
msgstr "E-Mail Einstellungen"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_fields.py:196
|
||||
|
@ -2878,7 +2879,7 @@ msgstr "Meine Filter"
|
|||
#. module: base
|
||||
#: field:ir.actions.server,email:0
|
||||
msgid "Email Address"
|
||||
msgstr "Email Addresse"
|
||||
msgstr "E-Mail-Adresse"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_google_docs
|
||||
|
@ -3842,7 +3843,7 @@ msgstr "Datenbankstruktur"
|
|||
#. module: base
|
||||
#: model:ir.actions.act_window,name:base.action_partner_mass_mail
|
||||
msgid "Mass Mailing"
|
||||
msgstr "EMail senden"
|
||||
msgstr "Massen Mailing"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.yt
|
||||
|
@ -4185,7 +4186,7 @@ msgstr "Montenegro"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_fetchmail
|
||||
msgid "Email Gateway"
|
||||
msgstr "Email Gateway"
|
||||
msgstr "E-Mail Gateway"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_mail_server.py:466
|
||||
|
@ -4969,8 +4970,8 @@ msgid ""
|
|||
"the same values as those available in the condition field, e.g. `Dear [[ "
|
||||
"object.partner_id.name ]]`"
|
||||
msgstr ""
|
||||
"EMail Inhalt, der auch Python Ausdrücke in doppelten Klammern enthalten "
|
||||
"kann, ähnlich wie ein Konditionenfeld, z.B. `Geehrte(r) [[ "
|
||||
"E-Mail Inhalt, der auch Python Ausdrücke in doppelten Klammern enthalten "
|
||||
"kann, ähnlich wie ein Bedingungsfeld, z.B. `Sehr Geehrte(r) [[ "
|
||||
"object.partner_id.name ]]`"
|
||||
|
||||
#. module: base
|
||||
|
@ -6621,7 +6622,7 @@ msgstr "Aktion"
|
|||
#. module: base
|
||||
#: view:ir.actions.server:0
|
||||
msgid "Email Configuration"
|
||||
msgstr "Email Konfiguration"
|
||||
msgstr "E-Mail Konfiguration"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_ir_cron
|
||||
|
@ -8149,9 +8150,9 @@ msgid ""
|
|||
"the same values as those available in the condition field, e.g. `Hello [[ "
|
||||
"object.partner_id.name ]]`"
|
||||
msgstr ""
|
||||
"EMail Betreff, kann Ausdrücke in Doppelklammern wie ein Konditionen Feld "
|
||||
"E-Mail Betreff, kann Ausdrücke in Doppelklammern, wie ein Bedingungsfeld "
|
||||
"enthalten. \r\n"
|
||||
"zB `Hello [[ object.partner_id.name ]]`"
|
||||
"z.B. `Hallo [[ object.partner_id.name ]]`"
|
||||
|
||||
#. module: base
|
||||
#: help:res.partner,image:0
|
||||
|
@ -9846,9 +9847,9 @@ msgid ""
|
|||
"same values as for the condition field.\n"
|
||||
"Example: object.invoice_address_id.email, or 'me@example.com'"
|
||||
msgstr ""
|
||||
"Ausdruck, der die EMail Adresse des Empfängers ermittelt. Ähnlich "
|
||||
"Konditionen Feld.\n"
|
||||
"zB object.invoice_address_id.email, or 'me@example.com'"
|
||||
"Ausdruck, der die E-Mail Adresse des Empfängers zurückgibt. Ähnlich einem "
|
||||
"Bedingungsfeld.\n"
|
||||
"z.B.. object.invoice_address_id.email, oder 'me@example.com'"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_project_issue_sheet
|
||||
|
@ -10820,7 +10821,7 @@ msgstr ""
|
|||
#: selection:ir.module.module,state:0
|
||||
#: selection:ir.module.module.dependency,state:0
|
||||
msgid "Not Installed"
|
||||
msgstr "nicht installiert"
|
||||
msgstr "Nicht installiert"
|
||||
|
||||
#. module: base
|
||||
#: view:workflow.activity:0
|
||||
|
@ -11018,7 +11019,7 @@ msgstr "Laos"
|
|||
#: field:res.partner.address,email:0
|
||||
#, python-format
|
||||
msgid "Email"
|
||||
msgstr "EMail"
|
||||
msgstr "E-Mail Adresse"
|
||||
|
||||
#. module: base
|
||||
#: model:res.partner.category,name:base.res_partner_category_12
|
||||
|
@ -11848,17 +11849,17 @@ msgid ""
|
|||
msgstr ""
|
||||
"\n"
|
||||
"Dieses Modul wird für das Thunderbird-Plugin benötig, damit dieses "
|
||||
"funktionieren kann.\n"
|
||||
"eingesetzt werden kann.\n"
|
||||
"========================================================================\n"
|
||||
"\n"
|
||||
"Das Plugin erlaubt Ihnen die Archivierung von EMail mitsamt Anhängen in "
|
||||
"Das Plugin erlaubt Ihnen die Archivierung von E-Mails inklusive Anhängen in "
|
||||
"OpenERP-Objekten.\n"
|
||||
"Sie können einen Partner, einer Aufgabe, ein Projekt, ein analytisches Konto "
|
||||
"oder ein beliebiges \n"
|
||||
"anderes Objekt in OpenERP auswählen und die gewünschte EMail als .eml-Datei "
|
||||
"anderes Objekt in OpenERP auswählen und die gewünschte E-Mail als .eml-Datei "
|
||||
"dem Objekt als\n"
|
||||
"Anhang anfügen. Sie können aus der EMail neue Dokumente, in den Bereichen "
|
||||
"Kunden-Leads,\n"
|
||||
"Anhang anfügen. Sie können aus der E-Mail neue Dokumente, in den Bereichen "
|
||||
"Leads,\n"
|
||||
"Personal-Bewerber und Projekt-Problembearbeitung, anlegen.\n"
|
||||
" "
|
||||
|
||||
|
|
|
@ -8,14 +8,14 @@ msgstr ""
|
|||
"Project-Id-Version: openobject-server\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-12-03 16:01+0000\n"
|
||||
"PO-Revision-Date: 2012-08-20 15:47+0000\n"
|
||||
"Last-Translator: OpenERP Administrators <Unknown>\n"
|
||||
"PO-Revision-Date: 2012-12-17 20:41+0000\n"
|
||||
"Last-Translator: David Bowers <sales@skitzotek.com>\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-12-04 05:02+0000\n"
|
||||
"X-Generator: Launchpad (build 16335)\n"
|
||||
"X-Launchpad-Export-Date: 2012-12-18 04:58+0000\n"
|
||||
"X-Generator: Launchpad (build 16372)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
@ -48,7 +48,7 @@ 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 ""
|
||||
"The second argument of the many2many field %s must be a SQL table !You used "
|
||||
"The second argument of the many2many field %s must be a SQL table! You used "
|
||||
"%s, which is not a valid SQL table name."
|
||||
|
||||
#. module: base
|
||||
|
@ -101,7 +101,7 @@ msgstr ""
|
|||
msgid ""
|
||||
"Model name on which the method to be called is located, e.g. 'res.partner'."
|
||||
msgstr ""
|
||||
"Model name on which the method to be called is located, e.g. 'res.partner'."
|
||||
"Model name in which the method to be called is located, e.g. 'res.partner'."
|
||||
|
||||
#. module: base
|
||||
#: view:ir.module.module:0
|
||||
|
@ -123,6 +123,17 @@ msgid ""
|
|||
" * Product Attributes\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"A module which adds manufacturers and attributes to the product form.\n"
|
||||
"=====================================================================\n"
|
||||
"\n"
|
||||
"You can now define the following for a product:\n"
|
||||
"-----------------------------------------------\n"
|
||||
" * Manufacturer\n"
|
||||
" * Manufacturer Product Name\n"
|
||||
" * Manufacturer Product Code\n"
|
||||
" * Product Attributes\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.client,params:0
|
||||
|
@ -226,6 +237,35 @@ msgid ""
|
|||
"* Planned Revenue by Stage and User (graph)\n"
|
||||
"* Opportunities by Stage (graph)\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"The generic OpenERP Customer Relationship Management\n"
|
||||
"=====================================================\n"
|
||||
"\n"
|
||||
"This application enables a group of people to intelligently and efficiently "
|
||||
"manage leads, opportunities, meetings and phone calls.\n"
|
||||
"\n"
|
||||
"It manages key tasks such as communication, identification, prioritization, "
|
||||
"assignment, resolution and notification.\n"
|
||||
"\n"
|
||||
"OpenERP ensures that all cases are successfully tracked by users, customers "
|
||||
"and suppliers. It can automatically send reminders, escalate a request, "
|
||||
"trigger specific methods and many other actions based on your own enterprise "
|
||||
"rules.\n"
|
||||
"\n"
|
||||
"The greatest thing about this system is that users don't need to do anything "
|
||||
"special. The CRM module has an email gateway for the synchronization "
|
||||
"interface between mails and OpenERP. That way, users can just send emails to "
|
||||
"the request tracker.\n"
|
||||
"\n"
|
||||
"OpenERP will take care of thanking them for their message, automatically "
|
||||
"routing it to the appropriate staff and make sure all future correspondence "
|
||||
"gets to the right place.\n"
|
||||
"\n"
|
||||
"\n"
|
||||
"Dashboard for CRM will include:\n"
|
||||
"-------------------------------\n"
|
||||
"* Planned Revenue by Stage and User (graph)\n"
|
||||
"* Opportunities by Stage (graph)\n"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_model.py:397
|
||||
|
@ -235,7 +275,7 @@ msgid ""
|
|||
"them through Python code, preferably through a custom addon!"
|
||||
msgstr ""
|
||||
"Properties of base fields cannot be altered in this manner! Please modify "
|
||||
"them through Python code, preferably through a custom addon!"
|
||||
"them through Python code, preferably by a custom addon!"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/osv.py:130
|
||||
|
@ -318,6 +358,7 @@ msgid ""
|
|||
"The internal user that is in charge of communicating with this contact if "
|
||||
"any."
|
||||
msgstr ""
|
||||
"The internal user who is in charge of communicating with this contact if any."
|
||||
|
||||
#. module: base
|
||||
#: view:res.partner:0
|
||||
|
@ -625,6 +666,19 @@ msgid ""
|
|||
"* Use emails to automatically confirm and send acknowledgements for any "
|
||||
"event registration\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Organization and management of Events.\n"
|
||||
"======================================\n"
|
||||
"\n"
|
||||
"The event module allows you to efficiently organise events and all related "
|
||||
"tasks: planning, registration tracking,\n"
|
||||
"attendance, etc.\n"
|
||||
"\n"
|
||||
"Key Features\n"
|
||||
"------------\n"
|
||||
"* Manage your Events and Registrations\n"
|
||||
"* Use emails to automatically confirm and send acknowledgements for any "
|
||||
"event registration\n"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
|
@ -860,7 +914,7 @@ msgstr "Eritrea"
|
|||
#. module: base
|
||||
#: sql_constraint:res.company:0
|
||||
msgid "The company name must be unique !"
|
||||
msgstr "The company name must be unique !"
|
||||
msgstr "The company name must be unique!"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.ui.menu,name:base.menu_base_action_rule_admin
|
||||
|
@ -884,6 +938,9 @@ msgid ""
|
|||
"image, with aspect ratio preserved. Use this field anywhere a small image is "
|
||||
"required."
|
||||
msgstr ""
|
||||
"Small-sized image of this contact. It is automatically resized to 64x64 "
|
||||
"pixels with the aspect ratio preserved. Use this field anywhere a small "
|
||||
"image is required."
|
||||
|
||||
#. module: base
|
||||
#: help:ir.actions.server,mobile:0
|
||||
|
@ -892,7 +949,7 @@ msgid ""
|
|||
"invoice, then `object.invoice_address_id.mobile` is the field which gives "
|
||||
"the correct mobile number"
|
||||
msgstr ""
|
||||
"Provides fields that be used to fetch the mobile number, e.g. you select the "
|
||||
"Provides fields used to fetch the mobile number, e.g. you select the "
|
||||
"invoice, then `object.invoice_address_id.mobile` is the field which gives "
|
||||
"the correct mobile number"
|
||||
|
||||
|
@ -988,8 +1045,6 @@ msgid ""
|
|||
"Provide the field name that the record id refers to for the write operation. "
|
||||
"If it is empty it will refer to the active id of the object."
|
||||
msgstr ""
|
||||
"Provide the field name that the record id refers to for the write operation. "
|
||||
"If it is empty it will refer to the active id of the object."
|
||||
|
||||
#. module: base
|
||||
#: help:ir.actions.report.xml,report_type:0
|
||||
|
@ -1089,6 +1144,13 @@ msgid ""
|
|||
"actions(Sign in/Sign out) performed by them.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"This module aims to manage employees' attendances.\n"
|
||||
"==================================================\n"
|
||||
"\n"
|
||||
"Keeps account of the attendances of employees based on the\n"
|
||||
"actions (Sign in/Sign out) performed by them.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.nu
|
||||
|
@ -1148,7 +1210,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Expression containing a value specification. \n"
|
||||
"When Formula type is selected, this field may be a Python expression that "
|
||||
"can use the same values as for the condition field on the server action.\n"
|
||||
"can use the same values as the condition field on the server action.\n"
|
||||
"If Value type is selected, the value will be used directly without "
|
||||
"evaluation."
|
||||
|
||||
|
@ -1234,7 +1296,7 @@ msgstr "Guam (USA)"
|
|||
#. module: base
|
||||
#: sql_constraint:res.country:0
|
||||
msgid "The name of the country must be unique !"
|
||||
msgstr "The country name must be unique !"
|
||||
msgstr "The country name must be unique!"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.module.module,installed_version:0
|
||||
|
@ -1382,9 +1444,9 @@ msgid ""
|
|||
"decimal number [00,53]. All days in a new year preceding the first Monday "
|
||||
"are considered to be in week 0."
|
||||
msgstr ""
|
||||
"%W - Week number of the year (Monday as the first day of the week) as a "
|
||||
"decimal number [00,53]. All days in a new year preceding the first Monday "
|
||||
"are considered to be in week 0."
|
||||
"%W - Week number of the year (Monday being the first day of the week) as an "
|
||||
"integer [00,53]. All days in a new year preceding the first Monday are "
|
||||
"considered to be in week 0."
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/module/wizard/base_language_install.py:53
|
||||
|
@ -1724,8 +1786,8 @@ msgid ""
|
|||
"'%s' contains too many dots. XML ids should not contain dots ! These are "
|
||||
"used to refer to other modules data, as in module.reference_id"
|
||||
msgstr ""
|
||||
"'%s' contains too many dots. XML ids should not contain dots ! These are "
|
||||
"used to refer to other modules data, as in module.reference_id"
|
||||
"'%s' contains too many dots. XML ids should not contain dots! These are used "
|
||||
"to refer to other modules' data, as in module.reference_id"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_sale
|
||||
|
@ -1872,8 +1934,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."
|
||||
"Get the most out of your points of sale with fast sale encoding, simplified "
|
||||
"payment mode encoding, automatic pick list generation and more."
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_fields.py:165
|
||||
|
@ -2021,6 +2083,14 @@ msgid ""
|
|||
"with the effect of creating, editing and deleting either ways.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Synchronization of project task work entries with timesheet entries.\n"
|
||||
"====================================================================\n"
|
||||
"\n"
|
||||
"This module lets you transfer the entries under tasks defined for Project\n"
|
||||
"Management to the Timesheet line entries for a particular date and user\n"
|
||||
"with the effect of creating, editing and deleting either way.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_ir_model_access
|
||||
|
@ -2132,6 +2202,25 @@ msgid ""
|
|||
"* *Before Delivery*: A Draft invoice is created and must be paid before "
|
||||
"delivery\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Manage sales quotations and orders\n"
|
||||
"==================================\n"
|
||||
"\n"
|
||||
"This module makes the link between the sales and warehouse management "
|
||||
"applications.\n"
|
||||
"\n"
|
||||
"Preferences\n"
|
||||
"-----------\n"
|
||||
"* Shipping: Choice of delivery at once or partial delivery\n"
|
||||
"* Invoicing: choose how invoices will be paid\n"
|
||||
"* Incoterms: International Commercial terms\n"
|
||||
"\n"
|
||||
"You can choose flexible invoicing methods:\n"
|
||||
"\n"
|
||||
"* *On Demand*: Invoices are created manually from Sales Orders when needed\n"
|
||||
"* *On Delivery Order*: Invoices are generated from picking (delivery)\n"
|
||||
"* *Before Delivery*: A Draft invoice is created and must be paid before "
|
||||
"delivery\n"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.ui.menu,complete_name:0
|
||||
|
@ -2155,9 +2244,9 @@ msgid ""
|
|||
"decimal number [00,53]. All days in a new year preceding the first Sunday "
|
||||
"are considered to be in week 0."
|
||||
msgstr ""
|
||||
"%U - Week number of the year (Sunday as the first day of the week) as a "
|
||||
"decimal number [00,53]. All days in a new year preceding the first Sunday "
|
||||
"are considered to be in week 0."
|
||||
"%U - Week number of the year (Sunday being the first day of the week) as an "
|
||||
"integer [00,53]. All days in a new year preceding the first Sunday are "
|
||||
"considered to be in week 0."
|
||||
|
||||
#. module: base
|
||||
#: view:base.language.export:0
|
||||
|
@ -2316,6 +2405,28 @@ msgid ""
|
|||
"* Maximal difference between timesheet and attendances\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Record and validate timesheets and attendance easily\n"
|
||||
"====================================================\n"
|
||||
"\n"
|
||||
"This application supplies a new screen enabling you to manage both "
|
||||
"attendance (Sign in/Sign out) and your work encoding (timesheet) by period. "
|
||||
"Timesheet entries are made by employees each day. At the end of the defined "
|
||||
"period, employees validate their sheet and the manager must then approve "
|
||||
"their team's entries. Periods are defined in the company forms and you can "
|
||||
"set them to run monthly or weekly.\n"
|
||||
"\n"
|
||||
"The complete timesheet validation process is:\n"
|
||||
"---------------------------------------------\n"
|
||||
"* Draft sheet\n"
|
||||
"* Confirmation at the end of the period by the employee\n"
|
||||
"* Validation by the project manager\n"
|
||||
"\n"
|
||||
"The validation can be configured in the company:\n"
|
||||
"------------------------------------------------\n"
|
||||
"* Period size (Day, Week, Month)\n"
|
||||
"* Maximal difference between timesheet and attendances\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_fields.py:342
|
||||
|
@ -2371,7 +2482,7 @@ msgstr "Belize"
|
|||
#. module: base
|
||||
#: help:ir.actions.report.xml,header:0
|
||||
msgid "Add or not the corporate RML header"
|
||||
msgstr "Add or not the corporate RML header"
|
||||
msgstr "Optionally add the corporate RML header"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.ge
|
||||
|
@ -2410,6 +2521,32 @@ msgid ""
|
|||
"\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
" \n"
|
||||
"Belgian localization for in/outgoing invoices (prereq to account_coda):\n"
|
||||
"=========================================================================\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"
|
||||
"-----------------------------------------------------------------------------"
|
||||
"----------------------------------------\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\n"
|
||||
"specified on the Partner records. A 'random' Structured Communication will\n"
|
||||
"generated if no algorithm is specified on the Partner record. \n"
|
||||
"\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.pl
|
||||
|
@ -2454,8 +2591,8 @@ msgid ""
|
|||
"order in Object, and you can have loop on the sales order line. Expression = "
|
||||
"`object.order_line`."
|
||||
msgstr ""
|
||||
"Enter the field/expression that will return the list. E.g. select the sale "
|
||||
"order in Object, and you can have loop on the sales order line. Expression = "
|
||||
"Enter the field/expression that will return the list. E.g. selecting the "
|
||||
"sale order in Object, you can loop on the sales order line: Expression = "
|
||||
"`object.order_line`."
|
||||
|
||||
#. module: base
|
||||
|
@ -2546,6 +2683,27 @@ msgid ""
|
|||
"Print product labels with barcode.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"This is the base module for managing products and pricelists in OpenERP.\n"
|
||||
"========================================================================\n"
|
||||
"\n"
|
||||
"Products support variants, various pricing methods, supplier information,\n"
|
||||
"made to stock/order, different units of measures, packaging and other "
|
||||
"properties.\n"
|
||||
"\n"
|
||||
"Pricelists support:\n"
|
||||
"-------------------\n"
|
||||
" * Multiple-levels of discount (by product, category, quantities)\n"
|
||||
" * Compute price based on different criteria:\n"
|
||||
" * Other pricelist\n"
|
||||
" * Cost price\n"
|
||||
" * List price\n"
|
||||
" * Supplier price\n"
|
||||
"\n"
|
||||
"Set pricelist preferences by product and/or partner.\n"
|
||||
"\n"
|
||||
"Print product labels with barcode.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_analytic_default
|
||||
|
@ -2563,6 +2721,18 @@ msgid ""
|
|||
" * Date\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Set default values for your analytic accounts.\n"
|
||||
"==============================================\n"
|
||||
"\n"
|
||||
"Allows to automatically select analytic accounts based on criteria:\n"
|
||||
"---------------------------------------------------------------------\n"
|
||||
" * Product\n"
|
||||
" * Partner\n"
|
||||
" * User\n"
|
||||
" * Company\n"
|
||||
" * Date\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: field:res.company,rml_header1:0
|
||||
|
@ -2887,6 +3057,29 @@ msgid ""
|
|||
"* Purchase Analysis\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Manage goods requirement by Purchase Orders easily\n"
|
||||
"==================================================\n"
|
||||
"\n"
|
||||
"Purchase management enables you to track your suppliers' price quotations "
|
||||
"and convert them into purchase orders if necessary.\n"
|
||||
"OpenERP has several methods of monitoring invoices and tracking the receipt "
|
||||
"of ordered goods. You can handle partial deliveries in OpenERP with the "
|
||||
"ability to keep track of items yet to be delivered from orders and to issue "
|
||||
"reminders automatically.\n"
|
||||
"\n"
|
||||
"OpenERP’s replenishment-management rules enable the system to generate draft "
|
||||
"purchase orders automatically. Alternatively you can configure it to run a "
|
||||
"lean process driven entirely by current production needs.\n"
|
||||
"\n"
|
||||
"Dashboard / Reports for Purchase Management will include:\n"
|
||||
"---------------------------------------------------------\n"
|
||||
"* Request for Quotations\n"
|
||||
"* Purchase Orders Waiting Approval \n"
|
||||
"* Monthly Purchases by Category\n"
|
||||
"* Receptions Analysis\n"
|
||||
"* Purchase Analysis\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_ir_actions_act_window_close
|
||||
|
@ -3016,6 +3209,15 @@ msgid ""
|
|||
" * ``base_stage``: stage management\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"This module handles state and stage. It is derived from the crm_base and "
|
||||
"crm_case classes of crm.\n"
|
||||
"============================================================================="
|
||||
"======================\n"
|
||||
"\n"
|
||||
" * ``base_state``: state management\n"
|
||||
" * ``base_stage``: stage management\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_web_linkedin
|
||||
|
@ -3312,6 +3514,8 @@ msgid ""
|
|||
"For more details about translating OpenERP in your language, please refer to "
|
||||
"the"
|
||||
msgstr ""
|
||||
"For more details about translating OpenERP into your language, please refer "
|
||||
"to the"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,image:0
|
||||
|
@ -3563,19 +3767,11 @@ 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
|
||||
msgid "Select module package to import (.zip file):"
|
||||
msgstr "Select module package to import (.zip file):"
|
||||
msgstr "Select module package to import (*.zip file):"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
|
@ -3674,6 +3870,14 @@ msgid ""
|
|||
"easily\n"
|
||||
"keep track and order all your purchase orders.\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"This module allows you to manage your Purchase Requisition.\n"
|
||||
"===========================================================\n"
|
||||
"\n"
|
||||
"When a purchase order is created, you now have the opportunity to save the\n"
|
||||
"related requisition. By regrouping, this new object will allow you to "
|
||||
"easily\n"
|
||||
"keep track of and order all your purchase orders.\n"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.mail_server,smtp_host:0
|
||||
|
@ -3798,13 +4002,13 @@ msgstr "If not set, acts as a default value for new resources"
|
|||
#: code:addons/orm.py:4213
|
||||
#, python-format
|
||||
msgid "Recursivity Detected."
|
||||
msgstr "Recursivity detected."
|
||||
msgstr "Recursion detected."
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/module/module.py:345
|
||||
#, python-format
|
||||
msgid "Recursion error in modules dependencies !"
|
||||
msgstr "Recursion error in modules dependencies !"
|
||||
msgstr "Recursion error in modules dependencies!"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_analytic_user_function
|
||||
|
@ -3947,7 +4151,7 @@ msgstr "12. %w ==> 5 ( Friday is the 6th day)"
|
|||
#. module: base
|
||||
#: constraint:res.partner.category:0
|
||||
msgid "Error ! You can not create recursive categories."
|
||||
msgstr "Error ! You can not create recursive categories."
|
||||
msgstr "Error! You can not create recursive categories."
|
||||
|
||||
#. module: base
|
||||
#: view:res.lang:0
|
||||
|
|
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
File diff suppressed because it is too large
Load Diff
|
@ -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-12-03 16:01+0000\n"
|
||||
"PO-Revision-Date: 2012-12-15 23:55+0000\n"
|
||||
"PO-Revision-Date: 2012-12-18 23:39+0000\n"
|
||||
"Last-Translator: Sergio Corato <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-12-16 04:44+0000\n"
|
||||
"X-Generator: Launchpad (build 16372)\n"
|
||||
"X-Launchpad-Export-Date: 2012-12-19 05:14+0000\n"
|
||||
"X-Generator: Launchpad (build 16378)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
@ -726,6 +726,19 @@ msgid ""
|
|||
"* Use emails to automatically confirm and send acknowledgements for any "
|
||||
"event registration\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Organizzazione e gestione di Eventi.\n"
|
||||
"======================================\n"
|
||||
"\n"
|
||||
"Il modulo Eventi consente di organizzare eventi e tutte le attività "
|
||||
"collegate: pianificazione, tracciamento delle registrazioni, presenze "
|
||||
"ecc...\n"
|
||||
"\n"
|
||||
"Caratteristiche principali\n"
|
||||
"------------\n"
|
||||
"* Gestione di Eventi e Registrazioni\n"
|
||||
"* Utilizzo di email per confermare ed inviare automaticamente ringraziamenti "
|
||||
"per ciascuna registrazione ad un evento\n"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
|
@ -1296,7 +1309,7 @@ msgstr "Principato di Andorra"
|
|||
#. module: base
|
||||
#: field:ir.rule,perm_read:0
|
||||
msgid "Apply for Read"
|
||||
msgstr "Applica per leggere"
|
||||
msgstr "Salva per leggere"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.mn
|
||||
|
@ -1436,7 +1449,7 @@ msgstr "Contribuenti"
|
|||
#. module: base
|
||||
#: field:ir.rule,perm_unlink:0
|
||||
msgid "Apply for Delete"
|
||||
msgstr "Applica per eliminare"
|
||||
msgstr "Salva per eliminare"
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.property,type:0
|
||||
|
@ -2434,7 +2447,7 @@ msgstr "Bahamas"
|
|||
#. module: base
|
||||
#: field:ir.rule,perm_create:0
|
||||
msgid "Apply for Create"
|
||||
msgstr "Applica per creare"
|
||||
msgstr "Salva per creare"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.category,name:base.module_category_tools
|
||||
|
@ -9281,7 +9294,7 @@ msgstr "Gestione riparazioni"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_account_asset
|
||||
msgid "Assets Management"
|
||||
msgstr "Gestione cespiti"
|
||||
msgstr "Gestione Immobilizzazioni"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.model.access:0
|
||||
|
@ -10677,7 +10690,7 @@ msgstr ""
|
|||
#: model:ir.actions.act_window,name:base.action_view_base_module_upgrade
|
||||
#, python-format
|
||||
msgid "Apply Schedule Upgrade"
|
||||
msgstr ""
|
||||
msgstr "Esegui Aggiornamento Programmato"
|
||||
|
||||
#. module: base
|
||||
#: view:workflow.activity:0
|
||||
|
@ -12670,6 +12683,17 @@ msgid ""
|
|||
"\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Gestione immobilizzazioni finanziaria e contabile.\n"
|
||||
"==========================================\n"
|
||||
"\n"
|
||||
"Questo Modulo gestisce le immobilizzazioni possedute da un'azienda o da "
|
||||
"un'individuo. Tiene \n"
|
||||
"traccia dei deprezzamenti subiti da queste immobilizzazioni. E permette di "
|
||||
"creare Movimenti \n"
|
||||
"delle righe di ammortamento.\n"
|
||||
"\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: field:ir.cron,numbercall:0
|
||||
|
@ -12740,7 +12764,7 @@ msgstr "Grecia"
|
|||
#. module: base
|
||||
#: view:res.config:0
|
||||
msgid "Apply"
|
||||
msgstr ""
|
||||
msgstr "Salva"
|
||||
|
||||
#. module: base
|
||||
#: field:res.request,trigger_date:0
|
||||
|
@ -13406,7 +13430,7 @@ msgstr "Dipendenze"
|
|||
#. module: base
|
||||
#: field:res.company,vat:0
|
||||
msgid "Tax ID"
|
||||
msgstr "Codice Fiscale"
|
||||
msgstr "Partita IVA"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_account_bank_statement_extensions
|
||||
|
@ -14417,7 +14441,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: field:ir.rule,perm_write:0
|
||||
msgid "Apply for Write"
|
||||
msgstr ""
|
||||
msgstr "Salva per Scrivere"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_stock
|
||||
|
@ -14571,7 +14595,7 @@ msgstr "File icona web"
|
|||
#. module: base
|
||||
#: model:ir.ui.menu,name:base.menu_view_base_module_upgrade
|
||||
msgid "Apply Scheduled Upgrades"
|
||||
msgstr "Applica Aggiornamenti Programmati"
|
||||
msgstr "Esegui Aggiornamenti Programmati"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_sale_journal
|
||||
|
@ -14728,7 +14752,7 @@ msgstr "Accesso"
|
|||
#: field:res.partner,vat:0
|
||||
#, python-format
|
||||
msgid "TIN"
|
||||
msgstr "Codice Fiscale"
|
||||
msgstr "Partita IVA"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.aw
|
||||
|
|
|
@ -7,14 +7,14 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 6.0.0-rc1\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2012-12-03 16:01+0000\n"
|
||||
"PO-Revision-Date: 2012-12-14 04:43+0000\n"
|
||||
"PO-Revision-Date: 2012-12-18 05:45+0000\n"
|
||||
"Last-Translator: gobi <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-12-15 05:03+0000\n"
|
||||
"X-Generator: Launchpad (build 16372)\n"
|
||||
"X-Launchpad-Export-Date: 2012-12-19 05:14+0000\n"
|
||||
"X-Generator: Launchpad (build 16378)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
@ -357,6 +357,10 @@ msgid ""
|
|||
"\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"p\n"
|
||||
"\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_sale
|
||||
|
@ -2275,6 +2279,7 @@ msgstr "БЗ-д даалгавар үүсгэх"
|
|||
#, python-format
|
||||
msgid "This column contains module data and cannot be removed!"
|
||||
msgstr ""
|
||||
"Энэ багана нь модулийн өгөгдлийг хадгалж байгаа тул устгагдах боломжгүй!"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.attachment,res_model:0
|
||||
|
@ -2327,6 +2332,13 @@ msgid ""
|
|||
" templates to target objects.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
" * Дансны Мод, Татвар, Татварын Код, Журналь, Дансны Үлгэр, Шинжилгээний "
|
||||
"Дансны Мод, Шинжилгээний Журналиудад олон хэлийг нэмдэг.\n"
|
||||
" * Тохируулах харилцах нь дараахыг өөрчилдөг.\n"
|
||||
" - Үлгэрээс авагдсан Дансны Модт, Татвар, Татварын Код, Мөчлөг зэрэгт "
|
||||
"орчуулгыг хуулна.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: field:workflow.transition,act_from:0
|
||||
|
@ -2418,6 +2430,25 @@ msgid ""
|
|||
"* *Before Delivery*: A Draft invoice is created and must be paid before "
|
||||
"delivery\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Борлуулалтын үнийн санал, захиалгыг менеж хийх модуль\n"
|
||||
"==================================\n"
|
||||
"\n"
|
||||
"Энэ модуль нь борлуулалт болон агуулахын модулийн хооронд холбох үүрэгтэй.\n"
|
||||
"\n"
|
||||
"Тохиргоо\n"
|
||||
"-----------\n"
|
||||
"* Хүргэлт: Хүргэлтийн сонголт буюу хэсэгчилсэн эсвэл нэг мөсөн\n"
|
||||
"* Нэхэмжлэл: Нэхэмжлэл хэрхэн төлөгдөхийг сонгоно\n"
|
||||
"* Инкотерм: Олон улсын худалдааны нөхцөл\n"
|
||||
"\n"
|
||||
"Нэхэмжлэх уян хатан аргуудыг сонгох боломжтой:\n"
|
||||
"\n"
|
||||
"* *Шаардалтаар*: Борлуулалтын захиалгаас дуртай үедээ гараар нэхэмжлэл "
|
||||
"үүсгэх\n"
|
||||
"* *Хүргэх захиалгаар*: Хүргэх захиалгаар нэхэмжлэл үүсгэх\n"
|
||||
"* *Хүргэлтээс өмнө*: Ноорог нэхэмжлэл үүсгэгдэж хүргэхээс өмнө төлөгдсөн "
|
||||
"байх ёстой\n"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.ui.menu,complete_name:0
|
||||
|
@ -2448,7 +2479,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: view:base.language.export:0
|
||||
msgid "PO(T) format: you should edit it with a PO editor such as"
|
||||
msgstr ""
|
||||
msgstr "PO(T) формат: PO текст засварлагчаар засварлах нь зохимжтой"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.ui.menu,name:base.menu_administration
|
||||
|
@ -2472,7 +2503,7 @@ msgstr "Үүсгэх / Бичих / Хувилах"
|
|||
#. module: base
|
||||
#: view:ir.sequence:0
|
||||
msgid "Second: %(sec)s"
|
||||
msgstr ""
|
||||
msgstr "Секунд: %(sec)s"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.act_window,view_mode:0
|
||||
|
@ -2537,7 +2568,7 @@ msgstr "Багамийн арлууд"
|
|||
#. module: base
|
||||
#: field:ir.rule,perm_create:0
|
||||
msgid "Apply for Create"
|
||||
msgstr ""
|
||||
msgstr "Үүсгэхээр Хэрэгжүүлэх"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.category,name:base.module_category_tools
|
||||
|
@ -2560,6 +2591,8 @@ msgid ""
|
|||
"Appears by default on the top right corner of your printed documents (report "
|
||||
"header)."
|
||||
msgstr ""
|
||||
"Хэвлэгдсэн баримтын баруун дээд (тайлангийн толгой) оройд анхны байдлаараа "
|
||||
"байрладаг."
|
||||
|
||||
#. module: base
|
||||
#: field:base.module.update,update:0
|
||||
|
@ -2602,6 +2635,27 @@ msgid ""
|
|||
"* Maximal difference between timesheet and attendances\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Цаг бүртгэл болон ирцийг хялбараар хөтлөж, шалгадаг\n"
|
||||
"=====================================================\n"
|
||||
"\n"
|
||||
"Энэ аппликэйшн нь ирц (Нэвтрэх/Гарах), цаг бүртгэлийг бүртгэх ажлыг "
|
||||
"гүйцэтгэх нэмэлт цонхтой байдаг. Цаг бүртгэлийн мөрүүдийг ажилчид өдөр бүр "
|
||||
"хөтлөнө. Тодорхойлогсдон мөчлөгийн төгсгөлд ажилчин өөрийн цагийн хуудсыг "
|
||||
"шалгах бөгөөд менежер нь цааш баталдаг. Мөчлөг нь компаний тохиргооны "
|
||||
"маягтад тодорхойлогдсон байдаг сараа, долооногоор тааруулах боломжтой. \n"
|
||||
"\n"
|
||||
"Цаг бүртгэлийн шалгалтын бүрэн ажлын урсгал:\n"
|
||||
"---------------------------------------------\n"
|
||||
"* Ноорог хуудас\n"
|
||||
"* Мөчлөгийн төгсгөлд ажилнчин цагийн хуудсыг магадлаж батлана\n"
|
||||
"* Төслийн менежер шалгана\n"
|
||||
"\n"
|
||||
"Шалгалт нь компаний тохиргоонд тохируулах боломжтой:\n"
|
||||
"------------------------------------------------\n"
|
||||
"* Мөчлөгийн хэмжээ (Өдөрөөр, Долооогоор, Сараар)\n"
|
||||
"* Цагийн хуудас ирцийн зөвшөөрөгдөх хамгийн их ялгаа\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_fields.py:342
|
||||
|
@ -2609,6 +2663,8 @@ msgstr ""
|
|||
msgid ""
|
||||
"No matching record found for %(field_type)s '%(value)s' in field '%%(field)s'"
|
||||
msgstr ""
|
||||
"%(field_type)s талбарт тохирох '%(value)s' гэсэн утга '%%(field)s' талбарт "
|
||||
"алга"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.act_window,help:base.action_ui_view
|
||||
|
@ -2779,6 +2835,8 @@ msgid ""
|
|||
"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"
|
||||
msgstr ""
|
||||
"Харагдацын төрөл: Мөчир төрөл нь мөчир төрлөөр харахад хэрэглэгдэх 'tree' "
|
||||
"утга эсвэл 'form' утгаар энгийн жагсаалт харагдацыг тохируулдаг."
|
||||
|
||||
#. module: base
|
||||
#: sql_constraint:ir.ui.view_sc:0
|
||||
|
@ -2831,6 +2889,26 @@ msgid ""
|
|||
"Print product labels with barcode.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Энэ модуль нь OpenERP-д үнийн хүснэгт болон барааг менеж хийх модуль юм.\n"
|
||||
"========================================================================\n"
|
||||
"\n"
|
||||
"Бараа нь хувилбарууд, ялгаатай үнийн аргууд, нийлүүлэгчийн мэдээлэл, "
|
||||
"захиалуулах, хадгалуулах, ялгаатай хэмжих нэгжүүд, савлалт, үзүүлэлтүүд гэх "
|
||||
"мэт олон зүйлийг дэмждэг.\n"
|
||||
"\n"
|
||||
"Үнийн хүснэгт нь дараах зүйлсийг дэмждэг:\n"
|
||||
" * Олон түвшний хөнгөлөлт (бараагаар, ангилалаар, тоо ширхэгээр)\n"
|
||||
" * Ялгаатай шалгууруудаар үнэ бодогдох\n"
|
||||
" * Өөр үнийн хүснэгт,\n"
|
||||
" * Өртөг үнэ,\n"
|
||||
" * Суурь үнэ,\n"
|
||||
" * Нийлүүлэгчийн үнэ, …\n"
|
||||
"\n"
|
||||
"Үнийн хүснэгтийн бараагаар болон/эсвэл харилцагчаарх тохиргоо.\n"
|
||||
"\n"
|
||||
"Барааны шошгыг зураасан кодтой хэвлэх.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_analytic_default
|
||||
|
@ -2848,11 +2926,22 @@ msgid ""
|
|||
" * Date\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Шинжилгээний дансдад анхны утгыг тохируулна.\n"
|
||||
"Нөхцөл үндэслэн шинжилгээний дансыг автомат сонгох боломжийг олгоно:\n"
|
||||
"=====================================================================\n"
|
||||
"\n"
|
||||
" * Бараа\n"
|
||||
" * Харилцагч\n"
|
||||
" * Хэрэглэгч\n"
|
||||
" * Компани\n"
|
||||
" * Огноо\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: field:res.company,rml_header1:0
|
||||
msgid "Company Slogan"
|
||||
msgstr ""
|
||||
msgstr "Компаний уриа"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.bb
|
||||
|
@ -2876,7 +2965,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_auth_oauth_signup
|
||||
msgid "Signup with OAuth2 Authentication"
|
||||
msgstr ""
|
||||
msgstr "OAuth2 эрхийн хяналтаар бүртгүүлэх"
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.model,state:0
|
||||
|
@ -2903,7 +2992,7 @@ msgstr "Грек / Ελληνικά"
|
|||
#. module: base
|
||||
#: field:res.company,custom_footer:0
|
||||
msgid "Custom Footer"
|
||||
msgstr ""
|
||||
msgstr "Өөриймшүүлсэн Хөл"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_sale_crm
|
||||
|
@ -2971,7 +3060,7 @@ msgstr "Хурдан холбоосын нэр"
|
|||
#. module: base
|
||||
#: field:res.partner,contact_address:0
|
||||
msgid "Complete Address"
|
||||
msgstr ""
|
||||
msgstr "Бүтэн Хаяг"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.actions.act_window,limit:0
|
||||
|
@ -3031,6 +3120,39 @@ msgid ""
|
|||
"* Monthly Turnover (Graph)\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Борлуулалтын үнийн санал, захиалгыг менежмент хийх модуль\n"
|
||||
"==================================\n"
|
||||
"\n"
|
||||
"Энэ аппликэйшн нь борлуулалтын бүх захиалга болон түүхийг хөтлөж оновчтой, "
|
||||
"зохистой аргаар борлуулалтын зорилгыг менежмент хийх боломжийг олгодог.\n"
|
||||
"\n"
|
||||
"Борлуулалтын бүрэн ажлын урсгалыг удирддаг:\n"
|
||||
"\n"
|
||||
"* **Үнийн санал** -> **Борлуулалтын Захиалга** -> **Нэхэмжлэл**\n"
|
||||
"\n"
|
||||
"Тохиргоо (Агуулахын модултай хамт суусан үед)\n"
|
||||
"------------------------------------------------------\n"
|
||||
"\n"
|
||||
"Хэрэв агуулахын модуль суусан байвал дараах тохиргоонуудыг хийх боломжтой:\n"
|
||||
"\n"
|
||||
"* Хүргэлт: Бүхэлд нь эсвэл хэсэгчилж хүргэх сонголт\n"
|
||||
"* Нэхэмжлэл: Нэхэмжлэл хэрхэн төлөгдөх сонголт\n"
|
||||
"* Инкотерм: Олон улсын худалдааны нөхцөл\n"
|
||||
"\n"
|
||||
"Нэхэмжлэх уян хатан аргуудыг сонгох боломжтой:\n"
|
||||
"\n"
|
||||
"* *Шаардалтаар*: Борлуулалтын захиалгаас дуртай үедээ гараар үүсгэх\n"
|
||||
"* *Хүргэх захиалгаар*: Нэхэмжлэх нь бэлтгэх(хүргэх) баримтаас үүснэ\n"
|
||||
"* *Хүргэлтээс өмнө*: Ноорог нэмэжлэл үүсгэгдэж хүргэхээс өмнө төлөгдсөн байх "
|
||||
"ёстой\n"
|
||||
"\n"
|
||||
"\n"
|
||||
"Борлуулалтын Менежерийн Хянах Самбар нь дараах зүйлсийг агуулна\n"
|
||||
"------------------------------------------------\n"
|
||||
"* Миний Үнийн Саналууд\n"
|
||||
"* Сарын Эргэц (График)\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.act_window,res_id:0
|
||||
|
@ -3043,7 +3165,7 @@ msgstr "Бичлэгийн ID"
|
|||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
msgid "My Filters"
|
||||
msgstr ""
|
||||
msgstr "Миний Шүүлтүүрүүд"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.server,email:0
|
||||
|
@ -3057,12 +3179,15 @@ msgid ""
|
|||
"Module to attach a google document to any model.\n"
|
||||
"================================================\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Google баримтыг хавсаргадаг модуль.\n"
|
||||
"================================================\n"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_fields.py:334
|
||||
#, python-format
|
||||
msgid "Found multiple matches for field '%%(field)s' (%d matches)"
|
||||
msgstr ""
|
||||
msgstr "'%%(field)s' талбарын хувьд олон олдоц байна (%d олдоцууд)"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
|
@ -3096,7 +3221,7 @@ msgstr "Клиент рүү харах таагийн хамт илгээгдс
|
|||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_contacts
|
||||
msgid "Contacts, People and Companies"
|
||||
msgstr ""
|
||||
msgstr "Холбогч, Хүмүүс, Компаниуд"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.tt
|
||||
|
@ -3129,7 +3254,7 @@ msgstr "Менежер"
|
|||
#: code:addons/base/ir/ir_model.py:718
|
||||
#, python-format
|
||||
msgid "Sorry, you are not allowed to access this document."
|
||||
msgstr ""
|
||||
msgstr "Уулаарай, та энэ баримт руу хандах эрхгүй"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.py
|
||||
|
@ -3144,7 +3269,7 @@ msgstr "Фиджи"
|
|||
#. module: base
|
||||
#: view:ir.actions.report.xml:0
|
||||
msgid "Report Xml"
|
||||
msgstr ""
|
||||
msgstr "Тайлангийн Xml"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_purchase
|
||||
|
@ -3173,6 +3298,32 @@ msgid ""
|
|||
"* Purchase Analysis\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Худалдан авалтын захиалгаар барааны шаардлагыг хялбараар менежмент хийнэ\n"
|
||||
"==================================================\n"
|
||||
"\n"
|
||||
"Худалдан авалтын менежмент нь нийлүүлэгчийн үнийн саналыг хөтлөж түүнийгээ "
|
||||
"шаардлагатай бол худалдан авах захиалга руу хөрвүүлэх боломжийг олгодог.\n"
|
||||
"\n"
|
||||
"OpenERP нь нэхэмжлэхийг ажиглах хэд хэдэн аргатай мөн захиалсан барааны "
|
||||
"хүлээн авалтыг ажиглах хэд хэдэн аргатай. OpenERP нь хэсэгчилсэн хүргэлт, "
|
||||
"хүлээн авалтыг удирдаж чаддаг бөгөөд үлдэгдэл хүргэлт, хүлээн авалтыг "
|
||||
"автоматаар сануулах боломжтой. \n"
|
||||
"\n"
|
||||
"OpenERP-н нөхөн дүүргэх менежментийн дүрэмүүд нь худалдан авах ноорог "
|
||||
"захиалгыг автоматаар үүсгэх боломжийг олгодог. Эсвэл үйлдвэрлэл зэрэг "
|
||||
"процессоос автоматаар худалдан авах захиалга автомат үүсэх байдлаар "
|
||||
"тохируурлах боломжтой.\n"
|
||||
"\n"
|
||||
"Худалдан Авах Менежментийн Хянах Самбар / Тайлангууд нь дараах зүйлсийг "
|
||||
"агуулна:\n"
|
||||
"---------------------------------------------------------\n"
|
||||
"* Үнийн саналын хүсэлтүүд\n"
|
||||
"* Батлахыг хүлээж буй худалдан авах захиалгууд\n"
|
||||
"* Сар тутамын худалдан авалт төрөлөөр\n"
|
||||
"* Хүлээн авалтын шинжилгээ\n"
|
||||
"* Худалдан авалтын шинжилгээ\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_ir_actions_act_window_close
|
||||
|
@ -3205,6 +3356,19 @@ msgid ""
|
|||
" * Unlimited \"Group By\" levels (not stacked), two cross level analysis "
|
||||
"(stacked)\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Веб Клиентийн График Харагдац.\n"
|
||||
"===========================\n"
|
||||
"\n"
|
||||
" * <graph> харагдацыг таньж задалдаг бөгөөд харуулахдаа динамикаар "
|
||||
"өөрчлөгддөг\n"
|
||||
" * Графикийн төрөлүүд: бялуу, шугам, муж, тэгш өнцөгт, нум\n"
|
||||
" * Муж, тэгш өнцөгтийн хувьд Давхарласан/Давхарлаагүй\n"
|
||||
" * Тайлбарууд: орой, дотоот (орой/зүүн), нуугдсан\n"
|
||||
" * Боломж: PNG эсвэл CSV-р татаж авах, өгөгдлийн хүснэгтийг тольдох, "
|
||||
"чиглэлийг солих\n"
|
||||
" * \"Бүлэглэх\" түвшингүүд нь хязгааргүй (давхарлаагүй бол), хоёр "
|
||||
"хэмжээст шинжилгээ (давхарласан бол)\n"
|
||||
|
||||
#. module: base
|
||||
#: view:res.groups:0
|
||||
|
@ -3215,7 +3379,7 @@ msgstr "Удамшсан"
|
|||
#: code:addons/base/ir/ir_fields.py:147
|
||||
#, python-format
|
||||
msgid "yes"
|
||||
msgstr ""
|
||||
msgstr "тийм"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.model.fields,serialization_field_id:0
|
||||
|
@ -3245,7 +3409,7 @@ msgstr ""
|
|||
#: code:addons/base/ir/ir_fields.py:175
|
||||
#, python-format
|
||||
msgid "'%s' does not seem to be an integer for field '%%(field)s'"
|
||||
msgstr ""
|
||||
msgstr "'%s' нь '%%(field)s' талбарын хувьд бүхэл тоо биш бололтой"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.category,description:base.module_category_report_designer
|
||||
|
@ -3302,11 +3466,20 @@ msgid ""
|
|||
" * ``base_stage``: stage management\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Энэ модуль нь төлөв болон үеүүдийг удирддаг. Энэ нь crm-н crm_base болон "
|
||||
"crm_case классуудад суурилдаг.\n"
|
||||
"============================================================================="
|
||||
"======================\n"
|
||||
"\n"
|
||||
" * ``base_state``: төлөвийн менежмент\n"
|
||||
" * ``base_stage``: үеийн менежмент\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_web_linkedin
|
||||
msgid "LinkedIn Integration"
|
||||
msgstr ""
|
||||
msgstr "LinkedIn Уялдуулалт"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/orm.py:2021
|
||||
|
@ -3355,6 +3528,8 @@ msgid ""
|
|||
"the user will have an access to the sales configuration as well as statistic "
|
||||
"reports."
|
||||
msgstr ""
|
||||
"хэрэглэгч нь борлуулалтын тохиргоо болон статистикийн тайлангууд руу хандах "
|
||||
"хандалттай болох болно."
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.nz
|
||||
|
@ -3418,6 +3593,18 @@ msgid ""
|
|||
" above. Specify the interval information and partner to be invoice.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Давтагдах баримтуудыг үүсгэх.\n"
|
||||
"===========================\n"
|
||||
"\n"
|
||||
"Энэ модуль нь шинэ баримтуудыг үүсгэх, түүнд бүртгүүлэх боломжийг олгодог.\n"
|
||||
"\n"
|
||||
"ө.х. тогтмол хугацаатай үүсгэх нэхэмжлэхийг тохируулахдаа:\n"
|
||||
"-------------------------------------------------------------\n"
|
||||
" * Нэхэмжлэх обьект дээр суурилсан баримтын төрөлийг тодорхойлно\n"
|
||||
" * Эх баримт нь дээрхэд тодорхойлсон баримт байхаар бүртгэлийг "
|
||||
"тодорхойлно. тогтмол хугацаа болон харилцагчийн мэдээллийг зааж өгнө.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: constraint:res.company:0
|
||||
|
@ -3440,6 +3627,8 @@ msgid ""
|
|||
"the user will have an access to the human resources configuration as well as "
|
||||
"statistic reports."
|
||||
msgstr ""
|
||||
"хэрэглэгч нь хүний нөөцийн тохиргоо болон статистикийн тайлан руу хандах "
|
||||
"эрхтэй болох болно."
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_web_shortcuts
|
||||
|
@ -3455,6 +3644,16 @@ msgid ""
|
|||
"shortcut.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Веб клиентэд хурдавчилсан боломжийг нээдэг.\n"
|
||||
"===========================================\n"
|
||||
"\n"
|
||||
"Хэрэглэгчийн ямарваа хурдавчилсан холбоосууд байгаа бол системийн tray-д "
|
||||
"нэмж өгдөг.\n"
|
||||
"\n"
|
||||
"Харагдацын нэр хэсэгт хурдавчлалийн тэмдэг зурагийг нэмдэг бөгөөд үүгээр "
|
||||
"хурдавчлалийг нэмж/хасч болдог.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.client,params_store:0
|
||||
|
@ -3482,7 +3681,7 @@ msgstr "Тайлангийн мэдэгдэхгүй төрөл: %s"
|
|||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_hr_expense
|
||||
msgid "Expenses Validation, Invoicing"
|
||||
msgstr ""
|
||||
msgstr "Зардлын шалгалт, Нэхэмжлэл"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_l10n_be_hr_payroll_account
|
||||
|
@ -3501,7 +3700,7 @@ msgstr "Армени"
|
|||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_hr_evaluation
|
||||
msgid "Periodical Evaluations, Appraisals, Surveys"
|
||||
msgstr ""
|
||||
msgstr "Тогтмол хугацааны үнэлгээ, Дүгнэлт, Судалгаа"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.act_window,name:base.ir_property_form
|
||||
|
@ -3550,7 +3749,7 @@ msgstr "Швед"
|
|||
#. module: base
|
||||
#: field:ir.actions.report.xml,report_file:0
|
||||
msgid "Report File"
|
||||
msgstr ""
|
||||
msgstr "Тайлангийн Файл"
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.actions.act_window.view,view_mode:0
|
||||
|
@ -3583,7 +3782,7 @@ msgstr ""
|
|||
#: code:addons/orm.py:3839
|
||||
#, python-format
|
||||
msgid "Missing document(s)"
|
||||
msgstr ""
|
||||
msgstr "Алга болсон баримтууд"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_res_partner_bank_type
|
||||
|
@ -3597,7 +3796,7 @@ msgstr "Банкны дансны төрөл"
|
|||
msgid ""
|
||||
"For more details about translating OpenERP in your language, please refer to "
|
||||
"the"
|
||||
msgstr ""
|
||||
msgstr "OpenERP-г өөрийн хэлнээ хөрвүүлэх талаар дэлгэрэнгүй үзэх сурвалж"
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner,image:0
|
||||
|
@ -3620,7 +3819,7 @@ msgstr "Календар"
|
|||
#. module: base
|
||||
#: model:ir.module.category,name:base.module_category_knowledge_management
|
||||
msgid "Knowledge"
|
||||
msgstr ""
|
||||
msgstr "Мэдлэг"
|
||||
|
||||
#. module: base
|
||||
#: field:workflow.activity,signal_send:0
|
||||
|
@ -3721,6 +3920,24 @@ msgid ""
|
|||
"database,\n"
|
||||
" but in the servers rootpad like /server/bin/filestore.\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Энэ нь бүрэн хэмжээний баримтын менежментийн систем. \n"
|
||||
"==============================================\n"
|
||||
"\n"
|
||||
" * Хэрэглэгчийн эрх\n"
|
||||
" * Баримтын индекслэлт :- .pptx and .docx файлууд нь Windows орчинд "
|
||||
"дэмжигдэхгүй.\n"
|
||||
" * Баримтын Хяналтын Самбар нь дараах зүйлсийг агуулна:\n"
|
||||
" * Шинэ файл (жагсаалт)\n"
|
||||
" * Файлууд Нөөцийн Төрөлөөл (график)\n"
|
||||
" * Файлууд Харилцагчаар (график)\n"
|
||||
" * Файлууд сарын хэмжээгээр (график)\n"
|
||||
"\n"
|
||||
"АНХААРАХ НЬ:\n"
|
||||
" - Хэрэв энэ модулийг ажиллаж байгаа системд суулгах юм бол өгөгдлийн "
|
||||
"баазад хадгалсан PDF баримтууд нь бүгд устах болно.\n"
|
||||
" - Энэ модулийг суулгасан дараа PDF нь баазад хадгалагдахаа больж "
|
||||
"серверийн файл системд хадгалагдана. Жишээлбэл: /server/bin/filestore.\n"
|
||||
|
||||
#. module: base
|
||||
#: help:res.currency,name:0
|
||||
|
@ -3783,7 +4000,7 @@ msgstr "workflow.activity"
|
|||
#. module: base
|
||||
#: view:base.language.export:0
|
||||
msgid "Export Complete"
|
||||
msgstr ""
|
||||
msgstr "Бүтнээр нь Экспортлох"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.ui.view_sc,res_id:0
|
||||
|
@ -3812,7 +4029,7 @@ msgstr "Финланд / Suomi"
|
|||
#. module: base
|
||||
#: view:ir.config_parameter:0
|
||||
msgid "System Properties"
|
||||
msgstr ""
|
||||
msgstr "Системийн Үзүүлэлтүүд"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.sequence,prefix:0
|
||||
|
@ -3856,12 +4073,12 @@ msgstr "Импортлох модулиа сонго (.zip file):"
|
|||
#. module: base
|
||||
#: view:ir.filters:0
|
||||
msgid "Personal"
|
||||
msgstr ""
|
||||
msgstr "Хувийн"
|
||||
|
||||
#. module: base
|
||||
#: field:base.language.export,modules:0
|
||||
msgid "Modules To Export"
|
||||
msgstr ""
|
||||
msgstr "Экспортлох Модулиуд"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.mt
|
||||
|
@ -3873,7 +4090,7 @@ msgstr "Малта"
|
|||
#, python-format
|
||||
msgid ""
|
||||
"Only users with the following access level are currently allowed to do that"
|
||||
msgstr ""
|
||||
msgstr "Зөвхөн дараах хандах түвшний хэрэглэгчид үүнийг хийх боломжтой"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.server,fields_lines:0
|
||||
|
@ -3921,6 +4138,36 @@ msgid ""
|
|||
"* Work Order Analysis\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Энэ модуль нь OpenERP-д үйлдвэрлэлийг менеж хийх үндсэн модуль юм.\n"
|
||||
"=======================================================================\n"
|
||||
"\n"
|
||||
"Энэ модуль нь төлөвлөлт, захиалга, нөөцлөлт, бүтээгдэхүүний түүхий эд, дэд "
|
||||
"хэсгүүдээс угсрах зэрэгийг үйлдвэрлэлийн процессыг хамардаг. Түүнчлэн "
|
||||
"бүтээгдэхүүний орц, жор, дамжлагын хүний нөөц, машин тоног төхөөрөмж "
|
||||
"зэрэгийг таамагладаг.\n"
|
||||
"\n"
|
||||
"Түүхийн эд нөөцлөл, хангамж, үйлчилгээний бүрэн төлөвлөлтийг дэмждэг. "
|
||||
"Үйлчилгээ нь програм хангамжийн бусад бүх хэсэгтэй бүрэн уялддаг. Тухайлбал, "
|
||||
"үйлдвэрлэлийг явуулахдаа жор дотор нь дэд гэрээгээр авах үйлчилгээг "
|
||||
"тодорхойлж өгөх боломжтой байдаг.\n"
|
||||
"\n"
|
||||
"Онцлог:\n"
|
||||
"---------\n"
|
||||
" * Хадгалуулах / Захиалуулах (мөр бүрээр)\n"
|
||||
" * Олон түвшний жор, хязгааргүй\n"
|
||||
" * Олон түвшний урсгал, хязгааргүй\n"
|
||||
" * Шинжилгээний санхүүтэй уялдсан үйлдвэрлэлийн урсгал болон дамжлага\n"
|
||||
" * Тогтол хугацааны тооцоолол / Яг Хугацаандааа модуль\n"
|
||||
" * Жоруудыг бүтцээр нь, завсрынхаар нь гэх мэт гүйцэд шинжилгээ, үзлэг\n"
|
||||
"\n"
|
||||
"Үйлдвэрлэлийн модулийн Хянах самбар / Тайлангууд нь дараах зүйлсийг "
|
||||
"агуулдаг:\n"
|
||||
"----------------------------------\n"
|
||||
" * Сондгой бэлтгэн нийлүүлэлтийн жагсаалт\n"
|
||||
" * Барааны үнийн хазайлтын график\n"
|
||||
" * Ажлын захиалгын шинжилгээ\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: view:ir.attachment:0
|
||||
|
@ -3950,6 +4197,14 @@ msgid ""
|
|||
"easily\n"
|
||||
"keep track and order all your purchase orders.\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Энэ модуль нь худалдан авах шаардахыг менеж хийхэд тусладаг.\n"
|
||||
"===========================================================\n"
|
||||
"\n"
|
||||
"Худалдан авах захиалга үүсэхэд холбогдох шаардахыг хадгалах боломжтой "
|
||||
"болно.\n"
|
||||
"Энэ шинэ обьект нь худалдан авах захиалгыг бүлэглэх, хялбараар хянах шинэ "
|
||||
"боломжийг олгодог.\n"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.mail_server,smtp_host:0
|
||||
|
@ -3964,7 +4219,7 @@ msgstr "Антарктид"
|
|||
#. module: base
|
||||
#: view:res.partner:0
|
||||
msgid "Persons"
|
||||
msgstr ""
|
||||
msgstr "Хүмүүс"
|
||||
|
||||
#. module: base
|
||||
#: view:base.language.import:0
|
||||
|
@ -3999,7 +4254,7 @@ msgstr "Масс Имэйл илгээх"
|
|||
#. module: base
|
||||
#: model:res.country,name:base.yt
|
||||
msgid "Mayotte"
|
||||
msgstr ""
|
||||
msgstr "Маётте"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_crm_todo
|
||||
|
@ -4024,7 +4279,7 @@ msgstr "Дүрэм хоорондын харилцан ажиллагаа"
|
|||
#: field:res.company,rml_footer:0
|
||||
#: field:res.company,rml_footer_readonly:0
|
||||
msgid "Report Footer"
|
||||
msgstr ""
|
||||
msgstr "Тайлангийн Хөл"
|
||||
|
||||
#. module: base
|
||||
#: selection:res.lang,direction:0
|
||||
|
@ -4105,6 +4360,20 @@ msgid ""
|
|||
"\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Өгөгдсөн данс дээрх тухайлсан хэрэглэгчийн анхны функц нь юу байхыг "
|
||||
"тодорхойлно. \n"
|
||||
"============================================================================="
|
||||
"=======================\n"
|
||||
"\n"
|
||||
"Энэ нь хэрэглэгч өөрийн цагийн хүснэгтийг бөглөхөд талбаруудын утга нь "
|
||||
"автоматаар авч бөглөхөд түгээмэл хэрэглэгддэг. Утга нь бөглөгдсөн ч "
|
||||
"хэрэглэгч өөрөө засварлах боломж нь нээлттэй. \n"
|
||||
"\n"
|
||||
"Мэдээж хэрэг хэрэв тухайн дансанд утга бичигдээгүй байвал ажилтны өгөгдлөөр "
|
||||
"утга нь бичигддэг болохоор хуучин тохиргоотойгоо бүрэн нийцтэй.\n"
|
||||
"\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: view:ir.model:0
|
||||
|
@ -4120,7 +4389,7 @@ msgstr "Того"
|
|||
#: field:ir.actions.act_window,res_model:0
|
||||
#: field:ir.actions.client,res_model:0
|
||||
msgid "Destination Model"
|
||||
msgstr ""
|
||||
msgstr "Хүрэх Модель"
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.sequence,implementation:0
|
||||
|
@ -4143,7 +4412,7 @@ msgstr "Урду / اردو"
|
|||
#: code:addons/orm.py:3870
|
||||
#, python-format
|
||||
msgid "Access Denied"
|
||||
msgstr ""
|
||||
msgstr "Хандалтыг татгалзав"
|
||||
|
||||
#. module: base
|
||||
#: field:res.company,name:0
|
||||
|
@ -4203,6 +4472,16 @@ msgid ""
|
|||
"If you need to manage your meetings, you should install the CRM module.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Энэ нь бүрэн боломжууд бүхий цаглабарын систем.\n"
|
||||
"========================================\n"
|
||||
"\n"
|
||||
"Дэмжих нь:\n"
|
||||
" - Үйл явдлын цаглабар\n"
|
||||
" - Давтагдах үйл явдлууд\\n\n"
|
||||
"\n"
|
||||
"Уулзалтуудыг удирдахыг хүсвэл CRM модулийг суулгах хэрэгтэй.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.je
|
||||
|
@ -4217,6 +4496,9 @@ msgid ""
|
|||
"==================================\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Үл мэдэгдэх нэрийн хандалтыг OpenERP-д зөвшөөрнө\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: view:res.lang:0
|
||||
|
@ -4236,7 +4518,7 @@ msgstr "%x - Тохиромжтой огнооны дүрслэл."
|
|||
#. module: base
|
||||
#: view:res.partner:0
|
||||
msgid "Tag"
|
||||
msgstr ""
|
||||
msgstr "Тааг"
|
||||
|
||||
#. module: base
|
||||
#: view:res.lang:0
|
||||
|
@ -4288,7 +4570,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:res.country,name:base.sk
|
||||
msgid "Slovakia"
|
||||
msgstr ""
|
||||
msgstr "Словак"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.nr
|
||||
|
@ -4299,7 +4581,7 @@ msgstr "Науру"
|
|||
#: code:addons/base/res/res_company.py:152
|
||||
#, python-format
|
||||
msgid "Reg"
|
||||
msgstr ""
|
||||
msgstr "Бүртгэл"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_ir_property
|
||||
|
@ -4444,7 +4726,7 @@ msgstr "Дурын Баримтыг Хуваалцах"
|
|||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_crm
|
||||
msgid "Leads, Opportunities, Phone Calls"
|
||||
msgstr ""
|
||||
msgstr "Сэжимүүд, Боломжууд, Утасны дуудлагууд"
|
||||
|
||||
#. module: base
|
||||
#: view:res.lang:0
|
||||
|
@ -4532,6 +4814,30 @@ msgid ""
|
|||
"* Refund previous sales\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Хурдан, Хялбар Борлуулалтын Процесс\n"
|
||||
"============================\n"
|
||||
"\n"
|
||||
"Энэ модуль нь дэлгүүрийн борлуулалтыг маш хялбар мааждаг дэлгэцийн "
|
||||
"тусламжтай, веб дээр суурилсан дэлгэцээр менежмент хийх боломжийг олгодог. "
|
||||
"Энэ нь бүх төрлийн таблет, iPad-тай нийцтэй бөгөөд төлбөрийн олон аргыг "
|
||||
"санал болгодог.\n"
|
||||
"\n"
|
||||
"Барааны сонголт хэд хэдэн аргаар хийгдэж болно: \n"
|
||||
"\n"
|
||||
"* Баркод уншигчаар\n"
|
||||
"* Барааны төрөл, нэрээр текст хайлтаар.\n"
|
||||
"\n"
|
||||
"Үндсэн Боломжууд\n"
|
||||
"-------------\n"
|
||||
"* Борлуулалтыг хурдан оруулах\n"
|
||||
"* Төлбөрийн нэг арга сонгох (хурдан арга) эсвэл төлбөрийг олон төлөх аргаар "
|
||||
"хуваах\n"
|
||||
"* Хариултыг тооцоолох\n"
|
||||
"* Бэлтгэх баримтыг автоматаар үүсгэж, батлах\n"
|
||||
"* Нэхэмжлэлийг автоматаар үүсгэх боломж олгох\n"
|
||||
"* Өмнөх борлуулалтыг буцаах\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.category,name:base.module_category_localization_account_charts
|
||||
|
@ -4541,7 +4847,7 @@ msgstr "Дансны Мод"
|
|||
#. module: base
|
||||
#: model:ir.ui.menu,name:base.menu_event_main
|
||||
msgid "Events Organization"
|
||||
msgstr ""
|
||||
msgstr "Үйл явдлын Зохион байгуулалт"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.act_window,name:base.action_partner_customer_form
|
||||
|
@ -4569,7 +4875,7 @@ msgstr "Үндсэн талбар"
|
|||
#. module: base
|
||||
#: model:ir.module.category,name:base.module_category_managing_vehicles_and_contracts
|
||||
msgid "Managing vehicles and contracts"
|
||||
msgstr ""
|
||||
msgstr "Унаа болон гэрээг менежмент хийх"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_base_setup
|
||||
|
@ -4625,7 +4931,7 @@ msgstr "Үндсэн"
|
|||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_lunch
|
||||
msgid "Lunch Order, Meal, Food"
|
||||
msgstr ""
|
||||
msgstr "Үдийн хоолны захиалга"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.model.fields:0
|
||||
|
@ -4672,6 +4978,21 @@ msgid ""
|
|||
"very handy when used in combination with the module 'share'.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Гадны хэрэглэгчидэд OpenERP өгөгдлийн бааз руугаа хандах хандалтыг порталь "
|
||||
"үүсгэх замаар өөриймшүүлэх\n"
|
||||
"============================================================================="
|
||||
"===\n"
|
||||
"\n"
|
||||
"Портал нь тусгай меню болон тусгай эрхийн түвшин үүсгэж гишүүддээ тэр "
|
||||
"түвшингээрээ хандах боломжийг олгодог. Энэ меню нь гишүүд, нэр нь үл "
|
||||
"мэдэгдэх хэрэглэгчид гэх мэт эрх нь тавигдсан хэрэглэгчидэд харагддаг. "
|
||||
"Порталийн гишүүд нь ямарваа харилцагч руу холбогдсон байна.\n"
|
||||
"\n"
|
||||
"Модуль нь хэрэглэгчийн группыг порталын хэрэглэгчидэд холбодог. (портальд "
|
||||
"группыг нэмэхэд порталын хэрэглэгчидэд автоматаар группыг нэмдэг). Энэ "
|
||||
"боломж 'share' модультай хамт хэрэглэж байх үед их хэрэгтэй байдаг.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: field:multi_company.default,expression:0
|
||||
|
@ -4696,7 +5017,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: field:res.partner,parent_id:0
|
||||
msgid "Related Company"
|
||||
msgstr ""
|
||||
msgstr "Холбогдох компани"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.actions.act_url,help:0
|
||||
|
@ -4742,7 +5063,7 @@ msgstr "`code` үл давхцах байх ёстой."
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_knowledge
|
||||
msgid "Knowledge Management System"
|
||||
msgstr ""
|
||||
msgstr "Мэдлэгийн Менежментийн Систем"
|
||||
|
||||
#. module: base
|
||||
#: view:workflow.activity:0
|
||||
|
@ -4778,6 +5099,19 @@ msgid ""
|
|||
" * Number Padding\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Энэ модуль нь санхүүгийн бичилтийн дарааллын дугаарлалтыг гүйцэтгэдэг.\n"
|
||||
"======================================================================\n"
|
||||
"\n"
|
||||
"Санхүүгийн дарааллын дугаарлалтуудыг тохируулах боломжийг олгоно.\n"
|
||||
"\n"
|
||||
"Дарааллын дараах аттрибутыг өөриймшүүлэх боломжтой:\n"
|
||||
" * Угтвар\n"
|
||||
" * Дагавар\n"
|
||||
" * Дараагийн Дугаар\n"
|
||||
" * Нэмэгдэх Тоо\n"
|
||||
" * Гүйцээлтийн тоо\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_project_timesheet
|
||||
|
@ -4805,6 +5139,10 @@ msgid ""
|
|||
"==========================\n"
|
||||
"\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"OpenERP вебийн цагалбар харагдац\n"
|
||||
"==========================\n"
|
||||
"\n"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
|
@ -4819,7 +5157,7 @@ msgstr "Дугаарлалтын төрөл"
|
|||
#. module: base
|
||||
#: view:base.language.export:0
|
||||
msgid "Unicode/UTF-8"
|
||||
msgstr ""
|
||||
msgstr "Юникод/UTF-8"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
|
|
|
@ -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-12-03 16:01+0000\n"
|
||||
"PO-Revision-Date: 2012-12-11 11:47+0000\n"
|
||||
"PO-Revision-Date: 2012-12-17 20:05+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-12-12 04:38+0000\n"
|
||||
"X-Generator: Launchpad (build 16361)\n"
|
||||
"X-Launchpad-Export-Date: 2012-12-18 04:58+0000\n"
|
||||
"X-Generator: Launchpad (build 16372)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
@ -1591,7 +1591,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:res.country,name:base.mf
|
||||
msgid "Saint Martin (French part)"
|
||||
msgstr ""
|
||||
msgstr "Saint-Martin (część francuska)"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_ir_exports
|
||||
|
@ -1623,7 +1623,7 @@ msgstr "Konfiguracja stopki raportów"
|
|||
#. module: base
|
||||
#: field:ir.translation,comments:0
|
||||
msgid "Translation comments"
|
||||
msgstr ""
|
||||
msgstr "Komentarze do tłumaczenia"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_lunch
|
||||
|
@ -1895,7 +1895,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: selection:ir.translation,state:0
|
||||
msgid "Translation in Progress"
|
||||
msgstr ""
|
||||
msgstr "Tłumaczenie w toku"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_ir_rule
|
||||
|
@ -4448,7 +4448,7 @@ msgstr "Fakturowanie czasu zadań"
|
|||
#: model:ir.ui.menu,name:base.marketing_menu
|
||||
#: model:ir.ui.menu,name:base.menu_report_marketing
|
||||
msgid "Marketing"
|
||||
msgstr ""
|
||||
msgstr "Marketing"
|
||||
|
||||
#. module: base
|
||||
#: view:res.partner.bank:0
|
||||
|
@ -4489,7 +4489,7 @@ msgstr ""
|
|||
#: model:ir.actions.act_window,name:base.action_view_base_language_install
|
||||
#: model:ir.ui.menu,name:base.menu_view_base_language_install
|
||||
msgid "Load a Translation"
|
||||
msgstr ""
|
||||
msgstr "Pobierz tłumaczenie"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.module.module,latest_version:0
|
||||
|
@ -11768,7 +11768,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: selection:res.request,state:0
|
||||
msgid "waiting"
|
||||
msgstr ""
|
||||
msgstr "oczekiwanie"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_workflow_triggers
|
||||
|
@ -14342,7 +14342,7 @@ msgstr "Prawo"
|
|||
#: field:res.partner,vat:0
|
||||
#, python-format
|
||||
msgid "TIN"
|
||||
msgstr ""
|
||||
msgstr "NIP"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.aw
|
||||
|
|
|
@ -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-12-03 16:01+0000\n"
|
||||
"PO-Revision-Date: 2012-12-11 10:27+0000\n"
|
||||
"Last-Translator: Virgílio Oliveira <virgilio.oliveira@multibase.pt>\n"
|
||||
"PO-Revision-Date: 2012-12-17 16:10+0000\n"
|
||||
"Last-Translator: Rui Franco (multibase.pt) <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-12-12 04:38+0000\n"
|
||||
"X-Generator: Launchpad (build 16361)\n"
|
||||
"X-Launchpad-Export-Date: 2012-12-18 04:58+0000\n"
|
||||
"X-Generator: Launchpad (build 16372)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
@ -1734,7 +1734,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_sale
|
||||
msgid "Quotations, Sale Orders, Invoicing"
|
||||
msgstr ""
|
||||
msgstr "Orçamentos, ordens de venda, faturação"
|
||||
|
||||
#. module: base
|
||||
#: field:res.users,login:0
|
||||
|
@ -2146,7 +2146,7 @@ msgstr "Caminho completo"
|
|||
#. module: base
|
||||
#: view:base.language.export:0
|
||||
msgid "The next step depends on the file format:"
|
||||
msgstr ""
|
||||
msgstr "O próximo passo depende do tipo de ficheiro:"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_idea
|
||||
|
@ -2328,6 +2328,8 @@ msgstr ""
|
|||
msgid ""
|
||||
"No matching record found for %(field_type)s '%(value)s' in field '%%(field)s'"
|
||||
msgstr ""
|
||||
"Não foi encontrado o registo para %(field_type)s '%(value)s' no campo "
|
||||
"'%%(field)s'"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.act_window,help:base.action_ui_view
|
||||
|
@ -3144,6 +3146,8 @@ msgid ""
|
|||
"the user will have an access to the human resources configuration as well as "
|
||||
"statistic reports."
|
||||
msgstr ""
|
||||
"O utilizador terá acesso às configurações de recursos humanos, bem como aos "
|
||||
"relatórios de estatísticas."
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_web_shortcuts
|
||||
|
@ -4448,7 +4452,7 @@ msgstr "`code` deve ser único"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_knowledge
|
||||
msgid "Knowledge Management System"
|
||||
msgstr ""
|
||||
msgstr "Sistema de gestão do conhecimento"
|
||||
|
||||
#. module: base
|
||||
#: view:workflow.activity:0
|
||||
|
@ -5937,6 +5941,12 @@ msgid ""
|
|||
"Allows users to create custom dashboard.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Permite ao utilizador criar um painel personalizado.\n"
|
||||
"========================================\n"
|
||||
"\n"
|
||||
"Permite aos utilizadores criarem um painel personalizado.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.act_window,name:base.ir_access_act
|
||||
|
@ -7240,7 +7250,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: field:res.partner,function:0
|
||||
msgid "Job Position"
|
||||
msgstr ""
|
||||
msgstr "Cargo"
|
||||
|
||||
#. module: base
|
||||
#: view:res.partner:0
|
||||
|
@ -7447,7 +7457,7 @@ msgstr "mdx"
|
|||
#. module: base
|
||||
#: view:ir.cron:0
|
||||
msgid "Scheduled Action"
|
||||
msgstr ""
|
||||
msgstr "Ação calendarizada"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.bi
|
||||
|
@ -7930,6 +7940,8 @@ msgid ""
|
|||
"Select this if you want to set company's address information for this "
|
||||
"contact"
|
||||
msgstr ""
|
||||
"Selecione esta opção se deseja definir as informações do endereço da empresa "
|
||||
"para este contacto"
|
||||
|
||||
#. module: base
|
||||
#: field:ir.default,field_name:0
|
||||
|
@ -9608,6 +9620,13 @@ msgid ""
|
|||
"Allow administrator to click a button to send a \"Reset Password\" request "
|
||||
"to a user.\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Recriar senha\n"
|
||||
"==============\n"
|
||||
"\n"
|
||||
"Permite aos utilizadores recriarem a sua senha de acesso.\n"
|
||||
"Permite ao administrador carregar num botão para enviar um pedido de "
|
||||
"\"Recriar senha\" a um utilizador.\n"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.actions.server,email:0
|
||||
|
@ -10397,6 +10416,8 @@ msgstr "ir.translation"
|
|||
msgid ""
|
||||
"Please contact your system administrator if you think this is an error."
|
||||
msgstr ""
|
||||
"Por favor, contacte o seu administrador de sistemas se julga que isto é um "
|
||||
"erro."
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/module/module.py:519
|
||||
|
@ -10582,7 +10603,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: help:res.partner,ean13:0
|
||||
msgid "BarCode"
|
||||
msgstr ""
|
||||
msgstr "Código de barras"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.model.fields,model_id:0
|
||||
|
@ -11150,7 +11171,7 @@ msgstr "Granada"
|
|||
#. module: base
|
||||
#: help:res.partner,customer:0
|
||||
msgid "Check this box if this contact is a customer."
|
||||
msgstr ""
|
||||
msgstr "Selecione esta opção se este contacto é de um cliente."
|
||||
|
||||
#. module: base
|
||||
#: view:ir.actions.server:0
|
||||
|
@ -12037,7 +12058,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:res.country,name:base.cd
|
||||
msgid "Congo, Democratic Republic of the"
|
||||
msgstr ""
|
||||
msgstr "Congo, República Democrática do"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.cr
|
||||
|
@ -12084,7 +12105,7 @@ msgstr "Moedas"
|
|||
#. module: base
|
||||
#: model:res.partner.category,name:base.res_partner_category_8
|
||||
msgid "Consultancy Services"
|
||||
msgstr ""
|
||||
msgstr "Serviços de consultoria"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.values,value:0
|
||||
|
@ -12094,7 +12115,7 @@ msgstr "O valor padrão (em conserva) ou referência a uma ação"
|
|||
#. module: base
|
||||
#: field:ir.actions.report.xml,auto:0
|
||||
msgid "Custom Python Parser"
|
||||
msgstr ""
|
||||
msgstr "Interpretador de Python (à medida)"
|
||||
|
||||
#. module: base
|
||||
#: sql_constraint:res.groups:0
|
||||
|
@ -13456,6 +13477,8 @@ msgid ""
|
|||
"This cron task is currently being executed and may not be modified, please "
|
||||
"try again in a few minutes"
|
||||
msgstr ""
|
||||
"Esta tarefa está sendo executada e não pode ser alterada. Por favor, tente "
|
||||
"daqui a alguns minutos.."
|
||||
|
||||
#. module: base
|
||||
#: view:base.language.export:0
|
||||
|
@ -13506,7 +13529,7 @@ msgstr "A Atividade Destino"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_project_issue
|
||||
msgid "Issue Tracker"
|
||||
msgstr ""
|
||||
msgstr "Acompanhamento de problemas"
|
||||
|
||||
#. module: base
|
||||
#: view:base.module.update:0
|
||||
|
@ -13544,7 +13567,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:res.country,name:base.bq
|
||||
msgid "Bonaire, Sint Eustatius and Saba"
|
||||
msgstr ""
|
||||
msgstr "Bonaire, Sint Eustatius e Saba"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.actions.report.xml,name:base.ir_module_reference_print
|
||||
|
@ -13631,7 +13654,7 @@ msgstr "Origem"
|
|||
#: field:ir.model.constraint,date_init:0
|
||||
#: field:ir.model.relation,date_init:0
|
||||
msgid "Initialization Date"
|
||||
msgstr ""
|
||||
msgstr "Data de inicialização"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.vu
|
||||
|
@ -14148,7 +14171,7 @@ msgstr "Módulos a Atualizar"
|
|||
#. module: base
|
||||
#: model:ir.ui.menu,name:base.menu_custom_multicompany
|
||||
msgid "Multi-Companies"
|
||||
msgstr ""
|
||||
msgstr "Multiempresas"
|
||||
|
||||
#. module: base
|
||||
#: field:workflow,osv:0
|
||||
|
@ -14213,6 +14236,11 @@ msgid ""
|
|||
"Web pages\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Páginas\n"
|
||||
"=====\n"
|
||||
"Páginas web\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: help:ir.actions.server,code:0
|
||||
|
@ -14816,7 +14844,7 @@ msgstr "'Plug-in' para o Thunderbird"
|
|||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_event
|
||||
msgid "Trainings, Conferences, Meetings, Exhibitions, Registrations"
|
||||
msgstr ""
|
||||
msgstr "Formação, conferẽncias, reuniões, exposições, inscrições"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_res_country
|
||||
|
@ -14834,7 +14862,7 @@ msgstr "País"
|
|||
#. module: base
|
||||
#: model:res.partner.category,name:base.res_partner_category_15
|
||||
msgid "Wholesaler"
|
||||
msgstr ""
|
||||
msgstr "Vendedor por atacado"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_base_vat
|
||||
|
|
|
@ -7,13 +7,14 @@ msgstr ""
|
|||
"Project-Id-Version: pt_BR\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2012-12-03 16:01+0000\n"
|
||||
"PO-Revision-Date: 2012-12-15 13:59+0000\n"
|
||||
"Last-Translator: Projetaty Soluções OpenSource <Unknown>\n"
|
||||
"PO-Revision-Date: 2012-12-16 22:18+0000\n"
|
||||
"Last-Translator: Fábio Martinelli - http://zupy.com.br "
|
||||
"<webmaster@guaru.net>\n"
|
||||
"Language-Team: <pt@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-12-16 04:45+0000\n"
|
||||
"X-Launchpad-Export-Date: 2012-12-17 04:44+0000\n"
|
||||
"X-Generator: Launchpad (build 16372)\n"
|
||||
|
||||
#. module: base
|
||||
|
@ -174,7 +175,7 @@ msgstr ""
|
|||
#. module: base
|
||||
#: field:res.partner,ref:0
|
||||
msgid "Reference"
|
||||
msgstr ""
|
||||
msgstr "Referência"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_be_invoice_bba
|
||||
|
@ -320,7 +321,7 @@ msgstr "Suíça"
|
|||
#: code:addons/orm.py:4453
|
||||
#, python-format
|
||||
msgid "created."
|
||||
msgstr ""
|
||||
msgstr "criado."
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.report.xml,report_xsl:0
|
||||
|
@ -6593,7 +6594,7 @@ msgstr "Cancelar Entradas de Diário"
|
|||
#. module: base
|
||||
#: field:res.partner,tz_offset:0
|
||||
msgid "Timezone offset"
|
||||
msgstr ""
|
||||
msgstr "Deslocamento de Fuso Horário"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_marketing_campaign
|
||||
|
@ -7937,7 +7938,7 @@ msgstr "Ref. Visão de Pesquisa"
|
|||
#. module: base
|
||||
#: help:res.users,partner_id:0
|
||||
msgid "Partner-related data of the user"
|
||||
msgstr ""
|
||||
msgstr "Dados do usuário relacionado ao Parceiro"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_crm_todo
|
||||
|
@ -8436,7 +8437,7 @@ msgstr "Determina onde o símbolo deve ser colocado após ou antes o valor."
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_pad_project
|
||||
msgid "Pad on tasks"
|
||||
msgstr ""
|
||||
msgstr "Blocos nas Tarefas"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.model,name:base.model_base_update_translations
|
||||
|
@ -9562,6 +9563,18 @@ msgid ""
|
|||
"Thank you in advance for your cooperation.\n"
|
||||
"Best Regards,"
|
||||
msgstr ""
|
||||
"Prezado Senhor / Senhora,\n"
|
||||
"\n"
|
||||
"Nossos registros indicam que alguns pagamentos em sua conta estão em aberto. "
|
||||
"Por favor, veja os detalhes abaixo.\n"
|
||||
"Se o valor já tiver sido pago, por favor desconsidere este aviso. Caso "
|
||||
"contrário, regularize os pagamentos o mais breve possível.\n"
|
||||
"Se você tiver alguma dúvida sobre seus pagamentos, por favor, entre em "
|
||||
"contato conosco.\n"
|
||||
"\n"
|
||||
"Obrigado antecipadamente pela sua colaboração.\n"
|
||||
"\n"
|
||||
"Atenciosamente,"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.module.category:0
|
||||
|
@ -9707,6 +9720,14 @@ msgid ""
|
|||
"If set to true it allows user to cancel entries & invoices.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Permite cancelar entradas contábeis.\n"
|
||||
"====================================\n"
|
||||
"\n"
|
||||
"Este módulo adiciona um campo 'Permitir Cancelamento de Entradas' no "
|
||||
"formulário de um diário contábil.\n"
|
||||
"Se estiver marcado permite ao usuário cancelar entradas & faturas.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_plugin
|
||||
|
@ -10140,7 +10161,7 @@ msgstr "Descrição dos Campos"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_analytic_contract_hr_expense
|
||||
msgid "Contracts Management: hr_expense link"
|
||||
msgstr ""
|
||||
msgstr "Gerenciamento de Contratos: link hr_expense"
|
||||
|
||||
#. module: base
|
||||
#: view:ir.attachment:0
|
||||
|
@ -10757,7 +10778,7 @@ msgstr "A fazer"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_portal_hr_employees
|
||||
msgid "Portal HR employees"
|
||||
msgstr ""
|
||||
msgstr "Portal RH funcionários"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
|
@ -11723,6 +11744,17 @@ msgid ""
|
|||
"automatically new claims based on incoming emails.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"\n"
|
||||
"Gerenciar solicitações dos clientes.\n"
|
||||
"================================================== "
|
||||
"==============================\n"
|
||||
"Esta aplicação permite-lhe controlar as solicitações e reclamações dos seus "
|
||||
"clientes / fornecedores.\n"
|
||||
"\n"
|
||||
"É totalmente integrado com o gateway de e-mail para que você possa criar\n"
|
||||
"novos pedidos automaticamente baseados em e-mails recebidos.\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.module.module,license:0
|
||||
|
@ -13550,6 +13582,9 @@ msgid ""
|
|||
"128x128px image, with aspect ratio preserved. Use this field in form views "
|
||||
"or some kanban views."
|
||||
msgstr ""
|
||||
"Imagem média deste contato. Ela é automaticamente redimensionada como uma "
|
||||
"imagem de 128x128px, mantendo o aspecto original. Utilize este campo em "
|
||||
"visões de formulário ou algumas visões de kanban."
|
||||
|
||||
#. module: base
|
||||
#: view:base.update.translations:0
|
||||
|
@ -13825,12 +13860,12 @@ msgstr "Espanha - Contabilidade(PGCE 2008)"
|
|||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_stock_no_autopicking
|
||||
msgid "Picking Before Manufacturing"
|
||||
msgstr ""
|
||||
msgstr "Separação antes da Produção"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_note_pad
|
||||
msgid "Sticky memos, Collaborative"
|
||||
msgstr ""
|
||||
msgstr "Notas Colaborativas (post it)"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.wf
|
||||
|
@ -14094,6 +14129,10 @@ msgid ""
|
|||
"your home page.\n"
|
||||
"You can track your suppliers, customers and other contacts.\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Este módulo oferece uma visão rápida da sua agenda de endereços, acessível a "
|
||||
"partir de sua página inicial.\n"
|
||||
"Você pode acompanhar os seus fornecedores, clientes e outros contatos.\n"
|
||||
|
||||
#. module: base
|
||||
#: help:res.company,custom_footer:0
|
||||
|
@ -14547,7 +14586,7 @@ msgstr "Prospectos & Oportunidades"
|
|||
#. module: base
|
||||
#: model:res.country,name:base.gg
|
||||
msgid "Guernsey"
|
||||
msgstr ""
|
||||
msgstr "Guernsey"
|
||||
|
||||
#. module: base
|
||||
#: selection:base.language.install,lang:0
|
||||
|
@ -15069,7 +15108,7 @@ msgstr "Relatórios Avançados"
|
|||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_purchase
|
||||
msgid "Purchase Orders, Receptions, Supplier Invoices"
|
||||
msgstr ""
|
||||
msgstr "Pedidos de Compra, Recepções, Faturas de Fornecedores"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_hr_payroll
|
||||
|
@ -15274,7 +15313,7 @@ msgstr "Módulos Genéricos"
|
|||
#. module: base
|
||||
#: model:res.country,name:base.mk
|
||||
msgid "Macedonia, the former Yugoslav Republic of"
|
||||
msgstr ""
|
||||
msgstr "Macedônia"
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.rw
|
||||
|
@ -15411,7 +15450,7 @@ msgstr "Holanda - Contabilidade"
|
|||
#. module: base
|
||||
#: model:res.country,name:base.gs
|
||||
msgid "South Georgia and the South Sandwich Islands"
|
||||
msgstr ""
|
||||
msgstr "Geórgia do Sul e Ilhas Sandwich do Sul"
|
||||
|
||||
#. module: base
|
||||
#: view:res.lang:0
|
||||
|
@ -15708,6 +15747,8 @@ msgid ""
|
|||
"Tax Identification Number. Check the box if this contact is subjected to "
|
||||
"taxes. Used by the some of the legal statements."
|
||||
msgstr ""
|
||||
"Número de Identificação Fiscal. Marque a caixa se este contato está sujeito "
|
||||
"a impostos. Usado pela algumas das declarações legais."
|
||||
|
||||
#. module: base
|
||||
#: field:res.partner.bank,partner_id:0
|
||||
|
@ -15884,6 +15925,16 @@ msgid ""
|
|||
" </p>\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"<p class=\"oe_view_nocontent_create\">\n"
|
||||
" Clique para adicionar um contato em sua agenda de "
|
||||
"endereços.\n"
|
||||
" </p><p>\n"
|
||||
" O OpenERP auxilia a rastrear todas as atividades "
|
||||
"relacionadas a\n"
|
||||
" um cliente; debates, histórico de oportunidades\n"
|
||||
" de negócios, documentos, etc.\n"
|
||||
" </p>\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:res.partner.category,name:base.res_partner_category_2
|
||||
|
|
|
@ -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-12-03 16:01+0000\n"
|
||||
"PO-Revision-Date: 2012-08-20 15:27+0000\n"
|
||||
"Last-Translator: Dorin <dhongu@gmail.com>\n"
|
||||
"PO-Revision-Date: 2012-12-18 18:59+0000\n"
|
||||
"Last-Translator: Fekete Mihai <mihai@erpsystems.ro>\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-12-04 04:59+0000\n"
|
||||
"X-Generator: Launchpad (build 16335)\n"
|
||||
"X-Launchpad-Export-Date: 2012-12-19 05:14+0000\n"
|
||||
"X-Generator: Launchpad (build 16378)\n"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_account_check_writing
|
||||
|
@ -24,6 +24,10 @@ msgid ""
|
|||
"================================================\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Modul pentru Verifica Scrisul si Verifica Imprimarea.\n"
|
||||
"================================================\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: model:res.country,name:base.sh
|
||||
|
@ -59,7 +63,7 @@ msgstr "Alcatuirea vizualizarii"
|
|||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_sale_stock
|
||||
msgid "Quotation, Sale Orders, Delivery & Invoicing Control"
|
||||
msgstr ""
|
||||
msgstr "Cotatie, Ordine de vanzari, Controlul Livrarii & Facturarii"
|
||||
|
||||
#. module: base
|
||||
#: selection:ir.sequence,implementation:0
|
||||
|
@ -88,25 +92,25 @@ msgstr ""
|
|||
#. module: base
|
||||
#: model:ir.module.module,summary:base.module_point_of_sale
|
||||
msgid "Touchscreen Interface for Shops"
|
||||
msgstr ""
|
||||
msgstr "Interfata cu Ecran tactil pentru Magazine"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_l10n_in_hr_payroll
|
||||
msgid "Indian Payroll"
|
||||
msgstr ""
|
||||
msgstr "Stat de plata indian"
|
||||
|
||||
#. module: base
|
||||
#: help:ir.cron,model:0
|
||||
msgid ""
|
||||
"Model name on which the method to be called is located, e.g. 'res.partner'."
|
||||
msgstr ""
|
||||
"Numele modelului unde este localizata metoda care urmeaza a fi efectuata, de "
|
||||
"exemplu 'res.partener'."
|
||||
"Numele modelului unde este localizata metoda care va fi numita, de exemplu "
|
||||
"'res.partener'."
|
||||
|
||||
#. module: base
|
||||
#: view:ir.module.module:0
|
||||
msgid "Created Views"
|
||||
msgstr "Afisari Create"
|
||||
msgstr "Vizualizari Create"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_product_manufacturer
|
||||
|
@ -123,6 +127,17 @@ msgid ""
|
|||
" * Product Attributes\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Un modul care adauga producatori si atribute la formularul produsului.\n"
|
||||
"====================================================================\n"
|
||||
"\n"
|
||||
"Acum puteti defini urmatoarele pentru un produs:\n"
|
||||
"-----------------------------------------------\n"
|
||||
" * Producator\n"
|
||||
" * Numele Producatorului Produsului\n"
|
||||
" * Codul Producatorului Produsului\n"
|
||||
" * Atributele Produsului\n"
|
||||
" "
|
||||
|
||||
#. module: base
|
||||
#: field:ir.actions.client,params:0
|
||||
|
@ -136,11 +151,14 @@ msgid ""
|
|||
"The module adds google user in res user.\n"
|
||||
"========================================\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Acest modul adauga utilizatorul google la utilizatorul res.\n"
|
||||
"========================================\n"
|
||||
|
||||
#. module: base
|
||||
#: help:res.partner,employee:0
|
||||
msgid "Check this box if this contact is an Employee."
|
||||
msgstr ""
|
||||
msgstr "Bifati aceasta casuta daca acest contact este un Angajat."
|
||||
|
||||
#. module: base
|
||||
#: help:ir.model.fields,domain:0
|
||||
|
@ -171,7 +189,7 @@ msgstr "Fereastra tinta"
|
|||
#. module: base
|
||||
#: field:ir.actions.report.xml,report_rml:0
|
||||
msgid "Main Report File Path"
|
||||
msgstr ""
|
||||
msgstr "Ruta Principala Fisier Raport"
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,shortdesc:base.module_sale_analytic_plans
|
||||
|
@ -192,6 +210,16 @@ msgid ""
|
|||
"revenue\n"
|
||||
"reports."
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Genereaza Facturi din Cheltuieli, Inregistrari ale Fiselor de Pontaj.\n"
|
||||
"========================================================\n"
|
||||
"\n"
|
||||
"Modul pentru generarea facturilor pe baza costurilor (resurse umane, "
|
||||
"cheltuieli, ...).\n"
|
||||
"\n"
|
||||
"Puteti defini liste de preturi in contul analitic, puteti face unele raporte "
|
||||
"teoretice\n"
|
||||
"ale veniturilor."
|
||||
|
||||
#. module: base
|
||||
#: model:ir.module.module,description:base.module_crm
|
||||
|
@ -226,6 +254,36 @@ msgid ""
|
|||
"* Planned Revenue by Stage and User (graph)\n"
|
||||
"* Opportunities by Stage (graph)\n"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"Managementul general OpenERP al Relatiilor cu Clientii\n"
|
||||
"=====================================================\n"
|
||||
"\n"
|
||||
"Aceasta aplicatie permite unui grup de persoane sa gestioneze in mod "
|
||||
"inteligent si eficient piste, oportunitati, intalniri si apeluri "
|
||||
"telefonice.\n"
|
||||
"\n"
|
||||
"Gestioneaza sarcini cheie precum comunicarea, identificarea, prioritizarea, "
|
||||
"numirea, rezolutia si instiintarea.\n"
|
||||
"\n"
|
||||
"OpenERP se asigura ca toate cazurile sunt urmarite cu succes de catre "
|
||||
"utilizatori, clienti si furnizori. Poate sa trimita automat memento-uri, sa "
|
||||
"prioritizeze cererea, sa declanseze metode specifice si multe alte actiuni "
|
||||
"pe baza regulilor companiei.\n"
|
||||
"\n"
|
||||
"Cel mai bun lucru legat de acest sistem este ca utilizatorii nu trebuie sa "
|
||||
"faca nimic special. Modulul MRC are un email gateway pentru interfata de "
|
||||
"sincronizare intre email-uri si OpenERP. In acest fel, utilizatorii pot pur "
|
||||
"si simplu sa trimita email-uri catre programul care tine evidenta "
|
||||
"cererilor.\n"
|
||||
"\n"
|
||||
"OpenERP le va multumi pentru mesaj, directionandu-l automat catre personalul "
|
||||
"adecvat si se va asigura ca toata corespondenta viitoare sa ajunga in locul "
|
||||
"potrivit.\n"
|
||||
"\n"
|
||||
"Panoul pentru MRC va include:\n"
|
||||
"-------------------------------\n"
|
||||
"* Venitul Planificat dupa Etapa si Utilizator (grafic)\n"
|
||||
"* Oportunitati dupa Etapa (grafic)\n"
|
||||
|
||||
#. module: base
|
||||
#: code:addons/base/ir/ir_model.py:397
|
||||
|
|
|
@ -22,17 +22,16 @@
|
|||
import logging
|
||||
import os
|
||||
import re
|
||||
import time
|
||||
import tools
|
||||
|
||||
import netsvc
|
||||
from osv import fields,osv
|
||||
from report.report_sxw import report_sxw, report_rml
|
||||
from tools.config import config
|
||||
from tools.safe_eval import safe_eval as eval
|
||||
from tools.translate import _
|
||||
from socket import gethostname
|
||||
import time
|
||||
|
||||
from openerp import SUPERUSER_ID
|
||||
from openerp import netsvc, tools
|
||||
from openerp.osv import fields, osv
|
||||
from openerp.report.report_sxw import report_sxw, report_rml
|
||||
from openerp.tools.config import config
|
||||
from openerp.tools.safe_eval import safe_eval as eval
|
||||
from openerp.tools.translate import _
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -671,7 +670,7 @@ class actions_server(osv.osv):
|
|||
context['object'] = obj
|
||||
for i in expr:
|
||||
context['active_id'] = i.id
|
||||
result = self.run(cr, uid, [action.loop_action.id], context)
|
||||
self.run(cr, uid, [action.loop_action.id], context)
|
||||
|
||||
if action.state == 'object_write':
|
||||
res = {}
|
||||
|
@ -716,8 +715,6 @@ class actions_server(osv.osv):
|
|||
expr = exp.value
|
||||
res[exp.col1.name] = expr
|
||||
|
||||
obj_pool = None
|
||||
res_id = False
|
||||
obj_pool = self.pool.get(action.srcmodel_id.model)
|
||||
res_id = obj_pool.create(cr, uid, res)
|
||||
if action.record_id:
|
||||
|
@ -736,7 +733,7 @@ class actions_server(osv.osv):
|
|||
model = action.copy_object.split(',')[0]
|
||||
cid = action.copy_object.split(',')[1]
|
||||
obj_pool = self.pool.get(model)
|
||||
res_id = obj_pool.copy(cr, uid, int(cid), res)
|
||||
obj_pool.copy(cr, uid, int(cid), res)
|
||||
|
||||
return False
|
||||
|
||||
|
|
|
@ -24,9 +24,7 @@ import itertools
|
|||
import os
|
||||
import re
|
||||
|
||||
from osv import fields,osv
|
||||
from osv.orm import except_orm
|
||||
import tools
|
||||
from openerp.osv import fields,osv
|
||||
|
||||
class ir_attachment(osv.osv):
|
||||
"""Attachments are used to link binary files or url to any openerp document.
|
||||
|
|
|
@ -22,11 +22,12 @@
|
|||
Store database-specific configuration parameters
|
||||
"""
|
||||
|
||||
from osv import osv,fields
|
||||
import uuid
|
||||
import datetime
|
||||
from tools import misc, config
|
||||
|
||||
from openerp import SUPERUSER_ID
|
||||
from openerp.osv import osv, fields
|
||||
from openerp.tools import misc, config
|
||||
|
||||
"""
|
||||
A dictionary holding some configuration parameters to be initialized when the database is created.
|
||||
|
|
|
@ -18,23 +18,18 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
import calendar
|
||||
import time
|
||||
import logging
|
||||
import threading
|
||||
import psycopg2
|
||||
from datetime import datetime
|
||||
from dateutil.relativedelta import relativedelta
|
||||
|
||||
import netsvc
|
||||
import openerp
|
||||
import pooler
|
||||
import tools
|
||||
from osv import fields, osv
|
||||
from tools import DEFAULT_SERVER_DATETIME_FORMAT
|
||||
from tools.safe_eval import safe_eval as eval
|
||||
from tools.translate import _
|
||||
from openerp import netsvc
|
||||
from openerp.osv import fields, osv
|
||||
from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT
|
||||
from openerp.tools.safe_eval import safe_eval as eval
|
||||
from openerp.tools.translate import _
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -231,7 +226,7 @@ class ir_cron(osv.osv):
|
|||
_logger.warning('Tried to poll an undefined table on database %s.', db_name)
|
||||
else:
|
||||
raise
|
||||
except Exception, ex:
|
||||
except Exception:
|
||||
_logger.warning('Exception in cron:', exc_info=True)
|
||||
|
||||
finally:
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
from osv import fields,osv
|
||||
from openerp.osv import fields, osv
|
||||
|
||||
class ir_default(osv.osv):
|
||||
_name = 'ir.default'
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
from osv import fields,osv
|
||||
from openerp.osv import fields,osv
|
||||
|
||||
|
||||
class ir_exports(osv.osv):
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import collections
|
||||
import datetime
|
||||
import functools
|
||||
import operator
|
||||
|
|
|
@ -20,13 +20,10 @@
|
|||
##############################################################################
|
||||
|
||||
from openerp import exceptions
|
||||
from osv import osv, fields
|
||||
from tools.translate import _
|
||||
from openerp.osv import osv, fields
|
||||
from openerp.tools.translate import _
|
||||
|
||||
class ir_filters(osv.osv):
|
||||
'''
|
||||
Filters
|
||||
'''
|
||||
_name = 'ir.filters'
|
||||
_description = 'Filters'
|
||||
|
||||
|
|
|
@ -31,8 +31,7 @@ import re
|
|||
import smtplib
|
||||
import threading
|
||||
|
||||
from osv import osv
|
||||
from osv import fields
|
||||
from openerp.osv import osv, fields
|
||||
from openerp.tools.translate import _
|
||||
from openerp.tools import html2text
|
||||
import openerp.tools as tools
|
||||
|
@ -228,7 +227,7 @@ class ir_mail_server(osv.osv):
|
|||
:param int port: SMTP port to connect to
|
||||
:param user: optional username to authenticate with
|
||||
:param password: optional password to authenticate with
|
||||
:param string encryption: optional: ``'ssl'`` | ``'starttls'``
|
||||
:param string encryption: optional, ``'ssl'`` | ``'starttls'``
|
||||
:param bool smtp_debug: toggle debugging of SMTP sessions (all i/o
|
||||
will be output in logs)
|
||||
"""
|
||||
|
|
|
@ -158,9 +158,10 @@ class ir_model(osv.osv):
|
|||
if context is None: context = {}
|
||||
if isinstance(ids, (int, long)):
|
||||
ids = [ids]
|
||||
if not context.get(MODULE_UNINSTALL_FLAG) and \
|
||||
any(model.state != 'manual' for model in self.browse(cr, user, ids, context)):
|
||||
raise except_orm(_('Error'), _("Model '%s' contains module data and cannot be removed!") % (model.name,))
|
||||
if not context.get(MODULE_UNINSTALL_FLAG):
|
||||
for model in self.browse(cr, user, ids, context):
|
||||
if model.state != 'manual':
|
||||
raise except_orm(_('Error'), _("Model '%s' contains module data and cannot be removed!") % (model.name,))
|
||||
|
||||
self._drop_table(cr, user, ids, context)
|
||||
res = super(ir_model, self).unlink(cr, user, ids, context)
|
||||
|
@ -256,7 +257,7 @@ class ir_model_fields(osv.osv):
|
|||
'selection': "",
|
||||
'domain': "[]",
|
||||
'name': 'x_',
|
||||
'state': lambda self,cr,uid,ctx={}: (ctx and ctx.get('manual',False)) and 'manual' or 'base',
|
||||
'state': lambda self,cr,uid,ctx=None: (ctx and ctx.get('manual',False)) and 'manual' or 'base',
|
||||
'on_delete': 'set null',
|
||||
'select_level': '0',
|
||||
'size': 64,
|
||||
|
@ -271,7 +272,7 @@ class ir_model_fields(osv.osv):
|
|||
except Exception:
|
||||
_logger.warning('Invalid selection list definition for fields.selection', exc_info=True)
|
||||
raise except_orm(_('Error'),
|
||||
_("The Selection Options expression is not a valid Pythonic expression." \
|
||||
_("The Selection Options expression is not a valid Pythonic expression."
|
||||
"Please provide an expression in the [('key','Label'), ...] format."))
|
||||
|
||||
check = True
|
||||
|
@ -514,7 +515,7 @@ class ir_model_constraint(Model):
|
|||
# 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):
|
||||
if set(external_ids)-ids_set:
|
||||
# as installed modules have defined this element we must not delete it!
|
||||
continue
|
||||
|
||||
|
@ -567,13 +568,12 @@ class ir_model_relation(Model):
|
|||
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):
|
||||
if set(external_ids)-ids_set:
|
||||
# as installed modules have defined this element we must not delete it!
|
||||
continue
|
||||
|
||||
|
@ -585,7 +585,7 @@ class ir_model_relation(Model):
|
|||
|
||||
# drop m2m relation tables
|
||||
for table in to_drop_table:
|
||||
cr.execute('DROP TABLE %s CASCADE'% (table),)
|
||||
cr.execute('DROP TABLE %s CASCADE'% table,)
|
||||
_logger.info('Dropped table %s', table)
|
||||
|
||||
cr.commit()
|
||||
|
@ -862,7 +862,7 @@ class ir_model_data(osv.osv):
|
|||
res = self.read(cr, uid, data_id, ['model', 'res_id'])
|
||||
if not res['res_id']:
|
||||
raise ValueError('No such external ID currently defined in the system: %s.%s' % (module, xml_id))
|
||||
return (res['model'], res['res_id'])
|
||||
return res['model'], res['res_id']
|
||||
|
||||
def get_object(self, cr, uid, module, xml_id, context=None):
|
||||
"""Returns a browsable record for the given module name and xml_id or raise ValueError if not found"""
|
||||
|
@ -903,7 +903,7 @@ class ir_model_data(osv.osv):
|
|||
# records created during module install should not display the messages of OpenChatter
|
||||
context = dict(context, install_mode=True)
|
||||
if xml_id and ('.' in xml_id):
|
||||
assert len(xml_id.split('.'))==2, _("'%s' contains too many dots. XML ids should not contain dots ! These are used to refer to other modules data, as in module.reference_id") % (xml_id)
|
||||
assert len(xml_id.split('.'))==2, _("'%s' contains too many dots. XML ids should not contain dots ! These are used to refer to other modules data, as in module.reference_id") % xml_id
|
||||
module, xml_id = xml_id.split('.')
|
||||
if (not xml_id) and (not self.doinit):
|
||||
return False
|
||||
|
@ -1073,7 +1073,6 @@ class ir_model_data(osv.osv):
|
|||
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)])
|
||||
|
|
|
@ -246,8 +246,8 @@
|
|||
<tree string="External Identifiers">
|
||||
<field name="complete_name"/>
|
||||
<field name="display_name"/>
|
||||
<field name="res_id"/>
|
||||
<field name="model" groups="base.group_no_one"/>
|
||||
<field name="res_id"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
@ -255,12 +255,10 @@
|
|||
<field name="model">ir.model.data</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="External Identifiers">
|
||||
<field name="name"
|
||||
filter_domain="['|', '|', ('name','ilike',self), ('model','ilike',self), ('module','ilike',self)]"
|
||||
string="External Identifier"/>
|
||||
<filter icon="terp-camera_test"
|
||||
string="Updatable"
|
||||
domain="[('noupdate', '=', False)]"/>
|
||||
<field name="name" filter_domain="[('name','ilike',self)]" string="External Identifier"/>
|
||||
<filter string="Updatable" domain="[('noupdate', '=', False)]"/>
|
||||
<field name="module"/>
|
||||
<field name="model"/>
|
||||
<field name="res_id"/>
|
||||
<field name="noupdate"/>
|
||||
<group expand="0" string="Group By...">
|
||||
|
|
|
@ -19,11 +19,11 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
from osv import osv
|
||||
from openerp.osv import osv
|
||||
|
||||
|
||||
class ir_needaction_mixin(osv.AbstractModel):
|
||||
'''Mixin class for objects using the need action feature.
|
||||
"""Mixin class for objects using the need action feature.
|
||||
|
||||
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
|
||||
|
@ -37,7 +37,7 @@ class ir_needaction_mixin(osv.AbstractModel):
|
|||
|
||||
This class also offers several global services:
|
||||
- ``_needaction_count``: returns the number of actions uid has to perform
|
||||
'''
|
||||
"""
|
||||
|
||||
_name = 'ir.needaction_mixin'
|
||||
_needaction = True
|
||||
|
@ -56,7 +56,7 @@ class ir_needaction_mixin(osv.AbstractModel):
|
|||
# "Need action" API
|
||||
#------------------------------------------------------
|
||||
|
||||
def _needaction_count(self, cr, uid, domain=[], context=None):
|
||||
def _needaction_count(self, cr, uid, domain=None, context=None):
|
||||
""" Get the number of actions uid has to perform. """
|
||||
dom = self._needaction_domain_get(cr, uid, context=context)
|
||||
if not dom:
|
||||
|
|
|
@ -18,15 +18,13 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from osv import fields, osv, expression
|
||||
import time
|
||||
from operator import itemgetter
|
||||
from functools import partial
|
||||
import tools
|
||||
from tools.safe_eval import safe_eval as eval
|
||||
from tools.misc import unquote as unquote
|
||||
|
||||
from openerp import SUPERUSER_ID
|
||||
from openerp import tools
|
||||
from openerp.osv import fields, osv, expression
|
||||
from openerp.tools.safe_eval import safe_eval as eval
|
||||
from openerp.tools.misc import unquote as unquote
|
||||
|
||||
class ir_rule(osv.osv):
|
||||
_name = 'ir.rule'
|
||||
|
|
|
@ -22,10 +22,9 @@
|
|||
import logging
|
||||
import time
|
||||
|
||||
from osv import osv, fields
|
||||
from tools.translate import _
|
||||
|
||||
import openerp
|
||||
from openerp.osv import osv
|
||||
from openerp.tools.translate import _
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -140,7 +139,7 @@ class ir_sequence(openerp.osv.osv.osv):
|
|||
values = self._add_missing_default_values(cr, uid, values, context)
|
||||
values['id'] = super(ir_sequence, self).create(cr, uid, values, context)
|
||||
if values['implementation'] == 'standard':
|
||||
f = self._create_sequence(cr, values['id'], values['number_increment'], values['number_next'])
|
||||
self._create_sequence(cr, values['id'], values['number_increment'], values['number_next'])
|
||||
return values['id']
|
||||
|
||||
def unlink(self, cr, uid, ids, context=None):
|
||||
|
|
|
@ -19,12 +19,12 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
import tools
|
||||
import logging
|
||||
|
||||
from openerp import tools
|
||||
import openerp.modules
|
||||
from openerp.osv import fields, osv
|
||||
from tools.translate import _
|
||||
from openerp.tools.translate import _
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -134,7 +134,7 @@ class ir_translation_import_cursor(object):
|
|||
""" % (self._parent_table, self._table_name, self._parent_table, find_expr))
|
||||
|
||||
if self._debug:
|
||||
cr.execute('SELECT COUNT(*) FROM ONLY %s' % (self._parent_table))
|
||||
cr.execute('SELECT COUNT(*) FROM ONLY %s' % self._parent_table)
|
||||
c1 = cr.fetchone()[0]
|
||||
cr.execute('SELECT COUNT(*) FROM ONLY %s AS irt, %s AS ti WHERE %s' % \
|
||||
(self._parent_table, self._table_name, find_expr))
|
||||
|
@ -217,11 +217,11 @@ class ir_translation(osv.osv):
|
|||
def _get_ids(self, cr, uid, name, tt, lang, ids):
|
||||
translations = dict.fromkeys(ids, False)
|
||||
if ids:
|
||||
cr.execute('select res_id,value ' \
|
||||
'from ir_translation ' \
|
||||
'where lang=%s ' \
|
||||
'and type=%s ' \
|
||||
'and name=%s ' \
|
||||
cr.execute('select res_id,value '
|
||||
'from ir_translation '
|
||||
'where lang=%s '
|
||||
'and type=%s '
|
||||
'and name=%s '
|
||||
'and res_id IN %s',
|
||||
(lang,tt,name,tuple(ids)))
|
||||
for res_id, value in cr.fetchall():
|
||||
|
@ -237,10 +237,10 @@ class ir_translation(osv.osv):
|
|||
self._get_ids.clear_cache(self, uid, name, tt, lang, res_id)
|
||||
self._get_source.clear_cache(self, uid, name, tt, lang)
|
||||
|
||||
cr.execute('delete from ir_translation ' \
|
||||
'where lang=%s ' \
|
||||
'and type=%s ' \
|
||||
'and name=%s ' \
|
||||
cr.execute('delete from ir_translation '
|
||||
'where lang=%s '
|
||||
'and type=%s '
|
||||
'and name=%s '
|
||||
'and res_id IN %s',
|
||||
(lang,tt,name,tuple(ids),))
|
||||
for id in ids:
|
||||
|
|
|
@ -23,11 +23,11 @@
|
|||
import base64
|
||||
import re
|
||||
import threading
|
||||
from tools.safe_eval import safe_eval as eval
|
||||
import tools
|
||||
from openerp.tools.safe_eval import safe_eval as eval
|
||||
from openerp import tools
|
||||
import openerp.modules
|
||||
from osv import fields, osv
|
||||
from tools.translate import _
|
||||
from openerp.osv import fields, osv
|
||||
from openerp.tools.translate import _
|
||||
from openerp import SUPERUSER_ID
|
||||
|
||||
def one_in(setA, setB):
|
||||
|
@ -44,9 +44,8 @@ class ir_ui_menu(osv.osv):
|
|||
def __init__(self, *args, **kwargs):
|
||||
self.cache_lock = threading.RLock()
|
||||
self._cache = {}
|
||||
r = super(ir_ui_menu, self).__init__(*args, **kwargs)
|
||||
super(ir_ui_menu, self).__init__(*args, **kwargs)
|
||||
self.pool.get('ir.model.access').register_cache_clearing_method(self._name, 'clear_cache')
|
||||
return r
|
||||
|
||||
def clear_cache(self):
|
||||
with self.cache_lock:
|
||||
|
@ -144,7 +143,7 @@ class ir_ui_menu(osv.osv):
|
|||
return res
|
||||
|
||||
def _get_full_name(self, cr, uid, ids, name=None, args=None, context=None):
|
||||
if context == None:
|
||||
if context is None:
|
||||
context = {}
|
||||
res = {}
|
||||
for elmt in self.browse(cr, uid, ids, context=context):
|
||||
|
@ -195,7 +194,7 @@ class ir_ui_menu(osv.osv):
|
|||
next_num=int(concat[0])+1
|
||||
datas['name']=rex.sub(('(%d)'%next_num),datas['name'])
|
||||
else:
|
||||
datas['name']=datas['name']+'(1)'
|
||||
datas['name'] += '(1)'
|
||||
self.write(cr,uid,[res],{'name':datas['name']})
|
||||
ids = ir_values_obj.search(cr, uid, [
|
||||
('model', '=', 'ir.ui.menu'),
|
||||
|
|
|
@ -19,14 +19,15 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
from osv import fields,osv
|
||||
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
|
||||
from lxml import etree
|
||||
import os
|
||||
|
||||
from openerp import tools
|
||||
from openerp.osv import fields,osv
|
||||
from openerp.tools import graph
|
||||
from openerp.tools.safe_eval import safe_eval as eval
|
||||
from openerp.tools.view_validation import valid_view
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -254,7 +255,7 @@ class view(osv.osv):
|
|||
if label:
|
||||
for lbl in eval(label):
|
||||
if t.has_key(tools.ustr(lbl)) and tools.ustr(t[lbl])=='False':
|
||||
label_string = label_string + ' '
|
||||
label_string += ' '
|
||||
else:
|
||||
label_string = label_string + " " + tools.ustr(t[lbl])
|
||||
labels[str(t['id'])] = (a['id'],label_string)
|
||||
|
|
|
@ -50,15 +50,11 @@
|
|||
<field name="arch" type="xml">
|
||||
<search string="Views">
|
||||
<field name="name" filter_domain="['|', ('name','ilike',self), ('model','ilike',self)]" string="View"/>
|
||||
<filter icon="terp-stock_zoom"
|
||||
string="Search"
|
||||
domain="[('type', '=', 'search')]"/>
|
||||
<filter icon="gtk-indent"
|
||||
string="Tree"
|
||||
domain="[('type', '=', 'tree')]"/>
|
||||
<filter icon="gtk-new"
|
||||
string="Form"
|
||||
domain="[('type', '=','form')]"/>
|
||||
<filter string="Form" domain="[('type', '=','form')]"/>
|
||||
<filter string="Tree" domain="[('type', '=', 'tree')]"/>
|
||||
<filter string="Kanban" domain="[('type', '=', 'kanban')]"/>
|
||||
<filter string="Search" domain="[('type', '=', 'search')]"/>
|
||||
<field name="model"/>
|
||||
<field name="inherit_id"/>
|
||||
<field name="type"/>
|
||||
<group expand="0" string="Group By...">
|
||||
|
|
|
@ -18,11 +18,10 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from osv import osv,fields
|
||||
from osv.orm import except_orm
|
||||
import pickle
|
||||
from tools.translate import _
|
||||
|
||||
from openerp.osv import osv, fields
|
||||
from openerp.osv.orm import except_orm
|
||||
|
||||
EXCLUDED_FIELDS = set((
|
||||
'report_sxw_content', 'report_rml_content', 'report_sxw', 'report_rml',
|
||||
|
@ -307,10 +306,10 @@ class ir_values(osv.osv):
|
|||
ORDER BY v.user_id, u.company_id"""
|
||||
params = ('default', model, uid, uid)
|
||||
if condition:
|
||||
query = query % 'AND v.key2 = %s'
|
||||
query %= 'AND v.key2 = %s'
|
||||
params += (condition[:200],)
|
||||
else:
|
||||
query = query % 'AND v.key2 is NULL'
|
||||
query %= 'AND v.key2 is NULL'
|
||||
cr.execute(query, params)
|
||||
|
||||
# keep only the highest priority default for each field
|
||||
|
@ -417,7 +416,7 @@ class ir_values(osv.osv):
|
|||
continue
|
||||
# keep only the first action registered for each action name
|
||||
results[action['name']] = (action['id'], action['name'], action_def)
|
||||
except except_orm, e:
|
||||
except except_orm:
|
||||
continue
|
||||
return sorted(results.values())
|
||||
|
||||
|
|
|
@ -18,7 +18,8 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
from osv import fields,osv
|
||||
|
||||
from openerp.osv import fields, osv
|
||||
|
||||
class wizard_model_menu(osv.osv_memory):
|
||||
_name = 'wizard.ir.model.menu.create'
|
||||
|
|
|
@ -18,13 +18,11 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
import logging
|
||||
import time, os
|
||||
|
||||
import netsvc
|
||||
import report,pooler,tools
|
||||
from operator import itemgetter
|
||||
import os
|
||||
|
||||
from openerp import report, tools
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -77,8 +75,10 @@ def graph_get(cr, graph, wkf_ids, nested, workitem, processed_subflows):
|
|||
for t in transitions:
|
||||
if not t['act_to'] in activities:
|
||||
continue
|
||||
args = {}
|
||||
args['label'] = str(t['condition']).replace(' or ', '\\nor ').replace(' and ', '\\nand ')
|
||||
args = {
|
||||
'label': str(t['condition']).replace(' or ', '\\nor ')
|
||||
.replace(' and ','\\nand ')
|
||||
}
|
||||
if t['signal']:
|
||||
args['label'] += '\\n'+str(t['signal'])
|
||||
args['style'] = 'bold'
|
||||
|
@ -94,20 +94,19 @@ def graph_get(cr, graph, wkf_ids, nested, workitem, processed_subflows):
|
|||
activity_from = actfrom[t['act_from']][1].get(t['signal'], actfrom[t['act_from']][0])
|
||||
activity_to = actto[t['act_to']][1].get(t['signal'], actto[t['act_to']][0])
|
||||
graph.add_edge(pydot.Edge( str(activity_from) ,str(activity_to), fontsize='10', **args))
|
||||
nodes = cr.dictfetchall()
|
||||
|
||||
cr.execute('select * from wkf_activity where flow_start=True and wkf_id in ('+','.join(['%s']*len(wkf_ids))+')', wkf_ids)
|
||||
start = cr.fetchone()[0]
|
||||
cr.execute("select 'subflow.'||name,id from wkf_activity where flow_stop=True and wkf_id in ("+','.join(['%s']*len(wkf_ids))+')', wkf_ids)
|
||||
stop = cr.fetchall()
|
||||
if (stop):
|
||||
if stop:
|
||||
stop = (stop[0][1], dict(stop))
|
||||
else:
|
||||
stop = ("stop",{})
|
||||
return ((start,{}),stop)
|
||||
return (start, {}), stop
|
||||
|
||||
|
||||
def graph_instance_get(cr, graph, inst_id, nested=False):
|
||||
workitems = {}
|
||||
cr.execute('select wkf_id from wkf_instance where id=%s', (inst_id,))
|
||||
inst = cr.fetchall()
|
||||
|
||||
|
@ -169,7 +168,7 @@ showpage'''
|
|||
inst_id = inst_id[0]
|
||||
graph_instance_get(cr, graph, inst_id, data.get('nested', False))
|
||||
ps_string = graph.create(prog='dot', format='ps')
|
||||
except Exception, e:
|
||||
except Exception:
|
||||
_logger.exception('Exception in call:')
|
||||
# string is in PS, like the success message would have been
|
||||
ps_string = '''%PS-Adobe-3.0
|
||||
|
@ -206,13 +205,13 @@ class report_graph(report.interface.report_int):
|
|||
|
||||
def result(self):
|
||||
if self.obj.is_done():
|
||||
return (True, self.obj.get(), 'pdf')
|
||||
return True, self.obj.get(), 'pdf'
|
||||
else:
|
||||
return (False, False, False)
|
||||
return False, False, False
|
||||
|
||||
def create(self, cr, uid, ids, data, context=None):
|
||||
self.obj = report_graph_instance(cr, uid, ids, data)
|
||||
return (self.obj.get(), 'pdf')
|
||||
return self.obj.get(), 'pdf'
|
||||
|
||||
report_graph('report.workflow.instance.graph', 'ir.workflow')
|
||||
|
||||
|
|
|
@ -18,9 +18,7 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
import base64
|
||||
from docutils import io, nodes
|
||||
from docutils import nodes
|
||||
from docutils.core import publish_string
|
||||
from docutils.transforms import Transform, writer_aux
|
||||
from docutils.writers.html4css1 import Writer
|
||||
|
|
|
@ -3,16 +3,16 @@
|
|||
<template pageSize="(595.0,842.0)" title="Test" author="Martin Simon" allowSplitting="20">
|
||||
<pageTemplate id="first">
|
||||
<frame id="first" x1="42.0" y1="42.0" width="511" height="758"/>
|
||||
<header>
|
||||
<pageGraphics>
|
||||
<setFont name="Helvetica-Bold" size="9"/>
|
||||
<drawString x="1.0cm" y="28.1cm">[[ company.name ]]</drawString>
|
||||
<drawRightString x="20cm" y="28.1cm"> Reference Guide </drawRightString>
|
||||
<lineMode width="0.7"/>
|
||||
<stroke color="black"/>
|
||||
<lines>1cm 28cm 20cm 28cm</lines>
|
||||
</pageGraphics>
|
||||
</header>
|
||||
<header>
|
||||
<pageGraphics>
|
||||
<setFont name="Helvetica-Bold" size="9"/>
|
||||
<drawString x="1.0cm" y="28.1cm">[[ company.name ]]</drawString>
|
||||
<drawRightString x="20cm" y="28.1cm"> Reference Guide </drawRightString>
|
||||
<lineMode width="0.7"/>
|
||||
<stroke color="black"/>
|
||||
<lines>1cm 28cm 20cm 28cm</lines>
|
||||
</pageGraphics>
|
||||
</header>
|
||||
|
||||
</pageTemplate>
|
||||
</template>
|
||||
|
@ -236,7 +236,7 @@
|
|||
<tr>
|
||||
<td>
|
||||
<para style="terp_default_9">[[ repeatIn(objdoc2(object.model) or [], 'sline') ]]</para>
|
||||
<para style="terp_default_9"> [[ sline ]] </para>
|
||||
<para style="terp_default_9"> [[ sline ]] </para>
|
||||
</td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
|
|
|
@ -20,7 +20,8 @@
|
|||
##############################################################################
|
||||
|
||||
import time
|
||||
from report import report_sxw
|
||||
|
||||
from openerp.report import report_sxw
|
||||
|
||||
class ir_module_reference_print(report_sxw.rml_parse):
|
||||
def __init__(self, cr, uid, name, context):
|
||||
|
|
|
@ -19,12 +19,13 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
import tools
|
||||
import base64
|
||||
import cStringIO
|
||||
from osv import fields,osv
|
||||
from tools.translate import _
|
||||
from tools.misc import get_iso_codes
|
||||
|
||||
from openerp import tools
|
||||
from openerp.osv import fields,osv
|
||||
from openerp.tools.translate import _
|
||||
from openerp.tools.misc import get_iso_codes
|
||||
|
||||
NEW_LANG_KEY = '__new__'
|
||||
|
||||
|
|
|
@ -19,10 +19,11 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
import tools
|
||||
import base64
|
||||
from tempfile import TemporaryFile
|
||||
from osv import osv, fields
|
||||
|
||||
from openerp import tools
|
||||
from openerp.osv import osv, fields
|
||||
|
||||
class base_language_import(osv.osv_memory):
|
||||
""" Language Import """
|
||||
|
|
|
@ -19,9 +19,9 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
import tools
|
||||
from osv import osv, fields
|
||||
from tools.translate import _
|
||||
from openerp import tools
|
||||
from openerp.osv import osv, fields
|
||||
from openerp.tools.translate import _
|
||||
|
||||
class base_language_install(osv.osv_memory):
|
||||
""" Install Language"""
|
||||
|
|
|
@ -19,8 +19,8 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
from osv import osv
|
||||
from tools.translate import _
|
||||
from openerp.osv import osv
|
||||
from openerp.tools.translate import _
|
||||
|
||||
class base_module_configuration(osv.osv_memory):
|
||||
|
||||
|
|
|
@ -19,14 +19,14 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
import os
|
||||
import tools
|
||||
|
||||
import zipfile
|
||||
from StringIO import StringIO
|
||||
import base64
|
||||
from tools.translate import _
|
||||
from osv import osv, fields
|
||||
import os
|
||||
from StringIO import StringIO
|
||||
import zipfile
|
||||
|
||||
from openerp import tools
|
||||
from openerp.osv import osv, fields
|
||||
from openerp.tools.translate import _
|
||||
|
||||
ADDONS_PATH = tools.config['addons_path'].split(",")[-1]
|
||||
|
||||
|
|
|
@ -21,11 +21,10 @@
|
|||
import os
|
||||
import glob
|
||||
import imp
|
||||
|
||||
import tools
|
||||
|
||||
import zipfile
|
||||
from osv import osv
|
||||
|
||||
from openerp import tools
|
||||
from openerp.osv import osv
|
||||
|
||||
class base_module_scan(osv.osv_memory):
|
||||
""" scan module """
|
||||
|
|
|
@ -1,31 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record id="view_base_module_scan" model="ir.ui.view">
|
||||
<field name="name">Module Scan</field>
|
||||
<field name="model">base.module.scan</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Scan for new modules" version="7.0">
|
||||
<label string="This function will check if you installed new modules in the 'addons' path of your server installation."/>
|
||||
<footer>
|
||||
<button name="watch_dir" string="Check new modules" type="object" class="oe_highlight"/>
|
||||
or
|
||||
<button string="Cancel" class="oe_link" special="cancel" />
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_view_base_module_scan" model="ir.actions.act_window">
|
||||
<field name="name">Module Scan</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">base.module.scan</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">new</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
@ -18,7 +18,8 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
from osv import osv, fields
|
||||
|
||||
from openerp.osv import osv, fields
|
||||
|
||||
class base_module_update(osv.osv_memory):
|
||||
""" Update Module """
|
||||
|
@ -54,4 +55,4 @@ class base_module_update(osv.osv_memory):
|
|||
}
|
||||
return res
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -19,10 +19,11 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
from osv import osv, fields
|
||||
import tools
|
||||
import cStringIO
|
||||
from tools.translate import _
|
||||
|
||||
from openerp import tools
|
||||
from openerp.osv import osv, fields
|
||||
from openerp.tools.translate import _
|
||||
|
||||
class base_update_translations(osv.osv_memory):
|
||||
def _get_languages(self, cr, uid, context):
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
from report import report_sxw
|
||||
from openerp.report import report_sxw
|
||||
|
||||
class rmlparser(report_sxw.rml_parse):
|
||||
def set_context(self, objects, data, ids, report_type = None):
|
||||
|
|
|
@ -19,8 +19,6 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
import tools
|
||||
|
||||
import res_country
|
||||
import res_lang
|
||||
import res_partner
|
||||
|
|
|
@ -19,10 +19,11 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
from osv import osv,fields
|
||||
from tools.misc import attrgetter
|
||||
import time
|
||||
|
||||
from openerp.osv import osv,fields
|
||||
from openerp.tools.misc import attrgetter
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# Properties
|
||||
# -------------------------------------------------------------------------
|
||||
|
|
|
@ -19,8 +19,8 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
from osv import fields, osv
|
||||
from tools.translate import _
|
||||
from openerp.osv import fields, osv
|
||||
from openerp.tools.translate import _
|
||||
|
||||
class Bank(osv.osv):
|
||||
_description='Bank'
|
||||
|
|
|
@ -18,15 +18,15 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
import os
|
||||
|
||||
import openerp
|
||||
from openerp import SUPERUSER_ID
|
||||
from openerp.osv import osv, fields
|
||||
from openerp import tools
|
||||
from openerp import SUPERUSER_ID, tools
|
||||
from openerp.osv import fields, osv
|
||||
from openerp.tools.translate import _
|
||||
from openerp.tools.safe_eval import safe_eval as eval
|
||||
from openerp.tools import image_resize_image
|
||||
from tools.translate import _
|
||||
from tools.safe_eval import safe_eval as eval
|
||||
|
||||
class multi_company_default(osv.osv):
|
||||
"""
|
||||
|
|
|
@ -21,10 +21,10 @@
|
|||
<form string="Company" version="7.0">
|
||||
<sheet>
|
||||
<div>
|
||||
<field name="logo" nolabel="1" widget="image" class="oe_avatar oe_left"/>
|
||||
<field name="logo" widget="image" class="oe_avatar oe_left"/>
|
||||
</div>
|
||||
<div class="oe_right oe_button_box" name="button_box">
|
||||
<button name="%(preview_report)d" string="Preview Header/Footer" type="action" icon="gtk-print" class="oe_inline oe_right"/>
|
||||
<button name="%(preview_report)d" string="Preview Header/Footer" type="action"/>
|
||||
</div>
|
||||
<div class="oe_title">
|
||||
<label for="name" class="oe_edit_only"/>
|
||||
|
|
|
@ -19,13 +19,12 @@
|
|||
#
|
||||
##############################################################################
|
||||
import logging
|
||||
from operator import attrgetter, itemgetter
|
||||
from operator import attrgetter
|
||||
|
||||
from osv import osv, fields
|
||||
from tools.translate import _
|
||||
import netsvc
|
||||
from tools import ustr
|
||||
import pooler
|
||||
from openerp import pooler
|
||||
from openerp.osv import osv, fields
|
||||
from openerp.tools import ustr
|
||||
from openerp.tools.translate import _
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -309,7 +308,7 @@ class res_config_installer(osv.osv_memory):
|
|||
|
||||
hooks_results = set()
|
||||
for module in base:
|
||||
hook = getattr(self, '_if_%s'%(module), None)
|
||||
hook = getattr(self, '_if_%s'% module, None)
|
||||
if hook:
|
||||
hooks_results.update(hook(cr, uid, ids, context=None) or set())
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
from osv import fields, osv
|
||||
from openerp.osv import fields, osv
|
||||
|
||||
def location_name_search(self, cr, user, name='', args=None, operator='ilike',
|
||||
context=None, limit=100):
|
||||
|
|
|
@ -1186,7 +1186,7 @@
|
|||
<record id="us" model="res.country">
|
||||
<field name="name">United States</field>
|
||||
<field name="code">us</field>
|
||||
<field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s %(state_code)s %(zip)s\n%(country_name)s'" />
|
||||
<field name="address_format" eval="'%(street)s\n%(street2)s\n%(city)s, %(state_code)s %(zip)s\n%(country_name)s'" />
|
||||
<field name="currency_id" ref="USD"/>
|
||||
</record>
|
||||
<record id="uy" model="res.country">
|
||||
|
|
|
@ -18,14 +18,14 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
import re
|
||||
import time
|
||||
import netsvc
|
||||
from osv import fields, osv
|
||||
import tools
|
||||
|
||||
from tools import float_round, float_is_zero, float_compare
|
||||
from tools.translate import _
|
||||
from openerp import tools
|
||||
from openerp.osv import fields, osv
|
||||
from openerp.tools import float_round, float_is_zero, float_compare
|
||||
from openerp.tools.translate import _
|
||||
|
||||
CURRENCY_DISPLAY_PATTERN = re.compile(r'(\w+)\s*(?:\((.*)\))?')
|
||||
|
||||
|
@ -99,7 +99,7 @@ class res_currency(osv.osv):
|
|||
res = super(res_currency, self).read(cr, user, ids, fields, context, load)
|
||||
currency_rate_obj = self.pool.get('res.currency.rate')
|
||||
values = res
|
||||
if not isinstance(values, (list)):
|
||||
if not isinstance(values, list):
|
||||
values = [values]
|
||||
for r in values:
|
||||
if r.__contains__('rate_ids'):
|
||||
|
@ -217,7 +217,7 @@ class res_currency(osv.osv):
|
|||
if round:
|
||||
return self.round(cr, uid, to_currency, from_amount * rate)
|
||||
else:
|
||||
return (from_amount * rate)
|
||||
return from_amount * rate
|
||||
|
||||
res_currency()
|
||||
|
||||
|
|
|
@ -20,14 +20,14 @@
|
|||
##############################################################################
|
||||
|
||||
import locale
|
||||
from locale import localeconv
|
||||
import logging
|
||||
import re
|
||||
|
||||
from osv import fields, osv
|
||||
from locale import localeconv
|
||||
import tools
|
||||
from tools.safe_eval import safe_eval as eval
|
||||
from tools.translate import _
|
||||
from openerp import tools
|
||||
from openerp.osv import fields, osv
|
||||
from openerp.tools.safe_eval import safe_eval as eval
|
||||
from openerp.tools.translate import _
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -168,7 +168,7 @@ class lang(osv.osv):
|
|||
thousands_sep = lang_obj.thousands_sep or conv[monetary and 'mon_thousands_sep' or 'thousands_sep']
|
||||
decimal_point = lang_obj.decimal_point
|
||||
grouping = lang_obj.grouping
|
||||
return (grouping, thousands_sep, decimal_point)
|
||||
return grouping, thousands_sep, decimal_point
|
||||
|
||||
def write(self, cr, uid, ids, vals, context=None):
|
||||
for lang_id in ids :
|
||||
|
@ -231,7 +231,7 @@ lang()
|
|||
def original_group(s, grouping, thousands_sep=''):
|
||||
|
||||
if not grouping:
|
||||
return (s, 0)
|
||||
return s, 0
|
||||
|
||||
result = ""
|
||||
seps = 0
|
||||
|
|
|
@ -20,17 +20,16 @@
|
|||
##############################################################################
|
||||
|
||||
import datetime
|
||||
import math
|
||||
import openerp
|
||||
from osv import osv, fields
|
||||
from openerp import SUPERUSER_ID
|
||||
import re
|
||||
import tools
|
||||
from tools.translate import _
|
||||
import logging
|
||||
import pooler
|
||||
import pytz
|
||||
from lxml import etree
|
||||
import math
|
||||
import pytz
|
||||
import re
|
||||
|
||||
import openerp
|
||||
from openerp import SUPERUSER_ID
|
||||
from openerp import pooler, tools
|
||||
from openerp.osv import osv, fields
|
||||
from openerp.tools.translate import _
|
||||
|
||||
class format_address(object):
|
||||
def fields_view_get_address(self, cr, uid, arch, context={}):
|
||||
|
@ -305,7 +304,7 @@ class res_partner(osv.osv, format_address):
|
|||
if default is None:
|
||||
default = {}
|
||||
name = self.read(cr, uid, [id], ['name'], context)[0]['name']
|
||||
default.update({'name': _('%s (copy)') % (name)})
|
||||
default.update({'name': _('%s (copy)') % name})
|
||||
return super(res_partner, self).copy(cr, uid, id, default, context)
|
||||
|
||||
def onchange_type(self, cr, uid, ids, is_company, context=None):
|
||||
|
@ -515,7 +514,7 @@ class res_partner(osv.osv, format_address):
|
|||
def view_header_get(self, cr, uid, view_id, view_type, context):
|
||||
res = super(res_partner, self).view_header_get(cr, uid, view_id, view_type, context)
|
||||
if res: return res
|
||||
if (not context.get('category_id', False)):
|
||||
if not context.get('category_id', False):
|
||||
return False
|
||||
return _('Partners: ')+self.pool.get('res.partner.category').browse(cr, uid, context['category_id'], context).name
|
||||
|
||||
|
|
|
@ -19,9 +19,10 @@
|
|||
#
|
||||
##############################################################################
|
||||
|
||||
from osv import osv, fields
|
||||
import time
|
||||
|
||||
from openerp.osv import osv, fields
|
||||
|
||||
def _links_get(self, cr, uid, context=None):
|
||||
obj = self.pool.get('res.request.link')
|
||||
ids = obj.search(cr, uid, [], context=context)
|
||||
|
@ -58,7 +59,7 @@ class res_request(osv.osv):
|
|||
ids = map(lambda x:x[0], cr.fetchall())
|
||||
cr.execute('select id from res_request where act_from=%s and (act_to<>%s) and (trigger_date<=%s or trigger_date is null) and active=True and state != %s', (uid,uid,time.strftime('%Y-%m-%d'), 'closed'))
|
||||
ids2 = map(lambda x:x[0], cr.fetchall())
|
||||
return (ids, ids2)
|
||||
return ids, ids2
|
||||
|
||||
_columns = {
|
||||
'create_date': fields.datetime('Created Date', readonly=True),
|
||||
|
|
|
@ -19,23 +19,18 @@
|
|||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
||||
from functools import partial
|
||||
import logging
|
||||
from lxml import etree
|
||||
from lxml.builder import E
|
||||
import netsvc
|
||||
from openerp import SUPERUSER_ID
|
||||
|
||||
import openerp
|
||||
from openerp import SUPERUSER_ID
|
||||
from openerp import pooler, tools
|
||||
import openerp.exceptions
|
||||
from osv import fields,osv
|
||||
from osv.orm import browse_record
|
||||
import pooler
|
||||
import random
|
||||
from service import security
|
||||
import tools
|
||||
from tools.translate import _
|
||||
from openerp.osv import fields,osv
|
||||
from openerp.osv.orm import browse_record
|
||||
from openerp.tools.translate import _
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -72,6 +67,7 @@ class groups(osv.osv):
|
|||
'rule_groups': fields.many2many('ir.rule', 'rule_group_rel',
|
||||
'group_id', 'rule_group_id', 'Rules', domain=[('global', '=', False)]),
|
||||
'menu_access': fields.many2many('ir.ui.menu', 'ir_ui_menu_group_rel', 'gid', 'menu_id', 'Access Menu'),
|
||||
'view_access': fields.many2many('ir.ui.view', 'ir_ui_view_group_rel', 'group_id', 'view_id', 'Views'),
|
||||
'comment' : fields.text('Comment', size=250, translate=True),
|
||||
'category_id': fields.many2one('ir.module.category', 'Application', select=True),
|
||||
'full_name': fields.function(_get_full_name, type='char', string='Group Name', fnct_search=_search_group),
|
||||
|
@ -142,7 +138,7 @@ class res_users(osv.osv):
|
|||
'id': fields.integer('ID'),
|
||||
'login_date': fields.date('Latest connection', select=1),
|
||||
'partner_id': fields.many2one('res.partner', required=True,
|
||||
string='Related Partner', ondelete='cascade',
|
||||
string='Related Partner', ondelete='restrict',
|
||||
help='Partner-related data of the user'),
|
||||
'login': fields.char('Login', size=64, required=True,
|
||||
help="Used to log into the system"),
|
||||
|
@ -303,7 +299,7 @@ class res_users(osv.osv):
|
|||
for id in ids:
|
||||
if id in self._uid_cache[db]:
|
||||
del self._uid_cache[db][id]
|
||||
|
||||
self.context_get.clear_cache(self)
|
||||
return res
|
||||
|
||||
def unlink(self, cr, uid, ids, context=None):
|
||||
|
@ -337,6 +333,7 @@ class res_users(osv.osv):
|
|||
default['login'] = _("%s (copy)") % user2copy['login']
|
||||
return super(res_users, self).copy(cr, uid, id, default, context)
|
||||
|
||||
@tools.ormcache(skiparg=2)
|
||||
def context_get(self, cr, uid, context=None):
|
||||
user = self.browse(cr, SUPERUSER_ID, uid, context)
|
||||
result = {}
|
||||
|
|
|
@ -32,6 +32,9 @@
|
|||
<page string="Menus">
|
||||
<field name="menu_access"/>
|
||||
</page>
|
||||
<page string="Views">
|
||||
<field name="view_access"/>
|
||||
</page>
|
||||
<page string="Access Rights">
|
||||
<field name="model_access">
|
||||
<tree string="Access Rules" editable="top">
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
import unittest2
|
||||
|
||||
import openerp.tests.common as common
|
||||
|
||||
class test_menu(common.TransactionCase):
|
||||
|
|
|
@ -20,16 +20,14 @@
|
|||
##############################################################################
|
||||
|
||||
import xmlrpclib
|
||||
import ConfigParser
|
||||
import optparse
|
||||
import sys
|
||||
import thread
|
||||
import threading
|
||||
import os
|
||||
import time
|
||||
import pickle
|
||||
import base64
|
||||
import socket
|
||||
import string
|
||||
|
||||
admin_passwd = 'admin'
|
||||
waittime = 10
|
||||
|
@ -67,10 +65,10 @@ def execute(connector, method, *args):
|
|||
except socket.error,e:
|
||||
if e.args[0] == 111:
|
||||
if wait_count > wait_limit:
|
||||
print "Server is taking too long to start, it has exceeded the maximum limit of %d seconds."%(wait_limit)
|
||||
print "Server is taking too long to start, it has exceeded the maximum limit of %d seconds." % wait_limit
|
||||
clean()
|
||||
sys.exit(1)
|
||||
print 'Please wait %d sec to start server....'%(waittime)
|
||||
print 'Please wait %d sec to start server....' % waittime
|
||||
wait_count += 1
|
||||
time.sleep(waittime)
|
||||
res = execute(connector, method, *args)
|
||||
|
@ -136,7 +134,7 @@ def check_quality(uri, user, pwd, dbname, modules, quality_logs):
|
|||
detail_html +='''<div id=\"%s\"><h3>%s (Score : %s)</h3><font color=red><h5>%s</h5></font>%s</div>'''%(test.replace(' ', '-'), test, score, msg, detail.get('detail', ''))
|
||||
test_detail[test] = (score,msg,detail.get('detail',''))
|
||||
html += "</ul>"
|
||||
html += "%s"%(detail_html)
|
||||
html += "%s"% detail_html
|
||||
html += "</div></body></html>"
|
||||
if not os.path.isdir(quality_logs):
|
||||
os.mkdir(quality_logs)
|
||||
|
@ -305,13 +303,11 @@ options = {
|
|||
'port' : opt.port or 8069,
|
||||
'netport':opt.netport or 8070,
|
||||
'database': opt.db_name or 'terp',
|
||||
'modules' : opt.modules or [],
|
||||
'modules' : map(string.strip, opt.modules.split(',')) if opt.modules else [],
|
||||
'login' : opt.login or 'admin',
|
||||
'pwd' : opt.pwd or '',
|
||||
'extra-addons':opt.extra_addons or []
|
||||
}
|
||||
|
||||
options['modules'] = opt.modules and map(lambda m: m.strip(), opt.modules.split(',')) or []
|
||||
# Hint:i18n-import=purchase:ar_AR.po+sale:fr_FR.po,nl_BE.po
|
||||
if opt.translate_in:
|
||||
translate = opt.translate_in
|
||||
|
|
|
@ -110,7 +110,7 @@ def get_encodings(hint_encoding='utf-8'):
|
|||
|
||||
# some defaults (also taking care of pure ASCII)
|
||||
for charset in ['utf8','latin1']:
|
||||
if not (hint_encoding) or (charset.lower() != hint_encoding.lower()):
|
||||
if not hint_encoding or (charset.lower() != hint_encoding.lower()):
|
||||
yield charset
|
||||
|
||||
from locale import getpreferredencoding
|
||||
|
@ -129,7 +129,7 @@ def ustr(value, hint_encoding='utf-8', errors='strict'):
|
|||
:param: value: the value to convert
|
||||
:param: hint_encoding: an optional encoding that was detecte
|
||||
upstream and should be tried first to decode ``value``.
|
||||
:param str error: optional `errors` flag to pass to the unicode
|
||||
:param str errors: optional `errors` flag to pass to the unicode
|
||||
built-in to indicate how illegal character values should be
|
||||
treated when converting a string: 'strict', 'ignore' or 'replace'
|
||||
(see ``unicode()`` constructor).
|
||||
|
|
|
@ -142,10 +142,6 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules=
|
|||
migrations = openerp.modules.migration.MigrationManager(cr, graph)
|
||||
_logger.debug('loading %d packages...', len(graph))
|
||||
|
||||
# get db timestamp
|
||||
cr.execute("select (now() at time zone 'UTC')::timestamp")
|
||||
dt_before_load = cr.fetchone()[0]
|
||||
|
||||
# Query manual fields for all models at once and save them on the registry
|
||||
# so the initialization code for each model does not have to do it
|
||||
# one model at a time.
|
||||
|
|
|
@ -110,15 +110,16 @@ class Registry(object):
|
|||
and registers them in the registry.
|
||||
|
||||
"""
|
||||
|
||||
res = []
|
||||
|
||||
models_to_load = [] # need to preserve loading order
|
||||
# Instantiate registered classes (via the MetaModel automatic discovery
|
||||
# or via explicit constructor call), and add them to the pool.
|
||||
for cls in openerp.osv.orm.MetaModel.module_to_models.get(module.name, []):
|
||||
res.append(cls.create_instance(self, cr))
|
||||
|
||||
return res
|
||||
# models register themselves in self.models
|
||||
model = cls.create_instance(self, cr)
|
||||
if model._name not in models_to_load:
|
||||
# avoid double-loading models whose declaration is split
|
||||
models_to_load.append(model._name)
|
||||
return [self.models[m] for m in models_to_load]
|
||||
|
||||
def schedule_cron_jobs(self):
|
||||
""" Make the cron thread care about this registry/database jobs.
|
||||
|
|
|
@ -332,33 +332,31 @@ def generate_table_alias(src_table_alias, joined_tables=[]):
|
|||
- src_model='res_users', join_tables=[(res.partner, 'parent_id')]
|
||||
alias = ('res_users__parent_id', '"res_partner" as "res_users__parent_id"')
|
||||
|
||||
:param model src_model: model source of the alias
|
||||
:param list join_tables: list of tuples
|
||||
(dst_model, link_field)
|
||||
:param model src_table_alias: model source of the alias
|
||||
:param list joined_tables: list of tuples
|
||||
(dst_model, link_field)
|
||||
|
||||
:return tuple: (table_alias, alias statement for from clause with quotes added)
|
||||
"""
|
||||
alias = src_table_alias
|
||||
if not joined_tables:
|
||||
return ('%s' % alias, '%s' % _quote(alias))
|
||||
return '%s' % alias, '%s' % _quote(alias)
|
||||
for link in joined_tables:
|
||||
alias += '__' + link[1]
|
||||
assert len(alias) < 64, 'Table alias name %s is longer than the 64 characters size accepted by default in postgresql.' % (alias)
|
||||
return ('%s' % alias, '%s as %s' % (_quote(joined_tables[-1][0]), _quote(alias)))
|
||||
assert len(alias) < 64, 'Table alias name %s is longer than the 64 characters size accepted by default in postgresql.' % alias
|
||||
return '%s' % alias, '%s as %s' % (_quote(joined_tables[-1][0]), _quote(alias))
|
||||
|
||||
|
||||
def get_alias_from_query(from_query):
|
||||
""" :param string from_query: is something like :
|
||||
- '"res_partner"' OR
|
||||
- '"res_partner" as "res_users__partner_id"''
|
||||
:param tuple result: (unquoted table name, unquoted alias)
|
||||
i.e. (res_partners, res_partner) OR (res_partner, res_users__partner_id)
|
||||
"""
|
||||
from_splitted = from_query.split(' as ')
|
||||
if len(from_splitted) > 1:
|
||||
return (from_splitted[0].replace('"', ''), from_splitted[1].replace('"', ''))
|
||||
return from_splitted[0].replace('"', ''), from_splitted[1].replace('"', '')
|
||||
else:
|
||||
return (from_splitted[0].replace('"', ''), from_splitted[0].replace('"', ''))
|
||||
return from_splitted[0].replace('"', ''), from_splitted[0].replace('"', '')
|
||||
|
||||
|
||||
def normalize_leaf(element):
|
||||
|
@ -377,7 +375,7 @@ def normalize_leaf(element):
|
|||
if isinstance(right, (list, tuple)) and operator in ('=', '!='):
|
||||
_logger.warning("The domain term '%s' should use the 'in' or 'not in' operator." % ((left, original, right),))
|
||||
operator = 'in' if operator == '=' else 'not in'
|
||||
return (left, operator, right)
|
||||
return left, operator, right
|
||||
|
||||
|
||||
def is_operator(element):
|
||||
|
@ -497,11 +495,19 @@ class ExtendedLeaf(object):
|
|||
adding joins
|
||||
:attr list join_context: list of join contexts. This is a list of
|
||||
tuples like ``(lhs, table, lhs_col, col, link)``
|
||||
:param obj lhs: source (left hand) model
|
||||
:param obj model: destination (right hand) model
|
||||
:param string lhs_col: source model column for join condition
|
||||
:param string col: destination model column for join condition
|
||||
:param link: link column between source and destination model
|
||||
|
||||
where
|
||||
|
||||
lhs
|
||||
source (left hand) model
|
||||
model
|
||||
destination (right hand) model
|
||||
lhs_col
|
||||
source model column for join condition
|
||||
col
|
||||
destination model column for join condition
|
||||
link
|
||||
link column between source and destination model
|
||||
that is not necessarily (but generally) a real column used
|
||||
in the condition (i.e. in many2one); this link is used to
|
||||
compute aliases
|
||||
|
@ -829,7 +835,7 @@ class expression(object):
|
|||
push(create_substitution_leaf(leaf, AND_OPERATOR, relational_model))
|
||||
|
||||
elif len(field_path) > 1 and field._auto_join:
|
||||
raise NotImplementedError('_auto_join attribute not supported on many2many field %s' % (left))
|
||||
raise NotImplementedError('_auto_join attribute not supported on many2many field %s' % left)
|
||||
|
||||
elif len(field_path) > 1 and field._type == 'many2one':
|
||||
right_ids = relational_model.search(cr, uid, [(field_path[1], operator, right)], context=context)
|
||||
|
@ -989,7 +995,7 @@ class expression(object):
|
|||
res_ids = [x[0] for x in relational_model.name_search(cr, uid, right, [], operator, limit=None, context=c)]
|
||||
if operator in NEGATIVE_TERM_OPERATORS:
|
||||
res_ids.append(False) # TODO this should not be appended if False was in 'right'
|
||||
return (left, 'in', res_ids)
|
||||
return left, 'in', res_ids
|
||||
# resolve string-based m2o criterion into IDs
|
||||
if isinstance(right, basestring) or \
|
||||
right and isinstance(right, (tuple, list)) and all(isinstance(item, basestring) for item in right):
|
||||
|
@ -1098,7 +1104,7 @@ class expression(object):
|
|||
query = '(%s."%s" IS %s)' % (table_alias, left, r)
|
||||
params = []
|
||||
elif isinstance(right, (list, tuple)):
|
||||
params = right[:]
|
||||
params = list(right)
|
||||
check_nulls = False
|
||||
for i in range(len(params))[::-1]:
|
||||
if params[i] == False:
|
||||
|
@ -1140,8 +1146,8 @@ class expression(object):
|
|||
query = '%s."%s" IS NOT NULL' % (table_alias, left)
|
||||
params = []
|
||||
|
||||
elif (operator == '=?'):
|
||||
if (right is False or right is None):
|
||||
elif operator == '=?':
|
||||
if right is False or right is None:
|
||||
# '=?' is a short-circuit that makes the term TRUE if right is None or False
|
||||
query = 'TRUE'
|
||||
params = []
|
||||
|
@ -1187,7 +1193,7 @@ class expression(object):
|
|||
|
||||
if isinstance(params, basestring):
|
||||
params = [params]
|
||||
return (query, params)
|
||||
return query, params
|
||||
|
||||
def to_sql(self):
|
||||
stack = []
|
||||
|
@ -1213,6 +1219,6 @@ class expression(object):
|
|||
if joins:
|
||||
query = '(%s) AND %s' % (joins, query)
|
||||
|
||||
return (query, tools.flatten(params))
|
||||
return query, tools.flatten(params)
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -668,7 +668,7 @@ class many2many(_column):
|
|||
col1 = '%s_id' % source_model._table
|
||||
if not col2:
|
||||
col2 = '%s_id' % dest_model._table
|
||||
return (tbl, col1, col2)
|
||||
return tbl, col1, col2
|
||||
|
||||
def _get_query_and_where_params(self, cr, model, ids, values, where_params):
|
||||
""" Extracted from ``get`` to facilitate fine-tuning of the generated
|
||||
|
@ -1304,7 +1304,7 @@ class sparse(function):
|
|||
|
||||
def __init__(self, serialization_field, **kwargs):
|
||||
self.serialization_field = serialization_field
|
||||
return super(sparse, self).__init__(self._fnct_read, fnct_inv=self._fnct_write, multi='__sparse_multi', **kwargs)
|
||||
super(sparse, self).__init__(self._fnct_read, fnct_inv=self._fnct_write, multi='__sparse_multi', **kwargs)
|
||||
|
||||
|
||||
|
||||
|
@ -1560,7 +1560,7 @@ class column_info(object):
|
|||
|
||||
def __str__(self):
|
||||
return '%s(%s, %s, %s, %s, %s)' % (
|
||||
self.__name__, self.name, self.column,
|
||||
self.__class__.__name__, self.name, self.column,
|
||||
self.parent_model, self.parent_column, self.original_parent)
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -454,7 +454,7 @@ class browse_record(object):
|
|||
new_data[field_name] = browse_null()
|
||||
elif field_column._type in ('one2many', 'many2many') and len(result_line[field_name]):
|
||||
new_data[field_name] = self._list_class([browse_record(self._cr, self._uid, id, self._table.pool.get(field_column._obj), self._cache, context=self._context, list_class=self._list_class, fields_process=self._fields_process) for id in result_line[field_name]], self._context)
|
||||
elif field_column._type in ('reference'):
|
||||
elif field_column._type == 'reference':
|
||||
if result_line[field_name]:
|
||||
if isinstance(result_line[field_name], browse_record):
|
||||
new_data[field_name] = result_line[field_name]
|
||||
|
@ -1742,7 +1742,7 @@ class BaseModel(object):
|
|||
views = {}
|
||||
xml = "<form>"
|
||||
for f in node:
|
||||
if f.tag in ('field'):
|
||||
if f.tag == 'field':
|
||||
xml += etree.tostring(f, encoding="utf-8")
|
||||
xml += "</form>"
|
||||
new_xml = etree.fromstring(encode(xml))
|
||||
|
@ -2011,7 +2011,7 @@ class BaseModel(object):
|
|||
view = etree.Element('calendar', string=self._description)
|
||||
etree.SubElement(view, 'field', self._rec_name_fallback(cr, user, context))
|
||||
|
||||
if (self._date_name not in self._columns):
|
||||
if self._date_name not in self._columns:
|
||||
date_found = False
|
||||
for dt in ['date', 'date_start', 'x_date', 'x_date_start']:
|
||||
if dt in self._columns:
|
||||
|
@ -2032,7 +2032,7 @@ class BaseModel(object):
|
|||
self._columns, 'date_delay'):
|
||||
raise except_orm(
|
||||
_('Invalid Object Architecture!'),
|
||||
_("Insufficient fields to generate a Calendar View for %s, missing a date_stop or a date_delay" % (self._name)))
|
||||
_("Insufficient fields to generate a Calendar View for %s, missing a date_stop or a date_delay" % self._name))
|
||||
|
||||
return view
|
||||
|
||||
|
@ -2412,7 +2412,7 @@ class BaseModel(object):
|
|||
:rtype: tuple
|
||||
:return: the :meth:`~.name_get` pair value for the newly-created record.
|
||||
"""
|
||||
rec_id = self.create(cr, uid, {self._rec_name: name}, context);
|
||||
rec_id = self.create(cr, uid, {self._rec_name: name}, context)
|
||||
return self.name_get(cr, uid, [rec_id], context)[0]
|
||||
|
||||
# private implementation of name_search, allows passing a dedicated user for the name_get part to
|
||||
|
@ -2676,7 +2676,7 @@ class BaseModel(object):
|
|||
groupby = group_by
|
||||
for r in cr.dictfetchall():
|
||||
for fld, val in r.items():
|
||||
if val == None: r[fld] = False
|
||||
if val is None: r[fld] = False
|
||||
alldata[r['id']] = r
|
||||
del r['id']
|
||||
|
||||
|
@ -2890,15 +2890,15 @@ class BaseModel(object):
|
|||
# usually because they could block deletion due to the FKs.
|
||||
# So unless stated otherwise we default them to ondelete=cascade.
|
||||
ondelete = ondelete or 'cascade'
|
||||
self._foreign_keys.append((self._table, source_field, dest_model._table, ondelete or 'set null'))
|
||||
_schema.debug("Table '%s': added foreign key '%s' with definition=REFERENCES \"%s\" ON DELETE %s",
|
||||
self._table, source_field, dest_model._table, ondelete)
|
||||
fk_def = (self._table, source_field, dest_model._table, ondelete or 'set null')
|
||||
self._foreign_keys.add(fk_def)
|
||||
_schema.debug("Table '%s': added foreign key '%s' with definition=REFERENCES \"%s\" ON DELETE %s", *fk_def)
|
||||
|
||||
# unchecked version: for custom cases, such as m2m relationships
|
||||
def _m2o_add_foreign_key_unchecked(self, source_table, source_field, dest_model, ondelete):
|
||||
self._foreign_keys.append((source_table, source_field, dest_model._table, ondelete or 'set null'))
|
||||
_schema.debug("Table '%s': added foreign key '%s' with definition=REFERENCES \"%s\" ON DELETE %s",
|
||||
source_table, source_field, dest_model._table, ondelete)
|
||||
fk_def = (source_table, source_field, dest_model._table, ondelete or 'set null')
|
||||
self._foreign_keys.add(fk_def)
|
||||
_schema.debug("Table '%s': added foreign key '%s' with definition=REFERENCES \"%s\" ON DELETE %s", *fk_def)
|
||||
|
||||
def _drop_constraint(self, cr, source_table, constraint_name):
|
||||
cr.execute("ALTER TABLE %s DROP CONSTRAINT %s" % (source_table,constraint_name))
|
||||
|
@ -2929,18 +2929,22 @@ class BaseModel(object):
|
|||
cons, = constraints
|
||||
if cons['ondelete_rule'] != POSTGRES_CONFDELTYPES.get((ondelete or 'set null').upper(), 'a')\
|
||||
or cons['foreign_table'] != dest_model._table:
|
||||
# Wrong FK: drop it and recreate
|
||||
_schema.debug("Table '%s': dropping obsolete FK constraint: '%s'",
|
||||
source_table, cons['constraint_name'])
|
||||
self._drop_constraint(cr, source_table, cons['constraint_name'])
|
||||
self._m2o_add_foreign_key_checked(source_field, dest_model, ondelete)
|
||||
# else it's all good, nothing to do!
|
||||
else:
|
||||
# it's all good, nothing to do!
|
||||
return
|
||||
else:
|
||||
# Multiple FKs found for the same field, drop them all, and re-create
|
||||
for cons in constraints:
|
||||
_schema.debug("Table '%s': dropping duplicate FK constraints: '%s'",
|
||||
source_table, cons['constraint_name'])
|
||||
self._drop_constraint(cr, source_table, cons['constraint_name'])
|
||||
self._m2o_add_foreign_key_checked(source_field, dest_model, ondelete)
|
||||
|
||||
# (re-)create the FK
|
||||
self._m2o_add_foreign_key_checked(source_field, dest_model, ondelete)
|
||||
|
||||
|
||||
|
||||
|
@ -2962,7 +2966,7 @@ class BaseModel(object):
|
|||
_auto_end).
|
||||
|
||||
"""
|
||||
self._foreign_keys = []
|
||||
self._foreign_keys = set()
|
||||
raise_on_invalid_object_name(self._name)
|
||||
if context is None:
|
||||
context = {}
|
||||
|
@ -3098,7 +3102,7 @@ class BaseModel(object):
|
|||
else:
|
||||
default = self._defaults[k]
|
||||
|
||||
if (default is not None):
|
||||
if default is not None:
|
||||
ss = self._columns[k]._symbol_set
|
||||
query = 'UPDATE "%s" SET "%s"=%s WHERE "%s" is NULL' % (self._table, k, ss[0], k)
|
||||
cr.execute(query, (ss[1](default),))
|
||||
|
@ -3177,7 +3181,7 @@ class BaseModel(object):
|
|||
# and add constraints if needed
|
||||
if isinstance(f, fields.many2one):
|
||||
if not self.pool.get(f._obj):
|
||||
raise except_orm('Programming Error', ('There is no reference available for %s') % (f._obj,))
|
||||
raise except_orm('Programming Error', 'There is no reference available for %s' % (f._obj,))
|
||||
dest_model = self.pool.get(f._obj)
|
||||
ref = dest_model._table
|
||||
# ir_actions is inherited so foreign key doesn't work on it
|
||||
|
@ -3304,7 +3308,7 @@ class BaseModel(object):
|
|||
# TODO the condition could use fields_get_keys().
|
||||
if f._fields_id not in other._columns.keys():
|
||||
if f._fields_id not in other._inherit_fields.keys():
|
||||
raise except_orm('Programming Error', ("There is no reference field '%s' found for '%s'") % (f._fields_id, f._obj,))
|
||||
raise except_orm('Programming Error', "There is no reference field '%s' found for '%s'" % (f._fields_id, f._obj,))
|
||||
|
||||
def _m2m_raise_or_create_relation(self, cr, f):
|
||||
m2m_tbl, col1, col2 = f._sql_names(self)
|
||||
|
@ -3312,7 +3316,7 @@ class BaseModel(object):
|
|||
cr.execute("SELECT relname FROM pg_class WHERE relkind IN ('r','v') AND relname=%s", (m2m_tbl,))
|
||||
if not cr.dictfetchall():
|
||||
if not self.pool.get(f._obj):
|
||||
raise except_orm('Programming Error', ('Many2Many destination model does not exist: `%s`') % (f._obj,))
|
||||
raise except_orm('Programming Error', 'Many2Many destination model does not exist: `%s`' % (f._obj,))
|
||||
dest_model = self.pool.get(f._obj)
|
||||
ref = dest_model._table
|
||||
cr.execute('CREATE TABLE "%s" ("%s" INTEGER NOT NULL, "%s" INTEGER NOT NULL, UNIQUE("%s","%s"))' % (m2m_tbl, col1, col2, col1, col2))
|
||||
|
@ -3486,7 +3490,7 @@ class BaseModel(object):
|
|||
|
||||
:param cr: database cursor
|
||||
:param user: current user id
|
||||
:param fields: list of fields
|
||||
:param allfields: list of fields
|
||||
:param context: context arguments, like lang, time zone
|
||||
:return: dictionary of field dictionaries, each one describing a field of the business object
|
||||
:raise AccessError: * if user has no create/write rights on the requested object
|
||||
|
@ -3537,6 +3541,37 @@ class BaseModel(object):
|
|||
|
||||
return res
|
||||
|
||||
def check_field_access_rights(self, cr, user, operation, fields, context=None):
|
||||
"""
|
||||
Check the user access rights on the given fields. This raises Access
|
||||
Denied if the user does not have the rights. Otherwise it returns the
|
||||
fields (as is if the fields is not falsy, or the readable/writable
|
||||
fields if fields is falsy).
|
||||
"""
|
||||
def p(field_name):
|
||||
"""Predicate to test if the user has access to the given field name."""
|
||||
# Ignore requested field if it doesn't exist. This is ugly but
|
||||
# it seems to happen at least with 'name_alias' on res.partner.
|
||||
if field_name not in self._all_columns:
|
||||
return True
|
||||
field = self._all_columns[field_name].column
|
||||
if field.groups:
|
||||
return self.user_has_groups(cr, user, groups=field.groups, context=context)
|
||||
else:
|
||||
return True
|
||||
if not fields:
|
||||
fields = filter(p, self._all_columns.keys())
|
||||
else:
|
||||
filtered_fields = filter(lambda a: not p(a), fields)
|
||||
if filtered_fields:
|
||||
_logger.warning('Access Denied by ACLs for operation: %s, uid: %s, model: %s, fields: %s', operation, user, self._name, ', '.join(filtered_fields))
|
||||
raise except_orm(
|
||||
_('Access Denied'),
|
||||
_('The requested operation cannot be completed due to security restrictions. '
|
||||
'Please contact your system administrator.\n\n(Document type: %s, Operation: %s)') % \
|
||||
(self._description, operation))
|
||||
return fields
|
||||
|
||||
def read(self, cr, user, ids, fields=None, context=None, load='_classic_read'):
|
||||
""" Read records with given ids with the given fields
|
||||
|
||||
|
@ -3562,8 +3597,7 @@ class BaseModel(object):
|
|||
if not context:
|
||||
context = {}
|
||||
self.check_access_rights(cr, user, 'read')
|
||||
if not fields:
|
||||
fields = list(set(self._columns.keys() + self._inherit_fields.keys()))
|
||||
fields = self.check_field_access_rights(cr, user, 'read', fields)
|
||||
if isinstance(ids, (int, long)):
|
||||
select = [ids]
|
||||
else:
|
||||
|
@ -3585,7 +3619,7 @@ class BaseModel(object):
|
|||
context = {}
|
||||
if not ids:
|
||||
return []
|
||||
if fields_to_read == None:
|
||||
if fields_to_read is None:
|
||||
fields_to_read = self._columns.keys()
|
||||
|
||||
# Construct a clause for the security rules.
|
||||
|
@ -4020,6 +4054,7 @@ class BaseModel(object):
|
|||
|
||||
"""
|
||||
readonly = None
|
||||
self.check_field_access_rights(cr, user, 'write', vals.keys())
|
||||
for field in vals.copy():
|
||||
fobj = None
|
||||
if field in self._columns:
|
||||
|
@ -4674,7 +4709,7 @@ class BaseModel(object):
|
|||
new_tables = []
|
||||
for table in added_tables:
|
||||
# table is just a table name -> switch to the full alias
|
||||
if table == '"%s"' % (parent_table):
|
||||
if table == '"%s"' % parent_table:
|
||||
new_tables.append('"%s" as "%s"' % (parent_table, parent_alias))
|
||||
# table is already a full statement -> replace reference to the table to its alias, is correct with the way aliases are generated
|
||||
else:
|
||||
|
@ -4840,7 +4875,7 @@ class BaseModel(object):
|
|||
Copy given record's data with all its fields values
|
||||
|
||||
:param cr: database cursor
|
||||
:param user: current user id
|
||||
:param uid: current user id
|
||||
:param id: id of the record to copy
|
||||
:param default: field values to override in the original values of the copied record
|
||||
:type default: dictionary
|
||||
|
@ -4999,7 +5034,7 @@ class BaseModel(object):
|
|||
"""
|
||||
if type(ids) in (int, long):
|
||||
ids = [ids]
|
||||
query = 'SELECT id FROM "%s"' % (self._table)
|
||||
query = 'SELECT id FROM "%s"' % self._table
|
||||
cr.execute(query + "WHERE ID IN %s", (tuple(ids),))
|
||||
return [x[0] for x in cr.fetchall()]
|
||||
|
||||
|
|
|
@ -151,7 +151,7 @@ class Query(object):
|
|||
query_from = add_joins_for_table(table_alias, query_from)
|
||||
query_from += ','
|
||||
query_from = query_from[:-1] # drop last comma
|
||||
return (query_from, " AND ".join(self.where_clause), self.where_clause_params)
|
||||
return query_from, " AND ".join(self.where_clause), self.where_clause_params
|
||||
|
||||
def __str__(self):
|
||||
return '<osv.Query: "SELECT ... FROM %s WHERE %s" with params: %r>' % self.get_sql()
|
||||
|
|
|
@ -96,7 +96,7 @@ class report_custom(report_int):
|
|||
else:
|
||||
# Process group_by data first
|
||||
key = []
|
||||
if group_by != None and fields[group_by] != None:
|
||||
if group_by is not None and fields[group_by] is not None:
|
||||
if fields[group_by][0] in levels.keys():
|
||||
key.append(fields[group_by][0])
|
||||
for l in levels.keys():
|
||||
|
@ -144,10 +144,11 @@ class report_custom(report_int):
|
|||
parent_field = self.pool.get('ir.model.fields').read(cr, uid, [report['field_parent'][0]], ['model'])
|
||||
model_name = self.pool.get('ir.model').read(cr, uid, [report['model_id'][0]], ['model'], context=context)[0]['model']
|
||||
|
||||
fct = {}
|
||||
fct['id'] = lambda x : x
|
||||
fct['gety'] = lambda x: x.split('-')[0]
|
||||
fct['in'] = lambda x: x.split(',')
|
||||
fct = {
|
||||
'id': lambda x: x,
|
||||
'gety': lambda x: x.split('-')[0],
|
||||
'in': lambda x: x.split(',')
|
||||
}
|
||||
new_fields = []
|
||||
new_cond = []
|
||||
for f in fields:
|
||||
|
@ -212,7 +213,7 @@ class report_custom(report_int):
|
|||
new_res = []
|
||||
|
||||
prev = None
|
||||
if groupby != None:
|
||||
if groupby is not None:
|
||||
res_dic = {}
|
||||
for line in results:
|
||||
if not line[groupby] and prev in res_dic:
|
||||
|
@ -272,7 +273,7 @@ class report_custom(report_int):
|
|||
res = self._create_bars(cr,uid, ids, report, fields, results2, context)
|
||||
elif report['type']=='line':
|
||||
res = self._create_lines(cr,uid, ids, report, fields, results2, context)
|
||||
return (self.obj.get(), 'pdf')
|
||||
return self.obj.get(), 'pdf'
|
||||
|
||||
def _create_tree(self, uid, ids, report, fields, level, results, context):
|
||||
pageSize=common.pageSize.get(report['print_format'], [210.0,297.0])
|
||||
|
@ -322,7 +323,7 @@ class report_custom(report_int):
|
|||
col.attrib.update(para='yes',
|
||||
tree='yes',
|
||||
space=str(3*shift)+'mm')
|
||||
if line[f] != None:
|
||||
if line[f] is not None:
|
||||
col.text = prefix+str(line[f]) or ''
|
||||
else:
|
||||
col.text = '/'
|
||||
|
@ -350,15 +351,17 @@ class report_custom(report_int):
|
|||
x_axis = axis.X(label = fields[0]['name'], format="/a-30{}%s"),
|
||||
y_axis = axis.Y(label = ', '.join(map(lambda x : x['name'], fields[1:]))))
|
||||
|
||||
process_date = {}
|
||||
process_date['D'] = lambda x : reduce(lambda xx,yy : xx+'-'+yy,x.split('-')[1:3])
|
||||
process_date['M'] = lambda x : x.split('-')[1]
|
||||
process_date['Y'] = lambda x : x.split('-')[0]
|
||||
process_date = {
|
||||
'D': lambda x: reduce(lambda xx, yy: xx + '-' + yy, x.split('-')[1:3]),
|
||||
'M': lambda x: x.split('-')[1],
|
||||
'Y': lambda x: x.split('-')[0]
|
||||
}
|
||||
|
||||
order_date = {}
|
||||
order_date['D'] = lambda x : time.mktime((2005,int(x.split('-')[0]), int(x.split('-')[1]),0,0,0,0,0,0))
|
||||
order_date['M'] = lambda x : x
|
||||
order_date['Y'] = lambda x : x
|
||||
order_date = {
|
||||
'D': lambda x: time.mktime((2005, int(x.split('-')[0]), int(x.split('-')[1]), 0, 0, 0, 0, 0, 0)),
|
||||
'M': lambda x: x,
|
||||
'Y': lambda x: x
|
||||
}
|
||||
|
||||
abscissa = []
|
||||
|
||||
|
@ -381,7 +384,7 @@ class report_custom(report_int):
|
|||
# plots are usually displayed year by year
|
||||
# so we do so if the first field is a date
|
||||
data_by_year = {}
|
||||
if date_idx != None:
|
||||
if date_idx is not None:
|
||||
for r in results:
|
||||
key = process_date['Y'](r[date_idx])
|
||||
if key not in data_by_year:
|
||||
|
@ -447,15 +450,17 @@ class report_custom(report_int):
|
|||
|
||||
can.show(80,380,'/16/H'+report['title'])
|
||||
|
||||
process_date = {}
|
||||
process_date['D'] = lambda x : reduce(lambda xx,yy : xx+'-'+yy,x.split('-')[1:3])
|
||||
process_date['M'] = lambda x : x.split('-')[1]
|
||||
process_date['Y'] = lambda x : x.split('-')[0]
|
||||
process_date = {
|
||||
'D': lambda x: reduce(lambda xx, yy: xx + '-' + yy, x.split('-')[1:3]),
|
||||
'M': lambda x: x.split('-')[1],
|
||||
'Y': lambda x: x.split('-')[0]
|
||||
}
|
||||
|
||||
order_date = {}
|
||||
order_date['D'] = lambda x : time.mktime((2005,int(x.split('-')[0]), int(x.split('-')[1]),0,0,0,0,0,0))
|
||||
order_date['M'] = lambda x : x
|
||||
order_date['Y'] = lambda x : x
|
||||
order_date = {
|
||||
'D': lambda x: time.mktime((2005, int(x.split('-')[0]), int(x.split('-')[1]), 0, 0, 0, 0, 0, 0)),
|
||||
'M': lambda x: x,
|
||||
'Y': lambda x: x
|
||||
}
|
||||
|
||||
ar = area.T(size=(350,350),
|
||||
x_axis = axis.X(label = fields[0]['name'], format="/a-30{}%s"),
|
||||
|
@ -480,7 +485,7 @@ class report_custom(report_int):
|
|||
# plot are usually displayed year by year
|
||||
# so we do so if the first field is a date
|
||||
data_by_year = {}
|
||||
if date_idx != None:
|
||||
if date_idx is not None:
|
||||
for r in results:
|
||||
key = process_date['Y'](r[date_idx])
|
||||
if key not in data_by_year:
|
||||
|
@ -602,7 +607,7 @@ class report_custom(report_int):
|
|||
node_line = etree.SubElement(lines, 'row')
|
||||
for f in range(len(fields)):
|
||||
col = etree.SubElement(node_line, 'col', tree='no')
|
||||
if line[f] != None:
|
||||
if line[f] is not None:
|
||||
col.text = line[f] or ''
|
||||
else:
|
||||
col.text = '/'
|
||||
|
|
|
@ -52,7 +52,7 @@ def _1000_to_text(chiffre):
|
|||
d2 = chiffre/100
|
||||
if d2>0 and d:
|
||||
return centaine[d2]+' '+d
|
||||
elif d2>1 and not(d):
|
||||
elif d2>1 and not d:
|
||||
return centaine[d2]+'s'
|
||||
else:
|
||||
return centaine[d2] or d
|
||||
|
|
|
@ -55,13 +55,12 @@ class report_int(netsvc.Service):
|
|||
def create(self, cr, uid, ids, datas, context=None):
|
||||
return False
|
||||
|
||||
"""
|
||||
Class to automatically build a document using the transformation process:
|
||||
XML -> DATAS -> RML -> PDF
|
||||
-> HTML
|
||||
using a XSL:RML transformation
|
||||
"""
|
||||
class report_rml(report_int):
|
||||
"""
|
||||
Automatically builds a document using the transformation process:
|
||||
XML -> DATAS -> RML -> PDF -> HTML
|
||||
using a XSL:RML transformation
|
||||
"""
|
||||
def __init__(self, name, table, tmpl, xsl):
|
||||
super(report_rml, self).__init__(name)
|
||||
self.table = table
|
||||
|
@ -85,7 +84,7 @@ class report_rml(report_int):
|
|||
xml = tools.ustr(xml).encode('utf8')
|
||||
report_type = datas.get('report_type', 'pdf')
|
||||
if report_type == 'raw':
|
||||
return (xml,report_type)
|
||||
return xml, report_type
|
||||
rml = self.create_rml(cr, xml, uid, context)
|
||||
pool = pooler.get_pool(cr.dbname)
|
||||
ir_actions_report_xml_obj = pool.get('ir.actions.report.xml')
|
||||
|
@ -93,7 +92,7 @@ class report_rml(report_int):
|
|||
self.title = report_xml_ids and ir_actions_report_xml_obj.browse(cr,uid,report_xml_ids)[0].name or 'OpenERP Report'
|
||||
create_doc = self.generators[report_type]
|
||||
pdf = create_doc(rml, title=self.title)
|
||||
return (pdf, report_type)
|
||||
return pdf, report_type
|
||||
|
||||
def create_xml(self, cr, uid, ids, datas, context=None):
|
||||
if not context:
|
||||
|
@ -244,10 +243,10 @@ class report_rml(report_int):
|
|||
return obj.get()
|
||||
|
||||
def _get_path(self):
|
||||
ret = []
|
||||
ret.append(self.tmpl.replace(os.path.sep, '/').rsplit('/',1)[0]) # Same dir as the report rml
|
||||
ret.append('addons')
|
||||
ret.append(tools.config['root_path'])
|
||||
return ret
|
||||
return [
|
||||
self.tmpl.replace(os.path.sep, '/').rsplit('/', 1)[0],
|
||||
'addons',
|
||||
tools.config['root_path']
|
||||
]
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -65,7 +65,7 @@ class report_printscreen_list(report_int):
|
|||
fields_order = self._parse_string(result['arch'])
|
||||
rows = model.read(cr, uid, datas['ids'], result['fields'].keys() )
|
||||
self._create_table(uid, datas['ids'], result['fields'], fields_order, rows, context, model._description)
|
||||
return (self.obj.get(), 'pdf')
|
||||
return self.obj.get(), 'pdf'
|
||||
|
||||
|
||||
def _create_table(self, uid, ids, fields, fields_order, results, context, title=''):
|
||||
|
@ -119,7 +119,7 @@ class report_printscreen_list(report_int):
|
|||
precision=(('digits' in fields[f]) and fields[f]['digits'][1]) or 2
|
||||
line[f]=round(line[f],precision)
|
||||
col = etree.SubElement(node_line, 'col', tree='no')
|
||||
if line[f] != None:
|
||||
if line[f] is not None:
|
||||
col.text = tools.ustr(line[f] or '')
|
||||
else:
|
||||
col.text = '/'
|
||||
|
|
|
@ -115,7 +115,7 @@ class report_printscreen_list(report_int):
|
|||
rows_new += [elem for elem in rows if elem['id'] == id]
|
||||
rows = rows_new
|
||||
res = self._create_table(uid, datas['ids'], result['fields'], fields_order, rows, context, model_desc)
|
||||
return (self.obj.get(), 'pdf')
|
||||
return self.obj.get(), 'pdf'
|
||||
|
||||
|
||||
def _create_table(self, uid, ids, fields, fields_order, results, context, title=''):
|
||||
|
@ -147,7 +147,7 @@ class report_printscreen_list(report_int):
|
|||
for i in range(0, len(fields_order)):
|
||||
temp.append(0)
|
||||
tsum.append(0)
|
||||
ince = -1;
|
||||
ince = -1
|
||||
for f in fields_order:
|
||||
s = 0
|
||||
ince += 1
|
||||
|
@ -230,14 +230,14 @@ class report_printscreen_list(report_int):
|
|||
col.text = line[f] = 'Undefined'
|
||||
col.set('tree', 'undefined')
|
||||
|
||||
if line[f] != None:
|
||||
if line[f] is not None:
|
||||
col.text = tools.ustr(line[f] or '')
|
||||
if float_flag:
|
||||
col.set('tree','float')
|
||||
if line.get('__no_leaf') and temp[count] == 1 and f != 'id' and not line['__context']['group_by']:
|
||||
tsum[count] = float(tsum[count]) + float(line[f])
|
||||
if not line.get('__group') and f != 'id' and temp[count] == 1:
|
||||
tsum[count] = float(tsum[count]) + float(line[f]);
|
||||
tsum[count] = float(tsum[count]) + float(line[f])
|
||||
else:
|
||||
col.text = '/'
|
||||
|
||||
|
@ -245,7 +245,7 @@ class report_printscreen_list(report_int):
|
|||
for f in range(0, len(fields_order)):
|
||||
col = etree.SubElement(node_line, 'col', para='group', tree='no')
|
||||
col.set('tree', 'float')
|
||||
if tsum[f] != None:
|
||||
if tsum[f] is not None:
|
||||
if tsum[f] != 0.0:
|
||||
digits = fields[fields_order[f]].get('digits', (16, 2))
|
||||
prec = '%%.%sf' % (digits[1], )
|
||||
|
|
|
@ -106,7 +106,7 @@ class FlateDecode(object):
|
|||
if predictor != 1:
|
||||
columns = decodeParms["/Columns"]
|
||||
# PNG prediction:
|
||||
if predictor >= 10 and predictor <= 15:
|
||||
if 10 <= predictor <= 15:
|
||||
output = StringIO()
|
||||
# PNG prediction can vary from row to row
|
||||
rowlength = columns + 1
|
||||
|
@ -191,7 +191,7 @@ class ASCII85Decode(object):
|
|||
break
|
||||
else:
|
||||
c = ord(c) - 33
|
||||
assert c >= 0 and c < 85
|
||||
assert 0 <= c < 85
|
||||
group += [ c ]
|
||||
if len(group) >= 5:
|
||||
b = group[0] * (85**4) + \
|
||||
|
|
|
@ -81,7 +81,7 @@ def readObject(stream, pdf):
|
|||
return NumberObject.readFromStream(stream)
|
||||
peek = stream.read(20)
|
||||
stream.seek(-len(peek), 1) # reset to start
|
||||
if re.match(r"(\d+)\s(\d+)\sR[^a-zA-Z]", peek) != None:
|
||||
if re.match(r"(\d+)\s(\d+)\sR[^a-zA-Z]", peek) is not None:
|
||||
return IndirectObject.readFromStream(stream, pdf)
|
||||
else:
|
||||
return NumberObject.readFromStream(stream)
|
||||
|
@ -169,7 +169,7 @@ class IndirectObject(PdfObject):
|
|||
|
||||
def __eq__(self, other):
|
||||
return (
|
||||
other != None and
|
||||
other is not None and
|
||||
isinstance(other, IndirectObject) and
|
||||
self.idnum == other.idnum and
|
||||
self.generation == other.generation and
|
||||
|
@ -489,7 +489,7 @@ class DictionaryObject(dict, PdfObject):
|
|||
# return None if no metadata was found on the document root.
|
||||
def getXmpMetadata(self):
|
||||
metadata = self.get("/Metadata", None)
|
||||
if metadata == None:
|
||||
if metadata is None:
|
||||
return None
|
||||
metadata = metadata.getObject()
|
||||
import xmp
|
||||
|
|
|
@ -53,13 +53,7 @@ import utils
|
|||
from generic import *
|
||||
from utils import readNonWhitespace, readUntilWhitespace, ConvertFunctionsToVirtualList
|
||||
|
||||
if version_info < ( 2, 4 ):
|
||||
from sets import ImmutableSet as frozenset
|
||||
|
||||
if version_info < ( 2, 5 ):
|
||||
from md5 import md5
|
||||
else:
|
||||
from hashlib import md5
|
||||
from hashlib import md5
|
||||
|
||||
##
|
||||
# This class supports writing PDF files out, given pages produced by another
|
||||
|
@ -197,7 +191,7 @@ class PdfFileWriter(object):
|
|||
# flag is on.
|
||||
def encrypt(self, user_pwd, owner_pwd = None, use_128bit = True):
|
||||
import time, random
|
||||
if owner_pwd == None:
|
||||
if owner_pwd is None:
|
||||
owner_pwd = user_pwd
|
||||
if use_128bit:
|
||||
V = 2
|
||||
|
@ -251,7 +245,7 @@ class PdfFileWriter(object):
|
|||
# copying in a new copy of the page object.
|
||||
for objIndex in xrange(len(self._objects)):
|
||||
obj = self._objects[objIndex]
|
||||
if isinstance(obj, PageObject) and obj.indirectRef != None:
|
||||
if isinstance(obj, PageObject) and obj.indirectRef is not None:
|
||||
data = obj.indirectRef
|
||||
if not externalReferenceMap.has_key(data.pdf):
|
||||
externalReferenceMap[data.pdf] = {}
|
||||
|
@ -305,7 +299,7 @@ class PdfFileWriter(object):
|
|||
trailer.writeToStream(stream, None)
|
||||
|
||||
# eof
|
||||
stream.write("\nstartxref\n%s\n%%%%EOF\n" % (xref_location))
|
||||
stream.write("\nstartxref\n%s\n%%%%EOF\n" % xref_location)
|
||||
|
||||
def _sweepIndirectReferences(self, externMap, data):
|
||||
if isinstance(data, DictionaryObject):
|
||||
|
@ -340,7 +334,7 @@ class PdfFileWriter(object):
|
|||
return data
|
||||
else:
|
||||
newobj = externMap.get(data.pdf, {}).get(data.generation, {}).get(data.idnum, None)
|
||||
if newobj == None:
|
||||
if newobj is None:
|
||||
newobj = data.pdf.getObject(data)
|
||||
self._objects.append(None) # placeholder
|
||||
idnum = len(self._objects)
|
||||
|
@ -426,7 +420,7 @@ class PdfFileReader(object):
|
|||
# Stability: Added in v1.0, will exist for all v1.x releases.
|
||||
# @return Returns an integer.
|
||||
def getNumPages(self):
|
||||
if self.flattenedPages == None:
|
||||
if self.flattenedPages is None:
|
||||
self._flatten()
|
||||
return len(self.flattenedPages)
|
||||
|
||||
|
@ -445,7 +439,7 @@ class PdfFileReader(object):
|
|||
def getPage(self, pageNumber):
|
||||
## ensure that we're not trying to access an encrypted PDF
|
||||
#assert not self.trailer.has_key("/Encrypt")
|
||||
if self.flattenedPages == None:
|
||||
if self.flattenedPages is None:
|
||||
self._flatten()
|
||||
return self.flattenedPages[pageNumber]
|
||||
|
||||
|
@ -465,7 +459,7 @@ class PdfFileReader(object):
|
|||
# @return Returns a dict which maps names to {@link #Destination
|
||||
# destinations}.
|
||||
def getNamedDestinations(self, tree=None, retval=None):
|
||||
if retval == None:
|
||||
if retval is None:
|
||||
retval = {}
|
||||
catalog = self.trailer["/Root"]
|
||||
|
||||
|
@ -477,7 +471,7 @@ class PdfFileReader(object):
|
|||
if names.has_key("/Dests"):
|
||||
tree = names['/Dests']
|
||||
|
||||
if tree == None:
|
||||
if tree is None:
|
||||
return retval
|
||||
|
||||
if tree.has_key("/Kids"):
|
||||
|
@ -493,7 +487,7 @@ class PdfFileReader(object):
|
|||
if isinstance(val, DictionaryObject) and val.has_key('/D'):
|
||||
val = val['/D']
|
||||
dest = self._buildDestination(key, val)
|
||||
if dest != None:
|
||||
if dest is not None:
|
||||
retval[key] = dest
|
||||
|
||||
return retval
|
||||
|
@ -511,7 +505,7 @@ class PdfFileReader(object):
|
|||
# Stability: Added in v1.10, will exist for all future v1.x releases.
|
||||
# @return Returns a nested list of {@link #Destination destinations}.
|
||||
def getOutlines(self, node=None, outlines=None):
|
||||
if outlines == None:
|
||||
if outlines is None:
|
||||
outlines = []
|
||||
catalog = self.trailer["/Root"]
|
||||
|
||||
|
@ -522,7 +516,7 @@ class PdfFileReader(object):
|
|||
node = lines["/First"]
|
||||
self._namedDests = self.getNamedDestinations()
|
||||
|
||||
if node == None:
|
||||
if node is None:
|
||||
return outlines
|
||||
|
||||
# see if there are any more outlines
|
||||
|
@ -588,9 +582,9 @@ class PdfFileReader(object):
|
|||
NameObject("/Resources"), NameObject("/MediaBox"),
|
||||
NameObject("/CropBox"), NameObject("/Rotate")
|
||||
)
|
||||
if inherit == None:
|
||||
if inherit is None:
|
||||
inherit = dict()
|
||||
if pages == None:
|
||||
if pages is None:
|
||||
self.flattenedPages = []
|
||||
catalog = self.trailer["/Root"].getObject()
|
||||
pages = catalog["/Pages"].getObject()
|
||||
|
@ -616,7 +610,7 @@ class PdfFileReader(object):
|
|||
|
||||
def getObject(self, indirectReference):
|
||||
retval = self.resolvedObjects.get(indirectReference.generation, {}).get(indirectReference.idnum, None)
|
||||
if retval != None:
|
||||
if retval is not None:
|
||||
return retval
|
||||
if indirectReference.generation == 0 and \
|
||||
self.xref_objStm.has_key(indirectReference.idnum):
|
||||
|
@ -844,7 +838,6 @@ class PdfFileReader(object):
|
|||
else:
|
||||
# no xref table found at specified location
|
||||
assert False
|
||||
break
|
||||
|
||||
def _pairs(self, array):
|
||||
i = 0
|
||||
|
@ -959,10 +952,10 @@ def getRectangle(self, name, defaults):
|
|||
retval = self.get(name)
|
||||
if isinstance(retval, RectangleObject):
|
||||
return retval
|
||||
if retval == None:
|
||||
if retval is None:
|
||||
for d in defaults:
|
||||
retval = self.get(d)
|
||||
if retval != None:
|
||||
if retval is not None:
|
||||
break
|
||||
if isinstance(retval, IndirectObject):
|
||||
retval = self.pdf.getObject(retval)
|
||||
|
|
|
@ -78,7 +78,7 @@ class ConvertFunctionsToVirtualList(object):
|
|||
len_self = len(self)
|
||||
if index < 0:
|
||||
# support negative indexes
|
||||
index = len_self + index
|
||||
index += len_self
|
||||
if index < 0 or index >= len_self:
|
||||
raise IndexError, "sequence index out of range"
|
||||
return self.getFunction(index)
|
||||
|
|
|
@ -66,7 +66,7 @@ class XmpInformation(PdfObject):
|
|||
for desc in self.rdfRoot.getElementsByTagNameNS(RDF_NAMESPACE, "Description"):
|
||||
if desc.getAttributeNS(RDF_NAMESPACE, "about") == aboutUri:
|
||||
attr = desc.getAttributeNodeNS(namespace, name)
|
||||
if attr != None:
|
||||
if attr is not None:
|
||||
yield attr
|
||||
for element in desc.getElementsByTagNameNS(namespace, name):
|
||||
yield element
|
||||
|
@ -187,7 +187,7 @@ class XmpInformation(PdfObject):
|
|||
else:
|
||||
value = self._getText(element)
|
||||
break
|
||||
if value != None:
|
||||
if value is not None:
|
||||
value = converter(value)
|
||||
ns_cache = self.cache.setdefault(namespace, {})
|
||||
ns_cache[name] = value
|
||||
|
@ -353,5 +353,5 @@ class XmpInformation(PdfObject):
|
|||
custom_properties = property(custom_properties)
|
||||
|
||||
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -391,7 +391,7 @@ class _rml_doc(object):
|
|||
list_story.append(story_text)
|
||||
del f
|
||||
if template.data:
|
||||
tag = '''<img src = '%s' width=80 height=72/>'''%(template.data)
|
||||
tag = '''<img src = '%s' width=80 height=72/>'''% template.data
|
||||
else:
|
||||
tag = ''
|
||||
self.result +='''
|
||||
|
|
|
@ -28,14 +28,14 @@ regex_t = re.compile('\(([0-9\.]*),([0-9\.]*),([0-9\.]*)\)')
|
|||
regex_h = re.compile('#([0-9a-zA-Z][0-9a-zA-Z])([0-9a-zA-Z][0-9a-zA-Z])([0-9a-zA-Z][0-9a-zA-Z])')
|
||||
|
||||
def get(col_str):
|
||||
if col_str == None:
|
||||
if col_str is None:
|
||||
col_str = ''
|
||||
global allcols
|
||||
if col_str in allcols.keys():
|
||||
return allcols[col_str]
|
||||
res = regex_t.search(col_str, 0)
|
||||
if res:
|
||||
return (float(res.group(1)),float(res.group(2)),float(res.group(3)))
|
||||
return float(res.group(1)), float(res.group(2)), float(res.group(3))
|
||||
res = regex_h.search(col_str, 0)
|
||||
if res:
|
||||
return tuple([ float(int(res.group(i),16))/255 for i in range(1,4)])
|
||||
|
|
|
@ -96,7 +96,7 @@ class NumberedCanvas(canvas.Canvas):
|
|||
key=self._pageCounter
|
||||
if not self.pages.get(key,False):
|
||||
while not self.pages.get(key,False):
|
||||
key = key + 1
|
||||
key += 1
|
||||
self.setFont("Helvetica", 8)
|
||||
self.drawRightString((self._pagesize[0]-30), (self._pagesize[1]-40),
|
||||
" %(this)i / %(total)i" % {
|
||||
|
@ -123,7 +123,7 @@ class PageCount(platypus.Flowable):
|
|||
self.story_count = story_count
|
||||
|
||||
def draw(self):
|
||||
self.canv.beginForm("pageCount%d" % (self.story_count))
|
||||
self.canv.beginForm("pageCount%d" % self.story_count)
|
||||
self.canv.setFont("Helvetica", utils.unit_get(str(8)))
|
||||
self.canv.drawString(0, 0, str(self.canv.getPageNumber()))
|
||||
self.canv.endForm()
|
||||
|
@ -268,18 +268,18 @@ class _rml_doc(object):
|
|||
|
||||
if fontname not in pdfmetrics._fonts:
|
||||
pdfmetrics.registerFont(TTFont(fontname, filename))
|
||||
if (mode == 'all'):
|
||||
if mode == 'all':
|
||||
addMapping(face, 0, 0, fontname) #normal
|
||||
addMapping(face, 0, 1, fontname) #italic
|
||||
addMapping(face, 1, 0, fontname) #bold
|
||||
addMapping(face, 1, 1, fontname) #italic and bold
|
||||
elif (mode== 'normal') or (mode == 'regular'):
|
||||
addMapping(face, 0, 0, fontname) #normal
|
||||
elif (mode == 'italic'):
|
||||
elif mode == 'italic':
|
||||
addMapping(face, 0, 1, fontname) #italic
|
||||
elif (mode == 'bold'):
|
||||
elif mode == 'bold':
|
||||
addMapping(face, 1, 0, fontname) #bold
|
||||
elif (mode == 'bolditalic'):
|
||||
elif mode == 'bolditalic':
|
||||
addMapping(face, 1, 1, fontname) #italic and bold
|
||||
|
||||
def _textual_image(self, node):
|
||||
|
@ -493,7 +493,7 @@ class _rml_canvas(object):
|
|||
img = ImageReader(s)
|
||||
(sx,sy) = img.getSize()
|
||||
_logger.debug("Image is %dx%d", sx, sy)
|
||||
args = { 'x': 0.0, 'y': 0.0 }
|
||||
args = { 'x': 0.0, 'y': 0.0, 'mask': 'auto'}
|
||||
for tag in ('width','height','x','y'):
|
||||
if node.get(tag):
|
||||
args[tag] = utils.unit_get(node.get(tag))
|
||||
|
@ -602,7 +602,7 @@ class _rml_Illustration(platypus.flowables.Flowable):
|
|||
self.height = utils.unit_get(node.get('height'))
|
||||
self.self2 = self2
|
||||
def wrap(self, *args):
|
||||
return (self.width, self.height)
|
||||
return self.width, self.height
|
||||
def draw(self):
|
||||
drw = _rml_draw(self.localcontext ,self.node,self.styles, images=self.self2.images, path=self.self2.path, title=self.self2.title)
|
||||
drw.render(self.canv, None)
|
||||
|
@ -890,7 +890,7 @@ class TinyDocTemplate(platypus.BaseDocTemplate):
|
|||
self.canv._storyCount = 0
|
||||
|
||||
def ___handle_pageBegin(self):
|
||||
self.page = self.page + 1
|
||||
self.page += 1
|
||||
self.pageTemplate.beforeDrawPage(self.canv,self)
|
||||
self.pageTemplate.checkPageSize(self.canv,self)
|
||||
self.pageTemplate.onPage(self.canv,self)
|
||||
|
|
|
@ -29,7 +29,8 @@ import utils
|
|||
Font_size= 10.0
|
||||
|
||||
def verbose(text):
|
||||
sys.stderr.write(text+"\n");
|
||||
sys.stderr.write(text+"\n")
|
||||
|
||||
|
||||
class textbox(object):
|
||||
"""A box containing plain text.
|
||||
|
@ -107,11 +108,11 @@ class textbox(object):
|
|||
def haplines(self,arr,offset,cc= ''):
|
||||
""" Horizontaly append lines
|
||||
"""
|
||||
while (len(self.lines) < len(arr)):
|
||||
while len(self.lines) < len(arr):
|
||||
self.lines.append("")
|
||||
|
||||
for i in range(len(self.lines)):
|
||||
while (len(self.lines[i]) < offset):
|
||||
while len(self.lines[i]) < offset:
|
||||
self.lines[i] += " "
|
||||
for i in range(len(arr)):
|
||||
self.lines[i] += cc +arr[i]
|
||||
|
@ -220,7 +221,7 @@ class _flowable(object):
|
|||
def rec_render(self,node):
|
||||
""" Recursive render: fill outarr with text of current node
|
||||
"""
|
||||
if node.tag != None:
|
||||
if node.tag is not None:
|
||||
if node.tag in self._tags:
|
||||
self._tags[node.tag](node)
|
||||
else:
|
||||
|
@ -255,12 +256,10 @@ class _rml_tmpl_frame(_rml_tmpl_tag):
|
|||
self.posx = posx
|
||||
def tag_start(self):
|
||||
return "frame start"
|
||||
return '<table border="0" width="%d"><tr><td width="%d"> </td><td>' % (self.width+self.posx,self.posx)
|
||||
def tag_end(self):
|
||||
return True
|
||||
def tag_stop(self):
|
||||
return "frame stop"
|
||||
return '</td></tr></table><br/>'
|
||||
def tag_mergeable(self):
|
||||
return False
|
||||
|
||||
|
@ -282,24 +281,7 @@ class _rml_tmpl_draw_string(_rml_tmpl_tag):
|
|||
|
||||
def tag_start(self):
|
||||
return "draw string \"%s\" @(%d,%d)..\n" %("txt",self.posx,self.posy)
|
||||
self.pos.sort()
|
||||
res = '\\table ...'
|
||||
posx = 0
|
||||
i = 0
|
||||
for (x,y,align,txt, style, fs) in self.pos:
|
||||
if align=="left":
|
||||
pos2 = len(txt)*fs
|
||||
res+='<td width="%d"></td><td style="%s" width="%d">%s</td>' % (x - posx, style, pos2, txt)
|
||||
posx = x+pos2
|
||||
if align=="right":
|
||||
res+='<td width="%d" align="right" style="%s">%s</td>' % (x - posx, style, txt)
|
||||
posx = x
|
||||
if align=="center":
|
||||
res+='<td width="%d" align="center" style="%s">%s</td>' % ((x - posx)*2, style, txt)
|
||||
posx = 2*x-posx
|
||||
i+=1
|
||||
res+='\\table end'
|
||||
return res
|
||||
|
||||
def merge(self, ds):
|
||||
self.pos+=ds.pos
|
||||
|
||||
|
@ -316,10 +298,6 @@ class _rml_tmpl_draw_lines(_rml_tmpl_tag):
|
|||
|
||||
def tag_start(self):
|
||||
return "draw lines..\n"
|
||||
if self.ok:
|
||||
return '<table border="0" cellpadding="0" cellspacing="0" width="%d"><tr><td width="%d"></td><td><hr width="100%%" style="margin:0px; %s"></td></tr></table>' % (self.posx+self.width,self.posx,self.style)
|
||||
else:
|
||||
return ''
|
||||
|
||||
class _rml_stylesheet(object):
|
||||
def __init__(self, stylesheet, doc):
|
||||
|
@ -456,11 +434,6 @@ class _rml_template(object):
|
|||
|
||||
def end(self):
|
||||
return "template end\n"
|
||||
result = ''
|
||||
while not self.loop:
|
||||
result += self.frame_start()
|
||||
result += self.frame_stop()
|
||||
return result
|
||||
|
||||
class _rml_doc(object):
|
||||
def __init__(self, node, localcontext=None, images=None, path='.', title=None):
|
||||
|
|
|
@ -441,7 +441,7 @@ class report_sxw(report_rml, preprocess.report):
|
|||
raise NotImplementedError(_('Unknown report type: %s') % report_type)
|
||||
fnct_ret = fnct(cr, uid, ids, data, report_xml, context)
|
||||
if not fnct_ret:
|
||||
return (False,False)
|
||||
return False, False
|
||||
return fnct_ret
|
||||
|
||||
def create_source_odt(self, cr, uid, ids, data, report_xml, context=None):
|
||||
|
@ -531,7 +531,7 @@ class report_sxw(report_rml, preprocess.report):
|
|||
logo = base64.decodestring(rml_parser.logo)
|
||||
create_doc = self.generators[report_xml.report_type]
|
||||
pdf = create_doc(etree.tostring(processed_rml),rml_parser.localcontext,logo,title.encode('utf8'))
|
||||
return (pdf, report_xml.report_type)
|
||||
return pdf, report_xml.report_type
|
||||
|
||||
def create_single_odt(self, cr, uid, ids, data, report_xml, context=None):
|
||||
if not context:
|
||||
|
@ -644,7 +644,7 @@ class report_sxw(report_rml, preprocess.report):
|
|||
sxw_z.close()
|
||||
final_op = sxw_io.getvalue()
|
||||
sxw_io.close()
|
||||
return (final_op, mime_type)
|
||||
return final_op, mime_type
|
||||
|
||||
def create_single_html2html(self, cr, uid, ids, data, report_xml, context=None):
|
||||
if not context:
|
||||
|
@ -666,7 +666,7 @@ class report_sxw(report_rml, preprocess.report):
|
|||
create_doc = self.generators['html2html']
|
||||
html = etree.tostring(create_doc(html_dom, html_parser.localcontext))
|
||||
|
||||
return (html.replace('&','&').replace('<', '<').replace('>', '>').replace('</br>',''), report_type)
|
||||
return html.replace('&','&').replace('<', '<').replace('>', '>').replace('</br>',''), report_type
|
||||
|
||||
def create_single_mako2html(self, cr, uid, ids, data, report_xml, context=None):
|
||||
mako_html = report_xml.report_rml_content
|
||||
|
@ -675,7 +675,7 @@ class report_sxw(report_rml, preprocess.report):
|
|||
html_parser.set_context(objs, data, ids, 'html')
|
||||
create_doc = self.generators['makohtml2html']
|
||||
html = create_doc(mako_html,html_parser.localcontext)
|
||||
return (html,'html')
|
||||
return html,'html'
|
||||
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -139,7 +139,7 @@ class OpenERPAuthProvider(AuthProvider):
|
|||
uid = security.login(db,user,passwd)
|
||||
if uid is False:
|
||||
return False
|
||||
return (user, passwd, db, uid)
|
||||
return user, passwd, db, uid
|
||||
except Exception,e:
|
||||
_logger.debug("Fail auth: %s" % e )
|
||||
return False
|
||||
|
|
|
@ -77,11 +77,11 @@ def _initialize_db(serv, id, db_name, demo, lang, user_password):
|
|||
mids = modobj.search(cr, SUPERUSER_ID, [('state', '=', 'installed')])
|
||||
modobj.update_translations(cr, SUPERUSER_ID, mids, lang)
|
||||
|
||||
cr.execute('UPDATE res_users SET password=%s, lang=%s, active=True WHERE login=%s', (
|
||||
user_password, lang, 'admin'))
|
||||
cr.execute('SELECT login, password ' \
|
||||
' FROM res_users ' \
|
||||
' ORDER BY login')
|
||||
# update admin's password and lang
|
||||
values = {'password': user_password, 'lang': lang}
|
||||
pool.get('res.users').write(cr, SUPERUSER_ID, [SUPERUSER_ID], values)
|
||||
|
||||
cr.execute('SELECT login, password FROM res_users ORDER BY login')
|
||||
serv.actions[id].update(users=cr.dictfetchall(), clean=True)
|
||||
cr.commit()
|
||||
cr.close()
|
||||
|
@ -172,13 +172,13 @@ class db(netsvc.ExportService):
|
|||
def exp_get_progress(self, id):
|
||||
if self.actions[id]['thread'].isAlive():
|
||||
# return openerp.modules.init_progress[db_name]
|
||||
return (min(self.actions[id].get('progress', 0),0.95), [])
|
||||
return min(self.actions[id].get('progress', 0),0.95), []
|
||||
else:
|
||||
clean = self.actions[id]['clean']
|
||||
if clean:
|
||||
users = self.actions[id]['users']
|
||||
self.actions.pop(id)
|
||||
return (1.0, users)
|
||||
return 1.0, users
|
||||
else:
|
||||
e = self.actions[id]['exception'] # TODO this seems wrong: actions[id]['traceback'] is set, but not 'exception'.
|
||||
self.actions.pop(id)
|
||||
|
@ -543,7 +543,7 @@ GNU Public Licence.
|
|||
if os.name == 'posix':
|
||||
if platform.system() == 'Linux':
|
||||
lsbinfo = os.popen('lsb_release -a').read()
|
||||
environment += '%s'%(lsbinfo)
|
||||
environment += '%s'% lsbinfo
|
||||
else:
|
||||
environment += 'Your System is not lsb compliant\n'
|
||||
environment += 'Operating System Release : %s\n' \
|
||||
|
|
|
@ -226,9 +226,9 @@ class HttpOptions:
|
|||
|
||||
Sometimes, like in special DAV folders, the OPTIONS may contain
|
||||
extra keywords, perhaps also dependant on the request url.
|
||||
@param the options already. MUST be copied before being altered
|
||||
@return the updated options.
|
||||
|
||||
:param opts: MUST be copied before being altered
|
||||
:returns: the updated options.
|
||||
|
||||
"""
|
||||
return opts
|
||||
|
||||
|
|
|
@ -74,8 +74,8 @@ import threading
|
|||
from inspect import currentframe
|
||||
|
||||
import re
|
||||
re_from = re.compile('.* from "?([a-zA-Z_0-9]+)"? .*$');
|
||||
re_into = re.compile('.* into "?([a-zA-Z_0-9]+)"? .*$');
|
||||
re_from = re.compile('.* from "?([a-zA-Z_0-9]+)"? .*$')
|
||||
re_into = re.compile('.* into "?([a-zA-Z_0-9]+)"? .*$')
|
||||
|
||||
sql_counter = 0
|
||||
|
||||
|
@ -226,11 +226,11 @@ class Cursor(object):
|
|||
params = params or None
|
||||
res = self._obj.execute(query, params)
|
||||
except psycopg2.ProgrammingError, pe:
|
||||
if (self._default_log_exceptions if log_exceptions is None else log_exceptions):
|
||||
if self._default_log_exceptions if log_exceptions is None else log_exceptions:
|
||||
_logger.error("Programming error: %s, in query %s", pe, query)
|
||||
raise
|
||||
except Exception:
|
||||
if (self._default_log_exceptions if log_exceptions is None else log_exceptions):
|
||||
if self._default_log_exceptions if log_exceptions is None else log_exceptions:
|
||||
_logger.exception("bad query: %s", self._obj.query or query)
|
||||
raise
|
||||
|
||||
|
@ -357,11 +357,6 @@ class Cursor(object):
|
|||
def __getattr__(self, name):
|
||||
return getattr(self._obj, name)
|
||||
|
||||
""" Set the mode of postgres operations for all cursors
|
||||
"""
|
||||
"""Obtain the mode of postgres operations for all cursors
|
||||
"""
|
||||
|
||||
class PsycoConnection(psycopg2.extensions.connection):
|
||||
pass
|
||||
|
||||
|
@ -521,8 +516,8 @@ def db_connect(db_name):
|
|||
return Connection(_Pool, db_name)
|
||||
|
||||
def close_db(db_name):
|
||||
global _Pool
|
||||
""" You might want to call openerp.modules.registry.RegistryManager.delete(db_name) along this function."""
|
||||
global _Pool
|
||||
if _Pool:
|
||||
_Pool.close_all(dsn(db_name))
|
||||
ct = currentThread()
|
||||
|
|
|
@ -8,6 +8,7 @@ Tests can be explicitely added to the `fast_suite` or `checks` lists or not.
|
|||
See the :ref:`test-framework` section in the :ref:`features` list.
|
||||
"""
|
||||
|
||||
import test_acl
|
||||
import test_basecase
|
||||
import test_db_cursor
|
||||
import test_expression
|
||||
|
@ -28,6 +29,7 @@ fast_suite = [
|
|||
]
|
||||
|
||||
checks = [
|
||||
test_acl,
|
||||
test_expression,
|
||||
test_mail,
|
||||
test_db_cursor,
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
import unittest2
|
||||
from lxml import etree
|
||||
|
||||
import openerp
|
||||
from openerp.tools.misc import mute_logger
|
||||
|
||||
import common
|
||||
|
||||
# test group that demo user should not have
|
||||
|
@ -55,6 +58,7 @@ class TestACL(common.TransactionCase):
|
|||
self.tech_group.write({'users': [(3, self.demo_uid)]})
|
||||
self.res_currency._columns['rate'].groups = False
|
||||
|
||||
@mute_logger('openerp.osv.orm')
|
||||
def test_field_crud_restriction(self):
|
||||
"Read/Write RPC access to restricted field should be forbidden"
|
||||
# Verify the test environment first
|
||||
|
@ -65,12 +69,10 @@ class TestACL(common.TransactionCase):
|
|||
|
||||
# Now restrict access to the field and check it's forbidden
|
||||
self.res_partner._columns['bank_ids'].groups = GROUP_TECHNICAL_FEATURES
|
||||
# FIXME TODO: enable next tests when access rights checks per field are implemented
|
||||
# from openerp.osv.orm import except_orm
|
||||
# with self.assertRaises(except_orm):
|
||||
# self.res_partner.read(self.cr, self.demo_uid, [1], ['bank_ids'])
|
||||
# with self.assertRaises(except_orm):
|
||||
# self.res_partner.write(self.cr, self.demo_uid, [1], {'bank_ids': []})
|
||||
with self.assertRaises(openerp.osv.orm.except_orm):
|
||||
self.res_partner.read(self.cr, self.demo_uid, [1], ['bank_ids'])
|
||||
with self.assertRaises(openerp.osv.orm.except_orm):
|
||||
self.res_partner.write(self.cr, self.demo_uid, [1], {'bank_ids': []})
|
||||
|
||||
# Add the restricted group, and check that it works again
|
||||
self.tech_group.write({'users': [(4, self.demo_uid)]})
|
||||
|
@ -86,4 +88,4 @@ class TestACL(common.TransactionCase):
|
|||
if __name__ == '__main__':
|
||||
unittest2.main()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -1,11 +1,8 @@
|
|||
#
|
||||
# test cases for fields access, etc.
|
||||
#
|
||||
|
||||
import unittest2
|
||||
import common
|
||||
|
||||
import openerp
|
||||
from openerp.osv import fields
|
||||
|
||||
class TestRelatedField(common.TransactionCase):
|
||||
|
@ -53,31 +50,46 @@ class TestRelatedField(common.TransactionCase):
|
|||
def test_1_single_related(self):
|
||||
""" test a related field with a single indirection like fields.related('foo') """
|
||||
# add a related field test_related_company_id on res.partner
|
||||
# and simulate a _inherits_reload() to populate _all_columns.
|
||||
old_columns = self.partner._columns
|
||||
old_all_columns = self.partner._all_columns
|
||||
self.partner._columns = dict(old_columns)
|
||||
self.partner._all_columns = dict(old_all_columns)
|
||||
self.partner._columns.update({
|
||||
'single_related_company_id': fields.related('company_id', type='many2one', obj='res.company'),
|
||||
})
|
||||
self.partner._all_columns.update({
|
||||
'single_related_company_id': fields.column_info('single_related_company_id', self.partner._columns['single_related_company_id'], None, None, None)
|
||||
})
|
||||
|
||||
self.do_test_company_field('single_related_company_id')
|
||||
|
||||
# restore res.partner fields
|
||||
self.partner._columns = old_columns
|
||||
self.partner._all_columns = old_all_columns
|
||||
|
||||
def test_2_related_related(self):
|
||||
""" test a related field referring to a related field """
|
||||
# add a related field on a related field on res.partner
|
||||
# and simulate a _inherits_reload() to populate _all_columns.
|
||||
old_columns = self.partner._columns
|
||||
old_all_columns = self.partner._all_columns
|
||||
self.partner._columns = dict(old_columns)
|
||||
self.partner._all_columns = dict(old_all_columns)
|
||||
self.partner._columns.update({
|
||||
'single_related_company_id': fields.related('company_id', type='many2one', obj='res.company'),
|
||||
'related_related_company_id': fields.related('single_related_company_id', type='many2one', obj='res.company'),
|
||||
})
|
||||
self.partner._all_columns.update({
|
||||
'single_related_company_id': fields.column_info('single_related_company_id', self.partner._columns['single_related_company_id'], None, None, None),
|
||||
'related_related_company_id': fields.column_info('related_related_company_id', self.partner._columns['related_related_company_id'], None, None, None)
|
||||
})
|
||||
|
||||
self.do_test_company_field('related_related_company_id')
|
||||
|
||||
# restore res.partner fields
|
||||
self.partner._columns = old_columns
|
||||
self.partner._all_columns = old_all_columns
|
||||
|
||||
def test_3_read_write(self):
|
||||
""" write on a related field """
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import functools
|
||||
|
||||
import openerp
|
||||
from openerp import exceptions
|
||||
from . import common
|
||||
|
||||
|
@ -261,4 +260,4 @@ class TestGlobalDefaults(common.TransactionCase):
|
|||
self.assertItemsEqual(map(noid, filters), [
|
||||
dict(name='a', user_id=False, is_default=False, domain='[]', context='{}'),
|
||||
dict(name='b', user_id=False, is_default=True, domain='[]', context=context_value),
|
||||
])
|
||||
])
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
from openerp import exceptions
|
||||
from openerp.tools import mute_logger
|
||||
import common
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# This assumes an existing but uninitialized database.
|
||||
import psycopg2
|
||||
import unittest2
|
||||
|
||||
import openerp
|
||||
|
|
|
@ -1,11 +1,9 @@
|
|||
# This test can be run stand-alone with something like:
|
||||
# > PYTHONPATH=. python2 openerp/tests/test_view_validation.py
|
||||
|
||||
from lxml import etree
|
||||
from StringIO import StringIO
|
||||
import unittest2
|
||||
|
||||
import openerp
|
||||
from openerp.tools.view_validation import *
|
||||
|
||||
invalid_form = etree.parse(StringIO('''\
|
||||
|
|
|
@ -10,7 +10,6 @@ import time
|
|||
import unittest2
|
||||
import xmlrpclib
|
||||
|
||||
import openerp
|
||||
import common
|
||||
|
||||
DB = None
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue