diff --git a/doc/api/need_action_specs.rst b/doc/api/need_action_specs.rst new file mode 100644 index 00000000000..c9f32dd60c4 --- /dev/null +++ b/doc/api/need_action_specs.rst @@ -0,0 +1,48 @@ +Need action mechanism +===================== + +ir.needaction mixin class +++++++++++++++++++++++++++ + +This revision adds a mixin class for objects using the need action feature. + +Need action feature can be used by objects willing to be able to signal that an action is required on a particular record. If in the business logic an action must be performed by somebody, for instance validation by a manager, this mechanism allows to set a list of users asked to perform an action. + +This class wraps a class (ir.needaction_users) that behaves like a many2many field. However, no field is added to the model inheriting from base.needaction. The mixin class manages the low-level considerations of updating relationships. Every change made on the record calls a method that updates the relationships. + +Objects using the need_action feature should override the ``get_needaction_user_ids`` method. This methods returns a dictionary whose keys are record ids, and values a list of user ids, like in a many2many relationship. Therefore by defining only one method, you can specify if an action is required by defining the users that have to do it, in every possible situation. + +This class also offers several global services,: + - ``needaction_get_record_ids``: for the current model and uid, get all record ids that ask this user to perform an action. This mechanism is used for instance to display the number of pending actions in menus, such as Leads (12) + - ``needaction_get_action_count``: as ``needaction_get_record_ids`` but returns only the number of action, not the ids (performs a search with count=True) + - ``needaction_get_user_record_references``: for a given uid, get all the records that ask this user to perform an action. Records are given as references, a list of tuples (model_name, record_id) + +Menu modification ++++++++++++++++++ + +This revision adds three functional fields to ``ir.ui.menu`` model : + - ``uses_needaction``: boolean field. 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. + - ``needaction_uid_ctr``: integer field. If the target model uses the need action mechanism, this field gives the number of actions the current user has to perform. + - ``needaction_record_ids``: many2many field. If the target model uses the need action mechanism, this field holds the ids of the record requesting the user to perform an action. + +Those fields are functional, because they depend on the user and must therefore be computed at every refresh, each time menus are displayed. The use of the need action mechanism is done by taking into account the action domain in order to display accurate results. When computing the value of the functional fields, the ids of records asking the user to perform an action is concatenated to the action domain. A counting search is then performed on the model, giving back the number of action the users has to perform, limited to the domain of the action. + +Addon implementation example +++++++++++++++++++++++++++++ + +In your ``foo`` module, you want to specify that when it is in state ``confirmed``, it has to be validated by a manager, given by the field ``manager_id``. After making ``foo`` inheriting from ``base.needaction``, you override the ``get_needaction_user_ids`` method: + +:: + + [...] + _inherit = [base.needaction] + [...] + def get_needaction_user_ids(self, cr, uid, ids, context=None): + result = dict.fromkeys(ids) + for foo_obj in self.browse(cr, uid, ids, context=context): + # set the list void by default + result[foo_obj.id] = [] + # if foo_obj is confirmed: manager is required to perform an action + if foo_obj.state == 'confirmed': + result[foo_obj.id] = [foo_obj.manager_id] + return result diff --git a/doc/index.rst.inc b/doc/index.rst.inc index d208bf82eb1..80873a696ec 100644 --- a/doc/index.rst.inc +++ b/doc/index.rst.inc @@ -14,3 +14,4 @@ New feature merges :maxdepth: 1 api/user_img_specs + api/need_action_specs diff --git a/openerp/addons/base/i18n/cs.po b/openerp/addons/base/i18n/cs.po index 8185e5917cc..ba4d173a91a 100644 --- a/openerp/addons/base/i18n/cs.po +++ b/openerp/addons/base/i18n/cs.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: openobject-server\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-02-08 00:44+0000\n" -"PO-Revision-Date: 2012-02-09 08:46+0000\n" +"PO-Revision-Date: 2012-04-03 07:54+0000\n" "Last-Translator: Jiří Hajda \n" "Language-Team: openerp-i18n-czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-03-10 04:47+0000\n" -"X-Generator: Launchpad (build 14914)\n" +"X-Launchpad-Export-Date: 2012-04-04 04:40+0000\n" +"X-Generator: Launchpad (build 15055)\n" "X-Poedit-Language: Czech\n" #. module: base @@ -10043,7 +10043,7 @@ msgstr "res.log" #: view:workflow.activity:0 #: field:workflow.activity,flow_stop:0 msgid "Flow Stop" -msgstr "Zatavení toku" +msgstr "Zastavení toku" #. module: base #: selection:ir.cron,interval_type:0 diff --git a/openerp/addons/base/i18n/ja.po b/openerp/addons/base/i18n/ja.po index df57e0cb835..a65100e44d1 100644 --- a/openerp/addons/base/i18n/ja.po +++ b/openerp/addons/base/i18n/ja.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-server\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-02-08 00:44+0000\n" -"PO-Revision-Date: 2012-03-31 07:17+0000\n" +"PO-Revision-Date: 2012-04-05 00:22+0000\n" "Last-Translator: Akira Hiyama \n" "Language-Team: Japanese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-04-01 04:38+0000\n" -"X-Generator: Launchpad (build 15032)\n" +"X-Launchpad-Export-Date: 2012-04-05 04:43+0000\n" +"X-Generator: Launchpad (build 15060)\n" #. module: base #: model:res.country,name:base.sh @@ -35,7 +35,7 @@ msgstr "日時" #. module: base #: model:ir.module.module,shortdesc:base.module_project_mailgate msgid "Tasks-Mail Integration" -msgstr "タスク‐メール統合" +msgstr "タスクとメールの統合" #. module: base #: code:addons/fields.py:582 @@ -43,7 +43,7 @@ msgstr "タスク‐メール統合" msgid "" "The second argument of the many2many field %s must be a SQL table !You used " "%s, which is not a valid SQL table name." -msgstr "多対多項目 %s の第2引数はSQLテーブルでなければなりません。あなたが使った %s は正しいSQLテーブル名ではありません。" +msgstr "多対多項目 %s の第2引数はSQLテーブルでなければなりません。あなたが使った %s は正しいSQLテーブル名ではありません。" #. module: base #: field:ir.ui.view,arch:0 @@ -167,7 +167,7 @@ msgid "" "specified as a Python expression defining a list of triplets. For example: " "[('color','=','red')]" msgstr "" -"項目間の関係のために値を限定するための任意のドメインは、Python表現で定義された三択のリストとして定義されています。例えば:[('color','='" +"項目間の関係のために値を限定するための任意のドメインは、Python表現で定義された3択のリストとして定義されています。例えば:[('color','='" ",'red')]" #. module: base @@ -178,7 +178,7 @@ msgstr "参照" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_be_invoice_bba msgid "Belgium - Structured Communication" -msgstr "ベルギー-構造化された通信" +msgstr "ベルギー - 構造化された通信" #. module: base #: field:ir.actions.act_window,target:0 @@ -229,7 +229,7 @@ msgstr "" #: code:addons/base/ir/ir_model.py:313 #, python-format msgid "Renaming sparse field \"%s\" is not allowed" -msgstr "" +msgstr "スパース項目 %s のりネームは許されていません。" #. module: base #: model:res.country,name:base.sz @@ -245,7 +245,7 @@ msgstr "作成済" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_tr msgid "Turkey - Accounting" -msgstr "トルコ-会計" +msgstr "トルコ - 会計" #. module: base #: model:ir.module.module,shortdesc:base.module_mrp_subproduct @@ -354,12 +354,12 @@ msgid "" " - tree_but_open\n" "For defaults, an optional condition" msgstr "" -"アクション、可能性のあるアクションのひとつ:\n" +"アクション、アクション可能なスロットの何れか:\n" " ・ client_action_multi\n" " ・ client_print_multi\n" " ・ client_action_relate\n" " ・ tree_but_open\n" -"デフォルト、任意条件として" +"デフォルト、任意の条件" #. module: base #: sql_constraint:res.lang:0 @@ -480,7 +480,7 @@ msgstr "日付 / 時間の書式が不正です。編集する際に表示され msgid "" "One of the records you are trying to modify has already been deleted " "(Document type: %s)." -msgstr "更新しようとしたレコードの一つは既に削除されています(ドキュメントタイプ: %s)。" +msgstr "更新しようとしたレコードの1つは既に削除されています(ドキュメントタイプ: %s)。" #. module: base #: model:ir.module.module,shortdesc:base.module_pad_project @@ -700,7 +700,7 @@ msgstr "カスタム項目は、'x_' で始まる名前を持つ必要があり #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_mx msgid "Mexico - Accounting" -msgstr "メキシコ-会計" +msgstr "メキシコ - 会計" #. module: base #: help:ir.actions.server,action_id:0 @@ -780,7 +780,7 @@ msgstr "自動的なアクション" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_ro msgid "Romania - Accounting" -msgstr "ルーマニア-会計" +msgstr "ルーマニア - 会計" #. module: base #: view:partner.wizard.ean.check:0 @@ -1072,7 +1072,7 @@ msgstr "このグループに加えられたユーザは自動的に次のグル #. module: base #: view:res.lang:0 msgid "%B - Full month name." -msgstr "%B-月名" +msgstr "%B - 月名" #. module: base #: field:ir.actions.todo,type:0 @@ -1266,7 +1266,7 @@ msgid "" "%W - Week number of the year (Monday as the first day of the week) as a " "decimal number [00,53]. All days in a new year preceding the first Monday " "are considered to be in week 0." -msgstr "%W-これは年における週の番号(週の初めは月曜)の数値です[00,53]。年初の最初の月曜日の前の数日は週0にあると認識されます。" +msgstr "%W - これは年における週の番号(週の初めは月曜)の数値です[00,53]。年初の最初の月曜日の前の数日は週0にあると認識されます。" #. module: base #: code:addons/base/module/wizard/base_language_install.py:55 @@ -1473,7 +1473,7 @@ msgstr "" #. module: base #: view:res.lang:0 msgid "%Y - Year with century." -msgstr "%Y-世紀を含む年" +msgstr "%Y - 世紀を含む年" #. module: base #: model:ir.module.module,description:base.module_web_gantt @@ -1686,7 +1686,7 @@ msgstr "もしそれが、ユーザが作業中の同じオブジェクトに属 #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_lu msgid "Luxembourg - Accounting" -msgstr "ルクセンブルグ-会計" +msgstr "ルクセンブルグ - 会計" #. module: base #: model:res.country,name:base.tp @@ -1843,7 +1843,7 @@ msgstr "" "サポート対象国として正当であるか検査されます。国はVAT番号の先頭2文字の国コードから推定されます。\n" "例えば、VAT番号が 'BE0477472701' であればベルギーの規則を使用して検査されます。\n" "\n" -"VAT番号の検査レベルは異なった2つのレベルがあります:\n" +"VAT番号の検査レベルは異なった2つのレベルがあります:\n" "\n" " ・ デフォルトでは国のための知られている検査ルール、通常は簡単なチェックディジットを\n" "  使って簡便なオフラインチェックが実行されます。これは簡単でいつでも利用できますが、\n" @@ -1870,8 +1870,7 @@ msgid "" "Helps you get the most out of your points of sales with fast sale encoding, " "simplified payment mode encoding, automatic picking lists generation and " "more." -msgstr "" -"迅速な販売のコード化、単純化された支払モードのコード化、自動ピッキングリストの生成などにより、販売時点管理のために大いなる手助けをします。" +msgstr "迅速な販売のコード化、単純化された支払モードのコード化、自動集荷リストの生成などにより、販売時点管理のために大いなる手助けをします。" #. module: base #: model:res.country,name:base.mv @@ -2056,11 +2055,11 @@ msgid "" " " msgstr "" "\n" -"これはエクアドルのためのOpenERPの会計チャートを管理するための基本モジュールです。\n" +"これはエクアドルのためのOpenERPの会計表を管理するための基本モジュールです。\n" "=============================================================================" "=\n" "\n" -"エクアドル用の会計チャートとローカル化\n" +"エクアドル用の会計表とローカル化\n" " " #. module: base @@ -2074,7 +2073,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_account_chart msgid "Template of Charts of Accounts" -msgstr "会計チャートのテンプレート" +msgstr "勘定科目表のテンプレート" #. module: base #: field:res.partner.address,type:0 @@ -2136,7 +2135,7 @@ msgstr "" "\n" "このモジュールは以下で構成されます:\n" "\n" -" ・ 一般的なブラジルの会計表\n" +" ・ 一般的なブラジルの勘定科目表\n" " ・ 以下のようなブラジルの税金:\n" "\n" " ・ IPI\n" @@ -2151,14 +2150,14 @@ msgstr "" " ・ 電子会計請求(NFe)のために税状態コード(CST)が要求されます。\n" "\n" "tax_discount 項目は幾つかのICMSのようなブラジルVATの適切な計算のために、account.tax.template と " -"account.tax オブジェクトに追加されました。会計表作成ウィザードは新しいデータを適切に伝えるために拡張されました。\n" +"account.tax オブジェクトに追加されました。勘定科目表作成ウィザードは新しいデータを適切に伝えるために拡張されました。\n" "\n" "とはいえ、このモジュールはブラジルでOpenERPを適切に利用するための多くの実装が欠けていることに注意することが重要です。\n" "これらの実装(電子会計請求などは既に実用)はブラジルのLaunchpadローカル化プロジェクト " "https://launchpad.net/openerp.pt-br-localiz " "やその他のアドオン分野に依存している15を超える追加モジュールによってもたらされます。\n" "このモジュールは特筆されるOpenERPのモジュール性を壊さないことを目指しています。その理由は、それらは多数あるがそれぞれが小さいためです。\n" -"個々にこれらのモジュールを維持するための一つの理由は、ブラジルのローカル化のリーダが残された法律上の要求(会計元帳、経理SPED、会計SPED、PAF " +"個々にこれらのモジュールを維持するための1つの理由は、ブラジルのローカル化のリーダが残された法律上の要求(会計元帳、経理SPED、会計SPED、PAF " "ECFなどは2011年9月ではまだ欠けています)に資金を投入してローカル化をすばやく完了させることに責任を持つ必要があります。\n" "それらのモジュールは AGPL V3 " "の下で同じく厳密にライセンスされ、今日、プライベートモジュールのオンライン利用に関してどんな追加払いの許可もありません。" @@ -2174,7 +2173,7 @@ msgid "" "%U - Week number of the year (Sunday as the first day of the week) as a " "decimal number [00,53]. All days in a new year preceding the first Sunday " "are considered to be in week 0." -msgstr "%U-年の週番号(日曜は週の最初の日)10進数値 [00,53]。新年で最初の日曜までの全ての日は週0と認識されます。" +msgstr "%U - 年の週番号(日曜は週の最初の日)10進数値 [00,53]。新年で最初の日曜までの全ての日は週0と認識されます。" #. module: base #: view:ir.ui.view:0 @@ -2300,7 +2299,7 @@ msgstr "" "ジャーナルは責任を持ち、異なる状態に展開する:\n" " ・ ドラフト、オープン、キャンセル、完了\n" "\n" -"バッチ操作は一度に全ての受注の確認、検証、請求書のピッキングといった異なるジャーナルを処理できます。\n" +"バッチ操作は一度に全ての受注の確認、検証、請求書集荷といった異なるジャーナルを処理できます。\n" "\n" "バッチ請求方法はパートナごとや受注オーダーごとに構成することもできます。例:\n" " ・ 日々の送付\n" @@ -2317,7 +2316,7 @@ msgstr "ロゴ" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_cr msgid "Costa Rica - Accounting" -msgstr "コスタリカ-会計" +msgstr "コスタリカ - 会計" #. module: base #: view:ir.module.module:0 @@ -2842,7 +2841,7 @@ msgstr "ラトビア" #. module: base #: view:partner.sms.send:0 msgid "SMS - Gateway: clickatell" -msgstr "SMS-ゲートウェイ:Clickatell" +msgstr "SMS - ゲートウェイ:Clickatell" #. module: base #: view:ir.actions.server:0 @@ -2914,7 +2913,7 @@ msgstr "OpenERPのレポート作成を単純化して拡張させるための #. module: base #: view:res.lang:0 msgid "%y - Year without century [00,99]." -msgstr "%y-2桁の年[00,99]." +msgstr "%y - 2桁の年[00,99]." #. module: base #: code:addons/base/res/res_company.py:155 @@ -3046,7 +3045,7 @@ msgstr "バングラデシュ" #. module: base #: model:ir.module.module,shortdesc:base.module_project_retro_planning msgid "Project Retro-planning" -msgstr "プロジェクトレトロ-計画" +msgstr "プロジェクトレトロ - 計画" #. module: base #: model:ir.module.module,shortdesc:base.module_stock_planning @@ -3658,7 +3657,7 @@ msgid "" " " msgstr "" "\n" -"このモジュールは英語とフランス語を管理するモジュールです。-OpenERPのカナダ会計表\n" +"このモジュールは英語とフランス語を管理するモジュールです。 - OpenERPのカナダ会計表\n" "=============================================================================" "==============\n" "\n" @@ -3700,9 +3699,9 @@ msgstr "" "この基本モジュールはルクセンブルグの会計表を管理するためのモジュールです。\n" "======================================================================\n" "\n" -" ・ KLUWER会計表\n" +" ・ KLUWER勘定科目表\n" " ・ ルクセンブルグの税金コード表\n" -" ・ ルクセンブルグでの主要税金" +" ・ ルクセンブルグで使われる主要な税金" #. module: base #: field:ir.module.module,demo:0 @@ -4054,7 +4053,7 @@ msgstr "国" #. module: base #: selection:ir.translation,type:0 msgid "RML (deprecated - use Report)" -msgstr "RML(非難された-レポート使用のこと)" +msgstr "RML(推奨しない - レポートの使用)" #. module: base #: sql_constraint:ir.translation:0 @@ -4084,7 +4083,7 @@ msgid "" " " msgstr "" "\n" -" ・ 多言語サポート:会計表、税金、税金コード、ジャーナル、会計テンプレート、会計分析表、ジャーナル分析\n" +" ・ 多言語サポート:勘定科目表、税金、税金コード、ジャーナル、会計テンプレート、分析勘定科目表、ジャーナル分析\n" " ・ セットアップウィザード変更\n" " ・ テンプレートから目的のオブジェクトへCOA、税金、税金コード、会計ポジションの翻訳をコピー\n" " " @@ -4123,7 +4122,7 @@ msgstr "エラーです。再帰的な関係となる分類を作ることはで #. module: base #: view:res.lang:0 msgid "%x - Appropriate date representation." -msgstr "%x-日付表示の割り当て" +msgstr "%x - 日付表示の割り当て" #. module: base #: model:ir.module.module,description:base.module_web_mobile @@ -4139,7 +4138,7 @@ msgstr "" #. module: base #: view:res.lang:0 msgid "%d - Day of the month [01,31]." -msgstr "%d-月の日 [01,31]." +msgstr "%d - 月の日 [01,31]." #. module: base #: model:res.country,name:base.tj @@ -4297,10 +4296,10 @@ msgid "" " " msgstr "" "\n" -"会計のアクセス権限\n" +"会計アクセス権限\n" "=========================\n" "\n" -"このモジュールはアドミンユーザにジャーナル項目や会計表といった全ての会計機能へのアクセスを与えます。\n" +"このモジュールはアドミンユーザにジャーナル項目や勘定科目表といった全ての会計機能へのアクセスを与えます。\n" "\n" "アドミニストレータには管理者とユーザアクセス権を、デモユーザにはユーザアクセス権のみを割り当てます。\n" " " @@ -4457,7 +4456,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_it msgid "Italy - Accounting" -msgstr "イタリア-会計" +msgstr "イタリア - 会計" #. module: base #: field:ir.actions.act_window,help:0 @@ -4637,7 +4636,7 @@ msgstr "SXWコンテンツ" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_pl msgid "Poland - Accounting" -msgstr "ポーランド-会計" +msgstr "ポーランド - 会計" #. module: base #: view:ir.cron:0 @@ -4828,7 +4827,7 @@ msgstr "銀行口座" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_gr msgid "Greece - Accounting" -msgstr "ギリシャ-会計" +msgstr "ギリシャ - 会計" #. module: base #: selection:base.language.install,lang:0 @@ -4957,7 +4956,7 @@ msgstr "モジュールインポート" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_ch msgid "Switzerland - Accounting" -msgstr "スイス-会計" +msgstr "スイス - 会計" #. module: base #: field:res.bank,zip:0 @@ -4986,7 +4985,7 @@ msgstr "ToDoとしてセット" #. module: base #: view:res.lang:0 msgid "%c - Appropriate date and time representation." -msgstr "%c-日付と時間の表現を割り当てて下さい。" +msgstr "%c - 日付と時間の表現を割り当てて下さい。" #. module: base #: code:addons/base/res/res_config.py:386 @@ -5455,7 +5454,7 @@ msgstr "ブラジル" #. module: base #: view:res.lang:0 msgid "%M - Minute [00,59]." -msgstr "%M-分[00,59]." +msgstr "%M - 分[00,59]." #. module: base #: selection:ir.module.module,license:0 @@ -5656,7 +5655,7 @@ msgid "" " - a few other adaptations" msgstr "" "これは英国の中小企業向けにOpenERPの会計を実行するために必要とされるローカル化モジュールです:\n" -" ・ CT600 会計表に対応\n" +" ・ CT600 勘定科目表に対応\n" " ・ VAT100 税制に対応\n" " ・ InfoLogic 英国の地域一覧表\n" " ・ その他の適用" @@ -5747,7 +5746,7 @@ msgstr "" "=\n" "\n" "このモジュールをインストール後、会計の設定ウィザードが自動起動します。\n" -" ・ 会計表作成を補助する会計テンプレートがあります。\n" +" ・ 勘定科目表作成を補助する会計テンプレートがあります。\n" " ・ " "特定のウィザードでは会社の名前、従うべき表のテンプレート、生成するための桁数、あなたのアカウントと銀行口座、ジャーナル作成のための通貨が尋ねられます。\n" "\n" @@ -6022,18 +6021,18 @@ msgstr "" "==========================================================================\n" "\n" "ひとたびマスタ予算と各種予算が定義されたら(Accounting/Budgets/の中に)、\n" -"各プロジェクト管理者は各分析アカウントに計画量をセットすることができます。\n" +"各プロジェクトマネジャは各分析アカウントに計画量をセットすることができます。\n" "\n" "会計士は計画の合計が彼が計画した予算やマスタ予算よりも大き過ぎず、小さ過ぎない\n" "ことを確認するため、各予算とマスター予算の計画量の合計を見通すための機能を持ちます。\n" "各レコードのリストはグラフィカルビューに切り替えることもできます。\n" "\n" -"以下の3つのレポートが利用可能です:\n" +"以下の3個のレポートが利用可能です:\n" " 1. 予算リスト: マスタ予算ごとの分析アカウントをそれらの予算のために展開することができます。\n" "\n" " 2. 予算リストの合計: 分析アカウントを選択された予算のために展開することができます。\n" "\n" -" 3. 会計の分析表: 各予算ごとのマスター予算を選択した分析アカウントのために展開することができます。\n" +" 3. 分析勘定科目表: 各予算ごとのマスター予算を選択した分析アカウントのために展開することができます。\n" "\n" #. module: base @@ -6156,7 +6155,7 @@ msgstr "" " ・ 全てのトランザクションコード、構造化された形式の通信の解析とロギング\n" " ・ CODA構成パラメータを通した自動金融ジャーナル割り当て\n" " ・ 銀行口座番号ごとの複数ジャーナルのサポート\n" -" ・ ひとつのCODAファイル中の異なった銀行口座の複数の口座明細をサポート\n" +" ・ 1つのCODAファイル中の異なった銀行口座の複数の口座明細をサポート\n" " ・ CODA銀行口座の構文解析のみをサポート(CODA銀行口座設定でtype='info'と定義された)\n" " ・ 多言語CODA解析、イギリス、オランダ、フランスのために与えられた解析設定データ\n" "\n" @@ -6168,7 +6167,7 @@ msgstr "" "\n" " タイプが'Info'として設定されたCODA銀行口座は、CODA銀行明細を作るだけです。\n" "\n" -" CODA処理の中の一つのオブジェクトの除去は結果として関連付けられたオブジェクトを除去します。\n" +" CODA処理の中の1つのオブジェクトの除去は結果として関連付けられたオブジェクトを除去します。\n" " 複数銀行明細を含むCODAファイルの除去は同じくそれらの関連する明細を除去します。\n" "\n" " 次の調停のロジックはCODA処理の中に実装されています:\n" @@ -6258,7 +6257,7 @@ msgstr "" " Fabien\n" "\n" "ここで、2つの計画があります: プロジェクトとセールスマン。請求書は2つの計画の中に分析的入力を書き込み可能でなければなりません: SubProj " -"1.1とFabien。量は分割することができます。次は2つのサブプロジェクトに関連し、一人のセールスマンに割り当てる請求書の例です:\n" +"1.1とFabien。量は分割することができます。次は2つのサブプロジェクトに関連し、1人のセールスマンに割り当てる請求書の例です:\n" "\n" "Plan1:\n" " SubProject 1.1 : 50%\n" @@ -6266,7 +6265,7 @@ msgstr "" "Plan2:\n" " Eric: 100%\n" "\n" -"それで、この請求書の行が確認されると、一つの口座の入力により3つの分析的な行が作成されます。\n" +"それで、この請求書の行が確認されると、1つの口座の入力により3つの分析的な行が作成されます。\n" "分析的な計画は分配モデルの生成において最小と最大の利益を検査します。\n" " " @@ -6367,7 +6366,7 @@ msgid "" " " msgstr "" "\n" -"コスタリカのための会計表\n" +"コスタリカのための勘定科目表\n" "=================================\n" "\n" "含まれるもの:\n" @@ -6501,7 +6500,7 @@ msgstr "外部依存が解決されないため、モジュール\"%s\"の処理 #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_be_hr_payroll msgid "Belgium - Payroll" -msgstr "ベルギー-給与" +msgstr "ベルギー - 給与" #. module: base #: view:publisher_warranty.contract.wizard:0 @@ -6761,7 +6760,7 @@ msgstr "" #. module: base #: view:res.lang:0 msgid "%S - Seconds [00,61]." -msgstr "%S-秒[00,61]" +msgstr "%S - 秒[00,61]" #. module: base #: model:res.country,name:base.cv @@ -6835,7 +6834,7 @@ msgid "" "- Action: an action attached to one slot of the given model\n" "- Default: a default value for a model field" msgstr "" -"・ アクション: そのモデルの一つのスロットに付随する行動\n" +"・ アクション: そのモデルの1つのスロットに付随する行動\n" "・ デフォルト: モデル項目のための既定値" #. module: base @@ -6949,7 +6948,7 @@ msgstr "自らの必要と希望によるクライアントにより解釈され #. module: base #: sql_constraint:ir.rule:0 msgid "Rule must have at least one checked access right !" -msgstr "ルールは少なくとも一つのチェック済みのアクセス権限を持たねばなりません。" +msgstr "ルールは少なくとも1つのチェック済みのアクセス権限を持たねばなりません。" #. module: base #: model:res.country,name:base.fj @@ -7070,7 +7069,7 @@ msgstr "イスラエル" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_syscohada msgid "OHADA - Accounting" -msgstr "OHADA-会計" +msgstr "OHADA - 会計" #. module: base #: help:res.bank,bic:0 @@ -7504,7 +7503,7 @@ msgstr "削除時" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_multilang msgid "Multi Language Chart of Accounts" -msgstr "多言語会計表" +msgstr "多言語勘定科目表" #. module: base #: selection:res.lang,direction:0 @@ -7614,7 +7613,7 @@ msgstr "" "\n" "このモジュールはユーザにRIB形式(銀行口座詳細のフランス規格)でパートナの銀行詳細を入力させます。\n" "RIB銀行口座は口座タイプが”RIB”と明記されたパートナフォームの会計タブから入力できます。\n" -"以下の4個の標準RIB項目が必須となります:\n" +"次の4個の標準RIB項目が必須となります:\n" "・ 銀行コード\n" "・ オフィスコード\n" "・ 口座番号\n" @@ -7627,8 +7626,8 @@ msgstr "" "\n" "フランスの銀行は現在、RIB形式の代わりに国際的なIBAN形式への適用を進めているので、モジュールbase_ibanをこのモジュールに追加するのは有用です" "。\n" -"単独の口座のためのRIBとIBANコードはOpenERPの中に2つの銀行口座を記録することで入力されます:RIBタイプが最初で、2番目がIBANです。 " -"\n" +"単独の口座のためのRIBとIBANコードはOpenERPの中に2つの銀行口座を記録することで入力されます:最初がRIBタイプで、2つ目がIBANタイプです" +"。 \n" #. module: base #: view:ir.property:0 @@ -7645,7 +7644,7 @@ msgstr "モザンビーク" msgid "" "Action bound to this entry - helper field for binding an action, will " "automatically set the correct reference" -msgstr "アクションはこの入力に結び付けられています-アクションを結びつけるための補助項目は自動的に正しい参照をセットします。" +msgstr "アクションはこの入力に結び付けられています - アクションを結びつけるための補助項目は自動的に正しい参照をセットします。" #. module: base #: model:ir.ui.menu,name:base.menu_project_long_term @@ -7713,7 +7712,7 @@ msgid "" " " msgstr "" "\n" -" アメリカ-会計表\n" +" アメリカ合衆国 - 勘定科目表\n" " " #. module: base @@ -7724,7 +7723,7 @@ msgstr "追加" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_ec msgid "Ecuador - Accounting" -msgstr "エクアドル-会計" +msgstr "エクアドル - 会計" #. module: base #: field:res.partner.category,name:0 @@ -7773,7 +7772,7 @@ msgstr "ウィジットウィザード" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_hn msgid "Honduras - Accounting" -msgstr "ホンジュラス-会計" +msgstr "ホンジュラス - 会計" #. module: base #: model:ir.module.module,shortdesc:base.module_report_intrastat @@ -7838,7 +7837,7 @@ msgstr "有効" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_ma msgid "Maroc - Accounting" -msgstr "モロッコ-会計" +msgstr "モロッコ - 会計" #. module: base #: model:res.country,name:base.mn @@ -7904,11 +7903,11 @@ msgid "" " " msgstr "" "\n" -"このモジュールはCRMに一つあるいは幾つかのオポチュニティに近道を加えます。\n" +"このモジュールはCRMに1つあるいは幾つかのオポチュニティに近道を加えます。\n" "===========================================================================\n" "\n" "この方法は選択されたケースに基づき受注オーダーを作成します。\n" -"異なったケースが開いている(リスト)場合は、ケースによる一つの受注オーダーを作成します。\n" +"異なったケースが開いている(リスト)場合は、ケースによる1つの受注オーダーを作成します。\n" "そのケースがそれから閉じられ作成された受注オーダーに結び付けられます。\n" "\n" "すでに受注とCRMの両方のモジュールをインストールしているなら、このモジュールのインストールを薦めます。\n" @@ -8011,7 +8010,8 @@ msgid "" "If you are working on the American market, you can manage the different " "federal states you are working on from here. Each state is attached to one " "country." -msgstr "あなたがアメリカの市場で働いているなら、あなたはここからあなたが働く異なる州を管理できます。それぞれの州はひとつの国に属しています。" +msgstr "" +"あなたがアメリカ市場で働いているなら、あなたは、ここから、自身が働くところと異なる州を管理できます。それぞれの州は1つの国に属しています。" #. module: base #: model:ir.module.module,description:base.module_delivery @@ -8027,11 +8027,11 @@ msgid "" " " msgstr "" "\n" -"受注オーダーとピッキングに関する配送方法を追加することができます。\n" +"受注オーダーと集荷に関する配送方法を追加することができます。\n" "==============================================================\n" "\n" "価格によるあなた自身の運搬人や配送グリッドの定義ができます。\n" -"ピッキングから請求書を作成する場合は、OpenERPは配送の行を追加し計算を行います。\n" +"集荷から請求書を作成する場合は、OpenERPは配送行を追加し計算を行います。\n" "\n" " " @@ -8483,12 +8483,13 @@ msgstr "" "\n" " [ 顧客 ] <- A - [ アウトレット ] <- B - [ 親会社 ] <~ C ~ [ 仕入先 ]\n" "\n" -"新しい調達オーダー(A:例として受注オーダーの確認がくる)がアウトレットに到着すると、それは親会社から要求されたもう一つの調達に変換されます(B:プルフロ" -"ーのタイプは'move')。親会社により調達オーダーBが処理される時、そしてその製品が在庫切れの時、それは仕入先への発注オーダー(C:プルフローのタイプは" +"新しい調達オーダー(A:例として受注オーダーの確認がくる)がアウトレットに到着すると、それは親会社から\n" +"要求されたもう1つの調達に変換されます(B:プルフローのタイプは'move')。親会社により調達オーダーBが\n" +"処理される時、そしてその製品が在庫切れの時、それは仕入先への発注オーダー(C:プルフローのタイプは\n" "発注)に変換されます。結果として調達オーダー、ニーズは顧客と仕入先の間の全てにプッシュされます。\n" "\n" -"専門的には、プルフローは調達オーダーと別に処理することを許します。製品に対しての考慮に依存するのみならず、その製品のニーズを持つ場所(即ち調達オーダーの目" -"的地)に依存します。\n" +"専門的には、プルフローは調達オーダーと別に処理することを許します。製品に対しての考慮に依存するのみ\n" +"ならず、その製品のニーズを持つ場所(即ち調達オーダーの目的地)に依存します。\n" "\n" "使用例\n" "--------\n" @@ -8645,7 +8646,7 @@ msgstr "" "===========================================================================\n" "\n" "所定のメールボックスに到着した新しいEメールを元にタスクの生成を許します。\n" -"同様にCRMアプリケーションがリード / オポチュニティを持つもの。\n" +"CRMアプリケーションがリード / オポチュニティを持つものも同様です。\n" "メールボックス統合の設定のために2つの共通の選択肢があります:\n" "\n" " ・ fetchmailモジュールをインストールし、新しいメールボックスを設定し、それから\n" @@ -8804,7 +8805,7 @@ msgstr "" #. module: base #: view:res.partner.bank:0 msgid "Bank accounts belonging to one of your companies" -msgstr "銀行口座はあなたの会社の一つに属します。" +msgstr "銀行口座はあなたの会社の1つに属します。" #. module: base #: help:res.users,action_id:0 @@ -8876,7 +8877,7 @@ msgstr "コンタクト" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_at msgid "Austria - Accounting" -msgstr "オーストラリア-会計" +msgstr "オーストラリア - 会計" #. module: base #: model:ir.model,name:base.model_ir_ui_menu @@ -8929,7 +8930,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_be msgid "Belgium - Accounting" -msgstr "ベルギー-会計" +msgstr "ベルギー - 会計" #. module: base #: code:addons/base/module/module.py:622 @@ -9054,7 +9055,7 @@ msgstr "モロッコ" msgid "" "Model to which this entry applies - helper field for setting a model, will " "automatically set the correct model name" -msgstr "このエントリーが適用されるモデル-モデルを設定するための補助項目は自動的に正しいモデル名をセットします。" +msgstr "このエントリーが適用されるモデル - モデルを設定するための補助項目は自動的に正しいモデル名をセットします。" #. module: base #: view:res.lang:0 @@ -9167,7 +9168,7 @@ msgstr "" "次を含む人的資源管理のダッシュボードが実装されています:\n" " ・ 休暇\n" "\n" -"注意事項:\n" +"注記:\n" " ・ " "内部の予定表(CRMモジュールの使用)との同期が可能です。休暇申請が許可される時に自動的にそれを事実化するためには休暇ステータスをそこに結びつける必要があ" "ります。次の場所でその情報と色の好みを設定することができます。\n" @@ -9176,7 +9177,7 @@ msgstr "" " ・ 従業員の休暇を印刷する2つの方法があります:\n" "   ・ 最初の方法は、部門の従業員を選択し、以下にあるメニューをクリックする。\n" "     Human Resources/Reporting/Holidays/Leaves by Department\n" -"   ・ 二番目の方法は、特定の従業員の休暇レポートを選択する。以下に行き、\n" +"   ・ 2番目の方法は、特定の従業員の休暇レポートを選択する。以下に行き、\n" "     Human Resources/Human Resources/Employees\n" "     それから好みのものを選択して印刷アイコンをクリックし、従業員の休暇を選択する。\n" "\n" @@ -10164,7 +10165,7 @@ msgstr "" "\n" "どこで開始されるか\n" "--------------\n" -"このモジュールは以下の3つのステップでなされます:\n" +"このモジュールは次の3つのステップでなされます:\n" "\n" "・ 在庫期間を作成 倉庫 > 設定 > 在庫期間メニュー(必須のステップ)\n" "・ 予測数量を埋めた受注予測の作成 受注 > 受注予測メニュー\n" @@ -10221,7 +10222,7 @@ msgstr "" "システムは製品の販売価格に応じた総額から数量を計算します。\n" "\n" "フォームの全ての値はフォームで選択した計量単位で表現されます。\n" -"デフォルトの分類または第二の分類から計量単位を選択することができます。\n" +"デフォルトの分類または第2の分類から計量単位を選択することができます。\n" "計量単位を変更した場合は、予測製品数量は 新しい計量単位によって再計算されます。\n" "\n" "受注予測の解決のために製品の\"受注履歴\"を使うことができます。\n" @@ -10266,7 +10267,7 @@ msgstr "" "ックして下さい。\n" "\n" "フォームの上の全ての値はフォームで選択された計量単位で表現されます。\n" -"計量単位はデフォルト分類または第二の分類から選択することができます。\n" +"計量単位はデフォルト分類または第2の分類から選択することができます。\n" "計量単位を変更する場合は編集可能な数量は新しい計量単位によって再計算されます。その他は\"計画を計算\"をクリックした後に更新されます。\n" "\n" "在庫シュミレーション数量の計算\n" @@ -10371,7 +10372,7 @@ msgstr "" "====================\n" "\n" " ・ これはRSTの実装されたSphinx(http://sphinx.pocoo.org)を使用しています。\n" -" ・ これはインデックスファイルとモジュールごとに一つのファイルを含むtarファイル(サフィックスが.tgz)を作成します。\n" +" ・ これはインデックスファイルとモジュールごとに1つのファイルを含むtarファイル(サフィックスが.tgz)を作成します。\n" " ・ 関係グラフを生成します。\n" " " @@ -10678,7 +10679,7 @@ msgstr "一般設定" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_uy msgid "Uruguay - Chart of Accounts" -msgstr "ウルグアイー会計表" +msgstr "ウルグアイ - 勘定科目表" #. module: base #: model:ir.ui.menu,name:base.menu_administration_shortcut @@ -10731,7 +10732,7 @@ msgstr "ヘッダーのプレビュー" #. module: base #: field:res.company,paper_format:0 msgid "Paper Format" -msgstr "用紙フォーマット" +msgstr "用紙書式" #. module: base #: field:base.language.export,lang:0 @@ -10835,7 +10836,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_us msgid "United States - Chart of accounts" -msgstr "アメリカ合衆国-会計表" +msgstr "アメリカ合衆国 - 勘定科目表" #. module: base #: view:base.language.install:0 @@ -11336,7 +11337,7 @@ msgid "" " " msgstr "" "\n" -"インドの会計:会計表\n" +"インドの会計:勘定科目表\n" "=====================================\n" "\n" "インドの会計表とローカル化\n" @@ -11532,7 +11533,7 @@ msgstr "エラー" #. module: base #: model:ir.module.module,shortdesc:base.module_marketing_campaign_crm_demo msgid "Marketing Campaign - Demo" -msgstr "マーケティングキャンペーン-デモ" +msgstr "マーケティングキャンペーン - デモ" #. module: base #: model:ir.module.module,shortdesc:base.module_fetchmail_hr_recruitment @@ -11542,7 +11543,7 @@ msgstr "応募者のためのEメールゲートウェイ" #. module: base #: model:ir.module.module,shortdesc:base.module_account_coda msgid "Belgium - Import bank CODA statements" -msgstr "ベルギー-CODA銀行明細書のインポート" +msgstr "ベルギー - CODA銀行明細書のインポート" #. module: base #: field:ir.cron,interval_type:0 @@ -11589,7 +11590,7 @@ msgstr "キーワード" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_cn msgid "中国会计科目表 - Accounting" -msgstr "中国-会計" +msgstr "中国勘定科目表 - 会計" #. module: base #: view:ir.model.access:0 @@ -11907,10 +11908,10 @@ msgid "" "\n" msgstr "" "\n" -"一般的な会計表\n" +"一般的な勘定科目表\n" "=========================\n" "\n" -"ウルグアイのための会計表と税金のためのテンプレートを提供します。\n" +"ウルグアイのための勘定科目表と税金のためのテンプレートを提供します。\n" "\n" #. module: base @@ -12037,7 +12038,7 @@ msgstr "" "Webkitレポートエンジン(report_webkit モジュール)のサンプル\n" "========================================================\n" "\n" -"このモジュールにはサンプル請求書レポートと同様に、システムの中の任意のドキュメントにWebkitのレポートエントリを追加するウィザードが含まれています。" +"このモジュールにはサンプル請求書レポートと同様に、システムの中の任意のドキュメントにWebkitのレポートエントリーを追加するウィザードが含まれています。" "\n" "\n" "ウィザードを呼び出して印刷ボタンを作る必要があります。より詳しい情報は以下を参照して下さい:\n" @@ -12178,7 +12179,7 @@ msgstr "" "=============================================================================" "========================================\n" "\n" -"一つの明細書におけるIBAN口座から正確に表現されるローカル口座を抜き取る能力\n" +"1つの明細書のIBAN口座から正確に表現されたローカル口座を抜き抜く能力\n" " " #. module: base @@ -12244,7 +12245,7 @@ msgid "" " " msgstr "" "\n" -"タイの会計表\n" +"タイの勘定科目表\n" "===============================\n" "\n" "タイの会計表とローカル化\n" @@ -12457,7 +12458,7 @@ msgstr "または" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_br msgid "Brazilian - Accounting" -msgstr "ブラジル-会計" +msgstr "ブラジル - 会計" #. module: base #: model:res.country,name:base.pk @@ -13026,7 +13027,7 @@ msgstr "" "OpenERPオブジェクトの中の警告トリガーのモジュール\n" "==============================================\n" "\n" -"警告メッセージは受注オーダー、発注オーダー、ピッキング、請求書のようなオブジェクトのために表示させることができます。\n" +"警告メッセージは受注オーダー、発注オーダー、集荷、請求書のようなオブジェクトのために表示させることができます。\n" "このメッセージはフォームのonChangeイベントによってトリガーとなります。\n" " " @@ -13327,7 +13328,7 @@ msgstr "サーバーアクション" #. module: base #: field:res.partner.bank.type,format_layout:0 msgid "Format Layout" -msgstr "フォーマットレイアウト" +msgstr "書式レイアウト" #. module: base #: field:ir.model.fields,selection:0 @@ -13371,7 +13372,7 @@ msgstr "" #. module: base #: view:res.lang:0 msgid "Legends for Date and Time Formats" -msgstr "日付と時刻フォーマットの凡例" +msgstr "日付と時刻書式の凡例" #. module: base #: selection:ir.actions.server,state:0 @@ -13601,7 +13602,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_uk msgid "UK - Accounting" -msgstr "イギリス-会計" +msgstr "イギリス - 会計" #. module: base #: model:ir.module.module,description:base.module_project_scrum @@ -13696,7 +13697,7 @@ msgstr "設定" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_in msgid "India - Accounting" -msgstr "インド-会計" +msgstr "インド - 会計" #. module: base #: field:ir.actions.server,expression:0 @@ -13711,7 +13712,7 @@ msgstr "開始日" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_gt msgid "Guatemala - Accounting" -msgstr "グアテマラ-会計" +msgstr "グアテマラ - 会計" #. module: base #: help:ir.cron,args:0 @@ -13889,7 +13890,7 @@ msgstr "ハード島とマクドナルド諸島" msgid "" "External Key/Identifier that can be used for data integration with third-" "party systems" -msgstr "" +msgstr "サードパーティのシステムとのデータ統合のために利用する外部キー / 識別子" #. module: base #: model:ir.module.module,description:base.module_mrp_operations @@ -13924,6 +13925,31 @@ msgid "" "\n" " " msgstr "" +"\n" +"このモジュールは製造オーダー行(\"ワークセンタ\"のタブ内)の中に状態、開始日付、中止日付を追加します。\n" +"=============================================================================" +"================================\n" +"\n" +"状態:ドラフト、確認、完了、キャンセル\n" +"終了する、確認する、キャンセルする時に、製造オーダーは全ての状態行を状態に応じて設定する。\n" +"\n" +"メニューの作成:\n" +"  製造 > 製造 > ワークオーダー\n" +"\n" +"これは、製造オーダーのワークセンタ行のビューです。\n" +"\n" +"ワークセンタタブの下に製造オーダーのフォームビューにボタンを追加して下さい:\n" +" ・ 開始(確認状態に設定)、開始日付の設定\n" +" ・ 完了(完了状態に設定)、中止日付の設定\n" +" ・ ドラフトに設定(ドラフト状態に設定)\n" +" ・ キャンセル(キャンセル状態に設定)\n" +"\n" +"製造オーダーが\"製造可能\"になった時、操作は確認済になります。製造オーダーが終了した時、操作は完了になります。\n" +"\n" +"項目の遅れは遅れ(中止日付 - 開始日付)です。\n" +"それで、理論的な遅れと実際の遅れを比較できます。\n" +"\n" +" " #. module: base #: model:ir.module.module,description:base.module_auction @@ -13947,6 +13973,21 @@ msgid "" " * Objects By Day (graph)\n" " " msgstr "" +"\n" +"このモジュールはオークションの品物、売り手と買い手の記録を管理します。\n" +"=============================================================================" +"====\n" +"\n" +"入札の管理、支払いや売れた品物の追跡、品物の配達を含む未払いなどのオークションを完全に管理します。\n" +"\n" +"オークションのためのダッシュボードは以下を含みます:\n" +" ・ 最新のオブジェクト(リスト)\n" +" ・ 最新の預り金(リスト)\n" +" ・ オブジェクトの統計(リスト)\n" +" ・ 合計落札(グラフ)\n" +" ・ 最小 / 平均 / 最大(グラフ)\n" +" ・ 日別のオブジェクト(グラフ)\n" +" " #. module: base #: model:ir.module.module,description:base.module_base_crypt @@ -13983,6 +14024,33 @@ msgid "" "\n" " " msgstr "" +"\n" +"データベースの中のクリアテキストパスワードを安全なハッシュにより置き換えます。\n" +"===============================================================\n" +"\n" +"存在するユーザベースのために、base_cryptをインストールした場合、即座にクリアテキストパスワードの除去を行います。\n" +"\n" +"全てのパスワードは誰かがデータベースの中のオリジナルのパスワードを読むことを防止\n" +"するために、安全、ハッシュ暗号化で処理され置き換えられます。\n" +"\n" +"このモジュールをインストール後は、ユーザがパスワードを忘れた場合はそれを取り戻すことは\n" +"できません。その場合はアドミンによって新しいパスワードをセットするのが唯一の方法です。\n" +"\n" +"セキュリティの警告\n" +"++++++++++++++++\n" +"このモジュールをインストールしても、XML -RPCS、あるいはHTTPのような安全なプロトコル\n" +"を使っていないなら、パスワードはネットワーク上を暗号化されないで転送されますので、\n" +"他のセキュリティ対策を無視して良いということではありません。\n" +"また、データベースに格納された他を保護しません。それは重要なデータを含むかもしれません。\n" +"全てのエリアに対して、システム管理者によって以下のような適切なセキュリティ対策の実装が要求されます。\n" +"データベースバックアップ、システムファイル、リモートシェルアクセス、物理サーバアクセスなどに対する保護\n" +"\n" +"LDAP認証との統合\n" +"+++++++++++++++++++++++++++++++++++\n" +"このモジュールは現在、user_ldapモジュールと互換性はありません。同時にインストールをした場合、\n" +"完全にLDAP認証を無効にするでしょう。\n" +"\n" +" " #. module: base #: field:ir.actions.act_window,view_id:0 @@ -13992,22 +14060,22 @@ msgstr "ビューの参照" #. module: base #: model:ir.module.category,description:base.module_category_sales_management msgid "Helps you handle your quotations, sale orders and invoicing." -msgstr "" +msgstr "見積書、販売注文書、請求書の処理に役立ちます。" #. module: base #: field:res.groups,implied_ids:0 msgid "Inherits" -msgstr "" +msgstr "継承" #. module: base #: selection:ir.translation,type:0 msgid "Selection" -msgstr "" +msgstr "選択" #. module: base #: field:ir.module.module,icon:0 msgid "Icon URL" -msgstr "" +msgstr "アイコンのURL" #. module: base #: field:ir.actions.act_window,type:0 @@ -14021,12 +14089,12 @@ msgstr "" #: field:ir.actions.url,type:0 #: field:ir.actions.wizard,type:0 msgid "Action Type" -msgstr "" +msgstr "アクションタイプ" #. module: base #: model:res.country,name:base.vn msgid "Vietnam" -msgstr "" +msgstr "ベトナム" #. module: base #: model:ir.module.module,description:base.module_l10n_syscohada @@ -14042,32 +14110,37 @@ msgid "" "Chad, Togo.\n" " " msgstr "" +"このモジュールはOHADA領域の会計表を実装しています。\n" +" 任意の会社や団体が財務会計の管理ができます。OHADAを使用する国は次のとおりです:\n" +" ベナン、ブルキナファソ、カメルーン、中央アフリカ共和国、コモロ、コンゴ、コートジボワール、\n" +" ガボン、ギニア、ギニアビサウ、赤道ギニア、マリ、ニジェール、コンゴ民主共和国、チャド、トーゴ\n" +" " #. module: base #: view:base.language.import:0 #: model:ir.actions.act_window,name:base.action_view_base_import_language #: model:ir.ui.menu,name:base.menu_view_base_import_language msgid "Import Translation" -msgstr "" +msgstr "翻訳のインポート" #. module: base #: field:res.partner.bank.type,field_ids:0 msgid "Type fields" -msgstr "" +msgstr "項目のタイプ" #. module: base #: view:ir.actions.todo:0 #: field:ir.actions.todo,category_id:0 #: field:ir.module.module,category_id:0 msgid "Category" -msgstr "" +msgstr "分類" #. module: base #: view:ir.attachment:0 #: selection:ir.attachment,type:0 #: selection:ir.property,type:0 msgid "Binary" -msgstr "" +msgstr "バイナリ" #. module: base #: field:ir.actions.server,sms:0 @@ -14078,12 +14151,12 @@ msgstr "" #. module: base #: model:res.country,name:base.cr msgid "Costa Rica" -msgstr "" +msgstr "コスタリカ" #. module: base #: model:ir.module.module,shortdesc:base.module_base_module_doc_rst msgid "Generate Docs of Modules" -msgstr "" +msgstr "モジュールのドキュメントの生成" #. module: base #: model:res.company,overdue_msg:base.main_company @@ -14095,28 +14168,32 @@ msgid "" "queries regarding your account, please contact us.\n" "Thank you in advance.\n" msgstr "" +"われわれの記録によれば、次の支払がまだ行われておりません。既に金額が支払われている\n" +"場合には、どうぞ、この通知を無視して下さい。\n" +"アカウントに関して何かご質問がありましたら、どうぞ、お問い合わせ下さい。\n" +"よろしくお願いいたします。\n" #. module: base #: model:ir.module.module,shortdesc:base.module_users_ldap msgid "Authentication via LDAP" -msgstr "" +msgstr "LDAPによる認証" #. module: base #: view:workflow.activity:0 msgid "Conditions" -msgstr "" +msgstr "条件" #. module: base #: model:ir.actions.act_window,name:base.action_partner_other_form msgid "Other Partners" -msgstr "" +msgstr "その他のパートナ" #. module: base #: model:ir.actions.act_window,name:base.action_currency_form #: model:ir.ui.menu,name:base.menu_action_currency_form #: view:res.currency:0 msgid "Currencies" -msgstr "" +msgstr "通貨" #. module: base #: model:ir.model,name:base.model_ir_actions_client @@ -14127,12 +14204,12 @@ msgstr "" #. module: base #: help:ir.values,value:0 msgid "Default value (pickled) or reference to an action" -msgstr "" +msgstr "デフォルト値、またはアクションへの参照" #. module: base #: sql_constraint:res.groups:0 msgid "The name of the group must be unique !" -msgstr "" +msgstr "グループ名は一意である必要があります。" #. module: base #: model:ir.module.module,description:base.module_base_report_designer @@ -14145,26 +14222,33 @@ msgid "" "you can modify in OpenOffice. Once you have modified it you can\n" "upload the report using the same wizard.\n" msgstr "" +"\n" +"このモジュールはOpenERPのOpenOfficeプラグインと一緒に使われます。\n" +"=========================================================\n" +"\n" +"このモジュールには、OpenOfficeで変更したsxw(Writer) レポートのインポートとエクスポートの\n" +"ウィザードが追加されています。あなたはそのレポートを変更した後には、同じウィザードを使って\n" +"それをアップロードすることができます。\n" #. module: base #: view:ir.sequence:0 msgid "Hour 00->12: %(h12)s" -msgstr "" +msgstr "時 00->12: %(h12)s" #. module: base #: help:res.partner.address,active:0 msgid "Uncheck the active field to hide the contact." -msgstr "" +msgstr "連絡先を隠すためにはアクティブな項目のチェックを外して下さい。" #. module: base #: model:ir.model,name:base.model_res_widget_wizard msgid "Add a widget for User" -msgstr "" +msgstr "ユーザのウィジットを追加" #. module: base #: model:res.country,name:base.dk msgid "Denmark" -msgstr "" +msgstr "デンマーク" #. module: base #: model:ir.module.module,description:base.module_base_calendar @@ -14182,11 +14266,23 @@ msgid "" "If you need to manage your meetings, you should install the CRM module.\n" " " msgstr "" +"\n" +"これはフル機能のカレンダーシステムです。\n" +"========================================\n" +"\n" +"I以下をサポートします。\n" +" ・ イベントのカレンダー\n" +" ・ アラート(要求を作成)\n" +" ・ 定期的なイベント\n" +" ・ 人々の招待\n" +"\n" +"ミーティングを管理したい場合は、CRMモジュールをインストールする必要があります。\n" +" " #. module: base #: view:ir.rule:0 msgid "Rule definition (domain filter)" -msgstr "" +msgstr "ルールの定義(ドメインフィルタ)" #. module: base #: model:ir.model,name:base.model_workflow_instance @@ -14197,7 +14293,7 @@ msgstr "" #: code:addons/orm.py:471 #, python-format msgid "Unknown attribute %s in %s " -msgstr "" +msgstr "不明な属性 %s in %s " #. module: base #: view:res.lang:0 @@ -14208,7 +14304,7 @@ msgstr "" #: code:addons/fields.py:122 #, python-format msgid "undefined get method !" -msgstr "" +msgstr "未定義のメソッドを取得しています。" #. module: base #: selection:base.language.install,lang:0 @@ -14223,43 +14319,43 @@ msgstr "" #. module: base #: model:res.country,name:base.ee msgid "Estonia" -msgstr "" +msgstr "エストニア" #. module: base #: model:ir.module.module,shortdesc:base.module_board #: model:ir.ui.menu,name:base.menu_dashboard msgid "Dashboards" -msgstr "" +msgstr "ダッシュボード" #. module: base #: model:ir.module.module,shortdesc:base.module_procurement msgid "Procurements" -msgstr "" +msgstr "調達" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_payroll_account msgid "Payroll Accounting" -msgstr "" +msgstr "給与計算" #. module: base #: help:ir.attachment,type:0 msgid "Binary File or external URL" -msgstr "" +msgstr "バイナリファイルまたは外部URL" #. module: base #: model:ir.module.module,shortdesc:base.module_sale_order_dates msgid "Dates on Sales Order" -msgstr "" +msgstr "受注日" #. module: base #: view:ir.attachment:0 msgid "Creation Month" -msgstr "" +msgstr "作成月" #. module: base #: model:res.country,name:base.nl msgid "Netherlands" -msgstr "" +msgstr "オランダ" #. module: base #: model:ir.module.module,description:base.module_edi @@ -14276,21 +14372,32 @@ msgid "" "technical OpenERP documentation at http://doc.openerp.com\n" " " msgstr "" +"\n" +"他のアプリケーションが使用できる共通のEDIプラットフォームを提供します。\n" +"==============================================================\n" +"\n" +"OpenERPは異なったシステムの間でビジネスドキュメントを交換するために、\n" +"一般的なEDIフォーマットを規定します。そして、それをインポート、エクスポート\n" +"するための一般的なメカニズムを提供します。\n" +"\n" +"OpenERPのEDIフォーマットについての詳細は以下のOpenERP技術資料にあります。\n" +"http://doc.openerp.com\n" +" " #. module: base #: model:ir.ui.menu,name:base.next_id_4 msgid "Low Level Objects" -msgstr "" +msgstr "低レベルのオブジェクト" #. module: base #: help:ir.values,model:0 msgid "Model to which this entry applies" -msgstr "" +msgstr "このエントリーを適用するモデル" #. module: base #: field:res.country,address_format:0 msgid "Address Format" -msgstr "" +msgstr "アドレスフォーマット" #. module: base #: model:ir.model,name:base.model_ir_values @@ -14300,7 +14407,7 @@ msgstr "" #. module: base #: model:res.groups,name:base.group_no_one msgid "Technical Features" -msgstr "" +msgstr "技術的特長" #. module: base #: selection:base.language.install,lang:0 @@ -14314,23 +14421,25 @@ msgid "" "Here is what we got instead:\n" " %s" msgstr "" +"これは代わりに取得したものです:\n" +" %s" #. module: base #: model:ir.actions.act_window,name:base.action_model_data #: view:ir.model.data:0 #: model:ir.ui.menu,name:base.ir_model_data_menu msgid "External Identifiers" -msgstr "" +msgstr "外部識別子" #. module: base #: model:res.groups,name:base.group_sale_salesman msgid "User - Own Leads Only" -msgstr "" +msgstr "ユーザ - 自身のリードのみ" #. module: base #: model:res.country,name:base.cd msgid "Congo, The Democratic Republic of the" -msgstr "" +msgstr "コンゴ民主共和国" #. module: base #: selection:base.language.install,lang:0 @@ -14342,7 +14451,7 @@ msgstr "マラヤーラム語 / മലയാളം" #: field:res.request,body:0 #: field:res.request.history,req_id:0 msgid "Request" -msgstr "" +msgstr "リクエスト" #. module: base #: model:ir.actions.act_window,help:base.act_ir_actions_todo_form @@ -14351,40 +14460,43 @@ msgid "" "OpenERP. They are launched during the installation of new modules, but you " "can choose to restart some wizards manually from this menu." msgstr "" +"この設定ウィザードはOpenERPの新しいインスタンスを設定するために利用されます。\r\n" +"これらは新しいモジュールのインストールの間に起動されますが、幾つかのウィザードは\r\n" +"このメニューから手動で再起動することができます。" #. module: base #: view:res.company:0 msgid "Portrait" -msgstr "" +msgstr "縦向き" #. module: base #: field:ir.cron,numbercall:0 msgid "Number of Calls" -msgstr "" +msgstr "電話の回数" #. module: base #: code:addons/base/res/res_bank.py:189 #, python-format msgid "BANK" -msgstr "" +msgstr "銀行" #. module: base #: view:base.module.upgrade:0 #: field:base.module.upgrade,module_info:0 msgid "Modules to update" -msgstr "" +msgstr "更新するモジュール" #. module: base #: help:ir.actions.server,sequence:0 msgid "" "Important when you deal with multiple actions, the execution order will be " "decided based on this, low number is higher priority." -msgstr "" +msgstr "複数のアクションを伴う取引の際には重要です。実行順序はこれに基づき決定されます。小さい数はより優先度が高くなります。" #. module: base #: field:ir.actions.report.xml,header:0 msgid "Add RML header" -msgstr "" +msgstr "RMLヘッダーの追加" #. module: base #: model:ir.module.module,description:base.module_l10n_tr @@ -14403,12 +14515,12 @@ msgstr "" #. module: base #: view:res.config:0 msgid "Apply" -msgstr "" +msgstr "適用" #. module: base #: field:res.request,trigger_date:0 msgid "Trigger Date" -msgstr "" +msgstr "トリガー日" #. module: base #: selection:base.language.install,lang:0 @@ -14418,7 +14530,7 @@ msgstr "クロアチア語 / hrvatski jezik" #. module: base #: sql_constraint:res.country:0 msgid "The code of the country must be unique !" -msgstr "" +msgstr "国のコードは固有でなければなりません。" #. module: base #: model:ir.module.module,description:base.module_web_kanban @@ -14427,40 +14539,43 @@ msgid "" " OpenERP Web kanban view.\n" " " msgstr "" +"\n" +" OpenERP Web かんばんビュー\n" +" " #. module: base #: model:ir.ui.menu,name:base.menu_project_management_time_tracking msgid "Time Tracking" -msgstr "" +msgstr "追跡時間" #. module: base #: view:res.partner.category:0 msgid "Partner Category" -msgstr "" +msgstr "取引先分類" #. module: base #: view:ir.actions.server:0 #: selection:ir.actions.server,state:0 msgid "Trigger" -msgstr "" +msgstr "トリガー" #. module: base #: model:ir.module.category,description:base.module_category_warehouse_management msgid "" "Helps you manage your inventory and main stock operations: delivery orders, " "receptions, etc." -msgstr "" +msgstr "在庫表と主な在庫操作の管理を手助けします:配達オーダー、受け取りなど" #. module: base #: model:ir.model,name:base.model_base_module_update msgid "Update Module" -msgstr "" +msgstr "モジュールの更新" #. module: base #: view:ir.model.fields:0 #: field:ir.model.fields,translate:0 msgid "Translate" -msgstr "" +msgstr "翻訳" #. module: base #: model:ir.module.module,description:base.module_users_ldap @@ -14558,23 +14673,23 @@ msgstr "" #. module: base #: field:res.request.history,body:0 msgid "Body" -msgstr "" +msgstr "本文" #. module: base #: code:addons/base/ir/ir_mail_server.py:199 #, python-format msgid "Connection test succeeded!" -msgstr "" +msgstr "接続テストが成功しました。" #. module: base #: view:partner.massmail.wizard:0 msgid "Send Email" -msgstr "" +msgstr "Eメール送信" #. module: base #: field:res.users,menu_id:0 msgid "Menu Action" -msgstr "" +msgstr "メニューアクション" #. module: base #: help:ir.model.fields,selection:0 @@ -14583,18 +14698,20 @@ msgid "" "defining a list of (key, label) pairs. For example: " "[('blue','Blue'),('yellow','Yellow')]" msgstr "" +"Python式として定義する(キー、ラベル)ペアのリストを指定された選択項目のためのオプションのリスト。例えば、[('blue','Blue'),('ye" +"llow','Yellow')]" #. module: base #: selection:base.language.export,state:0 msgid "choose" -msgstr "" +msgstr "選択" #. module: base #: help:ir.model,osv_memory:0 msgid "" "Indicates whether this object model lives in memory only, i.e. is not " "persisted (osv.osv_memory)" -msgstr "" +msgstr "このオブジェクトモデルがメモリ上に残っている、つまり、消えずに残っていないかどうか(osv.osv_memory)を示します。" #. module: base #: code:addons/base/ir/ir_mail_server.py:415 @@ -14602,12 +14719,12 @@ msgstr "" msgid "" "Please define at least one SMTP server, or provide the SMTP parameters " "explicitly." -msgstr "" +msgstr "少なくとも1つのSMTPサーバを定義して下さい。または、明示的にSMTPパラメータを提供して下さい。" #. module: base #: view:ir.attachment:0 msgid "Filter on my documents" -msgstr "" +msgstr "ドキュメント上のフィルタ" #. module: base #: help:ir.actions.server,code:0 @@ -14615,6 +14732,8 @@ msgid "" "Python code to be executed if condition is met.\n" "It is a Python block that can use the same values as for the condition field" msgstr "" +"条件が満たされた場合、Pythonコードが実行されます。\n" +"それは条件項目と同じ値を使うことができるPythonブロックです。" #. module: base #: model:ir.actions.act_window,name:base.action_partner_supplier_form @@ -14626,27 +14745,27 @@ msgstr "仕入先" #. module: base #: view:publisher_warranty.contract.wizard:0 msgid "Register" -msgstr "" +msgstr "登録" #. module: base #: field:res.request,ref_doc2:0 msgid "Document Ref 2" -msgstr "" +msgstr "ドキュメント参照2" #. module: base #: field:res.request,ref_doc1:0 msgid "Document Ref 1" -msgstr "" +msgstr "ドキュメント参照1" #. module: base #: model:res.country,name:base.ga msgid "Gabon" -msgstr "" +msgstr "ガボン" #. module: base #: model:res.groups,name:base.group_multi_company msgid "Multi Companies" -msgstr "" +msgstr "複数会社" #. module: base #: view:ir.model:0 @@ -14655,17 +14774,17 @@ msgstr "" #: model:res.groups,name:base.group_erp_manager #: view:res.users:0 msgid "Access Rights" -msgstr "" +msgstr "アクセス権" #. module: base #: model:res.country,name:base.gl msgid "Greenland" -msgstr "" +msgstr "グリーンランド" #. module: base #: model:res.groups,name:base.group_sale_salesman_all_leads msgid "User - All Leads" -msgstr "" +msgstr "ユーザ - 全てのリード" #. module: base #: field:res.partner.bank,acc_number:0 @@ -14682,7 +14801,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_th msgid "Thailand - Accounting" -msgstr "タイ-会計" +msgstr "タイ - 会計" #. module: base #: view:res.lang:0 @@ -15310,12 +15429,12 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_es msgid "Spanish - Accounting (PGCE 2008)" -msgstr "スペイン-会計(PGCE 2008)" +msgstr "スペイン - 会計(PGCE 2008)" #. module: base #: model:ir.module.module,shortdesc:base.module_stock_no_autopicking msgid "Picking Before Manufacturing" -msgstr "製造前のピッキング" +msgstr "製造前の集荷" #. module: base #: model:res.country,name:base.wf @@ -15405,7 +15524,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_nl msgid "Netherlands - Accounting" -msgstr "オランダ-会計" +msgstr "オランダ - 会計" #. module: base #: field:res.bank,bic:0 @@ -16115,7 +16234,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_de msgid "Deutschland - Accounting" -msgstr "ドイツ-会計" +msgstr "ドイツ - 会計" #. module: base #: model:ir.module.module,shortdesc:base.module_auction @@ -16369,7 +16488,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_fr msgid "France - Accounting" -msgstr "フランス-会計" +msgstr "フランス - 会計" #. module: base #: view:ir.actions.todo:0 @@ -16781,7 +16900,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_ca msgid "Canada - Accounting" -msgstr "カナダ-会計" +msgstr "カナダ - 会計" #. module: base #: model:ir.actions.act_window,name:base.act_ir_actions_todo_form @@ -16820,7 +16939,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_ve msgid "Venezuela - Accounting" -msgstr "ベネズエラ-会計" +msgstr "ベネズエラ - 会計" #. module: base #: model:res.country,name:base.cl @@ -17075,7 +17194,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_stock_invoice_directly msgid "Invoice Picking Directly" -msgstr "直接ピッキングの請求書" +msgstr "直接集荷の請求書" #. module: base #: selection:base.language.install,lang:0 diff --git a/openerp/addons/base/i18n/pt.po b/openerp/addons/base/i18n/pt.po index 7794f970f91..0b6117b26ff 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-02-08 00:44+0000\n" -"PO-Revision-Date: 2012-01-31 16:45+0000\n" -"Last-Translator: Antony Lesuisse (OpenERP) \n" +"PO-Revision-Date: 2012-04-03 15:31+0000\n" +"Last-Translator: tamnil \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-03-10 04:50+0000\n" -"X-Generator: Launchpad (build 14914)\n" +"X-Launchpad-Export-Date: 2012-04-04 04:40+0000\n" +"X-Generator: Launchpad (build 15055)\n" #. module: base #: model:res.country,name:base.sh @@ -171,12 +171,12 @@ msgstr "Janela alvo" #. module: base #: model:ir.module.module,shortdesc:base.module_sale_analytic_plans msgid "Sales Analytic Distribution" -msgstr "" +msgstr "Distribuição analítica de Vendas" #. module: base #: model:ir.module.module,shortdesc:base.module_web_process msgid "Process" -msgstr "" +msgstr "Processo" #. module: base #: model:ir.module.module,shortdesc:base.module_analytic_journal_billing_rate @@ -236,7 +236,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_mrp_subproduct msgid "MRP Subproducts" -msgstr "" +msgstr "Subprodutos MRP" #. module: base #: code:addons/base/module/module.py:390 @@ -269,7 +269,7 @@ msgstr "" #: model:ir.module.category,name:base.module_category_sales_management #: model:ir.module.module,shortdesc:base.module_sale msgid "Sales Management" -msgstr "" +msgstr "Gestão de Vendas" #. module: base #: view:res.partner:0 @@ -375,7 +375,7 @@ msgstr "" #. module: base #: view:ir.module.module:0 msgid "Extra" -msgstr "" +msgstr "Extra" #. module: base #: code:addons/orm.py:2526 @@ -576,7 +576,7 @@ msgstr "Spanish (VE) / Español (VE)" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_timesheet_invoice msgid "Invoice on Timesheets" -msgstr "" +msgstr "Factura de Horários" #. module: base #: view:base.module.upgrade:0 @@ -887,7 +887,7 @@ msgstr "" #. module: base #: view:res.users:0 msgid "Email Preferences" -msgstr "" +msgstr "Preferências de Email" #. module: base #: model:ir.module.module,description:base.module_audittrail @@ -1070,7 +1070,7 @@ msgstr "Tipo" #. module: base #: field:ir.mail_server,smtp_user:0 msgid "Username" -msgstr "" +msgstr "Nome de utilizador" #. module: base #: code:addons/orm.py:398 @@ -1243,7 +1243,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_web_tests msgid "Tests" -msgstr "" +msgstr "Testes" #. module: base #: field:ir.ui.view_sc,res_id:0 @@ -1916,7 +1916,7 @@ msgstr "" #: code:addons/base/res/res_users.py:420 #, python-format msgid "%s (copy)" -msgstr "" +msgstr "%s (cópia)" #. module: base #: model:ir.module.module,shortdesc:base.module_account_chart @@ -2494,7 +2494,7 @@ msgstr "Nome do atalho" #. module: base #: help:ir.actions.act_window,limit:0 msgid "Default limit for the list view" -msgstr "Limite por defeito para a vista de lista" +msgstr "Limite por omissão para a vista de lista" #. module: base #: model:res.country,name:base.pg @@ -10604,7 +10604,7 @@ msgstr "Exemplos" #: field:ir.default,value:0 #: view:ir.values:0 msgid "Default Value" -msgstr "Valor por defeito" +msgstr "Valor por Omissão" #. module: base #: model:ir.model,name:base.model_res_country_state @@ -11448,7 +11448,7 @@ msgstr "" #: selection:ir.values,key:0 #: selection:res.partner.address,type:0 msgid "Default" -msgstr "Por defeito" +msgstr "Por omissão" #. module: base #: view:partner.wizard.ean.check:0 diff --git a/openerp/addons/base/ir/__init__.py b/openerp/addons/base/ir/__init__.py index 4a6bd3c614c..a2a4b999ed8 100644 --- a/openerp/addons/base/ir/__init__.py +++ b/openerp/addons/base/ir/__init__.py @@ -21,6 +21,7 @@ import ir_model import ir_sequence +import ir_needaction import ir_ui_menu import ir_ui_view import ir_default diff --git a/openerp/addons/base/ir/ir.xml b/openerp/addons/base/ir/ir.xml index 6a845b35602..877de335dcc 100644 --- a/openerp/addons/base/ir/ir.xml +++ b/openerp/addons/base/ir/ir.xml @@ -661,6 +661,30 @@ + + + ir.needaction_users.tree + ir.needaction_users + tree + 10 + + + + + + + + + + + Need action relationships + ir.needaction_users + form + tree,form + + + + ) +# +# 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 +# +############################################################################## + +import openerp.pooler as pooler +from operator import itemgetter +from osv import osv, fields +from tools.translate import _ + +class ir_needaction_users(osv.osv): + ''' + ir_needaction_users holds data related to the needaction + mechanism inside OpenERP. A needaction is characterized by: + - res_model: model of the record requiring an action + - res_id: ID of the record requiring an action + - user_id: foreign key to the res.users table, to the user that + has to perform the action + ''' + + _name = 'ir.needaction_users' + _description = 'Needaction relationship table' + _rec_name = 'id' + _order = 'id desc' + _columns = { + 'res_model': fields.char('Related Document Model', size=128, + select=1, required=True), + 'res_id': fields.integer('Related Document ID', + select=1, required=True), + 'user_id': fields.many2one('res.users', string='Related User', + ondelete='cascade', select=1, required=True), + } + + def _get_users(self, cr, uid, res_ids, res_model, context=None): + """Given res_ids of res_model, get user_ids present in table""" + if context is None: + context = {} + needact_ids = self.search(cr, uid, [('res_model', '=', res_model), ('res_id', 'in', res_ids)], context=context) + return map(itemgetter('res_id'), self.read(cr, uid, needact_ids, context=context)) + + def create_users(self, cr, uid, res_ids, res_model, user_ids, context=None): + """Given res_ids of res_model, add user_ids to the relationship table""" + if context is None: + context = {} + for res_id in res_ids: + for user_id in user_ids: + self.create(cr, uid, {'res_model': res_model, 'res_id': res_id, 'user_id': user_id}, context=context) + return True + + def unlink_users(self, cr, uid, res_ids, res_model, context=None): + """Given res_ids of res_model, delete all entries in the relationship table""" + if context is None: + context = {} + to_del_ids = self.search(cr, uid, [('res_model', '=', res_model), ('res_id', 'in', res_ids)], context=context) + return self.unlink(cr, uid, to_del_ids, context=context) + + def update_users(self, cr, uid, res_ids, res_model, user_ids, context=None): + """Given res_ids of res_model, update their entries in the relationship table to user_ids""" + # read current records + cur_users = self._get_users(cr, uid, res_ids, res_model, context=context) + if len(cur_users) == len(user_ids) and all([cur_user in user_ids for cur_user in cur_users]): + return True + # unlink old records + self.unlink_users(cr, uid, res_ids, res_model, context=context) + # link new records + self.create_users(cr, uid, res_ids, res_model, user_ids, context=context) + return True + + +class ir_needaction_mixin(osv.osv): + '''Mixin class for objects using the need action feature. + + Need action feature can be used by objects willing to be able to + signal that an action is required on a particular record. If in the + business logic an action must be performed by somebody, for instance + validation by a manager, this mechanism allows to set a list of + users asked to perform an action. + + This class wraps a class (ir.needaction_users) that behaves + like a many2many field. However, no field is added to the model + inheriting from base.needaction. The mixin class manages the low-level + considerations of updating relationships. Every change made on the + record calls a method that updates the relationships. + + Objects using the need_action feature should override the + ``get_needaction_user_ids`` method. This methods returns a dictionary + whose keys are record ids, and values a list of user ids, like + in a many2many relationship. Therefore by defining only one method, + you can specify if an action is required by defining the users + that have to do it, in every possible situation. + + This class also offers several global services,: + - ``needaction_get_record_ids``: for the current model and uid, get + all record ids that ask this user to perform an action. This + mechanism is used for instance to display the number of pending + actions in menus, such as Leads (12) + - ``needaction_get_action_count``: as ``needaction_get_record_ids`` + but returns only the number of action, not the ids (performs a + search with count=True) + - ``needaction_get_user_record_references``: for a given uid, get all + the records that ask this user to perform an action. Records + are given as references, a list of tuples (model_name, record_id) + ''' + _name = 'ir.needaction_mixin' + _description = 'Need action of users on records API' + + #------------------------------------------------------ + # Addon API + #------------------------------------------------------ + + def get_needaction_user_ids(self, cr, uid, ids, context=None): + """ Returns the user_ids that have to perform an action + :return: dict { record_id: [user_ids], } + """ + return dict.fromkeys(ids, []) + + def create(self, cr, uid, values, context=None): + if context is None: + context = {} + needact_table_obj = self.pool.get('ir.needaction_users') + # perform create + obj_id = super(ir_needaction_mixin, self).create(cr, uid, values, context=context) + # link user_ids + needaction_user_ids = self.get_needaction_user_ids(cr, uid, [obj_id], context=context) + needact_table_obj.create_users(cr, uid, [obj_id], self._name, needaction_user_ids[obj_id], context=context) + return obj_id + + def write(self, cr, uid, ids, values, context=None): + if context is None: + context = {} + needact_table_obj = self.pool.get('ir.needaction_users') + # perform write + write_res = super(ir_needaction_mixin, self).write(cr, uid, ids, values, context=context) + # get and update user_ids + needaction_user_ids = self.get_needaction_user_ids(cr, uid, ids, context=context) + for id in ids: + needact_table_obj.update_users(cr, uid, [id], self._name, needaction_user_ids[id], context=context) + return write_res + + def unlink(self, cr, uid, ids, context=None): + if context is None: + context = {} + # unlink user_ids + needact_table_obj = self.pool.get('ir.needaction_users') + needact_table_obj.unlink_users(cr, uid, ids, self._name, context=context) + # perform unlink + return super(ir_needaction_mixin, self).unlink(cr, uid, ids, context=context) + + #------------------------------------------------------ + # Need action API + #------------------------------------------------------ + + def needaction_get_record_ids(self, cr, uid, user_id, limit=80, context=None): + """Given the current model and a user_id + get the number of actions it has to perform""" + if context is None: + context = {} + needact_table_obj = self.pool.get('ir.needaction_users') + needact_table_ids = needact_table_obj.search(cr, uid, [('res_model', '=', self._name), ('user_id', '=', user_id)], limit=limit, context=context) + return map(itemgetter('res_id'), needact_table_obj.read(cr, uid, needact_table_ids, context=context)) + + def needaction_get_action_count(self, cr, uid, user_id, limit=80, context=None): + """Given the current model and a user_id + get the number of actions it has to perform""" + if context is None: + context = {} + needact_table_obj = self.pool.get('ir.needaction_users') + return needact_table_obj.search(cr, uid, [('res_model', '=', self._name), ('user_id', '=', user_id)], limit=limit, count=True, context=context) + + def needaction_get_record_references(self, cr, uid, user_id, offset=None, limit=None, order=None, context=None): + """For a given user_id, get all the records that asks this user to + perform an action. Records are given as references, a list of + tuples (model_name, record_id). + This method is trans-model.""" + if context is None: + context = {} + needact_table_obj = self.pool.get('ir.needaction_users') + needact_table_ids = needact_table_obj.search(cr, uid, [('user_id', '=', user_id)], offset=offset, limit=limit, order=order, context=context) + needact_records = needact_table_obj.read(cr, uid, needact_table_ids, context=context) + return map(itemgetter('res_model', 'id'), needact_records) + +# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/addons/base/ir/ir_ui_menu.py b/openerp/addons/base/ir/ir_ui_menu.py index fb346c06ae4..f992e06b37f 100644 --- a/openerp/addons/base/ir/ir_ui_menu.py +++ b/openerp/addons/base/ir/ir_ui_menu.py @@ -255,6 +255,21 @@ class ir_ui_menu(osv.osv): return res + def _get_needaction(self, cr, uid, ids, field_names, args, context=None): + if context is None: + context = {} + res = dict.fromkeys(ids) + for menu in self.browse(cr, uid, ids, context=context): + res[menu.id] = {} + if menu.action and menu.action.type == 'ir.actions.act_window' and menu.action.res_model: + menu_needaction_res = self.pool.get(menu.action.res_model).get_needaction_info(cr, uid, uid, domain=menu.action.domain, context=context) + else: + menu_needaction_res = [False, 0, ()] + res[menu.id]['needaction_enabled'] = menu_needaction_res[0] + res[menu.id]['needaction_counter'] = menu_needaction_res[1] + res[menu.id]['needaction_record_ids'] = menu_needaction_res[2] + return res + _columns = { 'name': fields.char('Menu', size=64, required=True, translate=True), 'sequence': fields.integer('Sequence'), @@ -271,6 +286,9 @@ class ir_ui_menu(osv.osv): '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'), + 'needaction_record_ids': fields.function(_get_needaction, string='Ids of records requesting an action from the user', type='many2many', help='If the target model uses the need action mechanism, this field holds the ids of the record requesting the user to perform an action.', multi='_get_needaction'), 'action': fields.function(_action, fnct_inv=_action_inv, type='reference', string='Action', selection=[ diff --git a/openerp/addons/base/security/ir.model.access.csv b/openerp/addons/base/security/ir.model.access.csv index 5140ac1b144..08410cc6357 100644 --- a/openerp/addons/base/security/ir.model.access.csv +++ b/openerp/addons/base/security/ir.model.access.csv @@ -122,3 +122,4 @@ "access_ir_mail_server_all","ir_mail_server","model_ir_mail_server",,1,0,0,0 "access_ir_actions_todo_category","ir_actions_todo_category","model_ir_actions_todo_category","group_system",1,1,1,1 "access_ir_actions_client","ir_actions_client all","model_ir_actions_client",,1,0,0,0 +"access_ir_needaction_users","ir_needaction_users","model_ir_needaction_users",,1,1,1,1 diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index 0a9ee57b621..81fc9b81976 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -720,7 +720,7 @@ class BaseModel(object): }, context=context ) - + def view_init(self, cr, uid, fields_list, context=None): """Override this method to do specific things when a view on the object is opened.""" pass @@ -4875,7 +4875,35 @@ class BaseModel(object): # backwards compatibility get_xml_id = get_external_id _get_xml_ids = _get_external_ids - + + def get_needaction_info(self, cr, uid, user_id, limit=None, order=None, domain=False, context=None): + """Base method for needaction mechanism + - see ir.needaction for actual implementation + - if the model uses the need action mechanism + (hasattr(model_obj, 'needaction_get_record_ids')): + - get the record ids on which the user has actions to perform + - evaluate the menu domain + - compose a new domain: menu domain, limited to ids of + records requesting an action + - count the number of records maching that domain, that + is the number of actions the user has to perform + - this method returns default values + :param: model_name: the name of the model (ex: hr.holidays) + :param: user_id: the id of user + :return: [uses_needaction=True/False, needaction_uid_ctr=%d] + """ + if hasattr(self, 'needaction_get_record_ids'): + ids = self.needaction_get_record_ids(cr, uid, user_id, limit=8192, context=context) + if not ids: + return (True, 0, []) + if domain: + new_domain = eval(domain) + [('id', 'in', ids)] + else: + new_domain = [('id', 'in', ids)] + return (True, self.search(cr, uid, new_domain, limit=limit, order=order, count=True, context=context), ids) + else: + return (False, 0, []) + # Transience def is_transient(self): """ Return whether the model is transient.