diff --git a/doc/06_misc.rst b/doc/06_misc.rst index c82022b812e..5a4ae7e008a 100644 --- a/doc/06_misc.rst +++ b/doc/06_misc.rst @@ -10,3 +10,4 @@ Miscellanous 06_misc_need_action_specs.rst 06_misc_user_img_specs.rst 06_misc_import.rst + 06_misc_auto_join.rst diff --git a/doc/06_misc_auto_join.rst b/doc/06_misc_auto_join.rst new file mode 100644 index 00000000000..1dd2d0edb88 --- /dev/null +++ b/doc/06_misc_auto_join.rst @@ -0,0 +1,75 @@ +.. _performing_joins_in_select: + +Perfoming joins in select +========================= + +.. versionadded:: 7.0 + +Starting with OpenERP 7.0, an ``auto_join`` attribute is added on *many2one* and +*one2many* fields. The purpose is to allow the automatic generation of joins in +select queries. This attribute is set to False by default, therefore not changing +the default behavior. Please note that we consider this feature as still experimental +and should be used only if you understand its limitations and targets. + +Without ``_auto_join``, the behavior of expression.parse() is the same as before. +Leafs holding a path beginning with many2one or one2many fields perform a search +on the relational table. The result is then used to replace the leaf content. +For example, if you have on res.partner a domain like ``[('bank_ids.name', +'like', 'foo')]`` with bank_ids linking to res.partner.bank, 3 queries will be +performed : + +- 1 on res_partner_bank, with domain ``[('name', '=', 'foo')]``, that returns a + list of res.partner.bank ids (bids) +- 1 on res_partner, with a domain ``['bank_ids', 'in', bids)]``, that returns a + list of res.partner ids (pids) +- 1 on res_partner, with a domain ``[('id', 'in', pids)]`` + +When the ``auto_join`` attribute is True on a relational field, the destination +table will be joined to produce only one query. + +- the relational table is accessed using an alias: ``'"res_partner_bank" + as res_partner__bank_ids``. The alias is generated using the relational field + name. This allows to have multiple joins with different join conditions on the + same table, depending on the domain. +- there is a join condition between the destination table and the main table: + ``res_partner__bank_ids."partner_id"=res_partner."id"`` +- the condition is then written on the relational table: + ``res_partner__bank_ids."name" = 'foo'`` + +This manipulation is performed in expression.parse(). It checks leafs that +contain a path, i.e. any domain containing a '.'. It then checks whether the +first item of the path is a *many2one* or *one2many* field with the ``auto_join`` +attribute set. If set, it adds a join query and recursively analyzes the +remaining of the leaf, using the same behavior. If the remaining path also holds +a path with auto_join fields, it will add all tables and add every necessary +join conditions. + +Chaining joins allows to reduce the number of queries performed, and to avoid +having too long equivalent leaf replacement in domains. Indeed, the internal +queries produced by this behavior can be very costly, because they were generally +select queries without limit that could lead to huge ('id', 'in', [...]) +leafs to analyze and execute. + +Some limitations exist on this feature that limits its current use as of version +7.0. **This feature is therefore considered as experimental, and used +to speedup some precise bottlenecks in OpenERP**. + +List of known issues and limitations: + +- using ``auto_join`` bypasses the business logic; no name search is performed, + only direct matches between ids using join conditions +- ir.rules are not taken into account when analyzing and adding the join + conditions + +List of already-supported corner cases : + +- one2many fields having a domain attribute. Static domains as well as dynamic + domain are supported +- auto_join leading to functional searchable fields + +Typical use in OpenERP 7.0: + +- in mail module: notification_ids field on mail_message, allowing to speedup + the display of the various mailboxes +- in mail module: message_ids field on mail_thread, allowing to speedup the + display of needaction counters and documents having unread messages diff --git a/openerp/addons/base/i18n/de.po b/openerp/addons/base/i18n/de.po index a35b412a051..32039b4e30a 100644 --- a/openerp/addons/base/i18n/de.po +++ b/openerp/addons/base/i18n/de.po @@ -8,14 +8,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-11-30 10:26+0000\n" +"PO-Revision-Date: 2012-12-10 22:51+0000\n" "Last-Translator: Felix Schubert \n" "Language-Team: German \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:55+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:37+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing @@ -87,8 +87,7 @@ msgid "" "Helps you manage your projects and tasks by tracking them, generating " "plannings, etc..." msgstr "" -"Anwendung für das Management, Planung und zeitlicher Überwachung von " -"Projekten und Aufgaben ..." +"Verwaltung und Überwachung von Projekten, Anlage von Aufgaben, Terminen ..." #. module: base #: model:ir.module.module,summary:base.module_point_of_sale @@ -175,7 +174,7 @@ msgstr "" #. module: base #: field:res.partner,ref:0 msgid "Reference" -msgstr "Referenz" +msgstr "Kundennummer" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_be_invoice_bba @@ -615,7 +614,7 @@ msgstr "Bezugsname" #. module: base #: view:ir.rule:0 msgid "Create Access Right" -msgstr "" +msgstr "Zugriffsrecht anlegen" #. module: base #: model:res.country,name:base.tv @@ -965,6 +964,9 @@ msgid "" "image, with aspect ratio preserved. Use this field anywhere a small image is " "required." msgstr "" +"Miniaturbild des Kontaktes. Es wird automatisch auf 64x64px " +"heruntergerechnet unter Beibehaltung der Seitenverhältnisse. Benutzen Sie " +"dieses Feld überall, wo ein Miniaturbild benötigt wird." #. module: base #: help:ir.actions.server,mobile:0 @@ -1330,7 +1332,7 @@ msgstr "Neueste Version" #. module: base #: view:ir.rule:0 msgid "Delete Access Right" -msgstr "" +msgstr "Zugriffsrecht löschen" #. module: base #: code:addons/base/ir/ir_mail_server.py:213 @@ -1401,7 +1403,7 @@ msgstr "Sichtbar" #. module: base #: model:ir.actions.client,name:base.action_client_base_menu msgid "Open Settings Menu" -msgstr "" +msgstr "Einstellungsmenu öffnen" #. module: base #: selection:base.language.install,lang:0 @@ -1996,7 +1998,7 @@ msgstr "Niederlande" #. module: base #: model:ir.module.module,shortdesc:base.module_portal_event msgid "Portal Event" -msgstr "" +msgstr "Event Portal" #. module: base #: selection:ir.translation,state:0 @@ -2105,7 +2107,7 @@ msgstr "Aufgaben der Auftragserfassung" #: code:addons/base/ir/ir_model.py:316 #, python-format msgid "This column contains module data and cannot be removed!" -msgstr "" +msgstr "Diese Spalte enthält Modul Daten und kann nicht gelöscht werden!" #. module: base #: field:ir.attachment,res_model:0 @@ -2248,7 +2250,7 @@ msgstr "Pfad" #. module: base #: view:base.language.export:0 msgid "The next step depends on the file format:" -msgstr "" +msgstr "Der nächste Schritt ist abhängig vom Dateiformat:" #. module: base #: model:ir.module.module,shortdesc:base.module_idea @@ -2269,7 +2271,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) Format: Bearbeiten Sie es mit einem PO Editor wie" #. module: base #: model:ir.ui.menu,name:base.menu_administration @@ -2293,7 +2295,7 @@ msgstr "Anlegen / Schreiben / Kopieren" #. module: base #: view:ir.sequence:0 msgid "Second: %(sec)s" -msgstr "" +msgstr "Sekunden: %(sec)s" #. module: base #: field:ir.actions.act_window,view_mode:0 @@ -2322,7 +2324,7 @@ msgstr "Korean (KP) / 한국어 (KP)" #. module: base #: model:res.country,name:base.ax msgid "Åland Islands" -msgstr "" +msgstr "Åland Inseln" #. module: base #: field:res.company,logo:0 @@ -2381,6 +2383,8 @@ msgid "" "Appears by default on the top right corner of your printed documents (report " "header)." msgstr "" +"Wird standardmäßig oben rechts auf Ihren gedruckten Dokumenten ausgegeben " +"(Berichtskopf)" #. module: base #: field:base.module.update,update:0 @@ -2679,7 +2683,7 @@ msgstr "" #. module: base #: field:res.company,rml_header1:0 msgid "Company Slogan" -msgstr "" +msgstr "Unternehmensmotto" #. module: base #: model:res.country,name:base.bb @@ -2797,7 +2801,7 @@ msgstr "Tastaturkürzel" #. module: base #: field:res.partner,contact_address:0 msgid "Complete Address" -msgstr "" +msgstr "Vollständige Adresse" #. module: base #: help:ir.actions.act_window,limit:0 @@ -2869,7 +2873,7 @@ msgstr "Datensatz Nr." #. module: base #: view:ir.filters:0 msgid "My Filters" -msgstr "" +msgstr "Meine Filter" #. module: base #: field:ir.actions.server,email:0 @@ -2888,7 +2892,7 @@ msgstr "" #: code:addons/base/ir/ir_fields.py:334 #, python-format msgid "Found multiple matches for field '%%(field)s' (%d matches)" -msgstr "" +msgstr "Mehrere Treffer für das Feld '%%(field)s' (%d matches) gefunden" #. module: base #: selection:base.language.install,lang:0 @@ -2924,7 +2928,7 @@ msgstr "" #. module: base #: model:ir.module.module,summary:base.module_contacts msgid "Contacts, People and Companies" -msgstr "" +msgstr "Kontakte, Personen und Unternehmen" #. module: base #: model:res.country,name:base.tt @@ -2958,6 +2962,7 @@ msgstr "Manager" #, python-format msgid "Sorry, you are not allowed to access this document." msgstr "" +"Entschuldigen Sie, Sie sind nicht berechtigt auf dieses Dokument zuzugreifen." #. module: base #: model:res.country,name:base.py @@ -2972,7 +2977,7 @@ msgstr "Fidschi-Inseln" #. module: base #: view:ir.actions.report.xml:0 msgid "Report Xml" -msgstr "" +msgstr "XML Bericht" #. module: base #: model:ir.module.module,description:base.module_purchase @@ -3043,7 +3048,7 @@ msgstr "Vererbt" #: code:addons/base/ir/ir_fields.py:147 #, python-format msgid "yes" -msgstr "" +msgstr "Ja" #. module: base #: field:ir.model.fields,serialization_field_id:0 @@ -3073,7 +3078,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' ist keine ganzzahlige Eingabe für das Feld '%%(field)s'" #. module: base #: model:ir.module.category,description:base.module_category_report_designer @@ -3133,7 +3138,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_web_linkedin msgid "LinkedIn Integration" -msgstr "" +msgstr "LinkedIn Integration" #. module: base #: code:addons/orm.py:2021 @@ -3182,6 +3187,8 @@ msgid "" "the user will have an access to the sales configuration as well as statistic " "reports." msgstr "" +"der Benutzer erhält den Zugriff auf die Konfiguration des Verkaufs wie auch " +"auf die zugehörigen Berichte." #. module: base #: model:res.country,name:base.nz @@ -3269,6 +3276,8 @@ msgid "" "the user will have an access to the human resources configuration as well as " "statistic reports." msgstr "" +"der Benutzer erhält den Zugriff auf die Konfiguration des Personals wie auch " +"auf die zugehörigen Berichte." #. module: base #: model:ir.module.module,description:base.module_web_shortcuts @@ -3310,7 +3319,7 @@ msgstr "Unbekannte Berichtsart: %s" #. module: base #: model:ir.module.module,summary:base.module_hr_expense msgid "Expenses Validation, Invoicing" -msgstr "" +msgstr "Spesen Bestätigung, Verrechnung" #. module: base #: model:ir.module.module,description:base.module_l10n_be_hr_payroll_account @@ -3329,7 +3338,7 @@ msgstr "Armenien" #. module: base #: model:ir.module.module,summary:base.module_hr_evaluation msgid "Periodical Evaluations, Appraisals, Surveys" -msgstr "" +msgstr "Regelmäßige Evaluierungen, Bewertungen, Umfragen" #. module: base #: model:ir.actions.act_window,name:base.ir_property_form @@ -3411,7 +3420,7 @@ msgstr "" #: code:addons/orm.py:3839 #, python-format msgid "Missing document(s)" -msgstr "" +msgstr "Fehlende(s) Dokument(e)" #. module: base #: model:ir.model,name:base.model_res_partner_bank_type @@ -3426,6 +3435,8 @@ msgid "" "For more details about translating OpenERP in your language, please refer to " "the" msgstr "" +"Für detailiertere Informationen über die Übersetzung in Ihre Sprache, " +"informieren Sie sich" #. module: base #: field:res.partner,image:0 @@ -3448,7 +3459,7 @@ msgstr "Kalenderansicht" #. module: base #: model:ir.module.category,name:base.module_category_knowledge_management msgid "Knowledge" -msgstr "" +msgstr "Knowledge" #. module: base #: field:workflow.activity,signal_send:0 @@ -3612,7 +3623,7 @@ msgstr "workflow.activity" #. module: base #: view:base.language.export:0 msgid "Export Complete" -msgstr "" +msgstr "Export abgeschlossen" #. module: base #: help:ir.ui.view_sc,res_id:0 @@ -3640,7 +3651,7 @@ msgstr "Finnish / Suomi" #. module: base #: view:ir.config_parameter:0 msgid "System Properties" -msgstr "" +msgstr "System Einstellungen" #. module: base #: field:ir.sequence,prefix:0 @@ -3692,12 +3703,12 @@ msgstr "Wählen Sie das Module (zip Datei) für den Import" #. module: base #: view:ir.filters:0 msgid "Personal" -msgstr "" +msgstr "Personal" #. module: base #: field:base.language.export,modules:0 msgid "Modules To Export" -msgstr "" +msgstr "Zu exportierende Module" #. module: base #: model:res.country,name:base.mt @@ -3710,6 +3721,7 @@ msgstr "Malta" msgid "" "Only users with the following access level are currently allowed to do that" msgstr "" +"Nur Benutzer mit dem folgenden Zugriffslevel sind zur Zeit berechtigt" #. module: base #: field:ir.actions.server,fields_lines:0 @@ -3800,7 +3812,7 @@ msgstr "Antarktis" #. module: base #: view:res.partner:0 msgid "Persons" -msgstr "" +msgstr "Personen" #. module: base #: view:base.language.import:0 @@ -3860,7 +3872,7 @@ msgstr "Interaktion zwischen Regeln" #: field:res.company,rml_footer:0 #: field:res.company,rml_footer_readonly:0 msgid "Report Footer" -msgstr "" +msgstr "Berichtsfuß" #. module: base #: selection:res.lang,direction:0 @@ -3870,7 +3882,7 @@ msgstr "Rechts-nach-Links" #. module: base #: model:res.country,name:base.sx msgid "Sint Maarten (Dutch part)" -msgstr "" +msgstr "Saint-Martin (Niederländischer Teil)" #. module: base #: view:ir.actions.act_window:0 @@ -3978,7 +3990,7 @@ msgstr "Urdu / اردو" #: code:addons/orm.py:3870 #, python-format msgid "Access Denied" -msgstr "" +msgstr "Zugriff verweigert" #. module: base #: field:res.company,name:0 @@ -4042,7 +4054,7 @@ msgstr "" #. module: base #: model:res.country,name:base.je msgid "Jersey" -msgstr "" +msgstr "Jersey" #. module: base #: model:ir.module.module,description:base.module_auth_anonymous @@ -4071,7 +4083,7 @@ msgstr "%x - Anvisierte Datenpräsentation." #. module: base #: view:res.partner:0 msgid "Tag" -msgstr "" +msgstr "Tag" #. module: base #: view:res.lang:0 @@ -4123,7 +4135,7 @@ msgstr "" #. module: base #: model:res.country,name:base.sk msgid "Slovakia" -msgstr "" +msgstr "Slowakei" #. module: base #: model:res.country,name:base.nr @@ -4279,7 +4291,7 @@ msgstr "Teile jegliche Art von Dokumenten" #. module: base #: model:ir.module.module,summary:base.module_crm msgid "Leads, Opportunities, Phone Calls" -msgstr "" +msgstr "Leads, Opportunities, Telefonate" #. module: base #: view:res.lang:0 @@ -4376,7 +4388,7 @@ msgstr "Kontenpläne" #. module: base #: model:ir.ui.menu,name:base.menu_event_main msgid "Events Organization" -msgstr "" +msgstr "Event Organisation" #. module: base #: model:ir.actions.act_window,name:base.action_partner_customer_form @@ -4404,7 +4416,7 @@ msgstr "Basis Feld" #. module: base #: model:ir.module.category,name:base.module_category_managing_vehicles_and_contracts msgid "Managing vehicles and contracts" -msgstr "" +msgstr "Verwaltet Autos und Verträge" #. module: base #: model:ir.module.module,description:base.module_base_setup @@ -4459,7 +4471,7 @@ msgstr "Standard" #. module: base #: model:ir.module.module,summary:base.module_lunch msgid "Lunch Order, Meal, Food" -msgstr "" +msgstr "Essensbestellung, Mahlzeiten, Essen" #. module: base #: view:ir.model.fields:0 @@ -4530,7 +4542,7 @@ msgstr "" #. module: base #: field:res.partner,parent_id:0 msgid "Related Company" -msgstr "" +msgstr "Verbundenes Unternehmen" #. module: base #: help:ir.actions.act_url,help:0 @@ -4576,7 +4588,7 @@ msgstr "`code` muss eindeutig sein" #. module: base #: model:ir.module.module,shortdesc:base.module_knowledge msgid "Knowledge Management System" -msgstr "" +msgstr "Knowledge Management System" #. module: base #: view:workflow.activity:0 @@ -4639,6 +4651,9 @@ msgid "" "==========================\n" "\n" msgstr "" +"\n" +"OpenERP Web Kalender Ansicht\n" +"\n" #. module: base #: selection:base.language.install,lang:0 @@ -4653,7 +4668,7 @@ msgstr "Sequenz Typ" #. module: base #: view:base.language.export:0 msgid "Unicode/UTF-8" -msgstr "" +msgstr "Unicode/UTF-8" #. module: base #: selection:base.language.install,lang:0 @@ -4665,12 +4680,12 @@ msgstr "Hindi / हिंदी" #: 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 "Eine Übersetzung laden" #. module: base #: field:ir.module.module,latest_version:0 msgid "Installed Version" -msgstr "" +msgstr "Installierte Version" #. module: base #: field:ir.module.module,license:0 @@ -4759,7 +4774,7 @@ msgstr "Äquatorialguinea" #. module: base #: model:ir.module.module,shortdesc:base.module_web_api msgid "OpenERP Web API" -msgstr "" +msgstr "OpenERP Web API" #. module: base #: model:ir.module.module,description:base.module_l10n_fr_rib @@ -4813,7 +4828,7 @@ msgstr "ir.actions.report.xml" #. module: base #: model:res.country,name:base.ps msgid "Palestinian Territory, Occupied" -msgstr "" +msgstr "Palästiensische Autonomiegebiete" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_ch @@ -4968,12 +4983,12 @@ msgstr "Workflowdesign" #. module: base #: model:ir.ui.menu,name:base.next_id_73 msgid "Purchase" -msgstr "" +msgstr "Beschaffung" #. module: base #: selection:base.language.install,lang:0 msgid "Portuguese (BR) / Português (BR)" -msgstr "" +msgstr "Portugiesisch (BR)" #. module: base #: model:ir.model,name:base.model_ir_needaction_mixin @@ -4988,7 +5003,7 @@ msgstr "" #. module: base #: model:res.partner.category,name:base.res_partner_category_7 msgid "IT Services" -msgstr "" +msgstr "IT Services" #. module: base #: model:ir.module.category,name:base.module_category_specific_industry_applications @@ -5004,7 +5019,7 @@ msgstr "" #: code:addons/base/ir/ir_fields.py:328 #, python-format msgid "name" -msgstr "" +msgstr "Name" #. module: base #: model:ir.module.module,description:base.module_mrp_operations @@ -5050,7 +5065,7 @@ msgstr "Überspringen" #. module: base #: model:ir.module.module,shortdesc:base.module_event_sale msgid "Events Sales" -msgstr "" +msgstr "Event Verkäufe" #. module: base #: model:res.country,name:base.ls @@ -5060,7 +5075,7 @@ msgstr "Lesotho" #. module: base #: view:base.language.export:0 msgid ", or your preferred text editor" -msgstr "" +msgstr ", oder Ihrem bevorzugten Text Editor" #. module: base #: model:ir.module.module,shortdesc:base.module_crm_partner_assign @@ -5127,12 +5142,12 @@ msgstr "Set NULL" #. module: base #: view:res.users:0 msgid "Save" -msgstr "" +msgstr "Speichern" #. module: base #: field:ir.actions.report.xml,report_xml:0 msgid "XML Path" -msgstr "" +msgstr "XML Pfad" #. module: base #: model:res.country,name:base.bj @@ -5318,7 +5333,7 @@ msgstr "Raten" #. module: base #: model:ir.module.module,shortdesc:base.module_email_template msgid "Email Templates" -msgstr "" +msgstr "E-Mail-Vorlagen" #. module: base #: model:res.country,name:base.sy @@ -5349,6 +5364,10 @@ msgid "" "================\n" "\n" msgstr "" +"\n" +"OpenERP Web API.\n" +"================\n" +"\n" #. module: base #: selection:res.request,state:0 @@ -5423,7 +5442,7 @@ msgstr "" #. module: base #: view:res.company:0 msgid "Preview Header/Footer" -msgstr "" +msgstr "Vorschau Kopf-/Fußzeile" #. module: base #: field:ir.ui.menu,parent_id:0 @@ -5503,7 +5522,7 @@ msgstr "Historie" #. module: base #: model:res.country,name:base.im msgid "Isle of Man" -msgstr "" +msgstr "Isle of Man" #. module: base #: help:ir.actions.client,res_model:0 @@ -5523,7 +5542,7 @@ msgstr "Bouvetinsel" #. module: base #: field:ir.model.constraint,type:0 msgid "Constraint Type" -msgstr "" +msgstr "Bedingungstyp" #. module: base #: field:res.company,child_ids:0 @@ -5598,7 +5617,7 @@ msgstr "Starte Konfigurations Assistenten" #. module: base #: model:ir.module.module,summary:base.module_mrp msgid "Manufacturing Orders, Bill of Materials, Routing" -msgstr "" +msgstr "Produktionsaufträge, Stücklisten, Arbeitspläne" #. module: base #: view:ir.module.module:0 @@ -5666,7 +5685,7 @@ msgstr "" #. module: base #: model:res.groups,name:base.group_sale_salesman_all_leads msgid "See all Leads" -msgstr "" +msgstr "Alle Leads sehen" #. module: base #: model:res.country,name:base.ci @@ -5686,7 +5705,7 @@ msgstr "%w - Wochentagnummer [0(Sunday),6]." #. module: base #: model:ir.ui.menu,name:base.menu_ir_filters msgid "User-defined Filters" -msgstr "" +msgstr "Benutzerdefinierte Filter" #. module: base #: field:ir.actions.act_window_close,name:0 @@ -5895,7 +5914,7 @@ msgstr "" #. module: base #: view:ir.translation:0 msgid "Comments" -msgstr "" +msgstr "Kommentare" #. module: base #: model:res.country,name:base.et @@ -5905,7 +5924,7 @@ msgstr "Äthiopien" #. module: base #: model:ir.module.category,name:base.module_category_authentication msgid "Authentication" -msgstr "" +msgstr "Authentifizierung" #. module: base #: model:res.country,name:base.sj @@ -5939,7 +5958,7 @@ msgstr "Titel" #: code:addons/base/ir/ir_fields.py:147 #, python-format msgid "true" -msgstr "" +msgstr "Wahr" #. module: base #: model:ir.model,name:base.model_base_language_install @@ -5949,7 +5968,7 @@ msgstr "Installiere Sprache" #. module: base #: model:res.partner.category,name:base.res_partner_category_11 msgid "Services" -msgstr "" +msgstr "Dienstleistungen" #. module: base #: view:ir.translation:0 @@ -6053,7 +6072,7 @@ msgstr "" #: code:addons/base/ir/workflow/workflow.py:99 #, python-format msgid "Operation forbidden" -msgstr "" +msgstr "Vorgang verboten" #. module: base #: view:ir.actions.server:0 @@ -6177,7 +6196,7 @@ msgstr "Ressource Bezeichnung" #. module: base #: field:res.partner,is_company:0 msgid "Is a Company" -msgstr "" +msgstr "Ist ein Unternehmen" #. module: base #: selection:ir.cron,interval_type:0 @@ -6216,6 +6235,9 @@ msgid "" "========================\n" "\n" msgstr "" +"\n" +"OpenERP Web Kanban Ansicht\n" +"\n" #. module: base #: code:addons/base/ir/ir_fields.py:183 @@ -6257,7 +6279,7 @@ msgstr "" #. module: base #: sql_constraint:ir.filters:0 msgid "Filter names must be unique" -msgstr "" +msgstr "Filter Bezeichnungen müssen einmalig sein" #. module: base #: help:multi_company.default,object_id:0 @@ -6272,7 +6294,7 @@ msgstr "" #. module: base #: field:ir.filters,is_default:0 msgid "Default filter" -msgstr "" +msgstr "Standard Filter" #. module: base #: report:ir.module.reference:0 @@ -6389,7 +6411,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_auth_reset_password msgid "Reset Password" -msgstr "" +msgstr "Passwort zurücksetzen" #. module: base #: view:ir.attachment:0 @@ -6416,7 +6438,7 @@ msgstr "Storniere Journaleinträge" #. module: base #: field:res.partner,tz_offset:0 msgid "Timezone offset" -msgstr "" +msgstr "Zeitzonen Differenz" #. module: base #: model:ir.module.module,description:base.module_marketing_campaign @@ -6609,7 +6631,7 @@ msgstr "ir.cron" #. module: base #: model:res.country,name:base.cw msgid "Curaçao" -msgstr "" +msgstr "Curaçao" #. module: base #: view:ir.sequence:0 @@ -6764,7 +6786,7 @@ msgstr "Israel" #: code:addons/base/res/res_config.py:444 #, python-format msgid "Cannot duplicate configuration!" -msgstr "" +msgstr "Die Konfiguration kann nicht dupliziert werden!" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_syscohada @@ -6806,12 +6828,12 @@ msgstr "Zeitformat" #. module: base #: field:res.company,rml_header3:0 msgid "RML Internal Header for Landscape Reports" -msgstr "" +msgstr "RML Interne Kopfzeile für Querfomat Berichte" #. module: base #: model:res.groups,name:base.group_partner_manager msgid "Contact Creation" -msgstr "" +msgstr "Kontakt Anlage" #. module: base #: view:ir.module.module:0 @@ -6867,7 +6889,7 @@ msgstr "" #. module: base #: view:ir.sequence:0 msgid "Week of the Year: %(woy)s" -msgstr "" +msgstr "Kalenderwoche: %(woy)s" #. module: base #: field:res.users,id:0 @@ -6938,7 +6960,7 @@ msgstr "Partner Gesellschaften" #: code:addons/base/ir/ir_fields.py:228 #, python-format msgid "Use the format '%s'" -msgstr "" +msgstr "Benutzen Sie das Format '%s'" #. module: base #: help:ir.actions.act_window,auto_refresh:0 @@ -6970,7 +6992,7 @@ msgstr "Arbeitsschritte" #: code:addons/base/res/res_bank.py:195 #, python-format msgid "Invalid Bank Account Type Name format." -msgstr "" +msgstr "Ungültiges Format für den Namen des Bankkontos" #. module: base #: view:ir.filters:0 @@ -6996,7 +7018,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_auth_anonymous msgid "Anonymous" -msgstr "" +msgstr "Anonym" #. module: base #: model:ir.module.module,description:base.module_base_import @@ -7046,6 +7068,8 @@ msgstr "" #: model:res.groups,comment:base.group_hr_user msgid "the user will be able to approve document created by employees." msgstr "" +"Der Benutzer wird Dokumente validieren können, die von Mitarbeiter erzeugt " +"wurden." #. module: base #: field:ir.ui.menu,needaction_enabled:0 @@ -7106,7 +7130,7 @@ msgstr "Moduldatei erfolgreich importiert" #: view:ir.model.constraint:0 #: model:ir.ui.menu,name:base.ir_model_constraint_menu msgid "Model Constraints" -msgstr "" +msgstr "Model Abhängigkeiten" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_timesheet @@ -7153,7 +7177,7 @@ msgstr "Somalia" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_doctor msgid "Dr." -msgstr "" +msgstr "Dr." #. module: base #: model:res.groups,name:base.group_user @@ -7218,7 +7242,7 @@ msgstr "Kopie von" #. module: base #: field:ir.model.data,display_name:0 msgid "Record Name" -msgstr "" +msgstr "Datensatz" #. module: base #: model:ir.model,name:base.model_ir_actions_client @@ -7234,7 +7258,7 @@ msgstr "Britisches Territorium im Indischen Ozean" #. module: base #: model:ir.actions.server,name:base.action_server_module_immediate_install msgid "Module Immediate Install" -msgstr "" +msgstr "Direkte Installation der Module" #. module: base #: view:ir.actions.server:0 @@ -7284,7 +7308,7 @@ msgstr "Übersetzbar" #. module: base #: help:base.language.import,code:0 msgid "ISO Language and Country code, e.g. en_US" -msgstr "" +msgstr "ISO Sprach- und Ländercode, z.B. de_DE" #. module: base #: model:res.country,name:base.vn @@ -7361,7 +7385,7 @@ msgstr "Für mehrfache Dokumente" #: view:res.users:0 #: view:wizard.ir.model.menu.create:0 msgid "or" -msgstr "" +msgstr "oder" #. module: base #: model:ir.module.module,shortdesc:base.module_account_accountant @@ -7393,7 +7417,7 @@ msgstr "" #. module: base #: field:res.partner,function:0 msgid "Job Position" -msgstr "" +msgstr "Position" #. module: base #: view:res.partner:0 @@ -7504,7 +7528,7 @@ msgstr "" #. module: base #: model:res.partner.category,name:base.res_partner_category_14 msgid "Manufacturer" -msgstr "" +msgstr "Hersteller" #. module: base #: help:res.users,company_id:0 @@ -7654,7 +7678,7 @@ msgstr "" #. module: base #: view:ir.rule:0 msgid "Rule Definition (Domain Filter)" -msgstr "" +msgstr "Regeldefinition (Domain Filter)" #. module: base #: selection:ir.actions.act_url,target:0 @@ -7716,7 +7740,7 @@ msgstr "Passwort" #. module: base #: model:ir.module.module,shortdesc:base.module_portal_claim msgid "Portal Claim" -msgstr "" +msgstr "Reklamationsportal" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_pe @@ -7759,7 +7783,7 @@ msgstr "Suche Ansicht Referenz" #. module: base #: help:res.users,partner_id:0 msgid "Partner-related data of the user" -msgstr "" +msgstr "Partnerbezogene Daten des Benutzers" #. module: base #: model:ir.module.module,description:base.module_crm_todo @@ -7875,7 +7899,7 @@ msgstr "Kanada" #. module: base #: view:base.language.export:0 msgid "Launchpad" -msgstr "" +msgstr "Launchpad" #. module: base #: help:res.currency.rate,currency_rate_type_id:0 @@ -7934,7 +7958,7 @@ msgstr "Benutzerdefiniertes Feld" #. module: base #: model:ir.module.module,summary:base.module_account_accountant msgid "Financial and Analytic Accounting" -msgstr "" +msgstr "Finanz- und Analytische Buchhaltung" #. module: base #: model:ir.module.module,shortdesc:base.module_portal_project @@ -7957,7 +7981,7 @@ msgstr "init" #: view:res.partner:0 #: field:res.partner,user_id:0 msgid "Salesperson" -msgstr "" +msgstr "Verkäufer" #. module: base #: view:res.lang:0 @@ -8024,6 +8048,7 @@ msgstr "Optionales Passwort für SMTP Authentifizierung" #, python-format msgid "Sorry, you are not allowed to modify this document." msgstr "" +"Entschuldigen Sie, Sie sind nicht berechtigt dieses Dokument zu ändern." #. module: base #: code:addons/base/res/res_config.py:350 @@ -8094,6 +8119,8 @@ msgid "" "Select this if you want to set company's address information for this " "contact" msgstr "" +"Wählen Sie dies aus, wenn Sie die Unternehmensadresse für diesen Kontakt " +"erfassen wollen." #. module: base #: field:ir.default,field_name:0 @@ -8132,6 +8159,8 @@ msgid "" "This field holds the image used as avatar for this contact, limited to " "1024x1024px" msgstr "" +"Dieses Feld enthält das Bild, das als Avatar für diesen Kontakt gespeichert " +"wurde. (max. 1024x1024px)" #. module: base #: model:res.country,name:base.to @@ -8229,7 +8258,7 @@ msgstr "" #. module: base #: model:ir.module.module,summary:base.module_hr_recruitment msgid "Jobs, Recruitment, Applications, Job Interviews" -msgstr "" +msgstr "Stellen, Personalbeschaffung, Bewerbungen, Vorstellungsgespräche" #. module: base #: code:addons/base/module/module.py:513 @@ -8274,7 +8303,7 @@ msgstr "Achtung!" #. module: base #: view:ir.rule:0 msgid "Full Access Right" -msgstr "" +msgstr "Vollzugriff" #. module: base #: field:res.partner.category,parent_id:0 @@ -8338,7 +8367,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_web_graph msgid "Graph Views" -msgstr "" +msgstr "Diagramm Ansichten" #. module: base #: help:ir.model.relation,name:0 @@ -8366,7 +8395,7 @@ msgstr "Belgische Buchführung" #. module: base #: view:ir.model.access:0 msgid "Access Control" -msgstr "" +msgstr "Zugriffskontrolle" #. module: base #: model:res.country,name:base.kw @@ -8448,7 +8477,7 @@ msgstr "immer eine Suche anzeigen" #. module: base #: help:res.country.state,code:0 msgid "The state code in max. three chars." -msgstr "" +msgstr "Bundeslandkürzel (max. 3 Buchstaben)" #. module: base #: model:res.country,name:base.hk @@ -8458,7 +8487,7 @@ msgstr "Hong Kong" #. module: base #: model:ir.module.module,shortdesc:base.module_portal_sale msgid "Portal Sale" -msgstr "" +msgstr "Verkaufsportal" #. module: base #: field:ir.default,ref_id:0 @@ -8473,7 +8502,7 @@ msgstr "Philippinen" #. module: base #: model:ir.module.module,summary:base.module_hr_timesheet_sheet msgid "Timesheets, Attendances, Activities" -msgstr "" +msgstr "Zeiterfassungen, Anwesenheiten, Tätigkeiten" #. module: base #: model:res.country,name:base.ma @@ -8588,7 +8617,7 @@ msgstr "Eigene Projektrevision" #. module: base #: model:ir.module.module,shortdesc:base.module_web_analytics msgid "Google Analytics" -msgstr "" +msgstr "Google Analytics" #. module: base #: model:ir.module.module,description:base.module_note @@ -8616,7 +8645,7 @@ msgstr "Dominika" #. module: base #: field:ir.translation,name:0 msgid "Translated field" -msgstr "" +msgstr "Übersetztes Feld" #. module: base #: model:ir.module.module,shortdesc:base.module_stock_location @@ -8636,7 +8665,7 @@ msgstr "Nepal" #. module: base #: model:ir.module.module,shortdesc:base.module_document_page msgid "Document Page" -msgstr "" +msgstr "Dokumentenseite" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_ar @@ -8656,7 +8685,7 @@ msgstr "Benutzer dieser Gruppe erben automatisch diese Gruppen" #. module: base #: model:ir.module.module,summary:base.module_note msgid "Sticky notes, Collaborative, Memos" -msgstr "" +msgstr "Post-It's, Zusammenarbeit, Memos" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_attendance @@ -8695,6 +8724,9 @@ msgid "" "If the selected language is loaded in the system, all documents related to " "this contact will be printed in this language. If not, it will be English." msgstr "" +"Wenn die ausgewählte Sprache im System geladen ist, werden alle Dokumente in " +"Bezug auf diesen Kontakt in dieser Sprache erzeugt. Andernfalls erfolgt die " +"Ausgabe in Englisch." #. module: base #: model:ir.module.module,description:base.module_hr_evaluation @@ -8837,7 +8869,7 @@ msgstr "" #. module: base #: view:base.language.export:0 msgid "documentation" -msgstr "" +msgstr "Dokumentation" #. module: base #: help:ir.model,osv_memory:0 @@ -8845,6 +8877,8 @@ msgid "" "This field specifies whether the model is transient or not (i.e. if records " "are automatically deleted from the database or not)" msgstr "" +"Diese Feld legt fest, ob das Model 'transient' oder nicht (z.B. wenn " +"Datensätze automatisch aus der Datenbank gelöscht werden sollen oder nicht)" #. module: base #: code:addons/base/ir/ir_mail_server.py:441 @@ -8883,6 +8917,7 @@ msgstr "%b - Abkürzung Monatsname." #, python-format msgid "Sorry, you are not allowed to delete this document." msgstr "" +"Entschuldigen Sie, Sie sind nicht berechtigt dieses Dokument zu löschen." #. module: base #: constraint:ir.rule:0 @@ -8905,7 +8940,7 @@ msgstr "Multiaktionen" #. module: base #: model:ir.module.module,summary:base.module_mail msgid "Discussions, Mailing Lists, News" -msgstr "" +msgstr "Diskussionen, Mailinglisten, Neuigkeiten" #. module: base #: model:ir.module.module,description:base.module_fleet @@ -8956,7 +8991,7 @@ msgstr "Amerikanisch-Samoa" #. module: base #: view:ir.attachment:0 msgid "My Document(s)" -msgstr "" +msgstr "Meine Dokumente" #. module: base #: help:ir.actions.act_window,res_model:0 @@ -9006,7 +9041,7 @@ msgstr "Benutzer Fehler" #. module: base #: model:ir.module.module,summary:base.module_project_issue msgid "Support, Bug Tracker, Helpdesk" -msgstr "" +msgstr "Support, Bug Tracker, Helpdesk" #. module: base #: model:res.country,name:base.ae @@ -9033,12 +9068,12 @@ msgstr "" #. module: base #: model:res.partner.category,name:base.res_partner_category_5 msgid "Silver" -msgstr "" +msgstr "Silber" #. module: base #: field:res.partner.title,shortcut:0 msgid "Abbreviation" -msgstr "" +msgstr "Abkürzung" #. module: base #: model:ir.ui.menu,name:base.menu_crm_case_job_req_main @@ -9226,16 +9261,20 @@ msgid "" "=============================\n" "\n" msgstr "" +"\n" +"OpenERP Web Gantt Diagramm Ansicht.\n" +"==================================\n" +"\n" #. module: base #: model:ir.module.module,shortdesc:base.module_base_status msgid "State/Stage Management" -msgstr "" +msgstr "Status/Stufen Verwaltung" #. module: base #: model:ir.module.category,name:base.module_category_warehouse_management msgid "Warehouse" -msgstr "" +msgstr "Lager" #. module: base #: field:ir.exports,resource:0 @@ -9268,7 +9307,7 @@ msgstr "8. %I:%M:%S %p ==> 06:25:20 PM" #. module: base #: view:ir.filters:0 msgid "Filters shared with all users" -msgstr "" +msgstr "Filter für alle Benutzer" #. module: base #: view:ir.translation:0 @@ -9284,7 +9323,7 @@ msgstr "Bericht" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_prof msgid "Prof." -msgstr "" +msgstr "Prof." #. module: base #: code:addons/base/ir/ir_mail_server.py:239 @@ -9319,7 +9358,7 @@ msgstr "Keine" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_holidays msgid "Leave Management" -msgstr "" +msgstr "Abwesenheitsverwaltung" #. module: base #: model:res.company,overdue_msg:base.main_company @@ -9359,7 +9398,7 @@ msgstr "Mali" #. module: base #: model:ir.ui.menu,name:base.menu_project_config_project msgid "Stages" -msgstr "" +msgstr "Stufen" #. module: base #: selection:base.language.install,lang:0 @@ -9408,7 +9447,7 @@ msgstr "Benutzer Interface" #. module: base #: model:ir.module.module,shortdesc:base.module_mrp_byproduct msgid "MRP Byproducts" -msgstr "" +msgstr "MRP nach Produkten" #. module: base #: field:res.request,ref_partner_id:0 @@ -9418,7 +9457,7 @@ msgstr "Partner Ref." #. module: base #: model:ir.module.module,shortdesc:base.module_hr_expense msgid "Expense Management" -msgstr "" +msgstr "Spesenverwaltung" #. module: base #: field:ir.attachment,create_date:0 @@ -9497,7 +9536,7 @@ msgstr "Modelle" #: code:addons/base/module/module.py:472 #, python-format msgid "The `base` module cannot be uninstalled" -msgstr "" +msgstr "Das Modul 'base' kann nicht deinstalliert werden" #. module: base #: code:addons/base/ir/ir_cron.py:390 @@ -9525,6 +9564,8 @@ msgstr "osv_memory.autovacuum" #, python-format msgid "Sorry, you are not allowed to create this kind of document." msgstr "" +"Entschuldigen Sie, Sie sind nicht berechtigt diese Art von Dokumenten " +"anzulegen." #. module: base #: field:base.language.export,lang:0 @@ -9566,7 +9607,7 @@ msgstr "%H - Stunde (24-Stunden Format) [00,23]." #. module: base #: field:ir.model.fields,on_delete:0 msgid "On Delete" -msgstr "" +msgstr "Beim Entfernen" #. module: base #: code:addons/base/ir/ir_model.py:340 @@ -9626,7 +9667,7 @@ msgstr "Abbrechen" #: code:addons/orm.py:1509 #, python-format msgid "Unknown database identifier '%s'" -msgstr "" +msgstr "Unbekannte Datenbankkennung '%s'" #. module: base #: selection:base.language.export,format:0 @@ -9641,6 +9682,10 @@ msgid "" "=========================\n" "\n" msgstr "" +"\n" +"OpenERP Web Diagramm Ansicht.\n" +"=============================\n" +"\n" #. module: base #: model:res.country,name:base.nt @@ -9737,7 +9782,7 @@ msgstr "Deutschland" #. module: base #: model:ir.module.module,shortdesc:base.module_auth_oauth msgid "OAuth2 Authentication" -msgstr "" +msgstr "OAuth2 Authentifizierung" #. module: base #: view:workflow:0 @@ -9780,7 +9825,7 @@ msgstr "Der Währungscode muss je Unternehmen eindeutig sein" #: code:addons/base/module/wizard/base_export_language.py:38 #, python-format msgid "New Language (Empty translation template)" -msgstr "" +msgstr "Neue Sprache (leere Übersetzungsvorlage)" #. module: base #: model:ir.module.module,description:base.module_auth_reset_password @@ -9864,7 +9909,7 @@ msgstr "Ägypten" #. module: base #: view:ir.attachment:0 msgid "Creation" -msgstr "" +msgstr "Erstellungsdatum" #. module: base #: help:ir.actions.server,model_id:0 @@ -9926,7 +9971,7 @@ msgstr "Gruppiert je..." #. module: base #: view:base.module.update:0 msgid "Module Update Result" -msgstr "" +msgstr "Modul Updateergebnis" #. module: base #: model:ir.module.module,description:base.module_analytic_contract_hr_expense @@ -9941,12 +9986,12 @@ msgstr "" #. module: base #: field:res.partner,use_parent_address:0 msgid "Use Company Address" -msgstr "" +msgstr "Benutze die Firmenadresse" #. module: base #: model:ir.module.module,summary:base.module_hr_holidays msgid "Holidays, Allocation and Leave Requests" -msgstr "" +msgstr "Urlaubs-, Versetzungs- und Abwesenheitsanfragen" #. module: base #: model:ir.module.module,description:base.module_web_hello @@ -10192,7 +10237,7 @@ msgstr "" #. module: base #: sql_constraint:ir.model.constraint:0 msgid "Constraints with the same name are unique per module." -msgstr "" +msgstr "Abhängigkeiten mit dem selben Namen sind einmalig je Modul." #. module: base #: model:ir.module.module,description:base.module_report_intrastat @@ -10237,7 +10282,7 @@ msgstr "res.request" #. module: base #: field:res.partner,image_medium:0 msgid "Medium-sized image" -msgstr "" +msgstr "Mittelgroßes Bild" #. module: base #: view:ir.model:0 @@ -10264,7 +10309,7 @@ msgstr "Dateiinhalt" #: view:ir.model.relation:0 #: model:ir.ui.menu,name:base.ir_model_relation_menu msgid "ManyToMany Relations" -msgstr "" +msgstr "ManyToMany Beziehungen" #. module: base #: model:res.country,name:base.pa @@ -10303,7 +10348,7 @@ msgstr "Pitcairninseln" #. module: base #: field:res.partner,category_id:0 msgid "Tags" -msgstr "" +msgstr "Tags" #. module: base #: view:base.module.upgrade:0 @@ -10334,13 +10379,13 @@ msgstr "Portal" #. module: base #: selection:ir.translation,state:0 msgid "To Translate" -msgstr "" +msgstr "zu übersetzen" #. module: base #: code:addons/base/ir/ir_fields.py:295 #, python-format msgid "See all possible values" -msgstr "" +msgstr "Alle möglichen Werte anzeigen" #. module: base #: model:ir.module.module,description:base.module_claim_from_delivery @@ -10390,12 +10435,12 @@ msgstr "Guinea Bissau" #. module: base #: field:ir.actions.report.xml,header:0 msgid "Add RML Header" -msgstr "" +msgstr "RML Kopfzeile hinzufügen" #. module: base #: help:res.company,rml_footer:0 msgid "Footer text displayed at the bottom of all reports." -msgstr "" +msgstr "Fußzeilentext, der auf allen Berichten angezeigt wird." #. module: base #: model:ir.module.module,shortdesc:base.module_note_pad @@ -10506,7 +10551,7 @@ msgstr "Italien" #. module: base #: model:res.groups,name:base.group_sale_salesman msgid "See Own Leads" -msgstr "" +msgstr "Eigene Leads anzeigen" #. module: base #: view:ir.actions.todo:0 @@ -10602,6 +10647,8 @@ msgstr "ir.translation" msgid "" "Please contact your system administrator if you think this is an error." msgstr "" +"Bitte kontaktieren Sie Ihren System Administrator, falls Sie meinen, das es " +"sich um einen Fehler handelt." #. module: base #: code:addons/base/module/module.py:519 @@ -10609,7 +10656,7 @@ msgstr "" #: model:ir.actions.act_window,name:base.action_view_base_module_upgrade #, python-format msgid "Apply Schedule Upgrade" -msgstr "" +msgstr "Geplantes Update anwenden" #. module: base #: view:workflow.activity:0 @@ -10752,7 +10799,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_sale_stock msgid "Sales and Warehouse Management" -msgstr "" +msgstr "Verkaufs- und Lagerverwaltung" #. module: base #: field:ir.model.fields,model:0 @@ -10799,7 +10846,7 @@ msgstr "" #. module: base #: help:res.partner,ean13:0 msgid "BarCode" -msgstr "" +msgstr "Barcode" #. module: base #: help:ir.model.fields,model_id:0 @@ -10821,6 +10868,8 @@ msgstr "Martinique (franz.)" #: help:res.partner,is_company:0 msgid "Check if the contact is a company, otherwise it is a person" msgstr "" +"Markieren, falls der Kontakt ein Unternehmen ist, andernfalls ist es eine " +"Person" #. module: base #: view:ir.sequence.type:0 @@ -10831,7 +10880,7 @@ msgstr "Folgenart" #: code:addons/base/res/res_bank.py:195 #, python-format msgid "Formating Error" -msgstr "" +msgstr "Formatierungsfehler" #. module: base #: model:res.country,name:base.ye @@ -10901,7 +10950,7 @@ msgstr "" #: code:addons/base/ir/ir_model.py:1023 #, python-format msgid "Permission Denied" -msgstr "" +msgstr "Zugriff verweigert" #. module: base #: field:ir.ui.menu,child_id:0 @@ -10974,7 +11023,7 @@ msgstr "EMail" #. module: base #: model:res.partner.category,name:base.res_partner_category_12 msgid "Office Supplies" -msgstr "" +msgstr "Bürobedarf" #. module: base #: code:addons/custom.py:550 @@ -11143,18 +11192,18 @@ msgstr "Arabisch / الْعَرَبيّة" #. module: base #: selection:ir.translation,state:0 msgid "Translated" -msgstr "" +msgstr "Übersetzt" #. module: base #: model:ir.actions.act_window,name:base.action_inventory_form #: model:ir.ui.menu,name:base.menu_action_inventory_form msgid "Default Company per Object" -msgstr "" +msgstr "Standard Unternehmen je Objekt" #. module: base #: field:ir.ui.menu,needaction_counter:0 msgid "Number of actions the user has to perform" -msgstr "" +msgstr "Anzahl der Aktionen, die der Benutzer durchführen muss" #. module: base #: model:ir.module.module,shortdesc:base.module_web_hello @@ -11184,7 +11233,7 @@ msgstr "Domäne" #: code:addons/base/ir/ir_fields.py:167 #, python-format msgid "Use '1' for yes and '0' for no" -msgstr "" +msgstr "Benutzen Sie '1' für Ja und '0' für Nein" #. module: base #: model:ir.module.module,shortdesc:base.module_marketing_campaign @@ -11265,7 +11314,7 @@ msgstr "" #. module: base #: view:ir.filters:0 msgid "Shared" -msgstr "" +msgstr "Freigegeben" #. module: base #: code:addons/base/module/module.py:336 @@ -11398,7 +11447,7 @@ msgstr "Grenada" #. module: base #: help:res.partner,customer:0 msgid "Check this box if this contact is a customer." -msgstr "" +msgstr "Markieren, wenn der Kontakt ein Kunde ist." #. module: base #: view:ir.actions.server:0 @@ -11732,7 +11781,7 @@ msgstr "" #: code:addons/base/res/res_partner.py:436 #, python-format msgid "Couldn't create contact without email address !" -msgstr "" +msgstr "Kann keinen Kontakt ohne E-Mail Adresse anlegen!" #. module: base #: model:ir.module.category,name:base.module_category_manufacturing @@ -11942,7 +11991,7 @@ msgstr "Minute: %(min)s" #. module: base #: model:ir.ui.menu,name:base.menu_ir_cron msgid "Scheduler" -msgstr "Planungsassistent" +msgstr "Scheduler" #. module: base #: model:ir.module.module,description:base.module_event_moodle @@ -11999,7 +12048,7 @@ msgstr "Großbritannien Buchführung" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_madam msgid "Mrs." -msgstr "" +msgstr "Fr." #. module: base #: code:addons/base/ir/ir_model.py:424 @@ -12036,7 +12085,7 @@ msgstr "Durchlaufe Ausdruck in Schleife" #. module: base #: model:res.partner.category,name:base.res_partner_category_16 msgid "Retailer" -msgstr "" +msgstr "Wiederverkäufer" #. module: base #: view:ir.model.fields:0 @@ -12086,6 +12135,8 @@ msgstr "" msgid "" "Please make sure no workitems refer to an activity before deleting it!" msgstr "" +"Bitte stellen Sie sicher, das keine Aufgaben sich mehr auf Ihre Tätigkeit " +"referenzieren, bevor Sie sie löschen!" #. module: base #: model:res.country,name:base.tr @@ -12174,7 +12225,7 @@ msgstr "Verbindungsinformationen" #. module: base #: model:res.partner.title,name:base.res_partner_title_prof msgid "Professor" -msgstr "" +msgstr "Professor" #. module: base #: model:res.country,name:base.hm @@ -12203,7 +12254,7 @@ msgstr "Unterstützt Sie bei Ihren Angeboten, Aufträgen und Rechnungen." #. module: base #: field:res.users,login_date:0 msgid "Latest connection" -msgstr "" +msgstr "Letzte Anmeldung" #. module: base #: field:res.groups,implied_ids:0 @@ -12287,7 +12338,7 @@ msgstr "Binär" #. module: base #: model:res.partner.title,name:base.res_partner_title_doctor msgid "Doctor" -msgstr "" +msgstr "Doktor" #. module: base #: model:ir.module.module,description:base.module_mrp_repair @@ -12309,7 +12360,7 @@ msgstr "" #. module: base #: model:res.country,name:base.cd msgid "Congo, Democratic Republic of the" -msgstr "" +msgstr "Demokratische Republik Kongo" #. module: base #: model:res.country,name:base.cr @@ -12344,7 +12395,7 @@ msgstr "andere Partner" #: view:workflow.workitem:0 #: field:workflow.workitem,state:0 msgid "Status" -msgstr "" +msgstr "Status" #. module: base #: model:ir.actions.act_window,name:base.action_currency_form @@ -12356,7 +12407,7 @@ msgstr "Währungen" #. module: base #: model:res.partner.category,name:base.res_partner_category_8 msgid "Consultancy Services" -msgstr "" +msgstr "Beratungsleistungen" #. module: base #: help:ir.values,value:0 @@ -12366,7 +12417,7 @@ msgstr "Standard Wert (pickled) oder Referenz zu einer Aktion" #. module: base #: field:ir.actions.report.xml,auto:0 msgid "Custom Python Parser" -msgstr "" +msgstr "benutzerdefinierter Python Parser" #. module: base #: sql_constraint:res.groups:0 @@ -12471,7 +12522,7 @@ msgstr "Beschaffungsvorgänge" #. module: base #: model:res.partner.category,name:base.res_partner_category_6 msgid "Bronze" -msgstr "" +msgstr "Bronze" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_payroll_account @@ -12501,12 +12552,12 @@ msgstr "Erstellungsmonat" #. module: base #: field:ir.module.module,demo:0 msgid "Demo Data" -msgstr "" +msgstr "Demo Daten" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_mister msgid "Mr." -msgstr "" +msgstr "Hr." #. module: base #: model:res.country,name:base.mv @@ -12516,7 +12567,7 @@ msgstr "Malediven" #. module: base #: model:ir.module.module,shortdesc:base.module_portal_crm msgid "Portal CRM" -msgstr "" +msgstr "CRM Portal" #. module: base #: model:ir.ui.menu,name:base.next_id_4 @@ -12659,7 +12710,7 @@ msgstr "" #. module: base #: field:ir.actions.report.xml,report_sxw:0 msgid "SXW Path" -msgstr "" +msgstr "SXW Pfad" #. module: base #: model:ir.module.module,description:base.module_account_asset @@ -12936,7 +12987,7 @@ msgstr "Gabun" #. module: base #: model:ir.module.module,summary:base.module_stock msgid "Inventory, Logistic, Storage" -msgstr "" +msgstr "Inventarisierung, Logistik, Lagerhaltung" #. module: base #: view:ir.actions.act_window:0 @@ -13000,7 +13051,7 @@ msgstr "Zypern" #. module: base #: field:res.users,new_password:0 msgid "Set Password" -msgstr "" +msgstr "Passwort ändern" #. module: base #: field:ir.actions.server,subject:0 @@ -13056,6 +13107,8 @@ msgid "" "Do you confirm the uninstallation of this module? This will permanently " "erase all data currently stored by the module!" msgstr "" +"Bestätigen Sie die Entfernung dieses Moduls? Es werden alle Daten gelöscht, " +"die im Kontext mit diesem Modul gespeichert sind!" #. module: base #: help:ir.cron,function:0 @@ -13130,7 +13183,7 @@ msgstr "Ausgehende Mail Server" #. module: base #: model:ir.ui.menu,name:base.menu_custom msgid "Technical" -msgstr "" +msgstr "Technisch" #. module: base #: model:res.country,name:base.cn @@ -13721,6 +13774,8 @@ msgid "" "the user will have access to all records of everyone in the sales " "application." msgstr "" +"der Benutzer wird Zugriff auf alle Datensätze in der Verkaufsanwendung " +"erhalten." #. module: base #: model:ir.module.module,shortdesc:base.module_event @@ -13804,7 +13859,7 @@ msgstr "Zielaktivität" #. module: base #: model:ir.module.module,shortdesc:base.module_project_issue msgid "Issue Tracker" -msgstr "" +msgstr "Helpdesk-System" #. module: base #: view:base.module.update:0 @@ -13898,7 +13953,7 @@ msgstr "Installiere Module" #. module: base #: model:ir.ui.menu,name:base.menu_import_crm msgid "Import & Synchronize" -msgstr "" +msgstr "Import & Synchronisierung" #. module: base #: view:res.partner:0 @@ -13929,7 +13984,7 @@ msgstr "Quelle" #: field:ir.model.constraint,date_init:0 #: field:ir.model.relation,date_init:0 msgid "Initialization Date" -msgstr "" +msgstr "Initialisierungsdatum" #. module: base #: model:res.country,name:base.vu @@ -14044,7 +14099,7 @@ msgstr "" #: code:addons/base/ir/ir_fields.py:147 #, python-format msgid "no" -msgstr "" +msgstr "Nein" #. module: base #: field:ir.actions.server,trigger_obj_id:0 @@ -14074,7 +14129,7 @@ msgstr "System Konfiguration erledigt" #: view:ir.config_parameter:0 #: model:ir.ui.menu,name:base.ir_config_menu msgid "System Parameters" -msgstr "" +msgstr "System Parameter" #. module: base #: model:ir.module.module,description:base.module_l10n_ch @@ -14143,7 +14198,7 @@ msgstr "Aktion für mehrere Dokumente" #: model:ir.actions.act_window,name:base.action_partner_title_partner #: model:ir.ui.menu,name:base.menu_partner_title_partner msgid "Titles" -msgstr "" +msgstr "Titel" #. module: base #: model:ir.module.module,description:base.module_anonymization @@ -14207,7 +14262,7 @@ msgstr "Luxemburg" #. module: base #: model:ir.module.module,summary:base.module_base_calendar msgid "Personal & Shared Calendar" -msgstr "" +msgstr "Persönlicher & gemeinsamer Kalender" #. module: base #: selection:res.request,priority:0 @@ -14284,7 +14339,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_base_gengo msgid "Automated Translations through Gengo API" -msgstr "" +msgstr "Automatische Übersetzung mittels Gengo API" #. module: base #: model:ir.module.module,shortdesc:base.module_account_payment @@ -14319,7 +14374,7 @@ msgstr "Thailand" #. module: base #: model:ir.module.module,summary:base.module_account_voucher msgid "Send Invoices and Track Payments" -msgstr "" +msgstr "Rechnungen versenden und Zahlung überwachen" #. module: base #: model:ir.ui.menu,name:base.menu_crm_config_lead @@ -14329,7 +14384,7 @@ msgstr "Leads und Chancen" #. module: base #: model:res.country,name:base.gg msgid "Guernsey" -msgstr "" +msgstr "Guernsey" #. module: base #: selection:base.language.install,lang:0 @@ -14442,12 +14497,12 @@ msgstr "Wechselkurs" #: view:base.module.upgrade:0 #: field:base.module.upgrade,module_info:0 msgid "Modules to Update" -msgstr "" +msgstr "Module für Update" #. module: base #: model:ir.ui.menu,name:base.menu_custom_multicompany msgid "Multi-Companies" -msgstr "" +msgstr "Multi Mandanten" #. module: base #: field:workflow,osv:0 @@ -14563,7 +14618,7 @@ msgstr "Verwendung" #. module: base #: field:ir.module.module,name:0 msgid "Technical Name" -msgstr "" +msgstr "Technischer Name" #. module: base #: model:ir.model,name:base.model_workflow_workitem @@ -14612,7 +14667,7 @@ msgstr "Deutsche Buchführung" #. module: base #: view:ir.sequence:0 msgid "Day of the Year: %(doy)s" -msgstr "" +msgstr "Nummer des Tages im Jahr: %(doy)s" #. module: base #: field:ir.ui.menu,web_icon:0 @@ -14635,6 +14690,9 @@ msgid "" "If this field is empty, the view applies to all users. Otherwise, the view " "applies to the users of those groups only." msgstr "" +"Wenn dieses Feld leer gelassen wird, können alle Benutzer auf diese Ansicht " +"zugreifen. Andernfalls können nur Benutzer dieser Gruppen auf diese Ansicht " +"zugreifen." #. module: base #: selection:base.language.install,lang:0 @@ -14672,7 +14730,7 @@ msgstr "" #. module: base #: view:base.language.export:0 msgid "Export Settings" -msgstr "" +msgstr "Export Einstellungen" #. module: base #: field:ir.actions.act_window,src_model:0 @@ -14682,7 +14740,7 @@ msgstr "" #. module: base #: view:ir.sequence:0 msgid "Day of the Week (0:Monday): %(weekday)s" -msgstr "" +msgstr "Wochentag (0:Montag): %(weekday)s" #. module: base #: code:addons/base/module/wizard/base_module_upgrade.py:84 @@ -14696,7 +14754,7 @@ msgstr "Nicht erfüllte Abhängigkeit !" #: code:addons/base/ir/ir_model.py:1023 #, python-format msgid "Administrator access is required to uninstall a module" -msgstr "" +msgstr "Nur der Administrator kann Module deinstallieren" #. module: base #: model:ir.model,name:base.model_base_module_configuration @@ -14779,7 +14837,7 @@ msgstr "Datenzugriffsfehler" #: field:res.partner,vat:0 #, python-format msgid "TIN" -msgstr "" +msgstr "Steuer-ID" #. module: base #: model:res.country,name:base.aw @@ -14844,7 +14902,7 @@ msgstr "Erweiterte Berichte" #. module: base #: model:ir.module.module,summary:base.module_purchase msgid "Purchase Orders, Receptions, Supplier Invoices" -msgstr "" +msgstr "Beschaffungsaufträge, Lieferbestätigungen, Lieferantenrechnungen" #. module: base #: model:ir.module.module,description:base.module_hr_payroll @@ -14882,7 +14940,7 @@ msgstr "Betreuung nach Verkauf" #. module: base #: field:base.language.import,code:0 msgid "ISO Code" -msgstr "" +msgstr "ISO Code" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_fr @@ -14897,7 +14955,7 @@ msgstr "Ausführen" #. module: base #: selection:res.partner,type:0 msgid "Shipping" -msgstr "" +msgstr "Versand" #. module: base #: model:ir.module.module,description:base.module_project_mrp @@ -14941,7 +14999,7 @@ msgstr "Limit" #. module: base #: model:res.groups,name:base.group_hr_user msgid "Officer" -msgstr "" +msgstr "Personalsachbearbeiter" #. module: base #: code:addons/orm.py:789 @@ -15050,7 +15108,7 @@ msgstr "Allgemeine Module" #. module: base #: model:res.country,name:base.mk msgid "Macedonia, the former Yugoslav Republic of" -msgstr "" +msgstr "Mazedonien, ehem. jugoslawische Republik" #. module: base #: model:res.country,name:base.rw @@ -15101,7 +15159,7 @@ msgstr "Aktuelles Fenster" #: model:ir.module.category,name:base.module_category_hidden #: view:res.users:0 msgid "Technical Settings" -msgstr "" +msgstr "Technische Einstellungen" #. module: base #: model:ir.module.category,description:base.module_category_accounting_and_finance @@ -15122,7 +15180,7 @@ msgstr "Thunderbird Plug-In" #. module: base #: model:ir.module.module,summary:base.module_event msgid "Trainings, Conferences, Meetings, Exhibitions, Registrations" -msgstr "" +msgstr "Schulungen, Konferenzen, Meetings, Messen, Anmeldungen" #. module: base #: model:ir.model,name:base.model_res_country @@ -15140,7 +15198,7 @@ msgstr "Land" #. module: base #: model:res.partner.category,name:base.res_partner_category_15 msgid "Wholesaler" -msgstr "" +msgstr "Wiederverkäufer" #. module: base #: model:ir.module.module,shortdesc:base.module_base_vat @@ -15189,7 +15247,7 @@ msgstr "Holländische Buchführung" #. module: base #: model:res.country,name:base.gs msgid "South Georgia and the South Sandwich Islands" -msgstr "" +msgstr "Süd-Georgien und südliche Sandwichinseln" #. module: base #: view:res.lang:0 @@ -15204,7 +15262,7 @@ msgstr "Spanish (SV) / Español (SV)" #. module: base #: model:ir.actions.act_window,name:base.open_module_tree msgid "Install a Module" -msgstr "" +msgstr "Ein Modul installieren" #. module: base #: field:ir.module.module,auto_install:0 @@ -15322,6 +15380,8 @@ msgid "" "Ambiguous specification for field '%(field)s', only provide one of name, " "external id or database id" msgstr "" +"Mehrdeutige Angabe für das Feld '%(field)s', geben Sie nur den Namen, die " +"Externe ID oder die Datenbank ID an" #. module: base #: field:ir.sequence,implementation:0 @@ -15341,7 +15401,7 @@ msgstr "Chile" #. module: base #: model:ir.module.module,shortdesc:base.module_web_view_editor msgid "View Editor" -msgstr "" +msgstr "Ansichten Editor" #. module: base #: view:ir.cron:0 @@ -15432,7 +15492,7 @@ msgstr "Systemaktualisierung" #: field:ir.actions.report.xml,report_sxw_content:0 #: field:ir.actions.report.xml,report_sxw_content_data:0 msgid "SXW Content" -msgstr "" +msgstr "SXW Inhalt" #. module: base #: help:ir.sequence,prefix:0 @@ -15447,7 +15507,7 @@ msgstr "Seychellen" #. module: base #: model:res.partner.category,name:base.res_partner_category_4 msgid "Gold" -msgstr "" +msgstr "Gold" #. module: base #: code:addons/base/res/res_company.py:159 @@ -15487,6 +15547,8 @@ msgid "" "Tax Identification Number. Check the box if this contact is subjected to " "taxes. Used by the some of the legal statements." msgstr "" +"Steuer-ID. Aktivieren sie diese wenn der Kontakt der Besteuerung unterliegt. " +"Wird von diversen steuerrechtlich relevanten Berichten benötigt." #. module: base #: field:res.partner.bank,partner_id:0 @@ -15579,7 +15641,7 @@ msgstr "" #. module: base #: view:res.partner:0 msgid "Internal Notes" -msgstr "" +msgstr "Interne Notizen" #. module: base #: selection:res.partner.address,type:0 @@ -15621,7 +15683,7 @@ msgstr "Partner: " #. module: base #: view:res.partner:0 msgid "Is a Company?" -msgstr "" +msgstr "Ist ein Unternehmen?" #. module: base #: code:addons/base/res/res_company.py:159 diff --git a/openerp/addons/base/i18n/es.po b/openerp/addons/base/i18n/es.po index 19b3e20976f..3119314f541 100644 --- a/openerp/addons/base/i18n/es.po +++ b/openerp/addons/base/i18n/es.po @@ -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-09 23:26+0000\n" -"Last-Translator: lambdasoftware \n" +"PO-Revision-Date: 2012-12-11 00:59+0000\n" +"Last-Translator: Santi (Pexego) \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-10 04:36+0000\n" -"X-Generator: Launchpad (build 16341)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:38+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing @@ -97,7 +97,7 @@ msgstr "Interfaz de pantalla táctil para tiendas" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_in_hr_payroll msgid "Indian Payroll" -msgstr "" +msgstr "Nomina de la India" #. module: base #: help:ir.cron,model:0 @@ -440,6 +440,8 @@ msgid "" "There is already a shared filter set as default for %(model)s, delete or " "change it before setting a new default" msgstr "" +"Ya existe un filtro compartido por defecto para %(model)s, elimínelo o " +"cámbielo antes de configurar uno nuevo" #. module: base #: code:addons/orm.py:2648 @@ -591,7 +593,7 @@ msgstr "Guayana francesa" #. module: base #: model:ir.module.module,summary:base.module_hr msgid "Jobs, Departments, Employees Details" -msgstr "" +msgstr "Trabajos, departamentos y detalles de empleados" #. module: base #: model:ir.module.module,description:base.module_analytic @@ -607,6 +609,16 @@ msgid "" "that have no counterpart in the general financial accounts.\n" " " msgstr "" +"\n" +"Módulo para definir el objeto contabilidad analítica\n" +"===============================================\n" +"\n" +"En OpenERP, las cuentas analíticas están enlazadas con las cuentas " +"generales\n" +"pero se tratan de forma totalmente independiente. Por tanto, se pueden " +"introducir\n" +"operaciones analíticas sin contrapartida en la contabilidad financiera\n" +" " #. module: base #: field:ir.ui.view.custom,ref_id:0 @@ -630,6 +642,26 @@ msgid "" "* Use emails to automatically confirm and send acknowledgements for any " "event registration\n" msgstr "" +"\n" +"Organización y gestión de eventos.\n" +"======================================\n" +"\n" +"EL módulo 'event' le permite organizar eventos y todas sus tareas " +"relacionadas de forma eficiente: planificación,\n" +"seguimiento del registro, asistencia, etc...\n" +"\n" +"Funcionalidades clave\n" +"------------------------\n" +"* Gestione sus eventos y registros\n" +"* Use emails para confirmar y enviar automáticamente acuses de recibo para " +"cada evento del registro\n" +"\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 @@ -916,7 +948,7 @@ msgstr "Seguridad y autenticación" #. module: base #: model:ir.module.module,shortdesc:base.module_web_calendar msgid "Web Calendar" -msgstr "" +msgstr "Calendario web" #. module: base #: selection:base.language.install,lang:0 @@ -1129,7 +1161,7 @@ msgstr "Otra licencia aprobada por OSI" #. module: base #: model:ir.module.module,shortdesc:base.module_web_gantt msgid "Web Gantt" -msgstr "" +msgstr "Diagrama Gantt web" #. module: base #: model:ir.actions.act_window,name:base.act_menu_create @@ -1262,12 +1294,12 @@ msgstr "¡El nombre del país debe ser único!" #. module: base #: field:ir.module.module,installed_version:0 msgid "Latest Version" -msgstr "" +msgstr "Última versión" #. module: base #: view:ir.rule:0 msgid "Delete Access Right" -msgstr "" +msgstr "Eliminar derecho de acceso" #. module: base #: code:addons/base/ir/ir_mail_server.py:213 @@ -1294,7 +1326,7 @@ msgstr "Islas Caimán" #. module: base #: view:ir.rule:0 msgid "Record Rule" -msgstr "" +msgstr "Regla de registro" #. module: base #: model:res.country,name:base.kr @@ -1423,7 +1455,7 @@ msgstr "Tests" #. module: base #: field:ir.actions.report.xml,attachment:0 msgid "Save as Attachment Prefix" -msgstr "" +msgstr "Prefijo del adjunto al guardar como" #. module: base #: field:ir.ui.view_sc,res_id:0 @@ -1460,7 +1492,7 @@ msgstr "Haití" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_fr_hr_payroll msgid "French Payroll" -msgstr "" +msgstr "Nomina de Francia" #. module: base #: view:ir.ui.view:0 @@ -1631,7 +1663,7 @@ msgstr "No existe un idioma con código \"%s\"" #: model:ir.module.category,name:base.module_category_social_network #: model:ir.module.module,shortdesc:base.module_mail msgid "Social Network" -msgstr "" +msgstr "Red social" #. module: base #: view:res.lang:0 @@ -1641,12 +1673,12 @@ msgstr "%Y - Año con siglo." #. module: base #: view:res.company:0 msgid "Report Footer Configuration" -msgstr "" +msgstr "Configuración de pie de informe" #. module: base #: field:ir.translation,comments:0 msgid "Translation comments" -msgstr "" +msgstr "Comentarios de traducción" #. module: base #: model:ir.module.module,description:base.module_lunch @@ -1711,7 +1743,7 @@ msgstr "" #. module: base #: help:res.partner,website:0 msgid "Website of Partner or Company" -msgstr "" +msgstr "Sitio web de la empresa o compañía" #. module: base #: help:base.language.install,overwrite:0 @@ -1758,7 +1790,7 @@ msgstr "" #. module: base #: model:ir.module.module,summary:base.module_sale msgid "Quotations, Sale Orders, Invoicing" -msgstr "" +msgstr "Presupuestos, órdenes de venta, facturación" #. module: base #: field:res.users,login:0 @@ -1909,6 +1941,7 @@ msgstr "" #, python-format msgid "Unknown value '%s' for boolean field '%%(field)s', assuming '%s'" msgstr "" +"Valor desconocido '%s' para el campo booleano '%%(field)s', se asume '%s'" #. module: base #: model:res.country,name:base.nl @@ -1923,7 +1956,7 @@ msgstr "" #. module: base #: selection:ir.translation,state:0 msgid "Translation in Progress" -msgstr "" +msgstr "Traducción en curso" #. module: base #: model:ir.model,name:base.model_ir_rule @@ -1938,7 +1971,7 @@ msgstr "Días" #. module: base #: model:ir.module.module,summary:base.module_fleet msgid "Vehicle, leasing, insurances, costs" -msgstr "" +msgstr "Vehículo, leasing, seguros, costes" #. module: base #: view:ir.model.access:0 @@ -1978,6 +2011,8 @@ msgid "" "Check this box if this contact is a supplier. If it's not checked, purchase " "people will not see it when encoding a purchase order." msgstr "" +"Marque esta casilla si el contacto es un proveedor. Si no está marcada, el " +"equipo de compras no lo verá cuando esté haciendo una orden de compra." #. module: base #: model:ir.module.module,shortdesc:base.module_hr_evaluation @@ -2025,7 +2060,7 @@ msgstr "Crear tareas en OV" #: code:addons/base/ir/ir_model.py:316 #, python-format msgid "This column contains module data and cannot be removed!" -msgstr "" +msgstr "¡Esta columna contiene datos del módulo y no puede ser eliminada!" #. module: base #: field:ir.attachment,res_model:0 @@ -2170,7 +2205,7 @@ msgstr "Ruta completa" #. module: base #: view:base.language.export:0 msgid "The next step depends on the file format:" -msgstr "" +msgstr "El siguiente paso depende del formato del archivo:" #. module: base #: model:ir.module.module,shortdesc:base.module_idea @@ -2215,7 +2250,7 @@ msgstr "Crear / Escribir / Copiar" #. module: base #: view:ir.sequence:0 msgid "Second: %(sec)s" -msgstr "" +msgstr "Segundo: %(sec)s" #. module: base #: field:ir.actions.act_window,view_mode:0 @@ -2602,7 +2637,7 @@ msgstr "" #. module: base #: field:res.company,rml_header1:0 msgid "Company Slogan" -msgstr "" +msgstr "Lema de la empresa" #. module: base #: model:res.country,name:base.bb @@ -2626,7 +2661,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_auth_oauth_signup msgid "Signup with OAuth2 Authentication" -msgstr "" +msgstr "Registro con autenticación OAuth2" #. module: base #: selection:ir.model,state:0 @@ -2653,7 +2688,7 @@ msgstr "Griego / Ελληνικά" #. module: base #: field:res.company,custom_footer:0 msgid "Custom Footer" -msgstr "" +msgstr "Pie de página personalizado." #. module: base #: model:ir.module.module,shortdesc:base.module_sale_crm @@ -3105,6 +3140,8 @@ msgid "" "the user will have an access to the sales configuration as well as statistic " "reports." msgstr "" +"el usuario tendrá acceso a la configuración de ventas así como a los " +"informes estadísticos." #. module: base #: model:res.country,name:base.nz @@ -3191,6 +3228,8 @@ msgid "" "the user will have an access to the human resources configuration as well as " "statistic reports." msgstr "" +"el usuario tendrá acceso a la configuración de recursos humanos así como a " +"los informes estadísticos." #. module: base #: model:ir.module.module,description:base.module_web_shortcuts @@ -3300,7 +3339,7 @@ msgstr "Sweden" #. module: base #: field:ir.actions.report.xml,report_file:0 msgid "Report File" -msgstr "" +msgstr "Archivo de informe" #. module: base #: selection:ir.actions.act_window.view,view_mode:0 @@ -3333,7 +3372,7 @@ msgstr "" #: code:addons/orm.py:3839 #, python-format msgid "Missing document(s)" -msgstr "" +msgstr "Falta el documento(s)" #. module: base #: model:ir.model,name:base.model_res_partner_bank_type @@ -3348,6 +3387,8 @@ msgid "" "For more details about translating OpenERP in your language, please refer to " "the" msgstr "" +"Para más información acerca de la traducción de OpenERP a su idioma, por " +"favor contacta con" #. module: base #: field:res.partner,image:0 @@ -3634,6 +3675,7 @@ msgstr "Malta" msgid "" "Only users with the following access level are currently allowed to do that" msgstr "" +"Sólo usuarios con los siguientes permisos están autorizados a hacer esto" #. module: base #: field:ir.actions.server,fields_lines:0 @@ -3784,7 +3826,7 @@ msgstr "Interacción entre reglas" #: field:res.company,rml_footer:0 #: field:res.company,rml_footer_readonly:0 msgid "Report Footer" -msgstr "" +msgstr "Pie de página del informe" #. module: base #: selection:res.lang,direction:0 @@ -4305,7 +4347,7 @@ msgstr "Planes de cuentas" #. module: base #: model:ir.ui.menu,name:base.menu_event_main msgid "Events Organization" -msgstr "" +msgstr "Organización de eventos" #. module: base #: model:ir.actions.act_window,name:base.action_partner_customer_form @@ -4333,7 +4375,7 @@ msgstr "Campo base" #. module: base #: model:ir.module.category,name:base.module_category_managing_vehicles_and_contracts msgid "Managing vehicles and contracts" -msgstr "" +msgstr "Gestión de vehiculos y contratos" #. module: base #: model:ir.module.module,description:base.module_base_setup @@ -4459,7 +4501,7 @@ msgstr "" #. module: base #: field:res.partner,parent_id:0 msgid "Related Company" -msgstr "" +msgstr "Empresa relacionada" #. module: base #: help:ir.actions.act_url,help:0 @@ -4594,7 +4636,7 @@ msgstr "Hindi / हिंदी" #: 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 "Cargar una traducción" #. module: base #: field:ir.module.module,latest_version:0 @@ -4925,7 +4967,7 @@ msgstr "Aplicaciones específicas de la industria" #. module: base #: model:ir.module.module,shortdesc:base.module_google_docs msgid "Google Docs integration" -msgstr "" +msgstr "Integración con Google Docs" #. module: base #: code:addons/base/ir/ir_fields.py:328 @@ -4987,7 +5029,7 @@ msgstr "Lesotho" #. module: base #: view:base.language.export:0 msgid ", or your preferred text editor" -msgstr "" +msgstr ", o su editor de texto preferido" #. module: base #: model:ir.module.module,shortdesc:base.module_crm_partner_assign @@ -5595,7 +5637,7 @@ msgstr "" #. module: base #: model:res.groups,name:base.group_sale_salesman_all_leads msgid "See all Leads" -msgstr "" +msgstr "Ver todas las iniciativas" #. module: base #: model:res.country,name:base.ci @@ -5615,7 +5657,7 @@ msgstr "%w - Día de la semana [0(domingo),6]." #. module: base #: model:ir.ui.menu,name:base.menu_ir_filters msgid "User-defined Filters" -msgstr "" +msgstr "Filtros definidos por el usuario" #. module: base #: field:ir.actions.act_window_close,name:0 @@ -5835,7 +5877,7 @@ msgstr "Etiopía" #. module: base #: model:ir.module.category,name:base.module_category_authentication msgid "Authentication" -msgstr "" +msgstr "Autentificación" #. module: base #: model:res.country,name:base.sj @@ -5869,7 +5911,7 @@ msgstr "título" #: code:addons/base/ir/ir_fields.py:147 #, python-format msgid "true" -msgstr "" +msgstr "verdadero" #. module: base #: model:ir.model,name:base.model_base_language_install @@ -5879,7 +5921,7 @@ msgstr "Instalar idioma" #. module: base #: model:res.partner.category,name:base.res_partner_category_11 msgid "Services" -msgstr "" +msgstr "Servicios" #. module: base #: view:ir.translation:0 @@ -6160,6 +6202,8 @@ msgstr "" msgid "" "Administrative divisions of a country. E.g. Fed. State, Departement, Canton" msgstr "" +"División administrativa de un país. Por ejemplo Comunidad Autónoma, " +"Provincia, Ayuntamiento" #. module: base #: view:res.partner.bank:0 @@ -6321,7 +6365,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_auth_reset_password msgid "Reset Password" -msgstr "" +msgstr "Restablecer contraseña" #. module: base #: view:ir.attachment:0 @@ -6438,6 +6482,7 @@ msgstr "Cabo Verde" #: model:res.groups,comment:base.group_sale_salesman msgid "the user will have access to his own data in the sales application." msgstr "" +"El usuario tendrá acceso a sus propios datos en la aplicación ventas." #. module: base #: model:res.groups,comment:base.group_user @@ -6695,7 +6740,7 @@ msgstr "Israel" #: code:addons/base/res/res_config.py:444 #, python-format msgid "Cannot duplicate configuration!" -msgstr "" +msgstr "¡No se puede duplicar la configuración!" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_syscohada @@ -6804,7 +6849,7 @@ msgstr "" #. module: base #: view:ir.sequence:0 msgid "Week of the Year: %(woy)s" -msgstr "" +msgstr "Semana del año: %(woy)s" #. module: base #: field:res.users,id:0 @@ -6874,7 +6919,7 @@ msgstr "Títulos de empresa" #: code:addons/base/ir/ir_fields.py:228 #, python-format msgid "Use the format '%s'" -msgstr "" +msgstr "Use el formato '%s'" #. module: base #: help:ir.actions.act_window,auto_refresh:0 @@ -7219,7 +7264,7 @@ msgstr "Traducible" #. module: base #: help:base.language.import,code:0 msgid "ISO Language and Country code, e.g. en_US" -msgstr "" +msgstr "Código ISO de idioma y país, ej. es_ES" #. module: base #: model:res.country,name:base.vn @@ -7328,7 +7373,7 @@ msgstr "" #. module: base #: field:res.partner,function:0 msgid "Job Position" -msgstr "" +msgstr "Puesto de trabajo" #. module: base #: view:res.partner:0 @@ -7900,7 +7945,7 @@ msgstr "Inicio" #: view:res.partner:0 #: field:res.partner,user_id:0 msgid "Salesperson" -msgstr "" +msgstr "Comercial" #. module: base #: view:res.lang:0 @@ -7965,7 +8010,7 @@ msgstr "Contraseña opcional para la autenticación SMTP" #: code:addons/base/ir/ir_model.py:719 #, python-format msgid "Sorry, you are not allowed to modify this document." -msgstr "" +msgstr "Lo siento, no está autorizado para modificar este documento." #. module: base #: code:addons/base/res/res_config.py:350 @@ -8310,7 +8355,7 @@ msgstr "Bélgica - Contabilidad" #. module: base #: view:ir.model.access:0 msgid "Access Control" -msgstr "" +msgstr "Control de acceso" #. module: base #: model:res.country,name:base.kw @@ -8778,7 +8823,7 @@ msgstr "" #. module: base #: view:base.language.export:0 msgid "documentation" -msgstr "" +msgstr "documentación" #. module: base #: help:ir.model,osv_memory:0 @@ -8823,7 +8868,7 @@ msgstr "%b - Nombre abreviado del mes." #: code:addons/base/ir/ir_model.py:721 #, python-format msgid "Sorry, you are not allowed to delete this document." -msgstr "" +msgstr "Lo siento, no está autorizado a eliminar este documento." #. module: base #: constraint:ir.rule:0 @@ -8974,12 +9019,12 @@ msgstr "" #. module: base #: model:res.partner.category,name:base.res_partner_category_5 msgid "Silver" -msgstr "" +msgstr "Plata" #. module: base #: field:res.partner.title,shortcut:0 msgid "Abbreviation" -msgstr "" +msgstr "Abreviatura" #. module: base #: model:ir.ui.menu,name:base.menu_crm_case_job_req_main @@ -9182,7 +9227,7 @@ msgstr "" #. module: base #: model:ir.module.category,name:base.module_category_warehouse_management msgid "Warehouse" -msgstr "" +msgstr "Almacén" #. module: base #: field:ir.exports,resource:0 @@ -9215,7 +9260,7 @@ msgstr "8. %I:%M:%S %p ==> 06:25:20 PM" #. module: base #: view:ir.filters:0 msgid "Filters shared with all users" -msgstr "" +msgstr "Filtros compartidos con todos los usuarios" #. module: base #: view:ir.translation:0 @@ -9445,7 +9490,7 @@ msgstr "Modelos" #: code:addons/base/module/module.py:472 #, python-format msgid "The `base` module cannot be uninstalled" -msgstr "" +msgstr "El modulo `base`no puede ser desinstalado" #. module: base #: code:addons/base/ir/ir_cron.py:390 @@ -9472,7 +9517,7 @@ msgstr "osv_memory.autovacuum" #: code:addons/base/ir/ir_model.py:720 #, python-format msgid "Sorry, you are not allowed to create this kind of document." -msgstr "" +msgstr "Lo siento, no estás autorizado a crear este tipo de documento." #. module: base #: field:base.language.export,lang:0 @@ -9888,7 +9933,7 @@ msgstr "" #. module: base #: field:res.partner,use_parent_address:0 msgid "Use Company Address" -msgstr "" +msgstr "Utilizar la dirección de la empresa" #. module: base #: model:ir.module.module,summary:base.module_hr_holidays @@ -10252,7 +10297,7 @@ msgstr "Isla Pitcairn" #. module: base #: field:res.partner,category_id:0 msgid "Tags" -msgstr "" +msgstr "Etiquetas" #. module: base #: view:base.module.upgrade:0 @@ -10272,7 +10317,7 @@ msgstr "Reglas de registros" #. module: base #: view:multi_company.default:0 msgid "Multi Company" -msgstr "" +msgstr "Multi compañía" #. module: base #: model:ir.module.category,name:base.module_category_portal @@ -10289,7 +10334,7 @@ msgstr "" #: code:addons/base/ir/ir_fields.py:295 #, python-format msgid "See all possible values" -msgstr "" +msgstr "Ver todos los posibles valores" #. module: base #: model:ir.module.module,description:base.module_claim_from_delivery @@ -10344,7 +10389,7 @@ msgstr "Guinea Bissau" #. module: base #: field:ir.actions.report.xml,header:0 msgid "Add RML Header" -msgstr "" +msgstr "Añadir cabecera RML" #. module: base #: help:res.company,rml_footer:0 @@ -10556,6 +10601,8 @@ msgstr "ir.traduccion" msgid "" "Please contact your system administrator if you think this is an error." msgstr "" +"Por favor, contacte con el administrador del sistema si piensa que esto es " +"un error." #. module: base #: code:addons/base/module/module.py:519 @@ -10752,7 +10799,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 @@ -10851,7 +10898,7 @@ msgstr "No puede eliminar el idioma que está actualmente activo!" #: code:addons/base/ir/ir_model.py:1023 #, python-format msgid "Permission Denied" -msgstr "" +msgstr "Permiso denegado" #. module: base #: field:ir.ui.menu,child_id:0 @@ -11089,7 +11136,7 @@ msgstr "Árabe / الْعَرَبيّة" #. module: base #: selection:ir.translation,state:0 msgid "Translated" -msgstr "" +msgstr "Traducido" #. module: base #: model:ir.actions.act_window,name:base.action_inventory_form @@ -11210,7 +11257,7 @@ msgstr "" #. module: base #: view:ir.filters:0 msgid "Shared" -msgstr "" +msgstr "Compartido" #. module: base #: code:addons/base/module/module.py:336 @@ -11288,6 +11335,9 @@ msgid "" "Allow users to sign up through OAuth2 Provider.\n" "===============================================\n" msgstr "" +"\n" +"Permite registrar a los usuarios a través de un proveedor OAuth2.\n" +"===============================================\n" #. module: base #: view:ir.cron:0 @@ -11344,7 +11394,7 @@ msgstr "Granada" #. module: base #: help:res.partner,customer:0 msgid "Check this box if this contact is a customer." -msgstr "" +msgstr "Marque esta casilla si el contacto es un cliente." #. module: base #: view:ir.actions.server:0 @@ -11380,7 +11430,7 @@ msgstr "" #. module: base #: field:res.users,partner_id:0 msgid "Related Partner" -msgstr "" +msgstr "Empresa relacionada" #. module: base #: code:addons/osv.py:151 @@ -11962,7 +12012,7 @@ msgstr "Ref. usuario" #: code:addons/base/ir/ir_fields.py:227 #, python-format msgid "'%s' does not seem to be a valid datetime for field '%%(field)s'" -msgstr "" +msgstr "'%s' no parece una fecha valida para el campo '%%(field)s'" #. module: base #: model:res.partner.bank.type.field,name:base.bank_normal_field_bic @@ -12116,7 +12166,7 @@ msgstr "Información de la conexión" #. module: base #: model:res.partner.title,name:base.res_partner_title_prof msgid "Professor" -msgstr "" +msgstr "Profesor" #. module: base #: model:res.country,name:base.hm @@ -12146,7 +12196,7 @@ msgstr "" #. module: base #: field:res.users,login_date:0 msgid "Latest connection" -msgstr "" +msgstr "Última conexión" #. module: base #: field:res.groups,implied_ids:0 @@ -12229,7 +12279,7 @@ msgstr "Binario" #. module: base #: model:res.partner.title,name:base.res_partner_title_doctor msgid "Doctor" -msgstr "" +msgstr "Doctor" #. module: base #: model:ir.module.module,description:base.module_mrp_repair @@ -12286,7 +12336,7 @@ msgstr "Otras empresas" #: view:workflow.workitem:0 #: field:workflow.workitem,state:0 msgid "Status" -msgstr "" +msgstr "Estado" #. module: base #: model:ir.actions.act_window,name:base.action_currency_form @@ -12298,7 +12348,7 @@ msgstr "Monedas" #. module: base #: model:res.partner.category,name:base.res_partner_category_8 msgid "Consultancy Services" -msgstr "" +msgstr "Servicios de consultoría" #. module: base #: help:ir.values,value:0 @@ -12413,7 +12463,7 @@ msgstr "Abastecimientos" #. module: base #: model:res.partner.category,name:base.res_partner_category_6 msgid "Bronze" -msgstr "" +msgstr "Bronce" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_payroll_account @@ -12443,12 +12493,12 @@ msgstr "Mes de creación" #. module: base #: field:ir.module.module,demo:0 msgid "Demo Data" -msgstr "" +msgstr "Datos de ejemplo" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_mister msgid "Mr." -msgstr "" +msgstr "Sr." #. module: base #: model:res.country,name:base.mv @@ -12636,7 +12686,7 @@ msgstr "BANCO" #: model:ir.module.category,name:base.module_category_point_of_sale #: model:ir.module.module,shortdesc:base.module_point_of_sale msgid "Point of Sale" -msgstr "" +msgstr "Terminal punto de venta" #. module: base #: model:ir.module.module,description:base.module_mail @@ -12944,7 +12994,7 @@ msgstr "Chipre" #. module: base #: field:res.users,new_password:0 msgid "Set Password" -msgstr "" +msgstr "Establecer contraseña" #. module: base #: field:ir.actions.server,subject:0 @@ -13413,7 +13463,7 @@ msgstr "Zaire" #. module: base #: model:ir.module.module,summary:base.module_project msgid "Projects, Tasks" -msgstr "" +msgstr "Proyectos, tareas" #. module: base #: field:workflow.instance,res_id:0 @@ -13431,7 +13481,7 @@ msgstr "Información" #: code:addons/base/ir/ir_fields.py:147 #, python-format msgid "false" -msgstr "" +msgstr "falso" #. module: base #: model:ir.module.module,description:base.module_account_analytic_analysis @@ -13739,7 +13789,7 @@ msgstr "Actividad destino" #. module: base #: model:ir.module.module,shortdesc:base.module_project_issue msgid "Issue Tracker" -msgstr "" +msgstr "Seguimiento de errores" #. module: base #: view:base.module.update:0 @@ -13819,6 +13869,8 @@ msgid "" "Check this to define the report footer manually. Otherwise it will be " "filled in automatically." msgstr "" +"Marque si quiere definir el pie de informe manualmente. En otro caso se " +"rellenará automáticamente." #. module: base #: view:res.partner:0 @@ -14008,7 +14060,7 @@ msgstr "Configuración del sistema realizada." #: view:ir.config_parameter:0 #: model:ir.ui.menu,name:base.ir_config_menu msgid "System Parameters" -msgstr "" +msgstr "Parámetros del sistema" #. module: base #: model:ir.module.module,description:base.module_l10n_ch @@ -14077,7 +14129,7 @@ msgstr "Acción en múltiples doc." #: model:ir.actions.act_window,name:base.action_partner_title_partner #: model:ir.ui.menu,name:base.menu_partner_title_partner msgid "Titles" -msgstr "" +msgstr "Títulos" #. module: base #: model:ir.module.module,description:base.module_anonymization @@ -14218,7 +14270,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_base_gengo msgid "Automated Translations through Gengo API" -msgstr "" +msgstr "Traducción automática a través de Gengo" #. module: base #: model:ir.module.module,shortdesc:base.module_account_payment @@ -14378,12 +14430,12 @@ msgstr "Tasa monetaria" #: view:base.module.upgrade:0 #: field:base.module.upgrade,module_info:0 msgid "Modules to Update" -msgstr "" +msgstr "Módulos a actualizar" #. module: base #: model:ir.ui.menu,name:base.menu_custom_multicompany msgid "Multi-Companies" -msgstr "" +msgstr "Multi-Compañías" #. module: base #: field:workflow,osv:0 @@ -14499,7 +14551,7 @@ msgstr "Uso de la acción" #. module: base #: field:ir.module.module,name:0 msgid "Technical Name" -msgstr "" +msgstr "Nombre técnico" #. module: base #: model:ir.model,name:base.model_workflow_workitem @@ -14550,7 +14602,7 @@ msgstr "Alemania - Contabilidad" #. module: base #: view:ir.sequence:0 msgid "Day of the Year: %(doy)s" -msgstr "" +msgstr "Día del año: %(doy)s" #. module: base #: field:ir.ui.menu,web_icon:0 @@ -14820,7 +14872,7 @@ msgstr "Servicio de Post-venta" #. module: base #: field:base.language.import,code:0 msgid "ISO Code" -msgstr "" +msgstr "Código ISO" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_fr @@ -14835,7 +14887,7 @@ msgstr "Lanzar" #. module: base #: selection:res.partner,type:0 msgid "Shipping" -msgstr "" +msgstr "Envío" #. module: base #: model:ir.module.module,description:base.module_project_mrp @@ -15382,7 +15434,7 @@ msgstr "Seychelles" #. module: base #: model:res.partner.category,name:base.res_partner_category_4 msgid "Gold" -msgstr "" +msgstr "Oro" #. module: base #: code:addons/base/res/res_company.py:159 diff --git a/openerp/addons/base/i18n/es_DO.po b/openerp/addons/base/i18n/es_DO.po index 8855ee6a517..eaf07f8d727 100644 --- a/openerp/addons/base/i18n/es_DO.po +++ b/openerp/addons/base/i18n/es_DO.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-server\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-12-03 16:01+0000\n" -"PO-Revision-Date: 2012-12-07 15:49+0000\n" +"PO-Revision-Date: 2012-12-10 19:40+0000\n" "Last-Translator: Carlos Matos Villar \n" "Language-Team: Spanish (Dominican Republic) \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-08 04:58+0000\n" -"X-Generator: Launchpad (build 16341)\n" +"X-Launchpad-Export-Date: 2012-12-11 04:46+0000\n" +"X-Generator: Launchpad (build 16356)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing @@ -9888,7 +9888,7 @@ msgstr "" #. module: base #: model:res.country,name:base.re msgid "Reunion (French)" -msgstr "" +msgstr "Reunión (Francesa)" #. module: base #: code:addons/base/ir/ir_model.py:414 @@ -9896,45 +9896,47 @@ msgstr "" msgid "" "New column name must still start with x_ , because it is a custom field!" msgstr "" +"¡El nuevo nombre de columna debe empezar con x_ , porqué es un campo " +"personalizado!" #. module: base #: model:ir.module.module,shortdesc:base.module_mrp_repair msgid "Repairs Management" -msgstr "" +msgstr "Administración de reparaciones" #. module: base #: model:ir.module.module,shortdesc:base.module_account_asset msgid "Assets Management" -msgstr "" +msgstr "Gestión de activos fijos" #. module: base #: view:ir.model.access:0 #: view:ir.rule:0 #: field:ir.rule,global:0 msgid "Global" -msgstr "" +msgstr "Global" #. module: base #: model:res.country,name:base.cz msgid "Czech Republic" -msgstr "" +msgstr "República Checa" #. module: base #: model:ir.module.module,shortdesc:base.module_claim_from_delivery msgid "Claim on Deliveries" -msgstr "" +msgstr "Reclamación de envíos" #. module: base #: model:res.country,name:base.sb msgid "Solomon Islands" -msgstr "" +msgstr "Islas Salomón" #. module: base #: code:addons/orm.py:4119 #: code:addons/orm.py:4652 #, python-format msgid "AccessError" -msgstr "" +msgstr "Error de acceso" #. module: base #: model:ir.module.module,description:base.module_web_gantt @@ -9948,19 +9950,19 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_base_status msgid "State/Stage Management" -msgstr "" +msgstr "Estado/Etapa Administración" #. module: base #: model:ir.module.category,name:base.module_category_warehouse_management msgid "Warehouse" -msgstr "" +msgstr "Almacén" #. module: base #: field:ir.exports,resource:0 #: model:ir.module.module,shortdesc:base.module_resource #: field:ir.property,res_id:0 msgid "Resource" -msgstr "" +msgstr "Recurso" #. module: base #: model:ir.module.module,description:base.module_process @@ -9981,23 +9983,23 @@ msgstr "" #. module: base #: view:res.lang:0 msgid "8. %I:%M:%S %p ==> 06:25:20 PM" -msgstr "" +msgstr "8. %I:%M:%S %p ==> 06:25:20 PM" #. module: base #: view:ir.filters:0 msgid "Filters shared with all users" -msgstr "" +msgstr "Filtros compartidos con todos los usuarios" #. module: base #: view:ir.translation:0 #: model:ir.ui.menu,name:base.menu_translation msgid "Translations" -msgstr "" +msgstr "Traducciones" #. module: base #: view:ir.actions.report.xml:0 msgid "Report" -msgstr "" +msgstr "Informe" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_prof @@ -10012,11 +10014,14 @@ msgid "" "instead.If SSL is needed, an upgrade to Python 2.6 on the server-side should " "do the trick." msgstr "" +"Su servidor OpenERP no soporta SMTP bajo SSL. Puede usar STARTTLS en su " +"lugar. Si se requiere SSL, una actualización a Python 2.6 en el servidor " +"puede funcionar." #. module: base #: model:res.country,name:base.ua msgid "Ukraine" -msgstr "" +msgstr "Ucrania" #. module: base #: code:addons/base/res/res_company.py:150 @@ -10025,17 +10030,17 @@ msgstr "" #: field:res.partner,website:0 #, python-format msgid "Website" -msgstr "" +msgstr "Sitio web" #. module: base #: selection:ir.mail_server,smtp_encryption:0 msgid "None" -msgstr "" +msgstr "Ninguno" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_holidays msgid "Leave Management" -msgstr "" +msgstr "Dejar Gestión" #. module: base #: model:res.company,overdue_msg:base.main_company @@ -10055,42 +10060,42 @@ msgstr "" #. module: base #: view:ir.module.category:0 msgid "Module Category" -msgstr "" +msgstr "Categoría del módulo" #. module: base #: model:res.country,name:base.us msgid "United States" -msgstr "" +msgstr "Estados Unidos" #. module: base #: view:ir.ui.view:0 msgid "Architecture" -msgstr "" +msgstr "Estructura" #. module: base #: model:res.country,name:base.ml msgid "Mali" -msgstr "" +msgstr "Mali" #. module: base #: model:ir.ui.menu,name:base.menu_project_config_project msgid "Stages" -msgstr "" +msgstr "Etapas" #. module: base #: selection:base.language.install,lang:0 msgid "Flemish (BE) / Vlaams (BE)" -msgstr "" +msgstr "Flamenco (BE) / Vlaams (BE)" #. module: base #: field:ir.cron,interval_number:0 msgid "Interval Number" -msgstr "" +msgstr "Número de intervalos" #. module: base #: model:res.country,name:base.dz msgid "Algeria" -msgstr "" +msgstr "Algeria" #. module: base #: model:ir.module.module,description:base.module_portal_hr_employees @@ -10106,7 +10111,7 @@ msgstr "" #. module: base #: model:res.country,name:base.bn msgid "Brunei Darussalam" -msgstr "" +msgstr "Brunei Darussalam" #. module: base #: view:ir.actions.act_window:0 @@ -10114,12 +10119,12 @@ msgstr "" #: field:ir.actions.act_window.view,view_mode:0 #: field:ir.ui.view,type:0 msgid "View Type" -msgstr "" +msgstr "Tipo de vista" #. module: base #: model:ir.ui.menu,name:base.next_id_2 msgid "User Interface" -msgstr "" +msgstr "Interfaz de usuario" #. module: base #: model:ir.module.module,shortdesc:base.module_mrp_byproduct @@ -10129,34 +10134,34 @@ msgstr "" #. module: base #: field:res.request,ref_partner_id:0 msgid "Partner Ref." -msgstr "" +msgstr "Referencia del Socio" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_expense msgid "Expense Management" -msgstr "" +msgstr "Gestión de Gastos" #. module: base #: field:ir.attachment,create_date:0 msgid "Date Created" -msgstr "" +msgstr "Fecha de creación" #. module: base #: help:ir.actions.server,trigger_name:0 msgid "The workflow signal to trigger" -msgstr "" +msgstr "Señal de flujo de trabajo a lanzar" #. module: base #: selection:base.language.install,state:0 #: selection:base.module.import,state:0 #: selection:base.module.update,state:0 msgid "done" -msgstr "" +msgstr "Realizado" #. module: base #: view:ir.actions.act_window:0 msgid "General Settings" -msgstr "" +msgstr "Configuración general" #. module: base #: model:ir.module.module,description:base.module_l10n_in @@ -10168,21 +10173,27 @@ msgid "" "Indian accounting chart and localization.\n" " " msgstr "" +"\n" +"Contabilidad India: Plan de Cuenta.\n" +"=================================\n" +"\n" +"Contabilidad India plan y localización.\n" +" " #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_uy msgid "Uruguay - Chart of Accounts" -msgstr "" +msgstr "Uruguay - Plan de cuentas" #. module: base #: model:ir.ui.menu,name:base.menu_administration_shortcut msgid "Custom Shortcuts" -msgstr "" +msgstr "Accesos rápidos personalizados" #. module: base #: selection:base.language.install,lang:0 msgid "Vietnamese / Tiếng Việt" -msgstr "" +msgstr "Vietnamita / Tiếng Việt" #. module: base #: model:ir.module.module,description:base.module_account_cancel @@ -10196,51 +10207,61 @@ msgid "" "If set to true it allows user to cancel entries & invoices.\n" " " msgstr "" +"\n" +"Permite cancelar entradas de cuentas.\n" +"==========================================\n" +"\n" +"Este modulo agrega el campo 'Permitir cancelar entradas' en el formulario " +"vista de cuentas de revistas.\n" +"Si se ajusta a verdadero esto permite a los usuarios cancelar entradas y " +"facturas.\n" +" " #. module: base #: model:ir.module.module,shortdesc:base.module_plugin msgid "CRM Plugins" -msgstr "" +msgstr "Plugins CRM" #. module: base #: model:ir.actions.act_window,name:base.action_model_model #: model:ir.model,name:base.model_ir_model #: model:ir.ui.menu,name:base.ir_model_model_menu msgid "Models" -msgstr "" +msgstr "Modelos" #. module: base #: code:addons/base/module/module.py:472 #, python-format msgid "The `base` module cannot be uninstalled" -msgstr "" +msgstr "El modulo 'base' no puede ser instalado" #. module: base #: code:addons/base/ir/ir_cron.py:390 #, python-format msgid "Record cannot be modified right now" -msgstr "" +msgstr "El registro no puede ser modificado en este momento" #. module: base #: selection:ir.actions.todo,type:0 msgid "Launch Manually" -msgstr "" +msgstr "Lanzar manualmente" #. module: base #: model:res.country,name:base.be msgid "Belgium" -msgstr "" +msgstr "Bélgica" #. module: base #: model:ir.model,name:base.model_osv_memory_autovacuum msgid "osv_memory.autovacuum" -msgstr "" +msgstr "osv_memory.autovacuum" #. module: base #: code:addons/base/ir/ir_model.py:720 #, python-format msgid "Sorry, you are not allowed to create this kind of document." msgstr "" +"Lo sentimos, usted no tiene permitido la creación de este tipo de documentos." #. module: base #: field:base.language.export,lang:0 @@ -10250,12 +10271,12 @@ msgstr "" #: view:res.lang:0 #: field:res.partner,lang:0 msgid "Language" -msgstr "" +msgstr "Idioma" #. module: base #: model:res.country,name:base.gm msgid "Gambia" -msgstr "" +msgstr "Gambia" #. module: base #: model:ir.actions.act_window,name:base.action_res_company_form @@ -10267,45 +10288,45 @@ msgstr "" #: view:res.partner:0 #: field:res.users,company_ids:0 msgid "Companies" -msgstr "" +msgstr "Compañías" #. module: base #: help:res.currency,symbol:0 msgid "Currency sign, to be used when printing amounts." -msgstr "" +msgstr "Símbolo de la moneda, para ser usado cuando se impriman informes." #. module: base #: view:res.lang:0 msgid "%H - Hour (24-hour clock) [00,23]." -msgstr "" +msgstr "%H - Hora (reloj 24-horas) [00,23]." #. module: base #: field:ir.model.fields,on_delete:0 msgid "On Delete" -msgstr "" +msgstr "Al eliminar" #. module: base #: code:addons/base/ir/ir_model.py:340 #, python-format msgid "Model %s does not exist!" -msgstr "" +msgstr "¡No existe el módulo %s!" #. module: base #: model:ir.module.module,shortdesc:base.module_mrp_jit msgid "Just In Time Scheduling" -msgstr "" +msgstr "Planificación 'Just in Time'" #. module: base #: view:ir.actions.server:0 #: field:ir.actions.server,code:0 #: selection:ir.actions.server,state:0 msgid "Python Code" -msgstr "" +msgstr "Código Python" #. module: base #: help:ir.actions.server,state:0 msgid "Type of the Action that is to be executed" -msgstr "" +msgstr "Tipo de acción que se debe ejecutar" #. module: base #: model:ir.module.module,description:base.module_portal_crm @@ -10317,11 +10338,18 @@ msgid "" "=======================================================\n" " " msgstr "" +"\n" +"Este modulo agrega una página de contacto (con un formulario de contacto " +"creando un conduce cuando se presente) a su portal si crm y partal están " +"instalados.\n" +"=============================================================================" +"=========================\n" +" " #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_us msgid "United States - Chart of accounts" -msgstr "" +msgstr "Estados Unidos - Plan de cuentas" #. module: base #: view:base.language.export:0 @@ -10336,18 +10364,18 @@ msgstr "" #: view:res.users:0 #: view:wizard.ir.model.menu.create:0 msgid "Cancel" -msgstr "" +msgstr "Cancelar" #. module: base #: code:addons/orm.py:1509 #, python-format msgid "Unknown database identifier '%s'" -msgstr "" +msgstr "Identificador de Base de Datos desconocido '%s'" #. module: base #: selection:base.language.export,format:0 msgid "PO File" -msgstr "" +msgstr "Archivo PO" #. module: base #: model:ir.module.module,description:base.module_web_diagram @@ -10357,11 +10385,15 @@ msgid "" "=========================\n" "\n" msgstr "" +"\n" +"Vista de Diagrama OpenERP Web.\n" +"=============================\n" +"\n" #. module: base #: model:res.country,name:base.nt msgid "Neutral Zone" -msgstr "" +msgstr "Zona neutral" #. module: base #: model:ir.module.module,description:base.module_portal_sale @@ -10396,38 +10428,38 @@ msgstr "" #: code:addons/base/ir/ir_fields.py:317 #, python-format msgid "external id" -msgstr "" +msgstr "ID Externo" #. module: base #: view:ir.model:0 msgid "Custom" -msgstr "" +msgstr "Personalizado" #. module: base #: model:ir.module.module,shortdesc:base.module_sale_margin msgid "Margins in Sales Orders" -msgstr "" +msgstr "Márgenes en pedidos de venta" #. module: base #: model:ir.module.module,shortdesc:base.module_purchase msgid "Purchase Management" -msgstr "" +msgstr "Gestión de compras" #. module: base #: field:ir.module.module,published_version:0 msgid "Published Version" -msgstr "" +msgstr "Versión publicada" #. module: base #: model:res.country,name:base.is msgid "Iceland" -msgstr "" +msgstr "Islandia" #. module: base #: model:ir.actions.act_window,name:base.ir_action_window #: model:ir.ui.menu,name:base.menu_ir_action_window msgid "Window Actions" -msgstr "" +msgstr "Acciones de ventana" #. module: base #: model:ir.module.module,description:base.module_portal_project_issue @@ -10439,21 +10471,27 @@ msgid "" "=====================\n" " " msgstr "" +"\n" +"Este modulo agrega menú de problemas y características a su portal si el " +"portal project_issue esta instalado.\n" +"=============================================================================" +"=========================\n" +" " #. module: base #: view:res.lang:0 msgid "%I - Hour (12-hour clock) [01,12]." -msgstr "" +msgstr "%I - Hora (reloj 12-horas) [01,12]." #. module: base #: model:res.country,name:base.de msgid "Germany" -msgstr "" +msgstr "Alemania" #. module: base #: model:ir.module.module,shortdesc:base.module_auth_oauth msgid "OAuth2 Authentication" -msgstr "" +msgstr "Autenticación OAuth2" #. module: base #: view:workflow:0 @@ -10468,7 +10506,7 @@ msgstr "" #. module: base #: report:ir.module.reference:0 msgid "Reports :" -msgstr "" +msgstr "Informes :" #. module: base #: model:ir.module.module,description:base.module_multi_company @@ -10480,17 +10518,23 @@ msgid "" "This module is the base module for other multi-company modules.\n" " " msgstr "" +"\n" +"Módulo para administrar un entorno multi-compañía.\n" +"=========================================\n" +"\n" +"Este módulo es el módulo base para otros módulos multi-compañía.\n" +" " #. module: base #: sql_constraint:res.currency:0 msgid "The currency code must be unique per company!" -msgstr "" +msgstr "¡El código de moneda debe ser único por compañía!" #. module: base #: code:addons/base/module/wizard/base_export_language.py:38 #, python-format msgid "New Language (Empty translation template)" -msgstr "" +msgstr "Nuevo Idioma (Plantilla de Traducción Vacia)" #. module: base #: model:ir.module.module,description:base.module_auth_reset_password @@ -10503,6 +10547,13 @@ msgid "" "Allow administrator to click a button to send a \"Reset Password\" request " "to a user.\n" msgstr "" +"\n" +"Reiniciar Contraseña\n" +"===================\n" +"\n" +"Permite a los usuarios reiniciar sus contraseñas desde la página de inicio.\n" +"Permite al Administrador hacer click en un botón para enviar una " +"\"Contraseña Reiniciada\" solicitada a un usuario.\n" #. module: base #: help:ir.actions.server,email:0 @@ -10525,58 +10576,68 @@ msgid "" "handle an issue.\n" " " msgstr "" +"\n" +"Este módulo añade soporte para partes de tiempo para la gestión de " +"incidencias/errores en el proyecto.\n" +"=============================================================================" +"====\n" +"\n" +"Se pueden mantener registros de trabajo para resaltar el número de horas " +"gastadas por los usuarios para manejar una incidencia.\n" +" " #. module: base #: model:res.country,name:base.gy msgid "Guyana" -msgstr "" +msgstr "Guayana" #. module: base #: model:ir.module.module,shortdesc:base.module_product_expiry msgid "Products Expiry Date" -msgstr "" +msgstr "Fecha de expiración de productos" #. module: base #: code:addons/base/res/res_config.py:387 #, python-format msgid "Click 'Continue' to configure the next addon..." -msgstr "" +msgstr "Haga clic en 'Continuar' para configurar el siguiente módulo..." #. module: base #: field:ir.actions.server,record_id:0 msgid "Create Id" -msgstr "" +msgstr "Id creación" #. module: base #: model:res.country,name:base.hn msgid "Honduras" -msgstr "" +msgstr "Honduras" #. module: base #: model:res.country,name:base.eg msgid "Egypt" -msgstr "" +msgstr "Egipto" #. module: base #: view:ir.attachment:0 msgid "Creation" -msgstr "" +msgstr "Creación" #. module: base #: help:ir.actions.server,model_id:0 msgid "" "Select the object on which the action will work (read, write, create)." msgstr "" +"Seleccione el objeto sobre el cual la acción actuará (leer, escribir, crear)." #. module: base #: field:base.language.import,name:0 msgid "Language Name" -msgstr "" +msgstr "Nombre del idioma" #. module: base #: selection:ir.property,type:0 msgid "Boolean" -msgstr "" +msgstr "Booleano" #. module: base #: help:ir.mail_server,smtp_encryption:0 @@ -10588,16 +10649,22 @@ msgid "" "- SSL/TLS: SMTP sessions are encrypted with SSL/TLS through a dedicated port " "(default: 465)" msgstr "" +"Escoja el esquema de encriptación de la conexión:\n" +"- Ninguno: Las sesiones SMTP se realizan en texto plano.\n" +"- TLS (STARTTLS): Se solicita encriptación TLS al comienzo de la sesión SMTP " +"(Recomendado)\n" +"- SSL/TLS: Las sesiones SMTP son encriptadas con SSL/TLS a través de un " +"puerto dedicado (por defecto: 465)" #. module: base #: view:ir.model:0 msgid "Fields Description" -msgstr "" +msgstr "Descripción de campos" #. module: base #: model:ir.module.module,shortdesc:base.module_analytic_contract_hr_expense msgid "Contracts Management: hr_expense link" -msgstr "" +msgstr "Administrador de Contratos: hr_expense enlace" #. module: base #: view:ir.attachment:0 @@ -10611,12 +10678,12 @@ msgstr "" #: view:res.partner:0 #: view:workflow.activity:0 msgid "Group By..." -msgstr "" +msgstr "Agrupar por..." #. module: base #: view:base.module.update:0 msgid "Module Update Result" -msgstr "" +msgstr "Resultado del Modulo Actualizado" #. module: base #: model:ir.module.module,description:base.module_analytic_contract_hr_expense @@ -10631,12 +10698,12 @@ msgstr "" #. module: base #: field:res.partner,use_parent_address:0 msgid "Use Company Address" -msgstr "" +msgstr "Usar Dirección de Compañía" #. module: base #: model:ir.module.module,summary:base.module_hr_holidays msgid "Holidays, Allocation and Leave Requests" -msgstr "" +msgstr "Vacaciones, Asignación y Dejar Solicitudes" #. module: base #: model:ir.module.module,description:base.module_web_hello @@ -10646,30 +10713,34 @@ msgid "" "===========================\n" "\n" msgstr "" +"\n" +"Modulo de Ejemplo OpenERP Web.\n" +"==============================\n" +"\n" #. module: base #: selection:ir.module.module,state:0 #: selection:ir.module.module.dependency,state:0 msgid "To be installed" -msgstr "" +msgstr "Para ser instalado" #. module: base #: view:ir.model:0 #: model:ir.module.module,shortdesc:base.module_base #: field:res.currency,base:0 msgid "Base" -msgstr "" +msgstr "Base" #. module: base #: field:ir.model.data,model:0 #: field:ir.values,model:0 msgid "Model Name" -msgstr "" +msgstr "Nombre del modelo" #. module: base #: selection:base.language.install,lang:0 msgid "Telugu / తెలుగు" -msgstr "" +msgstr "Telugu / తెలుగు" #. module: base #: model:ir.actions.act_window,help:base.action_partner_supplier_form @@ -10687,7 +10758,7 @@ msgstr "" #. module: base #: model:res.country,name:base.lr msgid "Liberia" -msgstr "" +msgstr "Liberia" #. module: base #: model:ir.module.module,description:base.module_web_tests @@ -10704,7 +10775,7 @@ msgstr "" #: view:res.groups:0 #: field:res.partner,comment:0 msgid "Notes" -msgstr "" +msgstr "Notas" #. module: base #: field:ir.config_parameter,value:0 @@ -10718,7 +10789,7 @@ msgstr "" #: field:ir.server.object.lines,value:0 #: field:ir.values,value:0 msgid "Value" -msgstr "" +msgstr "Valor" #. module: base #: view:base.language.import:0 @@ -10727,59 +10798,60 @@ msgstr "" #: selection:ir.translation,type:0 #: field:res.partner.bank.type,code:0 msgid "Code" -msgstr "" +msgstr "Código" #. module: base #: model:ir.model,name:base.model_res_config_installer msgid "res.config.installer" -msgstr "" +msgstr "res.config.instalador" #. module: base #: model:res.country,name:base.mc msgid "Monaco" -msgstr "" +msgstr "Mónaco" #. module: base #: selection:ir.cron,interval_type:0 msgid "Minutes" -msgstr "" +msgstr "Minutos" #. module: base #: view:res.currency:0 msgid "Display" -msgstr "" +msgstr "Mostrar en pantalla" #. module: base #: model:res.groups,name:base.group_multi_company msgid "Multi Companies" -msgstr "" +msgstr "Múltiples compañías" #. module: base #: help:res.users,menu_id:0 msgid "" "If specified, the action will replace the standard menu for this user." msgstr "" +"Si se indica, la acción reemplazará el menú estándar para este usuario." #. module: base #: model:ir.actions.report.xml,name:base.preview_report msgid "Preview Report" -msgstr "" +msgstr "Vista previa del informe" #. module: base #: model:ir.module.module,shortdesc:base.module_purchase_analytic_plans msgid "Purchase Analytic Plans" -msgstr "" +msgstr "Planes analíticos de compra" #. module: base #: model:ir.actions.act_window,name:base.ir_sequence_type #: model:ir.ui.menu,name:base.menu_ir_sequence_type msgid "Sequence Codes" -msgstr "" +msgstr "Códigos de secuencias" #. module: base #: selection:base.language.install,lang:0 msgid "Spanish (CO) / Español (CO)" -msgstr "" +msgstr "Español (CO) / Español (CO)" #. module: base #: view:base.module.configuration:0 @@ -10787,49 +10859,52 @@ msgid "" "All pending configuration wizards have been executed. You may restart " "individual wizards via the list of configuration wizards." msgstr "" +"Todos los asistentes de configuración pendientes han sido ejecutados. Puede " +"reiniciar asistentes individualmente a través de la lista de asistentes de " +"configuración." #. module: base #: view:ir.sequence:0 msgid "Current Year with Century: %(year)s" -msgstr "" +msgstr "Año actual con centuria: %(year)s" #. module: base #: field:ir.exports,export_fields:0 msgid "Export ID" -msgstr "" +msgstr "ID exportación" #. module: base #: model:res.country,name:base.fr msgid "France" -msgstr "" +msgstr "Francia" #. module: base #: view:workflow.activity:0 #: field:workflow.activity,flow_stop:0 msgid "Flow Stop" -msgstr "" +msgstr "Detener flujo" #. module: base #: selection:ir.cron,interval_type:0 msgid "Weeks" -msgstr "" +msgstr "Semanas" #. module: base #: model:res.country,name:base.af msgid "Afghanistan, Islamic State of" -msgstr "" +msgstr "Estado Islámico de Afganistán" #. module: base #: code:addons/base/module/wizard/base_module_import.py:58 #: code:addons/base/module/wizard/base_module_import.py:66 #, python-format msgid "Error !" -msgstr "" +msgstr "¡Error!" #. module: base #: model:ir.module.module,shortdesc:base.module_marketing_campaign_crm_demo msgid "Marketing Campaign - Demo" -msgstr "" +msgstr "Campaña de marketing - Demo" #. module: base #: code:addons/base/ir/ir_fields.py:361 @@ -10841,45 +10916,45 @@ msgstr "" #. module: base #: field:ir.cron,interval_type:0 msgid "Interval Unit" -msgstr "" +msgstr "Unidad de intervalo" #. module: base #: field:workflow.activity,kind:0 msgid "Kind" -msgstr "" +msgstr "Clase" #. module: base #: code:addons/orm.py:4614 #, python-format msgid "This method does not exist anymore" -msgstr "" +msgstr "Este método ya no existe" #. module: base #: view:base.update.translations:0 #: model:ir.actions.act_window,name:base.action_wizard_update_translations #: model:ir.ui.menu,name:base.menu_wizard_update_translations msgid "Synchronize Terms" -msgstr "" +msgstr "Sincronizar términos" #. module: base #: field:res.lang,thousands_sep:0 msgid "Thousands Separator" -msgstr "" +msgstr "Separador de miles" #. module: base #: field:res.request,create_date:0 msgid "Created Date" -msgstr "" +msgstr "Fecha creación" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_cn msgid "中国会计科目表 - Accounting" -msgstr "" +msgstr "China - Contabilidad" #. module: base #: sql_constraint:ir.model.constraint:0 msgid "Constraints with the same name are unique per module." -msgstr "" +msgstr "Restrinciones con el mismo nombre son unicas por modulo." #. module: base #: model:ir.module.module,description:base.module_report_intrastat @@ -10891,6 +10966,13 @@ msgid "" "This module gives the details of the goods traded between the countries of\n" "European Union." msgstr "" +"\n" +"Un modulo que agrega informes intra estatales.\n" +"===========================================\n" +"\n" +"Este modulo da los detalles de los bienes objetos del comercio entre los " +"países of\n" +"la Unión Europea." #. module: base #: help:ir.actions.server,loop_action:0 @@ -10898,129 +10980,137 @@ msgid "" "Select the action that will be executed. Loop action will not be avaliable " "inside loop." msgstr "" +"Seleccione la acción que se ejecutará. La acción bucle no estará disponible " +"dentro de un bucle." #. module: base #: help:ir.model.data,res_id:0 msgid "ID of the target record in the database" -msgstr "" +msgstr "ID del registro objetivo en la base de datos" #. module: base #: model:ir.module.module,shortdesc:base.module_account_analytic_analysis msgid "Contracts Management" -msgstr "" +msgstr "Gestión de contratos" #. module: base #: selection:base.language.install,lang:0 msgid "Chinese (TW) / 正體字" -msgstr "" +msgstr "Chino (TW) / 正體字" #. module: base #: model:ir.model,name:base.model_res_request msgid "res.request" -msgstr "" +msgstr "res.request" #. module: base #: field:res.partner,image_medium:0 msgid "Medium-sized image" -msgstr "" +msgstr "Imagen de Tamaño medio" #. module: base #: view:ir.model:0 msgid "In Memory" -msgstr "" +msgstr "En memoria" #. module: base #: view:ir.actions.todo:0 msgid "Todo" -msgstr "" +msgstr "Hacer" #. module: base #: model:ir.module.module,shortdesc:base.module_product_visible_discount msgid "Prices Visible Discounts" -msgstr "" +msgstr "Descuentos visibles en los precios" #. module: base #: field:ir.attachment,datas:0 msgid "File Content" -msgstr "" +msgstr "Contenido del archivo" #. module: base #: model:ir.actions.act_window,name:base.action_model_relation #: view:ir.model.relation:0 #: model:ir.ui.menu,name:base.ir_model_relation_menu msgid "ManyToMany Relations" -msgstr "" +msgstr "Relaciones Many2Many" #. module: base #: model:res.country,name:base.pa msgid "Panama" -msgstr "" +msgstr "Panamá" #. module: base #: help:workflow.transition,group_id:0 msgid "" "The group that a user must have to be authorized to validate this transition." msgstr "" +"El grupo que un usuario debe pertenecer para ser autorizado a validar esta " +"transición." #. module: base #: constraint:res.users:0 msgid "The chosen company is not in the allowed companies for this user" msgstr "" +"La compañía seleccionada no está entre las companías permitidas para este " +"usuario" #. module: base #: model:res.country,name:base.gi msgid "Gibraltar" -msgstr "" +msgstr "Gibraltar" #. module: base #: field:ir.actions.report.xml,report_name:0 msgid "Service Name" -msgstr "" +msgstr "Nombre del servicio" #. module: base #: model:res.country,name:base.pn msgid "Pitcairn Island" -msgstr "" +msgstr "Isla Pitcairn" #. module: base #: field:res.partner,category_id:0 msgid "Tags" -msgstr "" +msgstr "Etiquetas" #. module: base #: view:base.module.upgrade:0 msgid "" "We suggest to reload the menu tab to see the new menus (Ctrl+T then Ctrl+R)." msgstr "" +"Le sugerimos de recargar el menú para ver los nuevos menús (Ctrl+T seguido " +"de Ctrl+R)" #. module: base #: model:ir.actions.act_window,name:base.action_rule #: view:ir.rule:0 #: model:ir.ui.menu,name:base.menu_action_rule msgid "Record Rules" -msgstr "" +msgstr "Reglas de registros" #. module: base #: view:multi_company.default:0 msgid "Multi Company" -msgstr "" +msgstr "Multi compañía" #. module: base #: model:ir.module.category,name:base.module_category_portal #: model:ir.module.module,shortdesc:base.module_portal msgid "Portal" -msgstr "" +msgstr "Portal" #. module: base #: selection:ir.translation,state:0 msgid "To Translate" -msgstr "" +msgstr "A Traducir" #. module: base #: code:addons/base/ir/ir_fields.py:295 #, python-format msgid "See all possible values" -msgstr "" +msgstr "Ver todos los valores posibles" #. module: base #: model:ir.module.module,description:base.module_claim_from_delivery @@ -11031,12 +11121,17 @@ msgid "" "\n" "Adds a Claim link to the delivery order.\n" msgstr "" +"\n" +"Crea una reclamación desde una entrega del pedido.\n" +"==========================================\n" +"\n" +"Añade un enlace de la reclamación desde la entrega del pedido.\n" #. module: base #: view:ir.model:0 #: view:workflow.activity:0 msgid "Properties" -msgstr "" +msgstr "Propiedades" #. module: base #: help:ir.sequence,padding:0 @@ -11044,6 +11139,8 @@ msgid "" "OpenERP will automatically adds some '0' on the left of the 'Next Number' to " "get the required padding size." msgstr "" +"OpenERP automáticamente añadirá algunos '0' a la izquierda del 'Número " +"siguiente' para obtener el tamaño de relleno necesario." #. module: base #: help:ir.model.constraint,name:0 @@ -11053,27 +11150,27 @@ msgstr "" #. module: base #: view:res.lang:0 msgid "%A - Full weekday name." -msgstr "" +msgstr "%A - Nombre completo del día de la semana." #. module: base #: help:ir.values,user_id:0 msgid "If set, action binding only applies for this user." -msgstr "" +msgstr "Si se establece, la acción enlazada sólo se aplica a este usuario." #. module: base #: model:res.country,name:base.gw msgid "Guinea Bissau" -msgstr "" +msgstr "Guinea Bissau" #. module: base #: field:ir.actions.report.xml,header:0 msgid "Add RML Header" -msgstr "" +msgstr "Agregar Cabecera RML" #. module: base #: help:res.company,rml_footer:0 msgid "Footer text displayed at the bottom of all reports." -msgstr "" +msgstr "Prueba de pie de página mostrada al final de todos los reportes." #. module: base #: model:ir.module.module,shortdesc:base.module_note_pad @@ -11092,11 +11189,19 @@ msgid "" "pads (by default, http://ietherpad.com/).\n" " " msgstr "" +"\n" +"Añade soporte mejorado para (Etherpad) archivos adjuntos en el cliente web.\n" +"=======================================================================\n" +"\n" +"Deja que las compañías personalicen cual instalación Pad debería ser usada " +"para enlazar nuevos pads\n" +"(por defecto, http://ietherpad.com/).\n" +" " #. module: base #: sql_constraint:res.lang:0 msgid "The code of the language must be unique !" -msgstr "" +msgstr "¡El código del idioma debe ser único!" #. module: base #: model:ir.actions.act_window,name:base.action_attachment @@ -11104,12 +11209,12 @@ msgstr "" #: view:ir.attachment:0 #: model:ir.ui.menu,name:base.menu_action_attachment msgid "Attachments" -msgstr "" +msgstr "Adjuntos" #. module: base #: help:res.company,bank_ids:0 msgid "Bank accounts related to this company" -msgstr "" +msgstr "Cuentas bancarias de esta empresa" #. module: base #: model:ir.module.category,name:base.module_category_sales_management @@ -11120,45 +11225,47 @@ msgstr "" #: model:ir.ui.menu,name:base.next_id_64 #: view:res.users:0 msgid "Sales" -msgstr "" +msgstr "Ventas" #. module: base #: field:ir.actions.server,child_ids:0 msgid "Other Actions" -msgstr "" +msgstr "Otras acciones" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_be_coda msgid "Belgium - Import Bank CODA Statements" -msgstr "" +msgstr "Belgica - Importar Estados de Banco CODA" #. module: base #: selection:ir.actions.todo,state:0 msgid "Done" -msgstr "" +msgstr "Realizado" #. module: base #: help:ir.cron,doall:0 msgid "" "Specify if missed occurrences should be executed when the server restarts." msgstr "" +"Especifica si las ocurrencias perdidas deben ser ejecutadas cuando el " +"servidor se reinicie." #. module: base #: model:res.partner.title,name:base.res_partner_title_miss #: model:res.partner.title,shortcut:base.res_partner_title_miss msgid "Miss" -msgstr "" +msgstr "Sra." #. module: base #: view:ir.model.access:0 #: field:ir.model.access,perm_write:0 msgid "Write Access" -msgstr "" +msgstr "Permisos de escritura" #. module: base #: view:res.lang:0 msgid "%m - Month number [01,12]." -msgstr "" +msgstr "%m - Número mes [01,12]." #. module: base #: field:res.bank,city:0 @@ -11167,43 +11274,43 @@ msgstr "" #: field:res.partner.address,city:0 #: field:res.partner.bank,city:0 msgid "City" -msgstr "" +msgstr "Ciudad" #. module: base #: model:res.country,name:base.qa msgid "Qatar" -msgstr "" +msgstr "Qatar" #. module: base #: model:res.country,name:base.it msgid "Italy" -msgstr "" +msgstr "Italia" #. module: base #: model:res.groups,name:base.group_sale_salesman msgid "See Own Leads" -msgstr "" +msgstr "Ver Conduces Propios" #. module: base #: view:ir.actions.todo:0 #: selection:ir.actions.todo,state:0 msgid "To Do" -msgstr "" +msgstr "Para hacer" #. module: base #: model:ir.module.module,shortdesc:base.module_portal_hr_employees msgid "Portal HR employees" -msgstr "" +msgstr "Portal HR employees" #. module: base #: selection:base.language.install,lang:0 msgid "Estonian / Eesti keel" -msgstr "" +msgstr "Estonio / Eesti keel" #. module: base #: selection:ir.module.module,license:0 msgid "GPL-3 or later version" -msgstr "" +msgstr "GPL-3 o versión posterior" #. module: base #: code:addons/orm.py:2033 @@ -11216,12 +11323,12 @@ msgstr "" #. module: base #: field:workflow.activity,action:0 msgid "Python Action" -msgstr "" +msgstr "Acción Python" #. module: base #: selection:base.language.install,lang:0 msgid "English (US)" -msgstr "" +msgstr "Inglés (Estados Unidos)" #. module: base #: model:ir.actions.act_window,help:base.action_partner_title_partner @@ -11229,6 +11336,9 @@ msgid "" "Manage the partner titles you want to have available in your system. The " "partner titles is the legal status of the company: Private Limited, SA, etc." msgstr "" +"Gestione los títulos de empresa que quiere disponer en su sistema. Los " +"títulos de empresa es el estatuto legal de la compañía: Sociedad Limitada, " +"Sociedad Anónima, ..." #. module: base #: view:res.bank:0 @@ -11237,17 +11347,17 @@ msgstr "" #: view:res.partner.bank:0 #: view:res.users:0 msgid "Address" -msgstr "" +msgstr "Dirección" #. module: base #: selection:base.language.install,lang:0 msgid "Mongolian / монгол" -msgstr "" +msgstr "Mongol / монгол" #. module: base #: model:res.country,name:base.mr msgid "Mauritania" -msgstr "" +msgstr "Mauritania" #. module: base #: model:ir.module.module,description:base.module_resource @@ -11263,11 +11373,21 @@ msgid "" "associated to every resource. It also manages the leaves of every resource.\n" " " msgstr "" +"\n" +"Modulo para la gestión de recursos.\n" +"=================================\n" +"\n" +"Un recurso representa algo que puede estar en agenda (un desarrollador en " +"una tarea o un\n" +"centro de trabajo en ordenes de producción). Este modulo gestiona un " +"calendario de recursos\n" +"asociado a cada recurso. También gestiona las salidas de cada recurso.\n" +" " #. module: base #: model:ir.model,name:base.model_ir_translation msgid "ir.translation" -msgstr "" +msgstr "ir.translation" #. module: base #: code:addons/base/ir/ir_model.py:727 @@ -11275,6 +11395,8 @@ msgstr "" msgid "" "Please contact your system administrator if you think this is an error." msgstr "" +"Por favor contacte su administrador de sistema si usted piensa que es un " +"error." #. module: base #: code:addons/base/module/module.py:519 @@ -11288,7 +11410,7 @@ msgstr "" #: view:workflow.activity:0 #: field:workflow.workitem,act_id:0 msgid "Activity" -msgstr "" +msgstr "Actividad" #. module: base #: model:ir.actions.act_window,name:base.action_res_users @@ -11301,12 +11423,12 @@ msgstr "" #: field:res.partner,user_ids:0 #: view:res.users:0 msgid "Users" -msgstr "" +msgstr "Usuarios" #. module: base #: field:res.company,parent_id:0 msgid "Parent Company" -msgstr "" +msgstr "Compañía Padre" #. module: base #: code:addons/orm.py:3840 @@ -11315,11 +11437,13 @@ msgid "" "One of the documents you are trying to access has been deleted, please try " "again after refreshing." msgstr "" +"Uno de los documentos que usted esta tratando de acceder ha sido eliminado, " +"por favor intente de nuevo después de refrescar." #. module: base #: model:ir.model,name:base.model_ir_mail_server msgid "ir.mail_server" -msgstr "" +msgstr "ir.mail_server" #. module: base #: help:ir.ui.menu,needaction_counter:0 @@ -11331,7 +11455,7 @@ msgstr "" #. module: base #: selection:base.language.install,lang:0 msgid "Spanish (CR) / Español (CR)" -msgstr "" +msgstr "Español (CR) / Español (CR)" #. module: base #: view:ir.rule:0 @@ -11345,32 +11469,32 @@ msgstr "" #. module: base #: field:res.currency.rate,rate:0 msgid "Rate" -msgstr "" +msgstr "Tarifa" #. module: base #: model:res.country,name:base.cg msgid "Congo" -msgstr "" +msgstr "República Democrática del Congo" #. module: base #: view:res.lang:0 msgid "Examples" -msgstr "" +msgstr "Ejemplos" #. module: base #: field:ir.default,value:0 msgid "Default Value" -msgstr "" +msgstr "Valor por defecto" #. module: base #: model:ir.model,name:base.model_res_country_state msgid "Country state" -msgstr "" +msgstr "País Estado" #. module: base #: model:ir.ui.menu,name:base.next_id_5 msgid "Sequences & Identifiers" -msgstr "" +msgstr "Secuencias e identificadores" #. module: base #: model:ir.module.module,description:base.module_l10n_th @@ -11382,11 +11506,17 @@ msgid "" "Thai accounting chart and localization.\n" " " msgstr "" +"\n" +"Plan de cuentas para Tailandia\n" +"=======================\n" +"\n" +"Plan de cuentas y localización tailandesa.\n" +" " #. module: base #: model:res.country,name:base.kn msgid "Saint Kitts & Nevis Anguilla" -msgstr "" +msgstr "Antillas San Kitts y Nevis" #. module: base #: code:addons/base/res/res_currency.py:193 @@ -11396,6 +11526,9 @@ msgid "" "for the currency: %s \n" "at the date: %s" msgstr "" +"No se ha encontrado tasas de cambio \n" +"para la moneda: %s \n" +"en la fecha: %s" #. module: base #: model:ir.actions.act_window,help:base.action_ui_view_custom @@ -11403,16 +11536,18 @@ msgid "" "Customized views are used when users reorganize the content of their " "dashboard views (via web client)" msgstr "" +"Las vistas personalizadas se utilizan cuando los usuarios reorganizan el " +"contenido de sus vistas de tablero (mediante el cliente web)" #. module: base #: model:ir.module.module,shortdesc:base.module_sale_stock msgid "Sales and Warehouse Management" -msgstr "" +msgstr "Ventas y Gestión de Almacén" #. module: base #: field:ir.model.fields,model:0 msgid "Object Name" -msgstr "" +msgstr "Nombre del objeto" #. module: base #: help:ir.actions.server,srcmodel_id:0 @@ -11420,25 +11555,27 @@ msgid "" "Object in which you want to create / write the object. If it is empty then " "refer to the Object field." msgstr "" +"Objeto en el cual desea crear / escribir el objeto. Si está vacío entonces " +"se refiere al campo Objeto." #. module: base #: view:ir.module.module:0 #: selection:ir.module.module,state:0 #: selection:ir.module.module.dependency,state:0 msgid "Not Installed" -msgstr "" +msgstr "No instalado" #. module: base #: view:workflow.activity:0 #: field:workflow.activity,out_transitions:0 msgid "Outgoing Transitions" -msgstr "" +msgstr "Transiciones salientes" #. module: base #: field:ir.module.module,icon_image:0 #: field:ir.ui.menu,icon:0 msgid "Icon" -msgstr "" +msgstr "Icono" #. module: base #: model:ir.module.category,description:base.module_category_human_resources @@ -11446,63 +11583,67 @@ msgid "" "Helps you manage your human resources by encoding your employees structure, " "generating work sheets, tracking attendance and more." msgstr "" +"Le ayuda a gestionar sus recursos humanos mediante la creación de la " +"estructura de los empleados, la generación de hojas de trabajo, seguimiento " +"de la asistencia y más." #. module: base #: help:res.partner,ean13:0 msgid "BarCode" -msgstr "" +msgstr "Codigo de Barra" #. module: base #: help:ir.model.fields,model_id:0 msgid "The model this field belongs to" -msgstr "" +msgstr "El modelo al que pertenece este campo." #. module: base #: field:ir.actions.server,sms:0 #: selection:ir.actions.server,state:0 msgid "SMS" -msgstr "" +msgstr "SMS (mensaje de texto)" #. module: base #: model:res.country,name:base.mq msgid "Martinique (French)" -msgstr "" +msgstr "Martinica (Francia)" #. module: base #: help:res.partner,is_company:0 msgid "Check if the contact is a company, otherwise it is a person" msgstr "" +"Verificar si el contacto es una compañía, de otra manera es una persona" #. module: base #: view:ir.sequence.type:0 msgid "Sequences Type" -msgstr "" +msgstr "Tipo de secuencias" #. module: base #: code:addons/base/res/res_bank.py:195 #, python-format msgid "Formating Error" -msgstr "" +msgstr "Formateando Error" #. module: base #: model:res.country,name:base.ye msgid "Yemen" -msgstr "" +msgstr "Yemen" #. module: base #: selection:workflow.activity,split_mode:0 msgid "Or" -msgstr "" +msgstr "O" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_br msgid "Brazilian - Accounting" -msgstr "" +msgstr "Brasil - Contabilidad" #. module: base #: model:res.country,name:base.pk msgid "Pakistan" -msgstr "" +msgstr "Pakistán" #. module: base #: model:ir.module.module,description:base.module_product_margin @@ -11520,12 +11661,12 @@ msgstr "" #. module: base #: model:res.country,name:base.al msgid "Albania" -msgstr "" +msgstr "Albania" #. module: base #: model:res.country,name:base.ws msgid "Samoa" -msgstr "" +msgstr "Samoa" #. module: base #: code:addons/base/res/res_lang.py:189 @@ -11541,47 +11682,47 @@ msgstr "" #: code:addons/base/ir/ir_model.py:1023 #, python-format msgid "Permission Denied" -msgstr "" +msgstr "Permiso denegado" #. module: base #: field:ir.ui.menu,child_id:0 msgid "Child IDs" -msgstr "" +msgstr "IDs hijos" #. module: base #: code:addons/base/ir/ir_actions.py:702 #: code:addons/base/ir/ir_actions.py:705 #, python-format msgid "Problem in configuration `Record Id` in Server Action!" -msgstr "" +msgstr "¡Problema en configuración `Id registro` en la acción del servidor!" #. module: base #: code:addons/orm.py:2810 #: code:addons/orm.py:2820 #, python-format msgid "ValidateError" -msgstr "" +msgstr "Error de validación" #. module: base #: view:base.module.import:0 #: view:base.module.update:0 msgid "Open Modules" -msgstr "" +msgstr "Abrir módulos" #. module: base #: model:ir.actions.act_window,help:base.action_res_bank_form msgid "Manage bank records you want to be used in the system." -msgstr "" +msgstr "Gestione los registros de bancos que quiere usar en el sistema." #. module: base #: view:base.module.import:0 msgid "Import module" -msgstr "" +msgstr "Importar módulo" #. module: base #: field:ir.actions.server,loop_action:0 msgid "Loop Action" -msgstr "" +msgstr "Acción bucle" #. module: base #: help:ir.actions.report.xml,report_file:0 @@ -11589,11 +11730,13 @@ msgid "" "The path to the main report file (depending on Report Type) or NULL if the " "content is in another field" msgstr "" +"La ruta al archivo principal del informe (dependiendo del tipo de informe) o " +"NULL si el contenido está en otro campo." #. module: base #: model:res.country,name:base.la msgid "Laos" -msgstr "" +msgstr "Laos" #. module: base #: code:addons/base/res/res_company.py:149 @@ -11605,12 +11748,12 @@ msgstr "" #: field:res.partner.address,email:0 #, python-format msgid "Email" -msgstr "" +msgstr "Correo" #. module: base #: model:res.partner.category,name:base.res_partner_category_12 msgid "Office Supplies" -msgstr "" +msgstr "Suplidores de Oficina" #. module: base #: code:addons/custom.py:550 @@ -11619,11 +11762,13 @@ msgid "" "The sum of the data (2nd field) is null.\n" "We can't draw a pie chart !" msgstr "" +"La suma de los datos (2º campo) es nula.\n" +"¡No se puede dibujar un gráfico de sectores!" #. module: base #: view:res.partner.bank:0 msgid "Information About the Bank" -msgstr "" +msgstr "Información del banco" #. module: base #: help:ir.actions.server,condition:0 @@ -11641,6 +11786,17 @@ msgid "" " - uid: current user id\n" " - context: current context" msgstr "" +"Condición que se prueba antes de que la acción se ejecute, y previene la " +"ejecución si no se verifica.\n" +"Ejemplo: object.list_price > 5000\n" +"Es una expresión Python que puede usar los siguientes valores:\n" +" - self: modelo ORM del registro en el que la acción es lanzada\n" +" - object or obj: browse_record del registro en el que la acción es lanzada\n" +" - pool: pool del modelo ORM (i.e. self.pool)\n" +" - time: módulo de tiempo de Python\n" +" - cr: cursor de la base de datos\n" +" - uid: id del usuario actual\n" +" - context: contexto actual" #. module: base #: model:ir.module.module,description:base.module_account_followup @@ -11677,6 +11833,8 @@ msgstr "" msgid "" "2. Group-specific rules are combined together with a logical OR operator" msgstr "" +"2. Reglas específicas de grupo que se pueden combinar juntas con un operador " +"OR lógico" #. module: base #: model:res.country,name:base.bl @@ -11686,28 +11844,29 @@ msgstr "" #. module: base #: selection:ir.module.module,license:0 msgid "Other Proprietary" -msgstr "" +msgstr "Otro propietario" #. module: base #: model:res.country,name:base.ec msgid "Ecuador" -msgstr "" +msgstr "Ecuador" #. module: base #: view:ir.rule:0 msgid "Read Access Right" -msgstr "" +msgstr "Leer Derecho de Acceso" #. module: base #: model:ir.module.module,shortdesc:base.module_analytic_user_function msgid "Jobs on Contracts" -msgstr "" +msgstr "Trabajos de contratos" #. module: base #: code:addons/base/res/res_lang.py:187 #, python-format msgid "You cannot delete the language which is User's Preferred Language !" msgstr "" +"¡No puede eliminar el idioma que es el idioma predeterminado de un usuario!" #. module: base #: model:ir.module.module,description:base.module_l10n_ve @@ -11718,26 +11877,31 @@ msgid "" "\n" "Este módulo es para manejar un catálogo de cuentas ejemplo para Venezuela.\n" msgstr "" +"\n" +"Este módulo administra el plan de cuentas de Venezuela para OpenERP.\n" +"===========================================================================\n" +"\n" +"Este módulo es para manejar un catálogo de cuentas ejemplo para Venezuela.\n" #. module: base #: view:ir.model.data:0 msgid "Updatable" -msgstr "" +msgstr "Actualizable" #. module: base #: view:res.lang:0 msgid "3. %x ,%X ==> 12/05/08, 18:25:20" -msgstr "" +msgstr "3. %x ,%X ==> 12/05/08, 18:25:20" #. module: base #: selection:ir.model.fields,on_delete:0 msgid "Cascade" -msgstr "" +msgstr "Cascada" #. module: base #: field:workflow.transition,group_id:0 msgid "Group Required" -msgstr "" +msgstr "Grupo requerido" #. module: base #: model:ir.module.category,description:base.module_category_knowledge_management @@ -11745,42 +11909,44 @@ msgid "" "Lets you install addons geared towards sharing knowledge with and between " "your employees." msgstr "" +"Permite instalar addons orientados a compartir el conocimiento con y entre " +"sus empleados." #. module: base #: selection:base.language.install,lang:0 msgid "Arabic / الْعَرَبيّة" -msgstr "" +msgstr "Árabe / الْعَرَبيّة" #. module: base #: selection:ir.translation,state:0 msgid "Translated" -msgstr "" +msgstr "Traducidos" #. module: base #: model:ir.actions.act_window,name:base.action_inventory_form #: model:ir.ui.menu,name:base.menu_action_inventory_form msgid "Default Company per Object" -msgstr "" +msgstr "Compañía por defecto por objeto" #. module: base #: field:ir.ui.menu,needaction_counter:0 msgid "Number of actions the user has to perform" -msgstr "" +msgstr "Número de acciones que el usuario tiene que realizar" #. module: base #: model:ir.module.module,shortdesc:base.module_web_hello msgid "Hello" -msgstr "" +msgstr "Hola" #. module: base #: view:ir.actions.configuration.wizard:0 msgid "Next Configuration Step" -msgstr "" +msgstr "Siguiente paso de la configuración" #. module: base #: field:res.groups,comment:0 msgid "Comment" -msgstr "" +msgstr "Comentario" #. module: base #: field:ir.filters,domain:0 @@ -11789,49 +11955,49 @@ msgstr "" #: field:ir.rule,domain_force:0 #: field:res.partner.title,domain:0 msgid "Domain" -msgstr "" +msgstr "Dominio" #. module: base #: code:addons/base/ir/ir_fields.py:167 #, python-format msgid "Use '1' for yes and '0' for no" -msgstr "" +msgstr "Usar '1' para Si y '0' para no" #. module: base #: model:ir.module.module,shortdesc:base.module_marketing_campaign msgid "Marketing Campaigns" -msgstr "" +msgstr "Campañas de marketing" #. module: base #: field:res.country.state,name:0 msgid "State Name" -msgstr "" +msgstr "Nombre provincia" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_be_hr_payroll_account msgid "Belgium - Payroll with Accounting" -msgstr "" +msgstr "Belgica - Nómina de Contabilidad" #. module: base #: code:addons/base/ir/ir_fields.py:314 #, python-format msgid "Invalid database id '%s' for the field '%%(field)s'" -msgstr "" +msgstr "ID de la base de datos invalido '%s' para el campo '%%(field)s'" #. module: base #: view:res.lang:0 msgid "Update Languague Terms" -msgstr "" +msgstr "Actualizar términos de idioma" #. module: base #: field:workflow.activity,join_mode:0 msgid "Join Mode" -msgstr "" +msgstr "Modo unión" #. module: base #: field:res.partner,tz:0 msgid "Timezone" -msgstr "" +msgstr "Zona horaria" #. module: base #: model:ir.module.module,description:base.module_account_voucher @@ -11858,23 +12024,47 @@ msgid "" "* Voucher Payment [Customer & Supplier]\n" " " msgstr "" +"\n" +"Facturación y Pagos por Voucher y Ingresos de Contabilidad\n" +"========================================================\n" +"El especifico y de fácil uso sistema de Facturación en OpenERP les permite " +"mantener el rastreo de su contabilidad, incluso cuando usted no es un " +"contable. Esto provee una vía fácil de seguimiento en sus suplidores y " +"clientes. \n" +"\n" +"Usted podría usar esta contabilidad simplificada en caso de que usted " +"trabaje con una cuenta (externa) para mantener sus diarios, y usted quiere " +"mantener el rastreo de sus pagos. \n" +"\n" +"El sistema de facturación incluye ingresos y vouchers (una vía fácil de " +"mantener el rastreo de compras y ventas). También les ofrece un método fácil " +"de registro de pagos, sin tener que codificar completamente resúmenes de " +"cuentas.\n" +"\n" +"Este modulo gestiona:\n" +"\n" +"*Entrada de Voucher\n" +"*Ingresos de Voucher [Compras y Ventas]\n" +"*Pagos de Voucher [Suplidores y Clientes]\n" +" " #. module: base #: model:ir.actions.act_window,name:base.ir_sequence_form #: view:ir.sequence:0 #: model:ir.ui.menu,name:base.menu_ir_sequence_form msgid "Sequences" -msgstr "" +msgstr "Secuencias" #. module: base #: help:res.lang,code:0 msgid "This field is used to set/get locales for user" msgstr "" +"Este campo se utiliza para establecer/obtener los locales para el usuario." #. module: base #: view:ir.filters:0 msgid "Shared" -msgstr "" +msgstr "Compartido" #. module: base #: code:addons/base/module/module.py:336 @@ -11882,16 +12072,18 @@ msgstr "" msgid "" "Unable to install module \"%s\" because an external dependency is not met: %s" msgstr "" +"Imposible instalar el módulo \"%s\" porqué hay una dependencia externa no " +"resuelta: %s" #. module: base #: view:ir.module.module:0 msgid "Search modules" -msgstr "" +msgstr "Buscar módulos" #. module: base #: model:res.country,name:base.by msgid "Belarus" -msgstr "" +msgstr "Belarus" #. module: base #: field:ir.actions.act_url,name:0 @@ -11899,7 +12091,7 @@ msgstr "" #: field:ir.actions.client,name:0 #: field:ir.actions.server,name:0 msgid "Action Name" -msgstr "" +msgstr "Nombre de acción" #. module: base #: model:ir.actions.act_window,help:base.action_res_users @@ -11909,16 +12101,20 @@ msgid "" "not connect to the system. You can assign them groups in order to give them " "specific access to the applications they need to use in the system." msgstr "" +"Cree y gestione los usuarios que accederán al sistema. Los usuarios pueden " +"ser desactivados si durante un periodo de tiempo no deberían acceder al " +"sistema. Puede asignarles grupos con el fin de darles acceso a las " +"aplicaciones que necesiten usar en el sistema." #. module: base #: selection:res.request,priority:0 msgid "Normal" -msgstr "" +msgstr "Normal" #. module: base #: model:ir.module.module,shortdesc:base.module_purchase_double_validation msgid "Double Validation on Purchases" -msgstr "" +msgstr "Doble validación en compras" #. module: base #: field:res.bank,street2:0 @@ -11926,18 +12122,18 @@ msgstr "" #: field:res.partner,street2:0 #: field:res.partner.address,street2:0 msgid "Street2" -msgstr "" +msgstr "Calle2" #. module: base #: model:ir.actions.act_window,name:base.action_view_base_module_update msgid "Module Update" -msgstr "" +msgstr "Actualizar módulo" #. module: base #: code:addons/base/module/wizard/base_module_upgrade.py:85 #, python-format msgid "Following modules are not installed or unknown: %s" -msgstr "" +msgstr "Los siguientes módulos no están instalados o son desconocidos: %s" #. module: base #: model:ir.module.module,description:base.module_auth_oauth_signup @@ -11946,6 +12142,9 @@ msgid "" "Allow users to sign up through OAuth2 Provider.\n" "===============================================\n" msgstr "" +"\n" +"Permite a los usuarios conectarse a través de un proveedor OAuth2.\n" +"=================================================================\n" #. module: base #: view:ir.cron:0 @@ -11957,62 +12156,62 @@ msgstr "" #: model:res.groups,name:base.group_tool_user #: view:res.users:0 msgid "User" -msgstr "" +msgstr "Usuario" #. module: base #: model:res.country,name:base.pr msgid "Puerto Rico" -msgstr "" +msgstr "Puerto Rico" #. module: base #: model:ir.module.module,shortdesc:base.module_web_tests_demo msgid "Demonstration of web/javascript tests" -msgstr "" +msgstr "Demostración de Web/javascript prueba" #. module: base #: field:workflow.transition,signal:0 msgid "Signal (Button Name)" -msgstr "" +msgstr "Señal (Nombre del Botón)" #. module: base #: view:ir.actions.act_window:0 msgid "Open Window" -msgstr "" +msgstr "Abrir ventana" #. module: base #: field:ir.actions.act_window,auto_search:0 msgid "Auto Search" -msgstr "" +msgstr "Auto búsqueda" #. module: base #: field:ir.actions.act_window,filter:0 msgid "Filter" -msgstr "" +msgstr "Filtro" #. module: base #: model:res.country,name:base.ch msgid "Switzerland" -msgstr "" +msgstr "Switzerland" #. module: base #: model:res.country,name:base.gd msgid "Grenada" -msgstr "" +msgstr "Granada" #. module: base #: help:res.partner,customer:0 msgid "Check this box if this contact is a customer." -msgstr "" +msgstr "Marque esta casilla si este contacto es un cliente." #. module: base #: view:ir.actions.server:0 msgid "Trigger Configuration" -msgstr "" +msgstr "Configuración del disparador" #. module: base #: view:base.language.install:0 msgid "Load" -msgstr "" +msgstr "Cargar" #. module: base #: model:ir.module.module,description:base.module_warning @@ -12026,56 +12225,64 @@ msgid "" "picking and invoice. The message is triggered by the form's onchange event.\n" " " msgstr "" +"\n" +"Módulo que lanza avisos en los objetos de OpenERP.\n" +"=========================================\n" +"\n" +"Se pueden mostrar mensajes de aviso para objetos tales como pedidos de " +"venta, pedidos de compra y facturas. El mensaje es lanzado por el evento " +"onchange del formulario.\n" +" " #. module: base #: field:res.users,partner_id:0 msgid "Related Partner" -msgstr "" +msgstr "Empresa relacionada" #. module: base #: code:addons/osv.py:151 #: code:addons/osv.py:153 #, python-format msgid "Integrity Error" -msgstr "" +msgstr "Error de integridad" #. module: base #: model:ir.model,name:base.model_workflow msgid "workflow" -msgstr "" +msgstr "flujo de trabajo" #. module: base #: code:addons/base/ir/ir_model.py:291 #, python-format msgid "Size of the field can never be less than 1 !" -msgstr "" +msgstr "¡El tamaño del campo nunca puede ser menor que 1!" #. module: base #: model:ir.module.module,shortdesc:base.module_mrp_operations msgid "Manufacturing Operations" -msgstr "" +msgstr "Operaciones de producción" #. module: base #: view:base.language.export:0 msgid "Here is the exported translation file:" -msgstr "" +msgstr "Aquí esta el archivo de traducción exportado:" #. module: base #: field:ir.actions.report.xml,report_rml_content:0 #: field:ir.actions.report.xml,report_rml_content_data:0 msgid "RML Content" -msgstr "" +msgstr "Contenido RML" #. module: base #: view:res.lang:0 msgid "Update Terms" -msgstr "" +msgstr "Actualizar Terminos" #. module: base #: field:res.request,act_to:0 #: field:res.request.history,act_to:0 msgid "To" -msgstr "" +msgstr "A" #. module: base #: model:ir.module.module,shortdesc:base.module_hr diff --git a/openerp/addons/base/i18n/hu.po b/openerp/addons/base/i18n/hu.po index 26873822523..5b5d48f8905 100644 --- a/openerp/addons/base/i18n/hu.po +++ b/openerp/addons/base/i18n/hu.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-03 16:01+0000\n" -"PO-Revision-Date: 2012-11-28 12:43+0000\n" -"Last-Translator: Juhász Krisztián \n" +"PO-Revision-Date: 2012-12-11 21:56+0000\n" +"Last-Translator: krnkris \n" "Language-Team: Hungarian \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:56+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:38+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing @@ -24,6 +24,10 @@ msgid "" "================================================\n" " " msgstr "" +"\n" +"Modul az írás ellenőrzéshez és a nyomtatás ellenőrzéshez.\n" +"================================================\n" +" " #. module: base #: model:res.country,name:base.sh @@ -59,7 +63,7 @@ msgstr "Architektúra Nézet" #. module: base #: model:ir.module.module,summary:base.module_sale_stock msgid "Quotation, Sale Orders, Delivery & Invoicing Control" -msgstr "" +msgstr "Árajánlat, megrendelések, Szállítás & számlázás ellenőrzés" #. module: base #: selection:ir.sequence,implementation:0 @@ -88,12 +92,12 @@ msgstr "" #. module: base #: model:ir.module.module,summary:base.module_point_of_sale msgid "Touchscreen Interface for Shops" -msgstr "" +msgstr "Érintőképernyős intefész az üzletekhez" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_in_hr_payroll msgid "Indian Payroll" -msgstr "" +msgstr "Indiai bérszámfejtés" #. module: base #: help:ir.cron,model:0 @@ -121,11 +125,22 @@ msgid "" " * Product Attributes\n" " " msgstr "" +"\n" +"Egy modul ami gyártókat és jellemzőket ad a termék osztályokhoz.\n" +"====================================================================\n" +"\n" +"Ezeket a meghatározásokat tudja hozzáadni egy termékhez:\n" +"-----------------------------------------------\n" +" * Gyártó\n" +" * Gyártó általi termék megnevezése\n" +" * Gyártó termék száma\n" +" * Termék jellemzők\n" +" " #. module: base #: field:ir.actions.client,params:0 msgid "Supplementary arguments" -msgstr "" +msgstr "Kiegészítő jellemzők" #. module: base #: model:ir.module.module,description:base.module_google_base_account @@ -134,11 +149,14 @@ msgid "" "The module adds google user in res user.\n" "========================================\n" msgstr "" +"\n" +"A modul hozzáadja a google felhasználót a felhasználó részletekhez.\n" +"========================================\n" #. module: base #: help:res.partner,employee:0 msgid "Check this box if this contact is an Employee." -msgstr "" +msgstr "Pipálja ki ezt a négyzetet ha ez a kapcsolat egy alkalmazott." #. module: base #: help:ir.model.fields,domain:0 @@ -169,7 +187,7 @@ msgstr "Cél Ablak" #. module: base #: field:ir.actions.report.xml,report_rml:0 msgid "Main Report File Path" -msgstr "" +msgstr "Jelentés fájl fő elérési útvonal" #. module: base #: model:ir.module.module,shortdesc:base.module_sale_analytic_plans @@ -190,6 +208,15 @@ msgid "" "revenue\n" "reports." msgstr "" +"\n" +"A kiadásokból, időkimutatás bejegyzésekből generál számlát.\n" +"========================================================\n" +"\n" +"A modul számlát generál a költségek alapján (emberi erőforrás, kiadások, " +"...).\n" +"\n" +"Árlistát generálhat az elemző folyószámlában, egy-két elméleti árbevétel " +"jelentést készíthet." #. module: base #: model:ir.module.module,description:base.module_crm @@ -224,6 +251,35 @@ msgid "" "* Planned Revenue by Stage and User (graph)\n" "* Opportunities by Stage (graph)\n" msgstr "" +"\n" +"Az alapértelemezett OpenERP CRM Ügyfélkapcsolat-kezelés\n" +"=====================================================\n" +"\n" +"Ez az alkalmazás lehetővé teszi egy csoportnak, hogy inteligensen és " +"hatékonyan kezelje a vezetői gyűléseket, lehetőségeket, találkozókat és " +"telefonokat.\n" +"\n" +"Kezeli a kulcsfontosságú munkákat mint kommunikáció, azonosítás, kiosztás, " +"felosztás és értesítés.\n" +"\n" +"OpenERP biztosítja, hogy minden esetben nyomon követhetőek legyenek a " +"felhasználók, vásárlók és beszállítók. Autómatikusan küldhető emlékeztető, " +"kiterjezti az igényt, bekapcsol speciális eszközt és még több cselekvésen " +"alapuló módot, melyet a vállalkozása szabályaira szabhat.\n" +"\n" +"A legnayobb dolog ebben a rendszerben, hgoy a felhasználónak nem kell semmi " +"speciálisat véghezvinnie. A CRM modulnak van egy e-amil átjárója ami " +"szinkronizálja az e-maileket az OpenERP által. Így, a felhasználók e-" +"maileket küldhetnek az igénylés helyére.\n" +"\n" +"OpenERP törődni fog az üzenetek megköszönésével, automatikusan átirányítva a " +"megfelelő osztályhoz, biztosítva a jövőbeni munkafolyamat megfelő helyét.\n" +"\n" +"\n" +"Dashboard / irányítópult a CRM-ben, ezt is beleértve:\n" +"-------------------------------\n" +"* Tervezett bevétel szintek és felhasználók szerint (grafikon)\n" +"* Lehetőségek szintenként (grafikon)\n" #. module: base #: code:addons/base/ir/ir_model.py:397 @@ -266,7 +322,7 @@ msgstr "létrehozva." #. module: base #: field:ir.actions.report.xml,report_xsl:0 msgid "XSL Path" -msgstr "" +msgstr "XSL elérési út" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_tr @@ -292,7 +348,7 @@ msgstr "Inuktitut / ᐃᓄᒃᑎᑐᑦ" #. module: base #: model:res.groups,name:base.group_multi_currency msgid "Multi Currencies" -msgstr "" +msgstr "Többféle deviza" #. module: base #: model:ir.module.module,description:base.module_l10n_cl @@ -304,6 +360,14 @@ msgid "" "\n" " " msgstr "" +"\n" +"Chilei könyvelési modul\n" +"\n" +"Chilean accounting chart and tax localization.\n" +"==============================================\n" +"Plan contable chileno e impuestos de acuerdo a disposiciones vigentes\n" +"\n" +" " #. module: base #: model:ir.module.module,shortdesc:base.module_sale @@ -316,6 +380,7 @@ msgid "" "The internal user that is in charge of communicating with this contact if " "any." msgstr "" +"A belső felhasználó, ha van kijelölve, aki a megbízott ehhez a kapcsolathoz." #. module: base #: view:res.partner:0 @@ -350,6 +415,15 @@ msgid "" " * Commitment Date\n" " * Effective Date\n" msgstr "" +"\n" +"A rendeléshez további dátum információ hozzáadása.\n" +"===================================================\n" +"\n" +"Ezeket a dátum kiegészítéseket adhatja hozzá a rendeléshez:\n" +"-----------------------------------------------------------\n" +" * Igényelt / kért dátum\n" +" * Vállalási dátum\n" +" * Tényleges dátum\n" #. module: base #: help:ir.actions.act_window,res_id:0 @@ -357,6 +431,8 @@ msgid "" "Database ID of record to open in form view, when ``view_mode`` is set to " "'form' only" msgstr "" +"A rekord adatbázis azonosítója ID a forma nézet megnyitásához, ha " +"``view_mode`` csak a 'form' beállításra állítva" #. module: base #: field:res.partner.address,name:0 @@ -407,6 +483,13 @@ msgid "" "document and Wiki based Hidden.\n" " " msgstr "" +"\n" +"Telepítő az elrejtett tudás-bázishoz.\n" +"=====================================\n" +"\n" +"A tudás bázis alkalmazás beállítójának eléréséhez, ahonnan telepíteni tud \n" +"dokumentumokat és Wiki alapokat rejtetten.\n" +" " #. module: base #: model:ir.module.category,name:base.module_category_customer_relationship_management @@ -425,6 +508,14 @@ msgid "" "invoices from picking, OpenERP is able to add and compute the shipping " "line.\n" msgstr "" +"\n" +"Kiválasztásokhoz és megrendelésekhez tud szállítási módokat hozzáadni.\n" +"==============================================================\n" +"\n" +"Meg tud határozni saját szállítót és szállítási hálózatot az árakhoz. " +"Kiválasztásból számla\n" +"létrehozásánál, OpenERP lehetővé válik a szállítási folyamat hozzáadásához " +"és számolásához is.\n" #. module: base #: code:addons/base/ir/ir_filters.py:83 @@ -433,6 +524,8 @@ msgid "" "There is already a shared filter set as default for %(model)s, delete or " "change it before setting a new default" msgstr "" +"Már be van állítva alapértelmezett megosztott szűrő ehhez %(model)s, törölje " +"vagy változtassa meg mielőtt új alapértelmezettet állít be" #. module: base #: code:addons/orm.py:2648 @@ -530,12 +623,12 @@ msgstr "" #. module: base #: field:ir.model.relation,name:0 msgid "Relation Name" -msgstr "" +msgstr "Összefüggés neve" #. module: base #: view:ir.rule:0 msgid "Create Access Right" -msgstr "" +msgstr "Hozzáférési jogok létrehozása" #. module: base #: model:res.country,name:base.tv @@ -575,7 +668,7 @@ msgstr "" #. module: base #: view:workflow.transition:0 msgid "Workflow Transition" -msgstr "" +msgstr "Munkafolyamat átmenet" #. module: base #: model:res.country,name:base.gf @@ -585,7 +678,7 @@ msgstr "Francia Guyana" #. module: base #: model:ir.module.module,summary:base.module_hr msgid "Jobs, Departments, Employees Details" -msgstr "" +msgstr "Feladatok, Osztályo, Munkavállalók részletei" #. module: base #: model:ir.module.module,description:base.module_analytic @@ -601,6 +694,16 @@ msgid "" "that have no counterpart in the general financial accounts.\n" " " msgstr "" +"\n" +"Modul a könyvelés elemző objektum megállapítására.\n" +"===============================================\n" +"\n" +"Az OpenERP, könyvelés elemző hozzá van csatolva a főkönyvi könyvitelhez, de " +"teljesen külön\n" +"kezelt. így, be tud vinni több elemzési értéket és működést ami nincs " +"befolyással az\n" +"egységes főkönyvi számlákra.\n" +" " #. module: base #: field:ir.ui.view.custom,ref_id:0 @@ -624,6 +727,18 @@ msgid "" "* Use emails to automatically confirm and send acknowledgements for any " "event registration\n" msgstr "" +"\n" +"Az események szervezése és menedzselése.\n" +"======================================\n" +"\n" +"Ezzel a modullal hatékonyan átütemezést készíthet az eseményekhez és hozzá " +"kapcsolódó munkákhoz: tervezés, regisztrácó nyomkövetése, részvételek, stb.\n" +"\n" +"Fő jellemvonások\n" +"------------\n" +"* Események és jelentkezések szervezése\n" +"* E-mail használata az automata visszaigazoláshoz és bármely eseményre való " +"jelentkezés nyugtázására\n" #. module: base #: selection:base.language.install,lang:0 @@ -649,6 +764,20 @@ msgid "" "requested it.\n" " " msgstr "" +"\n" +"Automata fordítás a Gengo API keresztül\n" +"----------------------------------------\n" +"\n" +"Ez a modul telepíti a passzív ütemtervet az automata fordításhoz \n" +"a Gengo API használatával. Aktiváláshoz, el kell végeznie\n" +"1) A Gengo hitelesítő paraméterek beállítását a `Beállítások > Vállalatok > " +"Gengo Paraméterek`\n" +"2) Elindítani a varázslót a `Beállítások > Alkalmazás Feltételek > Gengo: " +"Fordítás igénylése kézzel` és követni a varázsló utasításait.\n" +"\n" +"Ez a varázsló elindítja a CRON munkát és az ütemtervet és elindítja a Gengo " +"szolgáltatás automata fordítóját a megadott és igényelt feltételek szerint.\n" +" " #. module: base #: help:ir.actions.report.xml,attachment_use:0 @@ -698,7 +827,7 @@ msgstr "Kolumbia" #. module: base #: model:res.partner.title,name:base.res_partner_title_mister msgid "Mister" -msgstr "" +msgstr "Úr" #. module: base #: help:res.country,code:0 @@ -801,6 +930,33 @@ msgid "" "module named account_voucher.\n" " " msgstr "" +"\n" +"Könyvelési és pénzügyi számvitel.\n" +"====================================\n" +"\n" +"Pénzügyi és könyvelési modul ami tartalmazza:\n" +"--------------------------------------------\n" +" * Általános könyvelés\n" +" * Költség/Analízis számvitel\n" +" * Külsős könyvelés\n" +" * Adó kezelés\n" +" * Költségvetés\n" +" * Vevők és beszállítók számlái\n" +" * Banki kivonatok\n" +" * Partnerek egyeztetése\n" +"\n" +"Létrehoz a könyveléshez egy műszerfalat ami tartalmazza:\n" +"--------------------------------------------------\n" +" * Vevők számláinak jóváhagyás listáját\n" +" * Válalkozás analízist\n" +" * Grafikon az értékekről\n" +"\n" +"A főkönyvi kivonat átdolgozási folyamata végre lesz hajtva a megadott " +"pénzügyi jelentés alapján (sor mozgatások vagy csoportosítások a napló " +"alapján lesznek átdolgozva) \n" +"a pénzügyi évre vonatkozólag és elő lehet készíteni bizonylatot egy másik " +"modulla amit úgy hívnak, hogy account_voucher.\n" +" " #. module: base #: view:ir.model:0 @@ -820,6 +976,16 @@ msgid "" "

\n" " " msgstr "" +"

\n" +" Kattintson a kapcsolat címtárba való hozzáadásához.\n" +"

\n" +" OpenERP segít könnyen követhetővé tenni az ügyfélhez tartozó " +"tevékenység\n" +" nyomonkövetéséhez: megbeszélések, üzleti lehetőségek " +"története,\n" +" dokumentumok, stb.\n" +"

\n" +" " #. module: base #: model:ir.module.module,description:base.module_web_linkedin @@ -830,6 +996,11 @@ msgid "" "This module provides the Integration of the LinkedIn with OpenERP.\n" " " msgstr "" +"\n" +"OpenERP Web LinkedIn modul.\n" +"============================\n" +"Ez a modul integrálja a LinkedIn weboldal tartalmát a z OpebERPhez.\n" +" " #. module: base #: help:ir.actions.act_window,src_model:0 @@ -877,7 +1048,7 @@ msgstr "Romania - Könyvelés" #. module: base #: model:ir.model,name:base.model_res_config_settings msgid "res.config.settings" -msgstr "" +msgstr "res.config.settings" #. module: base #: help:res.partner,image_small:0 @@ -1013,7 +1184,7 @@ msgstr "Email preferencia" #: code:addons/base/ir/ir_fields.py:196 #, python-format msgid "'%s' does not seem to be a valid date for field '%%(field)s'" -msgstr "" +msgstr "'%s' nem érvényes dátumnak néz ki a mezőhöz '%%(field)s'" #. module: base #: view:res.partner:0 @@ -1090,6 +1261,13 @@ msgid "" "actions(Sign in/Sign out) performed by them.\n" " " msgstr "" +"\n" +"Ez a modul a munkaerő részvételének nyilvántartására szolgál.\n" +"==================================================\n" +"\n" +"A részvételeket tartja sorban a felhasználói cselekvés cselekvés alapján " +"(Belépés / Kilépés).\n" +" " #. module: base #: model:res.country,name:base.nu @@ -1162,7 +1340,7 @@ msgstr "Andorrai Hercegség" #. module: base #: field:ir.rule,perm_read:0 msgid "Apply for Read" -msgstr "" +msgstr "Olvasáshoz érvényesít" #. module: base #: model:res.country,name:base.mn @@ -1192,7 +1370,7 @@ msgstr "" #: code:addons/base/ir/ir_model.py:727 #, python-format msgid "Document model" -msgstr "" +msgstr "Dokumentum model" #. module: base #: view:res.lang:0 @@ -1242,12 +1420,12 @@ msgstr "Az ország nevének egyedinek kell lennie!" #. module: base #: field:ir.module.module,installed_version:0 msgid "Latest Version" -msgstr "" +msgstr "Legfrissebb verzió" #. module: base #: view:ir.rule:0 msgid "Delete Access Right" -msgstr "" +msgstr "Hozzáférési jog törlése" #. module: base #: code:addons/base/ir/ir_mail_server.py:213 @@ -1274,7 +1452,7 @@ msgstr "Kajmán-szigetek" #. module: base #: view:ir.rule:0 msgid "Record Rule" -msgstr "" +msgstr "Szabály rögzítése" #. module: base #: model:res.country,name:base.kr @@ -1302,7 +1480,7 @@ msgstr "Közreműködők" #. module: base #: field:ir.rule,perm_unlink:0 msgid "Apply for Delete" -msgstr "" +msgstr "Adatbázishoz érvényesít" #. module: base #: selection:ir.property,type:0 @@ -1312,12 +1490,12 @@ msgstr "Karakter" #. module: base #: field:ir.module.category,visible:0 msgid "Visible" -msgstr "" +msgstr "Látható" #. module: base #: model:ir.actions.client,name:base.action_client_base_menu msgid "Open Settings Menu" -msgstr "" +msgstr "Beállítási menü megnyitása" #. module: base #: selection:base.language.install,lang:0 @@ -1377,6 +1555,10 @@ msgid "" " for uploading to OpenERP's translation " "platform," msgstr "" +"TGZ formátum: ez egy összecsomagolt archívum egy PO fájl-al, direkt " +"feltölthető az \n" +" " +" OpenERP fordítási részéhez," #. module: base #: view:res.lang:0 @@ -1402,7 +1584,7 @@ msgstr "Teszts" #. module: base #: field:ir.actions.report.xml,attachment:0 msgid "Save as Attachment Prefix" -msgstr "" +msgstr "Mentés mint melléklet címjelzés" #. module: base #: field:ir.ui.view_sc,res_id:0 @@ -1439,7 +1621,7 @@ msgstr "Haiti" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_fr_hr_payroll msgid "French Payroll" -msgstr "" +msgstr "Francia fizetési szabály" #. module: base #: view:ir.ui.view:0 @@ -1539,6 +1721,16 @@ msgid "" "with a single statement.\n" " " msgstr "" +"\n" +"Ez a modul telepíti az alapokat az IBAN (International Bank Account Number - " +"Nemzetközi bankszámlaszám ) bank számlaszámokhoz és azok érvényességének " +"ellenőrzéséhez.\n" +"=============================================================================" +"=========================================\n" +"\n" +"Lehetővé teszi egy egyszerű jelentéssel a helyi számlaszámok rendes IBAN " +"szám szerinti kiemelését.\n" +" " #. module: base #: view:ir.module.module:0 @@ -1591,7 +1783,7 @@ msgstr "" #. module: base #: model:res.country,name:base.mf msgid "Saint Martin (French part)" -msgstr "" +msgstr "Saint Martin (francia oldal)" #. module: base #: model:ir.model,name:base.model_ir_exports @@ -1608,7 +1800,7 @@ msgstr "Nem létezik nyelv a \"%s\" kóddal" #: model:ir.module.category,name:base.module_category_social_network #: model:ir.module.module,shortdesc:base.module_mail msgid "Social Network" -msgstr "" +msgstr "Közösségi hálózat" #. module: base #: view:res.lang:0 @@ -1618,12 +1810,12 @@ msgstr "%Y - Év évszázaddal" #. module: base #: view:res.company:0 msgid "Report Footer Configuration" -msgstr "" +msgstr "Jelentés lábjegyzet beállítás" #. module: base #: field:ir.translation,comments:0 msgid "Translation comments" -msgstr "" +msgstr "Fordítási megjegyzések" #. module: base #: model:ir.module.module,description:base.module_lunch @@ -1649,6 +1841,27 @@ msgid "" "in their pockets, this module is essential.\n" " " msgstr "" +"\n" +"Az ebéd szervezésének alap modulja.\n" +"================================\n" +"\n" +"Több vállalkozás szokott rendelni szendvicset, pizzás és ételt, megszokott " +"beszállítóktól, a munkások, személyzet részére, hogy megkönnyítse és " +"szélesebbkörű választékot biztosítson az étkezésre. \n" +"\n" +"Azonban az ebéd beszerzéshez a vállalatnak pontos adminisztrációra van " +"szüksége, főként akkor, ha sok munkavállalója vagy sokféle a beszállító.\n" +"\n" +"Az \"ebéd rendelés\" modul lett létrehozva ennek a könnyebb felügyeletére és " +"a munkavállalóknak több lehetőséget és eszközt biztosítva. \n" +"\n" +"A teljes étkezési és beszerzési kezelésen túlmenően ez a modul lehetőséget " +"ajánl a képernyőn figyelemfelhívásra és gyors megrendelés kiválasztásra a " +"felhasználók által bevitt adatok alapján.\n" +"\n" +"Ha időt akar megtakarítani a személyzet, munkások részére és nem akarja, " +"hogy mindíg aprópénzt hordjanak a zsebükbe, akkor ez a modul hasznos lehet.\n" +" " #. module: base #: view:wizard.ir.model.menu.create:0 @@ -1686,7 +1899,7 @@ msgstr "" #. module: base #: help:res.partner,website:0 msgid "Website of Partner or Company" -msgstr "" +msgstr "Partner vagy cég weboldala" #. module: base #: help:base.language.install,overwrite:0 @@ -1732,7 +1945,7 @@ msgstr "" #. module: base #: model:ir.module.module,summary:base.module_sale msgid "Quotations, Sale Orders, Invoicing" -msgstr "" +msgstr "Árajánlat, Megrendelés, Számlázás" #. module: base #: field:res.users,login:0 @@ -1771,11 +1984,15 @@ msgid "" "Launch Manually Once: after having been launched manually, it sets " "automatically to Done." msgstr "" +"Kézi: Kézzel indított.\n" +"Automatikus: Mundíg futtatva lesz a rendszer újrakonfigurálásakkor.\n" +"Egyszeri kézi futtatás: Miután kézzel futtatva lett, át lesz állítva " +"autómatikusan elvégzett állapotra." #. module: base #: field:res.partner,image_small:0 msgid "Small-sized image" -msgstr "" +msgstr "Kis méretű ábra" #. module: base #: model:ir.module.module,shortdesc:base.module_stock @@ -1838,6 +2055,15 @@ msgid "" "Please keep in mind that you should review and adapt it with your " "Accountant, before using it in a live Environment.\n" msgstr "" +"\n" +"Ez a modul az osztrák alap könyvelési beállításhoz kell\n" +"\n" +"This module provides the standard Accounting Chart for Austria which is " +"based on the Template from BMF.gv.at.\n" +"=============================================================================" +"================================ \n" +"Please keep in mind that you should review and adapt it with your " +"Accountant, before using it in a live Environment.\n" #. module: base #: model:res.country,name:base.kg @@ -1856,6 +2082,14 @@ msgid "" "It assigns manager and user access rights to the Administrator and only user " "rights to the Demo user. \n" msgstr "" +"\n" +"Könyvelési hozzáférési jogosultságok\n" +"========================\n" +"Az admin felhasználónak teljes hozzáférést biztosít a könyvelési " +"tulajdonságokhoz mint naplótási tételek és a főkönyvi kivonatok.\n" +"\n" +"Kioszthatók vele a kezelési és felhasználói hozzáférési jogosultságok az " +"admin részére, valamint felhasználói jogok a Demo felhasználó részére. \n" #. module: base #: field:ir.attachment,res_id:0 @@ -1883,6 +2117,7 @@ msgstr "" #, python-format msgid "Unknown value '%s' for boolean field '%%(field)s', assuming '%s'" msgstr "" +"Nem értelmezhető érték '%s' a boolean mezőhöz '%%(field)s', feltételezve '%s'" #. module: base #: model:res.country,name:base.nl @@ -1897,7 +2132,7 @@ msgstr "" #. module: base #: selection:ir.translation,state:0 msgid "Translation in Progress" -msgstr "" +msgstr "Fordítás alatt" #. module: base #: model:ir.model,name:base.model_ir_rule @@ -1912,7 +2147,7 @@ msgstr "Napok" #. module: base #: model:ir.module.module,summary:base.module_fleet msgid "Vehicle, leasing, insurances, costs" -msgstr "" +msgstr "Gépjármű, lízing, biztosítás, költség" #. module: base #: view:ir.model.access:0 @@ -2143,7 +2378,7 @@ msgstr "Teljes elérés" #. module: base #: view:base.language.export:0 msgid "The next step depends on the file format:" -msgstr "" +msgstr "A következő lépés a fájl formátumától függ:" #. module: base #: model:ir.module.module,shortdesc:base.module_idea @@ -2163,7 +2398,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) formátum: Szerkeszteni egy PO szerkesztővel lehez mint" #. module: base #: model:ir.ui.menu,name:base.menu_administration @@ -2187,7 +2422,7 @@ msgstr "Létrehozás / Írás / Másolás" #. module: base #: view:ir.sequence:0 msgid "Second: %(sec)s" -msgstr "" +msgstr "Másodperc: %(sec)s" #. module: base #: field:ir.actions.act_window,view_mode:0 @@ -2216,7 +2451,7 @@ msgstr "Koreai (KP)" #. module: base #: model:res.country,name:base.ax msgid "Åland Islands" -msgstr "" +msgstr "Åland szigetek" #. module: base #: field:res.company,logo:0 @@ -2257,7 +2492,7 @@ msgstr "" #. module: base #: model:ir.module.category,name:base.module_category_tools msgid "Extra Tools" -msgstr "" +msgstr "További eszközök" #. module: base #: view:ir.attachment:0 @@ -2412,6 +2647,36 @@ msgid "" "\n" " " msgstr "" +"\n" +" \n" +"Belga lokalizáció a bejövő és kimenő számlákhoz\n" +" \n" +"Belgian localization for in- and 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 @@ -2498,6 +2763,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 "" +"Nézet típus: Fa típus a fa nézethez, állítsa 'fa' értékre a rangsoros fa " +"nézethez, vagy 'forma' értékre az általános nézethez" #. module: base #: sql_constraint:ir.ui.view_sc:0 @@ -2550,6 +2817,28 @@ msgid "" "Print product labels with barcode.\n" " " msgstr "" +"\n" +"Ez az OpenERP alap modulja a termékek és árlisták kezeléséhez.\n" +"========================================================================\n" +"\n" +"Termékek támogatása veriációk, különböző beárazási eszközök, beszállítói " +"információk,\n" +"raktárkészlet/megrendelés elkészítés, különböző mértékegységek, csomagolás " +"és tulajdonságok.\n" +"\n" +"Árlista támogatás:\n" +"-------------------\n" +" * Több-szintű árengedmény (termékenként, kategóriánként, mennyiségekre)\n" +" * Ár számítása különböző feltételek alapján:\n" +" * Másik árlista\n" +" * Költség ár\n" +" * Lista ár\n" +" * Beszállítói árlista\n" +"\n" +"Árlista kedvezmény termékekként és/vagy partnerekként.\n" +"\n" +"Bárkódos termék cimke nyomtatása.\n" +" " #. module: base #: model:ir.module.module,description:base.module_account_analytic_default @@ -2567,6 +2856,18 @@ msgid "" " * Date\n" " " msgstr "" +"\n" +"Analitikai számla alap értékeinek beállítása.\n" +"==============================================\n" +"\n" +"Autómatikus analitika számlák kiválasztása a következő kritériumok alapján:\n" +"---------------------------------------------------------------------\n" +" * Termék\n" +" * Partner\n" +" * Felhasználó\n" +" * Válalkozás\n" +" * Dátum\n" +" " #. module: base #: field:res.company,rml_header1:0 @@ -2595,7 +2896,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_auth_oauth_signup msgid "Signup with OAuth2 Authentication" -msgstr "" +msgstr "OAuth2 hitelesítéssel való belépés" #. module: base #: selection:ir.model,state:0 @@ -2622,7 +2923,7 @@ msgstr "Görög / Ελληνικά" #. module: base #: field:res.company,custom_footer:0 msgid "Custom Footer" -msgstr "" +msgstr "Egyéni lábjegyzet" #. module: base #: model:ir.module.module,shortdesc:base.module_sale_crm @@ -2656,6 +2957,13 @@ msgid "" "==================================\n" " " msgstr "" +"\n" +"USA könyvelési modul\n" +"\n" +"\n" +"United States - Chart of accounts.\n" +"==================================\n" +" " #. module: base #: field:ir.actions.act_url,target:0 @@ -2690,7 +2998,7 @@ msgstr "Gyorsbillentyű Neve" #. module: base #: field:res.partner,contact_address:0 msgid "Complete Address" -msgstr "" +msgstr "Cím kitöltése" #. module: base #: help:ir.actions.act_window,limit:0 @@ -2776,12 +3084,15 @@ msgid "" "Module to attach a google document to any model.\n" "================================================\n" msgstr "" +"\n" +"Modul a google dokumentumok bármely modellhez való hozzáadásához.\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 "Több találatot talált a mezőhöz '%%(field)s' (%d találatok)" #. module: base #: selection:base.language.install,lang:0 @@ -2800,6 +3111,16 @@ msgid "" "\n" " " msgstr "" +"\n" +"Perui könyvelési modul\n" +"\n" +"Peruvian accounting chart and tax localization. According the PCGE 2010.\n" +"========================================================================\n" +"\n" +"Plan contable peruano e impuestos de acuerdo a disposiciones vigentes de la\n" +"SUNAT 2011 (PCGE 2010).\n" +"\n" +" " #. module: base #: view:ir.actions.server:0 @@ -2815,7 +3136,7 @@ msgstr "Érvelés elküldve az ügyfél részére a nézet hozzáfüzéssel egy #. module: base #: model:ir.module.module,summary:base.module_contacts msgid "Contacts, People and Companies" -msgstr "" +msgstr "Kapcsolatok, Emberek és Vállalatok" #. module: base #: model:res.country,name:base.tt @@ -2848,7 +3169,7 @@ msgstr "Igazgató" #: code:addons/base/ir/ir_model.py:718 #, python-format msgid "Sorry, you are not allowed to access this document." -msgstr "" +msgstr "Bocsánat, nincs jogosultsága ehhez a dokumentumhoz." #. module: base #: model:res.country,name:base.py @@ -2863,7 +3184,7 @@ msgstr "Fidzsi" #. module: base #: view:ir.actions.report.xml:0 msgid "Report Xml" -msgstr "" +msgstr "Report Xml" #. module: base #: model:ir.module.module,description:base.module_purchase @@ -2892,6 +3213,30 @@ msgid "" "* Purchase Analysis\n" " " msgstr "" +"\n" +"A vevői megrendelések termék igényeinek könnyű kezeléséhez\n" +"==================================================\n" +"\n" +"Vásárlói kezelés lehetővé teszi a beszállítók árajánlatainak nyomon " +"követését és vásárlói megrendeléssé való átalakítását ha szükséges.\n" +"OpenERP rendelkezik egy pár lehetőséggel a számlák figyelésére és a " +"megrendelt áruk vevő általi átvételének nyomon követésére. Rész-" +"szállításokat is tud kezelni az OpenERP, így nyomon követheti azokat a " +"termékeket, melyeket még ki kell szálítani a megrendelés szerint, ehhez " +"automatikusan tud hozzárendelni emlékeztetőt.\n" +"\n" +"OpenERP alkatrész kezelés szabálya megengedi a rendszernek, hogy sablonból " +"rendelést generáljon autómatikusan, vagy beállíthatja, hogy az egészet a " +"termelés tényleges igénynek megfelelően folyamat vezérléssel hajtsa végre.\n" +"\n" +"Dashboard / Műszerfal a beszerzés kezelés jelentés ezt tartalmazza:\n" +"---------------------------------------------------------\n" +"* Árajánlat kérések\n" +"* Jóváhagyásra váró megrendelések \n" +"* Kategória szerinti megrendelések havi bontásban\n" +"* Beérkezés analízis\n" +"* Megrendelés analízis\n" +" " #. module: base #: model:ir.model,name:base.model_ir_actions_act_window_close @@ -2924,6 +3269,18 @@ msgid "" " * Unlimited \"Group By\" levels (not stacked), two cross level analysis " "(stacked)\n" msgstr "" +"\n" +"Web kliens grafikon néztek.\n" +"===========================\n" +"\n" +" * Elemzés nézeben de dinamikusan változtatható a bemutató\n" +" * Grafikon típusok: lapos, vonalas, területi, oszlopos, radar\n" +" * Öszerakott/Különálló a területekre és az oszlopokra\n" +" * Feliratok: felül, belül (fent/balra), nem látható\n" +" * Tulajdonság: letölthető formátumok PNG vagy CSV, adat háló böngészése, " +"megjelenítés elforgatása\n" +" * Határtalan \"Csoportonkénti\" szintek (különálló), két kereszt szintű " +"analízis (öszerakott)\n" #. module: base #: view:res.groups:0 @@ -2959,12 +3316,28 @@ msgid "" " * Salary Maj, ONSS, Withholding Tax, Child Allowance, ...\n" " " msgstr "" +"\n" +"Belga fizetési modul\n" +"\n" +"Belgian Payroll Rules.\n" +"======================\n" +"\n" +" * Employee Details\n" +" * Employee Contracts\n" +" * Passport based Contract\n" +" * Allowances/Deductions\n" +" * Allow to configure Basic/Gross/Net Salary\n" +" * Employee Payslip\n" +" * Monthly Payroll Register\n" +" * Integrated with Holiday Management\n" +" * Salary Maj, ONSS, Withholding Tax, Child Allowance, ...\n" +" " #. module: base #: 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' úgy tűnik nem egész szám ehhez a mezőhöz '%%(field)s'" #. module: base #: model:ir.module.category,description:base.module_category_report_designer @@ -3002,6 +3375,27 @@ msgid "" "purchase price and fixed product standard price are booked on a separate \n" "account." msgstr "" +"\n" +"Ez a modul támogatja az Anglo-Saxon /angol-amerikai/ könyvelési módszert a " +"könyvelés logikáját megváltoztatva a tőzsde tranzakciókra.\n" +"=============================================================================" +"========================================\n" +"\n" +"Az eltérés az Anglo-Saxon könyvelési országok és a Rhine \n" +"(vagy a kontinentális/Európai könyvelési) országok közt az, hogy a " +"költségnél az eladott árukkal számol\n" +"ellenben a költségek az eladások utánnal. Az Anglo-Saxons könyvelés akkor " +"veszi aköltséget\n" +"amikor kiállította a számlát, az Európai könyvelés akkor veszi a költséget\n" +"amikor az árut szállításba adja.\n" +"\n" +"Ez a modul feladatod ad egy időközi számlának, hogy elraktározza\n" +"a kiszállított áru értékét ami visszakönyveli ennek az időközi\n" +"számlának az értékét a számla kiállításakor az adós/tartozás vagy a " +"hitelezési\n" +"számlára. Másodsorban, a tényleges vételi ár és\n" +"az állandó termék általános ára közti árkülönbözetet lefoglalja egy\n" +"elkülönített számlán." #. module: base #: model:res.country,name:base.si @@ -3201,7 +3595,7 @@ msgstr "Ismeretlen jelentés tipus: %s" #. module: base #: model:ir.module.module,summary:base.module_hr_expense msgid "Expenses Validation, Invoicing" -msgstr "" +msgstr "Kiadások érvényesítése, Számlázás" #. module: base #: model:ir.module.module,description:base.module_l10n_be_hr_payroll_account @@ -3211,6 +3605,12 @@ msgid "" "==========================================\n" " " msgstr "" +"\n" +"Belga bérszámfejtés könyvelési adatok\n" +"\n" +"Accounting Data for Belgian Payroll Rules.\n" +"==========================================\n" +" " #. module: base #: model:res.country,name:base.am @@ -3260,6 +3660,31 @@ msgid "" " payslip interface, but not in the payslip report\n" " " msgstr "" +"\n" +"Francia bérszámfejtés könyvelési adatok\n" +"\n" +"French Payroll Rules.\n" +"=====================\n" +"\n" +" - Configuration of hr_payroll for French localization\n" +" - All main contributions rules for French payslip, for 'cadre' and 'non-" +"cadre'\n" +" - New payslip report\n" +"\n" +"TODO :\n" +"------\n" +" - Integration with holidays module for deduction and allowance\n" +" - Integration with hr_payroll_account for the automatic " +"account_move_line\n" +" creation from the payslip\n" +" - Continue to integrate the contribution. Only the main contribution " +"are\n" +" currently implemented\n" +" - Remake the report under webkit\n" +" - The payslip.line with appears_in_payslip = False should appears in " +"the\n" +" payslip interface, but not in the payslip report\n" +" " #. module: base #: model:res.country,name:base.se @@ -3297,12 +3722,30 @@ msgid "" " - Yearly Salary by Head and Yearly Salary by Employee Report\n" " " msgstr "" +"\n" +"Indiai bérszámfejtés szabályok\n" +"\n" +"Indian Payroll Salary Rules.\n" +"============================\n" +"\n" +" -Configuration of hr_payroll for India localization\n" +" -All main contributions rules for India payslip.\n" +" * New payslip report\n" +" * Employee Contracts\n" +" * Allow to configure Basic / Gross / Net Salary\n" +" * Employee PaySlip\n" +" * Allowance / Deduction\n" +" * Integrated with Holiday Management\n" +" * Medical Allowance, Travel Allowance, Child Allowance, ...\n" +" - Payroll Advice and Report\n" +" - Yearly Salary by Head and Yearly Salary by Employee Report\n" +" " #. module: base #: code:addons/orm.py:3839 #, python-format msgid "Missing document(s)" -msgstr "" +msgstr "Hiányzó dokumentum(ok)" #. module: base #: model:ir.model,name:base.model_res_partner_bank_type @@ -3317,6 +3760,8 @@ msgid "" "For more details about translating OpenERP in your language, please refer to " "the" msgstr "" +"Az OpenERP saját nyelvére való fordításának további részleteihez, kérem " +"hivatkozzon erre" #. module: base #: field:res.partner,image:0 @@ -3339,7 +3784,7 @@ msgstr "Naptár" #. module: base #: model:ir.module.category,name:base.module_category_knowledge_management msgid "Knowledge" -msgstr "" +msgstr "Tudás" #. module: base #: field:workflow.activity,signal_send:0 @@ -3443,6 +3888,27 @@ msgid "" "database,\n" " but in the servers rootpad like /server/bin/filestore.\n" msgstr "" +"\n" +"Ez egy teljes dokumentum kezelő rendszer.\n" +"==============================================\n" +"\n" +" * Felhasználó hitelesítés\n" +" * Dokumentum indexálás:- .pptx és .docx fájlok nem támogatottak Windows " +"felületen.\n" +" * Dashboard/Műszerfal a dokumentumhoz beleétve:\n" +" * Új fájlok (lista)\n" +" * Fájlok forrás típusa szerint (grafikon)\n" +" * Fájlok partnerek szerint (grafikon)\n" +" * Fájlo terjedelem havi bontásban (grafikon)\n" +"\n" +"FIGYELEM:\n" +"----------\n" +" - Ha ezt a modult telepíti egy működő vállalati rendszerben mely " +"rendelkezik \n" +" adatbázisba mentett PDF fájlokkal, akkor azokat el fogja veszíteni.\n" +" - Ha telepíti ezt a modult, akkor a PDF-ek nem lesznek többet az " +"adatbázisban tárolva,\n" +" hanem a szerveren egy gyökérszerkezetben mint /server/bin/filestore.\n" #. module: base #: help:res.currency,name:0 @@ -3505,7 +3971,7 @@ msgstr "workflow.activity" #. module: base #: view:base.language.export:0 msgid "Export Complete" -msgstr "" +msgstr "Exportálás kész" #. module: base #: help:ir.ui.view_sc,res_id:0 @@ -3534,7 +4000,7 @@ msgstr "Finn / Suomi" #. module: base #: view:ir.config_parameter:0 msgid "System Properties" -msgstr "" +msgstr "Rendszer tulajdonságok" #. module: base #: field:ir.sequence,prefix:0 @@ -3585,12 +4051,12 @@ msgstr "Válasszon egy importálandó modul csomagot (.zip file):" #. module: base #: view:ir.filters:0 msgid "Personal" -msgstr "" +msgstr "Személyes" #. module: base #: field:base.language.export,modules:0 msgid "Modules To Export" -msgstr "" +msgstr "Modulok Exportálása" #. module: base #: model:res.country,name:base.mt @@ -3603,6 +4069,8 @@ msgstr "Málta" msgid "" "Only users with the following access level are currently allowed to do that" msgstr "" +"Csak a következő jogosultsági szintekkel rendelkező felhasználók végezhetik " +"ezt el" #. module: base #: field:ir.actions.server,fields_lines:0 @@ -3693,7 +4161,7 @@ msgstr "Antarktisz" #. module: base #: view:res.partner:0 msgid "Persons" -msgstr "" +msgstr "Személyek" #. module: base #: view:base.language.import:0 @@ -3753,7 +4221,7 @@ msgstr "Különböző szabályok egymás közti kölcsönhatásai" #: field:res.company,rml_footer:0 #: field:res.company,rml_footer_readonly:0 msgid "Report Footer" -msgstr "" +msgstr "Jelentés lábléc" #. module: base #: selection:res.lang,direction:0 @@ -3763,7 +4231,7 @@ msgstr "Jobbról-balra" #. module: base #: model:res.country,name:base.sx msgid "Sint Maarten (Dutch part)" -msgstr "" +msgstr "Sint Maarten (Holland rész))" #. module: base #: view:ir.actions.act_window:0 @@ -3872,7 +4340,7 @@ msgstr "Urdu / اردو" #: code:addons/orm.py:3870 #, python-format msgid "Access Denied" -msgstr "" +msgstr "Hozzáférés megtagadva" #. module: base #: field:res.company,name:0 @@ -3932,11 +4400,23 @@ msgid "" "If you need to manage your meetings, you should install the CRM module.\n" " " msgstr "" +"\n" +"Ez egy teljes naptár rendszer.\n" +"========================================\n" +"\n" +"Támogatja::\n" +"------------\n" +" - A naptári eseményeket\n" +" - Visszatérő eseményeket\n" +"\n" +"Ha rendszerezni akarja a találkozóit, akkor telepíteni kell a \n" +"ügyfélkapcsolat-kezelés (Customer Relationship Management - CRM) modult.\n" +" " #. module: base #: model:res.country,name:base.je msgid "Jersey" -msgstr "" +msgstr "Jersey" #. module: base #: model:ir.module.module,description:base.module_auth_anonymous @@ -3946,6 +4426,10 @@ msgid "" "==================================\n" " " msgstr "" +"\n" +"Névtelen hozzáférés engedélyezése az OpenERP-hez.\n" +"==================================\n" +" " #. module: base #: view:res.lang:0 @@ -3965,7 +4449,7 @@ msgstr "%x - Pontos dátum." #. module: base #: view:res.partner:0 msgid "Tag" -msgstr "" +msgstr "Címke" #. module: base #: view:res.lang:0 @@ -3990,7 +4474,7 @@ msgstr "Mindent leállít" #. module: base #: field:res.company,paper_format:0 msgid "Paper Format" -msgstr "" +msgstr "Papír Formátum" #. module: base #: model:ir.module.module,description:base.module_note_pad @@ -4003,6 +4487,13 @@ msgid "" "invite.\n" "\n" msgstr "" +"\n" +"Ez a modul az OpenERP belső feljegyzéseit frissíti egy külső szerkesztővel\n" +"===================================================================\n" +"\n" +"Haszálja a szöveges feljegyzései, következő maghívott felhasználó általi, " +"valós idejű frissítéséhez.\n" +"\n" #. module: base #: code:addons/base/module/module.py:609 @@ -4222,6 +4713,20 @@ msgid "" "comptable\n" "Seddik au cours du troisième trimestre 2010." msgstr "" +"\n" +"MAROKKÓ könyvelési modul\n" +"\n" +"This is the base module to manage the accounting chart for Maroc.\n" +"=================================================================\n" +"\n" +"Ce Module charge le modèle du plan de comptes standard Marocain et permet " +"de\n" +"générer les états comptables aux normes marocaines (Bilan, CPC (comptes de\n" +"produits et charges), balance générale à 6 colonnes, Grand livre " +"cumulatif...).\n" +"L'intégration comptable a été validé avec l'aide du Cabinet d'expertise " +"comptable\n" +"Seddik au cours du troisième trimestre 2010." #. module: base #: help:ir.module.module,auto_install:0 @@ -4274,12 +4779,12 @@ msgstr "" #. module: base #: model:ir.module.category,name:base.module_category_localization_account_charts msgid "Account Charts" -msgstr "" +msgstr "Könyvelési grafikonok" #. module: base #: model:ir.ui.menu,name:base.menu_event_main msgid "Events Organization" -msgstr "" +msgstr "Események szervezése" #. module: base #: model:ir.actions.act_window,name:base.action_partner_customer_form @@ -4307,7 +4812,7 @@ msgstr "Alap mező" #. module: base #: model:ir.module.category,name:base.module_category_managing_vehicles_and_contracts msgid "Managing vehicles and contracts" -msgstr "" +msgstr "Gépjárművek és szerződései kezelése" #. module: base #: model:ir.module.module,description:base.module_base_setup @@ -4363,7 +4868,7 @@ msgstr "Alapértelmezett" #. module: base #: model:ir.module.module,summary:base.module_lunch msgid "Lunch Order, Meal, Food" -msgstr "" +msgstr "Ebéd megrendelés, Étkezés, Élelmiszer" #. module: base #: view:ir.model.fields:0 @@ -4480,7 +4985,7 @@ msgstr "'kód'-nak egyedinek kell lennie." #. module: base #: model:ir.module.module,shortdesc:base.module_knowledge msgid "Knowledge Management System" -msgstr "" +msgstr "Tudás Kezelő Rendszer" #. module: base #: view:workflow.activity:0 @@ -4516,6 +5021,20 @@ msgid "" " * Number Padding\n" " " msgstr "" +"\n" +"Ez a modul karbantartjaa a belső könyvelési bevitel számsorrend számait.\n" +"======================================================================\n" +"\n" +"Lehetővé teszi a könyvelési számsorrend karbantartás beállítását.\n" +"\n" +"Testreszabhatja a következő számsorrend tulajdonságokat:\n" +"-----------------------------------------------------------\n" +" * Prefix - Előtag\n" +" * Suffix - Utótag\n" +" * Következő szám\n" +" * Növekmény szám\n" +" * Szám szerkesztő\n" +" " #. module: base #: model:ir.module.module,shortdesc:base.module_project_timesheet @@ -4543,6 +5062,10 @@ msgid "" "==========================\n" "\n" msgstr "" +"\n" +"OpenERP Web naptár nézet.\n" +"==========================\n" +"\n" #. module: base #: selection:base.language.install,lang:0 @@ -4663,7 +5186,7 @@ msgstr "Egyenlítői Guinea" #. module: base #: model:ir.module.module,shortdesc:base.module_web_api msgid "OpenERP Web API" -msgstr "" +msgstr "OpenERP Web API" #. module: base #: model:ir.module.module,description:base.module_l10n_fr_rib @@ -4717,7 +5240,7 @@ msgstr "ir.actions.report.xml" #. module: base #: model:res.country,name:base.ps msgid "Palestinian Territory, Occupied" -msgstr "" +msgstr "Palesztin Megszállt Területek" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_ch @@ -4870,27 +5393,27 @@ msgstr "Munkafolyamatok" #. module: base #: model:ir.ui.menu,name:base.next_id_73 msgid "Purchase" -msgstr "" +msgstr "Beszerzés" #. module: base #: selection:base.language.install,lang:0 msgid "Portuguese (BR) / Português (BR)" -msgstr "" +msgstr "Portuguese (BR) / Português (BR)" #. module: base #: model:ir.model,name:base.model_ir_needaction_mixin msgid "ir.needaction_mixin" -msgstr "" +msgstr "ir.needaction_mixin" #. module: base #: view:base.language.export:0 msgid "This file was generated using the universal" -msgstr "" +msgstr "Ez a fájl az általánost használva generált" #. module: base #: model:res.partner.category,name:base.res_partner_category_7 msgid "IT Services" -msgstr "" +msgstr "IT Services" #. module: base #: model:ir.module.category,name:base.module_category_specific_industry_applications @@ -4900,7 +5423,7 @@ msgstr "Különleges ipari alkalmazások" #. module: base #: model:ir.module.module,shortdesc:base.module_google_docs msgid "Google Docs integration" -msgstr "" +msgstr "Google Docs integráció" #. module: base #: code:addons/base/ir/ir_fields.py:328 @@ -4943,6 +5466,41 @@ msgid "" "So, that we can compare the theoretic delay and real delay. \n" " " msgstr "" +"\n" +"Ez a modul hozzáad állapotot, start_dátumot, stop_dátumot a gyártási " +"megrendelés végrehalytási soraihoz (a 'Gyártási megrendelések' fülön).\n" +"=============================================================================" +"===================================\n" +"\n" +"Állapot: terv, leigazolt, elvégzett, érévnytelenített\n" +"Ha elvégzett/visszaigazolt, érévnytelenített a gyártási rendelés akkor " +"megfelelő állapot sorokat\n" +"be kell állítani az állapothoz.\n" +"\n" +"Menük létrehozás:\n" +"-------------\n" +" **Gyátás** > **Gyártás** > **Gyártási megrendelések**\n" +"\n" +"Megtalálható a 'Gyártási megrendelések' soraiban a gyártási " +"megrendeléseknél.\n" +"\n" +"Adjon hozzá gombokat a forma nézetben a gyártási megrendelések " +"gyártásrendelés fül alatt:\n" +"-------------------------------------------------------------------------\n" +" * start (állítsa be a visszaigazolt állapotot), állítsa be az " +"indulási_dátumot\n" +" * stop (állítsa be az elvégzett állapotot), állítsa be a stop_dátumot\n" +" * Tervezettr állít (állítsa be a tervezett állapotot)\n" +" * érévnytelenít (állítsa be az érvénytelenít állapotot)\n" +"\n" +"Ha egy gyártási rendelés 'elvégezhetővé' válik, akkor 'visszaigazoltnak' " +"kell lennie.\n" +"Ha a gyártási megrendelés elkészült, akkor minden műveletnek elvégzettnek \n" +"kell lennie.\n" +"\n" +"A 'Munka óra' mező az a számított idő (stop dátum - start dátum).\n" +"Így össze tudjuk mérni a számított és e tényleges időt. \n" +" " #. module: base #: view:res.config.installer:0 @@ -4962,7 +5520,7 @@ msgstr "Lesotho" #. module: base #: view:base.language.export:0 msgid ", or your preferred text editor" -msgstr "" +msgstr ", vagy az előnyben részesített szöveg szerkesztője" #. module: base #: model:ir.module.module,shortdesc:base.module_crm_partner_assign @@ -5004,7 +5562,7 @@ msgstr "Általános" #. module: base #: model:ir.module.module,shortdesc:base.module_document_ftp msgid "Shared Repositories (FTP)" -msgstr "" +msgstr "Megosztott adattárak (FTP)" #. module: base #: model:res.country,name:base.sm @@ -5034,7 +5592,7 @@ msgstr "Mentés" #. module: base #: field:ir.actions.report.xml,report_xml:0 msgid "XML Path" -msgstr "" +msgstr "XML elérési útvonal" #. module: base #: model:res.country,name:base.bj @@ -5095,6 +5653,19 @@ msgid "" " \n" "%(country_code)s: the code of the country" msgstr "" +"Meg tudja adni a címzés szokásos módjának a formáját ami jellemző az " +"országára.\n" +"\n" +"Használhatja a python-stílusu sort a cím összes mezejéhez (például, " +"használja '%(street)s' az utca kiírásához valamint\n" +" \n" +"%(state_name)s: az állam nevéhez\n" +" \n" +"%(state_code)s: az állam kódjához\n" +" \n" +"%(country_name)s: az ország nevéhez\n" +" \n" +"%(country_code)s: az ország kódjához" #. module: base #: model:res.country,name:base.mu @@ -5116,7 +5687,7 @@ msgstr "Biztonság" #. module: base #: selection:base.language.install,lang:0 msgid "Portuguese / Português" -msgstr "" +msgstr "Portuguese / Português" #. module: base #: code:addons/base/ir/ir_model.py:364 @@ -5133,7 +5704,7 @@ msgstr "Csak ez a bank számla tartozik a vállalkozásához" #: code:addons/base/ir/ir_fields.py:338 #, python-format msgid "Unknown sub-field '%s'" -msgstr "" +msgstr "Ismeretlen al-mező '%s'" #. module: base #: model:res.country,name:base.za @@ -5165,7 +5736,7 @@ msgstr "Magyarország" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_recruitment msgid "Recruitment Process" -msgstr "" +msgstr "Toborzási folyamat" #. module: base #: model:res.country,name:base.br @@ -5206,7 +5777,7 @@ msgstr "Árfolyamok" #. module: base #: model:ir.module.module,shortdesc:base.module_email_template msgid "Email Templates" -msgstr "" +msgstr "E-mail sablonok" #. module: base #: model:res.country,name:base.sy @@ -5221,7 +5792,7 @@ msgstr "======================================================" #. module: base #: sql_constraint:ir.model:0 msgid "Each model must be unique!" -msgstr "" +msgstr "Minden modellnek különbözőnek kell lennie!" #. module: base #: model:ir.module.category,name:base.module_category_localization @@ -5237,6 +5808,10 @@ msgid "" "================\n" "\n" msgstr "" +"\n" +"Openerp Web API.\n" +"================\n" +"\n" #. module: base #: selection:res.request,state:0 @@ -5311,7 +5886,7 @@ msgstr "" #. module: base #: view:res.company:0 msgid "Preview Header/Footer" -msgstr "" +msgstr "Fejléc/Lábjegyzet előnézet" #. module: base #: field:ir.ui.menu,parent_id:0 @@ -5322,7 +5897,7 @@ msgstr "Főmenü" #. module: base #: field:res.partner.bank,owner_name:0 msgid "Account Owner Name" -msgstr "" +msgstr "Számla tulajdonos neve" #. module: base #: code:addons/base/ir/ir_model.py:412 @@ -5346,17 +5921,17 @@ msgstr "Tizedes elválasztó" #: code:addons/orm.py:5245 #, python-format msgid "Missing required value for the field '%s'." -msgstr "" +msgstr "Hiányzik a megkövetelt érték ehhez a mezőhöz '%s'." #. module: base #: model:ir.model,name:base.model_res_partner_address msgid "res.partner.address" -msgstr "" +msgstr "res.partner.address" #. module: base #: view:ir.rule:0 msgid "Write Access Right" -msgstr "" +msgstr "Írási hozzáférési jogosultság" #. module: base #: model:ir.actions.act_window,help:base.action_res_groups @@ -5411,7 +5986,7 @@ msgstr "Bouvet-sziget" #. module: base #: field:ir.model.constraint,type:0 msgid "Constraint Type" -msgstr "" +msgstr "Illesztő típus" #. module: base #: field:res.company,child_ids:0 @@ -5435,6 +6010,13 @@ msgid "" "wizard if the delivery is to be invoiced.\n" " " msgstr "" +"\n" +"Számla tündér a szállításhoz.\n" +"============================\n" +"\n" +"Ha termékeket szállít ki, ez a modul automatikusan elindítja a számlázó \n" +"varázslót, ha a szállítás még nem lett kiszámlázva.\n" +" " #. module: base #: selection:ir.translation,type:0 @@ -5472,6 +6054,10 @@ msgid "" "=======================\n" " " msgstr "" +"\n" +"Lehetővé tesz a felhasználók feliratkozását.\n" +"=======================\n" +" " #. module: base #: model:res.country,name:base.zm @@ -11209,7 +11795,7 @@ msgstr "A mező mérete nem lehet kisebb 1-nél!" #. module: base #: model:ir.module.module,shortdesc:base.module_mrp_operations msgid "Manufacturing Operations" -msgstr "" +msgstr "Gyártási műveletek" #. module: base #: view:base.language.export:0 @@ -11428,7 +12014,7 @@ msgstr "Következő végrehajtás dátuma" #. module: base #: field:ir.sequence,padding:0 msgid "Number Padding" -msgstr "" +msgstr "Számok szerkesztése - padding" #. module: base #: help:multi_company.default,field_id:0 @@ -13324,7 +13910,7 @@ msgstr "Spanyol - Könyvelés (PGCE 2008)" #. module: base #: model:ir.module.module,shortdesc:base.module_stock_no_autopicking msgid "Picking Before Manufacturing" -msgstr "" +msgstr "Kiválasztás a gyártás előtt" #. module: base #: model:ir.module.module,summary:base.module_note_pad @@ -14276,6 +14862,8 @@ msgid "" "Lets you install various interesting but non-essential tools like Survey, " "Lunch and Ideas box." msgstr "" +"Lehetővé teszi, hogy telepítsen különböző érdekes, de nem alapvető " +"eszközöket, mint Felmérés, Ebédrendelés és Ötlet doboz." #. module: base #: selection:ir.module.module,state:0 @@ -15218,6 +15806,8 @@ msgid "" "Helps you manage your manufacturing processes and generate reports on those " "processes." msgstr "" +"Segít Önnek a gyártási folyamatok kezelésében és az azokhoz tartozó " +"jelentések létrehozásában." #. module: base #: help:ir.sequence,number_increment:0 @@ -18712,3 +19302,80 @@ msgstr "" #~ "ki az adminnak, és csak felhasználói jogosultságot a demo\n" #~ "felhasználónak.\n" #~ " " + +#~ msgid "" +#~ "\n" +#~ "This module implements all concepts defined by the Getting Things Done " +#~ "methodology.\n" +#~ "=============================================================================" +#~ "======\n" +#~ "\n" +#~ "This module implements a simple personnal Todo list based on tasks. It adds " +#~ "in\n" +#~ "the project application an editable list of tasks simplified to the minimum\n" +#~ "required fields.\n" +#~ "\n" +#~ "The todo list is based on the GTD methodology. This world-wide used " +#~ "methodology\n" +#~ "is used for personal time management improvement.\n" +#~ "\n" +#~ "Getting Things Done (commonly abbreviated as GTD) is an action management\n" +#~ "method created by David Allen, and described in a book of the same name.\n" +#~ "\n" +#~ "GTD rests on the principle that a person needs to move tasks out of the mind " +#~ "by\n" +#~ "recording them externally. That way, the mind is freed from the job of\n" +#~ "remembering everything that needs to be done, and can concentrate on " +#~ "actually\n" +#~ "performing those tasks.\n" +#~ " " +#~ msgstr "" +#~ "\n" +#~ "Ez a modul beilleszti a tennivalók elvégzése fogalom /Getting Things Done/ " +#~ "módszertant.\n" +#~ "=============================================================================" +#~ "======\n" +#~ "\n" +#~ "Ez a modul beilleszt egy egyszerű személyes feladatokon alapuló elvégzési " +#~ "listát. A beruházáshoz\n" +#~ "ad egy szerkeszthető elvégzési listát leegyszerüsítve a legszükségesebb " +#~ "területekre.\n" +#~ "\n" +#~ "Az elvégzési lista a tennivalók elvégzése GTD módszertanon alapszik. Ez a " +#~ "világon széles körben elterjedt módszertant\n" +#~ "a személyes idő beosztás kezelés hatékonyságának növelésére használják.\n" +#~ "\n" +#~ "Tennivalók elvégzése /Getting Things Done/ (a GTD mint elterjedt rövidítés) " +#~ "egy működés kezelési eljárás\n" +#~ "amit David Allen hozott létre, és az ilyen című könyvében le is írt.\n" +#~ "\n" +#~ "GTD azon az alapelven nyugszik, hogy az embernek a tennivalóit a " +#~ "gondolatiból ki kell mozgatni és azokat pontossan \n" +#~ "fel kell jegyezni. Így, a tudat megszabadul a még elvégzendő dolgokra való " +#~ "visszemlékezés munkájától, és koncentrálni tud\n" +#~ "az aktuális most kialakuló munkavégzésekre.\n" +#~ " " + +#~ msgid "" +#~ "\n" +#~ "Module for resource management.\n" +#~ "===============================\n" +#~ "\n" +#~ "A resource represent something that can be scheduled\n" +#~ "(a developer on a task or a work center on manufacturing orders).\n" +#~ "This module manages a resource calendar associated to every resource.\n" +#~ "It also manages the leaves of every resource.\n" +#~ "\n" +#~ " " +#~ msgstr "" +#~ "\n" +#~ "Modul az erőforrás kezeléshez.\n" +#~ "===============================\n" +#~ "\n" +#~ "Az erőforrás kifejezhet valamit amit ütemezni lehet\n" +#~ "(a fejlesztő egy munkán vagy munka állomásokat gyártási megrendeléseken).\n" +#~ "Ez a modul kezeli az erőforrás naptárat ami minden erőforással kapcsolatot " +#~ "tart.\n" +#~ "Kezeli az összes erőforrás al kapcsolatait /ágakat, leveleket/.\n" +#~ "\n" +#~ " " diff --git a/openerp/addons/base/i18n/it.po b/openerp/addons/base/i18n/it.po index b7b9d50b453..14eda741185 100644 --- a/openerp/addons/base/i18n/it.po +++ b/openerp/addons/base/i18n/it.po @@ -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-09 12:05+0000\n" -"Last-Translator: Davide Corio - agilebg.com \n" +"PO-Revision-Date: 2012-12-11 13:28+0000\n" +"Last-Translator: Nicola Riolini - Micronaet \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-10 04:36+0000\n" -"X-Generator: Launchpad (build 16341)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:38+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing @@ -376,6 +376,8 @@ msgid "" "Database ID of record to open in form view, when ``view_mode`` is set to " "'form' only" msgstr "" +"ID record del database da aprire nella modalità form quando ``view_mode`` è " +"impostato a form solamente" #. module: base #: field:res.partner.address,name:0 @@ -546,7 +548,7 @@ msgstr "" #. module: base #: field:ir.model.relation,name:0 msgid "Relation Name" -msgstr "" +msgstr "Nome relazione" #. module: base #: view:ir.rule:0 @@ -601,7 +603,7 @@ msgstr "Guyana Francese" #. module: base #: model:ir.module.module,summary:base.module_hr msgid "Jobs, Departments, Employees Details" -msgstr "" +msgstr "Lavori, dipartimenti, dettagli impiegati" #. module: base #: model:ir.module.module,description:base.module_analytic @@ -617,6 +619,16 @@ msgid "" "that have no counterpart in the general financial accounts.\n" " " msgstr "" +"\n" +"Modulo per definire gli oggetti di contabilità analitica.\n" +"===============================================\n" +"\n" +"In OpenERP, i conti analitici sono collegati ai conti generali ma sono " +"trattati\n" +"in modo totalmente indipendente. Potete inserire divverenti varietà di " +"operazioni \n" +"analitichethe non hanno la contropartita nei conti generali finaziari.\n" +" " #. module: base #: field:ir.ui.view.custom,ref_id:0 @@ -848,6 +860,11 @@ msgid "" "This module provides the Integration of the LinkedIn with OpenERP.\n" " " msgstr "" +"\n" +"OpenERP Modulo web LindekIn.\n" +"============================\n" +"Questo modulo fornisce l'integrazione di LinkedIn con OpenERP.\n" +" " #. module: base #: help:ir.actions.act_window,src_model:0 @@ -927,7 +944,7 @@ msgstr "Sicurezza ed Autenticazione" #. module: base #: model:ir.module.module,shortdesc:base.module_web_calendar msgid "Web Calendar" -msgstr "" +msgstr "Calendario Web" #. module: base #: selection:base.language.install,lang:0 @@ -1179,7 +1196,7 @@ msgstr "Principato di Andorra" #. module: base #: field:ir.rule,perm_read:0 msgid "Apply for Read" -msgstr "" +msgstr "Applica per leggere" #. module: base #: model:res.country,name:base.mn @@ -1291,7 +1308,7 @@ msgstr "Isole Cayman" #. module: base #: view:ir.rule:0 msgid "Record Rule" -msgstr "" +msgstr "Regola record" #. module: base #: model:res.country,name:base.kr @@ -1319,7 +1336,7 @@ msgstr "Contribuenti" #. module: base #: field:ir.rule,perm_unlink:0 msgid "Apply for Delete" -msgstr "" +msgstr "Applica per eliminare" #. module: base #: selection:ir.property,type:0 @@ -1329,7 +1346,7 @@ msgstr "Carattere" #. module: base #: field:ir.module.category,visible:0 msgid "Visible" -msgstr "" +msgstr "Visibile" #. module: base #: model:ir.actions.client,name:base.action_client_base_menu @@ -1394,6 +1411,9 @@ msgid "" " for uploading to OpenERP's translation " "platform," msgstr "" +"Formato TGZ: questo è un archivio compresso contenente un file PO, " +"direttamente utilizzabile\n" +"per essere caricato su una piattaforma di traduzione di OpenERP" #. module: base #: view:res.lang:0 @@ -1420,7 +1440,7 @@ msgstr "Test" #. module: base #: field:ir.actions.report.xml,attachment:0 msgid "Save as Attachment Prefix" -msgstr "" +msgstr "Salva come prefisso allegato" #. module: base #: field:ir.ui.view_sc,res_id:0 @@ -1457,7 +1477,7 @@ msgstr "Haiti" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_fr_hr_payroll msgid "French Payroll" -msgstr "" +msgstr "Busta paga francese" #. module: base #: view:ir.ui.view:0 @@ -1483,7 +1503,7 @@ msgstr "" #. module: base #: field:ir.module.category,parent_id:0 msgid "Parent Application" -msgstr "" +msgstr "Applicazione padre" #. module: base #: code:addons/base/res/res_users.py:135 @@ -1579,6 +1599,12 @@ msgid "" "=============\n" " " msgstr "" +"\n" +"Questo modulo aggiunge un menù reclami ed altre caratteristiche al vostro " +"portale, se sono installati i moduli reclami e portale .\n" +"=============================================================================" +"=============\n" +" " #. module: base #: model:ir.actions.act_window,help:base.action_res_partner_bank_account_form @@ -1606,7 +1632,7 @@ msgstr "" #. module: base #: model:res.country,name:base.mf msgid "Saint Martin (French part)" -msgstr "" +msgstr "Saint-Martin (Francia)" #. module: base #: model:ir.model,name:base.model_ir_exports @@ -1623,7 +1649,7 @@ msgstr "Nessuna esiste lingua con il codice \"%s\"" #: model:ir.module.category,name:base.module_category_social_network #: model:ir.module.module,shortdesc:base.module_mail msgid "Social Network" -msgstr "" +msgstr "Social network" #. module: base #: view:res.lang:0 @@ -1633,12 +1659,12 @@ msgstr "%Y - Anno con secolo." #. module: base #: view:res.company:0 msgid "Report Footer Configuration" -msgstr "" +msgstr "Configurazione piè pagina" #. module: base #: field:ir.translation,comments:0 msgid "Translation comments" -msgstr "" +msgstr "Commenti traduzione" #. module: base #: model:ir.module.module,description:base.module_lunch @@ -1676,6 +1702,8 @@ msgid "" "The field on the current object that links to the target object record (must " "be a many2one, or an integer field with the record ID)" msgstr "" +"Il campo per l'oggetto corrente che si collega al record oggetto di " +"destinazione (deve essere un many2one o un campo intero con l'ID record)" #. module: base #: model:ir.model,name:base.model_res_bank @@ -1699,7 +1727,7 @@ msgstr "" #. module: base #: help:res.partner,website:0 msgid "Website of Partner or Company" -msgstr "" +msgstr "Sito Web del Partner o dell'Azienda" #. module: base #: help:base.language.install,overwrite:0 @@ -1746,7 +1774,7 @@ msgstr "" #. module: base #: model:ir.module.module,summary:base.module_sale msgid "Quotations, Sale Orders, Invoicing" -msgstr "" +msgstr "Preventivi, Ordini di Vendita, Fatturazione" #. module: base #: field:res.users,login:0 @@ -1789,12 +1817,12 @@ msgstr "" #. module: base #: field:res.partner,image_small:0 msgid "Small-sized image" -msgstr "" +msgstr "Immagine (formato piccolo)" #. module: base #: model:ir.module.module,shortdesc:base.module_stock msgid "Warehouse Management" -msgstr "" +msgstr "Gestione Magazzino" #. module: base #: model:ir.model,name:base.model_res_request_link @@ -1822,7 +1850,7 @@ msgstr "Azioni Server" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_lu msgid "Luxembourg - Accounting" -msgstr "" +msgstr "Contabilità - Lussemburgo" #. module: base #: model:res.country,name:base.tp @@ -1870,6 +1898,14 @@ msgid "" "It assigns manager and user access rights to the Administrator and only user " "rights to the Demo user. \n" msgstr "" +"\n" +"Diritti di accesso contabilità\n" +"========================\n" +"Da all'utente amministratore accesso a tutte le caratteristiche contabili, " +"come elementi del giornale, piano dei conti.\n" +"\n" +"Assegna manager e diritti di accesso utente all'amministratore e solamente " +"diritti utente all'utente Demo. \n" #. module: base #: field:ir.attachment,res_id:0 @@ -1894,6 +1930,7 @@ msgstr "" #, python-format msgid "Unknown value '%s' for boolean field '%%(field)s', assuming '%s'" msgstr "" +"Valore sconosciuto '%s' per un campo booleano '%%(field)s', assuming '%s'" #. module: base #: model:res.country,name:base.nl @@ -1903,12 +1940,12 @@ msgstr "Olanda" #. module: base #: model:ir.module.module,shortdesc:base.module_portal_event msgid "Portal Event" -msgstr "" +msgstr "Evento portale" #. module: base #: selection:ir.translation,state:0 msgid "Translation in Progress" -msgstr "" +msgstr "Traduzione in cordo" #. module: base #: model:ir.model,name:base.model_ir_rule @@ -1923,7 +1960,7 @@ msgstr "Giorni" #. module: base #: model:ir.module.module,summary:base.module_fleet msgid "Vehicle, leasing, insurances, costs" -msgstr "" +msgstr "Veicoli, Leasing, assicurazioni, costi" #. module: base #: view:ir.model.access:0 @@ -1955,7 +1992,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_process msgid "Enterprise Process" -msgstr "" +msgstr "Processo Aziendale" #. module: base #: help:res.partner,supplier:0 @@ -1963,6 +2000,9 @@ msgid "" "Check this box if this contact is a supplier. If it's not checked, purchase " "people will not see it when encoding a purchase order." msgstr "" +"Spuntare il riquadro se il contatto è un fornitore. Se non è spuntato, il " +"personale agli acquisti non lo vedrà durante la codifica dell'ordine " +"d'acquisto" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_evaluation @@ -2004,13 +2044,13 @@ msgstr "Genitore sinistra" #. module: base #: model:ir.module.module,shortdesc:base.module_project_mrp msgid "Create Tasks on SO" -msgstr "" +msgstr "Crea attività su Ordine acquisto" #. module: base #: code:addons/base/ir/ir_model.py:316 #, python-format msgid "This column contains module data and cannot be removed!" -msgstr "" +msgstr "Questa colonna contiene dati modulo e non può essere rimossa!" #. module: base #: field:ir.attachment,res_model:0 @@ -2020,7 +2060,7 @@ msgstr "Modello allegato" #. module: base #: field:res.partner.bank,footer:0 msgid "Display on Reports" -msgstr "" +msgstr "Visualizza nei report" #. module: base #: model:ir.module.module,description:base.module_project_timesheet @@ -2107,7 +2147,7 @@ msgstr "%s (copia)" #. module: base #: model:ir.module.module,shortdesc:base.module_account_chart msgid "Template of Charts of Accounts" -msgstr "" +msgstr "Modello di piano dei conti" #. module: base #: field:res.partner,type:0 @@ -2147,12 +2187,12 @@ msgstr "Percorso completo" #. module: base #: view:base.language.export:0 msgid "The next step depends on the file format:" -msgstr "" +msgstr "Il prossimo passo dipenderà dal formato del file:" #. module: base #: model:ir.module.module,shortdesc:base.module_idea msgid "Ideas" -msgstr "" +msgstr "Idee" #. module: base #: view:res.lang:0 @@ -2169,7 +2209,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 "formato PO(T): è necessario modificarlo con un PO editor come" #. module: base #: model:ir.ui.menu,name:base.menu_administration @@ -2193,7 +2233,7 @@ msgstr "Crea / Scrivi / Copia" #. module: base #: view:ir.sequence:0 msgid "Second: %(sec)s" -msgstr "" +msgstr "Secondi: %(sec)s" #. module: base #: field:ir.actions.act_window,view_mode:0 @@ -2206,6 +2246,8 @@ msgid "" "Display this bank account on the footer of printed documents like invoices " "and sales orders." msgstr "" +"Mostra questo conto bancario nel piè pagina dei documenti stampati, come " +"fatture e ordini di vendita" #. module: base #: selection:base.language.install,lang:0 @@ -2220,7 +2262,7 @@ msgstr "Korean (KP) / 한국어 (KP)" #. module: base #: model:res.country,name:base.ax msgid "Åland Islands" -msgstr "" +msgstr "Åland Islands" #. module: base #: field:res.company,logo:0 @@ -2230,7 +2272,7 @@ msgstr "Logo" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_cr msgid "Costa Rica - Accounting" -msgstr "" +msgstr "Contabilità - Costa Rica" #. module: base #: selection:ir.actions.act_url,target:0 @@ -2241,12 +2283,12 @@ msgstr "Nuova Finestra" #. module: base #: field:ir.values,action_id:0 msgid "Action (change only)" -msgstr "" +msgstr "Azione (cambiare solamente)" #. module: base #: model:ir.module.module,shortdesc:base.module_subscription msgid "Recurring Documents" -msgstr "" +msgstr "Documenti ricorrenti" #. module: base #: model:res.country,name:base.bs @@ -2256,12 +2298,12 @@ msgstr "Bahamas" #. module: base #: field:ir.rule,perm_create:0 msgid "Apply for Create" -msgstr "" +msgstr "Applica per creare" #. module: base #: model:ir.module.category,name:base.module_category_tools msgid "Extra Tools" -msgstr "" +msgstr "Strumenti extra" #. module: base #: view:ir.attachment:0 @@ -2288,7 +2330,7 @@ msgstr "Numero di moduli aggiornati" #. module: base #: field:ir.cron,function:0 msgid "Method" -msgstr "" +msgstr "Metodo" #. module: base #: view:workflow.activity:0 @@ -2328,6 +2370,7 @@ msgstr "" msgid "" "No matching record found for %(field_type)s '%(value)s' in field '%%(field)s'" msgstr "" +"Nessun record trovato per %(field_type)s '%(value)s' nel campo '%%(field)s'" #. module: base #: model:ir.actions.act_window,help:base.action_ui_view @@ -2342,7 +2385,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_base_setup msgid "Initial Setup Tools" -msgstr "" +msgstr "Strumenti setup iniziale" #. module: base #: field:ir.actions.act_window,groups_id:0 @@ -2469,7 +2512,7 @@ msgstr "" #. module: base #: field:ir.mail_server,smtp_debug:0 msgid "Debugging" -msgstr "" +msgstr "Debugging" #. module: base #: model:ir.module.module,description:base.module_crm_helpdesk @@ -2492,6 +2535,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 "" +"Tipo di vista: Tree è usato per le viste elenco, imposta a 'tree' per una " +"vista strutturata (con eredità), oppure 'form' per una lista regolare" #. module: base #: sql_constraint:ir.ui.view_sc:0 @@ -2589,7 +2634,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_auth_oauth_signup msgid "Signup with OAuth2 Authentication" -msgstr "" +msgstr "Registrazione con autenticazione OAuth2" #. module: base #: selection:ir.model,state:0 @@ -2616,12 +2661,12 @@ msgstr "Greco / Ελληνικά" #. module: base #: field:res.company,custom_footer:0 msgid "Custom Footer" -msgstr "" +msgstr "Piè pagina personalizzato" #. module: base #: model:ir.module.module,shortdesc:base.module_sale_crm msgid "Opportunity to Quotation" -msgstr "" +msgstr "Opportunità a Preventivo" #. module: base #: model:ir.module.module,description:base.module_sale_analytic_plans @@ -2643,6 +2688,10 @@ msgid "" "==================================\n" " " msgstr "" +"\n" +"Piano dei conti - USA\n" +"==================================\n" +" " #. module: base #: field:ir.actions.act_url,target:0 @@ -2657,17 +2706,17 @@ msgstr "Anguilla" #. module: base #: model:ir.actions.report.xml,name:base.report_ir_model_overview msgid "Model Overview" -msgstr "" +msgstr "Panoramica modello" #. module: base #: model:ir.module.module,shortdesc:base.module_product_margin msgid "Margins by Products" -msgstr "" +msgstr "Margini per prodotti" #. module: base #: model:ir.ui.menu,name:base.menu_invoiced msgid "Invoicing" -msgstr "" +msgstr "Fatturazione" #. module: base #: field:ir.ui.view_sc,name:0 @@ -2677,7 +2726,7 @@ msgstr "Nome Scorciatoia" #. module: base #: field:res.partner,contact_address:0 msgid "Complete Address" -msgstr "" +msgstr "Indirizzo completo" #. module: base #: help:ir.actions.act_window,limit:0 @@ -2744,12 +2793,12 @@ msgstr "" #: field:ir.translation,res_id:0 #: field:ir.values,res_id:0 msgid "Record ID" -msgstr "" +msgstr "ID record" #. module: base #: view:ir.filters:0 msgid "My Filters" -msgstr "" +msgstr "I miei filtri" #. module: base #: field:ir.actions.server,email:0 @@ -2763,12 +2812,15 @@ msgid "" "Module to attach a google document to any model.\n" "================================================\n" msgstr "" +"\n" +"Modulo per collegare Google Docs ad ogni modello.\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 "Trovati record multipli in base al campo '%%(field)s' (%d trovati)" #. module: base #: selection:base.language.install,lang:0 @@ -2797,12 +2849,12 @@ msgstr "Azione Server" #. module: base #: help:ir.actions.client,params:0 msgid "Arguments sent to the client along withthe view tag" -msgstr "" +msgstr "Argomenti inviato ai clienti con il tag vista" #. module: base #: model:ir.module.module,summary:base.module_contacts msgid "Contacts, People and Companies" -msgstr "" +msgstr "Contatti, persone e aziende" #. module: base #: model:res.country,name:base.tt @@ -2829,13 +2881,13 @@ msgstr "Esporta traduzioni" #: model:res.groups,name:base.group_sale_manager #: model:res.groups,name:base.group_tool_manager msgid "Manager" -msgstr "" +msgstr "Manager" #. module: base #: code:addons/base/ir/ir_model.py:718 #, python-format msgid "Sorry, you are not allowed to access this document." -msgstr "" +msgstr "Spiacente, non avete i diritti di accesso a questo documento." #. module: base #: model:res.country,name:base.py @@ -2850,7 +2902,7 @@ msgstr "Fiji" #. module: base #: view:ir.actions.report.xml:0 msgid "Report Xml" -msgstr "" +msgstr "Report XML" #. module: base #: model:ir.module.module,description:base.module_purchase @@ -2915,13 +2967,13 @@ msgstr "" #. module: base #: view:res.groups:0 msgid "Inherited" -msgstr "" +msgstr "Ereditato" #. module: base #: code:addons/base/ir/ir_fields.py:147 #, python-format msgid "yes" -msgstr "" +msgstr "sì" #. module: base #: field:ir.model.fields,serialization_field_id:0 @@ -2951,7 +3003,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' non sembra un campo intero '%%(field)s'" #. module: base #: model:ir.module.category,description:base.module_category_report_designer @@ -2959,6 +3011,8 @@ msgid "" "Lets you install various tools to simplify and enhance OpenERP's report " "creation." msgstr "" +"Permette di installare una serie di strumenti per semplificare e potenziare " +"la creazione dei report in OpenERP" #. module: base #: view:res.lang:0 @@ -3010,7 +3064,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_web_linkedin msgid "LinkedIn Integration" -msgstr "" +msgstr "Integrazione con LinkedIn" #. module: base #: code:addons/orm.py:2021 @@ -3137,7 +3191,7 @@ msgstr "Attenzione: non puoi creare aziende ricorsive" #: view:res.users:0 #, python-format msgid "Application" -msgstr "" +msgstr "Applicazione" #. module: base #: model:res.groups,comment:base.group_hr_manager @@ -3164,7 +3218,7 @@ msgstr "" #. module: base #: field:ir.actions.client,params_store:0 msgid "Params storage" -msgstr "" +msgstr "Parametri deposito" #. module: base #: code:addons/base/module/module.py:499 @@ -3181,12 +3235,12 @@ msgstr "Cuba" #: code:addons/report_sxw.py:441 #, python-format msgid "Unknown report type: %s" -msgstr "" +msgstr "Tipo di report sconosciuto: %s" #. module: base #: model:ir.module.module,summary:base.module_hr_expense msgid "Expenses Validation, Invoicing" -msgstr "" +msgstr "Convalida spese, fatturazione" #. module: base #: model:ir.module.module,description:base.module_l10n_be_hr_payroll_account @@ -3254,7 +3308,7 @@ msgstr "Svezia" #. module: base #: field:ir.actions.report.xml,report_file:0 msgid "Report File" -msgstr "" +msgstr "File report" #. module: base #: selection:ir.actions.act_window.view,view_mode:0 @@ -3287,7 +3341,7 @@ msgstr "" #: code:addons/orm.py:3839 #, python-format msgid "Missing document(s)" -msgstr "" +msgstr "Documento(i) mancante" #. module: base #: model:ir.model,name:base.model_res_partner_bank_type @@ -3324,7 +3378,7 @@ msgstr "Calendario" #. module: base #: model:ir.module.category,name:base.module_category_knowledge_management msgid "Knowledge" -msgstr "" +msgstr "Knowledge" #. module: base #: field:workflow.activity,signal_send:0 @@ -3436,7 +3490,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_contract msgid "Employee Contracts" -msgstr "" +msgstr "Contratti impiegato" #. module: base #: view:ir.actions.server:0 @@ -3468,13 +3522,13 @@ msgstr "" #: code:addons/base/ir/ir_mail_server.py:238 #, python-format msgid "SMTP-over-SSL mode unavailable" -msgstr "" +msgstr "Modalità SMTP-over-SSL non disponibile" #. module: base #: model:ir.module.module,shortdesc:base.module_survey #: model:ir.ui.menu,name:base.next_id_10 msgid "Survey" -msgstr "" +msgstr "Sondaggio" #. module: base #: selection:base.language.install,lang:0 @@ -3489,7 +3543,7 @@ msgstr "workflow.activity" #. module: base #: view:base.language.export:0 msgid "Export Complete" -msgstr "" +msgstr "Esportazione completata" #. module: base #: help:ir.ui.view_sc,res_id:0 @@ -3518,7 +3572,7 @@ msgstr "Finnish / Suomi" #. module: base #: view:ir.config_parameter:0 msgid "System Properties" -msgstr "" +msgstr "Proprietà di sistema" #. module: base #: field:ir.sequence,prefix:0 @@ -3562,12 +3616,12 @@ msgstr "Seleziona il pacchetto per il modulo da importare (.zip file):" #. module: base #: view:ir.filters:0 msgid "Personal" -msgstr "" +msgstr "Personale" #. module: base #: field:base.language.export,modules:0 msgid "Modules To Export" -msgstr "" +msgstr "Moduli da esportare" #. module: base #: model:res.country,name:base.mt @@ -3580,6 +3634,8 @@ msgstr "Malta" msgid "" "Only users with the following access level are currently allowed to do that" msgstr "" +"Solamente gli utenti con il seguente grado di accesso sono abilitati a fare " +"questo" #. module: base #: field:ir.actions.server,fields_lines:0 @@ -3660,7 +3716,7 @@ msgstr "" #. module: base #: help:ir.mail_server,smtp_host:0 msgid "Hostname or IP of SMTP server" -msgstr "" +msgstr "Hostname o IP del server SMTP" #. module: base #: model:res.country,name:base.aq @@ -3670,7 +3726,7 @@ msgstr "Antartide" #. module: base #: view:res.partner:0 msgid "Persons" -msgstr "" +msgstr "Persone" #. module: base #: view:base.language.import:0 @@ -3690,7 +3746,7 @@ msgstr "Formato Separatore" #. module: base #: model:ir.module.module,shortdesc:base.module_report_webkit msgid "Webkit Report Engine" -msgstr "" +msgstr "Motore report Webkit" #. module: base #: model:ir.ui.menu,name:base.next_id_9 @@ -3710,7 +3766,7 @@ msgstr "Mayotte" #. module: base #: model:ir.module.module,shortdesc:base.module_crm_todo msgid "Tasks on CRM" -msgstr "" +msgstr "Attività su CRM" #. module: base #: help:ir.model.fields,relation_field:0 @@ -3724,13 +3780,13 @@ msgstr "" #. module: base #: view:ir.rule:0 msgid "Interaction between rules" -msgstr "" +msgstr "Integrazione tra le regole" #. module: base #: field:res.company,rml_footer:0 #: field:res.company,rml_footer_readonly:0 msgid "Report Footer" -msgstr "" +msgstr "Piè di pagina del Report" #. module: base #: selection:res.lang,direction:0 @@ -3740,7 +3796,7 @@ msgstr "Da destra a sinistra" #. module: base #: model:res.country,name:base.sx msgid "Sint Maarten (Dutch part)" -msgstr "" +msgstr "Sint Maarten (parte danese)" #. module: base #: view:ir.actions.act_window:0 @@ -3826,12 +3882,12 @@ msgstr "Togo" #: field:ir.actions.act_window,res_model:0 #: field:ir.actions.client,res_model:0 msgid "Destination Model" -msgstr "" +msgstr "Modello destinazione" #. module: base #: selection:ir.sequence,implementation:0 msgid "Standard" -msgstr "" +msgstr "Standard" #. module: base #: model:res.country,name:base.ru @@ -3849,7 +3905,7 @@ msgstr "Urdu / اردو" #: code:addons/orm.py:3870 #, python-format msgid "Access Denied" -msgstr "" +msgstr "Accesso negato" #. module: base #: field:res.company,name:0 @@ -3909,7 +3965,7 @@ msgstr "" #. module: base #: model:res.country,name:base.je msgid "Jersey" -msgstr "" +msgstr "Jersey" #. module: base #: model:ir.module.module,description:base.module_auth_anonymous @@ -3938,7 +3994,7 @@ msgstr "%x - Rappresentazione di data appropriata" #. module: base #: view:res.partner:0 msgid "Tag" -msgstr "" +msgstr "Tag" #. module: base #: view:res.lang:0 @@ -3963,7 +4019,7 @@ msgstr "Ferma tutto" #. module: base #: field:res.company,paper_format:0 msgid "Paper Format" -msgstr "" +msgstr "Formato Carta" #. module: base #: model:ir.module.module,description:base.module_note_pad @@ -3990,7 +4046,7 @@ msgstr "" #. module: base #: model:res.country,name:base.sk msgid "Slovakia" -msgstr "" +msgstr "Slovakia" #. module: base #: model:res.country,name:base.nr @@ -4040,7 +4096,7 @@ msgstr "Montenegro" #. module: base #: model:ir.module.module,shortdesc:base.module_fetchmail msgid "Email Gateway" -msgstr "" +msgstr "Server email" #. module: base #: code:addons/base/ir/ir_mail_server.py:466 @@ -4113,7 +4169,7 @@ msgstr "Liechtenstein" #. module: base #: model:ir.module.module,shortdesc:base.module_project_issue_sheet msgid "Timesheet on Issues" -msgstr "" +msgstr "Timesheet su problematica" #. module: base #: model:res.partner.title,name:base.res_partner_title_ltd @@ -4139,12 +4195,12 @@ msgstr "Portogallo" #. module: base #: model:ir.module.module,shortdesc:base.module_share msgid "Share any Document" -msgstr "" +msgstr "Condividi qualsiasi documento" #. module: base #: model:ir.module.module,summary:base.module_crm msgid "Leads, Opportunities, Phone Calls" -msgstr "" +msgstr "Leads, Opportunità, Telefonate" #. module: base #: view:res.lang:0 @@ -4238,7 +4294,7 @@ msgstr "" #. module: base #: model:ir.ui.menu,name:base.menu_event_main msgid "Events Organization" -msgstr "" +msgstr "Organizzazione eventi" #. module: base #: model:ir.actions.act_window,name:base.action_partner_customer_form @@ -4266,7 +4322,7 @@ msgstr "Campo Base" #. module: base #: model:ir.module.category,name:base.module_category_managing_vehicles_and_contracts msgid "Managing vehicles and contracts" -msgstr "" +msgstr "Gestione veicoli e contratti" #. module: base #: model:ir.module.module,description:base.module_base_setup @@ -4290,7 +4346,7 @@ msgstr "res.config" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_pl msgid "Poland - Accounting" -msgstr "" +msgstr "Contabilità - Polonia" #. module: base #: view:ir.cron:0 @@ -4336,7 +4392,7 @@ msgstr "Riepilogo" #. module: base #: model:ir.module.category,name:base.module_category_hidden_dependency msgid "Dependency" -msgstr "" +msgstr "Dipendenza" #. module: base #: model:ir.module.module,description:base.module_portal @@ -4422,12 +4478,12 @@ msgstr "Oggetto di innesco" #. module: base #: sql_constraint:ir.sequence.type:0 msgid "`code` must be unique." -msgstr "" +msgstr "`code` deve essere unico." #. module: base #: model:ir.module.module,shortdesc:base.module_knowledge msgid "Knowledge Management System" -msgstr "" +msgstr "Gestione Know How" #. module: base #: view:workflow.activity:0 @@ -4467,7 +4523,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_project_timesheet msgid "Bill Time on Tasks" -msgstr "" +msgstr "Fatturazione delle attività" #. module: base #: model:ir.module.category,name:base.module_category_marketing @@ -4504,7 +4560,7 @@ msgstr "Tipo Sequenza" #. module: base #: view:base.language.export:0 msgid "Unicode/UTF-8" -msgstr "" +msgstr "Unicode/UTF-8" #. module: base #: selection:base.language.install,lang:0 @@ -4516,12 +4572,12 @@ msgstr "Hindi / हिंदी" #: 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 "Carica una traduzione" #. module: base #: field:ir.module.module,latest_version:0 msgid "Installed Version" -msgstr "" +msgstr "Versione installata" #. module: base #: field:ir.module.module,license:0 @@ -4610,7 +4666,7 @@ msgstr "Guinea Equatoriale" #. module: base #: model:ir.module.module,shortdesc:base.module_web_api msgid "OpenERP Web API" -msgstr "" +msgstr "API Web OpenERP" #. module: base #: model:ir.module.module,description:base.module_l10n_fr_rib @@ -4664,12 +4720,12 @@ msgstr "ir.actions.report.xml" #. module: base #: model:res.country,name:base.ps msgid "Palestinian Territory, Occupied" -msgstr "" +msgstr "Territori Palestinesi Occupati" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_ch msgid "Switzerland - Accounting" -msgstr "" +msgstr "Contabilità - Svizzera" #. module: base #: field:res.bank,zip:0 @@ -4706,7 +4762,7 @@ msgstr "" #. module: base #: model:ir.module.category,description:base.module_category_marketing msgid "Helps you manage your marketing campaigns step by step." -msgstr "" +msgstr "Aiuta a gestire passo passo la campagne di marketing." #. module: base #: selection:base.language.install,lang:0 @@ -4750,7 +4806,7 @@ msgstr "Regole" #. module: base #: field:ir.mail_server,smtp_host:0 msgid "SMTP Server" -msgstr "" +msgstr "Server SMTP" #. module: base #: code:addons/base/module/module.py:299 @@ -4814,17 +4870,17 @@ msgstr "Workflow" #. module: base #: model:ir.ui.menu,name:base.next_id_73 msgid "Purchase" -msgstr "" +msgstr "Acquisti" #. module: base #: selection:base.language.install,lang:0 msgid "Portuguese (BR) / Português (BR)" -msgstr "" +msgstr "Portuguese (BR) / Português (BR)" #. module: base #: model:ir.model,name:base.model_ir_needaction_mixin msgid "ir.needaction_mixin" -msgstr "" +msgstr "ir.needaction_mixin" #. module: base #: view:base.language.export:0 @@ -4834,7 +4890,7 @@ msgstr "" #. module: base #: model:res.partner.category,name:base.res_partner_category_7 msgid "IT Services" -msgstr "" +msgstr "Servizi IT" #. module: base #: model:ir.module.category,name:base.module_category_specific_industry_applications @@ -4844,13 +4900,13 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_google_docs msgid "Google Docs integration" -msgstr "" +msgstr "Integrazione Google Docs" #. module: base #: code:addons/base/ir/ir_fields.py:328 #, python-format msgid "name" -msgstr "" +msgstr "nome" #. module: base #: model:ir.module.module,description:base.module_mrp_operations @@ -4896,7 +4952,7 @@ msgstr "Salta" #. module: base #: model:ir.module.module,shortdesc:base.module_event_sale msgid "Events Sales" -msgstr "" +msgstr "Eventi vendite" #. module: base #: model:res.country,name:base.ls @@ -4911,7 +4967,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_crm_partner_assign msgid "Partners Geo-Localization" -msgstr "" +msgstr "Geo-Localizzazione dei Partners" #. module: base #: model:res.country,name:base.ke @@ -4948,7 +5004,7 @@ msgstr "Generico" #. module: base #: model:ir.module.module,shortdesc:base.module_document_ftp msgid "Shared Repositories (FTP)" -msgstr "" +msgstr "Depositi condivisi (FTP)" #. module: base #: model:res.country,name:base.sm @@ -4973,12 +5029,12 @@ msgstr "Imposta a NULL" #. module: base #: view:res.users:0 msgid "Save" -msgstr "" +msgstr "Salva" #. module: base #: field:ir.actions.report.xml,report_xml:0 msgid "XML Path" -msgstr "" +msgstr "Percorso XML" #. module: base #: model:res.country,name:base.bj @@ -4999,7 +5055,7 @@ msgstr "Valore del suffisso per la sequenza dei dati" #. module: base #: help:ir.mail_server,smtp_user:0 msgid "Optional username for SMTP authentication" -msgstr "" +msgstr "Nome utente opzionale per autenticazione SMTP" #. module: base #: model:ir.model,name:base.model_ir_actions_actions @@ -5060,7 +5116,7 @@ msgstr "Sicurezza" #. module: base #: selection:base.language.install,lang:0 msgid "Portuguese / Português" -msgstr "" +msgstr "Portoghese / Português" #. module: base #: code:addons/base/ir/ir_model.py:364 @@ -5077,7 +5133,7 @@ msgstr "" #: code:addons/base/ir/ir_fields.py:338 #, python-format msgid "Unknown sub-field '%s'" -msgstr "" +msgstr "Sottocampo sconosciuto \"%s\"" #. module: base #: model:res.country,name:base.za @@ -5109,7 +5165,7 @@ msgstr "Ungheria" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_recruitment msgid "Recruitment Process" -msgstr "" +msgstr "Processo di assunzione" #. module: base #: model:res.country,name:base.br @@ -5150,7 +5206,7 @@ msgstr "Tassi" #. module: base #: model:ir.module.module,shortdesc:base.module_email_template msgid "Email Templates" -msgstr "" +msgstr "Modelli di Email" #. module: base #: model:res.country,name:base.sy @@ -5165,13 +5221,13 @@ msgstr "======================================================" #. module: base #: sql_constraint:ir.model:0 msgid "Each model must be unique!" -msgstr "" +msgstr "Ogni modello deve essere unico!" #. module: base #: model:ir.module.category,name:base.module_category_localization #: model:ir.ui.menu,name:base.menu_localisation msgid "Localization" -msgstr "" +msgstr "Localizzazione" #. module: base #: model:ir.module.module,description:base.module_web_api @@ -5181,6 +5237,10 @@ msgid "" "================\n" "\n" msgstr "" +"\n" +"API Web OpenERP\n" +"================\n" +"\n" #. module: base #: selection:res.request,state:0 @@ -5250,12 +5310,12 @@ msgstr "" #. module: base #: model:ir.ui.menu,name:base.menu_partner_category_form msgid "Partner Tags" -msgstr "" +msgstr "Tags Partner" #. module: base #: view:res.company:0 msgid "Preview Header/Footer" -msgstr "" +msgstr "Anteprima Intestazione / Piè pagina" #. module: base #: field:ir.ui.menu,parent_id:0 @@ -5294,12 +5354,12 @@ msgstr "" #. module: base #: model:ir.model,name:base.model_res_partner_address msgid "res.partner.address" -msgstr "" +msgstr "res.partner.address" #. module: base #: view:ir.rule:0 msgid "Write Access Right" -msgstr "" +msgstr "Diritti di accesso in scrittura" #. module: base #: model:ir.actions.act_window,help:base.action_res_groups @@ -5322,7 +5382,7 @@ msgstr "" #: view:ir.filters:0 #: field:ir.filters,name:0 msgid "Filter Name" -msgstr "" +msgstr "Nome Filtro" #. module: base #: view:ir.attachment:0 @@ -5334,7 +5394,7 @@ msgstr "Storico" #. module: base #: model:res.country,name:base.im msgid "Isle of Man" -msgstr "" +msgstr "Isola di Man" #. module: base #: help:ir.actions.client,res_model:0 @@ -5354,7 +5414,7 @@ msgstr "Isola Bouvet" #. module: base #: field:ir.model.constraint,type:0 msgid "Constraint Type" -msgstr "" +msgstr "Tipo vincolo" #. module: base #: field:res.company,child_ids:0 @@ -5395,7 +5455,7 @@ msgstr "Campo" #. module: base #: model:ir.module.module,shortdesc:base.module_project_long_term msgid "Long Term Projects" -msgstr "" +msgstr "Progetti a lungo termine" #. module: base #: model:res.country,name:base.ve @@ -5424,7 +5484,7 @@ msgstr "Zambia" #. module: base #: view:ir.actions.todo:0 msgid "Launch Configuration Wizard" -msgstr "" +msgstr "Avvia wizard di configurazione" #. module: base #: model:ir.module.module,summary:base.module_mrp @@ -5497,7 +5557,7 @@ msgstr "" #. module: base #: model:res.groups,name:base.group_sale_salesman_all_leads msgid "See all Leads" -msgstr "" +msgstr "Visualizza tutte le lead" #. module: base #: model:res.country,name:base.ci @@ -5517,7 +5577,7 @@ msgstr "%w - Numero del giorno della settiamana [0(domenica),6]." #. module: base #: model:ir.ui.menu,name:base.menu_ir_filters msgid "User-defined Filters" -msgstr "" +msgstr "Filtri definiti dall'utente" #. module: base #: field:ir.actions.act_window_close,name:0 @@ -5568,13 +5628,13 @@ msgstr "Montserrat" #. module: base #: model:ir.module.module,shortdesc:base.module_decimal_precision msgid "Decimal Precision Configuration" -msgstr "" +msgstr "Configurazione precisione decimale" #. module: base #: model:ir.model,name:base.model_ir_actions_act_url #: selection:ir.ui.menu,action:0 msgid "ir.actions.act_url" -msgstr "" +msgstr "ir.actions.act_url" #. module: base #: model:ir.ui.menu,name:base.menu_translation_app @@ -5630,7 +5690,7 @@ msgstr "" #: model:ir.module.category,name:base.module_category_generic_modules_accounting #: view:res.company:0 msgid "Accounting" -msgstr "" +msgstr "Contabilità" #. module: base #: model:ir.module.module,description:base.module_base_vat @@ -5691,7 +5751,7 @@ msgstr "Web" #. module: base #: model:ir.module.module,shortdesc:base.module_lunch msgid "Lunch Orders" -msgstr "" +msgstr "Ordini pranzo" #. module: base #: selection:base.language.install,lang:0 @@ -5727,7 +5787,7 @@ msgstr "" #. module: base #: view:ir.translation:0 msgid "Comments" -msgstr "" +msgstr "Commenti" #. module: base #: model:res.country,name:base.et @@ -5737,7 +5797,7 @@ msgstr "Etiopia" #. module: base #: model:ir.module.category,name:base.module_category_authentication msgid "Authentication" -msgstr "" +msgstr "Autenticazione" #. module: base #: model:res.country,name:base.sj @@ -5753,7 +5813,7 @@ msgstr "ir.actions.wizard" #. module: base #: model:ir.module.module,shortdesc:base.module_web_kanban msgid "Base Kanban" -msgstr "" +msgstr "Base Kanban" #. module: base #: view:ir.actions.act_window:0 @@ -5771,7 +5831,7 @@ msgstr "Titolo" #: code:addons/base/ir/ir_fields.py:147 #, python-format msgid "true" -msgstr "" +msgstr "vero" #. module: base #: model:ir.model,name:base.model_base_language_install @@ -5781,7 +5841,7 @@ msgstr "Installa lingua" #. module: base #: model:res.partner.category,name:base.res_partner_category_11 msgid "Services" -msgstr "" +msgstr "Servizi" #. module: base #: view:ir.translation:0 @@ -5829,7 +5889,7 @@ msgstr "" #: model:ir.module.category,name:base.module_category_usability #: view:res.users:0 msgid "Usability" -msgstr "" +msgstr "Usabilità" #. module: base #: field:ir.actions.act_window,domain:0 @@ -5885,7 +5945,7 @@ msgstr "" #: code:addons/base/ir/workflow/workflow.py:99 #, python-format msgid "Operation forbidden" -msgstr "" +msgstr "Operazione proibita" #. module: base #: view:ir.actions.server:0 @@ -5915,6 +5975,12 @@ msgid "" "Allows users to create custom dashboard.\n" " " msgstr "" +"\n" +"Permette di creare all'utente una dashboard personalizzata.\n" +"========================================\n" +"\n" +"Permette agli utenti di creare dashboard personalizzate.\n" +" " #. module: base #: model:ir.actions.act_window,name:base.ir_access_act @@ -5948,7 +6014,7 @@ msgstr "Il nome del gruppo non può iniziare con '-'" #. module: base #: view:ir.module.module:0 msgid "Apps" -msgstr "" +msgstr "Apps" #. module: base #: view:ir.ui.view_sc:0 @@ -5977,7 +6043,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_be_hr_payroll msgid "Belgium - Payroll" -msgstr "" +msgstr "Busta paga - Belgio" #. module: base #: view:workflow.activity:0 @@ -5998,7 +6064,7 @@ msgstr "Titolare del conto" #. module: base #: model:ir.module.category,name:base.module_category_uncategorized msgid "Uncategorized" -msgstr "" +msgstr "Senza Categoria" #. module: base #: field:ir.attachment,res_name:0 @@ -6009,7 +6075,7 @@ msgstr "Nome Risorsa" #. module: base #: field:res.partner,is_company:0 msgid "Is a Company" -msgstr "" +msgstr "E' una azienda" #. module: base #: selection:ir.cron,interval_type:0 @@ -6048,6 +6114,10 @@ msgid "" "========================\n" "\n" msgstr "" +"\n" +"Vista Kanban Web OpenERP \n" +"========================\n" +"\n" #. module: base #: code:addons/base/ir/ir_fields.py:183 @@ -6064,7 +6134,7 @@ msgstr "" #. module: base #: view:res.partner.bank:0 msgid "My Banks" -msgstr "" +msgstr "Mie banche" #. module: base #: model:ir.module.module,description:base.module_hr_recruitment @@ -6089,7 +6159,7 @@ msgstr "" #. module: base #: sql_constraint:ir.filters:0 msgid "Filter names must be unique" -msgstr "" +msgstr "Il nome del filtro deve essere univoco" #. module: base #: help:multi_company.default,object_id:0 @@ -6099,12 +6169,12 @@ msgstr "Oggetto soggetto a questa regola" #. module: base #: selection:ir.actions.act_window,target:0 msgid "Inline View" -msgstr "" +msgstr "Vista inline" #. module: base #: field:ir.filters,is_default:0 msgid "Default filter" -msgstr "" +msgstr "Filtro default" #. module: base #: report:ir.module.reference:0 @@ -6119,7 +6189,7 @@ msgstr "Nome Menu" #. module: base #: field:ir.values,key2:0 msgid "Qualifier" -msgstr "" +msgstr "Qualificatore" #. module: base #: model:ir.module.module,description:base.module_l10n_be_coda @@ -6221,7 +6291,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_auth_reset_password msgid "Reset Password" -msgstr "" +msgstr "Reimposta Password" #. module: base #: view:ir.attachment:0 @@ -6238,7 +6308,7 @@ msgstr "Malesia" #: code:addons/base/ir/ir_sequence.py:131 #, python-format msgid "Increment number must not be zero." -msgstr "" +msgstr "Il numero di incremento deve essere zero" #. module: base #: model:ir.module.module,shortdesc:base.module_account_cancel @@ -6248,7 +6318,7 @@ msgstr "" #. module: base #: field:res.partner,tz_offset:0 msgid "Timezone offset" -msgstr "" +msgstr "Offset Timezone" #. module: base #: model:ir.module.module,description:base.module_marketing_campaign @@ -6386,12 +6456,12 @@ msgstr "Menu Creati" #: view:ir.module.module:0 #, python-format msgid "Uninstall" -msgstr "" +msgstr "Disinstalla" #. module: base #: model:ir.module.module,shortdesc:base.module_account_budget msgid "Budgets Management" -msgstr "" +msgstr "Gestione budget" #. module: base #: field:workflow.triggers,workitem_id:0 @@ -6401,7 +6471,7 @@ msgstr "Oggetto di Lavoro" #. module: base #: model:ir.module.module,shortdesc:base.module_anonymization msgid "Database Anonymization" -msgstr "" +msgstr "Anonimizzazione database" #. module: base #: selection:ir.mail_server,smtp_encryption:0 diff --git a/openerp/addons/base/i18n/pl.po b/openerp/addons/base/i18n/pl.po index 09ebe11da87..b7c60e7f64f 100644 --- a/openerp/addons/base/i18n/pl.po +++ b/openerp/addons/base/i18n/pl.po @@ -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:42+0000\n" +"PO-Revision-Date: 2012-12-11 11:47+0000\n" "Last-Translator: Grzegorz Grzelak (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-04 04:58+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:38+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing @@ -24,6 +24,10 @@ msgid "" "================================================\n" " " msgstr "" +"\n" +"Moduł do wprowadzania i drukowania czeków.\n" +"================================================\n" +" " #. module: base #: model:res.country,name:base.sh @@ -59,7 +63,7 @@ msgstr "Architektura widoku" #. module: base #: model:ir.module.module,summary:base.module_sale_stock msgid "Quotation, Sale Orders, Delivery & Invoicing Control" -msgstr "" +msgstr "Zarządzanie ofertami, zamówieniami sprzedaży i fakturami" #. module: base #: selection:ir.sequence,implementation:0 @@ -86,12 +90,12 @@ msgstr "Pomaga prowadzić projekty i zadania, pomaga w planowaniu itd..." #. module: base #: model:ir.module.module,summary:base.module_point_of_sale msgid "Touchscreen Interface for Shops" -msgstr "" +msgstr "Interfejs ekranu dotykowego dla sklepu" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_in_hr_payroll msgid "Indian Payroll" -msgstr "" +msgstr "Hinduska lista płac" #. module: base #: help:ir.cron,model:0 @@ -121,11 +125,22 @@ msgid "" " * Product Attributes\n" " " msgstr "" +"\n" +"Moduł dodaje producentów i atrybuty do formularza produktu.\n" +"====================================================================\n" +"\n" +"Możesz definiować w produkcie następujące parametry:\n" +"-----------------------------------------------\n" +" * Producent\n" +" * Nazwa u producenta\n" +" * Kod producenta\n" +" * Atrybuty\n" +" " #. module: base #: field:ir.actions.client,params:0 msgid "Supplementary arguments" -msgstr "" +msgstr "Dodatkowe argumenty" #. module: base #: model:ir.module.module,description:base.module_google_base_account @@ -134,11 +149,14 @@ msgid "" "The module adds google user in res user.\n" "========================================\n" msgstr "" +"\n" +"Moduł dodaje użytkownika google do res user.\n" +"========================================\n" #. module: base #: help:res.partner,employee:0 msgid "Check this box if this contact is an Employee." -msgstr "" +msgstr "Zaznacz tę opcję, jeśli kontakt jest Pracownikiem" #. module: base #: help:ir.model.fields,domain:0 @@ -147,6 +165,9 @@ msgid "" "specified as a Python expression defining a list of triplets. For example: " "[('color','=','red')]" msgstr "" +"Opcjonalna domena do ograniczenia wartości dla pól relacyjnych określana " +"jako wyrażenie Python definiująca listę triple. Na przykład: " +"[('color','=','red')]" #. module: base #: field:res.partner,ref:0 @@ -166,12 +187,12 @@ msgstr "Docelowe okno" #. module: base #: field:ir.actions.report.xml,report_rml:0 msgid "Main Report File Path" -msgstr "" +msgstr "Główna ścieżka plików raportów" #. module: base #: model:ir.module.module,shortdesc:base.module_sale_analytic_plans msgid "Sales Analytic Distribution" -msgstr "" +msgstr "Analityczny podział sprzedaży" #. module: base #: model:ir.module.module,description:base.module_hr_timesheet_invoice @@ -229,6 +250,8 @@ msgid "" "Properties of base fields cannot be altered in this manner! Please modify " "them through Python code, preferably through a custom addon!" msgstr "" +"Właściwości pól podstawowych nie mogą być modyfikowane w ten sposób! " +"Modyfikuj je kodem Python najlepiej jako własny moduł!" #. module: base #: code:addons/osv.py:130 @@ -287,7 +310,7 @@ msgstr "" #. module: base #: model:res.groups,name:base.group_multi_currency msgid "Multi Currencies" -msgstr "" +msgstr "Wielowalutowość" #. module: base #: model:ir.module.module,description:base.module_l10n_cl @@ -310,7 +333,7 @@ msgstr "Sprzedaż" msgid "" "The internal user that is in charge of communicating with this contact if " "any." -msgstr "" +msgstr "Użytkownik odpowiedzialny za komunikację z tym kontaktem." #. module: base #: view:res.partner:0 @@ -422,6 +445,8 @@ msgid "" "There is already a shared filter set as default for %(model)s, delete or " "change it before setting a new default" msgstr "" +"Jest już współdzielony domyślny filtr dla modelu %(model)s, usuń lub zmień " +"go przed ustawieniem nowego filtru domyślnego" #. module: base #: code:addons/orm.py:2648 @@ -514,12 +539,12 @@ msgstr "" #. module: base #: field:ir.model.relation,name:0 msgid "Relation Name" -msgstr "" +msgstr "Nazwa relacji" #. module: base #: view:ir.rule:0 msgid "Create Access Right" -msgstr "" +msgstr "Utwórz prawa do konta" #. module: base #: model:res.country,name:base.tv @@ -559,7 +584,7 @@ msgstr "" #. module: base #: view:workflow.transition:0 msgid "Workflow Transition" -msgstr "" +msgstr "Przejście obiegu" #. module: base #: model:res.country,name:base.gf @@ -569,7 +594,7 @@ msgstr "Gujana Francuska" #. module: base #: model:ir.module.module,summary:base.module_hr msgid "Jobs, Departments, Employees Details" -msgstr "" +msgstr "Stanowiska, Wydziały, Pracownicy" #. module: base #: model:ir.module.module,description:base.module_analytic @@ -836,7 +861,7 @@ msgstr "Jordania" #. module: base #: help:ir.cron,nextcall:0 msgid "Next planned execution date for this job." -msgstr "" +msgstr "Nastepne planowane wykonanie tej czynności." #. module: base #: model:res.country,name:base.er @@ -901,7 +926,7 @@ msgstr "" #: field:base.language.export,name:0 #: field:ir.attachment,datas_fname:0 msgid "File Name" -msgstr "" +msgstr "Nazwa pliku" #. module: base #: model:res.country,name:base.rs @@ -990,13 +1015,13 @@ msgstr "Współdzielone repozytoria (WebDAV)" #. module: base #: view:res.users:0 msgid "Email Preferences" -msgstr "" +msgstr "Preferencje email" #. module: base #: code:addons/base/ir/ir_fields.py:196 #, python-format msgid "'%s' does not seem to be a valid date for field '%%(field)s'" -msgstr "" +msgstr "'%s' nie jest poprawną datą dla pola '%%(field)s'" #. module: base #: view:res.partner:0 @@ -1115,12 +1140,12 @@ msgstr "Typy referencji zgłoszeń" #. module: base #: model:ir.module.module,shortdesc:base.module_google_base_account msgid "Google Users" -msgstr "" +msgstr "Uzytkownicy Google" #. module: base #: model:ir.module.module,shortdesc:base.module_fleet msgid "Fleet Management" -msgstr "" +msgstr "Zarządzanie flotą" #. module: base #: help:ir.server.object.lines,value:0 @@ -1140,7 +1165,7 @@ msgstr "" #. module: base #: field:ir.rule,perm_read:0 msgid "Apply for Read" -msgstr "" +msgstr "Zastosuj do czytania" #. module: base #: model:res.country,name:base.mn @@ -1170,7 +1195,7 @@ msgstr "" #: code:addons/base/ir/ir_model.py:727 #, python-format msgid "Document model" -msgstr "" +msgstr "Model dokumentu" #. module: base #: view:res.lang:0 @@ -1220,18 +1245,18 @@ msgstr "Nazwa kraju musi być unikalna !" #. module: base #: field:ir.module.module,installed_version:0 msgid "Latest Version" -msgstr "" +msgstr "Ostatnia wersja" #. module: base #: view:ir.rule:0 msgid "Delete Access Right" -msgstr "" +msgstr "Usuń prawa dostępu" #. module: base #: code:addons/base/ir/ir_mail_server.py:213 #, python-format msgid "Connection test failed!" -msgstr "" +msgstr "Testowe połączenie nie powiodło się !" #. module: base #: selection:ir.actions.server,state:0 @@ -1252,7 +1277,7 @@ msgstr "Wyspy Kajmany" #. module: base #: view:ir.rule:0 msgid "Record Rule" -msgstr "" +msgstr "Reguła rekordu" #. module: base #: model:res.country,name:base.kr @@ -1280,7 +1305,7 @@ msgstr "Współautorzy" #. module: base #: field:ir.rule,perm_unlink:0 msgid "Apply for Delete" -msgstr "" +msgstr "Zastosuj do usunięcia" #. module: base #: selection:ir.property,type:0 @@ -1295,7 +1320,7 @@ msgstr "Widoczne" #. module: base #: model:ir.actions.client,name:base.action_client_base_menu msgid "Open Settings Menu" -msgstr "" +msgstr "Otórz menu Ustawień" #. module: base #: selection:base.language.install,lang:0 @@ -1408,7 +1433,7 @@ msgstr "Wyspy Marshalla" #: code:addons/base/ir/ir_model.py:421 #, python-format msgid "Changing the model of a field is forbidden!" -msgstr "" +msgstr "Zmiana modelu dla pola jest niedozwolona!" #. module: base #: model:res.country,name:base.ht @@ -1459,7 +1484,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_crm_claim msgid "Claims Management" -msgstr "" +msgstr "Zarządzanie serwisem" #. module: base #: model:ir.module.module,description:base.module_document_webdav @@ -1583,7 +1608,7 @@ msgstr "Brak języka z kodem \"%s\"" #: model:ir.module.category,name:base.module_category_social_network #: model:ir.module.module,shortdesc:base.module_mail msgid "Social Network" -msgstr "" +msgstr "Serwis społecznościowy" #. module: base #: view:res.lang:0 @@ -1593,7 +1618,7 @@ msgstr "%Y - Rok z czterocyfrowo" #. module: base #: view:res.company:0 msgid "Report Footer Configuration" -msgstr "" +msgstr "Konfiguracja stopki raportów" #. module: base #: field:ir.translation,comments:0 @@ -1661,7 +1686,7 @@ msgstr "" #. module: base #: help:res.partner,website:0 msgid "Website of Partner or Company" -msgstr "" +msgstr "Strona web partnera firmy" #. module: base #: help:base.language.install,overwrite:0 @@ -1708,7 +1733,7 @@ msgstr "" #. module: base #: model:ir.module.module,summary:base.module_sale msgid "Quotations, Sale Orders, Invoicing" -msgstr "" +msgstr "Oferty, Zamówienia sprzedaży, Fakturowanie" #. module: base #: field:res.users,login:0 @@ -1885,7 +1910,7 @@ msgstr "Dni" #. module: base #: model:ir.module.module,summary:base.module_fleet msgid "Vehicle, leasing, insurances, costs" -msgstr "" +msgstr "Pojazdy, leasing, ubezpieczenie, koszty" #. module: base #: view:ir.model.access:0 @@ -1925,6 +1950,8 @@ msgid "" "Check this box if this contact is a supplier. If it's not checked, purchase " "people will not see it when encoding a purchase order." msgstr "" +"Zaznacz te opcję, jeśli kontakt jest dostawcą. Jeśli nie zaznaczysz, to " +"zakupowcy nie będą go widzieli przy tworzeniu zamówienia zakupu." #. module: base #: model:ir.module.module,shortdesc:base.module_hr_evaluation @@ -2109,12 +2136,12 @@ msgstr "Pełna ścieżka" #. module: base #: view:base.language.export:0 msgid "The next step depends on the file format:" -msgstr "" +msgstr "Następny krok zależy od formatu pliku:" #. module: base #: model:ir.module.module,shortdesc:base.module_idea msgid "Ideas" -msgstr "" +msgstr "Pomysły" #. module: base #: view:res.lang:0 @@ -2207,7 +2234,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_subscription msgid "Recurring Documents" -msgstr "" +msgstr "Dokumenty rekurencyjne" #. module: base #: model:res.country,name:base.bs @@ -2222,7 +2249,7 @@ msgstr "" #. module: base #: model:ir.module.category,name:base.module_category_tools msgid "Extra Tools" -msgstr "" +msgstr "Dodatkowe narzędzia" #. module: base #: view:ir.attachment:0 @@ -2289,6 +2316,8 @@ msgstr "" msgid "" "No matching record found for %(field_type)s '%(value)s' in field '%%(field)s'" msgstr "" +"Nie znaleziono rekordu odpowiadającego %(field_type)s '%(value)s' w polu " +"'%%(field)s'" #. module: base #: model:ir.actions.act_window,help:base.action_ui_view @@ -2302,7 +2331,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_base_setup msgid "Initial Setup Tools" -msgstr "" +msgstr "Narzędzia ustawień początkowych" #. module: base #: field:ir.actions.act_window,groups_id:0 @@ -2572,7 +2601,7 @@ msgstr "" #. module: base #: field:res.company,custom_footer:0 msgid "Custom Footer" -msgstr "" +msgstr "Własna Stopka" #. module: base #: model:ir.module.module,shortdesc:base.module_sale_crm @@ -2633,7 +2662,7 @@ msgstr "Nazwa skrótu" #. module: base #: field:res.partner,contact_address:0 msgid "Complete Address" -msgstr "" +msgstr "Kompletny adres" #. module: base #: help:ir.actions.act_window,limit:0 @@ -2705,7 +2734,7 @@ msgstr "ID rekordu" #. module: base #: view:ir.filters:0 msgid "My Filters" -msgstr "" +msgstr "Moje filtry" #. module: base #: field:ir.actions.server,email:0 @@ -2725,6 +2754,7 @@ msgstr "" #, python-format msgid "Found multiple matches for field '%%(field)s' (%d matches)" msgstr "" +"Znaleziono wiele rekordów odpowiadających polu '%%(field)s' (%d matches)" #. module: base #: selection:base.language.install,lang:0 @@ -2758,7 +2788,7 @@ msgstr "" #. module: base #: model:ir.module.module,summary:base.module_contacts msgid "Contacts, People and Companies" -msgstr "" +msgstr "Kontakty, Ludzie i Firmy" #. module: base #: model:res.country,name:base.tt @@ -2791,7 +2821,7 @@ msgstr "Menedżer" #: code:addons/base/ir/ir_model.py:718 #, python-format msgid "Sorry, you are not allowed to access this document." -msgstr "" +msgstr "Nie jesteś upoważniony do tego dokumentu." #. module: base #: model:res.country,name:base.py @@ -2806,7 +2836,7 @@ msgstr "Fidżi" #. module: base #: view:ir.actions.report.xml:0 msgid "Report Xml" -msgstr "" +msgstr "Raport Xml" #. module: base #: model:ir.module.module,description:base.module_purchase @@ -2877,12 +2907,12 @@ msgstr "Dziedziczone" #: code:addons/base/ir/ir_fields.py:147 #, python-format msgid "yes" -msgstr "" +msgstr "tak" #. module: base #: field:ir.model.fields,serialization_field_id:0 msgid "Serialization Field" -msgstr "" +msgstr "Pole serializacji" #. module: base #: model:ir.module.module,description:base.module_l10n_be_hr_payroll @@ -2907,7 +2937,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' nie jest liczbą całkowitą dla pola '%%(field)s'" #. module: base #: model:ir.module.category,description:base.module_category_report_designer @@ -3141,7 +3171,7 @@ msgstr "" #. module: base #: model:ir.module.module,summary:base.module_hr_expense msgid "Expenses Validation, Invoicing" -msgstr "" +msgstr "Zatwierdzanie wydatków, Fakturowanie" #. module: base #: model:ir.module.module,description:base.module_l10n_be_hr_payroll_account @@ -3160,7 +3190,7 @@ msgstr "Armenia" #. module: base #: model:ir.module.module,summary:base.module_hr_evaluation msgid "Periodical Evaluations, Appraisals, Surveys" -msgstr "" +msgstr "Okresowa ocena, Podwyżki, Ankiety" #. module: base #: model:ir.actions.act_window,name:base.ir_property_form @@ -3209,7 +3239,7 @@ msgstr "Szwecja" #. module: base #: field:ir.actions.report.xml,report_file:0 msgid "Report File" -msgstr "" +msgstr "Plik raportu" #. module: base #: selection:ir.actions.act_window.view,view_mode:0 @@ -3242,7 +3272,7 @@ msgstr "" #: code:addons/orm.py:3839 #, python-format msgid "Missing document(s)" -msgstr "" +msgstr "Brakujące dokumenty" #. module: base #: model:ir.model,name:base.model_res_partner_bank_type @@ -3279,7 +3309,7 @@ msgstr "Kalendarz" #. module: base #: model:ir.module.category,name:base.module_category_knowledge_management msgid "Knowledge" -msgstr "" +msgstr "Wiedza" #. module: base #: field:workflow.activity,signal_send:0 @@ -3333,7 +3363,7 @@ msgstr "" #. module: base #: model:res.groups,name:base.group_survey_user msgid "Survey / User" -msgstr "" +msgstr "Ankieta / Użytkownik" #. module: base #: view:ir.module.module:0 @@ -3385,7 +3415,7 @@ msgstr "Kod waluty (ISO 4217)" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_contract msgid "Employee Contracts" -msgstr "" +msgstr "Umowy z pracownikami" #. module: base #: view:ir.actions.server:0 @@ -3423,7 +3453,7 @@ msgstr "" #: model:ir.module.module,shortdesc:base.module_survey #: model:ir.ui.menu,name:base.next_id_10 msgid "Survey" -msgstr "" +msgstr "Ankieta" #. module: base #: selection:base.language.install,lang:0 @@ -3438,7 +3468,7 @@ msgstr "" #. module: base #: view:base.language.export:0 msgid "Export Complete" -msgstr "" +msgstr "Eksport zakończony" #. module: base #: help:ir.ui.view_sc,res_id:0 @@ -3465,7 +3495,7 @@ msgstr "" #. module: base #: view:ir.config_parameter:0 msgid "System Properties" -msgstr "" +msgstr "Właściwości systemu" #. module: base #: field:ir.sequence,prefix:0 @@ -3509,12 +3539,12 @@ msgstr "Wybierz pakiet modułu do importu (plik .zip)" #. module: base #: view:ir.filters:0 msgid "Personal" -msgstr "" +msgstr "Osobiste" #. module: base #: field:base.language.export,modules:0 msgid "Modules To Export" -msgstr "" +msgstr "Moduły do eksportu" #. module: base #: model:res.country,name:base.mt @@ -3526,7 +3556,7 @@ msgstr "Malta" #, python-format msgid "" "Only users with the following access level are currently allowed to do that" -msgstr "" +msgstr "Tylko użytkownicy z tymi uprawnieniami mogą to wykonać" #. module: base #: field:ir.actions.server,fields_lines:0 @@ -3617,7 +3647,7 @@ msgstr "Antarktyka" #. module: base #: view:res.partner:0 msgid "Persons" -msgstr "" +msgstr "Osoby" #. module: base #: view:base.language.import:0 @@ -3675,7 +3705,7 @@ msgstr "" #: field:res.company,rml_footer:0 #: field:res.company,rml_footer_readonly:0 msgid "Report Footer" -msgstr "" +msgstr "Stopka raportu" #. module: base #: selection:res.lang,direction:0 @@ -3794,7 +3824,7 @@ msgstr "" #: code:addons/orm.py:3870 #, python-format msgid "Access Denied" -msgstr "" +msgstr "Brak dostępu" #. module: base #: field:res.company,name:0 @@ -4058,7 +4088,7 @@ msgstr "Liechtenstein" #. module: base #: model:ir.module.module,shortdesc:base.module_project_issue_sheet msgid "Timesheet on Issues" -msgstr "" +msgstr "Karta czasu pracy dla problemów" #. module: base #: model:res.partner.title,name:base.res_partner_title_ltd @@ -4089,7 +4119,7 @@ msgstr "Współdziel dowolny dokument" #. module: base #: model:ir.module.module,summary:base.module_crm msgid "Leads, Opportunities, Phone Calls" -msgstr "" +msgstr "Sygnały, Szanse, Rozmowy telefoniczne" #. module: base #: view:res.lang:0 @@ -4183,7 +4213,7 @@ msgstr "Plany kont" #. module: base #: model:ir.ui.menu,name:base.menu_event_main msgid "Events Organization" -msgstr "" +msgstr "Organizacja wydarzeń" #. module: base #: model:ir.actions.act_window,name:base.action_partner_customer_form @@ -4211,7 +4241,7 @@ msgstr "Pole Podstawowe" #. module: base #: model:ir.module.category,name:base.module_category_managing_vehicles_and_contracts msgid "Managing vehicles and contracts" -msgstr "" +msgstr "Zarządzanie pojazdami i umowami" #. module: base #: model:ir.module.module,description:base.module_base_setup @@ -4326,7 +4356,7 @@ msgstr "" #. module: base #: field:res.partner,parent_id:0 msgid "Related Company" -msgstr "" +msgstr "Powiązana firma" #. module: base #: help:ir.actions.act_url,help:0 @@ -4365,12 +4395,12 @@ msgstr "Wyzwól obiekt" #. module: base #: sql_constraint:ir.sequence.type:0 msgid "`code` must be unique." -msgstr "" +msgstr "`code` musi być unikalne." #. module: base #: model:ir.module.module,shortdesc:base.module_knowledge msgid "Knowledge Management System" -msgstr "" +msgstr "System zarządzania wiedzą" #. module: base #: view:workflow.activity:0 @@ -4381,7 +4411,7 @@ msgstr "Przejścia wejściowe" #. module: base #: field:ir.values,value_unpickle:0 msgid "Default value or action reference" -msgstr "" +msgstr "Wartość domyślna lub odnośnik akcji" #. module: base #: model:res.country,name:base.sr @@ -4464,7 +4494,7 @@ msgstr "" #. module: base #: field:ir.module.module,latest_version:0 msgid "Installed Version" -msgstr "" +msgstr "Zainstalowana wersja" #. module: base #: field:ir.module.module,license:0 @@ -4757,7 +4787,7 @@ msgstr "Obiegi" #. module: base #: model:ir.ui.menu,name:base.next_id_73 msgid "Purchase" -msgstr "" +msgstr "Zakupy" #. module: base #: selection:base.language.install,lang:0 @@ -4891,7 +4921,7 @@ msgstr "Standardowe" #. module: base #: model:ir.module.module,shortdesc:base.module_document_ftp msgid "Shared Repositories (FTP)" -msgstr "" +msgstr "Współdzielone repozytoria (FTP)" #. module: base #: model:res.country,name:base.sm @@ -4916,7 +4946,7 @@ msgstr "Ustaw NULL" #. module: base #: view:res.users:0 msgid "Save" -msgstr "" +msgstr "Zapisz" #. module: base #: field:ir.actions.report.xml,report_xml:0 @@ -5014,7 +5044,7 @@ msgstr "" #. module: base #: help:res.partner.bank,company_id:0 msgid "Only if this bank account belong to your company" -msgstr "" +msgstr "Tylko, jeśli to konto bankowe nalezy do twojej firmy" #. module: base #: code:addons/base/ir/ir_fields.py:338 @@ -5093,7 +5123,7 @@ msgstr "Kursy" #. module: base #: model:ir.module.module,shortdesc:base.module_email_template msgid "Email Templates" -msgstr "" +msgstr "Szablony wiadomości" #. module: base #: model:res.country,name:base.sy @@ -5193,12 +5223,12 @@ msgstr "" #. module: base #: model:ir.ui.menu,name:base.menu_partner_category_form msgid "Partner Tags" -msgstr "" +msgstr "Tagi partnera" #. module: base #: view:res.company:0 msgid "Preview Header/Footer" -msgstr "" +msgstr "Podgląd nagłówka/stopki" #. module: base #: field:ir.ui.menu,parent_id:0 @@ -5209,7 +5239,7 @@ msgstr "Menu nadrzędne" #. module: base #: field:res.partner.bank,owner_name:0 msgid "Account Owner Name" -msgstr "" +msgstr "Nazwa posiadacza konta" #. module: base #: code:addons/base/ir/ir_model.py:412 @@ -5241,7 +5271,7 @@ msgstr "" #. module: base #: view:ir.rule:0 msgid "Write Access Right" -msgstr "" +msgstr "Prawo zapisu" #. module: base #: model:ir.actions.act_window,help:base.action_res_groups @@ -5369,7 +5399,7 @@ msgstr "Uruchom kreatora konfiguracji" #. module: base #: model:ir.module.module,summary:base.module_mrp msgid "Manufacturing Orders, Bill of Materials, Routing" -msgstr "" +msgstr "Zamówienia produkcji, Zestawienia materiałowe, Marszruty" #. module: base #: view:ir.module.module:0 @@ -5437,7 +5467,7 @@ msgstr "" #. module: base #: model:res.groups,name:base.group_sale_salesman_all_leads msgid "See all Leads" -msgstr "" +msgstr "Widzi wszystkie sygnały" #. module: base #: model:res.country,name:base.ci @@ -5457,7 +5487,7 @@ msgstr "%w - Numer dnia tygodnia [0(Niedziela),6]." #. module: base #: model:ir.ui.menu,name:base.menu_ir_filters msgid "User-defined Filters" -msgstr "" +msgstr "Filtry definiowane" #. module: base #: field:ir.actions.act_window_close,name:0 @@ -5631,7 +5661,7 @@ msgstr "Sieć" #. module: base #: model:ir.module.module,shortdesc:base.module_lunch msgid "Lunch Orders" -msgstr "" +msgstr "Zamówienia obiadów" #. module: base #: selection:base.language.install,lang:0 @@ -5667,7 +5697,7 @@ msgstr "" #. module: base #: view:ir.translation:0 msgid "Comments" -msgstr "" +msgstr "Komentarz" #. module: base #: model:res.country,name:base.et @@ -5677,7 +5707,7 @@ msgstr "Etiopia" #. module: base #: model:ir.module.category,name:base.module_category_authentication msgid "Authentication" -msgstr "" +msgstr "Uwierzytelnienie" #. module: base #: model:res.country,name:base.sj @@ -5693,7 +5723,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_web_kanban msgid "Base Kanban" -msgstr "" +msgstr "Kanban podstawowy" #. module: base #: view:ir.actions.act_window:0 @@ -5721,7 +5751,7 @@ msgstr "Instaluj język" #. module: base #: model:res.partner.category,name:base.res_partner_category_11 msgid "Services" -msgstr "" +msgstr "Usługi" #. module: base #: view:ir.translation:0 @@ -5825,7 +5855,7 @@ msgstr "" #: code:addons/base/ir/workflow/workflow.py:99 #, python-format msgid "Operation forbidden" -msgstr "" +msgstr "Opracja niedozwolona" #. module: base #: view:ir.actions.server:0 @@ -5947,7 +5977,7 @@ msgstr "Nazwa zasobu" #. module: base #: field:res.partner,is_company:0 msgid "Is a Company" -msgstr "" +msgstr "Jest firmą" #. module: base #: selection:ir.cron,interval_type:0 @@ -5991,18 +6021,18 @@ msgstr "" #: code:addons/base/ir/ir_fields.py:183 #, python-format msgid "'%s' does not seem to be a number for field '%%(field)s'" -msgstr "" +msgstr "'%s' nie jest liczbą dla pola '%%(field)s'" #. module: base #: help:res.country.state,name:0 msgid "" "Administrative divisions of a country. E.g. Fed. State, Departement, Canton" -msgstr "" +msgstr "Jednostka administracyjnego podziału kraju. Np. Stan, Województwo" #. module: base #: view:res.partner.bank:0 msgid "My Banks" -msgstr "" +msgstr "Moje banki" #. module: base #: model:ir.module.module,description:base.module_hr_recruitment @@ -6027,7 +6057,7 @@ msgstr "" #. module: base #: sql_constraint:ir.filters:0 msgid "Filter names must be unique" -msgstr "" +msgstr "Nazwy filtrów muszą być unikalne" #. module: base #: help:multi_company.default,object_id:0 @@ -6042,7 +6072,7 @@ msgstr "" #. module: base #: field:ir.filters,is_default:0 msgid "Default filter" -msgstr "" +msgstr "Domyślny filtr" #. module: base #: report:ir.module.reference:0 @@ -6057,7 +6087,7 @@ msgstr "Nazwa Menu" #. module: base #: field:ir.values,key2:0 msgid "Qualifier" -msgstr "" +msgstr "Kwalifikator" #. module: base #: model:ir.module.module,description:base.module_l10n_be_coda @@ -6159,7 +6189,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_auth_reset_password msgid "Reset Password" -msgstr "" +msgstr "Zresetuj hasło" #. module: base #: view:ir.attachment:0 @@ -6176,17 +6206,17 @@ msgstr "Malezja" #: code:addons/base/ir/ir_sequence.py:131 #, python-format msgid "Increment number must not be zero." -msgstr "" +msgstr "Liczba inkrementacji nie może być zero." #. module: base #: model:ir.module.module,shortdesc:base.module_account_cancel msgid "Cancel Journal Entries" -msgstr "" +msgstr "Anuluj zapisy" #. module: base #: field:res.partner,tz_offset:0 msgid "Timezone offset" -msgstr "" +msgstr "Przesunięcie strefy czasowej" #. module: base #: model:ir.module.module,description:base.module_marketing_campaign @@ -6248,7 +6278,7 @@ msgstr "" #. module: base #: selection:ir.actions.todo,type:0 msgid "Launch Automatically" -msgstr "" +msgstr "Uruchom automatycznie" #. module: base #: help:ir.model.fields,translate:0 @@ -6563,7 +6593,7 @@ msgstr "" #. module: base #: model:res.groups,name:base.group_partner_manager msgid "Contact Creation" -msgstr "" +msgstr "Tworzenie kontaktu" #. module: base #: view:ir.module.module:0 @@ -6619,7 +6649,7 @@ msgstr "" #. module: base #: view:ir.sequence:0 msgid "Week of the Year: %(woy)s" -msgstr "" +msgstr "Tydzień roku: %(woy)s" #. module: base #: field:res.users,id:0 @@ -6688,7 +6718,7 @@ msgstr "Tytuły partnera" #: code:addons/base/ir/ir_fields.py:228 #, python-format msgid "Use the format '%s'" -msgstr "" +msgstr "Stosuje format '%s'" #. module: base #: help:ir.actions.act_window,auto_refresh:0 @@ -6698,7 +6728,7 @@ msgstr "Dodaj autoodświeżanie do widoku" #. module: base #: model:ir.module.module,shortdesc:base.module_crm_profiling msgid "Customer Profiling" -msgstr "" +msgstr "Profilowanie klienta" #. module: base #: selection:ir.cron,interval_type:0 @@ -6720,12 +6750,12 @@ msgstr "Elementy obiegu" #: code:addons/base/res/res_bank.py:195 #, python-format msgid "Invalid Bank Account Type Name format." -msgstr "" +msgstr "Niedozowlony format nazwy typu konta bankowego" #. module: base #: view:ir.filters:0 msgid "Filters visible only for one user" -msgstr "" +msgstr "Filtry widoczne tylko dla jednego użytkownika" #. module: base #: model:ir.model,name:base.model_ir_attachment @@ -6776,7 +6806,7 @@ msgstr "" #. module: base #: selection:res.currency,position:0 msgid "After Amount" -msgstr "" +msgstr "Za kwotą" #. module: base #: selection:base.language.install,lang:0 @@ -6796,6 +6826,7 @@ msgstr "" #: model:res.groups,comment:base.group_hr_user msgid "the user will be able to approve document created by employees." msgstr "" +"użytkownik będzie mógł aprobować dokumenty tworzone przez pracowników" #. module: base #: field:ir.ui.menu,needaction_enabled:0 @@ -6961,7 +6992,7 @@ msgstr "Kopia z" #. module: base #: field:ir.model.data,display_name:0 msgid "Record Name" -msgstr "" +msgstr "Nazwa rekordu" #. module: base #: model:ir.model,name:base.model_ir_actions_client @@ -7134,7 +7165,7 @@ msgstr "" #. module: base #: field:res.partner,function:0 msgid "Job Position" -msgstr "" +msgstr "Stanowisko" #. module: base #: view:res.partner:0 @@ -7241,7 +7272,7 @@ msgstr "" #. module: base #: model:res.partner.category,name:base.res_partner_category_14 msgid "Manufacturer" -msgstr "" +msgstr "Producent" #. module: base #: help:res.users,company_id:0 @@ -7327,7 +7358,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_account_analytic_default msgid "Account Analytic Defaults" -msgstr "" +msgstr "Domyślne konta analityczne" #. module: base #: selection:ir.ui.view,type:0 @@ -7360,7 +7391,7 @@ msgstr "" #. module: base #: view:ir.actions.todo:0 msgid "Wizards to be Launched" -msgstr "" +msgstr "Kreatory do uruchomienia" #. module: base #: model:res.country,name:base.bt @@ -7666,7 +7697,7 @@ msgstr "Pole własne" #. module: base #: model:ir.module.module,summary:base.module_account_accountant msgid "Financial and Analytic Accounting" -msgstr "" +msgstr "Kisęgowość podstawowa i analityczna" #. module: base #: model:ir.module.module,shortdesc:base.module_portal_project @@ -7689,7 +7720,7 @@ msgstr "" #: view:res.partner:0 #: field:res.partner,user_id:0 msgid "Salesperson" -msgstr "" +msgstr "Sprzedawca" #. module: base #: view:res.lang:0 @@ -7748,7 +7779,7 @@ msgstr "Opcjonalne hasło dla SMTP" #: code:addons/base/ir/ir_model.py:719 #, python-format msgid "Sorry, you are not allowed to modify this document." -msgstr "" +msgstr "Niestety, nie możesz modyfikować tego dokumentu." #. module: base #: code:addons/base/res/res_config.py:350 @@ -7818,7 +7849,7 @@ msgstr "Etykiety" msgid "" "Select this if you want to set company's address information for this " "contact" -msgstr "" +msgstr "Wybierz jeśli chcesz ustawić adres firmy dla tego kontaktu" #. module: base #: field:ir.default,field_name:0 @@ -7838,7 +7869,7 @@ msgstr "" #. module: base #: model:res.partner.category,name:base.res_partner_category_13 msgid "Distributor" -msgstr "" +msgstr "Dystrybutor" #. module: base #: help:ir.actions.server,subject:0 @@ -7871,7 +7902,7 @@ msgstr "" #. module: base #: view:res.partner.bank:0 msgid "Bank accounts belonging to one of your companies" -msgstr "" +msgstr "Konto bankowe należące do jednej z twoich firm" #. module: base #: model:ir.module.module,description:base.module_account_analytic_plans @@ -7948,7 +7979,7 @@ msgstr "" #. module: base #: model:ir.module.module,summary:base.module_hr_recruitment msgid "Jobs, Recruitment, Applications, Job Interviews" -msgstr "" +msgstr "Stawnowiska, Zatrudnienie, Podania, ROzmowy kwalifikacyjne" #. module: base #: code:addons/base/module/module.py:513 @@ -7970,7 +8001,7 @@ msgstr "Aktywność docelowa" msgid "" "Determines where the currency symbol should be placed after or before the " "amount." -msgstr "" +msgstr "Określa, czy symbol waluty ma być przed, czy za liczbą." #. module: base #: model:ir.module.module,shortdesc:base.module_pad_project @@ -7993,7 +8024,7 @@ msgstr "Ostrzeżenie !" #. module: base #: view:ir.rule:0 msgid "Full Access Right" -msgstr "" +msgstr "Pełne prawa" #. module: base #: field:res.partner.category,parent_id:0 @@ -8057,7 +8088,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_web_graph msgid "Graph Views" -msgstr "" +msgstr "Widoki wykresowe" #. module: base #: help:ir.model.relation,name:0 @@ -8085,7 +8116,7 @@ msgstr "" #. module: base #: view:ir.model.access:0 msgid "Access Control" -msgstr "" +msgstr "Kontrola dostępu" #. module: base #: model:res.country,name:base.kw @@ -8095,7 +8126,7 @@ msgstr "Kuwejt" #. module: base #: model:ir.module.module,shortdesc:base.module_account_followup msgid "Payment Follow-up Management" -msgstr "" +msgstr "Windykacja" #. module: base #: field:workflow.workitem,inst_id:0 @@ -8139,7 +8170,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_base_iban msgid "IBAN Bank Accounts" -msgstr "" +msgstr "Kona bankowe IBAN" #. module: base #: field:res.company,user_ids:0 @@ -8149,12 +8180,12 @@ msgstr "Akceptowani użytkownicy" #. module: base #: field:ir.ui.menu,web_icon_data:0 msgid "Web Icon Image" -msgstr "" +msgstr "Obrazek ikony web" #. module: base #: field:ir.actions.server,wkf_model_id:0 msgid "Target Object" -msgstr "" +msgstr "Obiekt docelowy" #. module: base #: selection:ir.model.fields,select_level:0 @@ -8164,7 +8195,7 @@ msgstr "Zawsze przeszukiwalne" #. module: base #: help:res.country.state,code:0 msgid "The state code in max. three chars." -msgstr "" +msgstr "Kod regionu. Maks. 3 znaki." #. module: base #: model:res.country,name:base.hk @@ -8189,7 +8220,7 @@ msgstr "Filipiny" #. module: base #: model:ir.module.module,summary:base.module_hr_timesheet_sheet msgid "Timesheets, Attendances, Activities" -msgstr "" +msgstr "Karty czasu pracy, Obecności, Aktywności" #. module: base #: model:res.country,name:base.ma @@ -8291,7 +8322,7 @@ msgstr "%a - Skrótowa nazwa dnia tygodnia" #. module: base #: view:ir.ui.menu:0 msgid "Submenus" -msgstr "" +msgstr "Podmenu" #. module: base #: report:ir.module.reference:0 @@ -8369,7 +8400,7 @@ msgstr "Uzytkownicy tej grupy należą równiez do grup" #. module: base #: model:ir.module.module,summary:base.module_note msgid "Sticky notes, Collaborative, Memos" -msgstr "" +msgstr "Notatki, Współpraca" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_attendance @@ -8585,7 +8616,7 @@ msgstr "%b - Skrótowa nazwa miesiąca." #: code:addons/base/ir/ir_model.py:721 #, python-format msgid "Sorry, you are not allowed to delete this document." -msgstr "" +msgstr "Nie masz uprawnień do usuwania tego dokumentu" #. module: base #: constraint:ir.rule:0 @@ -8608,7 +8639,7 @@ msgstr "Akcje wielokrotne" #. module: base #: model:ir.module.module,summary:base.module_mail msgid "Discussions, Mailing Lists, News" -msgstr "" +msgstr "Dyskusje, Listy mailowe, Informacje" #. module: base #: model:ir.module.module,description:base.module_fleet @@ -8659,7 +8690,7 @@ msgstr "" #. module: base #: view:ir.attachment:0 msgid "My Document(s)" -msgstr "" +msgstr "Moje dokumenty" #. module: base #: help:ir.actions.act_window,res_model:0 @@ -8709,7 +8740,7 @@ msgstr "" #. module: base #: model:ir.module.module,summary:base.module_project_issue msgid "Support, Bug Tracker, Helpdesk" -msgstr "" +msgstr "Obsługa, Obsługa błędów, Helpdesk" #. module: base #: model:res.country,name:base.ae @@ -8740,7 +8771,7 @@ msgstr "" #. module: base #: field:res.partner.title,shortcut:0 msgid "Abbreviation" -msgstr "" +msgstr "Skrót" #. module: base #: model:ir.ui.menu,name:base.menu_crm_case_job_req_main @@ -8882,12 +8913,12 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_mrp_repair msgid "Repairs Management" -msgstr "" +msgstr "Zarządzanie naprawami" #. module: base #: model:ir.module.module,shortdesc:base.module_account_asset msgid "Assets Management" -msgstr "" +msgstr "Zarządzanie środkami trwałymi" #. module: base #: view:ir.model.access:0 @@ -8930,12 +8961,12 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_base_status msgid "State/Stage Management" -msgstr "" +msgstr "Zarządzanie stanami/etapami" #. module: base #: model:ir.module.category,name:base.module_category_warehouse_management msgid "Warehouse" -msgstr "" +msgstr "Magazyn" #. module: base #: field:ir.exports,resource:0 @@ -8968,7 +8999,7 @@ msgstr "" #. module: base #: view:ir.filters:0 msgid "Filters shared with all users" -msgstr "" +msgstr "Filtry współdzielone z wszystkimi użytkownikami" #. module: base #: view:ir.translation:0 @@ -9019,7 +9050,7 @@ msgstr "Brak" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_holidays msgid "Leave Management" -msgstr "" +msgstr "Urlopy" #. module: base #: model:res.company,overdue_msg:base.main_company @@ -9059,7 +9090,7 @@ msgstr "Mali" #. module: base #: model:ir.ui.menu,name:base.menu_project_config_project msgid "Stages" -msgstr "" +msgstr "Etapy" #. module: base #: selection:base.language.install,lang:0 @@ -9118,7 +9149,7 @@ msgstr "Odn. partnera" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_expense msgid "Expense Management" -msgstr "" +msgstr "Wydatki" #. module: base #: field:ir.attachment,create_date:0 @@ -9266,7 +9297,7 @@ msgstr "%H - Godzina (czas 24-godzinny) [00,23]." #. module: base #: field:ir.model.fields,on_delete:0 msgid "On Delete" -msgstr "" +msgstr "Przy usunięciu" #. module: base #: code:addons/base/ir/ir_model.py:340 @@ -9547,7 +9578,7 @@ msgstr "Egipt" #. module: base #: view:ir.attachment:0 msgid "Creation" -msgstr "" +msgstr "Data utworzenia" #. module: base #: help:ir.actions.server,model_id:0 @@ -9619,12 +9650,12 @@ msgstr "" #. module: base #: field:res.partner,use_parent_address:0 msgid "Use Company Address" -msgstr "" +msgstr "Stosuj adres firmy" #. module: base #: model:ir.module.module,summary:base.module_hr_holidays msgid "Holidays, Allocation and Leave Requests" -msgstr "" +msgstr "Urlopy, Wnioski i udzielanie" #. module: base #: model:ir.module.module,description:base.module_web_hello @@ -9740,7 +9771,7 @@ msgstr "Wyświetlanie" #. module: base #: model:res.groups,name:base.group_multi_company msgid "Multi Companies" -msgstr "" +msgstr "Wielofirmowość" #. module: base #: help:res.users,menu_id:0 @@ -9978,7 +10009,7 @@ msgstr "" #. module: base #: field:res.partner,category_id:0 msgid "Tags" -msgstr "" +msgstr "Tagi" #. module: base #: view:base.module.upgrade:0 @@ -9997,7 +10028,7 @@ msgstr "Reguły rekordu" #. module: base #: view:multi_company.default:0 msgid "Multi Company" -msgstr "" +msgstr "Wielofirmowość" #. module: base #: model:ir.module.category,name:base.module_category_portal @@ -10008,13 +10039,13 @@ msgstr "" #. module: base #: selection:ir.translation,state:0 msgid "To Translate" -msgstr "" +msgstr "Do przetłumaczenia" #. module: base #: code:addons/base/ir/ir_fields.py:295 #, python-format msgid "See all possible values" -msgstr "" +msgstr "Pokaż wszystkie możliwe wartości" #. module: base #: model:ir.module.module,description:base.module_claim_from_delivery @@ -10179,7 +10210,7 @@ msgstr "Włochy" #. module: base #: model:res.groups,name:base.group_sale_salesman msgid "See Own Leads" -msgstr "" +msgstr "Pokaż moje sygnały" #. module: base #: view:ir.actions.todo:0 @@ -10190,7 +10221,7 @@ msgstr "Do zrobienia" #. module: base #: model:ir.module.module,shortdesc:base.module_portal_hr_employees msgid "Portal HR employees" -msgstr "" +msgstr "Portal kadrowy pracowników" #. module: base #: selection:base.language.install,lang:0 @@ -10209,6 +10240,8 @@ msgid "" "Insufficient fields to generate a Calendar View for %s, missing a date_stop " "or a date_delay" msgstr "" +"Zbyt mało pól do widoku kalendarzowego dla %s, brakuje date_stop lub " +"date_delay" #. module: base #: field:workflow.activity,action:0 @@ -10273,6 +10306,7 @@ msgstr "" msgid "" "Please contact your system administrator if you think this is an error." msgstr "" +"Skontaktuj się z administratorem systemu, jeśli sądzisz że to jest błąd." #. module: base #: code:addons/base/module/module.py:519 @@ -10280,7 +10314,7 @@ msgstr "" #: model:ir.actions.act_window,name:base.action_view_base_module_upgrade #, python-format msgid "Apply Schedule Upgrade" -msgstr "" +msgstr "Zastosuj zaplanowane aktualizacje" #. module: base #: view:workflow.activity:0 @@ -10313,6 +10347,8 @@ msgid "" "One of the documents you are trying to access has been deleted, please try " "again after refreshing." msgstr "" +"Jeden z dokumentów, który próbujesz przeczytać, został usunięty. Spróbuj " +"ponownie po odświeżeniu." #. module: base #: model:ir.model,name:base.model_ir_mail_server @@ -10408,7 +10444,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_sale_stock msgid "Sales and Warehouse Management" -msgstr "" +msgstr "Sprzedaż i Magazyn" #. module: base #: field:ir.model.fields,model:0 @@ -10476,7 +10512,7 @@ msgstr "Martynika (Francja)" #. module: base #: help:res.partner,is_company:0 msgid "Check if the contact is a company, otherwise it is a person" -msgstr "" +msgstr "Zaznacz, jeśli kontakt jest firmą. W przeciwnym razie jest osobą." #. module: base #: view:ir.sequence.type:0 @@ -10546,7 +10582,7 @@ msgstr "" #: code:addons/base/ir/ir_model.py:1023 #, python-format msgid "Permission Denied" -msgstr "" +msgstr "Brak uprawnień" #. module: base #: field:ir.ui.menu,child_id:0 @@ -10693,7 +10729,7 @@ msgstr "" #. module: base #: selection:ir.module.module,license:0 msgid "Other Proprietary" -msgstr "" +msgstr "Inne właściwości" #. module: base #: model:res.country,name:base.ec @@ -10703,7 +10739,7 @@ msgstr "Ekwador" #. module: base #: view:ir.rule:0 msgid "Read Access Right" -msgstr "" +msgstr "Prawo odczytu" #. module: base #: model:ir.module.module,shortdesc:base.module_analytic_user_function @@ -10762,18 +10798,18 @@ msgstr "" #. module: base #: selection:ir.translation,state:0 msgid "Translated" -msgstr "" +msgstr "Przetłumaczone" #. module: base #: model:ir.actions.act_window,name:base.action_inventory_form #: model:ir.ui.menu,name:base.menu_action_inventory_form msgid "Default Company per Object" -msgstr "" +msgstr "Domyślna firma dla obiektów" #. module: base #: field:ir.ui.menu,needaction_counter:0 msgid "Number of actions the user has to perform" -msgstr "" +msgstr "Liczba akcji do wykonania przez użytkownika" #. module: base #: model:ir.module.module,shortdesc:base.module_web_hello @@ -10884,7 +10920,7 @@ msgstr "" #. module: base #: view:ir.filters:0 msgid "Shared" -msgstr "" +msgstr "Współdzielone" #. module: base #: code:addons/base/module/module.py:336 @@ -10928,7 +10964,7 @@ msgstr "Zwykły" #. module: base #: model:ir.module.module,shortdesc:base.module_purchase_double_validation msgid "Double Validation on Purchases" -msgstr "" +msgstr "Podwójne zatwierdzanie zakupów" #. module: base #: field:res.bank,street2:0 @@ -11012,7 +11048,7 @@ msgstr "Grenada" #. module: base #: help:res.partner,customer:0 msgid "Check this box if this contact is a customer." -msgstr "" +msgstr "Zaznacz tę opcję, jeśli kontakt jest klientem" #. module: base #: view:ir.actions.server:0 @@ -11040,7 +11076,7 @@ msgstr "" #. module: base #: field:res.users,partner_id:0 msgid "Related Partner" -msgstr "" +msgstr "Powiązany partner" #. module: base #: code:addons/osv.py:151 @@ -11063,7 +11099,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_mrp_operations msgid "Manufacturing Operations" -msgstr "" +msgstr "Operacje produkcyjne" #. module: base #: view:base.language.export:0 @@ -11090,7 +11126,7 @@ msgstr "Do" #. module: base #: model:ir.module.module,shortdesc:base.module_hr msgid "Employee Directory" -msgstr "" +msgstr "Katalog pracowników" #. module: base #: field:ir.cron,args:0 @@ -11338,7 +11374,7 @@ msgstr "" #: code:addons/base/res/res_partner.py:436 #, python-format msgid "Couldn't create contact without email address !" -msgstr "" +msgstr "Ni emożna tworzyć kontaktu bez adresu mailowego !" #. module: base #: model:ir.module.category,name:base.module_category_manufacturing @@ -11480,7 +11516,7 @@ msgstr "" #: code:addons/base/ir/ir_mail_server.py:470 #, python-format msgid "Mail delivery failed" -msgstr "" +msgstr "Dostarczenie wiadomości nie udało się" #. module: base #: view:ir.actions.act_window:0 @@ -11515,7 +11551,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_account_analytic_plans msgid "Multiple Analytic Plans" -msgstr "" +msgstr "Planowanie analityczne" #. module: base #: model:ir.model,name:base.model_ir_default @@ -11621,7 +11657,7 @@ msgstr "Wyrażenie pętlowe" #. module: base #: model:res.partner.category,name:base.res_partner_category_16 msgid "Retailer" -msgstr "" +msgstr "Odsprzedawca" #. module: base #: view:ir.model.fields:0 @@ -11753,7 +11789,7 @@ msgstr "Niedozwolone kryteria szukania" #. module: base #: view:ir.mail_server:0 msgid "Connection Information" -msgstr "" +msgstr "Informacje o połączeniu" #. module: base #: model:res.partner.title,name:base.res_partner_title_prof @@ -11780,17 +11816,17 @@ msgstr "Odnośnik widoku" #. module: base #: model:ir.module.category,description:base.module_category_sales_management msgid "Helps you handle your quotations, sale orders and invoicing." -msgstr "" +msgstr "Pomaga operować ofertami, zamówieniami sprzedaży i fakturowaniem." #. module: base #: field:res.users,login_date:0 msgid "Latest connection" -msgstr "" +msgstr "Ostatnie połączenie" #. module: base #: field:res.groups,implied_ids:0 msgid "Inherits" -msgstr "" +msgstr "Dziedziczy" #. module: base #: selection:ir.translation,type:0 @@ -11925,7 +11961,7 @@ msgstr "Inni partnerzy" #: view:workflow.workitem:0 #: field:workflow.workitem,state:0 msgid "Status" -msgstr "" +msgstr "Stan" #. module: base #: model:ir.actions.act_window,name:base.action_currency_form @@ -12047,7 +12083,7 @@ msgstr "Konsole" #. module: base #: model:ir.module.module,shortdesc:base.module_procurement msgid "Procurements" -msgstr "" +msgstr "Zapotrzebowania" #. module: base #: model:res.partner.category,name:base.res_partner_category_6 @@ -12057,7 +12093,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_payroll_account msgid "Payroll Accounting" -msgstr "" +msgstr "Księgowość płacowa" #. module: base #: help:ir.attachment,type:0 @@ -12072,22 +12108,22 @@ msgstr "Zmień hasło" #. module: base #: model:ir.module.module,shortdesc:base.module_sale_order_dates msgid "Dates on Sales Order" -msgstr "" +msgstr "Daty przy sprzedaży" #. module: base #: view:ir.attachment:0 msgid "Creation Month" -msgstr "" +msgstr "Miesiąc tworzenia" #. module: base #: field:ir.module.module,demo:0 msgid "Demo Data" -msgstr "" +msgstr "Dane demonstracyjne" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_mister msgid "Mr." -msgstr "" +msgstr "Pan" #. module: base #: model:res.country,name:base.mv @@ -12112,7 +12148,7 @@ msgstr "" #. module: base #: field:res.country,address_format:0 msgid "Address Format" -msgstr "" +msgstr "Format adresu" #. module: base #: help:res.lang,grouping:0 @@ -12212,7 +12248,7 @@ msgstr "" #: view:ir.model.data:0 #: model:ir.ui.menu,name:base.ir_model_data_menu msgid "External Identifiers" -msgstr "" +msgstr "Zewnętrzne identyfikatory" #. module: base #: selection:base.language.install,lang:0 @@ -12272,7 +12308,7 @@ msgstr "" #: model:ir.module.category,name:base.module_category_point_of_sale #: model:ir.module.module,shortdesc:base.module_point_of_sale msgid "Point of Sale" -msgstr "" +msgstr "Punkt sprzedaży" #. module: base #: model:ir.module.module,description:base.module_mail @@ -12326,7 +12362,7 @@ msgstr "Grecja" #. module: base #: view:res.config:0 msgid "Apply" -msgstr "" +msgstr "Zastosuj" #. module: base #: field:res.request,trigger_date:0 @@ -12381,6 +12417,8 @@ msgid "" "Helps you manage your inventory and main stock operations: delivery orders, " "receptions, etc." msgstr "" +"Pomaga zarządzać magazynem i jego operacjami jak: przyjęcia, wydania, " +"przesunięcia itp." #. module: base #: model:ir.model,name:base.model_base_module_update @@ -12401,7 +12439,7 @@ msgstr "Treść" #: code:addons/base/ir/ir_mail_server.py:220 #, python-format msgid "Connection test succeeded!" -msgstr "" +msgstr "Test połaczenia udany!" #. module: base #: model:ir.module.module,description:base.module_project_gtd @@ -12451,17 +12489,17 @@ msgstr "" msgid "" "Please define at least one SMTP server, or provide the SMTP parameters " "explicitly." -msgstr "" +msgstr "Zdefiniuj co najmniej jeden serwer SMTP lub podaj parametry SMTP." #. module: base #: view:ir.attachment:0 msgid "Filter on my documents" -msgstr "" +msgstr "Filtr na moje dokumenty" #. module: base #: model:ir.module.module,summary:base.module_project_gtd msgid "Personal Tasks, Contexts, Timeboxes" -msgstr "" +msgstr "Zadania osobiste, Konteksty, Ramy czasowe" #. module: base #: model:ir.module.module,description:base.module_l10n_cr @@ -12509,7 +12547,7 @@ msgstr "Gabon" #. module: base #: model:ir.module.module,summary:base.module_stock msgid "Inventory, Logistic, Storage" -msgstr "" +msgstr "Zapasy, Logistyka, Magazynowanie" #. module: base #: view:ir.actions.act_window:0 @@ -12571,7 +12609,7 @@ msgstr "Cypr" #. module: base #: field:res.users,new_password:0 msgid "Set Password" -msgstr "" +msgstr "Ustaw hasło" #. module: base #: field:ir.actions.server,subject:0 @@ -12603,7 +12641,7 @@ msgstr "" #. module: base #: selection:res.currency,position:0 msgid "Before Amount" -msgstr "" +msgstr "Przed wartością" #. module: base #: field:res.request,act_from:0 @@ -12728,6 +12766,8 @@ msgid "" "Allows you to create your invoices and track the payments. It is an easier " "version of the accounting module for managers who are not accountants." msgstr "" +"Pozwala tworzyć faktury i płatności. Jest to prostsza wersja modułu " +"księgowego." #. module: base #: model:res.country,name:base.eh @@ -12737,7 +12777,7 @@ msgstr "Sahara Zachodnia" #. module: base #: model:ir.module.category,name:base.module_category_account_voucher msgid "Invoicing & Payments" -msgstr "" +msgstr "Fakturowanie i płatności" #. module: base #: model:ir.actions.act_window,help:base.action_res_company_form @@ -12807,7 +12847,7 @@ msgstr "" #. module: base #: model:res.country,name:base.tf msgid "French Southern Territories" -msgstr "" +msgstr "Francuskie Terytoria Południowe" #. module: base #: model:ir.model,name:base.model_res_currency @@ -12892,7 +12932,7 @@ msgstr "Synchronizuj tłumaczenie" #: view:res.partner.bank:0 #: field:res.partner.bank,bank_name:0 msgid "Bank Name" -msgstr "" +msgstr "Nazwa Banku" #. module: base #: model:res.country,name:base.ki @@ -12984,12 +13024,12 @@ msgstr "Zależności :" #. module: base #: field:res.company,vat:0 msgid "Tax ID" -msgstr "" +msgstr "NIP" #. module: base #: model:ir.module.module,shortdesc:base.module_account_bank_statement_extensions msgid "Bank Statement Extensions to Support e-banking" -msgstr "" +msgstr "Rozszerzenie do wyciągów bankowych" #. module: base #: field:ir.model.fields,field_description:0 @@ -13019,7 +13059,7 @@ msgstr "Zair" #. module: base #: model:ir.module.module,summary:base.module_project msgid "Projects, Tasks" -msgstr "" +msgstr "Projekty, Zadania" #. module: base #: field:workflow.instance,res_id:0 @@ -13095,7 +13135,7 @@ msgstr "Działania" #. module: base #: model:ir.module.module,shortdesc:base.module_product msgid "Products & Pricelists" -msgstr "" +msgstr "Produkty i cenniki" #. module: base #: help:ir.filters,user_id:0 @@ -13103,6 +13143,8 @@ msgid "" "The user this filter is private to. When left empty the filter is public and " "available to all users." msgstr "" +"Użytkownik, który będzie korzystał z tego filtra na zasadach wyłączności. " +"Jeśli pole jest puste, to filtr jest publiczny." #. module: base #: field:ir.actions.act_window,auto_refresh:0 @@ -13152,12 +13194,12 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_stock_no_autopicking msgid "Picking Before Manufacturing" -msgstr "" +msgstr "Pobranie przed produkcją" #. module: base #: model:ir.module.module,summary:base.module_note_pad msgid "Sticky memos, Collaborative" -msgstr "" +msgstr "Notatki, Współpraca" #. module: base #: model:res.country,name:base.wf @@ -13209,7 +13251,7 @@ msgstr "" #: view:ir.model.data:0 #: field:ir.model.data,name:0 msgid "External Identifier" -msgstr "" +msgstr "Identyfikator zewnętrzny" #. module: base #: model:ir.module.module,description:base.module_event_sale @@ -13278,7 +13320,7 @@ msgstr "Akcje" #. module: base #: model:ir.module.module,shortdesc:base.module_delivery msgid "Delivery Costs" -msgstr "" +msgstr "Koszty dostawy" #. module: base #: code:addons/base/ir/ir_cron.py:391 @@ -13337,7 +13379,7 @@ msgstr "Aktywność docelowa" #. module: base #: model:ir.module.module,shortdesc:base.module_project_issue msgid "Issue Tracker" -msgstr "" +msgstr "Śledzenie problemów" #. module: base #: view:base.module.update:0 @@ -13421,7 +13463,7 @@ msgstr "" #. module: base #: view:res.partner:0 msgid "Supplier Partners" -msgstr "" +msgstr "Dostawcy" #. module: base #: view:res.config.installer:0 @@ -13431,12 +13473,12 @@ msgstr "Instaluj moduły" #. module: base #: model:ir.ui.menu,name:base.menu_import_crm msgid "Import & Synchronize" -msgstr "" +msgstr "Importuj i synchronizuj" #. module: base #: view:res.partner:0 msgid "Customer Partners" -msgstr "" +msgstr "Klienci" #. module: base #: sql_constraint:res.users:0 @@ -13462,7 +13504,7 @@ msgstr "Źródło" #: field:ir.model.constraint,date_init:0 #: field:ir.model.relation,date_init:0 msgid "Initialization Date" -msgstr "" +msgstr "Data inicjalizacji" #. module: base #: model:res.country,name:base.vu @@ -13604,7 +13646,7 @@ msgstr "Wykonano konfiguracje systemu" #: view:ir.config_parameter:0 #: model:ir.ui.menu,name:base.ir_config_menu msgid "System Parameters" -msgstr "" +msgstr "Parametry systemu" #. module: base #: model:ir.module.module,description:base.module_l10n_ch @@ -13673,7 +13715,7 @@ msgstr "Akcja na wielu dokumentach" #: model:ir.actions.act_window,name:base.action_partner_title_partner #: model:ir.ui.menu,name:base.menu_partner_title_partner msgid "Titles" -msgstr "" +msgstr "Tytuły" #. module: base #: model:ir.module.module,description:base.module_anonymization @@ -13734,7 +13776,7 @@ msgstr "Luksemburg" #. module: base #: model:ir.module.module,summary:base.module_base_calendar msgid "Personal & Shared Calendar" -msgstr "" +msgstr "Kalendarze osobiste i współdzielone" #. module: base #: selection:res.request,priority:0 @@ -13814,7 +13856,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_account_payment msgid "Suppliers Payment Management" -msgstr "" +msgstr "Zarządzanie płatnościami od dostawców" #. module: base #: model:res.country,name:base.sv @@ -13844,7 +13886,7 @@ msgstr "Tajlandia" #. module: base #: model:ir.module.module,summary:base.module_account_voucher msgid "Send Invoices and Track Payments" -msgstr "" +msgstr "Wysyła faktury i śledzi płatności" #. module: base #: model:ir.ui.menu,name:base.menu_crm_config_lead @@ -13895,7 +13937,7 @@ msgstr "Relacja obiektu" #. module: base #: model:ir.module.module,shortdesc:base.module_account_voucher msgid "eInvoicing & Payments" -msgstr "" +msgstr "Fakturowanie i Płatności" #. module: base #: model:ir.module.module,description:base.module_base_crypt @@ -13972,7 +14014,7 @@ msgstr "" #. module: base #: model:ir.ui.menu,name:base.menu_custom_multicompany msgid "Multi-Companies" -msgstr "" +msgstr "Wielofirmowość" #. module: base #: field:workflow,osv:0 @@ -13989,7 +14031,7 @@ msgstr "" #. module: base #: field:ir.rule,perm_write:0 msgid "Apply for Write" -msgstr "" +msgstr "Zastosuj do zapisu" #. module: base #: model:ir.module.module,description:base.module_stock @@ -14097,6 +14139,8 @@ msgid "" "Lets you install various interesting but non-essential tools like Survey, " "Lunch and Ideas box." msgstr "" +"Pozwala zainstalować ciekawe, ale nie kluczowe narzędzia jak: Ankieta, " +"Posiłki, Pomysły." #. module: base #: selection:ir.module.module,state:0 @@ -14121,7 +14165,7 @@ msgstr "Autoładowanie widoku" #. module: base #: view:res.users:0 msgid "Allowed Companies" -msgstr "" +msgstr "Dozwolone firmy" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_de @@ -14131,7 +14175,7 @@ msgstr "" #. module: base #: view:ir.sequence:0 msgid "Day of the Year: %(doy)s" -msgstr "" +msgstr "Dzień roku: %(doy)s" #. module: base #: field:ir.ui.menu,web_icon:0 @@ -14146,7 +14190,7 @@ msgstr "Rozpocznij zaplanowane instalacje" #. module: base #: model:ir.module.module,shortdesc:base.module_sale_journal msgid "Invoicing Journals" -msgstr "" +msgstr "Dzienniki faktur" #. module: base #: help:ir.ui.view,groups_id:0 @@ -14191,7 +14235,7 @@ msgstr "" #. module: base #: view:base.language.export:0 msgid "Export Settings" -msgstr "" +msgstr "Ustawienia eksportu" #. module: base #: field:ir.actions.act_window,src_model:0 @@ -14201,7 +14245,7 @@ msgstr "" #. module: base #: view:ir.sequence:0 msgid "Day of the Week (0:Monday): %(weekday)s" -msgstr "" +msgstr "Dzień tygodnia (0:Monday): %(weekday)s" #. module: base #: code:addons/base/module/wizard/base_module_upgrade.py:84 @@ -14358,12 +14402,12 @@ msgstr "Firma" #. module: base #: model:ir.module.category,name:base.module_category_report_designer msgid "Advanced Reporting" -msgstr "" +msgstr "Zaawansowane raportowanie" #. module: base #: model:ir.module.module,summary:base.module_purchase msgid "Purchase Orders, Receptions, Supplier Invoices" -msgstr "" +msgstr "Zamówienia zakupu, Przyjęcia, Faktury od dostawcy" #. module: base #: model:ir.module.module,description:base.module_hr_payroll @@ -14416,7 +14460,7 @@ msgstr "Uruchom" #. module: base #: selection:res.partner,type:0 msgid "Shipping" -msgstr "" +msgstr "Przewoźnik" #. module: base #: model:ir.module.module,description:base.module_project_mrp @@ -14460,7 +14504,7 @@ msgstr "Ograniczenie" #. module: base #: model:res.groups,name:base.group_hr_user msgid "Officer" -msgstr "" +msgstr "Urzędnik" #. module: base #: code:addons/orm.py:789 @@ -14477,7 +14521,7 @@ msgstr "Jamajka" #: field:res.partner,color:0 #: field:res.partner.address,color:0 msgid "Color Index" -msgstr "" +msgstr "Indeks kolorów" #. module: base #: model:ir.actions.act_window,help:base.action_partner_category_form @@ -14531,7 +14575,7 @@ msgstr "Ostrzeżenie" #. module: base #: model:ir.module.module,shortdesc:base.module_edi msgid "Electronic Data Interchange (EDI)" -msgstr "" +msgstr "Elektroniczna wymiana danych (EDI)" #. module: base #: model:ir.module.module,shortdesc:base.module_account_anglo_saxon @@ -14562,7 +14606,7 @@ msgstr "" #. module: base #: model:ir.module.category,name:base.module_category_generic_modules msgid "Generic Modules" -msgstr "" +msgstr "Moduły podstawowe" #. module: base #: model:res.country,name:base.mk @@ -14616,7 +14660,7 @@ msgstr "Bieżące okno" #: model:ir.module.category,name:base.module_category_hidden #: view:res.users:0 msgid "Technical Settings" -msgstr "" +msgstr "Ustawienia techniczne" #. module: base #: model:ir.module.category,description:base.module_category_accounting_and_finance @@ -14633,7 +14677,7 @@ msgstr "" #. module: base #: model:ir.module.module,summary:base.module_event msgid "Trainings, Conferences, Meetings, Exhibitions, Registrations" -msgstr "" +msgstr "Szkolenia, Konferencje, Spotkania, Wystawy, Rejestracje" #. module: base #: model:ir.model,name:base.model_res_country @@ -14651,7 +14695,7 @@ msgstr "Kraj" #. module: base #: model:res.partner.category,name:base.res_partner_category_15 msgid "Wholesaler" -msgstr "" +msgstr "Hurtownik" #. module: base #: model:ir.module.module,shortdesc:base.module_base_vat @@ -14719,7 +14763,7 @@ msgstr "" #. module: base #: field:ir.module.module,auto_install:0 msgid "Automatic Installation" -msgstr "" +msgstr "Instalacja automatyczna" #. module: base #: model:ir.module.module,description:base.module_l10n_hn @@ -14836,7 +14880,7 @@ msgstr "" #. module: base #: field:ir.sequence,implementation:0 msgid "Implementation" -msgstr "" +msgstr "Implementacja" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_ve @@ -14878,7 +14922,7 @@ msgstr "Nazwa widoku" #. module: base #: model:ir.model,name:base.model_res_groups msgid "Access Groups" -msgstr "" +msgstr "Grupy dostępu" #. module: base #: selection:base.language.install,lang:0 @@ -14994,6 +15038,8 @@ msgid "" "Tax Identification Number. Check the box if this contact is subjected to " "taxes. Used by the some of the legal statements." msgstr "" +"Numer identyfikacji podatkowej. Zaznacz tę opcję jeśli kontakt jest " +"podatnikiem. Stosowane w wymaganiach ustawowych." #. module: base #: field:res.partner.bank,partner_id:0 @@ -15032,7 +15078,7 @@ msgstr "Ostrzeżenie przy przełączaniu firmy" msgid "" "Helps you manage your manufacturing processes and generate reports on those " "processes." -msgstr "" +msgstr "Pomaga w prowadzeniu działalności produkcyjnej." #. module: base #: help:ir.sequence,number_increment:0 @@ -15078,7 +15124,7 @@ msgstr "" #. module: base #: view:res.partner:0 msgid "Internal Notes" -msgstr "" +msgstr "Uwagi wewnętrzne" #. module: base #: selection:res.partner.address,type:0 @@ -15094,7 +15140,7 @@ msgstr "SA" #. module: base #: model:ir.module.module,shortdesc:base.module_purchase_requisition msgid "Purchase Requisitions" -msgstr "" +msgstr "Zlecenia zakupu" #. module: base #: selection:ir.actions.act_window,target:0 @@ -15120,14 +15166,14 @@ msgstr "Partnerzy: " #. module: base #: view:res.partner:0 msgid "Is a Company?" -msgstr "" +msgstr "Jest firmą?" #. module: base #: code:addons/base/res/res_company.py:159 #: field:res.partner.bank,name:0 #, python-format msgid "Bank Account" -msgstr "" +msgstr "Konto bankowe" #. module: base #: model:res.country,name:base.kp @@ -15152,7 +15198,7 @@ msgstr "Kontekst" #. module: base #: model:ir.module.module,shortdesc:base.module_sale_mrp msgid "Sales and MRP Management" -msgstr "" +msgstr "Sprzedaż i MRP" #. module: base #: model:ir.actions.act_window,help:base.action_partner_form diff --git a/openerp/addons/base/i18n/pt.po b/openerp/addons/base/i18n/pt.po index 1ee4820f500..c28d191fc5c 100644 --- a/openerp/addons/base/i18n/pt.po +++ b/openerp/addons/base/i18n/pt.po @@ -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-07 10:59+0000\n" -"Last-Translator: Rui Franco (multibase.pt) \n" +"PO-Revision-Date: 2012-12-11 10:27+0000\n" +"Last-Translator: Virgílio Oliveira \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-08 04:58+0000\n" -"X-Generator: Launchpad (build 16341)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:38+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing @@ -525,7 +525,7 @@ msgstr "" #. module: base #: field:ir.model.relation,name:0 msgid "Relation Name" -msgstr "" +msgstr "Nome da relação" #. module: base #: view:ir.rule:0 @@ -693,7 +693,7 @@ msgstr "Colômbia" #. module: base #: model:res.partner.title,name:base.res_partner_title_mister msgid "Mister" -msgstr "" +msgstr "Sr." #. module: base #: help:res.country,code:0 @@ -1008,7 +1008,7 @@ msgstr "Preferências de email" #: code:addons/base/ir/ir_fields.py:196 #, python-format msgid "'%s' does not seem to be a valid date for field '%%(field)s'" -msgstr "" +msgstr "%s' não parece ser uma data válida para o campo '%%(field)s'" #. module: base #: view:res.partner:0 @@ -1025,6 +1025,8 @@ msgstr "Zimbabué" msgid "" "Type of the constraint: `f` for a foreign key, `u` for other constraints." msgstr "" +"Tipo de restrição: `f` para uma chave estrangeira, `u` para outras " +"restrições." #. module: base #: view:ir.actions.report.xml:0 @@ -1621,7 +1623,7 @@ msgstr "Configuração do rodapé de relatório" #. module: base #: field:ir.translation,comments:0 msgid "Translation comments" -msgstr "" +msgstr "Comentários à tradução" #. module: base #: model:ir.module.module,description:base.module_lunch @@ -1686,7 +1688,7 @@ msgstr "" #. module: base #: help:res.partner,website:0 msgid "Website of Partner or Company" -msgstr "" +msgstr "Sítio web do parceiro ou da empresa" #. module: base #: help:base.language.install,overwrite:0 @@ -1892,7 +1894,7 @@ msgstr "Países Baixos" #. module: base #: model:ir.module.module,shortdesc:base.module_portal_event msgid "Portal Event" -msgstr "" +msgstr "Evento do portal" #. module: base #: selection:ir.translation,state:0 @@ -2189,7 +2191,7 @@ msgstr "Criar / Escrever / Copiar" #. module: base #: view:ir.sequence:0 msgid "Second: %(sec)s" -msgstr "" +msgstr "Segundo: %(sec)s" #. module: base #: field:ir.actions.act_window,view_mode:0 @@ -2946,7 +2948,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' não aparenta ser um número inteiro para o campo '%%(field)s'" #. module: base #: model:ir.module.category,description:base.module_category_report_designer @@ -3826,7 +3828,7 @@ msgstr "Togo" #: field:ir.actions.act_window,res_model:0 #: field:ir.actions.client,res_model:0 msgid "Destination Model" -msgstr "" +msgstr "Modelo de destino" #. module: base #: selection:ir.sequence,implementation:0 @@ -4400,7 +4402,7 @@ msgstr "" #. module: base #: field:res.partner,parent_id:0 msgid "Related Company" -msgstr "" +msgstr "Empresa relacionada" #. module: base #: help:ir.actions.act_url,help:0 @@ -4835,7 +4837,7 @@ msgstr "Workflows" #. module: base #: model:ir.ui.menu,name:base.next_id_73 msgid "Purchase" -msgstr "" +msgstr "Compra" #. module: base #: selection:base.language.install,lang:0 @@ -5310,7 +5312,7 @@ msgstr "Separador Decimal" #: code:addons/orm.py:5245 #, python-format msgid "Missing required value for the field '%s'." -msgstr "" +msgstr "Falta o valor do campo '%s'." #. module: base #: model:ir.model,name:base.model_res_partner_address @@ -5374,7 +5376,7 @@ msgstr "Ilha Bouvet" #. module: base #: field:ir.model.constraint,type:0 msgid "Constraint Type" -msgstr "" +msgstr "Tipo de restrição" #. module: base #: field:res.company,child_ids:0 @@ -5537,7 +5539,7 @@ msgstr "%w - Número de dias da semana [0(Sunday),6]." #. module: base #: model:ir.ui.menu,name:base.menu_ir_filters msgid "User-defined Filters" -msgstr "" +msgstr "Filtros definidos pelo utilizador" #. module: base #: field:ir.actions.act_window_close,name:0 @@ -6951,7 +6953,7 @@ msgstr "Ficheiro do módulo importado com sucesso!" #: view:ir.model.constraint:0 #: model:ir.ui.menu,name:base.ir_model_constraint_menu msgid "Model Constraints" -msgstr "" +msgstr "Restrições de modelo" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_timesheet @@ -7720,7 +7722,7 @@ msgstr "Canadá" #. module: base #: view:base.language.export:0 msgid "Launchpad" -msgstr "" +msgstr "Launchpad" #. module: base #: help:res.currency.rate,currency_rate_type_id:0 @@ -7890,7 +7892,7 @@ msgstr "Assistente" #: code:addons/base/ir/ir_fields.py:304 #, python-format msgid "database id" -msgstr "" +msgstr "id da base de dados" #. module: base #: model:ir.module.module,shortdesc:base.module_base_import @@ -8460,7 +8462,7 @@ msgstr "Nepal" #. module: base #: model:ir.module.module,shortdesc:base.module_document_page msgid "Document Page" -msgstr "" +msgstr "Página do documento" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_ar @@ -8650,6 +8652,10 @@ msgid "" "\n" "(Document type: %s)" msgstr "" +"Para este tipo de documento, só pode aceder a registos que tenham sido " +"criados por si.\n" +"\n" +"(Tipo de documento: %s)" #. module: base #: view:base.language.export:0 @@ -8722,7 +8728,7 @@ msgstr "Multi Ações" #. module: base #: model:ir.module.module,summary:base.module_mail msgid "Discussions, Mailing Lists, News" -msgstr "" +msgstr "Discussões, listas de correio, notícias" #. module: base #: model:ir.module.module,description:base.module_fleet @@ -9085,7 +9091,7 @@ msgstr "8. %I:%M:%S %p ==> 06:25:20 PM" #. module: base #: view:ir.filters:0 msgid "Filters shared with all users" -msgstr "" +msgstr "Filtros partilhados com todos os utilizadores" #. module: base #: view:ir.translation:0 @@ -9495,7 +9501,7 @@ msgstr "" #: code:addons/base/ir/ir_fields.py:317 #, python-format msgid "external id" -msgstr "" +msgstr "id externo" #. module: base #: view:ir.model:0 @@ -10027,7 +10033,7 @@ msgstr "res.request" #. module: base #: field:res.partner,image_medium:0 msgid "Medium-sized image" -msgstr "" +msgstr "Imagem de média dimensão" #. module: base #: view:ir.model:0 @@ -10185,7 +10191,7 @@ msgstr "" #. module: base #: help:res.company,rml_footer:0 msgid "Footer text displayed at the bottom of all reports." -msgstr "" +msgstr "Texto de rodapé mostrados no final de todos os relatórios." #. module: base #: model:ir.module.module,shortdesc:base.module_note_pad @@ -10608,7 +10614,7 @@ msgstr "Tipos de Sequências" #: code:addons/base/res/res_bank.py:195 #, python-format msgid "Formating Error" -msgstr "" +msgstr "Erro de formatação" #. module: base #: model:res.country,name:base.ye @@ -10930,7 +10936,7 @@ msgstr "Domínio" #: code:addons/base/ir/ir_fields.py:167 #, python-format msgid "Use '1' for yes and '0' for no" -msgstr "" +msgstr "Use '1' para sim e '0' para não" #. module: base #: model:ir.module.module,shortdesc:base.module_marketing_campaign @@ -11172,7 +11178,7 @@ msgstr "" #. module: base #: field:res.users,partner_id:0 msgid "Related Partner" -msgstr "" +msgstr "Parceiro relacionado" #. module: base #: code:addons/osv.py:151 @@ -11897,7 +11903,7 @@ msgstr "Informação da Ligação" #. module: base #: model:res.partner.title,name:base.res_partner_title_prof msgid "Professor" -msgstr "" +msgstr "Professor" #. module: base #: model:res.country,name:base.hm @@ -12193,7 +12199,7 @@ msgstr "Aquisições" #. module: base #: model:res.partner.category,name:base.res_partner_category_6 msgid "Bronze" -msgstr "" +msgstr "Bronze" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_payroll_account @@ -12223,7 +12229,7 @@ msgstr "Mês de Criação" #. module: base #: field:ir.module.module,demo:0 msgid "Demo Data" -msgstr "" +msgstr "Dados de demonstração" #. module: base #: model:res.partner.title,shortcut:base.res_partner_title_mister @@ -12383,7 +12389,7 @@ msgstr "" #. module: base #: field:ir.actions.report.xml,report_sxw:0 msgid "SXW Path" -msgstr "" +msgstr "Caminho de SXW" #. module: base #: model:ir.module.module,description:base.module_account_asset @@ -12416,7 +12422,7 @@ msgstr "BANCO" #: model:ir.module.category,name:base.module_category_point_of_sale #: model:ir.module.module,shortdesc:base.module_point_of_sale msgid "Point of Sale" -msgstr "" +msgstr "Ponto de venda" #. module: base #: model:ir.module.module,description:base.module_mail @@ -13180,7 +13186,7 @@ msgstr "Zaire" #. module: base #: model:ir.module.module,summary:base.module_project msgid "Projects, Tasks" -msgstr "" +msgstr "Projetos, tarefas" #. module: base #: field:workflow.instance,res_id:0 @@ -13198,7 +13204,7 @@ msgstr "Informação" #: code:addons/base/ir/ir_fields.py:147 #, python-format msgid "false" -msgstr "" +msgstr "falso" #. module: base #: model:ir.module.module,description:base.module_account_analytic_analysis @@ -13594,7 +13600,7 @@ msgstr "Instalar Módulos" #. module: base #: model:ir.ui.menu,name:base.menu_import_crm msgid "Import & Synchronize" -msgstr "" +msgstr "Importar e sincronizar" #. module: base #: view:res.partner:0 @@ -13839,7 +13845,7 @@ msgstr "Ação em multiplos documentos." #: model:ir.actions.act_window,name:base.action_partner_title_partner #: model:ir.ui.menu,name:base.menu_partner_title_partner msgid "Titles" -msgstr "" +msgstr "Títulos" #. module: base #: model:ir.module.module,description:base.module_anonymization @@ -13900,7 +13906,7 @@ msgstr "Luxemburgo" #. module: base #: model:ir.module.module,summary:base.module_base_calendar msgid "Personal & Shared Calendar" -msgstr "" +msgstr "Calendários personalizado e partilhado" #. module: base #: selection:res.request,priority:0 @@ -14022,7 +14028,7 @@ msgstr "Dicas & Oportunidades" #. module: base #: model:res.country,name:base.gg msgid "Guernsey" -msgstr "" +msgstr "Guernsey" #. module: base #: selection:base.language.install,lang:0 @@ -14364,17 +14370,17 @@ msgstr "" #. module: base #: view:base.language.export:0 msgid "Export Settings" -msgstr "" +msgstr "Configurações de exportação" #. module: base #: field:ir.actions.act_window,src_model:0 msgid "Source Model" -msgstr "" +msgstr "Modelo fonte" #. module: base #: view:ir.sequence:0 msgid "Day of the Week (0:Monday): %(weekday)s" -msgstr "" +msgstr "Dia da semana (0:segunda feira): %(weekday)s" #. module: base #: code:addons/base/module/wizard/base_module_upgrade.py:84 @@ -14589,7 +14595,7 @@ msgstr "Lançar" #. module: base #: selection:res.partner,type:0 msgid "Shipping" -msgstr "" +msgstr "Envio" #. module: base #: model:ir.module.module,description:base.module_project_mrp @@ -14741,7 +14747,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 (Antiga República Jugoslava)" #. module: base #: model:res.country,name:base.rw @@ -14878,7 +14884,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 @@ -15305,7 +15311,7 @@ msgstr "Parceiros: " #. module: base #: view:res.partner:0 msgid "Is a Company?" -msgstr "" +msgstr "É uma empresa?" #. module: base #: code:addons/base/res/res_company.py:159 @@ -15413,7 +15419,7 @@ msgstr "Russo / русский язык" #. module: base #: model:ir.module.module,shortdesc:base.module_auth_signup msgid "Signup" -msgstr "" +msgstr "Registo" #~ msgid "SMS - Gateway: clickatell" #~ msgstr "SMS - Gateway: clickatell" diff --git a/openerp/addons/base/i18n/pt_BR.po b/openerp/addons/base/i18n/pt_BR.po index ad649948427..832c513d2a4 100644 --- a/openerp/addons/base/i18n/pt_BR.po +++ b/openerp/addons/base/i18n/pt_BR.po @@ -7,15 +7,15 @@ 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-07 22:22+0000\n" +"PO-Revision-Date: 2012-12-11 11:52+0000\n" "Last-Translator: Fábio Martinelli - http://zupy.com.br " "\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-08 04:58+0000\n" -"X-Generator: Launchpad (build 16341)\n" +"X-Launchpad-Export-Date: 2012-12-12 04:39+0000\n" +"X-Generator: Launchpad (build 16361)\n" #. module: base #: model:ir.module.module,description:base.module_account_check_writing @@ -255,6 +255,34 @@ msgid "" "* Planned Revenue by Stage and User (graph)\n" "* Opportunities by Stage (graph)\n" msgstr "" +"\n" +"CRM - Gestão de Relacionamento com o Cliente\n" +"================================================== ===\n" +"\n" +"Este aplicativo permite que um grupo de pessoas gerencie de forma " +"inteligente e eficiente prospectos, oportunidades, reuniões e telefonemas.\n" +"\n" +"Ele gerencia tarefas essenciais, como a comunicação, a identificação, " +"priorização, atribuição, resolução e notificação.\n" +"\n" +"O OpenERP garante que todos os casos são rastreado com sucesso por usuários, " +"clientes e fornecedores. É possível enviar automaticamente lembretes, " +"escalar o pedido, acionar métodos específicos e muitas outras ações com base " +"em suas próprias regras empresariais.\n" +"\n" +"A melhor coisa sobre este sistema é que os usuários não precisam fazer nada " +"de especial. O módulo de CRM tem um gateway de e-mail para a interface de " +"sincronização entre e-mails e OpenERP. Dessa forma, os usuários podem enviar " +"e-mails apenas para o rastreador do pedido.\n" +"\n" +"O OpenERP vai cuidar de agradecê-los por sua mensagem, encaminhá-la para o " +"pessoal apropriado automaticamente e certificar-se de que toda a futura " +"correspondência chegue ao lugar certo.\n" +"\n" +"O Painel para CRM inclue:\n" +"-----------------------------------\n" +"* Receita planejada por estágio e usuário (gráfico)\n" +"* Oportunidades por estágio (gráfico)\n" #. module: base #: code:addons/base/ir/ir_model.py:397 diff --git a/openerp/addons/base/ir/ir_needaction.py b/openerp/addons/base/ir/ir_needaction.py index db133ad9904..39432ca6792 100644 --- a/openerp/addons/base/ir/ir_needaction.py +++ b/openerp/addons/base/ir/ir_needaction.py @@ -21,6 +21,7 @@ from osv import osv + class ir_needaction_mixin(osv.AbstractModel): '''Mixin class for objects using the need action feature. @@ -60,4 +61,5 @@ class ir_needaction_mixin(osv.AbstractModel): dom = self._needaction_domain_get(cr, uid, context=context) if not dom: return 0 - return self.search(cr, uid, (domain or []) +dom, context=context, count=True) + res = self.search(cr, uid, (domain or []) + dom, limit=100, order='id DESC', context=context) + return len(res) diff --git a/openerp/addons/base/ir/ir_rule.py b/openerp/addons/base/ir/ir_rule.py index a4341436158..ba4665ddd69 100644 --- a/openerp/addons/base/ir/ir_rule.py +++ b/openerp/addons/base/ir/ir_rule.py @@ -52,7 +52,7 @@ class ir_rule(osv.osv): eval_context = self._eval_context(cr, uid) for rule in self.browse(cr, uid, ids, context): if rule.domain_force: - res[rule.id] = expression.normalize(eval(rule.domain_force, eval_context)) + res[rule.id] = expression.normalize_domain(eval(rule.domain_force, eval_context)) else: res[rule.id] = [] return res @@ -130,7 +130,7 @@ class ir_rule(osv.osv): for rule in self.browse(cr, SUPERUSER_ID, rule_ids): # read 'domain' as UID to have the correct eval context for the rule. rule_domain = self.read(cr, uid, rule.id, ['domain'])['domain'] - dom = expression.normalize(rule_domain) + dom = expression.normalize_domain(rule_domain) for group in rule.groups: if group in user.groups_id: group_domains.setdefault(group, []).append(dom) diff --git a/openerp/addons/base/ir/ir_ui_menu.py b/openerp/addons/base/ir/ir_ui_menu.py index 94b5c8ab7b6..80e084502e5 100644 --- a/openerp/addons/base/ir/ir_ui_menu.py +++ b/openerp/addons/base/ir/ir_ui_menu.py @@ -269,17 +269,33 @@ class ir_ui_menu(osv.osv): return res - def _get_needaction(self, cr, uid, ids, field_names, args, context=None): + def _get_needaction_enabled(self, cr, uid, ids, field_names, args, context=None): + """ needaction_enabled: tell whether the menu has a related action + that uses the needaction mechanism. """ + res = dict.fromkeys(ids, False) + for menu in self.browse(cr, uid, ids, context=context): + if menu.action and menu.action.type in ('ir.actions.act_window', 'ir.actions.client') and menu.action.res_model: + obj = self.pool.get(menu.action.res_model) + if obj and obj._needaction: + res[menu.id] = True + return res + + def get_needaction_data(self, cr, uid, ids, context=None): + """ Return for each menu entry of ids : + - if it uses the needaction mechanism (needaction_enabled) + - the needaction counter of the related action, taking into account + the action domain + """ res = {} for menu in self.browse(cr, uid, ids, context=context): res[menu.id] = { 'needaction_enabled': False, 'needaction_counter': False, } - if menu.action and menu.action.type in ('ir.actions.act_window','ir.actions.client') and menu.action.res_model: + if menu.action and menu.action.type in ('ir.actions.act_window', 'ir.actions.client') and menu.action.res_model: obj = self.pool.get(menu.action.res_model) if obj and obj._needaction: - if menu.action.type=='ir.actions.act_window': + if menu.action.type == 'ir.actions.act_window': dom = menu.action.domain and eval(menu.action.domain, {'uid': uid}) or [] else: dom = eval(menu.action.params_store or '{}', {'uid': uid}).get('domain') @@ -290,7 +306,7 @@ class ir_ui_menu(osv.osv): _columns = { 'name': fields.char('Menu', size=64, required=True, translate=True), 'sequence': fields.integer('Sequence'), - 'child_id' : fields.one2many('ir.ui.menu', 'parent_id','Child IDs'), + 'child_id': fields.one2many('ir.ui.menu', 'parent_id', 'Child IDs'), 'parent_id': fields.many2one('ir.ui.menu', 'Parent Menu', select=True), 'groups_id': fields.many2many('res.groups', 'ir_ui_menu_group_rel', 'menu_id', 'gid', 'Groups', help="If you have groups, the visibility of this menu will be based on these groups. "\ @@ -300,11 +316,14 @@ class ir_ui_menu(osv.osv): 'icon': fields.selection(tools.icons, 'Icon', size=64), 'icon_pict': fields.function(_get_icon_pict, type='char', size=32), 'web_icon': fields.char('Web Icon File', size=128), - 'web_icon_hover':fields.char('Web Icon File (hover)', size=128), + 'web_icon_hover': fields.char('Web Icon File (hover)', size=128), 'web_icon_data': fields.function(_get_image_icon, string='Web Icon Image', type='binary', readonly=True, store=True, multi='icon'), - 'web_icon_hover_data':fields.function(_get_image_icon, string='Web Icon Image (hover)', type='binary', readonly=True, store=True, multi='icon'), - 'needaction_enabled': fields.function(_get_needaction, string='Target model uses the need action mechanism', type='boolean', help='If the menu entry action is an act_window action, and if this action is related to a model that uses the need_action mechanism, this field is set to true. Otherwise, it is false.', multi='_get_needaction'), - 'needaction_counter': fields.function(_get_needaction, string='Number of actions the user has to perform', type='integer', help='If the target model uses the need action mechanism, this field gives the number of actions the current user has to perform.', multi='_get_needaction'), + 'web_icon_hover_data': fields.function(_get_image_icon, string='Web Icon Image (hover)', type='binary', readonly=True, store=True, multi='icon'), + 'needaction_enabled': fields.function(_get_needaction_enabled, + type='boolean', + store=True, + string='Target model uses the need action mechanism', + help='If the menu entry action is an act_window action, and if this action is related to a model that uses the need_action mechanism, this field is set to true. Otherwise, it is false.'), 'action': fields.function(_action, fnct_inv=_action_inv, type='reference', string='Action', selection=[ @@ -321,12 +340,12 @@ class ir_ui_menu(osv.osv): return _('Error ! You can not create recursive Menu.') _constraints = [ - (osv.osv._check_recursion, _rec_message , ['parent_id']) + (osv.osv._check_recursion, _rec_message, ['parent_id']) ] _defaults = { - 'icon' : 'STOCK_OPEN', - 'icon_pict': ('stock', ('STOCK_OPEN','ICON_SIZE_MENU')), - 'sequence' : 10, + 'icon': 'STOCK_OPEN', + 'icon_pict': ('stock', ('STOCK_OPEN', 'ICON_SIZE_MENU')), + 'sequence': 10, } _order = "sequence,id" diff --git a/openerp/addons/base/module/module.py b/openerp/addons/base/module/module.py index cbd046a86e3..b35e36c5553 100644 --- a/openerp/addons/base/module/module.py +++ b/openerp/addons/base/module/module.py @@ -370,16 +370,20 @@ class module(osv.osv): # Mark the given modules to be installed. self.state_update(cr, uid, ids, 'to install', ['uninstalled'], context) - # Mark (recursively) the newly satisfied modules to also be installed: + # Mark (recursively) the newly satisfied modules to also be installed # Select all auto-installable (but not yet installed) modules. - domain = [('state', '=', 'uninstalled'), ('auto_install', '=', True),] + domain = [('state', '=', 'uninstalled'), ('auto_install', '=', True)] uninstalled_ids = self.search(cr, uid, domain, context=context) uninstalled_modules = self.browse(cr, uid, uninstalled_ids, context=context) - # Keep those with all their dependencies satisfied. + # Keep those with: + # - all dependencies satisfied (installed or to be installed), + # - at least one dependency being 'to install' + satisfied_states = frozenset(('installed', 'to install', 'to upgrade')) def all_depencies_satisfied(m): - return all(x.state in ('to install', 'installed', 'to upgrade') for x in m.dependencies_id) + states = set(d.state for d in m.dependencies_id) + return states.issubset(satisfied_states) and ('to install' in states) to_install_modules = filter(all_depencies_satisfied, uninstalled_modules) to_install_ids = map(lambda m: m.id, to_install_modules) diff --git a/openerp/addons/base/tests/test_expression.py b/openerp/addons/base/tests/test_expression.py index 5690cff443a..c43dda85e9b 100644 --- a/openerp/addons/base/tests/test_expression.py +++ b/openerp/addons/base/tests/test_expression.py @@ -1,11 +1,33 @@ import unittest2 - +from openerp.osv.orm import BaseModel import openerp.tests.common as common + class test_expression(common.TransactionCase): - def test_in_not_in_m2m(self): + def _reinit_mock(self): + self.query_list = list() + def _mock_base_model_where_calc(self, model, *args, **kwargs): + """ Mock build_email to be able to test its values. Store them into + some internal variable for latter processing. """ + self.query_list.append(self._base_model_where_calc(model, *args, **kwargs)) + # return the lastly stored query, the one the ORM wants to perform + return self.query_list[-1] + + def setUp(self): + super(test_expression, self).setUp() + # Mock BaseModel._where_calc(), to be able to proceed to some tests about generated expression + self._reinit_mock() + self._base_model_where_calc = BaseModel._where_calc + BaseModel._where_calc = lambda model, cr, uid, args, context: self._mock_base_model_where_calc(model, cr, uid, args, context) + + def tearDown(self): + # Remove mocks + BaseModel._where_calc = self._base_model_where_calc + super(test_expression, self).tearDown() + + def test_00_in_not_in_m2m(self): registry, cr, uid = self.registry, self.cr, self.uid # Create 4 partners with no category, or one or two categories (out of two categories). @@ -70,3 +92,346 @@ class test_expression(common.TransactionCase): # self.assertTrue(a not in with_any_other_than_a, "Search for category_id with any other than cat_a failed (1).") # self.assertTrue(ab in with_any_other_than_a, "Search for category_id with any other than cat_a failed (2).") + def test_10_expression_parse(self): + # TDE note: those tests have been added when refactoring the expression.parse() method. + # They come in addition to the already existing test_osv_expression.yml; maybe some tests + # will be a bit redundant + registry, cr, uid = self.registry, self.cr, self.uid + users_obj = registry('res.users') + + # Create users + a = users_obj.create(cr, uid, {'name': 'test_A', 'login': 'test_A'}) + b1 = users_obj.create(cr, uid, {'name': 'test_B', 'login': 'test_B'}) + b1_user = users_obj.browse(cr, uid, [b1])[0] + b2 = users_obj.create(cr, uid, {'name': 'test_B2', 'login': 'test_B2', 'parent_id': b1_user.partner_id.id}) + + # Test1: simple inheritance + user_ids = users_obj.search(cr, uid, [('name', 'like', 'test')]) + self.assertEqual(set(user_ids), set([a, b1, b2]), 'searching through inheritance failed') + user_ids = users_obj.search(cr, uid, [('name', '=', 'test_B')]) + self.assertEqual(set(user_ids), set([b1]), 'searching through inheritance failed') + + # Test2: inheritance + relational fields + user_ids = users_obj.search(cr, uid, [('child_ids.name', 'like', 'test_B')]) + self.assertEqual(set(user_ids), set([b1]), 'searching through inheritance failed') + + def test_20_auto_join(self): + registry, cr, uid = self.registry, self.cr, self.uid + + # Get models + partner_obj = registry('res.partner') + state_obj = registry('res.country.state') + bank_obj = registry('res.partner.bank') + + # Get test columns + partner_state_id_col = partner_obj._columns.get('state_id') # many2one on res.partner to res.country.state + partner_parent_id_col = partner_obj._columns.get('parent_id') # many2one on res.partner to res.partner + state_country_id_col = state_obj._columns.get('country_id') # many2one on res.country.state on res.country + partner_child_ids_col = partner_obj._columns.get('child_ids') # one2many on res.partner to res.partner + partner_bank_ids_col = partner_obj._columns.get('bank_ids') # one2many on res.partner to res.partner.bank + category_id_col = partner_obj._columns.get('category_id') # many2many on res.partner to res.partner.category + + # Get the first bank account type to be able to create a res.partner.bank + bank_type = bank_obj._bank_type_get(cr, uid)[0] + # Get country/state data + country_us_id = registry('res.country').search(cr, uid, [('code', 'like', 'US')])[0] + state_ids = registry('res.country.state').search(cr, uid, [('country_id', '=', country_us_id)], limit=2) + + # Create demo data: partners and bank object + p_a = partner_obj.create(cr, uid, {'name': 'test__A', 'state_id': state_ids[0]}) + p_b = partner_obj.create(cr, uid, {'name': 'test__B', 'state_id': state_ids[1]}) + p_aa = partner_obj.create(cr, uid, {'name': 'test__AA', 'parent_id': p_a, 'state_id': state_ids[0]}) + p_ab = partner_obj.create(cr, uid, {'name': 'test__AB', 'parent_id': p_a, 'state_id': state_ids[1]}) + p_ba = partner_obj.create(cr, uid, {'name': 'test__BA', 'parent_id': p_b, 'state_id': state_ids[0]}) + b_aa = bank_obj.create(cr, uid, {'name': '__bank_test_a', 'state': bank_type[0], 'partner_id': p_aa, 'acc_number': '1234'}) + b_ab = bank_obj.create(cr, uid, {'name': '__bank_test_b', 'state': bank_type[0], 'partner_id': p_ab, 'acc_number': '5678'}) + b_ba = bank_obj.create(cr, uid, {'name': '__bank_test_b', 'state': bank_type[0], 'partner_id': p_ba, 'acc_number': '9876'}) + + # -------------------------------------------------- + # Test1: basics about the attribute + # -------------------------------------------------- + + category_id_col._auto_join = True + self.assertRaises(NotImplementedError, partner_obj.search, cr, uid, [('category_id.name', '=', 'foo')]) + category_id_col._auto_join = False + + # -------------------------------------------------- + # Test2: one2many + # -------------------------------------------------- + + name_test = 'test_a' + + # Do: one2many without _auto_join + self._reinit_mock() + partner_ids = partner_obj.search(cr, uid, [('bank_ids.name', 'like', name_test)]) + # Test result + self.assertEqual(set(partner_ids), set([p_aa]), + "_auto_join off: ('bank_ids.name', 'like', '..'): incorrect result") + # Test produced queries + self.assertEqual(len(self.query_list), 3, + "_auto_join off: ('bank_ids.name', 'like', '..') should produce 3 queries (1 in res_partner_bank, 2 on res_partner)") + sql_query = self.query_list[0].get_sql() + self.assertIn('res_partner_bank', sql_query[0], + "_auto_join off: ('bank_ids.name', 'like', '..') first query incorrect main table") + self.assertIn('"res_partner_bank"."name" like %s', sql_query[1], + "_auto_join off: ('bank_ids.name', 'like', '..') first query incorrect where condition") + self.assertEqual(set(['%' + name_test + '%']), set(sql_query[2]), + "_auto_join off: ('bank_ids.name', 'like', '..') first query incorrect parameter") + sql_query = self.query_list[2].get_sql() + self.assertIn('res_partner', sql_query[0], + "_auto_join off: ('bank_ids.name', 'like', '..') third query incorrect main table") + self.assertIn('"res_partner"."id" in (%s)', sql_query[1], + "_auto_join off: ('bank_ids.name', 'like', '..') third query incorrect where condition") + self.assertEqual(set([p_aa]), set(sql_query[2]), + "_auto_join off: ('bank_ids.name', 'like', '..') third query incorrect parameter") + + # Do: cascaded one2many without _auto_join + self._reinit_mock() + partner_ids = partner_obj.search(cr, uid, [('child_ids.bank_ids.id', 'in', [b_aa, b_ba])]) + # Test result + self.assertEqual(set(partner_ids), set([p_a, p_b]), + "_auto_join off: ('child_ids.bank_ids.id', 'in', [..]): incorrect result") + # Test produced queries + self.assertEqual(len(self.query_list), 5, + "_auto_join off: ('child_ids.bank_ids.id', 'in', [..]) should produce 5 queries (1 in res_partner_bank, 4 on res_partner)") + + # Do: one2many with _auto_join + partner_bank_ids_col._auto_join = True + self._reinit_mock() + partner_ids = partner_obj.search(cr, uid, [('bank_ids.name', 'like', 'test_a')]) + # Test result + self.assertEqual(set(partner_ids), set([p_aa]), + "_auto_join on: ('bank_ids.name', 'like', '..') incorrect result") + # Test produced queries + self.assertEqual(len(self.query_list), 1, + "_auto_join on: ('bank_ids.name', 'like', '..') should produce 1 query") + sql_query = self.query_list[0].get_sql() + self.assertIn('"res_partner"', sql_query[0], + "_auto_join on: ('bank_ids.name', 'like', '..') query incorrect main table") + self.assertIn('"res_partner_bank" as "res_partner__bank_ids"', sql_query[0], + "_auto_join on: ('bank_ids.name', 'like', '..') query incorrect join") + self.assertIn('"res_partner__bank_ids"."name" like %s', sql_query[1], + "_auto_join on: ('bank_ids.name', 'like', '..') query incorrect where condition") + self.assertIn('"res_partner"."id"="res_partner__bank_ids"."partner_id"', sql_query[1], + "_auto_join on: ('bank_ids.name', 'like', '..') query incorrect join condition") + self.assertEqual(set(['%' + name_test + '%']), set(sql_query[2]), + "_auto_join on: ('bank_ids.name', 'like', '..') query incorrect parameter") + + # Do: one2many with _auto_join, test final leaf is an id + self._reinit_mock() + partner_ids = partner_obj.search(cr, uid, [('bank_ids.id', 'in', [b_aa, b_ab])]) + # Test result + self.assertEqual(set(partner_ids), set([p_aa, p_ab]), + "_auto_join on: ('bank_ids.id', 'in', [..]) incorrect result") + # Test produced queries + self.assertEqual(len(self.query_list), 1, + "_auto_join on: ('bank_ids.id', 'in', [..]) should produce 1 query") + sql_query = self.query_list[0].get_sql() + self.assertIn('"res_partner"', sql_query[0], + "_auto_join on: ('bank_ids.id', 'in', [..]) query incorrect main table") + self.assertIn('"res_partner__bank_ids"."id" in (%s,%s)', sql_query[1], + "_auto_join on: ('bank_ids.id', 'in', [..]) query incorrect where condition") + self.assertEqual(set([b_aa, b_ab]), set(sql_query[2]), + "_auto_join on: ('bank_ids.id', 'in', [..]) query incorrect parameter") + + # Do: 2 cascaded one2many with _auto_join, test final leaf is an id + partner_child_ids_col._auto_join = True + self._reinit_mock() + partner_ids = partner_obj.search(cr, uid, [('child_ids.bank_ids.id', 'in', [b_aa, b_ba])]) + # Test result + self.assertEqual(set(partner_ids), set([p_a, p_b]), + "_auto_join on: ('child_ids.bank_ids.id', 'not in', [..]): incorrect result") + # # Test produced queries + self.assertEqual(len(self.query_list), 1, + "_auto_join on: ('child_ids.bank_ids.id', 'in', [..]) should produce 1 query") + sql_query = self.query_list[0].get_sql() + self.assertIn('"res_partner"', sql_query[0], + "_auto_join on: ('child_ids.bank_ids.id', 'in', [..]) incorrect main table") + self.assertIn('"res_partner" as "res_partner__child_ids"', sql_query[0], + "_auto_join on: ('child_ids.bank_ids.id', 'in', [..]) query incorrect join") + self.assertIn('"res_partner_bank" as "res_partner__child_ids__bank_ids"', sql_query[0], + "_auto_join on: ('child_ids.bank_ids.id', 'in', [..]) query incorrect join") + self.assertIn('"res_partner__child_ids__bank_ids"."id" in (%s,%s)', sql_query[1], + "_auto_join on: ('child_ids.bank_ids.id', 'in', [..]) query incorrect where condition") + self.assertIn('"res_partner"."id"="res_partner__child_ids"."parent_id"', sql_query[1], + "_auto_join on: ('child_ids.bank_ids.id', 'in', [..]) query incorrect join condition") + self.assertIn('"res_partner__child_ids"."id"="res_partner__child_ids__bank_ids"."partner_id"', sql_query[1], + "_auto_join on: ('child_ids.bank_ids.id', 'in', [..]) query incorrect join condition") + self.assertEqual(set([b_aa, b_ba]), set(sql_query[2]), + "_auto_join on: ('child_ids.bank_ids.id', 'in', [..]) query incorrect parameter") + + # -------------------------------------------------- + # Test3: many2one + # -------------------------------------------------- + + name_test = 'US' + + # Do: many2one without _auto_join + self._reinit_mock() + partner_ids = partner_obj.search(cr, uid, [('state_id.country_id.code', 'like', name_test)]) + # Test result: at least our added data + demo data + self.assertTrue(set([p_a, p_b, p_aa, p_ab, p_ba]).issubset(set(partner_ids)), + "_auto_join off: ('state_id.country_id.code', 'like', '..') incorrect result") + # Test produced queries + self.assertEqual(len(self.query_list), 3, + "_auto_join off: ('state_id.country_id.code', 'like', '..') should produce 3 queries (1 on res_country, 1 on res_country_state, 1 on res_partner)") + + # Do: many2one with 1 _auto_join on the first many2one + partner_state_id_col._auto_join = True + self._reinit_mock() + partner_ids = partner_obj.search(cr, uid, [('state_id.country_id.code', 'like', name_test)]) + # Test result: at least our added data + demo data + self.assertTrue(set([p_a, p_b, p_aa, p_ab, p_ba]).issubset(set(partner_ids)), + "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') incorrect result") + # Test produced queries + self.assertEqual(len(self.query_list), 2, + "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') should produce 2 query") + sql_query = self.query_list[0].get_sql() + self.assertIn('"res_country"', sql_query[0], + "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect main table") + self.assertIn('"res_country"."code" like %s', sql_query[1], + "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect where condition") + self.assertEqual(['%' + name_test + '%'], sql_query[2], + "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect parameter") + sql_query = self.query_list[1].get_sql() + self.assertIn('"res_partner"', sql_query[0], + "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') query 2 incorrect main table") + self.assertIn('"res_country_state" as "res_partner__state_id"', sql_query[0], + "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') query 2 incorrect join") + self.assertIn('"res_partner__state_id"."country_id" in (%s)', sql_query[1], + "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') query 2 incorrect where condition") + self.assertIn('"res_partner"."state_id"="res_partner__state_id"."id"', sql_query[1], + "_auto_join on for state_id: ('state_id.country_id.code', 'like', '..') query 2 incorrect join condition") + + # Do: many2one with 1 _auto_join on the second many2one + partner_state_id_col._auto_join = False + state_country_id_col._auto_join = True + self._reinit_mock() + partner_ids = partner_obj.search(cr, uid, [('state_id.country_id.code', 'like', name_test)]) + # Test result: at least our added data + demo data + self.assertTrue(set([p_a, p_b, p_aa, p_ab, p_ba]).issubset(set(partner_ids)), + "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') incorrect result") + # Test produced queries + self.assertEqual(len(self.query_list), 2, + "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') should produce 2 query") + # -- first query + sql_query = self.query_list[0].get_sql() + self.assertIn('"res_country_state"', sql_query[0], + "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect main table") + self.assertIn('"res_country" as "res_country_state__country_id"', sql_query[0], + "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect join") + self.assertIn('"res_country_state__country_id"."code" like %s', sql_query[1], + "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect where condition") + self.assertIn('"res_country_state"."country_id"="res_country_state__country_id"."id"', sql_query[1], + "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect join condition") + self.assertEqual(['%' + name_test + '%'], sql_query[2], + "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') query 1 incorrect parameter") + # -- second query + sql_query = self.query_list[1].get_sql() + self.assertIn('"res_partner"', sql_query[0], + "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') query 2 incorrect main table") + self.assertIn('"res_partner"."state_id" in', sql_query[1], + "_auto_join on for country_id: ('state_id.country_id.code', 'like', '..') query 2 incorrect where condition") + + # Do: many2one with 2 _auto_join + partner_state_id_col._auto_join = True + state_country_id_col._auto_join = True + self._reinit_mock() + partner_ids = partner_obj.search(cr, uid, [('state_id.country_id.code', 'like', name_test)]) + # Test result: at least our added data + demo data + self.assertTrue(set([p_a, p_b, p_aa, p_ab, p_ba]).issubset(set(partner_ids)), + "_auto_join on: ('state_id.country_id.code', 'like', '..') incorrect result") + # Test produced queries + self.assertEqual(len(self.query_list), 1, + "_auto_join on: ('state_id.country_id.code', 'like', '..') should produce 1 query") + sql_query = self.query_list[0].get_sql() + self.assertIn('"res_partner"', sql_query[0], + "_auto_join on: ('state_id.country_id.code', 'like', '..') query incorrect main table") + self.assertIn('"res_country_state" as "res_partner__state_id"', sql_query[0], + "_auto_join on: ('state_id.country_id.code', 'like', '..') query incorrect join") + self.assertIn('"res_country" as "res_partner__state_id__country_id"', sql_query[0], + "_auto_join on: ('state_id.country_id.code', 'like', '..') query incorrect join") + self.assertIn('"res_partner__state_id__country_id"."code" like %s', sql_query[1], + "_auto_join on: ('state_id.country_id.code', 'like', '..') query incorrect where condition") + self.assertIn('"res_partner"."state_id"="res_partner__state_id"."id"', sql_query[1], + "_auto_join on: ('state_id.country_id.code', 'like', '..') query incorrect join condition") + self.assertIn('"res_partner__state_id"."country_id"="res_partner__state_id__country_id"."id"', sql_query[1], + "_auto_join on: ('state_id.country_id.code', 'like', '..') query incorrect join condition") + self.assertEqual(['%' + name_test + '%'], sql_query[2], + "_auto_join on: ('state_id.country_id.code', 'like', '..') query incorrect parameter") + + # -------------------------------------------------- + # Test4: domain attribute on one2many fields + # -------------------------------------------------- + + partner_child_ids_col._auto_join = True + partner_bank_ids_col._auto_join = True + partner_child_ids_col._domain = lambda self: ['!', ('name', '=', self._name)] + partner_bank_ids_col._domain = [('acc_number', 'like', '1')] + # Do: 2 cascaded one2many with _auto_join, test final leaf is an id + self._reinit_mock() + partner_ids = partner_obj.search(cr, uid, ['&', (1, '=', 1), ('child_ids.bank_ids.id', 'in', [b_aa, b_ba])]) + # Test result: at least one of our added data + self.assertTrue(set([p_a]).issubset(set(partner_ids)), + "_auto_join on one2many with domains incorrect result") + self.assertTrue(set([p_ab, p_ba]) not in set(partner_ids), + "_auto_join on one2many with domains incorrect result") + # Test produced queries that domains effectively present + sql_query = self.query_list[0].get_sql() + self.assertIn('"res_partner__child_ids__bank_ids"."acc_number" like %s', sql_query[1], + "_auto_join on one2many with domains incorrect result") + # TDE TODO: check first domain has a correct table name + self.assertIn('"res_partner__child_ids"."name" = %s', sql_query[1], + "_auto_join on one2many with domains incorrect result") + + partner_child_ids_col._domain = lambda self: [('name', '=', '__%s' % self._name)] + self._reinit_mock() + partner_ids = partner_obj.search(cr, uid, ['&', (1, '=', 1), ('child_ids.bank_ids.id', 'in', [b_aa, b_ba])]) + # Test result: no one + self.assertFalse(partner_ids, + "_auto_join on one2many with domains incorrect result") + + # ---------------------------------------- + # Test5: result-based tests + # ---------------------------------------- + + partner_bank_ids_col._auto_join = False + partner_child_ids_col._auto_join = False + partner_state_id_col._auto_join = False + partner_parent_id_col._auto_join = False + state_country_id_col._auto_join = False + partner_child_ids_col._domain = [] + partner_bank_ids_col._domain = [] + + # Do: ('child_ids.state_id.country_id.code', 'like', '..') without _auto_join + self._reinit_mock() + partner_ids = partner_obj.search(cr, uid, [('child_ids.state_id.country_id.code', 'like', name_test)]) + # Test result: at least our added data + demo data + self.assertTrue(set([p_a, p_b]).issubset(set(partner_ids)), + "_auto_join off: ('child_ids.state_id.country_id.code', 'like', '..') incorrect result") + # Test produced queries + self.assertEqual(len(self.query_list), 5, + "_auto_join off: ('child_ids.state_id.country_id.code', 'like', '..') number of queries incorrect") + + # Do: ('child_ids.state_id.country_id.code', 'like', '..') with _auto_join + partner_child_ids_col._auto_join = True + partner_state_id_col._auto_join = True + state_country_id_col._auto_join = True + self._reinit_mock() + partner_ids = partner_obj.search(cr, uid, [('child_ids.state_id.country_id.code', 'like', name_test)]) + # Test result: at least our added data + demo data + self.assertTrue(set([p_a, p_b]).issubset(set(partner_ids)), + "_auto_join on: ('child_ids.state_id.country_id.code', 'like', '..') incorrect result") + # Test produced queries + self.assertEqual(len(self.query_list), 1, + "_auto_join on: ('child_ids.state_id.country_id.code', 'like', '..') number of queries incorrect") + + # Remove mocks and modifications + partner_bank_ids_col._auto_join = False + partner_child_ids_col._auto_join = False + partner_state_id_col._auto_join = False + partner_parent_id_col._auto_join = False + state_country_id_col._auto_join = False + +if __name__ == '__main__': + unittest2.main() diff --git a/openerp/addons/base/tests/test_search.py b/openerp/addons/base/tests/test_search.py index dc554408667..4f93eff240c 100644 --- a/openerp/addons/base/tests/test_search.py +++ b/openerp/addons/base/tests/test_search.py @@ -2,16 +2,17 @@ import unittest2 import openerp.tests.common as common -class test_expression(common.TransactionCase): - def test_search_order(self): +class test_search(common.TransactionCase): + + def test_00_search_order(self): registry, cr, uid = self.registry, self.cr, self.uid - # Create 6 partners with a given name, and a given creation order to - # ensure the order of their ID. Some are set as unactive to verify they - # are by default excluded from the searches and to provide a second - # `order` argument. + # Create 6 partners with a given name, and a given creation order to + # ensure the order of their ID. Some are set as unactive to verify they + # are by default excluded from the searches and to provide a second + # `order` argument. partners = registry('res.partner') c = partners.create(cr, uid, {'name': 'test_search_order_C'}) @@ -23,9 +24,9 @@ class test_expression(common.TransactionCase): # The tests. - # The basic searches should exclude records that have active = False. - # The order of the returned ids should be given by the `order` - # parameter of search(). + # The basic searches should exclude records that have active = False. + # The order of the returned ids should be given by the `order` + # parameter of search(). name_asc = partners.search(cr, uid, [('name', 'like', 'test_search_order%')], order="name asc") self.assertEqual([a, ab, b, c], name_asc, "Search with 'NAME ASC' order failed.") @@ -36,9 +37,9 @@ class test_expression(common.TransactionCase): id_desc = partners.search(cr, uid, [('name', 'like', 'test_search_order%')], order="id desc") self.assertEqual([ab, b, a, c], id_desc, "Search with 'ID DESC' order failed.") - # The inactive records shouldn't be excluded as soon as a condition on - # that field is present in the domain. The `order` parameter of - # search() should support any legal coma-separated values. + # The inactive records shouldn't be excluded as soon as a condition on + # that field is present in the domain. The `order` parameter of + # search() should support any legal coma-separated values. active_asc_id_asc = partners.search(cr, uid, [('name', 'like', 'test_search_order%'), '|', ('active', '=', True), ('active', '=', False)], order="active asc, id asc") self.assertEqual([d, e, c, a, b, ab], active_asc_id_asc, "Search with 'ACTIVE ASC, ID ASC' order failed.") @@ -57,4 +58,52 @@ class test_expression(common.TransactionCase): id_desc_active_desc = partners.search(cr, uid, [('name', 'like', 'test_search_order%'), '|', ('active', '=', True), ('active', '=', False)], order="id desc, active desc") self.assertEqual([e, ab, b, a, d, c], id_desc_active_desc, "Search with 'ID DESC, ACTIVE DESC' order failed.") + def test_10_inherits_m2order(self): + registry, cr, uid = self.registry, self.cr, self.uid + users_obj = registry('res.users') + # Find Employee group + group_employee_ref = self.registry('ir.model.data').get_object_reference(cr, uid, 'base', 'group_user') + group_employee_id = group_employee_ref and group_employee_ref[1] or False + + # Get country/state data + country_us_id = registry('res.country').search(cr, uid, [('code', 'like', 'US')])[0] + state_ids = registry('res.country.state').search(cr, uid, [('country_id', '=', country_us_id)], limit=2) + country_be_id = registry('res.country').search(cr, uid, [('code', 'like', 'BE')])[0] + + # Create test users + search_user = users_obj.create(cr, uid, {'name': '__search', 'login': '__search', 'groups_id': [(6, 0, [group_employee_id])]}) + a = users_obj.create(cr, uid, {'name': '__test_A', 'login': '__test_A', 'country_id': country_be_id, 'state_id': country_be_id}) + b = users_obj.create(cr, uid, {'name': '__test_B', 'login': '__a_test_B', 'country_id': country_us_id, 'state_id': state_ids[1]}) + c = users_obj.create(cr, uid, {'name': '__test_B', 'login': '__z_test_B', 'country_id': country_us_id, 'state_id': state_ids[0]}) + + # Do: search on res.users, order on a field on res.partner to try inherits'd fields, then res.users + user_ids = users_obj.search(cr, search_user, [], order='name asc, login desc') + expected_ids = [search_user, a, c, b] + test_user_ids = filter(lambda x: x in expected_ids, user_ids) + self.assertEqual(test_user_ids, expected_ids, 'search on res_users did not provide expected ids or expected order') + + # Do: order on many2one and inherits'd fields + user_ids = users_obj.search(cr, search_user, [], order='state_id asc, country_id desc, name asc, login desc') + expected_ids = [c, b, a, search_user] + test_user_ids = filter(lambda x: x in expected_ids, user_ids) + self.assertEqual(test_user_ids, expected_ids, 'search on res_users did not provide expected ids or expected order') + + # Do: order on many2one and inherits'd fields + user_ids = users_obj.search(cr, search_user, [], order='country_id desc, state_id desc, name asc, login desc') + expected_ids = [search_user, b, c, a] + test_user_ids = filter(lambda x: x in expected_ids, user_ids) + self.assertEqual(test_user_ids, expected_ids, 'search on res_users did not provide expected ids or expected order') + + # Do: order on many2one, but not by specifying in order parameter of search, but by overriding _order of res_users + old_order = users_obj._order + users_obj._order = 'country_id desc, name asc, login desc' + user_ids = users_obj.search(cr, search_user, []) + expected_ids = [search_user, c, b, a] + test_user_ids = filter(lambda x: x in expected_ids, user_ids) + self.assertEqual(test_user_ids, expected_ids, 'search on res_users did not provide expected ids or expected order') + users_obj._order = old_order + + +if __name__ == '__main__': + unittest2.main() diff --git a/openerp/netsvc.py b/openerp/netsvc.py index fead3bd7908..37de4dd5b8b 100644 --- a/openerp/netsvc.py +++ b/openerp/netsvc.py @@ -20,6 +20,9 @@ # ############################################################################## +#.apidoc title: Common Services: netsvc +#.apidoc module-mods: member-order: bysource + import errno import logging import logging.handlers @@ -41,9 +44,23 @@ import openerp _logger = logging.getLogger(__name__) +def close_socket(sock): + """ Closes a socket instance cleanly -#.apidoc title: Common Services: netsvc -#.apidoc module-mods: member-order: bysource + :param sock: the network socket to close + :type sock: socket.socket + """ + try: + sock.shutdown(socket.SHUT_RDWR) + except socket.error, e: + # On OSX, socket shutdowns both sides if any side closes it + # causing an error 57 'Socket is not connected' on shutdown + # of the other side (or something), see + # http://bugs.python.org/issue4397 + # note: stdlib fixed test, not behavior + if e.errno != errno.ENOTCONN or platform.system() not in ['Darwin', 'Windows']: + raise + sock.close() def abort_response(dummy_1, description, dummy_2, details): # TODO Replace except_{osv,orm} with these directly. diff --git a/openerp/osv/expression.py b/openerp/osv/expression.py index 2b2d33a496e..e14e013d536 100644 --- a/openerp/osv/expression.py +++ b/openerp/osv/expression.py @@ -136,10 +136,10 @@ start the server specifying the ``--unaccent`` flag. import logging import traceback -from openerp.tools import flatten, reverse_enumerate -import fields import openerp.modules +from openerp.osv import fields from openerp.osv.orm import MAGIC_COLUMNS +import openerp.tools as tools #.apidoc title: Domain Expressions @@ -174,7 +174,12 @@ FALSE_DOMAIN = [FALSE_LEAF] _logger = logging.getLogger(__name__) -def normalize(domain): + +# -------------------------------------------------- +# Generic domain manipulation +# -------------------------------------------------- + +def normalize_domain(domain): """Returns a normalized version of ``domain_expr``, where all implicit '&' operators have been made explicit. One property of normalized domain expressions is that they can be easily combined together as if they were single domain components. @@ -190,13 +195,14 @@ def normalize(domain): result[0:0] = [AND_OPERATOR] # put an extra '&' in front expected = 1 result.append(token) - if isinstance(token, (list, tuple)): # domain term + if isinstance(token, (list, tuple)): # domain term expected -= 1 else: expected += op_arity.get(token, 0) - 1 assert expected == 0 return result + def combine(operator, unit, zero, domains): """Returns a new domain expression where all domain components from ``domains`` have been added together using the binary operator ``operator``. The given @@ -227,46 +233,16 @@ def combine(operator, unit, zero, domains): result = [operator] * (count - 1) + result return result + def AND(domains): """AND([D1,D2,...]) returns a domain representing D1 and D2 and ... """ return combine(AND_OPERATOR, TRUE_DOMAIN, FALSE_DOMAIN, domains) + def OR(domains): """OR([D1,D2,...]) returns a domain representing D1 or D2 or ... """ return combine(OR_OPERATOR, FALSE_DOMAIN, TRUE_DOMAIN, domains) -def is_operator(element): - """Test whether an object is a valid domain operator. """ - return isinstance(element, basestring) and element in DOMAIN_OPERATORS - -# TODO change the share wizard to use this function. -def is_leaf(element, internal=False): - """ Test whether an object is a valid domain term. - - :param internal: allow or not the 'inselect' internal operator in the term. - This normally should be always left to False. - """ - INTERNAL_OPS = TERM_OPERATORS + ('inselect',) - return (isinstance(element, tuple) or isinstance(element, list)) \ - and len(element) == 3 \ - and (((not internal) and element[1] in TERM_OPERATORS + ('<>',)) \ - or (internal and element[1] in INTERNAL_OPS + ('<>',))) - -def normalize_leaf(left, operator, right): - """ Change a term's operator to some canonical form, simplifying later - processing. - """ - original = operator - operator = operator.lower() - if operator == '<>': - operator = '!=' - if isinstance(right, bool) and operator in ('in', 'not in'): - _logger.warning("The domain term '%s' should use the '=' or '!=' operator." % ((left, original, right),)) - operator = '=' if operator == 'in' else '!=' - 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 def distribute_not(domain): """ Distribute any '!' domain operators found inside a normalized domain. @@ -308,6 +284,7 @@ def distribute_not(domain): operator = mapping[operator] return [(left, operator, right)] return [NOT_OPERATOR, (left, operator, right)] + def distribute_negate(domain): """Negate the domain ``subtree`` rooted at domain[0], leaving the rest of the domain intact, and return @@ -331,60 +308,388 @@ def distribute_not(domain): done, todo = distribute_negate(domain[1:]) return done + distribute_not(todo) + +# -------------------------------------------------- +# Generic leaf manipulation +# -------------------------------------------------- + +def _quote(to_quote): + if '"' not in to_quote: + return '"%s"' % to_quote + return to_quote + + +def generate_table_alias(src_table_alias, joined_tables=[]): + """ Generate a standard table alias name. An alias is generated as following: + - the base is the source table name (that can already be an alias) + - then, each joined table is added in the alias using a 'link field name' + that is used to render unique aliases for a given path + - returns a tuple composed of the alias, and the full table alias to be + added in a from condition with quoting done + Examples: + - src_table_alias='res_users', join_tables=[]: + alias = ('res_users','"res_users"') + - 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) + + :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)) + 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))) + + +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('"', '')) + else: + return (from_splitted[0].replace('"', ''), from_splitted[0].replace('"', '')) + + +def normalize_leaf(element): + """ Change a term's operator to some canonical form, simplifying later + processing. """ + if not is_leaf(element): + return element + left, operator, right = element + original = operator + operator = operator.lower() + if operator == '<>': + operator = '!=' + if isinstance(right, bool) and operator in ('in', 'not in'): + _logger.warning("The domain term '%s' should use the '=' or '!=' operator." % ((left, original, right),)) + operator = '=' if operator == 'in' else '!=' + 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) + + +def is_operator(element): + """ Test whether an object is a valid domain operator. """ + return isinstance(element, basestring) and element in DOMAIN_OPERATORS + + +def is_leaf(element, internal=False): + """ Test whether an object is a valid domain term: + - is a list or tuple + - with 3 elements + - second element if a valid op + + :param tuple element: a leaf in form (left, operator, right) + :param boolean internal: allow or not the 'inselect' internal operator + in the term. This should be always left to False. + + Note: OLD TODO change the share wizard to use this function. + """ + INTERNAL_OPS = TERM_OPERATORS + ('<>',) + if internal: + INTERNAL_OPS += ('inselect',) + return (isinstance(element, tuple) or isinstance(element, list)) \ + and len(element) == 3 \ + and element[1] in INTERNAL_OPS + + +# -------------------------------------------------- +# SQL utils +# -------------------------------------------------- + def select_from_where(cr, select_field, from_table, where_field, where_ids, where_operator): # todo: merge into parent query as sub-query res = [] if where_ids: - if where_operator in ['<','>','>=','<=']: + if where_operator in ['<', '>', '>=', '<=']: cr.execute('SELECT "%s" FROM "%s" WHERE "%s" %s %%s' % \ (select_field, from_table, where_field, where_operator), - (where_ids[0],)) # TODO shouldn't this be min/max(where_ids) ? + (where_ids[0],)) # TODO shouldn't this be min/max(where_ids) ? res = [r[0] for r in cr.fetchall()] - else: # TODO where_operator is supposed to be 'in'? It is called with child_of... + else: # TODO where_operator is supposed to be 'in'? It is called with child_of... for i in range(0, len(where_ids), cr.IN_MAX): - subids = where_ids[i:i+cr.IN_MAX] + subids = where_ids[i:i + cr.IN_MAX] cr.execute('SELECT "%s" FROM "%s" WHERE "%s" IN %%s' % \ (select_field, from_table, where_field), (tuple(subids),)) res.extend([r[0] for r in cr.fetchall()]) return res + def select_distinct_from_where_not_null(cr, select_field, from_table): - cr.execute('SELECT distinct("%s") FROM "%s" where "%s" is not null' % \ - (select_field, from_table, select_field)) + cr.execute('SELECT distinct("%s") FROM "%s" where "%s" is not null' % (select_field, from_table, select_field)) return [r[0] for r in cr.fetchall()] -class expression(object): + +# -------------------------------------------------- +# ExtendedLeaf class for managing leafs and contexts +# ------------------------------------------------- + +class ExtendedLeaf(object): + """ Class wrapping a domain leaf, and giving some services and management + features on it. In particular it managed join contexts to be able to + construct queries through multiple models. """ - parse a domain expression - use a real polish notation - leafs are still in a ('foo', '=', 'bar') format - For more info: http://christophe-simonis-at-tiny.blogspot.com/2008/08/new-new-domain-notation.html + + # -------------------------------------------------- + # Join / Context manipulation + # running examples: + # - res_users.name, like, foo: name is on res_partner, not on res_users + # - res_partner.bank_ids.name, like, foo: bank_ids is a one2many with _auto_join + # - res_partner.state_id.name, like, foo: state_id is a many2one with _auto_join + # A join: + # - link between src_table and dst_table, using src_field and dst_field + # i.e.: inherits: res_users.partner_id = res_partner.id + # i.e.: one2many: res_partner.id = res_partner_bank.partner_id + # i.e.: many2one: res_partner.state_id = res_country_state.id + # - done in the context of a field + # i.e.: inherits: 'partner_id' + # i.e.: one2many: 'bank_ids' + # i.e.: many2one: 'state_id' + # - table names use aliases: initial table followed by the context field + # names, joined using a '__' + # i.e.: inherits: res_partner as res_users__partner_id + # i.e.: one2many: res_partner_bank as res_partner__bank_ids + # i.e.: many2one: res_country_state as res_partner__state_id + # - join condition use aliases + # i.e.: inherits: res_users.partner_id = res_users__partner_id.id + # i.e.: one2many: res_partner.id = res_partner__bank_ids.parr_id + # i.e.: many2one: res_partner.state_id = res_partner__state_id.id + # Variables explanation: + # - src_table: working table before the join + # -> res_users, res_partner, res_partner + # - dst_table: working table after the join + # -> res_partner, res_partner_bank, res_country_state + # - src_table_link_name: field name used to link the src table, not + # necessarily a field (because 'id' is not a field instance) + # i.e.: inherits: 'partner_id', found in the inherits of the current table + # i.e.: one2many: 'id', not a field + # i.e.: many2one: 'state_id', the current field name + # - dst_table_link_name: field name used to link the dst table, not + # necessarily a field (because 'id' is not a field instance) + # i.e.: inherits: 'id', not a field + # i.e.: one2many: 'partner_id', _fields_id of the current field + # i.e.: many2one: 'id', not a field + # - context_field_name: field name used as a context to make the alias + # i.e.: inherits: 'partner_id': found in the inherits of the current table + # i.e.: one2many: 'bank_ids': current field name + # i.e.: many2one: 'state_id': current field name + # -------------------------------------------------- + + def __init__(self, leaf, model, join_context=None): + """ Initialize the ExtendedLeaf + + :attr [string, tuple] leaf: operator or tuple-formatted domain + expression + :attr obj model: current working model + :attr list _models: list of chained models, updated when + 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 + that is not necessarily (but generally) a real column used + in the condition (i.e. in many2one); this link is used to + compute aliases + """ + assert model, 'Invalid leaf creation without table' + self.join_context = join_context or [] + self.leaf = leaf + # normalize the leaf's operator + self.normalize_leaf() + # set working variables; handle the context stack and previous tables + self.model = model + self._models = [] + for item in self.join_context: + self._models.append(item[0]) + self._models.append(model) + # check validity + self.check_leaf() + + def __str__(self): + return '' % (str(self.leaf), self.model._table, ','.join(self._get_context_debug())) + + def generate_alias(self): + links = [(context[1]._table, context[4]) for context in self.join_context] + alias, alias_statement = generate_table_alias(self._models[0]._table, links) + return alias + + def add_join_context(self, model, lhs_col, table_col, link): + """ See above comments for more details. A join context is a tuple like: + ``(lhs, model, lhs_col, col, link)`` + + After adding the join, the model of the current leaf is updated. + """ + self.join_context.append((self.model, model, lhs_col, table_col, link)) + self._models.append(model) + self.model = model + + def get_join_conditions(self): + conditions = [] + alias = self._models[0]._table + for context in self.join_context: + previous_alias = alias + alias += '__' + context[4] + conditions.append('"%s"."%s"="%s"."%s"' % (previous_alias, context[2], alias, context[3])) + return conditions + + def get_tables(self): + tables = set() + links = [] + for context in self.join_context: + links.append((context[1]._table, context[4])) + alias, alias_statement = generate_table_alias(self._models[0]._table, links) + tables.add(alias_statement) + return tables + + def _get_context_debug(self): + names = ['"%s"."%s"="%s"."%s" (%s)' % (item[0]._table, item[2], item[1]._table, item[3], item[4]) for item in self.join_context] + return names + + # -------------------------------------------------- + # Leaf manipulation + # -------------------------------------------------- + + def check_leaf(self): + """ Leaf validity rules: + - a valid leaf is an operator or a leaf + - a valid leaf has a field objects unless + - it is not a tuple + - it is an inherited field + - left is id, operator is 'child_of' + - left is in MAGIC_COLUMNS + """ + if not is_operator(self.leaf) and not is_leaf(self.leaf, True): + raise ValueError("Invalid leaf %s" % str(self.leaf)) + + def is_operator(self): + return is_operator(self.leaf) + + def is_true_leaf(self): + return self.leaf == TRUE_LEAF + + def is_false_leaf(self): + return self.leaf == FALSE_LEAF + + def is_leaf(self, internal=False): + return is_leaf(self.leaf, internal=internal) + + def normalize_leaf(self): + self.leaf = normalize_leaf(self.leaf) + return True + + +class expression(object): + """ Parse a domain expression + Use a real polish notation + Leafs are still in a ('foo', '=', 'bar') format + For more info: http://christophe-simonis-at-tiny.blogspot.com/2008/08/new-new-domain-notation.html """ def __init__(self, cr, uid, exp, table, context): + """ Initialize expression object and automatically parse the expression + right after initialization. + + :param exp: expression (using domain ('foo', '=', 'bar' format)) + :param table: root model + + :attr list result: list that will hold the result of the parsing + as a list of ExtendedLeaf + :attr list joins: list of join conditions, such as + (res_country_state."id" = res_partner."state_id") + :attr root_model: base model for the query + :attr list expression: the domain expression, that will be normalized + and prepared + """ self.has_unaccent = openerp.modules.registry.RegistryManager.get(cr.dbname).has_unaccent - self.__field_tables = {} # used to store the table to use for the sql generation. key = index of the leaf - self.__all_tables = set() - self.__joins = [] - self.__main_table = None # 'root' table. set by parse() - # assign self.__exp with the normalized, parsed domain. - self.parse(cr, uid, distribute_not(normalize(exp)), table, context) + self.joins = [] + self.root_model = table - # TODO used only for osv_memory - @property - def exp(self): - return self.__exp[:] + # normalize and prepare the expression for parsing + self.expression = distribute_not(normalize_domain(exp)) - def parse(self, cr, uid, exp, table, context): - """ transform the leaves of the expression """ - self.__exp = exp - self.__main_table = table - self.__all_tables.add(table) + # parse the domain expression + self.parse(cr, uid, context=context) - def child_of_domain(left, ids, left_model, parent=None, prefix=''): - """Returns a domain implementing the child_of operator for [(left,child_of,ids)], - either as a range using the parent_left/right tree lookup fields (when available), - or as an expanded [(left,in,child_ids)]""" + # ---------------------------------------- + # Leafs management + # ---------------------------------------- + + def get_tables(self): + """ Returns the list of tables for SQL queries, like select from ... """ + tables = [] + for leaf in self.result: + for table in leaf.get_tables(): + if table not in tables: + tables.append(table) + table_name = _quote(self.root_model._table) + if table_name not in tables: + tables.append(table_name) + return tables + + # ---------------------------------------- + # Parsing + # ---------------------------------------- + + def parse(self, cr, uid, context): + """ Transform the leaves of the expression + + The principle is to pop elements from a leaf stack one at a time. + Each leaf is processed. The processing is a if/elif list of various + cases that appear in the leafs (many2one, function fields, ...). + Two things can happen as a processing result: + - the leaf has been modified and/or new leafs have to be introduced + in the expression; they are pushed into the leaf stack, to be + processed right after + - the leaf is added to the result + + Some internal var explanation: + :var obj working_model: model object, model containing the field + (the name provided in the left operand) + :var list field_path: left operand seen as a path (foo.bar -> [foo, bar]) + :var obj relational_model: relational model of a field (field._obj) + ex: res_partner.bank_ids -> res.partner.bank + """ + + def to_ids(value, relational_model, context=None, limit=None): + """ Normalize a single id or name, or a list of those, into a list of ids + :param {int,long,basestring,list,tuple} value: + if int, long -> return [value] + if basestring, convert it into a list of basestrings, then + if list of basestring -> + perform a name_search on relational_model for each name + return the list of related ids + """ + names = [] + if isinstance(value, basestring): + names = [value] + elif value and isinstance(value, (tuple, list)) and all(isinstance(item, basestring) for item in value): + names = value + elif isinstance(value, (int, long)): + return [value] + if names: + name_get_list = [name_get[0] for name in names for name_get in relational_model.name_search(cr, uid, name, [], 'ilike', context=context, limit=limit)] + return list(set(name_get_list)) + return list(value) + + def child_of_domain(left, ids, left_model, parent=None, prefix='', context=None): + """ Return a domain implementing the child_of operator for [(left,child_of,ids)], + either as a range using the parent_left/right tree lookup fields + (when available), or as an expanded [(left,in,child_ids)] """ if left_model._parent_store and (not left_model.pool._init): # TODO: Improve where joins are implemented for many with '.', replace by: # doms += ['&',(prefix+'.parent_left','<',o.parent_right),(prefix+'.parent_left','>=',o.parent_left)] @@ -404,167 +709,235 @@ class expression(object): return ids + recursive_children(ids2, model, parent_field) return [(left, 'in', recursive_children(ids, left_model, parent or left_model._parent_name))] - def to_ids(value, field_obj): - """Normalize a single id or name, or a list of those, into a list of ids""" - names = [] - if isinstance(value, basestring): - names = [value] - if value and isinstance(value, (tuple, list)) and isinstance(value[0], basestring): - names = value - if names: - return flatten([[x[0] for x in field_obj.name_search(cr, uid, n, [], 'ilike', context=context, limit=None)] \ - for n in names]) - elif isinstance(value, (int, long)): - return [value] - return list(value) + def create_substitution_leaf(leaf, new_elements, new_model=None): + """ From a leaf, create a new leaf (based on the new_elements tuple + and new_model), that will have the same join context. Used to + insert equivalent leafs in the processing stack. """ + if new_model is None: + new_model = leaf.model + new_join_context = [tuple(context) for context in leaf.join_context] + new_leaf = ExtendedLeaf(new_elements, new_model, join_context=new_join_context) + return new_leaf - i = -1 - while i + 1 add directly to result + # ---------------------------------------- - field_obj = table.pool.get(field._obj) - if len(field_path) > 1: - if field._type == 'many2one': - right = field_obj.search(cr, uid, [(field_path[1], operator, right)], context=context) - self.__exp[i] = (field_path[0], 'in', right) - # Making search easier when there is a left operand as field.o2m or field.m2m - if field._type in ['many2many', 'one2many']: - right = field_obj.search(cr, uid, [(field_path[1], operator, right)], context=context) - right1 = table.search(cr, uid, [(field_path[0],'in', right)], context=dict(context, active_test=False)) - self.__exp[i] = ('id', 'in', right1) + if leaf.is_operator() or leaf.is_true_leaf() or leaf.is_false_leaf(): + push_result(leaf) - if not isinstance(field, fields.property): - continue + # ---------------------------------------- + # FIELD NOT FOUND + # -> from inherits'd fields -> work on the related model, and add + # a join condition + # -> ('id', 'child_of', '..') -> use a 'to_ids' + # -> but is one on the _log_access special fields, add directly to + # result + # TODO: make these fields explicitly available in self.columns instead! + # -> else: crash + # ---------------------------------------- - if field._properties and not field.store: + elif not field and field_path[0] in working_model._inherit_fields: + # comments about inherits'd fields + # { 'field_name': ('parent_model', 'm2o_field_to_reach_parent', + # field_column_obj, origina_parent_model), ... } + next_model = working_model.pool.get(working_model._inherit_fields[field_path[0]][0]) + leaf.add_join_context(next_model, working_model._inherits[next_model._name], 'id', working_model._inherits[next_model._name]) + push(leaf) + + elif not field and left == 'id' and operator == 'child_of': + ids2 = to_ids(right, working_model, context) + dom = child_of_domain(left, ids2, working_model) + for dom_leaf in reversed(dom): + new_leaf = create_substitution_leaf(leaf, dom_leaf, working_model) + push(new_leaf) + + elif not field and field_path[0] in MAGIC_COLUMNS: + push_result(leaf) + + elif not field: + raise ValueError("Invalid field %r in leaf %r" % (left, str(leaf))) + + # ---------------------------------------- + # PATH SPOTTED + # -> many2one or one2many with _auto_join: + # - add a join, then jump into linked field: field.remaining on + # src_table is replaced by remaining on dst_table, and set for re-evaluation + # - if a domain is defined on the field, add it into evaluation + # on the relational table + # -> many2one, many2many, one2many: replace by an equivalent computed + # domain, given by recursively searching on the remaining of the path + # -> note: hack about fields.property should not be necessary anymore + # as after transforming the field, it will go through this loop once again + # ---------------------------------------- + + elif len(field_path) > 1 and field._type == 'many2one' and field._auto_join: + # res_partner.state_id = res_partner__state_id.id + leaf.add_join_context(relational_model, field_path[0], 'id', field_path[0]) + push(create_substitution_leaf(leaf, (field_path[1], operator, right), relational_model)) + + elif len(field_path) > 1 and field._type == 'one2many' and field._auto_join: + # res_partner.id = res_partner__bank_ids.partner_id + leaf.add_join_context(relational_model, 'id', field._fields_id, field_path[0]) + domain = field._domain(working_model) if callable(field._domain) else field._domain + push(create_substitution_leaf(leaf, (field_path[1], operator, right), relational_model)) + if domain: + domain = normalize_domain(domain) + for elem in reversed(domain): + push(create_substitution_leaf(leaf, elem, relational_model)) + 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)) + + elif len(field_path) > 1 and field._type == 'many2one': + right_ids = relational_model.search(cr, uid, [(field_path[1], operator, right)], context=context) + leaf.leaf = (field_path[0], 'in', right_ids) + push(leaf) + + # Making search easier when there is a left operand as field.o2m or field.m2m + elif len(field_path) > 1 and field._type in ['many2many', 'one2many']: + right_ids = relational_model.search(cr, uid, [(field_path[1], operator, right)], context=context) + table_ids = working_model.search(cr, uid, [(field_path[0], 'in', right_ids)], context=dict(context, active_test=False)) + leaf.leaf = ('id', 'in', table_ids) + push(leaf) + + # ------------------------------------------------- + # FUNCTION FIELD + # -> not stored: error if no _fnct_search, otherwise handle the result domain + # -> stored: management done in the remaining of parsing + # ------------------------------------------------- + + elif isinstance(field, fields.function) and not field.store and not field._fnct_search: # this is a function field that is not stored - if not field._fnct_search: - # the function field doesn't provide a search function and doesn't store - # values in the database, so we must ignore it : we generate a dummy leaf - self.__exp[i] = TRUE_LEAF - _logger.error( - "The field '%s' (%s) can not be searched: non-stored " - "function field without fnct_search", - field.string, left) - # avoid compiling stack trace if not needed - if _logger.isEnabledFor(logging.DEBUG): - _logger.debug(''.join(traceback.format_stack())) + # the function field doesn't provide a search function and doesn't store + # values in the database, so we must ignore it : we generate a dummy leaf + leaf.leaf = TRUE_LEAF + _logger.error( + "The field '%s' (%s) can not be searched: non-stored " + "function field without fnct_search", + field.string, left) + # avoid compiling stack trace if not needed + if _logger.isEnabledFor(logging.DEBUG): + _logger.debug(''.join(traceback.format_stack())) + push(leaf) + + elif isinstance(field, fields.function) and not field.store: + # this is a function field that is not stored + fct_domain = field.search(cr, uid, working_model, left, [leaf.leaf], context=context) + if not fct_domain: + leaf.leaf = TRUE_LEAF + push(leaf) else: - subexp = field.search(cr, uid, table, left, [self.__exp[i]], context=context) - if not subexp: - self.__exp[i] = TRUE_LEAF - else: - # we assume that the expression is valid - # we create a dummy leaf for forcing the parsing of the resulting expression - self.__exp[i] = AND_OPERATOR - self.__exp.insert(i + 1, TRUE_LEAF) - for j, se in enumerate(subexp): - self.__exp.insert(i + 2 + j, se) - # else, the value of the field is store in the database, so we search on it + # we assume that the expression is valid + # we create a dummy leaf for forcing the parsing of the resulting expression + for domain_element in reversed(fct_domain): + push(create_substitution_leaf(leaf, domain_element, working_model)) + # self.push(create_substitution_leaf(leaf, TRUE_LEAF, working_model)) + # self.push(create_substitution_leaf(leaf, AND_OPERATOR, working_model)) + + # ------------------------------------------------- + # RELATIONAL FIELDS + # ------------------------------------------------- + + # Applying recursivity on field(one2many) + elif field._type == 'one2many' and operator == 'child_of': + ids2 = to_ids(right, relational_model, context) + if field._obj != working_model._name: + dom = child_of_domain(left, ids2, relational_model, prefix=field._obj) + else: + dom = child_of_domain('id', ids2, working_model, parent=left) + for dom_leaf in reversed(dom): + push(create_substitution_leaf(leaf, dom_leaf, working_model)) elif field._type == 'one2many': - # Applying recursivity on field(one2many) - if operator == 'child_of': - ids2 = to_ids(right, field_obj) - if field._obj != working_table._name: - dom = child_of_domain(left, ids2, field_obj, prefix=field._obj) + call_null = True + + if right is not False: + if isinstance(right, basestring): + ids2 = [x[0] for x in relational_model.name_search(cr, uid, right, [], operator, context=context, limit=None)] + if ids2: + operator = 'in' else: - dom = child_of_domain('id', ids2, working_table, parent=left) - self.__exp = self.__exp[:i] + dom + self.__exp[i+1:] - - else: - call_null = True - - if right is not False: - if isinstance(right, basestring): - ids2 = [x[0] for x in field_obj.name_search(cr, uid, right, [], operator, context=context, limit=None)] - if ids2: - operator = 'in' + if not isinstance(right, list): + ids2 = [right] else: - if not isinstance(right, list): - ids2 = [right] - else: - ids2 = right - if not ids2: - if operator in ['like','ilike','in','=']: - #no result found with given search criteria - call_null = False - self.__exp[i] = FALSE_LEAF - else: - ids2 = select_from_where(cr, field._fields_id, field_obj._table, 'id', ids2, operator) - if ids2: - call_null = False - o2m_op = 'not in' if operator in NEGATIVE_TERM_OPERATORS else 'in' - self.__exp[i] = ('id', o2m_op, ids2) + ids2 = right + if not ids2: + if operator in ['like', 'ilike', 'in', '=']: + #no result found with given search criteria + call_null = False + push(create_substitution_leaf(leaf, FALSE_LEAF, working_model)) + else: + ids2 = select_from_where(cr, field._fields_id, relational_model._table, 'id', ids2, operator) + if ids2: + call_null = False + o2m_op = 'not in' if operator in NEGATIVE_TERM_OPERATORS else 'in' + push(create_substitution_leaf(leaf, ('id', o2m_op, ids2), working_model)) - if call_null: - o2m_op = 'in' if operator in NEGATIVE_TERM_OPERATORS else 'not in' - self.__exp[i] = ('id', o2m_op, select_distinct_from_where_not_null(cr, field._fields_id, field_obj._table)) + if call_null: + o2m_op = 'in' if operator in NEGATIVE_TERM_OPERATORS else 'not in' + push(create_substitution_leaf(leaf, ('id', o2m_op, select_distinct_from_where_not_null(cr, field._fields_id, relational_model._table)), working_model)) elif field._type == 'many2many': - rel_table, rel_id1, rel_id2 = field._sql_names(working_table) + rel_table, rel_id1, rel_id2 = field._sql_names(working_model) #FIXME if operator == 'child_of': def _rec_convert(ids): - if field_obj == table: + if relational_model == working_model: return ids return select_from_where(cr, rel_id1, rel_table, rel_id2, ids, operator) - ids2 = to_ids(right, field_obj) - dom = child_of_domain('id', ids2, field_obj) - ids2 = field_obj.search(cr, uid, dom, context=context) - self.__exp[i] = ('id', 'in', _rec_convert(ids2)) + ids2 = to_ids(right, relational_model, context) + dom = child_of_domain('id', ids2, relational_model) + ids2 = relational_model.search(cr, uid, dom, context=context) + push(create_substitution_leaf(leaf, ('id', 'in', _rec_convert(ids2)), working_model)) else: call_null_m2m = True if right is not False: if isinstance(right, basestring): - res_ids = [x[0] for x in field_obj.name_search(cr, uid, right, [], operator, context=context)] + res_ids = [x[0] for x in relational_model.name_search(cr, uid, right, [], operator, context=context)] if res_ids: operator = 'in' else: @@ -573,74 +946,76 @@ class expression(object): else: res_ids = right if not res_ids: - if operator in ['like','ilike','in','=']: + if operator in ['like', 'ilike', 'in', '=']: #no result found with given search criteria call_null_m2m = False - self.__exp[i] = FALSE_LEAF + push(create_substitution_leaf(leaf, FALSE_LEAF, working_model)) else: - operator = 'in' # operator changed because ids are directly related to main object + operator = 'in' # operator changed because ids are directly related to main object else: call_null_m2m = False m2m_op = 'not in' if operator in NEGATIVE_TERM_OPERATORS else 'in' - self.__exp[i] = ('id', m2m_op, select_from_where(cr, rel_id1, rel_table, rel_id2, res_ids, operator) or [0]) + push(create_substitution_leaf(leaf, ('id', m2m_op, select_from_where(cr, rel_id1, rel_table, rel_id2, res_ids, operator) or [0]), working_model)) if call_null_m2m: m2m_op = 'in' if operator in NEGATIVE_TERM_OPERATORS else 'not in' - self.__exp[i] = ('id', m2m_op, select_distinct_from_where_not_null(cr, rel_id1, rel_table)) + push(create_substitution_leaf(leaf, ('id', m2m_op, select_distinct_from_where_not_null(cr, rel_id1, rel_table)), working_model)) elif field._type == 'many2one': if operator == 'child_of': - ids2 = to_ids(right, field_obj) - if field._obj != working_table._name: - dom = child_of_domain(left, ids2, field_obj, prefix=field._obj) + ids2 = to_ids(right, relational_model, context) + if field._obj != working_model._name: + dom = child_of_domain(left, ids2, relational_model, prefix=field._obj) else: - dom = child_of_domain('id', ids2, working_table, parent=left) - self.__exp = self.__exp[:i] + dom + self.__exp[i+1:] + dom = child_of_domain('id', ids2, working_model, parent=left) + for dom_leaf in reversed(dom): + push(create_substitution_leaf(leaf, dom_leaf, working_model)) else: - def _get_expression(field_obj, cr, uid, left, right, operator, context=None): + def _get_expression(relational_model, cr, uid, left, right, operator, context=None): if context is None: context = {} c = context.copy() c['active_test'] = False #Special treatment to ill-formed domains - operator = ( operator in ['<','>','<=','>='] ) and 'in' or operator + operator = (operator in ['<', '>', '<=', '>=']) and 'in' or operator - dict_op = {'not in':'!=','in':'=','=':'in','!=':'not in'} + dict_op = {'not in': '!=', 'in': '=', '=': 'in', '!=': 'not in'} if isinstance(right, tuple): right = list(right) - if (not isinstance(right, list)) and operator in ['not in','in']: + if (not isinstance(right, list)) and operator in ['not in', 'in']: operator = dict_op[operator] - elif isinstance(right, list) and operator in ['!=','=']: #for domain (FIELD,'=',['value1','value2']) + elif isinstance(right, list) and operator in ['!=', '=']: # for domain (FIELD,'=',['value1','value2']) operator = dict_op[operator] - res_ids = [x[0] for x in field_obj.name_search(cr, uid, right, [], operator, limit=None, context=c)] + 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' + res_ids.append(False) # TODO this should not be appended if False was in 'right' 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): - self.__exp[i] = _get_expression(field_obj, cr, uid, left, right, operator, context=context) - else: + right and isinstance(right, (tuple, list)) and all(isinstance(item, basestring) for item in right): + push(create_substitution_leaf(leaf, _get_expression(relational_model, cr, uid, left, right, operator, context=context), working_model)) + else: # right == [] or right == False and all other cases are handled by __leaf_to_sql() - pass + push_result(leaf) + + # ------------------------------------------------- + # OTHER FIELDS + # -> datetime fields: manage time part of the datetime + # field when it is not there + # -> manage translatable fields + # ------------------------------------------------- else: - # other field type - # add the time part to datetime field when it's not there: - if field._type == 'datetime' and self.__exp[i][2] and len(self.__exp[i][2]) == 10: - - self.__exp[i] = list(self.__exp[i]) - + if field._type == 'datetime' and right and len(right) == 10: if operator in ('>', '>='): - self.__exp[i][2] += ' 00:00:00' + right += ' 00:00:00' elif operator in ('<', '<='): - self.__exp[i][2] += ' 23:59:59' + right += ' 23:59:59' + push(create_substitution_leaf(leaf, (left, operator, right), working_model)) - self.__exp[i] = tuple(self.__exp[i]) - - if field.translate: + elif field.translate: need_wildcard = operator in ('like', 'ilike', 'not like', 'not ilike') - sql_operator = {'=like':'like','=ilike':'ilike'}.get(operator,operator) + sql_operator = {'=like': 'like', '=ilike': 'ilike'}.get(operator, operator) if need_wildcard: right = '%%%s%%' % right @@ -651,38 +1026,54 @@ class expression(object): ' AND type = %s' instr = ' %s' #Covering in,not in operators with operands (%s,%s) ,etc. - if sql_operator in ['in','not in']: + if sql_operator in ['in', 'not in']: instr = ','.join(['%s'] * len(right)) - subselect += ' AND value ' + sql_operator + ' ' +" (" + instr + ")" \ + subselect += ' AND value ' + sql_operator + ' ' + " (" + instr + ")" \ ') UNION (' \ ' SELECT id' \ - ' FROM "' + working_table._table + '"' \ - ' WHERE "' + left + '" ' + sql_operator + ' ' +" (" + instr + "))" + ' FROM "' + working_model._table + '"' \ + ' WHERE "' + left + '" ' + sql_operator + ' ' + " (" + instr + "))" else: subselect += ' AND value ' + sql_operator + instr + \ ') UNION (' \ ' SELECT id' \ - ' FROM "' + working_table._table + '"' \ + ' FROM "' + working_model._table + '"' \ ' WHERE "' + left + '" ' + sql_operator + instr + ")" - params = [working_table._name + ',' + left, + params = [working_model._name + ',' + left, context.get('lang', False) or 'en_US', 'model', right, right, ] + push(create_substitution_leaf(leaf, ('id', 'inselect', (subselect, params)), working_model)) - self.__exp[i] = ('id', 'inselect', (subselect, params)) + else: + push_result(leaf) - def __leaf_to_sql(self, leaf, table): + # ---------------------------------------- + # END OF PARSING FULL DOMAIN + # -> generate joins + # ---------------------------------------- + + joins = set() + for leaf in self.result: + joins |= set(leaf.get_join_conditions()) + self.joins = list(joins) + + def __leaf_to_sql(self, eleaf): + model = eleaf.model + leaf = eleaf.leaf left, operator, right = leaf # final sanity checks - should never fail assert operator in (TERM_OPERATORS + ('inselect',)), \ "Invalid operator %r in domain term %r" % (operator, leaf) - assert leaf in (TRUE_LEAF, FALSE_LEAF) or left in table._all_columns \ + assert leaf in (TRUE_LEAF, FALSE_LEAF) or left in model._all_columns \ or left in MAGIC_COLUMNS, "Invalid field %r in domain term %r" % (left, leaf) + table_alias = '"%s"' % (eleaf.generate_alias()) + if leaf == TRUE_LEAF: query = 'TRUE' params = [] @@ -692,7 +1083,7 @@ class expression(object): params = [] elif operator == 'inselect': - query = '(%s."%s" in (%s))' % (table._table, left, right[0]) + query = '(%s."%s" in (%s))' % (table_alias, left, right[0]) params = right[1] elif operator in ['in', 'not in']: @@ -704,7 +1095,7 @@ class expression(object): r = 'NOT NULL' if right else 'NULL' else: r = 'NULL' if right else 'NOT NULL' - query = '(%s."%s" IS %s)' % (table._table, left, r) + query = '(%s."%s" IS %s)' % (table_alias, left, r) params = [] elif isinstance(right, (list, tuple)): params = right[:] @@ -718,35 +1109,35 @@ class expression(object): if left == 'id': instr = ','.join(['%s'] * len(params)) else: - instr = ','.join([table._columns[left]._symbol_set[0]] * len(params)) - query = '(%s."%s" %s (%s))' % (table._table, left, operator, instr) + instr = ','.join([model._columns[left]._symbol_set[0]] * len(params)) + query = '(%s."%s" %s (%s))' % (table_alias, left, operator, instr) else: # The case for (left, 'in', []) or (left, 'not in', []). query = 'FALSE' if operator == 'in' else 'TRUE' if check_nulls and operator == 'in': - query = '(%s OR %s."%s" IS NULL)' % (query, table._table, left) + query = '(%s OR %s."%s" IS NULL)' % (query, table_alias, left) elif not check_nulls and operator == 'not in': - query = '(%s OR %s."%s" IS NULL)' % (query, table._table, left) + query = '(%s OR %s."%s" IS NULL)' % (query, table_alias, left) elif check_nulls and operator == 'not in': - query = '(%s AND %s."%s" IS NOT NULL)' % (query, table._table, left) # needed only for TRUE. - else: # Must not happen + query = '(%s AND %s."%s" IS NOT NULL)' % (query, table_alias, left) # needed only for TRUE. + else: # Must not happen raise ValueError("Invalid domain term %r" % (leaf,)) - elif right == False and (left in table._columns) and table._columns[left]._type=="boolean" and (operator == '='): - query = '(%s."%s" IS NULL or %s."%s" = false )' % (table._table, left, table._table, left) + elif right == False and (left in model._columns) and model._columns[left]._type == "boolean" and (operator == '='): + query = '(%s."%s" IS NULL or %s."%s" = false )' % (table_alias, left, table_alias, left) params = [] elif (right is False or right is None) and (operator == '='): - query = '%s."%s" IS NULL ' % (table._table, left) + query = '%s."%s" IS NULL ' % (table_alias, left) params = [] - elif right == False and (left in table._columns) and table._columns[left]._type=="boolean" and (operator == '!='): - query = '(%s."%s" IS NOT NULL and %s."%s" != false)' % (table._table, left, table._table, left) + elif right == False and (left in model._columns) and model._columns[left]._type == "boolean" and (operator == '!='): + query = '(%s."%s" IS NOT NULL and %s."%s" != false)' % (table_alias, left, table_alias, left) params = [] elif (right is False or right is None) and (operator == '!='): - query = '%s."%s" IS NOT NULL' % (table._table, left) + query = '%s."%s" IS NOT NULL' % (table_alias, left) params = [] elif (operator == '=?'): @@ -756,26 +1147,26 @@ class expression(object): params = [] else: # '=?' behaves like '=' in other cases - query, params = self.__leaf_to_sql((left, '=', right), table) + query, params = self.__leaf_to_sql((left, '=', right), model) elif left == 'id': - query = '%s.id %s %%s' % (table._table, operator) + query = '%s.id %s %%s' % (table_alias, operator) params = right else: need_wildcard = operator in ('like', 'ilike', 'not like', 'not ilike') - sql_operator = {'=like':'like','=ilike':'ilike'}.get(operator,operator) + sql_operator = {'=like': 'like', '=ilike': 'ilike'}.get(operator, operator) - if left in table._columns: - format = need_wildcard and '%s' or table._columns[left]._symbol_set[0] + if left in model._columns: + format = need_wildcard and '%s' or model._columns[left]._symbol_set[0] if self.has_unaccent and sql_operator in ('ilike', 'not ilike'): - query = '(unaccent(%s."%s") %s unaccent(%s))' % (table._table, left, sql_operator, format) + query = '(unaccent(%s."%s") %s unaccent(%s))' % (table_alias, left, sql_operator, format) else: - query = '(%s."%s" %s %s)' % (table._table, left, sql_operator, format) + query = '(%s."%s" %s %s)' % (table_alias, left, sql_operator, format) elif left in MAGIC_COLUMNS: - query = "(%s.\"%s\" %s %%s)" % (table._table, left, sql_operator) + query = "(%s.\"%s\" %s %%s)" % (table_alias, left, sql_operator) params = right - else: # Must not happen + else: # Must not happen raise ValueError("Invalid field %r in domain term %r" % (left, leaf)) add_null = False @@ -788,44 +1179,40 @@ class expression(object): str_utf8 = str(right) params = '%%%s%%' % str_utf8 add_null = not str_utf8 - elif left in table._columns: - params = table._columns[left]._symbol_set[1](right) + elif left in model._columns: + params = model._columns[left]._symbol_set[1](right) if add_null: - query = '(%s OR %s."%s" IS NULL)' % (query, table._table, left) + query = '(%s OR %s."%s" IS NULL)' % (query, table_alias, left) if isinstance(params, basestring): params = [params] return (query, params) - def to_sql(self): stack = [] params = [] # Process the domain from right to left, using a stack, to generate a SQL expression. - for i, e in reverse_enumerate(self.__exp): - if is_leaf(e, internal=True): - table = self.__field_tables.get(i, self.__main_table) - q, p = self.__leaf_to_sql(e, table) + self.result.reverse() + for leaf in self.result: + if leaf.is_leaf(internal=True): + q, p = self.__leaf_to_sql(leaf) params.insert(0, p) stack.append(q) - elif e == NOT_OPERATOR: + elif leaf.leaf == NOT_OPERATOR: stack.append('(NOT (%s))' % (stack.pop(),)) else: ops = {AND_OPERATOR: ' AND ', OR_OPERATOR: ' OR '} q1 = stack.pop() q2 = stack.pop() - stack.append('(%s %s %s)' % (q1, ops[e], q2,)) + stack.append('(%s %s %s)' % (q1, ops[leaf.leaf], q2,)) assert len(stack) == 1 query = stack[0] - joins = ' AND '.join(self.__joins) + joins = ' AND '.join(self.joins) if joins: query = '(%s) AND %s' % (joins, query) - return (query, flatten(params)) - def get_tables(self): - return ['"%s"' % t._table for t in self.__all_tables] + return (query, tools.flatten(params)) # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: - diff --git a/openerp/osv/fields.py b/openerp/osv/fields.py index ea84cae978e..3d2c83b2621 100644 --- a/openerp/osv/fields.py +++ b/openerp/osv/fields.py @@ -27,6 +27,9 @@ Fields Attributes: * _classic_read: is a classic sql fields * _type : field type + * _auto_join: for one2many and many2one fields, tells whether select + queries will join the relational table instead of replacing the + field condition by an equivalent-one based on a search. * readonly * required * size @@ -67,6 +70,7 @@ class _column(object): """ _classic_read = True _classic_write = True + _auto_join = False _prefetch = True _properties = False _type = 'unknown' @@ -427,9 +431,10 @@ class many2one(_column): _symbol_f = lambda x: x or None _symbol_set = (_symbol_c, _symbol_f) - def __init__(self, obj, string='unknown', **args): + def __init__(self, obj, string='unknown', auto_join=False, **args): _column.__init__(self, string=string, **args) self._obj = obj + self._auto_join = auto_join def get(self, cr, obj, ids, name, user=None, context=None, values=None): if context is None: @@ -496,11 +501,12 @@ class one2many(_column): _prefetch = False _type = 'one2many' - def __init__(self, obj, fields_id, string='unknown', limit=None, **args): + def __init__(self, obj, fields_id, string='unknown', limit=None, auto_join=False, **args): _column.__init__(self, string=string, **args) self._obj = obj self._fields_id = fields_id self._limit = limit + self._auto_join = auto_join #one2many can't be used as condition for defaults assert(self.change_default != True) diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index e203ae79e0d..060d6da0277 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -58,7 +58,6 @@ import types import psycopg2 from lxml import etree -import warnings import fields import openerp @@ -2721,22 +2720,17 @@ class BaseModel(object): return result - def _inherits_join_add(self, current_table, parent_model_name, query): + def _inherits_join_add(self, current_model, parent_model_name, query): """ Add missing table SELECT and JOIN clause to ``query`` for reaching the parent table (no duplicates) - :param current_table: current model object + :param current_model: current model object :param parent_model_name: name of the parent model for which the clauses should be added :param query: query object on which the JOIN should be added """ - inherits_field = current_table._inherits[parent_model_name] + inherits_field = current_model._inherits[parent_model_name] parent_model = self.pool.get(parent_model_name) - parent_table_name = parent_model._table - quoted_parent_table_name = '"%s"' % parent_table_name - if quoted_parent_table_name not in query.tables: - query.tables.append(quoted_parent_table_name) - query.where_clause.append('(%s.%s = %s.id)' % (current_table._table, inherits_field, parent_table_name)) - - + parent_alias, parent_alias_statement = query.add_join((current_model._table, parent_model._table, inherits_field, 'id', inherits_field), implicit=True) + return parent_alias def _inherits_join_calc(self, field, query): """ @@ -2748,12 +2742,13 @@ class BaseModel(object): :return: qualified name of field, to be used in SELECT clause """ current_table = self + parent_alias = '"%s"' % current_table._table while field in current_table._inherit_fields and not field in current_table._columns: parent_model_name = current_table._inherit_fields[field][0] parent_table = self.pool.get(parent_model_name) - self._inherits_join_add(current_table, parent_model_name, query) + parent_alias = self._inherits_join_add(current_table, parent_model_name, query) current_table = parent_table - return '"%s".%s' % (current_table._table, field) + return '%s."%s"' % (parent_alias, field) def _parent_store_compute(self, cr): if not self._parent_store: @@ -4662,11 +4657,27 @@ class BaseModel(object): :param query: the current query object """ def apply_rule(added_clause, added_params, added_tables, parent_model=None, child_object=None): + """ :param string parent_model: string of the parent model + :param model child_object: model object, base of the rule application + """ if added_clause: if parent_model and child_object: # as inherited rules are being applied, we need to add the missing JOIN # to reach the parent table (if it was not JOINed yet in the query) - child_object._inherits_join_add(child_object, parent_model, query) + parent_alias = child_object._inherits_join_add(child_object, parent_model, query) + # inherited rules are applied on the external table -> need to get the alias and replace + parent_table = self.pool.get(parent_model)._table + added_clause = [clause.replace('"%s"' % parent_table, '"%s"' % parent_alias) for clause in added_clause] + # change references to parent_table to parent_alias, because we now use the alias to refer to the table + new_tables = [] + for table in added_tables: + # table is just a table name -> switch to the full alias + 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: + new_tables.append(table.replace('"%s"' % parent_table, '"%s"' % parent_alias)) + added_tables = new_tables query.where_clause += added_clause query.where_clause_params += added_params for table in added_tables: @@ -4677,12 +4688,14 @@ class BaseModel(object): # apply main rules on the object rule_obj = self.pool.get('ir.rule') - apply_rule(*rule_obj.domain_get(cr, uid, self._name, mode, context=context)) + rule_where_clause, rule_where_clause_params, rule_tables = rule_obj.domain_get(cr, uid, self._name, mode, context=context) + apply_rule(rule_where_clause, rule_where_clause_params, rule_tables) # apply ir.rules from the parents (through _inherits) for inherited_model in self._inherits: - kwargs = dict(parent_model=inherited_model, child_object=self) #workaround for python2.5 - apply_rule(*rule_obj.domain_get(cr, uid, inherited_model, mode, context=context), **kwargs) + rule_where_clause, rule_where_clause_params, rule_tables = rule_obj.domain_get(cr, uid, inherited_model, mode, context=context) + apply_rule(rule_where_clause, rule_where_clause_params, rule_tables, + parent_model=inherited_model, child_object=self) def _generate_m2o_order_by(self, order_field, query): """ @@ -4717,17 +4730,16 @@ class BaseModel(object): # extract the field names, to be able to qualify them and add desc/asc m2o_order_list = [] for order_part in m2o_order.split(","): - m2o_order_list.append(order_part.strip().split(" ",1)[0].strip()) + m2o_order_list.append(order_part.strip().split(" ", 1)[0].strip()) m2o_order = m2o_order_list # Join the dest m2o table if it's not joined yet. We use [LEFT] OUTER join here # as we don't want to exclude results that have NULL values for the m2o - src_table, src_field = qualified_field.replace('"','').split('.', 1) - query.join((src_table, dest_model._table, src_field, 'id'), outer=True) - qualify = lambda field: '"%s"."%s"' % (dest_model._table, field) + src_table, src_field = qualified_field.replace('"', '').split('.', 1) + dst_alias, dst_alias_statement = query.add_join((src_table, dest_model._table, src_field, 'id', src_field), implicit=False, outer=True) + qualify = lambda field: '"%s"."%s"' % (dst_alias, field) return map(qualify, m2o_order) if isinstance(m2o_order, list) else qualify(m2o_order) - def _generate_order_by(self, order_spec, query): """ Attempt to consruct an appropriate ORDER BY clause based on order_spec, which must be @@ -4735,7 +4747,8 @@ class BaseModel(object): :raise" except_orm in case order_spec is malformed """ - order_by_clause = self._order + order_by_clause = '' + order_spec = order_spec or self._order if order_spec: order_by_elements = [] self._check_qorder(order_spec) @@ -4753,7 +4766,7 @@ class BaseModel(object): elif order_column._type == 'many2one': inner_clause = self._generate_m2o_order_by(order_field, query) else: - continue # ignore non-readable or "non-joinable" fields + continue # ignore non-readable or "non-joinable" fields elif order_field in self._inherit_fields: parent_obj = self.pool.get(self._inherit_fields[order_field][3]) order_column = parent_obj._columns[order_field] @@ -4762,7 +4775,7 @@ class BaseModel(object): elif order_column._type == 'many2one': inner_clause = self._generate_m2o_order_by(order_field, query) else: - continue # ignore non-readable or "non-joinable" fields + continue # ignore non-readable or "non-joinable" fields if inner_clause: if isinstance(inner_clause, list): for clause in inner_clause: diff --git a/openerp/osv/query.py b/openerp/osv/query.py index 252b301d531..5cad7cf96f7 100644 --- a/openerp/osv/query.py +++ b/openerp/osv/query.py @@ -21,6 +21,7 @@ #.apidoc title: Query object + def _quote(to_quote): if '"' not in to_quote: return '"%s"' % to_quote @@ -67,15 +68,35 @@ class Query(object): # LEFT JOIN "table_c" ON ("table_a"."table_a_col2" = "table_c"."table_c_col") self.joins = joins or {} - def join(self, connection, outer=False): - """Adds the JOIN specified in ``connection``. + def _get_table_aliases(self): + from openerp.osv.expression import get_alias_from_query + return [get_alias_from_query(from_statement)[1] for from_statement in self.tables] - :param connection: a tuple ``(lhs, table, lhs_col, col)``. - The join corresponds to the SQL equivalent of:: + def _get_alias_mapping(self): + from openerp.osv.expression import get_alias_from_query + mapping = {} + for table in self.tables: + alias, statement = get_alias_from_query(table) + mapping[statement] = table + return mapping - (lhs.lhs_col = table.col) + def add_join(self, connection, implicit=True, outer=False): + """ Join a destination table to the current table. - :param outer: True if a LEFT OUTER JOIN should be used, if possible + :param implicit: False if the join is an explicit join. This allows + to fall back on the previous implementation of ``join`` before + OpenERP 7.0. It therefore adds the JOIN specified in ``connection`` + If True, the join is done implicitely, by adding the table alias + in the from clause and the join condition in the where clause + of the query. Implicit joins do not handle outer parameter. + :param connection: a tuple ``(lhs, table, lhs_col, col, link)``. + The join corresponds to the SQL equivalent of:: + + (lhs.lhs_col = table.col) + + Note that all connection elements are strings. Please refer to expression.py for more details about joins. + + :param outer: True if a LEFT OUTER JOIN should be used, if possible (no promotion to OUTER JOIN is supported in case the JOIN was already present in the query, as for the moment implicit INNER JOINs are only connected from NON-NULL @@ -83,38 +104,53 @@ class Query(object): ``_inherits`` or when a domain criterion explicitly adds filtering) """ - (lhs, table, lhs_col, col) = connection - lhs = _quote(lhs) - table = _quote(table) - assert lhs in self.tables, "Left-hand-side table must already be part of the query!" - if table in self.tables: - # already joined, must ignore (promotion to outer and multiple joins not supported yet) - pass + from openerp.osv.expression import generate_table_alias + (lhs, table, lhs_col, col, link) = connection + alias, alias_statement = generate_table_alias(lhs, [(table, link)]) + + if implicit: + if alias_statement not in self.tables: + self.tables.append(alias_statement) + condition = '("%s"."%s" = "%s"."%s")' % (lhs, lhs_col, alias, col) + self.where_clause.append(condition) + else: + # already joined + pass + return alias, alias_statement else: - # add JOIN - self.tables.append(table) - self.joins.setdefault(lhs, []).append((table, lhs_col, col, outer and 'LEFT JOIN' or 'JOIN')) - return self + aliases = self._get_table_aliases() + assert lhs in aliases, "Left-hand-side table %s must already be part of the query tables %s!" % (lhs, str(self.tables)) + if alias_statement in self.tables: + # already joined, must ignore (promotion to outer and multiple joins not supported yet) + pass + else: + # add JOIN + self.tables.append(alias_statement) + self.joins.setdefault(lhs, []).append((alias, lhs_col, col, outer and 'LEFT JOIN' or 'JOIN')) + return alias, alias_statement def get_sql(self): - """Returns (query_from, query_where, query_params)""" + """ Returns (query_from, query_where, query_params). """ + from openerp.osv.expression import get_alias_from_query query_from = '' tables_to_process = list(self.tables) + alias_mapping = self._get_alias_mapping() def add_joins_for_table(table, query_from): - for (dest_table, lhs_col, col, join) in self.joins.get(table,[]): - tables_to_process.remove(dest_table) - query_from += ' %s %s ON (%s."%s" = %s."%s")' % \ - (join, dest_table, table, lhs_col, dest_table, col) + for (dest_table, lhs_col, col, join) in self.joins.get(table, []): + tables_to_process.remove(alias_mapping[dest_table]) + query_from += ' %s %s ON ("%s"."%s" = "%s"."%s")' % \ + (join, alias_mapping[dest_table], table, lhs_col, dest_table, col) query_from = add_joins_for_table(dest_table, query_from) return query_from for table in tables_to_process: query_from += table - if table in self.joins: - query_from = add_joins_for_table(table, query_from) + table_alias = get_alias_from_query(table)[1] + if table_alias in self.joins: + query_from = add_joins_for_table(table_alias, query_from) query_from += ',' - query_from = query_from[:-1] # drop last comma + query_from = query_from[:-1] # drop last comma return (query_from, " AND ".join(self.where_clause), self.where_clause_params) def __str__(self): diff --git a/openerp/service/netrpc_server.py b/openerp/service/netrpc_server.py index a3e4ade7210..af89a734f28 100644 --- a/openerp/service/netrpc_server.py +++ b/openerp/service/netrpc_server.py @@ -22,8 +22,6 @@ #.apidoc title: NET-RPC Server """ This file contains instance of the net-rpc server - - """ import logging import select @@ -38,24 +36,6 @@ import openerp.tools as tools _logger = logging.getLogger(__name__) -def close_socket(sock): - """ Closes a socket instance cleanly - - :param sock: the network socket to close - :type sock: socket.socket - """ - try: - sock.shutdown(socket.SHUT_RDWR) - except socket.error, e: - # On OSX, socket shutdowns both sides if any side closes it - # causing an error 57 'Socket is not connected' on shutdown - # of the other side (or something), see - # http://bugs.python.org/issue4397 - # note: stdlib fixed test, not behavior - if e.errno != errno.ENOTCONN or platform.system() not in ['Darwin', 'Windows']: - raise - sock.close() - class Server: """ Generic interface for all servers with an event loop etc. Override this to impement http, net-rpc etc. servers. @@ -133,7 +113,7 @@ class Server: return '\n'.join(res) def _close_socket(self): - close_socket(self.socket) + netsvc.close_socket(self.socket) class TinySocketClientThread(threading.Thread): def __init__(self, sock, threads): diff --git a/openerp/service/workers.py b/openerp/service/workers.py index c40904026f5..0a54a80b963 100644 --- a/openerp/service/workers.py +++ b/openerp/service/workers.py @@ -302,10 +302,10 @@ class Worker(object): self.multi.pipe_ping(self.watchdog_pipe) self.sleep() self.process_work() - _logger.info("Worker (%s) exiting...",self.pid) + _logger.info("Worker (%s) exiting. request_count: %s.", self.pid, self.request_count) self.stop() except Exception,e: - _logger.exception("Worker (%s) Exception occured, exiting..."%self.pid) + _logger.exception("Worker (%s) Exception occured, exiting..." % self.pid) # should we use 3 to abort everything ? sys.exit(1) diff --git a/openerp/test/__init__.py b/openerp/test/__init__.py deleted file mode 100644 index 7a6c167d85b..00000000000 --- a/openerp/test/__init__.py +++ /dev/null @@ -1,25 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Management Solution -# Copyright (C) 2010 OpenERP S.A. http://www.openerp.com -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see . -# -############################################################################## - -from test_osv import * -from test_translate import * - -# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/tests/__init__.py b/openerp/tests/__init__.py index d036ccfc751..92a40ab306c 100644 --- a/openerp/tests/__init__.py +++ b/openerp/tests/__init__.py @@ -8,9 +8,10 @@ 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. """ -from . import test_expression, test_mail, test_ir_sequence, test_orm,\ +from . import test_expression, test_mail, test_ir_sequence, test_orm, \ test_fields, test_basecase, \ - test_view_validation, test_uninstall, test_misc, test_db_cursor + test_view_validation, test_uninstall, test_misc, test_db_cursor, \ + test_osv, test_translate from . import test_ir_filters fast_suite = [ @@ -27,6 +28,8 @@ checks = [ test_basecase, test_view_validation, test_misc, + test_osv, + test_translate, ] # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/tests/test_expression.py b/openerp/tests/test_expression.py index dd78e3fa88c..1c5678becf1 100644 --- a/openerp/tests/test_expression.py +++ b/openerp/tests/test_expression.py @@ -2,11 +2,12 @@ import unittest2 import openerp + class test_domain_normalization(unittest2.TestCase): def test_normalize_domain(self): expression = openerp.osv.expression - norm_domain = domain = ['&',(1,'=',1),('a','=','b')] - assert norm_domain == expression.normalize(domain), "Normalized domains should be left untouched" - domain = [('x','in',['y','z']),('a.v','=','e'),'|','|',('a','=','b'),'!',('c','>','d'),('e','!=','f'),('g','=','h')] - norm_domain = ['&','&','&'] + domain - assert norm_domain == expression.normalize(domain), "Non-normalized domains should be properly normalized" + norm_domain = domain = ['&', (1, '=', 1), ('a', '=', 'b')] + assert norm_domain == expression.normalize_domain(domain), "Normalized domains should be left untouched" + domain = [('x', 'in', ['y', 'z']), ('a.v', '=', 'e'), '|', '|', ('a', '=', 'b'), '!', ('c', '>', 'd'), ('e', '!=', 'f'), ('g', '=', 'h')] + norm_domain = ['&', '&', '&'] + domain + assert norm_domain == expression.normalize_domain(domain), "Non-normalized domains should be properly normalized" diff --git a/openerp/test/test_osv.py b/openerp/tests/test_osv.py similarity index 54% rename from openerp/test/test_osv.py rename to openerp/tests/test_osv.py index d3ff75c03d5..e36495fc7c6 100644 --- a/openerp/test/test_osv.py +++ b/openerp/tests/test_osv.py @@ -22,45 +22,45 @@ import unittest from openerp.osv.query import Query + class QueryTestCase(unittest.TestCase): def test_basic_query(self): query = Query() - query.tables.extend(['"product_product"','"product_template"']) + query.tables.extend(['"product_product"', '"product_template"']) query.where_clause.append("product_product.template_id = product_template.id") - query.join(("product_template", "product_category", "categ_id", "id"), outer=False) # add normal join - query.join(("product_product", "res_user", "user_id", "id"), outer=True) # outer join + query.add_join(("product_template", "product_category", "categ_id", "id", "categ_id"), implicit=False, outer=False) # add normal join + query.add_join(("product_product", "res_user", "user_id", "id", "user_id"), implicit=False, outer=True) # outer join self.assertEquals(query.get_sql()[0].strip(), - """"product_product" LEFT JOIN "res_user" ON ("product_product"."user_id" = "res_user"."id"),"product_template" JOIN "product_category" ON ("product_template"."categ_id" = "product_category"."id") """.strip()) + """"product_product" LEFT JOIN "res_user" as "product_product__user_id" ON ("product_product"."user_id" = "product_product__user_id"."id"),"product_template" JOIN "product_category" as "product_template__categ_id" ON ("product_template"."categ_id" = "product_template__categ_id"."id") """.strip()) self.assertEquals(query.get_sql()[1].strip(), """product_product.template_id = product_template.id""".strip()) def test_query_chained_explicit_joins(self): query = Query() - query.tables.extend(['"product_product"','"product_template"']) + query.tables.extend(['"product_product"', '"product_template"']) query.where_clause.append("product_product.template_id = product_template.id") - query.join(("product_template", "product_category", "categ_id", "id"), outer=False) # add normal join - query.join(("product_category", "res_user", "user_id", "id"), outer=True) # CHAINED outer join + query.add_join(("product_template", "product_category", "categ_id", "id", "categ_id"), implicit=False, outer=False) # add normal join + query.add_join(("product_template__categ_id", "res_user", "user_id", "id", "user_id"), implicit=False, outer=True) # CHAINED outer join self.assertEquals(query.get_sql()[0].strip(), - """"product_product","product_template" JOIN "product_category" ON ("product_template"."categ_id" = "product_category"."id") LEFT JOIN "res_user" ON ("product_category"."user_id" = "res_user"."id")""".strip()) + """"product_product","product_template" JOIN "product_category" as "product_template__categ_id" ON ("product_template"."categ_id" = "product_template__categ_id"."id") LEFT JOIN "res_user" as "product_template__categ_id__user_id" ON ("product_template__categ_id"."user_id" = "product_template__categ_id__user_id"."id")""".strip()) self.assertEquals(query.get_sql()[1].strip(), """product_product.template_id = product_template.id""".strip()) def test_mixed_query_chained_explicit_implicit_joins(self): query = Query() - query.tables.extend(['"product_product"','"product_template"']) + query.tables.extend(['"product_product"', '"product_template"']) query.where_clause.append("product_product.template_id = product_template.id") - query.join(("product_template", "product_category", "categ_id", "id"), outer=False) # add normal join - query.join(("product_category", "res_user", "user_id", "id"), outer=True) # CHAINED outer join + query.add_join(("product_template", "product_category", "categ_id", "id", "categ_id"), implicit=False, outer=False) # add normal join + query.add_join(("product_template__categ_id", "res_user", "user_id", "id", "user_id"), implicit=False, outer=True) # CHAINED outer join query.tables.append('"account.account"') - query.where_clause.append("product_category.expense_account_id = account_account.id") # additional implicit join + query.where_clause.append("product_category.expense_account_id = account_account.id") # additional implicit join self.assertEquals(query.get_sql()[0].strip(), - """"product_product","product_template" JOIN "product_category" ON ("product_template"."categ_id" = "product_category"."id") LEFT JOIN "res_user" ON ("product_category"."user_id" = "res_user"."id"),"account.account" """.strip()) + """"product_product","product_template" JOIN "product_category" as "product_template__categ_id" ON ("product_template"."categ_id" = "product_template__categ_id"."id") LEFT JOIN "res_user" as "product_template__categ_id__user_id" ON ("product_template__categ_id"."user_id" = "product_template__categ_id__user_id"."id"),"account.account" """.strip()) self.assertEquals(query.get_sql()[1].strip(), """product_product.template_id = product_template.id AND product_category.expense_account_id = account_account.id""".strip()) - def test_raise_missing_lhs(self): query = Query() query.tables.append('"product_product"') - self.assertRaises(AssertionError, query.join, ("product_template", "product_category", "categ_id", "id"), outer=False) + self.assertRaises(AssertionError, query.add_join, ("product_template", "product_category", "categ_id", "id", "categ_id"), implicit=False, outer=False) # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/test/test_translate.py b/openerp/tests/test_translate.py similarity index 100% rename from openerp/test/test_translate.py rename to openerp/tests/test_translate.py diff --git a/openerp/tools/image.py b/openerp/tools/image.py index f8f118e34e2..cb9db72aa50 100644 --- a/openerp/tools/image.py +++ b/openerp/tools/image.py @@ -36,6 +36,7 @@ def image_resize_image(base64_source, size=(1024, 1024), encoding='base64', file filled with transparent background. The image will not be stretched if smaller than the expected size. Steps of the resizing: + - Compute width and height if not specified. - if avoid_if_small: if both image sizes are smaller than the requested sizes, the original image is returned. This is used to avoid adding transparent content around images that we do not want to alter but @@ -46,14 +47,14 @@ def image_resize_image(base64_source, size=(1024, 1024), encoding='base64', file function. Aspect ratios are preserved when using it. Note that if the source image is smaller than the expected size, it will not be extended, but filled to match the size. - - create a transparent background that will hold the final - image. - - past the thumbnail on the transparent background and center - it. + - create a transparent background that will hold the final image. + - paste the thumbnail on the transparent background and center it. :param base64_source: base64-encoded version of the source image; if False, returns False - :param size: tuple(height, width) + :param size: 2-tuple(width, height). A None value for any of width or + height mean an automatically computed value based respectivelly + on height or width of the source image. :param encoding: the output encoding :param filetype: the output filetype :param avoid_if_small: do not resize if image height and width @@ -61,8 +62,19 @@ def image_resize_image(base64_source, size=(1024, 1024), encoding='base64', file """ if not base64_source: return False + if size == (None, None): + return base64_source + image_stream = io.BytesIO(base64_source.decode(encoding)) image = Image.open(image_stream) + + asked_width, asked_height = size + if asked_width is None: + asked_width = int(image.size[0] * (float(asked_height) / image.size[1])) + if asked_height is None: + asked_height = int(image.size[1] * (float(asked_width) / image.size[0])) + size = asked_width, asked_height + # check image size: do not create a thumbnail if avoiding smaller images if avoid_if_small and image.size[0] <= size[0] and image.size[1] <= size[1]: return base64_source