From e9f4fc98cc98dab4ca1fdab2f6d9697485934beb Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 3 Apr 2012 16:15:53 +0200 Subject: [PATCH 01/49] [ADD] display unhelpful message when a list view search yields no result bzr revid: xmo@openerp.com-20120403141553-hrv006vdkv70zyfu --- addons/web/static/src/css/base.css | 9 +++++++++ addons/web/static/src/css/base.sass | 14 ++++++++++++++ addons/web/static/src/img/empty-list-arrow.png | Bin 0 -> 2308 bytes addons/web/static/src/js/view_list.js | 15 +++++++++++++++ 4 files changed, 38 insertions(+) create mode 100644 addons/web/static/src/img/empty-list-arrow.png diff --git a/addons/web/static/src/css/base.css b/addons/web/static/src/css/base.css index b0a2b7945b9..d4a1d743d35 100644 --- a/addons/web/static/src/css/base.css +++ b/addons/web/static/src/css/base.css @@ -344,3 +344,12 @@ -webkit-box-shadow: none; -box-shadow: none; } +.openerp2 .oe-listview .oe_listview_nocontent > img { + float: left; + margin-right: 1.5em; +} +.openerp2 .oe-listview .oe_listview_nocontent > div { + overflow: hidden; + font-size: 150%; + width: 60ex; +} diff --git a/addons/web/static/src/css/base.sass b/addons/web/static/src/css/base.sass index c31f501c499..ecc45f5f538 100644 --- a/addons/web/static/src/css/base.sass +++ b/addons/web/static/src/css/base.sass @@ -337,6 +337,20 @@ $colour4: #8a89ba @include box-shadow(none) // }}} + + // ListView {{{ + .oe-listview + .oe_listview_nocontent + > img + float: left + margin-right: 1.5em + > div + // don't encroach on my arrow + overflow: hidden + font-size: 150% + width: 60ex + // }}} + .openerp // Transitional overrides for old styles {{{ // }}} diff --git a/addons/web/static/src/img/empty-list-arrow.png b/addons/web/static/src/img/empty-list-arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..b0b1372adfd3fc393ecc1dac3934c423822970cd GIT binary patch literal 2308 zcmV+f3H$bmP)X)YT08QE{zMm=*yzjy#>qO{b%( zI}c{Mx03c9H98A){3#yqKb--N032OnY{IHxe`j=U0dQ71X*fr_-rMdfhO?Be=W<_8 zj{qD+a-Q}nrt_NceY#zQ=DCovmL8(x;bg|Xh=WW7;Q#!dE6lRP7`PA`cgO>*0&zVl zW>;>57TRm70J;%?W6+jWT|J)*-v@DPq@u$gCQSQwHuVTV9}uaueWRY;EWlDthqccq zRtZs=&cEQ#VimEr2atn@VpxUD3W~h!`$m-_`A0=}o?^e*)&Md9s%|~v(U#IU;EAZL zX9cbK)i4Im3^T0>O!E>6djCen5f$R7~r| zu;s~((H7HQoPiGm0Mg*G8K^Fz{hq2?ms8*% z%^*ilIV?CJj@#Tc{%#aN;(JUPmYaT(pSG^!dl39mAj+ zAHlTx(Q*3(n%EEd80VWP8sl0cAnt>FPbnRKXBP^yBiOJ4zH_629t%h1&;d9RC$4GM zdBg{~8Y9C2sTIKPVw}`5{5+5}l7*dnGCed$7C>?f=-yFDYc6XUgGT4A&IJQ$V=gxa zE&~`xBsH*%sRiRSt%+bfTuE+Y7ES8wP@^LOD%{2&qG@l3Jp?zkm(G~ z4z>b-Y+dY5;=P4aA1u@VaLXjcPfkd_^Lg!lAy6#wj$jU&!>t_PGZeN3SZKfv< zxWLjR0IdZSO$8Y8JrUBvJm1U|6%t}}54F)>(e3N8rXGlJFN$ejS<4cF9W3wLb27AO zuVhBTQW9=Jcb=<)*mrVsG|d&7=GSs=*8;dFsFX%U4zeh32#T6$Hv|u0tri+~mza~$ zrTic-)TM~7r0jY0ozxo%!Zb0HEqq#Sg@*_{Qpx+V=J)aYzf;4^OA5GcTc-6aH>_Km z4`9l^4;mz^fh;As0y5=4*lg&=Y2g!1G5s1gT4s|<4V?>D^Dx%Ain1V@?;+p-6m!|4 z&lQP*P^{%{zSpLW`1T@NRSOGS0s#>u`!GGQ1GJ#3Hpa63|i!0A-$!bCx2rXs~bW2oOmls+(bVccccdm}nF1 z9c}PpH8Zr3m;p8FA^T`Uur6Vq9_cTQ1{#a^|4aA`k^CHgzbuWJR0E1TYitJcVwLGT z;8(>BBi&n#K=qiCw&!W-!J9NQe;fXO02S@$DIdqbUx&|q3pot46o65R>CI%5TPW56 zjRoL3;`2O)>`5R*x_%SNv_FJ-@Pge&g*Sx2U=2c)6y^t@s5?jzQ(Ob(z_q*pU(p$` z$+#1Tp6#RWCcpQB->*ufa&oybk>UURh*Jq_0Ezq1zGqM>Y--%6_DoaeH!B1lHlEIZ zLz`i~@1A1v#RU1xWTntTrZlZBMKamypu9DtiCD#Dj*7%;`zFRa5b;^r_d&oe>c63#sisT!WhY_tYNHW)WAYO5cw(<3g|5%FjIxduIUVGc-3yU9m*M zo;{XZ@Kvj0ZT0#)3Fj^}i~yq}Z9w$?z%jsNVUy$*XY>Nb=mm_CL;ywrMgT?tMiK!S e0T=;z9LPV+S$p2eoZCSF0000') + .append($('', { + src: '/web/static/src/img/empty-list-arrow.png', + alt: _t("This list is empty")})) + .append($('
').html(help))); } }); openerp.web.ListView.List = openerp.web.Class.extend( /** @lends openerp.web.ListView.List# */{ @@ -1344,6 +1356,9 @@ openerp.web.ListView.Groups = openerp.web.Class.extend( /** @lends openerp.web.L self.records.add(records, {silent: true}); list.render(); d.resolve(list); + if (_.isEmpty(records)) { + view.no_result(); + } });}); return d.promise(); }, From da864266c0c374abecad3295f74a57b0d7a394b8 Mon Sep 17 00:00:00 2001 From: Xavier Morel Date: Tue, 3 Apr 2012 16:17:26 +0200 Subject: [PATCH 02/49] [FIX] o2m/m2m lists: only display help when there's help on the action... or an action at all bzr revid: xmo@openerp.com-20120403141726-a6o4sfvifzzjy9r4 --- addons/web/static/src/js/view_list.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/addons/web/static/src/js/view_list.js b/addons/web/static/src/js/view_list.js index c9a65ac6c4b..85943732c68 100644 --- a/addons/web/static/src/js/view_list.js +++ b/addons/web/static/src/js/view_list.js @@ -749,8 +749,9 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView# } }, no_result: function () { - var help = this.options.action.help; - if (this.groups.group_by || !help) { + if (this.groups.group_by + || !this.options.action + || !this.options.action.help) { return; } this.$element.children('table').replaceWith( @@ -758,7 +759,7 @@ openerp.web.ListView = openerp.web.View.extend( /** @lends openerp.web.ListView# .append($('', { src: '/web/static/src/img/empty-list-arrow.png', alt: _t("This list is empty")})) - .append($('
').html(help))); + .append($('
').html(this.options.action.help))); } }); openerp.web.ListView.List = openerp.web.Class.extend( /** @lends openerp.web.ListView.List# */{ From 79c1e97479535e794f3a298a625b6dd18f5544bd Mon Sep 17 00:00:00 2001 From: Launchpad Translations on behalf of openerp <> Date: Wed, 18 Apr 2012 04:57:43 +0000 Subject: [PATCH 03/49] Launchpad automatic translations update. bzr revid: launchpad_translations_on_behalf_of_openerp-20120418044206-a2vk0nr789l7d42j bzr revid: launchpad_translations_on_behalf_of_openerp-20120418045743-hzbql3f1knlrc5yh --- addons/account/i18n/ja.po | 181 +-- .../i18n/gu.po | 374 ++++++ .../i18n/ja.po | 6 +- addons/account_budget/i18n/sr@latin.po | 10 +- addons/crm/i18n/ja.po | 4 +- addons/hr/i18n/ja.po | 24 +- addons/hr_holidays/i18n/ja.po | 844 ++++++++++++ addons/hr_payroll/i18n/ja.po | 12 +- addons/hr_payroll_account/i18n/ja.po | 10 +- addons/hr_recruitment/i18n/ja.po | 14 +- addons/hr_timesheet/i18n/ja.po | 20 +- addons/hr_timesheet_invoice/i18n/ja.po | 1147 +++++++++++++++++ addons/hr_timesheet_sheet/i18n/ja.po | 1042 +++++++++++++++ addons/html_view/i18n/ja.po | 49 + addons/import_sugarcrm/i18n/fr.po | 404 ++++++ addons/web_dashboard/i18n/sv.po | 112 ++ addons/web_diagram/i18n/sv.po | 57 + addons/web_graph/i18n/sv.po | 23 + addons/web_kanban/i18n/sv.po | 55 + addons/web_mobile/i18n/sv.po | 106 ++ addons/web_process/i18n/bs.po | 118 ++ addons/web_process/i18n/sv.po | 118 ++ 22 files changed, 4597 insertions(+), 133 deletions(-) create mode 100644 addons/account_bank_statement_extensions/i18n/gu.po create mode 100644 addons/hr_holidays/i18n/ja.po create mode 100644 addons/hr_timesheet_invoice/i18n/ja.po create mode 100644 addons/hr_timesheet_sheet/i18n/ja.po create mode 100644 addons/html_view/i18n/ja.po create mode 100644 addons/import_sugarcrm/i18n/fr.po create mode 100644 addons/web_dashboard/i18n/sv.po create mode 100644 addons/web_diagram/i18n/sv.po create mode 100644 addons/web_graph/i18n/sv.po create mode 100644 addons/web_kanban/i18n/sv.po create mode 100644 addons/web_mobile/i18n/sv.po create mode 100644 addons/web_process/i18n/bs.po create mode 100644 addons/web_process/i18n/sv.po diff --git a/addons/account/i18n/ja.po b/addons/account/i18n/ja.po index 781f574222c..cdebfa4c93d 100644 --- a/addons/account/i18n/ja.po +++ b/addons/account/i18n/ja.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-02-08 00:35+0000\n" -"PO-Revision-Date: 2012-04-17 04:15+0000\n" +"PO-Revision-Date: 2012-04-17 21:27+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-17 04:51+0000\n" -"X-Generator: Launchpad (build 15099)\n" +"X-Launchpad-Export-Date: 2012-04-18 04:41+0000\n" +"X-Generator: Launchpad (build 15108)\n" #. module: account #: view:account.invoice.report:0 @@ -43,7 +43,7 @@ msgstr "会計 \\ レポート \\ 一般的なレポート \\ 税金 \\ 税金 #. module: account #: view:account.move.reconcile:0 msgid "Journal Entry Reconcile" -msgstr "仕訳帳入力の調整" +msgstr "仕訳帳エントリーの照合" #. module: account #: view:account.account:0 @@ -109,7 +109,7 @@ msgstr "借方合計" msgid "" "If you unreconciliate transactions, you must also verify all the actions " "that are linked to those transactions because they will not be disabled" -msgstr "取引を調整しない場合、それらが無効にされないためには、それら取引にリンクされた全てのアクションを検証しなければなりません。" +msgstr "取引を照合しない場合、それらが無効にされないためには、それら取引にリンクされた全てのアクションを検証しなければなりません。" #. module: account #: constraint:account.journal:0 @@ -131,7 +131,7 @@ msgstr "起点" #: view:account.move.line.reconcile:0 #: view:account.move.line.reconcile.writeoff:0 msgid "Reconcile" -msgstr "調整" +msgstr "照合" #. module: account #: field:account.bank.statement.line,ref:0 @@ -146,7 +146,7 @@ msgstr "参照" #. module: account #: view:account.open.closed.fiscalyear:0 msgid "Choose Fiscal Year " -msgstr "年度の選択 " +msgstr "会計年度の選択 " #. module: account #: help:account.payment.term,active:0 @@ -218,7 +218,7 @@ msgstr "" #. module: account #: model:ir.model,name:account.model_account_move_line_reconcile_select msgid "Move line reconcile select" -msgstr "調整のため選択する行の移動" +msgstr "照合選択行の移動" #. module: account #: help:account.tax.code,notprintable:0 @@ -237,7 +237,7 @@ msgstr "請求書 %s は部分的に支払われます:%s%s / %s%s(%s%s 残 #. module: account #: model:process.transition,note:account.process_transition_supplierentriesreconcile0 msgid "Accounting entries are an input of the reconciliation." -msgstr "会計エントリーは調整の入力です。" +msgstr "会計エントリーは照合の入力です。" #. module: account #: model:ir.ui.menu,name:account.menu_finance_management_belgian_reports @@ -263,29 +263,29 @@ msgstr "" #. module: account #: report:account.overdue:0 msgid "Sub-Total :" -msgstr "" +msgstr "小計:" #. module: account #: model:ir.actions.act_window,name:account.action_account_use_model_create_entry #: model:ir.actions.act_window,name:account.action_view_account_use_model #: model:ir.ui.menu,name:account.menu_action_manual_recurring msgid "Manual Recurring" -msgstr "" +msgstr "手動の自動継続" #. module: account #: view:account.fiscalyear.close.state:0 msgid "Close Fiscalyear" -msgstr "" +msgstr "年度を閉じる" #. module: account #: field:account.automatic.reconcile,allow_write_off:0 msgid "Allow write off" -msgstr "" +msgstr "帳消しの許可" #. module: account #: view:account.analytic.chart:0 msgid "Select the Period for Analysis" -msgstr "" +msgstr "分析期間の選択" #. module: account #: view:account.move.line:0 @@ -296,19 +296,19 @@ msgstr "" #: code:addons/account/account_invoice.py:551 #, python-format msgid "Invoice line account company does not match with invoice company." -msgstr "" +msgstr "請求書行のアカウントの会社が請求書の会社と一致しません。" #. module: account #: field:account.journal.column,field:0 msgid "Field Name" -msgstr "" +msgstr "項目名" #. module: account #: help:account.installer,charts:0 msgid "" "Installs localized accounting charts to match as closely as possible the " "accounting needs of your company based on your country." -msgstr "" +msgstr "あなたの国に基づき、あなたの会社の会計ニーズに可能な限り近くマッチする、ローカル化会計表をインストールします。" #. module: account #: code:addons/account/wizard/account_move_journal.py:63 @@ -319,17 +319,21 @@ msgid "" "You can create one in the menu: \n" "Configuration/Financial Accounting/Accounts/Journals." msgstr "" +"この会社のために %s タイプのどんな会計仕訳帳も見つけることができません。\n" +"\n" +"メニューからそれを作成することができます: \n" +"設定 / 金融会計 / アカウント / 仕訳帳" #. module: account #: model:ir.model,name:account.model_account_unreconcile msgid "Account Unreconcile" -msgstr "" +msgstr "照合なしアカウント" #. module: account #: view:product.product:0 #: view:product.template:0 msgid "Purchase Properties" -msgstr "" +msgstr "購入属性" #. module: account #: help:account.financial.report,style_overwrite:0 @@ -338,11 +342,13 @@ msgid "" "leave the automatic formatting, it will be computed based on the financial " "reports hierarchy (auto-computed field 'level')." msgstr "" +"このレコードを表示させるための好みのフォーマットをここで設定できます。自動フォーマッティングを残す場合は、それは財務レポートの階層(自動計算項目\"レベル" +"\")に基づき計算されます。" #. module: account #: view:account.installer:0 msgid "Configure" -msgstr "" +msgstr "設定" #. module: account #: selection:account.entries.report,month:0 @@ -351,7 +357,7 @@ msgstr "" #: selection:report.account.sales,month:0 #: selection:report.account_type.sales,month:0 msgid "June" -msgstr "" +msgstr "6月" #. module: account #: model:ir.actions.act_window,help:account.action_account_moves_bank @@ -360,11 +366,13 @@ msgid "" "OpenERP. Journal items are created by OpenERP if you use Bank Statements, " "Cash Registers, or Customer/Supplier payments." msgstr "" +"このビューはOpenERPの大量のエントリーを記録するために会計士によって利用されます。銀行明細書、キャッシュレジスター、または顧客 / " +"仕入先支払いを利用する場合、仕訳帳項目はOpenERPによって作成されます。" #. module: account #: constraint:account.move.line:0 msgid "You can not create journal items on an account of type view." -msgstr "" +msgstr "ビュータイプのアカウントでは仕訳項目を作ることはできません。" #. module: account #: model:ir.model,name:account.model_account_tax_template @@ -380,49 +388,49 @@ msgstr "" #: field:account.move.line,date_created:0 #: field:account.move.reconcile,create_date:0 msgid "Creation date" -msgstr "" +msgstr "作成日" #. module: account #: selection:account.journal,type:0 msgid "Purchase Refund" -msgstr "" +msgstr "購入の払い戻し" #. module: account #: selection:account.journal,type:0 msgid "Opening/Closing Situation" -msgstr "" +msgstr "事態 開く / 閉じる" #. module: account #: help:account.journal,currency:0 msgid "The currency used to enter statement" -msgstr "" +msgstr "明細入力に使用される通貨" #. module: account #: field:account.open.closed.fiscalyear,fyear_id:0 msgid "Fiscal Year to Open" -msgstr "" +msgstr "会計年度を開く" #. module: account #: help:account.journal,sequence_id:0 msgid "" "This field contains the informatin related to the numbering of the journal " "entries of this journal." -msgstr "" +msgstr "この項目にはこの仕訳帳の仕訳エントリーのナンバリングに冠する情報が含まれています。" #. module: account #: field:account.journal,default_debit_account_id:0 msgid "Default Debit Account" -msgstr "" +msgstr "デフォルト借方アカウント" #. module: account #: view:account.move:0 msgid "Total Credit" -msgstr "" +msgstr "貸方合計" #. module: account #: view:account.move.line.unreconcile.select:0 msgid "Open For Unreconciliation" -msgstr "" +msgstr "照合なしのために開く" #. module: account #: field:account.account.template,chart_template_id:0 @@ -430,17 +438,17 @@ msgstr "" #: field:account.tax.template,chart_template_id:0 #: field:wizard.multi.charts.accounts,chart_template_id:0 msgid "Chart Template" -msgstr "" +msgstr "チャートテンプレート" #. module: account #: help:account.model.line,amount_currency:0 msgid "The amount expressed in an optional other currency." -msgstr "" +msgstr "オプションの他の通貨で表現された金額" #. module: account #: field:accounting.report,enable_filter:0 msgid "Enable Comparison" -msgstr "" +msgstr "比較を可能化" #. module: account #: help:account.journal.period,state:0 @@ -449,6 +457,7 @@ msgid "" "it comes to 'Printed' state. When all transactions are done, it comes in " "'Done' state." msgstr "" +"仕訳帳期間が作成される場合、その状態はドラフトです。レポートが印刷された場合は、印刷済み状態になります。全ての取引が終了すると完了状態となります。" #. module: account #: model:ir.actions.act_window,help:account.action_account_tax_chart @@ -458,6 +467,8 @@ msgid "" "amount of each area of the tax declaration for your country. It’s presented " "in a hierarchical structure, which can be modified to fit your needs." msgstr "" +"税金のチャートは税金の事実(または税金コード)の構造を反映したツリービューで、現在の税金の状況を示します。税金チャートはあなたの国の税金申告の各領域の金額" +"を表します。それはあなたのニーズに合わせて変更できる階層的な構造で表示されます。" #. module: account #: view:account.analytic.line:0 @@ -487,22 +498,22 @@ msgstr "" #: model:ir.model,name:account.model_account_journal #: field:validate.account.move,journal_id:0 msgid "Journal" -msgstr "" +msgstr "仕訳帳" #. module: account #: model:ir.model,name:account.model_account_invoice_confirm msgid "Confirm the selected invoices" -msgstr "" +msgstr "選択した請求集書を確認" #. module: account #: field:account.addtmpl.wizard,cparent_id:0 msgid "Parent target" -msgstr "" +msgstr "親ターゲット" #. module: account #: field:account.bank.statement,account_id:0 msgid "Account used in this journal" -msgstr "" +msgstr "この仕訳帳で使用されるアカウント" #. module: account #: help:account.aged.trial.balance,chart_account_id:0 @@ -520,17 +531,17 @@ msgstr "" #: help:account.vat.declaration,chart_account_id:0 #: help:accounting.report,chart_account_id:0 msgid "Select Charts of Accounts" -msgstr "" +msgstr "勘定科目表の選択" #. module: account #: sql_constraint:res.company:0 msgid "The company name must be unique !" -msgstr "" +msgstr "会社名は固有でなければいけません。" #. module: account #: model:ir.model,name:account.model_account_invoice_refund msgid "Invoice Refund" -msgstr "" +msgstr "請求書払い戻し" #. module: account #: report:account.overdue:0 @@ -540,31 +551,31 @@ msgstr "" #. module: account #: field:account.automatic.reconcile,unreconciled:0 msgid "Not reconciled transactions" -msgstr "" +msgstr "照合なし取引" #. module: account #: report:account.general.ledger:0 #: report:account.general.ledger_landscape:0 msgid "Counterpart" -msgstr "" +msgstr "相手方" #. module: account #: view:account.fiscal.position:0 #: field:account.fiscal.position,tax_ids:0 #: field:account.fiscal.position.template,tax_ids:0 msgid "Tax Mapping" -msgstr "" +msgstr "税金のマッピング" #. module: account #: model:ir.actions.act_window,name:account.action_account_fiscalyear_close_state #: model:ir.ui.menu,name:account.menu_wizard_fy_close_state msgid "Close a Fiscal Year" -msgstr "" +msgstr "会計年度を閉じる" #. module: account #: model:process.transition,note:account.process_transition_confirmstatementfromdraft0 msgid "The accountant confirms the statement." -msgstr "" +msgstr "会計士は明細書を確認します。" #. module: account #: selection:account.balance.report,display_account:0 @@ -573,45 +584,45 @@ msgstr "" #: selection:account.tax,type_tax_use:0 #: selection:account.tax.template,type_tax_use:0 msgid "All" -msgstr "" +msgstr "全て" #. module: account #: field:account.invoice.report,address_invoice_id:0 msgid "Invoice Address Name" -msgstr "" +msgstr "請求書住所の名前" #. module: account #: selection:account.installer,period:0 msgid "3 Monthly" -msgstr "" +msgstr "3ヶ月毎" #. module: account #: view:account.unreconcile.reconcile:0 msgid "" "If you unreconciliate transactions, you must also verify all the actions " "that are linked to those transactions because they will not be disable" -msgstr "" +msgstr "取引を照合しない場合、それらが無効にされないためにそれらの取引にリンクされる全てのアクションを検査しなければなりません。" #. module: account #: view:analytic.entries.report:0 msgid " 30 Days " -msgstr "" +msgstr " 30日 " #. module: account #: field:ir.sequence,fiscal_ids:0 msgid "Sequences" -msgstr "" +msgstr "順序" #. module: account #: field:account.financial.report,account_report_id:0 #: selection:account.financial.report,type:0 msgid "Report Value" -msgstr "" +msgstr "レポート値" #. module: account #: view:account.fiscal.position.template:0 msgid "Taxes Mapping" -msgstr "" +msgstr "税金マッピング" #. module: account #: report:account.central.journal:0 @@ -621,18 +632,18 @@ msgstr "" #. module: account #: sql_constraint:account.sequence.fiscalyear:0 msgid "Main Sequence must be different from current !" -msgstr "" +msgstr "主となる順序は現在と異なる必要があります。" #. module: account #: code:addons/account/account_move_line.py:1251 #, python-format msgid "No period found or more than one period found for the given date." -msgstr "" +msgstr "所定の日付のために期間が見つからないか、複数の期間が見つかりました。" #. module: account #: field:account.invoice.tax,tax_amount:0 msgid "Tax Code Amount" -msgstr "" +msgstr "税金コード金額" #. module: account #: code:addons/account/account.py:3116 @@ -644,29 +655,29 @@ msgstr "" #: view:account.period:0 #: view:account.period.close:0 msgid "Close Period" -msgstr "" +msgstr "期間を閉じる" #. module: account #: model:ir.model,name:account.model_account_common_partner_report msgid "Account Common Partner Report" -msgstr "" +msgstr "アカウント共有パートナレポート" #. module: account #: field:account.fiscalyear.close,period_id:0 msgid "Opening Entries Period" -msgstr "" +msgstr "開始エントリーの期間" #. module: account #: model:ir.model,name:account.model_account_journal_period msgid "Journal Period" -msgstr "" +msgstr "仕訳帳期間" #. module: account #: code:addons/account/account_move_line.py:750 #: code:addons/account/account_move_line.py:803 #, python-format msgid "To reconcile the entries company should be the same for all entries" -msgstr "" +msgstr "エントリーを照合するために、会社は全てのエントリーに対して同じであるべきです。" #. module: account #: view:account.account:0 @@ -678,34 +689,34 @@ msgstr "" #: model:ir.actions.act_window,name:account.action_aged_receivable #, python-format msgid "Receivable Accounts" -msgstr "" +msgstr "売掛金アカウント" #. module: account #: constraint:account.move.line:0 msgid "" "The date of your Journal Entry is not in the defined period! You should " "change the date or remove this constraint from the journal." -msgstr "" +msgstr "仕訳帳エントリーの日付が定義された期間ではありません。日付を変更するか仕訳帳からこの制約を削除する必要があります。" #. module: account #: model:ir.model,name:account.model_account_report_general_ledger msgid "General Ledger Report" -msgstr "" +msgstr "総勘定元帳レポート" #. module: account #: view:account.invoice:0 msgid "Re-Open" -msgstr "" +msgstr "再度開く" #. module: account #: view:account.use.model:0 msgid "Are you sure you want to create entries?" -msgstr "" +msgstr "本当にエントリーを作成しますか?" #. module: account #: view:account.invoice:0 msgid "Print Invoice" -msgstr "" +msgstr "請求書印刷" #. module: account #: field:account.partner.reconcile.process,today_reconciled:0 @@ -792,7 +803,7 @@ msgstr "" #. module: account #: view:account.invoice.report:0 msgid "Supplier Invoices And Refunds" -msgstr "" +msgstr "仕入先請求書と払い戻し" #. module: account #: view:account.move.line.unreconcile.select:0 @@ -857,7 +868,7 @@ msgstr "" msgid "" "Can not %s invoice which is already reconciled, invoice should be " "unreconciled first. You can only Refund this invoice" -msgstr "" +msgstr "既に調整済みの %s は請求できません。請求書は未調整であるべきです。この請求書は払い戻しのみできます。" #. module: account #: model:ir.actions.act_window,name:account.action_subscription_form_new @@ -872,7 +883,7 @@ msgstr "" #. module: account #: selection:account.invoice.refund,filter_refund:0 msgid "Cancel: refund invoice and reconcile" -msgstr "" +msgstr "キャンセル:請求書と調整の払い戻し" #. module: account #: field:account.cashbox.line,pieces:0 @@ -960,7 +971,7 @@ msgstr "" #. module: account #: selection:account.journal,type:0 msgid "Sale Refund" -msgstr "" +msgstr "販売払い戻し" #. module: account #: model:process.node,note:account.process_node_accountingstatemententries0 @@ -1473,6 +1484,8 @@ msgid "" "entry per accounting document: invoice, refund, supplier payment, bank " "statements, etc." msgstr "" +"仕訳帳エントリーは幾つかの仕訳帳項目を含んでいます。それぞれは借方あるいは貸方取引の何れかです。OpenERPは会計ドキュメントごとにひとつの仕訳帳エント" +"リーを自動的に作成します:請求書、払い戻し、仕入先支払い、銀行明細など" #. module: account #: view:account.entries.report:0 @@ -1495,7 +1508,7 @@ msgstr "" #: model:ir.actions.act_window,name:account.action_invoice_tree4 #: model:ir.ui.menu,name:account.menu_action_invoice_tree4 msgid "Supplier Refunds" -msgstr "" +msgstr "仕入先払い戻し" #. module: account #: selection:account.account,type:0 @@ -1574,7 +1587,7 @@ msgstr "" #: field:account.tax,account_paid_id:0 #: field:account.tax.template,account_paid_id:0 msgid "Refund Tax Account" -msgstr "" +msgstr "払い戻し税金アカウント" #. module: account #: view:account.bank.statement:0 @@ -1651,7 +1664,7 @@ msgstr "" msgid "" "Cancel Invoice: Creates the refund invoice, validate and reconcile it to " "cancel the current invoice." -msgstr "" +msgstr "請求書のキャンセル:現在の請求書をキャンセルするために払い戻し請求書を作成し、検証し、調整して下さい。" #. module: account #: model:ir.ui.menu,name:account.periodical_processing_invoicing @@ -2607,7 +2620,7 @@ msgstr "" #: field:account.tax,ref_base_code_id:0 #: field:account.tax.template,ref_base_code_id:0 msgid "Refund Base Code" -msgstr "" +msgstr "ベースコードの払い戻し" #. module: account #: selection:account.tax.template,applicable_type:0 @@ -2819,7 +2832,7 @@ msgstr "" msgid "" "You can not delete an invoice which is open or paid. We suggest you to " "refund it instead." -msgstr "" +msgstr "開いているか支払済みの請求書は削除できません。その代わりに払い戻しをすることをお勧めします。" #. module: account #: field:wizard.multi.charts.accounts,sale_tax:0 @@ -3643,7 +3656,7 @@ msgstr "" #. module: account #: selection:account.invoice.refund,filter_refund:0 msgid "Create a draft Refund" -msgstr "" +msgstr "払い戻しのドラフトを作成" #. module: account #: view:account.state.open:0 @@ -4447,7 +4460,7 @@ msgstr "" #: field:account.tax,ref_tax_code_id:0 #: field:account.tax.template,ref_tax_code_id:0 msgid "Refund Tax Code" -msgstr "" +msgstr "税金コードの払い戻し" #. module: account #: view:validate.account.move:0 @@ -4544,7 +4557,7 @@ msgid "" "Bank Account Number to which the invoice will be paid. A Company bank " "account if this is a Customer Invoice or Supplier Refund, otherwise a " "Partner bank account number." -msgstr "" +msgstr "請求書が支払われる先の銀行口座番号です。顧客請求書や仕入れ先払い戻しであれば会社の銀行口座、さもなくばパートナの銀行口座番号です。" #. module: account #: view:account.state.open:0 @@ -5177,7 +5190,7 @@ msgstr "" #: selection:account.invoice.report,type:0 #: selection:report.invoice.created,type:0 msgid "Customer Refund" -msgstr "" +msgstr "顧客払い戻し" #. module: account #: constraint:account.move:0 @@ -5286,7 +5299,7 @@ msgstr "" #. module: account #: view:account.invoice.report:0 msgid "Customer Invoices And Refunds" -msgstr "" +msgstr "顧客請求書と払い戻し" #. module: account #: field:account.analytic.line,amount_currency:0 @@ -5342,7 +5355,7 @@ msgstr "" #. module: account #: view:account.invoice.refund:0 msgid "Refund Invoice Options" -msgstr "" +msgstr "払い戻し請求書オプション" #. module: account #: help:account.automatic.reconcile,power:0 @@ -5581,7 +5594,7 @@ msgstr "" #. module: account #: view:account.invoice.refund:0 msgid "Refund Invoice" -msgstr "" +msgstr "払い戻し請求書" #. module: account #: field:account.invoice,address_invoice_id:0 diff --git a/addons/account_bank_statement_extensions/i18n/gu.po b/addons/account_bank_statement_extensions/i18n/gu.po new file mode 100644 index 00000000000..3e77a3b8a26 --- /dev/null +++ b/addons/account_bank_statement_extensions/i18n/gu.po @@ -0,0 +1,374 @@ +# Gujarati translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 00:35+0000\n" +"PO-Revision-Date: 2012-04-17 09:03+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Gujarati \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-18 04:42+0000\n" +"X-Generator: Launchpad (build 15108)\n" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +msgid "Search Bank Transactions" +msgstr "બેન્ક વ્યવહારો શોધો" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +#: selection:account.bank.statement.line,state:0 +msgid "Confirmed" +msgstr "સમર્થિત" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement:0 +#: view:account.bank.statement.line:0 +msgid "Glob. Id" +msgstr "" + +#. module: account_bank_statement_extensions +#: selection:account.bank.statement.line.global,type:0 +msgid "CODA" +msgstr "" + +#. module: account_bank_statement_extensions +#: field:account.bank.statement.line.global,parent_id:0 +msgid "Parent Code" +msgstr "પેરેંટ કોડ" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +msgid "Debit" +msgstr "ઉધાર" + +#. module: account_bank_statement_extensions +#: view:cancel.statement.line:0 +#: model:ir.actions.act_window,name:account_bank_statement_extensions.action_cancel_statement_line +#: model:ir.model,name:account_bank_statement_extensions.model_cancel_statement_line +msgid "Cancel selected statement lines" +msgstr "" + +#. module: account_bank_statement_extensions +#: constraint:res.partner.bank:0 +msgid "The RIB and/or IBAN is not valid" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +msgid "Group By..." +msgstr "ગ્રુપ દ્વારા..." + +#. module: account_bank_statement_extensions +#: field:account.bank.statement.line,state:0 +msgid "State" +msgstr "સ્થિતિ" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +#: selection:account.bank.statement.line,state:0 +msgid "Draft" +msgstr "કાચું" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +msgid "Statement" +msgstr "વિધાન" + +#. module: account_bank_statement_extensions +#: view:confirm.statement.line:0 +#: model:ir.actions.act_window,name:account_bank_statement_extensions.action_confirm_statement_line +#: model:ir.model,name:account_bank_statement_extensions.model_confirm_statement_line +msgid "Confirm selected statement lines" +msgstr "" + +#. module: account_bank_statement_extensions +#: report:bank.statement.balance.report:0 +#: model:ir.actions.report.xml,name:account_bank_statement_extensions.bank_statement_balance_report +msgid "Bank Statement Balances Report" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:cancel.statement.line:0 +msgid "Cancel Lines" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line.global:0 +#: model:ir.model,name:account_bank_statement_extensions.model_account_bank_statement_line_global +msgid "Batch Payment Info" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:confirm.statement.line:0 +msgid "Confirm Lines" +msgstr "" + +#. module: account_bank_statement_extensions +#: code:addons/account_bank_statement_extensions/account_bank_statement.py:130 +#, python-format +msgid "" +"Delete operation not allowed ! Please go to the associated bank " +"statement in order to delete and/or modify this bank statement line" +msgstr "" + +#. module: account_bank_statement_extensions +#: field:account.bank.statement.line.global,type:0 +msgid "Type" +msgstr "પ્રકાર" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +#: field:account.bank.statement.line,journal_id:0 +#: report:bank.statement.balance.report:0 +msgid "Journal" +msgstr "રોજનામું" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +msgid "Confirmed Statement Lines." +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +msgid "Credit Transactions." +msgstr "" + +#. module: account_bank_statement_extensions +#: model:ir.actions.act_window,help:account_bank_statement_extensions.action_cancel_statement_line +msgid "cancel selected statement lines." +msgstr "" + +#. module: account_bank_statement_extensions +#: field:account.bank.statement.line,counterparty_number:0 +msgid "Counterparty Number" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line.global:0 +msgid "Transactions" +msgstr "" + +#. module: account_bank_statement_extensions +#: code:addons/account_bank_statement_extensions/account_bank_statement.py:130 +#, python-format +msgid "Warning" +msgstr "" + +#. module: account_bank_statement_extensions +#: report:bank.statement.balance.report:0 +msgid "Closing Balance" +msgstr "" + +#. module: account_bank_statement_extensions +#: report:bank.statement.balance.report:0 +msgid "Date" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +#: field:account.bank.statement.line,globalisation_amount:0 +msgid "Glob. Amount" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +msgid "Debit Transactions." +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +msgid "Extended Filters..." +msgstr "" + +#. module: account_bank_statement_extensions +#: view:confirm.statement.line:0 +msgid "Confirmed lines cannot be changed anymore." +msgstr "" + +#. module: account_bank_statement_extensions +#: constraint:res.partner.bank:0 +msgid "" +"\n" +"Please define BIC/Swift code on bank for bank type IBAN Account to make " +"valid payments" +msgstr "" + +#. module: account_bank_statement_extensions +#: field:account.bank.statement.line,val_date:0 +msgid "Valuta Date" +msgstr "" + +#. module: account_bank_statement_extensions +#: model:ir.actions.act_window,help:account_bank_statement_extensions.action_confirm_statement_line +msgid "Confirm selected statement lines." +msgstr "" + +#. module: account_bank_statement_extensions +#: view:cancel.statement.line:0 +msgid "Are you sure you want to cancel the selected Bank Statement lines ?" +msgstr "" + +#. module: account_bank_statement_extensions +#: report:bank.statement.balance.report:0 +msgid "Name" +msgstr "" + +#. module: account_bank_statement_extensions +#: selection:account.bank.statement.line.global,type:0 +msgid "ISO 20022" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +msgid "Notes" +msgstr "" + +#. module: account_bank_statement_extensions +#: selection:account.bank.statement.line.global,type:0 +msgid "Manual" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +msgid "Credit" +msgstr "" + +#. module: account_bank_statement_extensions +#: field:account.bank.statement.line.global,amount:0 +msgid "Amount" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +msgid "Fin.Account" +msgstr "" + +#. module: account_bank_statement_extensions +#: field:account.bank.statement.line,counterparty_currency:0 +msgid "Counterparty Currency" +msgstr "" + +#. module: account_bank_statement_extensions +#: field:account.bank.statement.line,counterparty_bic:0 +msgid "Counterparty BIC" +msgstr "" + +#. module: account_bank_statement_extensions +#: field:account.bank.statement.line.global,child_ids:0 +msgid "Child Codes" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:confirm.statement.line:0 +msgid "Are you sure you want to confirm the selected Bank Statement lines ?" +msgstr "" + +#. module: account_bank_statement_extensions +#: constraint:account.bank.statement.line:0 +msgid "" +"The amount of the voucher must be the same amount as the one on the " +"statement line" +msgstr "" + +#. module: account_bank_statement_extensions +#: help:account.bank.statement.line,globalisation_id:0 +msgid "" +"Code to identify transactions belonging to the same globalisation level " +"within a batch payment" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +msgid "Draft Statement Lines." +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +msgid "Glob. Am." +msgstr "" + +#. module: account_bank_statement_extensions +#: model:ir.model,name:account_bank_statement_extensions.model_account_bank_statement_line +msgid "Bank Statement Line" +msgstr "" + +#. module: account_bank_statement_extensions +#: field:account.bank.statement.line.global,code:0 +msgid "Code" +msgstr "" + +#. module: account_bank_statement_extensions +#: field:account.bank.statement.line,counterparty_name:0 +msgid "Counterparty Name" +msgstr "" + +#. module: account_bank_statement_extensions +#: field:account.bank.statement.line.global,name:0 +msgid "Communication" +msgstr "" + +#. module: account_bank_statement_extensions +#: model:ir.model,name:account_bank_statement_extensions.model_res_partner_bank +msgid "Bank Accounts" +msgstr "" + +#. module: account_bank_statement_extensions +#: constraint:account.bank.statement:0 +msgid "The journal and period chosen have to belong to the same company." +msgstr "" + +#. module: account_bank_statement_extensions +#: model:ir.model,name:account_bank_statement_extensions.model_account_bank_statement +msgid "Bank Statement" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +msgid "Statement Line" +msgstr "" + +#. module: account_bank_statement_extensions +#: sql_constraint:account.bank.statement.line.global:0 +msgid "The code must be unique !" +msgstr "" + +#. module: account_bank_statement_extensions +#: field:account.bank.statement.line.global,bank_statement_line_ids:0 +#: model:ir.actions.act_window,name:account_bank_statement_extensions.action_bank_statement_line +#: model:ir.ui.menu,name:account_bank_statement_extensions.bank_statement_line +msgid "Bank Statement Lines" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line.global:0 +msgid "Child Batch Payments" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:cancel.statement.line:0 +#: view:confirm.statement.line:0 +msgid "Cancel" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +msgid "Statement Lines" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +msgid "Total Amount" +msgstr "" + +#. module: account_bank_statement_extensions +#: field:account.bank.statement.line,globalisation_id:0 +msgid "Globalisation ID" +msgstr "" diff --git a/addons/account_bank_statement_extensions/i18n/ja.po b/addons/account_bank_statement_extensions/i18n/ja.po index b852e95c682..f040102bb83 100644 --- a/addons/account_bank_statement_extensions/i18n/ja.po +++ b/addons/account_bank_statement_extensions/i18n/ja.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-04-17 04:52+0000\n" -"X-Generator: Launchpad (build 15099)\n" +"X-Launchpad-Export-Date: 2012-04-18 04:42+0000\n" +"X-Generator: Launchpad (build 15108)\n" #. module: account_bank_statement_extensions #: view:account.bank.statement.line:0 @@ -186,7 +186,7 @@ msgstr "借方取引" #. module: account_bank_statement_extensions #: view:account.bank.statement.line:0 msgid "Extended Filters..." -msgstr "拡張したフィルタ…" +msgstr "拡張フィルタ…" #. module: account_bank_statement_extensions #: view:confirm.statement.line:0 diff --git a/addons/account_budget/i18n/sr@latin.po b/addons/account_budget/i18n/sr@latin.po index 602ad560c1e..76b06435064 100644 --- a/addons/account_budget/i18n/sr@latin.po +++ b/addons/account_budget/i18n/sr@latin.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-02-08 00:35+0000\n" -"PO-Revision-Date: 2011-11-10 16:52+0000\n" -"Last-Translator: Milan Milosevic \n" +"PO-Revision-Date: 2012-04-17 05:29+0000\n" +"Last-Translator: Maroje Delibasic \n" "Language-Team: Serbian latin \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-02-09 06:48+0000\n" -"X-Generator: Launchpad (build 14763)\n" +"X-Launchpad-Export-Date: 2012-04-18 04:41+0000\n" +"X-Generator: Launchpad (build 15108)\n" #. module: account_budget #: field:crossovered.budget,creating_user_id:0 @@ -331,7 +331,7 @@ msgstr "Početak perioda" #. module: account_budget #: model:ir.model,name:account_budget.model_account_budget_crossvered_summary_report msgid "Account Budget crossvered summary report" -msgstr "Izvestaj rezimea budžeta za unakrsni konto" +msgstr "Izveštaj rezimea budžeta za unakrsni konto" #. module: account_budget #: report:account.budget:0 diff --git a/addons/crm/i18n/ja.po b/addons/crm/i18n/ja.po index e38caf8c8af..9039dcb8bec 100644 --- a/addons/crm/i18n/ja.po +++ b/addons/crm/i18n/ja.po @@ -14,8 +14,8 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-04-17 04:51+0000\n" -"X-Generator: Launchpad (build 15099)\n" +"X-Launchpad-Export-Date: 2012-04-18 04:41+0000\n" +"X-Generator: Launchpad (build 15108)\n" #. module: crm #: view:crm.lead.report:0 diff --git a/addons/hr/i18n/ja.po b/addons/hr/i18n/ja.po index 1486a75741d..1263a5c73b3 100644 --- a/addons/hr/i18n/ja.po +++ b/addons/hr/i18n/ja.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-02-08 01:37+0100\n" -"PO-Revision-Date: 2012-04-17 01:59+0000\n" +"PO-Revision-Date: 2012-04-17 18:27+0000\n" "Last-Translator: Masaki Yamaya \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-17 04:51+0000\n" -"X-Generator: Launchpad (build 15099)\n" +"X-Launchpad-Export-Date: 2012-04-18 04:41+0000\n" +"X-Generator: Launchpad (build 15108)\n" #. module: hr #: model:process.node,name:hr.process_node_openerpuser0 @@ -35,19 +35,19 @@ msgstr "エラー。反復する部署を作ることはできません。" #. module: hr #: model:process.transition,name:hr.process_transition_contactofemployee0 msgid "Link the employee to information" -msgstr "" +msgstr "従業員を情報に連携" #. module: hr #: field:hr.employee,sinid:0 msgid "SIN No" -msgstr "" +msgstr "社会保険番号" #. module: hr #: model:ir.ui.menu,name:hr.menu_hr_main #: model:ir.ui.menu,name:hr.menu_hr_management #: model:ir.ui.menu,name:hr.menu_hr_root msgid "Human Resources" -msgstr "" +msgstr "人材" #. module: hr #: view:hr.employee:0 view:hr.job:0 @@ -152,7 +152,7 @@ msgid "" "Your Company's Department Structure is used to manage all documents related " "to employees by departments: expenses and timesheet validation, leaves " "management, recruitments, etc." -msgstr "" +msgstr "部門組織構造は、従業員に関する全てのドキュメントの管理に使われます。例えば、経費、タイムシートの検証、休暇の管理、採用など。" #. module: hr #: field:hr.employee,color:0 @@ -189,7 +189,7 @@ msgstr "この職種に必要な従業員の数" #. module: hr #: model:ir.ui.menu,name:hr.menu_open_view_attendance_reason_new_config msgid "Attendance" -msgstr "出欠" +msgstr "勤怠" #. module: hr #: view:hr.employee:0 @@ -204,7 +204,7 @@ msgstr "勤務先電話" #. module: hr #: field:hr.employee.category,child_ids:0 msgid "Child Categories" -msgstr "子関係の区分" +msgstr "下位区分" #. module: hr #: view:hr.job:0 field:hr.job,description:0 @@ -347,7 +347,7 @@ msgstr "従業員を作成する。" #. module: hr #: field:hr.employee.category,name:0 msgid "Category" -msgstr "分類" +msgstr "カテゴリー" #. module: hr #: model:ir.actions.act_window,help:hr.open_view_employee_list_my @@ -411,7 +411,7 @@ msgstr "下位部門" #. module: hr #: view:hr.employee:0 msgid "Status" -msgstr "ステータス" +msgstr "状態" #. module: hr #: model:ir.actions.act_window,name:hr.open_view_categ_tree @@ -582,7 +582,7 @@ msgstr "国籍" #. module: hr #: model:ir.ui.menu,name:hr.menu_open_view_attendance_reason_config msgid "Leaves" -msgstr "作業終了" +msgstr "休暇" #. module: hr #: view:board.board:0 diff --git a/addons/hr_holidays/i18n/ja.po b/addons/hr_holidays/i18n/ja.po new file mode 100644 index 00000000000..b7f627c4a75 --- /dev/null +++ b/addons/hr_holidays/i18n/ja.po @@ -0,0 +1,844 @@ +# Japanese translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 01:37+0100\n" +"PO-Revision-Date: 2012-04-18 04:38+0000\n" +"Last-Translator: Masaki Yamaya \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-18 04:41+0000\n" +"X-Generator: Launchpad (build 15108)\n" + +#. module: hr_holidays +#: selection:hr.holidays.status,color_name:0 +msgid "Blue" +msgstr "青" + +#. module: hr_holidays +#: field:hr.holidays,holiday_type:0 +msgid "Allocation Type" +msgstr "割振りタイプ" + +#. module: hr_holidays +#: selection:hr.employee,current_leave_state:0 selection:hr.holidays,state:0 +msgid "Waiting Second Approval" +msgstr "2番目の承認待ち" + +#. module: hr_holidays +#: help:hr.holidays.status,remaining_leaves:0 +msgid "Maximum Leaves Allowed - Leaves Already Taken" +msgstr "休暇の最大値 - 既取得休暇" + +#. module: hr_holidays +#: view:hr.holidays:0 +msgid "Leaves Management" +msgstr "休暇管理" + +#. module: hr_holidays +#: view:hr.holidays:0 +msgid "Group By..." +msgstr "グループ化…" + +#. module: hr_holidays +#: view:hr.holidays:0 +msgid "Allocation Mode" +msgstr "割振りモード" + +#. module: hr_holidays +#: view:hr.holidays:0 field:hr.holidays,department_id:0 +msgid "Department" +msgstr "部門" + +#. module: hr_holidays +#: model:ir.actions.act_window,name:hr_holidays.request_approve_holidays +msgid "Requests Approve" +msgstr "承認を申請" + +#. module: hr_holidays +#: selection:hr.employee,current_leave_state:0 selection:hr.holidays,state:0 +msgid "Refused" +msgstr "拒否" + +#. module: hr_holidays +#: help:hr.holidays,category_id:0 +msgid "Category of Employee" +msgstr "従業員のカテゴリー" + +#. module: hr_holidays +#: view:hr.holidays:0 +msgid " Month-1" +msgstr " 月-1" + +#. module: hr_holidays +#: selection:hr.holidays.status,color_name:0 +msgid "Brown" +msgstr "茶" + +#. module: hr_holidays +#: view:hr.holidays:0 +msgid "Remaining Days" +msgstr "残り日数" + +#. module: hr_holidays +#: selection:hr.holidays,holiday_type:0 +msgid "By Employee" +msgstr "従業員ごと" + +#. module: hr_holidays +#: help:hr.holidays,employee_id:0 +msgid "" +"Leave Manager can let this field empty if this leave request/allocation is " +"for every employee" +msgstr "この休暇申請 / 割振りが全ての従業員のためであるならば、この項目を空白にしておくことができます。" + +#. module: hr_holidays +#: view:hr.holidays:0 +msgid "Set to Draft" +msgstr "草稿に設定" + +#. module: hr_holidays +#: selection:hr.holidays.status,color_name:0 +msgid "Light Cyan" +msgstr "薄青緑色" + +#. module: hr_holidays +#: selection:hr.holidays.status,color_name:0 +msgid "Light Green" +msgstr "薄緑" + +#. module: hr_holidays +#: field:hr.employee,current_leave_id:0 +msgid "Current Leave Type" +msgstr "現在の休暇タイプ" + +#. module: hr_holidays +#: model:ir.actions.act_window,help:hr_holidays.open_ask_holidays +msgid "" +"Leave requests can be recorded by employees and validated by their managers. " +"Once a leave request is validated, it appears automatically in the agenda of " +"the employee. You can define several allowance types (paid holidays, " +"sickness, etc.) and manage allowances per type." +msgstr "" + +#. module: hr_holidays +#: model:ir.actions.report.xml,name:hr_holidays.report_holidays_summary +msgid "Summary Of Leaves" +msgstr "休暇の要約" + +#. module: hr_holidays +#: selection:hr.employee,current_leave_state:0 view:hr.holidays:0 +#: selection:hr.holidays,state:0 +msgid "Approved" +msgstr "承認済み" + +#. module: hr_holidays +#: field:hr.employee,last_login:0 +msgid "Latest Connection" +msgstr "最新の接続" + +#. module: hr_holidays +#: view:hr.holidays:0 +msgid "Refuse" +msgstr "拒否" + +#. module: hr_holidays +#: code:addons/hr_holidays/hr_holidays.py:344 +#, python-format +msgid "" +"You cannot validate leaves for employee %s: too few remaining days (%s)." +msgstr "この従業員 %s の休暇を承認できません:残りの休暇日数が足りません (%s)" + +#. module: hr_holidays +#: help:hr.holidays,state:0 +msgid "" +"The state is set to 'Draft', when a holiday request is created. \n" +"The state is 'Waiting Approval', when holiday request is confirmed by user. " +" \n" +"The state is 'Refused', when holiday request is refused by manager. " +" \n" +"The state is 'Approved', when holiday request is approved by manager." +msgstr "" + +#. module: hr_holidays +#: view:board.board:0 +#: model:ir.actions.act_window,name:hr_holidays.act_hr_employee_holiday_request +#: model:ir.ui.menu,name:hr_holidays.menu_hr_reporting_holidays +#: model:ir.ui.menu,name:hr_holidays.menu_open_ask_holidays +msgid "Leaves" +msgstr "休暇" + +#. module: hr_holidays +#: model:ir.model,name:hr_holidays.model_hr_holidays +msgid "Leave" +msgstr "休暇" + +#. module: hr_holidays +#: model:ir.ui.menu,name:hr_holidays.menu_request_approve_holidays +msgid "Leave Requests to Approve" +msgstr "休暇申請の承認" + +#. module: hr_holidays +#: model:ir.ui.menu,name:hr_holidays.menu_account_central_journal +msgid "Leaves by Department" +msgstr "部門ごとの休暇" + +#. module: hr_holidays +#: selection:hr.employee,current_leave_state:0 selection:hr.holidays,state:0 +msgid "Cancelled" +msgstr "キャンセルされました。" + +#. module: hr_holidays +#: help:hr.holidays,type:0 +msgid "" +"Choose 'Leave Request' if someone wants to take an off-day. \n" +"Choose 'Allocation Request' if you want to increase the number of leaves " +"available for someone" +msgstr "" +"休暇を希望している人がいたら、「休暇申請」を選んでください。 \n" +"誰かの休暇を増やすのであれば、「割当て申請」を選んでください。" + +#. module: hr_holidays +#: help:hr.employee,remaining_leaves:0 +msgid "" +"Total number of legal leaves allocated to this employee, change this value " +"to create allocation/leave requests." +msgstr "この従業員の法定休暇の日数です。割当て/休暇申請を指定するには、この値を変更して下さい。" + +#. module: hr_holidays +#: view:hr.holidays.status:0 +msgid "Validation" +msgstr "承認" + +#. module: hr_holidays +#: code:addons/hr_holidays/hr_holidays.py:377 +#, python-format +msgid "Warning !" +msgstr "警告" + +#. module: hr_holidays +#: field:hr.holidays.status,color_name:0 +msgid "Color in Report" +msgstr "報告書の色" + +#. module: hr_holidays +#: model:ir.model,name:hr_holidays.model_hr_holidays_summary_employee +msgid "HR Holidays Summary Report By Employee" +msgstr "従業員ごとの休暇要約報告書" + +#. module: hr_holidays +#: help:hr.holidays,manager_id:0 +msgid "This area is automatically filled by the user who validate the leave" +msgstr "この項目は、休暇を承認されたユーザによって自動的に入力されます。" + +#. module: hr_holidays +#: field:hr.holidays,holiday_status_id:0 +#: field:hr.holidays.remaining.leaves.user,leave_type:0 +#: view:hr.holidays.status:0 field:hr.holidays.status,name:0 +#: field:hr.holidays.summary.dept,holiday_type:0 +#: model:ir.actions.act_window,name:hr_holidays.open_view_holiday_status +#: model:ir.model,name:hr_holidays.model_hr_holidays_status +#: model:ir.ui.menu,name:hr_holidays.menu_open_view_holiday_status +msgid "Leave Type" +msgstr "休暇タイプ" + +#. module: hr_holidays +#: code:addons/hr_holidays/hr_holidays.py:199 +#: code:addons/hr_holidays/hr_holidays.py:344 +#, python-format +msgid "Warning!" +msgstr "警告" + +#. module: hr_holidays +#: selection:hr.holidays.status,color_name:0 +msgid "Magenta" +msgstr "赤紫色" + +#. module: hr_holidays +#: code:addons/hr_holidays/wizard/hr_holidays_summary_department.py:44 +#, python-format +msgid "You have to select at least 1 Department. And try again" +msgstr "少なくとも一つの部門を指定して、やり直して下さい。" + +#. module: hr_holidays +#: selection:hr.holidays.summary.dept,holiday_type:0 +#: selection:hr.holidays.summary.employee,holiday_type:0 +msgid "Confirmed" +msgstr "確認済み" + +#. module: hr_holidays +#: field:hr.holidays.summary.dept,date_from:0 +#: field:hr.holidays.summary.employee,date_from:0 +msgid "From" +msgstr "から" + +#. module: hr_holidays +#: view:hr.holidays:0 +msgid "Confirm" +msgstr "確認" + +#. module: hr_holidays +#: code:addons/hr_holidays/hr_holidays.py:384 +#, python-format +msgid "Leave Request for %s" +msgstr "%s の休暇申請" + +#. module: hr_holidays +#: field:hr.holidays.status,remaining_leaves:0 +msgid "Remaining Leaves" +msgstr "残りの休暇日数" + +#. module: hr_holidays +#: view:hr.holidays:0 field:hr.holidays,state:0 +msgid "State" +msgstr "状態" + +#. module: hr_holidays +#: model:ir.model,name:hr_holidays.model_hr_holidays_remaining_leaves_user +msgid "Total holidays by type" +msgstr "タイプごとの休暇日数" + +#. module: hr_holidays +#: view:hr.employee:0 view:hr.holidays:0 field:hr.holidays,employee_id:0 +#: field:hr.holidays.remaining.leaves.user,name:0 +#: model:ir.model,name:hr_holidays.model_hr_employee +msgid "Employee" +msgstr "従業員" + +#. module: hr_holidays +#: selection:hr.employee,current_leave_state:0 selection:hr.holidays,state:0 +msgid "New" +msgstr "新規" + +#. module: hr_holidays +#: view:hr.holidays:0 +msgid "Type" +msgstr "タイプ" + +#. module: hr_holidays +#: selection:hr.holidays.status,color_name:0 +msgid "Red" +msgstr "赤色" + +#. module: hr_holidays +#: view:hr.holidays.remaining.leaves.user:0 +msgid "Leaves by Type" +msgstr "タイプごとの休暇" + +#. module: hr_holidays +#: selection:hr.holidays.status,color_name:0 +msgid "Light Salmon" +msgstr "薄桃色" + +#. module: hr_holidays +#: selection:hr.holidays.status,color_name:0 +msgid "Wheat" +msgstr "小麦色" + +#. module: hr_holidays +#: constraint:resource.calendar.leaves:0 +msgid "Error! leave start-date must be lower then leave end-date." +msgstr "エラー。休暇開始日は休暇終了日の前でなければいけません。" + +#. module: hr_holidays +#: code:addons/hr_holidays/hr_holidays.py:382 +#, python-format +msgid "Allocation for %s" +msgstr "%s の割当て" + +#. module: hr_holidays +#: view:hr.holidays:0 field:hr.holidays,number_of_days:0 +#: field:hr.holidays,number_of_days_temp:0 +msgid "Number of Days" +msgstr "日数" + +#. module: hr_holidays +#: code:addons/hr_holidays/hr_holidays.py:377 +#, python-format +msgid "" +"The feature behind the field 'Remaining Legal Leaves' can only be used when " +"there is only one leave type with the option 'Allow to Override Limit' " +"unchecked. (%s Found). Otherwise, the update is ambiguous as we cannot " +"decide on which leave type the update has to be done. \n" +"You may prefer to use the classic menus 'Leave Requests' and 'Allocation " +"Requests' located in 'Human Resources \\ Leaves' to manage the leave days of " +"the employees if the configuration does not allow to use this field." +msgstr "" + +#. module: hr_holidays +#: view:hr.holidays.status:0 +msgid "Search Leave Type" +msgstr "休暇タイプを検索" + +#. module: hr_holidays +#: sql_constraint:hr.holidays:0 +msgid "You have to select an employee or a category" +msgstr "従業員あるいはカテゴリーを選んで下さい。" + +#. module: hr_holidays +#: help:hr.holidays.status,double_validation:0 +msgid "" +"If its True then its Allocation/Request have to be validated by second " +"validator" +msgstr "これが正しいならば、その割当て / 申請は第2の承認者によって承認されなければなりません。" + +#. module: hr_holidays +#: selection:hr.employee,current_leave_state:0 selection:hr.holidays,state:0 +msgid "Waiting Approval" +msgstr "承認待ち" + +#. module: hr_holidays +#: field:hr.holidays.summary.employee,emp:0 +msgid "Employee(s)" +msgstr "従業員" + +#. module: hr_holidays +#: help:hr.holidays.status,categ_id:0 +msgid "" +"If you set a meeting type, OpenERP will create a meeting in the calendar " +"once a leave is validated." +msgstr "ミーティングのタイプを設定すると、休暇が承認されるとカレンダーにミーティングが設定されます。" + +#. module: hr_holidays +#: field:hr.holidays,linked_request_ids:0 +msgid "Linked Requests" +msgstr "連係を持った申請" + +#. module: hr_holidays +#: field:hr.holidays,parent_id:0 +msgid "Parent" +msgstr "上位" + +#. module: hr_holidays +#: selection:hr.holidays.status,color_name:0 +msgid "Lavender" +msgstr "薄紫色" + +#. module: hr_holidays +#: view:hr.holidays:0 +msgid "Month" +msgstr "月" + +#. module: hr_holidays +#: view:hr.holidays:0 +#: model:ir.actions.act_window,name:hr_holidays.open_ask_holidays +#: model:ir.ui.menu,name:hr_holidays.menu_open_ask_holidays_new +msgid "Leave Requests" +msgstr "休暇申請" + +#. module: hr_holidays +#: field:hr.holidays.status,limit:0 +msgid "Allow to Override Limit" +msgstr "限界を無効にする。" + +#. module: hr_holidays +#: view:hr.holidays.summary.employee:0 +#: model:ir.actions.act_window,name:hr_holidays.action_hr_holidays_summary_employee +msgid "Employee's Holidays" +msgstr "従業員の休暇" + +#. module: hr_holidays +#: view:hr.holidays:0 field:hr.holidays,category_id:0 +msgid "Category" +msgstr "カテゴリー" + +#. module: hr_holidays +#: help:hr.holidays.status,max_leaves:0 +msgid "" +"This value is given by the sum of all holidays requests with a positive " +"value." +msgstr "この値は休暇申請の総計であり、正数です。" + +#. module: hr_holidays +#: view:board.board:0 +msgid "All Employee Leaves" +msgstr "全ての従業員の休暇" + +#. module: hr_holidays +#: selection:hr.holidays.status,color_name:0 +msgid "Light Coral" +msgstr "サンゴ色" + +#. module: hr_holidays +#: view:hr.holidays.summary.dept:0 +#: model:ir.actions.act_window,name:hr_holidays.action_hr_holidays_summary_dept +msgid "Holidays by Department" +msgstr "部門ごとの休暇" + +#. module: hr_holidays +#: selection:hr.holidays.status,color_name:0 +msgid "Black" +msgstr "黒" + +#. module: hr_holidays +#: model:ir.actions.act_window,name:hr_holidays.hr_holidays_leaves_assign_legal +msgid "Allocate Leaves for Employees" +msgstr "従業員に休暇を割当てる。" + +#. module: hr_holidays +#: field:resource.calendar.leaves,holiday_id:0 +msgid "Holiday" +msgstr "休暇" + +#. module: hr_holidays +#: field:hr.holidays,case_id:0 field:hr.holidays.status,categ_id:0 +msgid "Meeting" +msgstr "ミーティング" + +#. module: hr_holidays +#: selection:hr.holidays.status,color_name:0 +msgid "Ivory" +msgstr "象牙色" + +#. module: hr_holidays +#: selection:hr.holidays.summary.dept,holiday_type:0 +#: selection:hr.holidays.summary.employee,holiday_type:0 +msgid "Both Validated and Confirmed" +msgstr "承認済み,確認済み" + +#. module: hr_holidays +#: field:hr.holidays.status,leaves_taken:0 +msgid "Leaves Already Taken" +msgstr "休暇を取得済み" + +#. module: hr_holidays +#: field:hr.holidays,user_id:0 +#: field:hr.holidays.remaining.leaves.user,user_id:0 +msgid "User" +msgstr "ユーザ" + +#. module: hr_holidays +#: sql_constraint:hr.holidays:0 +msgid "The start date must be before the end date !" +msgstr "開始日は終了日の前でなければなりません。" + +#. module: hr_holidays +#: field:hr.holidays.status,active:0 +msgid "Active" +msgstr "有効" + +#. module: hr_holidays +#: model:ir.actions.act_window,name:hr_holidays.action_view_holiday_status_manager_board +msgid "Leaves To Validate" +msgstr "承認すべき休暇" + +#. module: hr_holidays +#: constraint:hr.employee:0 +msgid "Error ! You cannot create recursive Hierarchy of Employees." +msgstr "" + +#. module: hr_holidays +#: view:hr.employee:0 field:hr.employee,remaining_leaves:0 +msgid "Remaining Legal Leaves" +msgstr "" + +#. module: hr_holidays +#: field:hr.holidays,manager_id:0 +msgid "First Approval" +msgstr "" + +#. module: hr_holidays +#: model:hr.holidays.status,name:hr_holidays.holiday_status_unpaid +msgid "Unpaid" +msgstr "" + +#. module: hr_holidays +#: view:hr.holidays:0 +#: model:ir.actions.act_window,name:hr_holidays.open_company_allocation +#: model:ir.ui.menu,name:hr_holidays.menu_open_company_allocation +msgid "Leaves Summary" +msgstr "" + +#. module: hr_holidays +#: view:hr.holidays:0 +msgid "Holidays during last month" +msgstr "" + +#. module: hr_holidays +#: code:addons/hr_holidays/wizard/hr_holidays_summary_department.py:44 +#, python-format +msgid "Error" +msgstr "" + +#. module: hr_holidays +#: view:hr.employee:0 +msgid "Assign Leaves" +msgstr "" + +#. module: hr_holidays +#: selection:hr.holidays.status,color_name:0 +msgid "Light Blue" +msgstr "" + +#. module: hr_holidays +#: view:hr.holidays:0 +msgid "My Department Leaves" +msgstr "" + +#. module: hr_holidays +#: field:hr.employee,current_leave_state:0 +msgid "Current Leave Status" +msgstr "" + +#. module: hr_holidays +#: field:hr.holidays,type:0 +msgid "Request Type" +msgstr "" + +#. module: hr_holidays +#: help:hr.holidays.status,active:0 +msgid "" +"If the active field is set to false, it will allow you to hide the leave " +"type without removing it." +msgstr "" + +#. module: hr_holidays +#: view:hr.holidays.status:0 +msgid "Misc" +msgstr "" + +#. module: hr_holidays +#: view:hr.holidays:0 +msgid "General" +msgstr "" + +#. module: hr_holidays +#: model:hr.holidays.status,name:hr_holidays.holiday_status_comp +msgid "Compensatory Days" +msgstr "" + +#. module: hr_holidays +#: view:hr.holidays:0 field:hr.holidays,notes:0 +msgid "Reasons" +msgstr "" + +#. module: hr_holidays +#: model:ir.actions.act_window,name:hr_holidays.action_hr_available_holidays_report +#: model:ir.ui.menu,name:hr_holidays.menu_hr_available_holidays_report_tree +msgid "Leaves Analysis" +msgstr "" + +#. module: hr_holidays +#: view:hr.holidays.summary.dept:0 view:hr.holidays.summary.employee:0 +msgid "Cancel" +msgstr "" + +#. module: hr_holidays +#: help:hr.holidays.status,color_name:0 +msgid "" +"This color will be used in the leaves summary located in Reporting\\Leaves " +"by Departement" +msgstr "" + +#. module: hr_holidays +#: view:hr.holidays:0 selection:hr.holidays.summary.dept,holiday_type:0 +#: selection:hr.holidays.summary.employee,holiday_type:0 +msgid "Validated" +msgstr "" + +#. module: hr_holidays +#: view:hr.holidays:0 selection:hr.holidays,type:0 +msgid "Allocation Request" +msgstr "" + +#. module: hr_holidays +#: model:ir.model,name:hr_holidays.model_resource_calendar_leaves +msgid "Leave Detail" +msgstr "" + +#. module: hr_holidays +#: field:hr.holidays,double_validation:0 +#: field:hr.holidays.status,double_validation:0 +msgid "Apply Double Validation" +msgstr "" + +#. module: hr_holidays +#: view:hr.holidays.summary.dept:0 view:hr.holidays.summary.employee:0 +msgid "Print" +msgstr "" + +#. module: hr_holidays +#: view:hr.holidays.status:0 +msgid "Details" +msgstr "" + +#. module: hr_holidays +#: view:hr.holidays:0 +#: model:ir.actions.act_window,name:hr_holidays.action_hr_holidays_leaves_by_month +msgid "My Leaves" +msgstr "" + +#. module: hr_holidays +#: selection:hr.holidays,holiday_type:0 +msgid "By Employee Category" +msgstr "" + +#. module: hr_holidays +#: view:hr.holidays:0 selection:hr.holidays,type:0 +msgid "Leave Request" +msgstr "" + +#. module: hr_holidays +#: field:hr.holidays,name:0 +msgid "Description" +msgstr "" + +#. module: hr_holidays +#: model:hr.holidays.status,name:hr_holidays.holiday_status_cl +msgid "Legal Leaves" +msgstr "" + +#. module: hr_holidays +#: sql_constraint:hr.holidays:0 +msgid "The number of days must be greater than 0 !" +msgstr "" + +#. module: hr_holidays +#: help:hr.holidays,holiday_type:0 +msgid "" +"By Employee: Allocation/Request for individual Employee, By Employee " +"Category: Allocation/Request for group of employees in category" +msgstr "" + +#. module: hr_holidays +#: code:addons/hr_holidays/hr_holidays.py:199 +#, python-format +msgid "You cannot delete a leave which is not in draft state !" +msgstr "" + +#. module: hr_holidays +#: view:hr.holidays:0 +msgid "Search Leave" +msgstr "" + +#. module: hr_holidays +#: field:hr.holidays.summary.employee,holiday_type:0 +msgid "Select Holiday Type" +msgstr "" + +#. module: hr_holidays +#: field:hr.holidays.remaining.leaves.user,no_of_leaves:0 +msgid "Remaining leaves" +msgstr "" + +#. module: hr_holidays +#: field:hr.holidays.summary.dept,depts:0 +msgid "Department(s)" +msgstr "" + +#. module: hr_holidays +#: field:hr.holidays,manager_id2:0 +msgid "Second Approval" +msgstr "" + +#. module: hr_holidays +#: field:hr.holidays,date_to:0 +msgid "End Date" +msgstr "" + +#. module: hr_holidays +#: model:hr.holidays.status,name:hr_holidays.holiday_status_sl +msgid "Sick Leaves" +msgstr "" + +#. module: hr_holidays +#: help:hr.holidays.status,limit:0 +msgid "" +"If you tick this checkbox, the system will allow, for this section, the " +"employees to take more leaves than the available ones." +msgstr "" + +#. module: hr_holidays +#: help:hr.holidays.status,leaves_taken:0 +msgid "" +"This value is given by the sum of all holidays requests with a negative " +"value." +msgstr "" + +#. module: hr_holidays +#: selection:hr.holidays.status,color_name:0 +msgid "Violet" +msgstr "" + +#. module: hr_holidays +#: model:ir.actions.act_window,help:hr_holidays.hr_holidays_leaves_assign_legal +msgid "" +"You can assign remaining Legal Leaves for each employee, OpenERP will " +"automatically create and validate allocation requests." +msgstr "" + +#. module: hr_holidays +#: field:hr.holidays.status,max_leaves:0 +msgid "Maximum Allowed" +msgstr "" + +#. module: hr_holidays +#: help:hr.holidays,manager_id2:0 +msgid "" +"This area is automaticly filled by the user who validate the leave with " +"second level (If Leave type need second validation)" +msgstr "" + +#. module: hr_holidays +#: view:hr.holidays:0 +msgid "Mode" +msgstr "" + +#. module: hr_holidays +#: model:ir.model,name:hr_holidays.model_hr_holidays_summary_dept +msgid "HR Holidays Summary Report By Department" +msgstr "" + +#. module: hr_holidays +#: view:hr.holidays:0 +msgid "Approve" +msgstr "" + +#. module: hr_holidays +#: view:hr.holidays:0 field:hr.holidays,date_from:0 +msgid "Start Date" +msgstr "" + +#. module: hr_holidays +#: view:hr.holidays:0 +#: model:ir.actions.act_window,name:hr_holidays.open_allocation_holidays +#: model:ir.ui.menu,name:hr_holidays.menu_open_allocation_holidays +msgid "Allocation Requests" +msgstr "" + +#. module: hr_holidays +#: selection:hr.holidays.status,color_name:0 +msgid "Light Yellow" +msgstr "" + +#. module: hr_holidays +#: selection:hr.holidays.status,color_name:0 +msgid "Light Pink" +msgstr "" + +#. module: hr_holidays +#: view:hr.holidays:0 +msgid "Manager" +msgstr "" + +#. module: hr_holidays +#: view:hr.holidays:0 +msgid "To Confirm" +msgstr "" + +#. module: hr_holidays +#: view:hr.holidays:0 +msgid "Year" +msgstr "" + +#. module: hr_holidays +#: view:hr.holidays:0 +msgid "To Approve" +msgstr "" diff --git a/addons/hr_payroll/i18n/ja.po b/addons/hr_payroll/i18n/ja.po index 1d1144a8b6d..c2dafc55d82 100644 --- a/addons/hr_payroll/i18n/ja.po +++ b/addons/hr_payroll/i18n/ja.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-02-08 01:37+0100\n" -"PO-Revision-Date: 2012-04-16 01:14+0000\n" +"PO-Revision-Date: 2012-04-17 18:29+0000\n" "Last-Translator: Masaki Yamaya \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-17 04:51+0000\n" -"X-Generator: Launchpad (build 15099)\n" +"X-Launchpad-Export-Date: 2012-04-18 04:42+0000\n" +"X-Generator: Launchpad (build 15108)\n" #. module: hr_payroll #: field:hr.payslip.line,condition_select:0 @@ -81,7 +81,7 @@ msgstr "給与明細" #: field:hr.payroll.structure,parent_id:0 #: field:hr.salary.rule.category,parent_id:0 msgid "Parent" -msgstr "親クラス" +msgstr "上位" #. module: hr_payroll #: report:paylip.details:0 report:payslip:0 @@ -151,7 +151,7 @@ msgstr "作成" #: help:hr.payslip.line,amount_percentage_base:0 #: help:hr.salary.rule,amount_percentage_base:0 msgid "result will be affected to a variable" -msgstr "" +msgstr "結果は変数に影響します。" #. module: hr_payroll #: report:contribution.register.lines:0 @@ -381,7 +381,7 @@ msgstr "例えば、50%を適用するには50.0と入れてください。" #. module: hr_payroll #: field:hr.payslip,paid:0 msgid "Made Payment Order ? " -msgstr "" +msgstr "支払いの処理をしましたか? " #. module: hr_payroll #: report:contribution.register.lines:0 diff --git a/addons/hr_payroll_account/i18n/ja.po b/addons/hr_payroll_account/i18n/ja.po index a7f75f49052..69aa0531675 100644 --- a/addons/hr_payroll_account/i18n/ja.po +++ b/addons/hr_payroll_account/i18n/ja.po @@ -8,19 +8,19 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-02-08 00:36+0000\n" -"PO-Revision-Date: 2012-04-08 06:04+0000\n" +"PO-Revision-Date: 2012-04-17 18:31+0000\n" "Last-Translator: Masaki Yamaya \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-09 04:56+0000\n" -"X-Generator: Launchpad (build 15060)\n" +"X-Launchpad-Export-Date: 2012-04-18 04:42+0000\n" +"X-Generator: Launchpad (build 15108)\n" #. module: hr_payroll_account #: field:hr.payslip,move_id:0 msgid "Accounting Entry" -msgstr "" +msgstr "会計入力" #. module: hr_payroll_account #: field:hr.salary.rule,account_tax_id:0 @@ -69,7 +69,7 @@ msgstr "給与明細書" #. module: hr_payroll_account #: constraint:hr.payslip:0 msgid "Payslip 'Date From' must be before 'Date To'." -msgstr "給与明細書の「開始日付」は「終了日付」の前でなければいけません。" +msgstr "給与明細書の「開始日」は「終了日」の前でなければいけません。" #. module: hr_payroll_account #: help:hr.payslip,period_id:0 diff --git a/addons/hr_recruitment/i18n/ja.po b/addons/hr_recruitment/i18n/ja.po index 21f1898f8b4..9c1494d91fb 100644 --- a/addons/hr_recruitment/i18n/ja.po +++ b/addons/hr_recruitment/i18n/ja.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-02-08 01:37+0100\n" -"PO-Revision-Date: 2012-04-15 03:51+0000\n" +"PO-Revision-Date: 2012-04-17 18:35+0000\n" "Last-Translator: Masaki Yamaya \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-16 04:41+0000\n" -"X-Generator: Launchpad (build 15099)\n" +"X-Launchpad-Export-Date: 2012-04-18 04:42+0000\n" +"X-Generator: Launchpad (build 15108)\n" #. module: hr_recruitment #: help:hr.applicant,active:0 @@ -107,7 +107,7 @@ msgstr "この応募者のための業務を定義しなければいけません #. module: hr_recruitment #: view:hr.applicant:0 msgid "Job" -msgstr "仕事" +msgstr "職務" #. module: hr_recruitment #: field:hr.recruitment.partner.create,close:0 @@ -401,7 +401,7 @@ msgstr "予定日" #: view:hr.applicant:0 field:hr.applicant,priority:0 #: field:hr.recruitment.report,priority:0 msgid "Appreciation" -msgstr "" +msgstr "好意的評価" #. module: hr_recruitment #: model:hr.recruitment.stage,name:hr_recruitment.stage_job1 @@ -732,7 +732,7 @@ msgstr "件名なし" #. module: hr_recruitment #: view:hr.applicant:0 msgid "Status" -msgstr "" +msgstr "状態" #. module: hr_recruitment #: view:hr.applicant:0 @@ -956,7 +956,7 @@ msgstr "主題 / 応募者" #. module: hr_recruitment #: help:hr.recruitment.degree,sequence:0 msgid "Gives the sequence order when displaying a list of degrees." -msgstr "" +msgstr "学位の一覧が表示されたら、順番を指定してください。" #. module: hr_recruitment #: view:hr.applicant:0 field:hr.applicant,user_id:0 diff --git a/addons/hr_timesheet/i18n/ja.po b/addons/hr_timesheet/i18n/ja.po index 22afdfa529b..2757a826a06 100644 --- a/addons/hr_timesheet/i18n/ja.po +++ b/addons/hr_timesheet/i18n/ja.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-02-08 00:36+0000\n" -"PO-Revision-Date: 2012-04-14 00:48+0000\n" +"PO-Revision-Date: 2012-04-17 22:36+0000\n" "Last-Translator: Masaki Yamaya \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-15 04:42+0000\n" -"X-Generator: Launchpad (build 15070)\n" +"X-Launchpad-Export-Date: 2012-04-18 04:41+0000\n" +"X-Generator: Launchpad (build 15108)\n" #. module: hr_timesheet #: code:addons/hr_timesheet/report/user_timesheet.py:43 @@ -33,7 +33,7 @@ msgstr "(現在、空白)" #: code:addons/hr_timesheet/wizard/hr_timesheet_sign_in_out.py:132 #, python-format msgid "No employee defined for your user !" -msgstr "従業員はユーザとして定義されていません。" +msgstr "このユーザには従業員が定義されていません。" #. module: hr_timesheet #: view:hr.analytic.timesheet:0 @@ -254,17 +254,17 @@ msgstr "開始日" #. module: hr_timesheet #: view:hr.employee:0 msgid "Categories" -msgstr "分類" +msgstr "カテゴリ" #. module: hr_timesheet #: constraint:hr.analytic.timesheet:0 msgid "You cannot modify an entry in a Confirmed/Done timesheet !." -msgstr "確認済みの勤務表のエントリーを変更することはできません。" +msgstr "確認済み/完了した勤務表の記入項目を変更することはできません。" #. module: hr_timesheet #: help:hr.employee,product_id:0 msgid "Specifies employee's designation as a product with type 'service'." -msgstr "従業員の割振りを「サービス」という商品項目で指定する。" +msgstr "従業員の割当てを「サービス」という製品項目で指定する。" #. module: hr_timesheet #: view:hr.analytic.timesheet:0 @@ -283,7 +283,7 @@ msgstr "9月" #. module: hr_timesheet #: model:ir.model,name:hr_timesheet.model_hr_analytic_timesheet msgid "Timesheet Line" -msgstr "タイムシートの行" +msgstr "勤務表の行" #. module: hr_timesheet #: field:hr.analytical.timesheet.users,employee_ids:0 @@ -527,7 +527,7 @@ msgstr "この機能で月間勤務表を印刷できます。" #: view:hr.analytic.timesheet:0 #: field:hr.employee,product_id:0 msgid "Product" -msgstr "商品" +msgstr "製品" #. module: hr_timesheet #: view:hr.analytic.timesheet:0 @@ -602,6 +602,8 @@ msgid "" "No analytic account defined on the project.\n" "Please set one or we can not automatically fill the timesheet." msgstr "" +"このプロジェクトには分析アカウントが定義されていません。\n" +"これを設定しないと、勤務表を自動的に記録できません。" #. module: hr_timesheet #: view:account.analytic.account:0 diff --git a/addons/hr_timesheet_invoice/i18n/ja.po b/addons/hr_timesheet_invoice/i18n/ja.po new file mode 100644 index 00000000000..c3c8afffa9e --- /dev/null +++ b/addons/hr_timesheet_invoice/i18n/ja.po @@ -0,0 +1,1147 @@ +# Japanese translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 00:36+0000\n" +"PO-Revision-Date: 2012-04-17 22:35+0000\n" +"Last-Translator: Masaki Yamaya \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-18 04:41+0000\n" +"X-Generator: Launchpad (build 15108)\n" + +#. module: hr_timesheet_invoice +#: view:report.timesheet.line:0 +#: view:report_timesheet.user:0 +msgid "Timesheet by user" +msgstr "ユーザごとの勤務表" + +#. module: hr_timesheet_invoice +#: view:report.timesheet.line:0 +msgid "Timesheet lines in this year" +msgstr "今年度の勤務表の行" + +#. module: hr_timesheet_invoice +#: view:hr_timesheet_invoice.factor:0 +msgid "Type of invoicing" +msgstr "請求書のタイプ" + +#. module: hr_timesheet_invoice +#: report:account.analytic.profit:0 +msgid "Profit" +msgstr "利益" + +#. module: hr_timesheet_invoice +#: model:ir.model,name:hr_timesheet_invoice.model_hr_timesheet_invoice_create_final +msgid "Create invoice from timesheet final" +msgstr "勤務表から請求書を作成" + +#. module: hr_timesheet_invoice +#: view:hr.timesheet.invoice.create:0 +msgid "Force to use a specific product" +msgstr "特定の製品を使うことを強制" + +#. module: hr_timesheet_invoice +#: view:report.timesheet.line:0 +msgid " 7 Days " +msgstr " 7日 " + +#. module: hr_timesheet_invoice +#: report:account.analytic.profit:0 +msgid "Income" +msgstr "収益" + +#. module: hr_timesheet_invoice +#: view:report_timesheet.account.date:0 +msgid "Daily Timesheets for this year" +msgstr "今年度の日々の勤務表" + +#. module: hr_timesheet_invoice +#: view:account.analytic.account:0 +msgid "Re-open project" +msgstr "プロジェクトを再開" + +#. module: hr_timesheet_invoice +#: model:ir.model,name:hr_timesheet_invoice.model_report_timesheet_user +msgid "Timesheet per day" +msgstr "日々の勤務表" + +#. module: hr_timesheet_invoice +#: selection:report.account.analytic.line.to.invoice,month:0 +#: selection:report.timesheet.line,month:0 +#: selection:report_timesheet.account,month:0 +#: selection:report_timesheet.account.date,month:0 +#: selection:report_timesheet.user,month:0 +msgid "March" +msgstr "3月" + +#. module: hr_timesheet_invoice +#: field:hr.timesheet.invoice.create.final,name:0 +msgid "Name of entry" +msgstr "入力の名称" + +#. module: hr_timesheet_invoice +#: help:account.analytic.account,pricelist_id:0 +msgid "" +"The product to invoice is defined on the employee form, the price will be " +"deduced by this pricelist on the product." +msgstr "製品と請求額は従業員票で定義します。価格は製品の価格リストによって割引されます。" + +#. module: hr_timesheet_invoice +#: code:addons/hr_timesheet_invoice/hr_timesheet_invoice.py:129 +#, python-format +msgid "You cannot modify an invoiced analytic line!" +msgstr "請求書を発行済みの分析行を変更することはできません。" + +#. module: hr_timesheet_invoice +#: model:ir.model,name:hr_timesheet_invoice.model_hr_timesheet_invoice_factor +msgid "Invoice Rate" +msgstr "請求書発行率" + +#. module: hr_timesheet_invoice +#: view:report.account.analytic.line.to.invoice:0 +#: view:report.timesheet.line:0 +#: view:report_timesheet.account:0 +#: view:report_timesheet.account.date:0 +#: view:report_timesheet.user:0 +msgid "This Year" +msgstr "今年度" + +#. module: hr_timesheet_invoice +#: help:hr.timesheet.invoice.create.final,time:0 +msgid "Display time in the history of works" +msgstr "作業履歴の時間を表示" + +#. module: hr_timesheet_invoice +#: view:hr.timesheet.analytic.profit:0 +msgid "Journals" +msgstr "ジャーナル" + +#. module: hr_timesheet_invoice +#: view:report.timesheet.line:0 +#: field:report.timesheet.line,day:0 +msgid "Day" +msgstr "日" + +#. module: hr_timesheet_invoice +#: field:report.account.analytic.line.to.invoice,product_uom_id:0 +msgid "UoM" +msgstr "測定単位" + +#. module: hr_timesheet_invoice +#: view:report.timesheet.line:0 +msgid "Account" +msgstr "アカウント" + +#. module: hr_timesheet_invoice +#: field:hr.timesheet.invoice.create,time:0 +#: field:hr.timesheet.invoice.create.final,time:0 +msgid "Time spent" +msgstr "所要時間" + +#. module: hr_timesheet_invoice +#: field:account.analytic.account,amount_invoiced:0 +msgid "Invoiced Amount" +msgstr "請求額" + +#. module: hr_timesheet_invoice +#: view:report.timesheet.line:0 +msgid "Uninvoiced line with billing rate" +msgstr "請求書を未発行率" + +#. module: hr_timesheet_invoice +#: sql_constraint:account.invoice:0 +msgid "Invoice Number must be unique per Company!" +msgstr "請求書番号は会社ごとにユニークでなければいけません。" + +#. module: hr_timesheet_invoice +#: field:report_timesheet.invoice,account_id:0 +msgid "Project" +msgstr "プロジェクト" + +#. module: hr_timesheet_invoice +#: field:report.account.analytic.line.to.invoice,amount:0 +msgid "Amount" +msgstr "金額" + +#. module: hr_timesheet_invoice +#: sql_constraint:account.move.line:0 +msgid "Wrong credit or debit value in accounting entry !" +msgstr "会計入力において貸方または借方の値が誤っています。" + +#. module: hr_timesheet_invoice +#: help:hr.timesheet.invoice.create,name:0 +msgid "The detail of each work done will be displayed on the invoice" +msgstr "請求書には各作業の詳細が表示されます。" + +#. module: hr_timesheet_invoice +#: code:addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py:209 +#, python-format +msgid "Warning !" +msgstr "警告" + +#. module: hr_timesheet_invoice +#: model:ir.model,name:hr_timesheet_invoice.model_hr_timesheet_invoice_create +msgid "Create invoice from timesheet" +msgstr "勤務表から請求書を作成" + +#. module: hr_timesheet_invoice +#: report:account.analytic.profit:0 +msgid "Period to enddate" +msgstr "終了日までの期間" + +#. module: hr_timesheet_invoice +#: model:ir.model,name:hr_timesheet_invoice.model_report_analytic_account_close +msgid "Analytic account to close" +msgstr "終了する分析アカウント" + +#. module: hr_timesheet_invoice +#: view:board.board:0 +msgid "Uninvoice Lines With Billing Rate" +msgstr "課金率を持った請求書を未発効の行" + +#. module: hr_timesheet_invoice +#: view:report.timesheet.line:0 +msgid "Group By..." +msgstr "グループ化…" + +#. module: hr_timesheet_invoice +#: constraint:account.invoice:0 +msgid "Invalid BBA Structured Communication !" +msgstr "無効なBBA構造のコミュニケーション" + +#. module: hr_timesheet_invoice +#: view:hr.timesheet.invoice.create:0 +msgid "Create Invoices" +msgstr "請求書を作成" + +#. module: hr_timesheet_invoice +#: model:ir.model,name:hr_timesheet_invoice.model_report_timesheet_account_date +#: view:report_timesheet.account.date:0 +msgid "Daily timesheet per account" +msgstr "アカウントごとの日々の請求書" + +#. module: hr_timesheet_invoice +#: code:addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py:64 +#, python-format +msgid "Analytic Account incomplete" +msgstr "分析アカウントが未完成" + +#. module: hr_timesheet_invoice +#: model:ir.model,name:hr_timesheet_invoice.model_account_analytic_account +#: field:report.timesheet.line,account_id:0 +#: field:report_timesheet.account,account_id:0 +#: field:report_timesheet.account.date,account_id:0 +msgid "Analytic Account" +msgstr "分析アカウント" + +#. module: hr_timesheet_invoice +#: field:report.analytic.account.close,date_deadline:0 +msgid "Deadline" +msgstr "期限" + +#. module: hr_timesheet_invoice +#: model:ir.actions.act_window,name:hr_timesheet_invoice.act_my_account +msgid "Accounts to invoice" +msgstr "請求するアカウント" + +#. module: hr_timesheet_invoice +#: field:report.analytic.account.close,partner_id:0 +msgid "Partner" +msgstr "パートナ" + +#. module: hr_timesheet_invoice +#: constraint:account.analytic.account:0 +msgid "Error! You can not create recursive analytic accounts." +msgstr "エラー。反復した分析アカウントを作ることはできません" + +#. module: hr_timesheet_invoice +#: help:hr.timesheet.invoice.create,time:0 +msgid "The time of each work done will be displayed on the invoice" +msgstr "請求書には各作業の所要時間が表示されます。" + +#. module: hr_timesheet_invoice +#: model:ir.actions.act_window,name:hr_timesheet_invoice.act_account_analytic_account_2_report_timehsheet_account +msgid "Timesheets" +msgstr "勤務表" + +#. module: hr_timesheet_invoice +#: model:ir.model,name:hr_timesheet_invoice.model_hr_timesheet_analytic_cost_ledger +msgid "hr.timesheet.analytic.cost.ledger" +msgstr "hr.timesheet.analytic.cost.ledger" + +#. module: hr_timesheet_invoice +#: field:hr.timesheet.analytic.profit,date_from:0 +msgid "From" +msgstr "から" + +#. module: hr_timesheet_invoice +#: report:account.analytic.profit:0 +msgid "User or Journal Name" +msgstr "ユーザあるいはジャーナルの名称" + +#. module: hr_timesheet_invoice +#: model:ir.actions.act_window,name:hr_timesheet_invoice.act_res_users_2_report_timesheet_invoice +#: model:ir.actions.act_window,name:hr_timesheet_invoice.action_account_analytic_line_to_invoice +#: model:ir.model,name:hr_timesheet_invoice.model_report_timesheet_invoice +msgid "Costs to invoice" +msgstr "請求書へ計上する経費" + +#. module: hr_timesheet_invoice +#: view:report_timesheet.user:0 +msgid "Timesheet by user in this month" +msgstr "今月のユーザごとの勤務表" + +#. module: hr_timesheet_invoice +#: field:report.account.analytic.line.to.invoice,account_id:0 +#: field:report.analytic.account.close,name:0 +msgid "Analytic account" +msgstr "分析アカウント" + +#. module: hr_timesheet_invoice +#: field:report.analytic.account.close,state:0 +msgid "State" +msgstr "状態" + +#. module: hr_timesheet_invoice +#: code:addons/hr_timesheet_invoice/wizard/hr_timesheet_analytic_profit.py:58 +#, python-format +msgid "Data Insufficient!" +msgstr "日付の指定が足りません。" + +#. module: hr_timesheet_invoice +#: report:hr.timesheet.invoice.account.analytic.account.cost_ledger:0 +msgid "Debit" +msgstr "借方" + +#. module: hr_timesheet_invoice +#: view:hr.timesheet.analytic.cost.ledger:0 +#: view:hr.timesheet.analytic.profit:0 +msgid "Print" +msgstr "印刷" + +#. module: hr_timesheet_invoice +#: help:account.analytic.line,to_invoice:0 +msgid "It allows to set the discount while making invoice" +msgstr "請求書で割引を指定できます。" + +#. module: hr_timesheet_invoice +#: help:hr.timesheet.invoice.create,price:0 +msgid "" +"The cost of each work done will be displayed on the invoice. You probably " +"don't want to check this" +msgstr "各作業の経費を請求書に表示できます。チェックしなくても良いでしょう。" + +#. module: hr_timesheet_invoice +#: view:hr.timesheet.invoice.create.final:0 +msgid "Force to use a special product" +msgstr "特殊な製品を使うことを強制する。" + +#. module: hr_timesheet_invoice +#: model:ir.actions.act_window,name:hr_timesheet_invoice.act_acc_analytic_acc_2_report_acc_analytic_line_to_invoice +msgid "Lines to Invoice" +msgstr "請求書の行" + +#. module: hr_timesheet_invoice +#: code:addons/hr_timesheet_invoice/hr_timesheet_invoice.py:128 +#, python-format +msgid "Error !" +msgstr "エラー" + +#. module: hr_timesheet_invoice +#: model:hr_timesheet_invoice.factor,name:hr_timesheet_invoice.timesheet_invoice_factor3 +msgid "Gratis" +msgstr "無料" + +#. module: hr_timesheet_invoice +#: view:account.analytic.line:0 +msgid "To Invoice" +msgstr "請求書発行" + +#. module: hr_timesheet_invoice +#: help:account.analytic.account,to_invoice:0 +msgid "" +"Fill this field if you plan to automatically generate invoices based on the " +"costs in this analytic account: timesheets, expenses, ...You can configure " +"an automatic invoice rate on analytic accounts." +msgstr "" +"この分析アカウントで、経費に基づいて請求書を自動的に発行するのであれば、勤務表、経費…などの項目を入力してください。分析アカウントで請求書の自動発行を設定" +"することができます。" + +#. module: hr_timesheet_invoice +#: view:hr.timesheet.analytic.profit:0 +#: model:ir.actions.act_window,name:hr_timesheet_invoice.action_hr_timesheet_analytic_profit +#: model:ir.actions.report.xml,name:hr_timesheet_invoice.report_analytical_profit +#: model:ir.ui.menu,name:hr_timesheet_invoice.menu_hr_timesheet_analytic_profit +msgid "Timesheet Profit" +msgstr "勤務表における利益" + +#. module: hr_timesheet_invoice +#: code:addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py:68 +#, python-format +msgid "Partner incomplete" +msgstr "パートナが指定されていません。" + +#. module: hr_timesheet_invoice +#: help:hr.timesheet.invoice.create.final,name:0 +msgid "Display detail of work in the invoice line." +msgstr "請求行の作業の詳細を表示" + +#. module: hr_timesheet_invoice +#: selection:report.account.analytic.line.to.invoice,month:0 +#: selection:report.timesheet.line,month:0 +#: selection:report_timesheet.account,month:0 +#: selection:report_timesheet.account.date,month:0 +#: selection:report_timesheet.user,month:0 +msgid "July" +msgstr "7月" + +#. module: hr_timesheet_invoice +#: report:hr.timesheet.invoice.account.analytic.account.cost_ledger:0 +msgid "Printing date" +msgstr "印刷日" + +#. module: hr_timesheet_invoice +#: model:ir.actions.act_window,name:hr_timesheet_invoice.action_hr_analytic_timesheet_open_tree +#: model:ir.ui.menu,name:hr_timesheet_invoice.menu_hr_analytic_timesheet_tree +msgid "Bill Tasks Works" +msgstr "課金が" + +#. module: hr_timesheet_invoice +#: model:ir.actions.act_window,name:hr_timesheet_invoice.action_hr_timesheet_invoice_factor_form +#: model:ir.ui.menu,name:hr_timesheet_invoice.hr_timesheet_invoice_factor_view +msgid "Types of Invoicing" +msgstr "請求書の種類" + +#. module: hr_timesheet_invoice +#: report:account.analytic.profit:0 +msgid "Theorical" +msgstr "理論上" + +#. module: hr_timesheet_invoice +#: code:addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py:132 +#, python-format +msgid "Configuration Error" +msgstr "設定エラー" + +#. module: hr_timesheet_invoice +#: model:ir.model,name:hr_timesheet_invoice.model_report_account_analytic_line_to_invoice +msgid "Analytic lines to invoice report" +msgstr "請求書への分析行" + +#. module: hr_timesheet_invoice +#: field:account.analytic.account,to_invoice:0 +msgid "Invoice on Timesheet & Costs" +msgstr "勤務表と経費の請求書" + +#. module: hr_timesheet_invoice +#: model:ir.actions.act_window,name:hr_timesheet_invoice.action_timesheet_user_stat_all +msgid "Timesheet by User" +msgstr "ユーザごとの勤務表" + +#. module: hr_timesheet_invoice +#: model:ir.actions.act_window,name:hr_timesheet_invoice.action_timesheet_invoice_stat_all +msgid "Timesheet by Invoice" +msgstr "請求書ごとの勤務表" + +#. module: hr_timesheet_invoice +#: model:ir.actions.act_window,name:hr_timesheet_invoice.action_analytic_account_tree +#: view:report.analytic.account.close:0 +msgid "Expired analytic accounts" +msgstr "期限切れの分析カウント" + +#. module: hr_timesheet_invoice +#: field:hr_timesheet_invoice.factor,factor:0 +msgid "Discount (%)" +msgstr "割引 (%)" + +#. module: hr_timesheet_invoice +#: model:hr_timesheet_invoice.factor,name:hr_timesheet_invoice.timesheet_invoice_factor1 +msgid "Yes (100%)" +msgstr "はい (100%)" + +#. module: hr_timesheet_invoice +#: code:addons/hr_timesheet_invoice/wizard/hr_timesheet_final_invoice_create.py:55 +#: code:addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py:220 +#, python-format +msgid "Invoices" +msgstr "請求書" + +#. module: hr_timesheet_invoice +#: selection:report.account.analytic.line.to.invoice,month:0 +#: selection:report.timesheet.line,month:0 +#: selection:report_timesheet.account,month:0 +#: selection:report_timesheet.account.date,month:0 +#: selection:report_timesheet.user,month:0 +msgid "December" +msgstr "12月" + +#. module: hr_timesheet_invoice +#: view:hr.timesheet.invoice.create.final:0 +msgid "Invoice contract" +msgstr "請求書の連絡先" + +#. module: hr_timesheet_invoice +#: constraint:account.move.line:0 +msgid "" +"The selected account of your Journal Entry forces to provide a secondary " +"currency. You should remove the secondary currency on the account or select " +"a multi-currency view on the journal." +msgstr "選択した仕訳のアカウントは第2の通貨の入力を要求しています。アカウントの第2通貨を削除するか、仕訳で多国通貨ビューを選択して下さい。" + +#. module: hr_timesheet_invoice +#: field:report.account.analytic.line.to.invoice,month:0 +#: view:report.timesheet.line:0 +#: field:report.timesheet.line,month:0 +#: field:report_timesheet.account,month:0 +#: field:report_timesheet.account.date,month:0 +#: field:report_timesheet.user,month:0 +msgid "Month" +msgstr "月" + +#. module: hr_timesheet_invoice +#: report:account.analytic.profit:0 +msgid "Currency" +msgstr "通貨" + +#. module: hr_timesheet_invoice +#: model:ir.model,name:hr_timesheet_invoice.model_account_move_line +msgid "Journal Items" +msgstr "仕訳項目" + +#. module: hr_timesheet_invoice +#: help:hr.timesheet.invoice.create,product:0 +msgid "" +"Complete this field only if you want to force to use a specific product. " +"Keep empty to use the real product that comes from the cost." +msgstr "特定の製品を使うのであれば、この項目を完成させて下さい。経費でしたい製品を使うのであれば、空欄にして下さい。" + +#. module: hr_timesheet_invoice +#: view:hr.timesheet.analytic.profit:0 +msgid "Users" +msgstr "ユーザ" + +#. module: hr_timesheet_invoice +#: view:report.timesheet.line:0 +msgid "Non Assigned timesheets to users" +msgstr "ユーザに割り当てられていない勤務表" + +#. module: hr_timesheet_invoice +#: view:account.analytic.line:0 +#: field:report.timesheet.line,invoice_id:0 +msgid "Invoiced" +msgstr "請求済み" + +#. module: hr_timesheet_invoice +#: field:report.analytic.account.close,quantity_max:0 +msgid "Max. Quantity" +msgstr "最大数" + +#. module: hr_timesheet_invoice +#: constraint:account.move.line:0 +msgid "" +"The date of your Journal Entry is not in the defined period! You should " +"change the date or remove this constraint from the journal." +msgstr "仕訳エントリーの日付が定義された期間ではありません。日付を変更するか仕訳からこの制約を削除して下さい。" + +#. module: hr_timesheet_invoice +#: code:addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py:132 +#, python-format +msgid "No income account defined for product '%s'" +msgstr "製品 '%s' の収益アカウントが定義されていません。" + +#. module: hr_timesheet_invoice +#: report:account.analytic.profit:0 +msgid "Invoice rate by user" +msgstr "ユーザごとの請求書率" + +#. module: hr_timesheet_invoice +#: view:report_timesheet.account:0 +msgid "Timesheet by account" +msgstr "アカウントごとの勤務表" + +#. module: hr_timesheet_invoice +#: view:account.analytic.account:0 +msgid "Pending" +msgstr "保留" + +#. module: hr_timesheet_invoice +#: help:account.analytic.account,amount_invoiced:0 +msgid "Total invoiced" +msgstr "全ての請求済み" + +#. module: hr_timesheet_invoice +#: report:hr.timesheet.invoice.account.analytic.account.cost_ledger:0 +msgid "Period to" +msgstr "期間まで" + +#. module: hr_timesheet_invoice +#: model:ir.model,name:hr_timesheet_invoice.model_account_analytic_line +msgid "Analytic Line" +msgstr "分析行" + +#. module: hr_timesheet_invoice +#: selection:report.account.analytic.line.to.invoice,month:0 +#: selection:report.timesheet.line,month:0 +#: selection:report_timesheet.account,month:0 +#: selection:report_timesheet.account.date,month:0 +#: selection:report_timesheet.user,month:0 +msgid "August" +msgstr "8月" + +#. module: hr_timesheet_invoice +#: report:hr.timesheet.invoice.account.analytic.account.cost_ledger:0 +#: model:ir.actions.act_window,name:hr_timesheet_invoice.action_hr_timesheet_invoice_cost_ledger +#: model:ir.actions.report.xml,name:hr_timesheet_invoice.account_analytic_account_cost_ledger +msgid "Cost Ledger" +msgstr "経費台帳" + +#. module: hr_timesheet_invoice +#: selection:report.account.analytic.line.to.invoice,month:0 +#: selection:report.timesheet.line,month:0 +#: selection:report_timesheet.account,month:0 +#: selection:report_timesheet.account.date,month:0 +#: selection:report_timesheet.user,month:0 +msgid "October" +msgstr "10月" + +#. module: hr_timesheet_invoice +#: model:hr_timesheet_invoice.factor,name:hr_timesheet_invoice.timesheet_invoice_factor2 +msgid "50%" +msgstr "50%" + +#. module: hr_timesheet_invoice +#: selection:report.account.analytic.line.to.invoice,month:0 +#: selection:report.timesheet.line,month:0 +#: selection:report_timesheet.account,month:0 +#: selection:report_timesheet.account.date,month:0 +#: selection:report_timesheet.user,month:0 +msgid "June" +msgstr "6月" + +#. module: hr_timesheet_invoice +#: help:hr.timesheet.invoice.create.final,date:0 +msgid "Display date in the history of works" +msgstr "作業履歴の日付を表示" + +#. module: hr_timesheet_invoice +#: model:ir.model,name:hr_timesheet_invoice.model_report_timesheet_account +#: view:report_timesheet.account:0 +msgid "Timesheet per account" +msgstr "アカウントごとの勤務表" + +#. module: hr_timesheet_invoice +#: model:ir.actions.act_window,name:hr_timesheet_invoice.action_timesheet_account_stat_all +msgid "Timesheet by Account" +msgstr "アカウントごとの勤務表" + +#. module: hr_timesheet_invoice +#: field:hr.timesheet.invoice.create,date:0 +#: field:hr.timesheet.invoice.create.final,date:0 +#: field:report.timesheet.line,date:0 +msgid "Date" +msgstr "日付" + +#. module: hr_timesheet_invoice +#: code:addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py:69 +#, python-format +msgid "Please fill in the Address field in the Partner: %s." +msgstr "パートナ %s の住所を入力して下さい。" + +#. module: hr_timesheet_invoice +#: selection:report.account.analytic.line.to.invoice,month:0 +#: selection:report.timesheet.line,month:0 +#: selection:report_timesheet.account,month:0 +#: selection:report_timesheet.account.date,month:0 +#: selection:report_timesheet.user,month:0 +msgid "November" +msgstr "11月" + +#. module: hr_timesheet_invoice +#: view:report.timesheet.line:0 +msgid "Extended Filters..." +msgstr "拡張フィルタ…" + +#. module: hr_timesheet_invoice +#: field:report_timesheet.invoice,amount_invoice:0 +msgid "To invoice" +msgstr "請求書発行" + +#. module: hr_timesheet_invoice +#: report:account.analytic.profit:0 +msgid "Eff." +msgstr "有効" + +#. module: hr_timesheet_invoice +#: field:hr.timesheet.analytic.profit,employee_ids:0 +#: view:report.timesheet.line:0 +#: field:report.timesheet.line,user_id:0 +#: field:report_timesheet.account,user_id:0 +#: field:report_timesheet.account.date,user_id:0 +#: field:report_timesheet.invoice,user_id:0 +#: field:report_timesheet.user,user_id:0 +msgid "User" +msgstr "ユーザ" + +#. module: hr_timesheet_invoice +#: report:hr.timesheet.invoice.account.analytic.account.cost_ledger:0 +msgid "J.C. /Move name" +msgstr "職務カテゴリ / 氏名を移す" + +#. module: hr_timesheet_invoice +#: report:hr.timesheet.invoice.account.analytic.account.cost_ledger:0 +msgid "Total:" +msgstr "合計:" + +#. module: hr_timesheet_invoice +#: selection:report.account.analytic.line.to.invoice,month:0 +#: selection:report.timesheet.line,month:0 +#: selection:report_timesheet.account,month:0 +#: selection:report_timesheet.account.date,month:0 +#: selection:report_timesheet.user,month:0 +msgid "January" +msgstr "1月" + +#. module: hr_timesheet_invoice +#: constraint:account.move.line:0 +msgid "You can not create journal items on closed account." +msgstr "閉じたアカウントには仕訳項目を作ることはできません。" + +#. module: hr_timesheet_invoice +#: report:hr.timesheet.invoice.account.analytic.account.cost_ledger:0 +msgid "Credit" +msgstr "貸勘定" + +#. module: hr_timesheet_invoice +#: code:addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py:108 +#, python-format +msgid "Error" +msgstr "エラー" + +#. module: hr_timesheet_invoice +#: field:hr.timesheet.analytic.cost.ledger,date2:0 +msgid "End of period" +msgstr "期末" + +#. module: hr_timesheet_invoice +#: view:hr.timesheet.invoice.create.final:0 +msgid "Do you want to display work details on the invoice ?" +msgstr "この請求書の作業明細を表示しますか。" + +#. module: hr_timesheet_invoice +#: report:hr.timesheet.invoice.account.analytic.account.cost_ledger:0 +#: field:report.analytic.account.close,balance:0 +msgid "Balance" +msgstr "残高" + +#. module: hr_timesheet_invoice +#: constraint:account.move.line:0 +msgid "You can not create journal items on an account of type view." +msgstr "閲覧タイプのアカウントでは仕訳項目を作ることはできません。" + +#. module: hr_timesheet_invoice +#: field:report.analytic.account.close,quantity:0 +#: view:report.timesheet.line:0 +#: field:report.timesheet.line,quantity:0 +#: field:report_timesheet.account,quantity:0 +#: field:report_timesheet.account.date,quantity:0 +#: field:report_timesheet.invoice,quantity:0 +#: field:report_timesheet.user,quantity:0 +msgid "Quantity" +msgstr "数量" + +#. module: hr_timesheet_invoice +#: report:hr.timesheet.invoice.account.analytic.account.cost_ledger:0 +msgid "Date/Code" +msgstr "日付 / コード" + +#. module: hr_timesheet_invoice +#: field:report.timesheet.line,general_account_id:0 +msgid "General Account" +msgstr "一般アカウント" + +#. module: hr_timesheet_invoice +#: model:ir.model,name:hr_timesheet_invoice.model_hr_timesheet_analytic_profit +msgid "Print Timesheet Profit" +msgstr "勤務表プロファイルの印刷" + +#. module: hr_timesheet_invoice +#: report:account.analytic.profit:0 +msgid "Totals:" +msgstr "合計:" + +#. module: hr_timesheet_invoice +#: view:hr.timesheet.invoice.create:0 +msgid "Do you want to show details of work in invoice ?" +msgstr "請求書の作業明細を表示しますか?" + +#. module: hr_timesheet_invoice +#: report:hr.timesheet.invoice.account.analytic.account.cost_ledger:0 +msgid "Period from" +msgstr "期間の開始日" + +#. module: hr_timesheet_invoice +#: field:account.analytic.account,amount_max:0 +msgid "Max. Invoice Price" +msgstr "最大請求価格" + +#. module: hr_timesheet_invoice +#: selection:report.account.analytic.line.to.invoice,month:0 +#: selection:report.timesheet.line,month:0 +#: selection:report_timesheet.account,month:0 +#: selection:report_timesheet.account.date,month:0 +#: selection:report_timesheet.user,month:0 +msgid "September" +msgstr "9月" + +#. module: hr_timesheet_invoice +#: constraint:account.analytic.line:0 +msgid "You can not create analytic line on view account." +msgstr "閲覧アカウントでは分析行を作ることはできません。" + +#. module: hr_timesheet_invoice +#: field:account.analytic.line,invoice_id:0 +#: model:ir.model,name:hr_timesheet_invoice.model_account_invoice +#: view:report.timesheet.line:0 +msgid "Invoice" +msgstr "請求書" + +#. module: hr_timesheet_invoice +#: constraint:hr.analytic.timesheet:0 +msgid "You cannot modify an entry in a Confirmed/Done timesheet !." +msgstr "確認済み/完了した勤務表の記入項目を変更することはできません。" + +#. module: hr_timesheet_invoice +#: view:account.analytic.account:0 +#: view:hr.timesheet.analytic.cost.ledger:0 +#: view:hr.timesheet.analytic.profit:0 +#: view:hr.timesheet.invoice.create:0 +#: view:hr.timesheet.invoice.create.final:0 +msgid "Cancel" +msgstr "キャンセル" + +#. module: hr_timesheet_invoice +#: view:account.analytic.account:0 +msgid "Close" +msgstr "閉じる" + +#. module: hr_timesheet_invoice +#: help:hr.timesheet.invoice.create.final,price:0 +msgid "Display cost of the item you reinvoice" +msgstr "再請求した項目の経費を表示" + +#. module: hr_timesheet_invoice +#: model:ir.actions.act_window,help:hr_timesheet_invoice.action_hr_timesheet_invoice_factor_form +msgid "" +"OpenERP allows you to create default invoicing types. You might have to " +"regularly assign discounts because of a specific contract or agreement with " +"a customer. From this menu, you can create additional types of invoicing to " +"speed up your invoicing." +msgstr "" +"デフォルトの請求タイプを作ることができます。顧客との契約あるいは取決めに基づいて、割引を定期的に指定する必要があるでしょう。このメニューで追加の請求の定義" +"を作っておくと請求書作成が簡便になります。" + +#. module: hr_timesheet_invoice +#: model:ir.actions.act_window,name:hr_timesheet_invoice.action_timesheet_line_stat_all +#: model:ir.model,name:hr_timesheet_invoice.model_hr_analytic_timesheet +#: model:ir.model,name:hr_timesheet_invoice.model_report_timesheet_line +#: view:report.timesheet.line:0 +msgid "Timesheet Line" +msgstr "勤務表の行" + +#. module: hr_timesheet_invoice +#: view:hr.timesheet.invoice.create:0 +msgid "Billing Data" +msgstr "請求日" + +#. module: hr_timesheet_invoice +#: code:addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py:65 +#, python-format +msgid "" +"Please fill in the Partner or Customer and Sale Pricelist fields in the " +"Analytic Account:\n" +"%s" +msgstr "" +"分析アカウントで、パートナあるいは顧客と販売価格を入力してください。\n" +"%s" + +#. module: hr_timesheet_invoice +#: constraint:account.move.line:0 +msgid "Company must be the same for its related account and period." +msgstr "会社は関連するアカウントと期間に同じでなければなりません。" + +#. module: hr_timesheet_invoice +#: help:hr_timesheet_invoice.factor,customer_name:0 +msgid "Label for the customer" +msgstr "顧客のラベル" + +#. module: hr_timesheet_invoice +#: field:hr.timesheet.analytic.profit,date_to:0 +msgid "To" +msgstr "まで" + +#. module: hr_timesheet_invoice +#: view:hr.timesheet.invoice.create:0 +#: view:hr.timesheet.invoice.create.final:0 +#: model:ir.actions.act_window,name:hr_timesheet_invoice.action_hr_timesheet_invoice_create +#: model:ir.actions.act_window,name:hr_timesheet_invoice.action_hr_timesheet_invoice_create_final +msgid "Create Invoice" +msgstr "請求書作成" + +#. module: hr_timesheet_invoice +#: code:addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py:108 +#, python-format +msgid "At least one line has no product !" +msgstr "製品が指定されていない行があります。" + +#. module: hr_timesheet_invoice +#: help:hr.timesheet.invoice.create,date:0 +msgid "The real date of each work will be displayed on the invoice" +msgstr "作業の実日付が請求書に表示されます。" + +#. module: hr_timesheet_invoice +#: field:account.analytic.account,pricelist_id:0 +msgid "Customer Pricelist" +msgstr "顧客の価格リスト" + +#. module: hr_timesheet_invoice +#: view:report_timesheet.invoice:0 +msgid "Timesheets to invoice" +msgstr "請求する勤務表" + +#. module: hr_timesheet_invoice +#: field:hr.timesheet.analytic.cost.ledger,date1:0 +msgid "Start of period" +msgstr "期間の開始" + +#. module: hr_timesheet_invoice +#: model:ir.actions.act_window,name:hr_timesheet_invoice.action_timesheet_account_date_stat_all +msgid "Daily Timesheet by Account" +msgstr "アカウントごとの日々の勤務表" + +#. module: hr_timesheet_invoice +#: field:hr.timesheet.invoice.create,product:0 +#: field:hr.timesheet.invoice.create.final,product:0 +#: field:report.account.analytic.line.to.invoice,product_id:0 +#: view:report.timesheet.line:0 +#: field:report.timesheet.line,product_id:0 +msgid "Product" +msgstr "製品" + +#. module: hr_timesheet_invoice +#: model:ir.actions.act_window,name:hr_timesheet_invoice.action_timesheet_uninvoiced_line +msgid "Uninvoice lines with billing rate" +msgstr "請求料率を持つ未請求の行" + +#. module: hr_timesheet_invoice +#: report:account.analytic.profit:0 +msgid "%" +msgstr "%" + +#. module: hr_timesheet_invoice +#: field:hr_timesheet_invoice.factor,name:0 +msgid "Internal name" +msgstr "内部の名称" + +#. module: hr_timesheet_invoice +#: selection:report.account.analytic.line.to.invoice,month:0 +#: selection:report.timesheet.line,month:0 +#: selection:report_timesheet.account,month:0 +#: selection:report_timesheet.account.date,month:0 +#: selection:report_timesheet.user,month:0 +msgid "May" +msgstr "5月" + +#. module: hr_timesheet_invoice +#: field:hr.timesheet.analytic.profit,journal_ids:0 +msgid "Journal" +msgstr "仕訳" + +#. module: hr_timesheet_invoice +#: help:hr.timesheet.invoice.create.final,product:0 +msgid "The product that will be used to invoice the remaining amount" +msgstr "残高の請求に使われる製品" + +#. module: hr_timesheet_invoice +#: model:ir.actions.act_window,help:hr_timesheet_invoice.action_hr_analytic_timesheet_open_tree +msgid "" +"This list shows you every task you can invoice to the customer. Select the " +"lines and click the Action button to generate the invoices automatically." +msgstr "この票は、顧客への請求できる処理を示します。行を指定してアクション・ボタンをクリックすると、請求書は自動的に作成されます。" + +#. module: hr_timesheet_invoice +#: view:report_timesheet.account.date:0 +msgid "Daily Timesheets of this month" +msgstr "今月の日々の勤務表" + +#. module: hr_timesheet_invoice +#: code:addons/hr_timesheet_invoice/wizard/hr_timesheet_analytic_profit.py:58 +#, python-format +msgid "No Records Found for Report!" +msgstr "報告書のためのレコードがありません。" + +#. module: hr_timesheet_invoice +#: help:account.analytic.account,amount_max:0 +msgid "Keep empty if this contract is not limited to a total fixed price." +msgstr "この契約が合計の固定価格に達していなければ、空白にしておいて下さい。" + +#. module: hr_timesheet_invoice +#: view:report_timesheet.invoice:0 +msgid "Timesheet by invoice" +msgstr "請求のための勤務表" + +#. module: hr_timesheet_invoice +#: view:report.account.analytic.line.to.invoice:0 +#: view:report.timesheet.line:0 +#: view:report_timesheet.account:0 +#: view:report_timesheet.account.date:0 +#: view:report_timesheet.user:0 +msgid "This Month" +msgstr "今月" + +#. module: hr_timesheet_invoice +#: view:hr.timesheet.analytic.cost.ledger:0 +msgid "Select Period" +msgstr "指定した期間" + +#. module: hr_timesheet_invoice +#: report:account.analytic.profit:0 +msgid "Period from startdate" +msgstr "開始日からの経過期間" + +#. module: hr_timesheet_invoice +#: selection:report.account.analytic.line.to.invoice,month:0 +#: selection:report.timesheet.line,month:0 +#: selection:report_timesheet.account,month:0 +#: selection:report_timesheet.account.date,month:0 +#: selection:report_timesheet.user,month:0 +msgid "February" +msgstr "2月" + +#. module: hr_timesheet_invoice +#: field:hr_timesheet_invoice.factor,customer_name:0 +msgid "Name" +msgstr "氏名" + +#. module: hr_timesheet_invoice +#: view:report_timesheet.account.date:0 +msgid "Daily timesheet by account" +msgstr "アカウントごとの日々の勤務表" + +#. module: hr_timesheet_invoice +#: field:report.account.analytic.line.to.invoice,sale_price:0 +msgid "Sale price" +msgstr "販売価格" + +#. module: hr_timesheet_invoice +#: model:ir.actions.act_window,name:hr_timesheet_invoice.act_res_users_2_report_timesheet_user +msgid "Timesheets per day" +msgstr "日ごとの勤務表" + +#. module: hr_timesheet_invoice +#: selection:report.account.analytic.line.to.invoice,month:0 +#: selection:report.timesheet.line,month:0 +#: selection:report_timesheet.account,month:0 +#: selection:report_timesheet.account.date,month:0 +#: selection:report_timesheet.user,month:0 +msgid "April" +msgstr "4月" + +#. module: hr_timesheet_invoice +#: view:account.analytic.account:0 +msgid "Invoicing Data" +msgstr "請求日" + +#. module: hr_timesheet_invoice +#: help:hr_timesheet_invoice.factor,factor:0 +msgid "Discount in percentage" +msgstr "割引パーセント" + +#. module: hr_timesheet_invoice +#: code:addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py:209 +#, python-format +msgid "Invoice is already linked to some of the analytic line(s)!" +msgstr "請求は既に分析行に連携されています。" + +#. module: hr_timesheet_invoice +#: view:hr_timesheet_invoice.factor:0 +msgid "Types of invoicing" +msgstr "請求タイプ" + +#. module: hr_timesheet_invoice +#: model:ir.actions.act_window,name:hr_timesheet_invoice.act_res_users_2_report_timehsheet_account +msgid "Timesheets per account" +msgstr "アカウントごとの勤務表" + +#. module: hr_timesheet_invoice +#: field:hr.timesheet.invoice.create,name:0 +msgid "Description" +msgstr "詳細" + +#. module: hr_timesheet_invoice +#: report:account.analytic.profit:0 +#: field:report.account.analytic.line.to.invoice,unit_amount:0 +msgid "Units" +msgstr "単位" + +#. module: hr_timesheet_invoice +#: view:report_timesheet.user:0 +msgid "Timesheet by user in this year" +msgstr "今年度のユーザごとの勤務表" + +#. module: hr_timesheet_invoice +#: field:account.analytic.line,to_invoice:0 +msgid "Type of Invoicing" +msgstr "請求のタイプ" + +#. module: hr_timesheet_invoice +#: view:report.account.analytic.line.to.invoice:0 +msgid "Analytic Lines to Invoice" +msgstr "請求すべき分析行" + +#. module: hr_timesheet_invoice +#: view:report.timesheet.line:0 +msgid "Timesheet lines in this month" +msgstr "今月の勤務表の行" + +#. module: hr_timesheet_invoice +#: view:account.analytic.account:0 +msgid "Invoicing Statistics" +msgstr "請求の統計" + +#. module: hr_timesheet_invoice +#: field:report_timesheet.invoice,manager_id:0 +msgid "Manager" +msgstr "マネジャ" + +#. module: hr_timesheet_invoice +#: report:account.analytic.profit:0 +#: field:hr.timesheet.invoice.create,price:0 +#: field:hr.timesheet.invoice.create.final,price:0 +#: view:report.timesheet.line:0 +#: field:report.timesheet.line,cost:0 +#: field:report_timesheet.user,cost:0 +msgid "Cost" +msgstr "経費" + +#. module: hr_timesheet_invoice +#: field:report.account.analytic.line.to.invoice,name:0 +#: view:report.timesheet.line:0 +#: field:report.timesheet.line,name:0 +#: field:report_timesheet.account,name:0 +#: field:report_timesheet.account.date,name:0 +#: field:report_timesheet.user,name:0 +msgid "Year" +msgstr "年" + +#. module: hr_timesheet_invoice +#: view:report.timesheet.line:0 +msgid "Timesheet lines during last 7 days" +msgstr "過去7日間の勤務表の行" diff --git a/addons/hr_timesheet_sheet/i18n/ja.po b/addons/hr_timesheet_sheet/i18n/ja.po new file mode 100644 index 00000000000..7e2d71bba64 --- /dev/null +++ b/addons/hr_timesheet_sheet/i18n/ja.po @@ -0,0 +1,1042 @@ +# Japanese translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 01:37+0100\n" +"PO-Revision-Date: 2012-04-18 01:34+0000\n" +"Last-Translator: Masaki Yamaya \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-18 04:41+0000\n" +"X-Generator: Launchpad (build 15108)\n" + +#. module: hr_timesheet_sheet +#: field:hr.analytic.timesheet,sheet_id:0 field:hr.attendance,sheet_id:0 +#: field:hr_timesheet_sheet.sheet.account,sheet_id:0 +#: field:hr_timesheet_sheet.sheet.day,sheet_id:0 +msgid "Sheet" +msgstr "表" + +#. module: hr_timesheet_sheet +#: model:process.transition,name:hr_timesheet_sheet.process_transition_timesheetdraft0 +msgid "Service" +msgstr "サービス" + +#. module: hr_timesheet_sheet +#: code:addons/hr_timesheet_sheet/wizard/hr_timesheet_current.py:38 +#, python-format +msgid "No employee defined for your user !" +msgstr "このユーザには従業員が定義されていません。" + +#. module: hr_timesheet_sheet +#: view:hr.timesheet.report:0 view:hr_timesheet_sheet.sheet:0 +#: view:timesheet.report:0 +msgid "Group By..." +msgstr "グループ化…" + +#. module: hr_timesheet_sheet +#: field:hr_timesheet_sheet.sheet,total_attendance:0 +#: field:hr_timesheet_sheet.sheet,total_attendance_day:0 +msgid "Total Attendance" +msgstr "出勤日の合計" + +#. module: hr_timesheet_sheet +#: view:hr_timesheet_sheet.sheet:0 +#: field:hr_timesheet_sheet.sheet,department_id:0 view:timesheet.report:0 +#: field:timesheet.report,department_id:0 +msgid "Department" +msgstr "部門" + +#. module: hr_timesheet_sheet +#: view:hr.timesheet.report:0 view:timesheet.report:0 +msgid "Timesheet in current year" +msgstr "今年度の勤務表" + +#. module: hr_timesheet_sheet +#: model:process.transition,name:hr_timesheet_sheet.process_transition_tasktimesheet0 +msgid "Task timesheet" +msgstr "仕事時間表" + +#. module: hr_timesheet_sheet +#: view:hr_timesheet_sheet.sheet:0 +msgid "Today" +msgstr "今日" + +#. module: hr_timesheet_sheet +#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:274 +#, python-format +msgid "" +"Please verify that the total difference of the sheet is lower than %.2f !" +msgstr "表の差分は %.2f よりも小さいことを確認してください。" + +#. module: hr_timesheet_sheet +#: selection:hr.timesheet.report,month:0 selection:timesheet.report,month:0 +msgid "March" +msgstr "3月" + +#. module: hr_timesheet_sheet +#: view:timesheet.report:0 field:timesheet.report,cost:0 +msgid "#Cost" +msgstr "#経費" + +#. module: hr_timesheet_sheet +#: view:hr.timesheet.report:0 view:timesheet.report:0 +msgid "Timesheet of last month" +msgstr "先月の勤務表" + +#. module: hr_timesheet_sheet +#: view:hr.timesheet.report:0 field:hr.timesheet.report,company_id:0 +#: field:hr_timesheet_sheet.sheet,company_id:0 view:timesheet.report:0 +#: field:timesheet.report,company_id:0 +msgid "Company" +msgstr "会社" + +#. module: hr_timesheet_sheet +#: view:hr.timesheet.report:0 view:hr_timesheet_sheet.sheet:0 +#: model:ir.model,name:hr_timesheet_sheet.model_hr_timesheet_report +#: model:ir.model,name:hr_timesheet_sheet.model_hr_timesheet_sheet_sheet +#: model:ir.model,name:hr_timesheet_sheet.model_timesheet_report +#: model:process.node,name:hr_timesheet_sheet.process_node_timesheet0 +#: view:timesheet.report:0 +msgid "Timesheet" +msgstr "勤務表" + +#. module: hr_timesheet_sheet +#: view:hr_timesheet_sheet.sheet:0 +msgid "Set to Draft" +msgstr "ドラフトに設定" + +#. module: hr_timesheet_sheet +#: field:hr_timesheet_sheet.sheet,date_to:0 field:timesheet.report,date_to:0 +msgid "Date to" +msgstr "終了日付" + +#. module: hr_timesheet_sheet +#: model:process.node,note:hr_timesheet_sheet.process_node_invoiceonwork0 +msgid "Based on the timesheet" +msgstr "勤務表に基づく" + +#. module: hr_timesheet_sheet +#: view:hr.timesheet.report:0 view:timesheet.report:0 +msgid "Group by day of date" +msgstr "日付の曜日によってグループ化" + +#. module: hr_timesheet_sheet +#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:615 +#, python-format +msgid "You cannot modify an entry in a confirmed timesheet!" +msgstr "確認済みの勤務表の記入項を変更することはできません。" + +#. module: hr_timesheet_sheet +#: model:process.transition.action,name:hr_timesheet_sheet.process_transition_action_validatetimesheet0 +msgid "Validate" +msgstr "検証する" + +#. module: hr_timesheet_sheet +#: selection:hr_timesheet_sheet.sheet,state:0 +msgid "Approved" +msgstr "承認済み" + +#. module: hr_timesheet_sheet +#: selection:hr_timesheet_sheet.sheet,state_attendance:0 +msgid "Present" +msgstr "現在" + +#. module: hr_timesheet_sheet +#: view:hr.timesheet.report:0 +msgid "Total Cost" +msgstr "合計経費" + +#. module: hr_timesheet_sheet +#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:263 +#, python-format +msgid "" +"In order to create a timesheet for this employee, you must assign the " +"employee to an analytic journal!" +msgstr "この従業員の勤務表を作成するには、分析仕訳に従業員を割り当てる必要があります。" + +#. module: hr_timesheet_sheet +#: view:hr_timesheet_sheet.sheet:0 +#: model:process.transition.action,name:hr_timesheet_sheet.process_transition_action_refusetimesheet0 +msgid "Refuse" +msgstr "拒否" + +#. module: hr_timesheet_sheet +#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:619 +#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:639 +#, python-format +msgid "" +"You cannot enter an attendance date outside the current timesheet dates!" +msgstr "勤務表の日付の枠外に出勤日を指定することはできません。" + +#. module: hr_timesheet_sheet +#: model:ir.actions.act_window,help:hr_timesheet_sheet.action_hr_timesheet_current_open +msgid "" +"My Timesheet opens your timesheet so that you can book your activities into " +"the system. From the same form, you can register your attendances (Sign " +"In/Out) and describe the working hours made on the different projects. At " +"the end of the period defined in the company, the timesheet is confirmed by " +"the user and can be validated by his manager. If required, as defined on the " +"project, you can generate the invoices based on the timesheet." +msgstr "" +"私の勤務表からあなたの勤務表を開きましたので、あなたの活動をシステムに登録することができます。あなたは出退勤(サインイン / " +"アウト)を記録して、プロジェクトごとの勤務時間を記録することができます。 プロジェクト期間の終わりに記録を確認して、マネジャが承認することができます。必要" +"ならば、プロジェクトで定義されたように、あなたが勤務表に基づいて請求書を作成することができます。" + +#. module: hr_timesheet_sheet +#: view:hr_timesheet_sheet.sheet.day:0 +msgid "Total Difference" +msgstr "差分の合計" + +#. module: hr_timesheet_sheet +#: view:hr.timesheet.report:0 view:timesheet.report:0 +msgid " Month-1 " +msgstr " 月次-1 " + +#. module: hr_timesheet_sheet +#: view:hr_timesheet_sheet.sheet:0 +msgid "My Departments Timesheet" +msgstr "私の部門の勤務表" + +#. module: hr_timesheet_sheet +#: model:ir.actions.act_window,name:hr_timesheet_sheet.act_hr_timesheet_sheet_sheet_by_day +msgid "Timesheet by Day" +msgstr "日ごとの勤務表" + +#. module: hr_timesheet_sheet +#: field:hr_timesheet_sheet.sheet.account,name:0 +msgid "Project / Analytic Account" +msgstr "プロジェクト / 分析アカウント" + +#. module: hr_timesheet_sheet +#: model:process.transition,name:hr_timesheet_sheet.process_transition_validatetimesheet0 +msgid "Validation" +msgstr "承認" + +#. module: hr_timesheet_sheet +#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:274 +#, python-format +msgid "Warning !" +msgstr "警告" + +#. module: hr_timesheet_sheet +#: model:process.node,note:hr_timesheet_sheet.process_node_attendance0 +msgid "Employee's timesheet entry" +msgstr "従業員の勤務表記入項目" + +#. module: hr_timesheet_sheet +#: view:hr.timesheet.report:0 field:hr.timesheet.report,account_id:0 +#: view:timesheet.report:0 field:timesheet.report,account_id:0 +msgid "Analytic Account" +msgstr "分析アカウント" + +#. module: hr_timesheet_sheet +#: field:timesheet.report,nbr:0 +msgid "#Nbr" +msgstr "#番号" + +#. module: hr_timesheet_sheet +#: field:hr_timesheet_sheet.sheet,date_from:0 +#: field:timesheet.report,date_from:0 +msgid "Date from" +msgstr "開始日" + +#. module: hr_timesheet_sheet +#: view:timesheet.report:0 +msgid " Month " +msgstr " 月 " + +#. module: hr_timesheet_sheet +#: view:hr_timesheet_sheet.sheet:0 +#: model:ir.actions.act_window,name:hr_timesheet_sheet.act_hr_employee_2_hr_timesheet +#: model:ir.actions.act_window,name:hr_timesheet_sheet.act_hr_timesheet_sheet_form +#: model:ir.actions.act_window,name:hr_timesheet_sheet.action_hr_timesheet_sheet_graph +#: model:ir.ui.menu,name:hr_timesheet_sheet.menu_act_hr_timesheet_sheet_form +#: view:res.company:0 +msgid "Timesheets" +msgstr "勤務表" + +#. module: hr_timesheet_sheet +#: model:process.node,name:hr_timesheet_sheet.process_node_confirmedtimesheet0 +#: view:timesheet.report:0 selection:timesheet.report,state:0 +msgid "Confirmed" +msgstr "確認済み" + +#. module: hr_timesheet_sheet +#: field:hr_timesheet_sheet.sheet.day,total_attendance:0 +#: model:ir.model,name:hr_timesheet_sheet.model_hr_attendance +#: model:process.node,name:hr_timesheet_sheet.process_node_attendance0 +msgid "Attendance" +msgstr "勤怠" + +#. module: hr_timesheet_sheet +#: model:process.transition.action,name:hr_timesheet_sheet.process_transition_action_draftconfirmtimesheet0 +msgid "Confirm" +msgstr "確認" + +#. module: hr_timesheet_sheet +#: field:hr_timesheet_sheet.sheet,timesheet_ids:0 +msgid "Timesheet lines" +msgstr "勤務表の行" + +#. module: hr_timesheet_sheet +#: constraint:res.company:0 +msgid "Error! You can not create recursive companies." +msgstr "エラー。再帰的な会社を作ることはできません。" + +#. module: hr_timesheet_sheet +#: field:hr_timesheet_sheet.sheet,state:0 view:timesheet.report:0 +#: field:timesheet.report,state:0 +msgid "State" +msgstr "状態" + +#. module: hr_timesheet_sheet +#: model:process.node,note:hr_timesheet_sheet.process_node_confirmedtimesheet0 +msgid "State is 'confirmed'." +msgstr "状態を確認済み。" + +#. module: hr_timesheet_sheet +#: field:hr_timesheet_sheet.sheet,employee_id:0 +msgid "Employee" +msgstr "従業員" + +#. module: hr_timesheet_sheet +#: selection:hr_timesheet_sheet.sheet,state:0 +#: selection:timesheet.report,state:0 +msgid "New" +msgstr "新規" + +#. module: hr_timesheet_sheet +#: model:ir.actions.act_window,name:hr_timesheet_sheet.action_week_attendance_graph +msgid "My Total Attendances By Week" +msgstr "週ごとの全ての勤怠" + +#. module: hr_timesheet_sheet +#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:241 +#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:246 +#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:248 +#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:250 +#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:257 +#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:259 +#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:261 +#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:263 +#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:318 +#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:548 +#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:615 +#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:646 +#: code:addons/hr_timesheet_sheet/wizard/hr_timesheet_current.py:38 +#, python-format +msgid "Error !" +msgstr "エラー" + +#. module: hr_timesheet_sheet +#: field:hr_timesheet_sheet.sheet.account,total:0 +msgid "Total Time" +msgstr "合計時間" + +#. module: hr_timesheet_sheet +#: view:hr_timesheet_sheet.sheet:0 +#: model:ir.actions.act_window,name:hr_timesheet_sheet.act_hr_timesheet_sheet_sheet_2_hr_analytic_timesheet +msgid "Timesheet Lines" +msgstr "勤務表の行" + +#. module: hr_timesheet_sheet +#: view:hr.timesheet.report:0 +msgid "Hours" +msgstr "時間" + +#. module: hr_timesheet_sheet +#: view:hr.timesheet.report:0 view:timesheet.report:0 +msgid "Group by month of date" +msgstr "日付の月でグループ化" + +#. module: hr_timesheet_sheet +#: constraint:hr.attendance:0 +msgid "Error: Sign in (resp. Sign out) must follow Sign out (resp. Sign in)" +msgstr "エラー:サインイン(サインアウト)はサインアウト(サインイン)の後でなければいけません。" + +#. module: hr_timesheet_sheet +#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:455 +#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:457 +#, python-format +msgid "Invalid action !" +msgstr "無効なアクションです。" + +#. module: hr_timesheet_sheet +#: model:process.transition,note:hr_timesheet_sheet.process_transition_validatetimesheet0 +msgid "The project manager validates the timesheets." +msgstr "プロジェクトマネジャが勤務表を承認します。" + +#. module: hr_timesheet_sheet +#: selection:hr.timesheet.report,month:0 selection:timesheet.report,month:0 +msgid "July" +msgstr "7月" + +#. module: hr_timesheet_sheet +#: view:res.company:0 +msgid "Configuration" +msgstr "設定" + +#. module: hr_timesheet_sheet +#: model:process.node,name:hr_timesheet_sheet.process_node_workontask0 +msgid "Work on Task" +msgstr "仕掛中の作業" + +#. module: hr_timesheet_sheet +#: view:hr_timesheet_sheet.sheet:0 +msgid "Daily" +msgstr "日次" + +#. module: hr_timesheet_sheet +#: view:timesheet.report:0 field:timesheet.report,quantity:0 +msgid "#Quantity" +msgstr "数量" + +#. module: hr_timesheet_sheet +#: field:hr_timesheet_sheet.sheet,total_timesheet:0 +#: field:hr_timesheet_sheet.sheet,total_timesheet_day:0 +#: view:hr_timesheet_sheet.sheet.day:0 +#: field:hr_timesheet_sheet.sheet.day,total_timesheet:0 +msgid "Total Timesheet" +msgstr "全ての勤務表" + +#. module: hr_timesheet_sheet +#: view:hr_timesheet_sheet.sheet:0 +msgid "Available Attendance" +msgstr "可能な出勤" + +#. module: hr_timesheet_sheet +#: view:hr_timesheet_sheet.sheet:0 +msgid "Sign In" +msgstr "サインイン" + +#. module: hr_timesheet_sheet +#: view:timesheet.report:0 field:timesheet.report,total_timesheet:0 +msgid "#Total Timesheet" +msgstr "勤務表の合計" + +#. module: hr_timesheet_sheet +#: model:ir.model,name:hr_timesheet_sheet.model_hr_timesheet_current_open +msgid "hr.timesheet.current.open" +msgstr "hr.timesheet.current.open" + +#. module: hr_timesheet_sheet +#: view:hr_timesheet_sheet.sheet:0 +msgid "Go to:" +msgstr "次へ進む:" + +#. module: hr_timesheet_sheet +#: selection:hr.timesheet.report,month:0 selection:timesheet.report,month:0 +msgid "September" +msgstr "9月" + +#. module: hr_timesheet_sheet +#: selection:hr.timesheet.report,month:0 selection:timesheet.report,month:0 +msgid "December" +msgstr "12月" + +#. module: hr_timesheet_sheet +#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:248 +#, python-format +msgid "" +"In order to create a timesheet for this employee, you must link the employee " +"to a product, like 'Consultant'!" +msgstr "この従業員の勤務表を作成するには、従業員を製品(例えば、コンサルタント)に関連付ける必要があります。" + +#. module: hr_timesheet_sheet +#: view:hr.timesheet.current.open:0 +msgid "It will open your current timesheet" +msgstr "現在の勤務表が表示されます。" + +#. module: hr_timesheet_sheet +#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:241 +#, python-format +msgid "You cannot duplicate a timesheet!" +msgstr "勤務表を重複して作ることはできません。" + +#. module: hr_timesheet_sheet +#: view:hr.timesheet.report:0 field:hr.timesheet.report,month:0 +#: selection:res.company,timesheet_range:0 view:timesheet.report:0 +#: field:timesheet.report,month:0 +msgid "Month" +msgstr "月" + +#. module: hr_timesheet_sheet +#: view:timesheet.report:0 field:timesheet.report,total_diff:0 +msgid "#Total Diff" +msgstr "差分の合計" + +#. module: hr_timesheet_sheet +#: view:hr_timesheet_sheet.sheet:0 +msgid "In Draft" +msgstr "原案中" + +#. module: hr_timesheet_sheet +#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:261 +#, python-format +msgid "" +"In order to create a timesheet for this employee, you must link the employee " +"to a product!" +msgstr "この従業員の勤務表を作成するには、従業員を製品に関連付ける必要があります。" + +#. module: hr_timesheet_sheet +#: model:process.transition,name:hr_timesheet_sheet.process_transition_attendancetimesheet0 +msgid "Sign in/out" +msgstr "サインイン / アウト" + +#. module: hr_timesheet_sheet +#: selection:hr_timesheet_sheet.sheet,state:0 +msgid "Waiting Approval" +msgstr "承認待ち" + +#. module: hr_timesheet_sheet +#: model:process.transition,name:hr_timesheet_sheet.process_transition_invoiceontimesheet0 +msgid "Billing" +msgstr "課金" + +#. module: hr_timesheet_sheet +#: model:process.transition,note:hr_timesheet_sheet.process_transition_timesheetdraft0 +msgid "" +"The timesheet line represents the time spent by the employee on a specific " +"service provided." +msgstr "勤務表の行は、従業員が行ったサービスに費やした時間を表します。" + +#. module: hr_timesheet_sheet +#: constraint:hr_timesheet_sheet.sheet:0 +msgid "You must select a Current date which is in the timesheet dates !" +msgstr "勤務表の日付である現在の日付を選ばなくてはいけません。" + +#. module: hr_timesheet_sheet +#: field:hr_timesheet_sheet.sheet,name:0 +msgid "Note" +msgstr "注記" + +#. module: hr_timesheet_sheet +#: model:ir.actions.act_window,help:hr_timesheet_sheet.action_hr_timesheet_report_stat_all +msgid "" +"This report performs analysis on timesheets created by your human resources " +"in the system. It allows you to have a full overview of entries done by " +"your employees. You can group them by specific selection criteria thanks to " +"the search tool." +msgstr "" +"この報告書は、システムの人材担当者が作成した勤務表について分析するものです。あなたの従業員が記録した記入項目の全体を見ることができます。さらに検索ツールを" +"使って、特定の基準でグループ化することができます。" + +#. module: hr_timesheet_sheet +#: view:timesheet.report:0 selection:timesheet.report,state:0 +msgid "Draft" +msgstr "草案" + +#. module: hr_timesheet_sheet +#: field:res.company,timesheet_max_difference:0 +msgid "Timesheet allowed difference(Hours)" +msgstr "勤務表の差分の許容範囲(時間)" + +#. module: hr_timesheet_sheet +#: model:process.transition,note:hr_timesheet_sheet.process_transition_invoiceontimesheet0 +msgid "The invoice is created based on the timesheet." +msgstr "勤務表に基づいて請求書を作成します。" + +#. module: hr_timesheet_sheet +#: model:process.node,name:hr_timesheet_sheet.process_node_drafttimesheetsheet0 +msgid "Draft Timesheet" +msgstr "勤務表の草案" + +#. module: hr_timesheet_sheet +#: selection:res.company,timesheet_range:0 +msgid "Week" +msgstr "週" + +#. module: hr_timesheet_sheet +#: selection:hr.timesheet.report,month:0 selection:timesheet.report,month:0 +msgid "August" +msgstr "8月" + +#. module: hr_timesheet_sheet +#: view:hr_timesheet_sheet.sheet:0 +msgid "Approve" +msgstr "承認" + +#. module: hr_timesheet_sheet +#: selection:hr.timesheet.report,month:0 selection:timesheet.report,month:0 +msgid "June" +msgstr "6月" + +#. module: hr_timesheet_sheet +#: field:hr_timesheet_sheet.sheet,state_attendance:0 +msgid "Current Status" +msgstr "現在の状態" + +#. module: hr_timesheet_sheet +#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:646 +#, python-format +msgid "You cannot modify an entry in a confirmed timesheet !" +msgstr "確認済みの勤務表の記入項目を変更することはできません。" + +#. module: hr_timesheet_sheet +#: model:ir.model,name:hr_timesheet_sheet.model_hr_timesheet_sheet_sheet_account +#: model:ir.model,name:hr_timesheet_sheet.model_hr_timesheet_sheet_sheet_day +msgid "Timesheets by Period" +msgstr "期間ごとの勤務表" + +#. module: hr_timesheet_sheet +#: view:hr.timesheet.report:0 field:hr.timesheet.report,user_id:0 +#: field:hr_timesheet_sheet.sheet,user_id:0 view:timesheet.report:0 +#: field:timesheet.report,user_id:0 +msgid "User" +msgstr "ユーザ" + +#. module: hr_timesheet_sheet +#: model:ir.actions.act_window,name:hr_timesheet_sheet.act_hr_timesheet_sheet_sheet_by_account +msgid "Timesheet by Account" +msgstr "アカウントごとの勤務表" + +#. module: hr_timesheet_sheet +#: field:hr.timesheet.report,date:0 field:hr_timesheet_sheet.sheet.day,name:0 +msgid "Date" +msgstr "日付" + +#. module: hr_timesheet_sheet +#: selection:hr.timesheet.report,month:0 selection:timesheet.report,month:0 +msgid "November" +msgstr "11月" + +#. module: hr_timesheet_sheet +#: view:hr.timesheet.report:0 view:timesheet.report:0 +msgid "Extended Filters..." +msgstr "拡張フィルタ…" + +#. module: hr_timesheet_sheet +#: field:res.company,timesheet_range:0 +msgid "Timesheet range" +msgstr "勤務表の範囲" + +#. module: hr_timesheet_sheet +#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:548 +#, python-format +msgid "You can not modify an entry in a confirmed timesheet !" +msgstr "確認済みの勤務表の記入項目を変更することはできません。" + +#. module: hr_timesheet_sheet +#: view:board.board:0 +msgid "My Total Attendance By Week" +msgstr "週ごとの私の全ての出勤" + +#. module: hr_timesheet_sheet +#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:259 +#, python-format +msgid "" +"You cannot have 2 timesheets that overlaps!\n" +"You should use the menu 'My Timesheet' to avoid this problem." +msgstr "" +"重複する2つの勤務表を作ることはできません。\n" +"メニュー「私の勤務表」を使って下さい。" + +#. module: hr_timesheet_sheet +#: selection:hr.timesheet.report,month:0 selection:timesheet.report,month:0 +msgid "October" +msgstr "10月" + +#. module: hr_timesheet_sheet +#: model:ir.actions.act_window,help:hr_timesheet_sheet.act_hr_timesheet_sheet_form +msgid "" +"Check your timesheets for a specific period. You can also encode time spent " +"on a project (i.e. an analytic account) thus generating costs in the " +"analytic account concerned." +msgstr "" +"指定した期間について勤務表をチェックして下さい。プロジェクトに費やした時間を記録できます。分析アカウントであれば、経費を計上するもができます。" + +#. module: hr_timesheet_sheet +#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:237 +#, python-format +msgid "" +"The timesheet cannot be validated as it does not contain an equal number of " +"sign ins and sign outs!" +msgstr "サインインとサインアウトの回数が同じでないと、勤務表を検証することはできません。" + +#. module: hr_timesheet_sheet +#: selection:hr.timesheet.report,month:0 selection:timesheet.report,month:0 +msgid "January" +msgstr "1月" + +#. module: hr_timesheet_sheet +#: model:process.transition,note:hr_timesheet_sheet.process_transition_attendancetimesheet0 +msgid "The employee signs in and signs out." +msgstr "従業員のサインインとサインアウト" + +#. module: hr_timesheet_sheet +#: model:ir.model,name:hr_timesheet_sheet.model_res_company +msgid "Companies" +msgstr "会社" + +#. module: hr_timesheet_sheet +#: view:hr_timesheet_sheet.sheet:0 +msgid "Summary" +msgstr "要約" + +#. module: hr_timesheet_sheet +#: constraint:hr_timesheet_sheet.sheet:0 +msgid "" +"You cannot have 2 timesheets that overlaps !\n" +"Please use the menu 'My Current Timesheet' to avoid this problem." +msgstr "" +"重複する2つの勤務表を作ることはできません。\n" +"メニュー「私の現在の勤務表」を使ってください。" + +#. module: hr_timesheet_sheet +#: view:hr_timesheet_sheet.sheet:0 +msgid "Unvalidated Timesheets" +msgstr "勤務表を承認しない。" + +#. module: hr_timesheet_sheet +#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:457 +#, python-format +msgid "You cannot delete a timesheet which have attendance entries!" +msgstr "勤務の記入項目を持った勤務表を削除することはできません。" + +#. module: hr_timesheet_sheet +#: field:hr.timesheet.report,quantity:0 +msgid "Quantity" +msgstr "数量" + +#. module: hr_timesheet_sheet +#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:455 +#, python-format +msgid "You cannot delete a timesheet which is already confirmed!" +msgstr "既に確認した勤務表を削除することはできません。" + +#. module: hr_timesheet_sheet +#: view:hr.timesheet.report:0 field:hr.timesheet.report,general_account_id:0 +#: view:timesheet.report:0 field:timesheet.report,general_account_id:0 +msgid "General Account" +msgstr "一般アカウント" + +#. module: hr_timesheet_sheet +#: help:res.company,timesheet_range:0 +msgid "Periodicity on which you validate your timesheets." +msgstr "あなたが承認した勤務表の周期性" + +#. module: hr_timesheet_sheet +#: view:hr_timesheet_sheet.sheet.account:0 +msgid "Search Account" +msgstr "アカウントを検索" + +#. module: hr_timesheet_sheet +#: help:res.company,timesheet_max_difference:0 +msgid "" +"Allowed difference in hours between the sign in/out and the timesheet " +"computation for one sheet. Set this to 0 if you do not want any control." +msgstr "サインイン / アウトの間の時間間隔の許容差分。制約を設けないのであれば 0 (ゼロ)を設定してください。" + +#. module: hr_timesheet_sheet +#: view:hr_timesheet_sheet.sheet:0 field:hr_timesheet_sheet.sheet,period_ids:0 +#: view:hr_timesheet_sheet.sheet.day:0 +msgid "Period" +msgstr "期間" + +#. module: hr_timesheet_sheet +#: view:hr.timesheet.report:0 field:hr.timesheet.report,day:0 +#: selection:res.company,timesheet_range:0 view:timesheet.report:0 +#: field:timesheet.report,day:0 +msgid "Day" +msgstr "日" + +#. module: hr_timesheet_sheet +#: view:hr.timesheet.current.open:0 +#: model:ir.actions.act_window,name:hr_timesheet_sheet.action_hr_timesheet_current_open +#: model:ir.actions.server,name:hr_timesheet_sheet.ir_actions_server_timsheet_sheet +#: model:ir.ui.menu,name:hr_timesheet_sheet.menu_act_hr_timesheet_sheet_form_my_current +msgid "My Timesheet" +msgstr "私の勤務表" + +#. module: hr_timesheet_sheet +#: view:timesheet.report:0 selection:timesheet.report,state:0 +msgid "Done" +msgstr "完了" + +#. module: hr_timesheet_sheet +#: model:process.node,note:hr_timesheet_sheet.process_node_drafttimesheetsheet0 +msgid "State is 'draft'." +msgstr "「草稿」状態" + +#. module: hr_timesheet_sheet +#: constraint:hr.analytic.timesheet:0 +msgid "You cannot modify an entry in a Confirmed/Done timesheet !." +msgstr "確認済み/完了した勤務表の記入項目を変更することはできません。" + +#. module: hr_timesheet_sheet +#: view:hr.timesheet.current.open:0 +msgid "Cancel" +msgstr "キャンセル" + +#. module: hr_timesheet_sheet +#: model:process.node,name:hr_timesheet_sheet.process_node_validatedtimesheet0 +msgid "Validated" +msgstr "承諾済み" + +#. module: hr_timesheet_sheet +#: model:process.node,name:hr_timesheet_sheet.process_node_invoiceonwork0 +msgid "Invoice on Work" +msgstr "作業中の請求" + +#. module: hr_timesheet_sheet +#: view:hr.timesheet.report:0 view:timesheet.report:0 +msgid "Timesheet in current month" +msgstr "今月の勤務表" + +#. module: hr_timesheet_sheet +#: view:hr_timesheet_sheet.sheet.account:0 +msgid "Timesheet by Accounts" +msgstr "アカウントごとの勤務表" + +#. module: hr_timesheet_sheet +#: code:addons/hr_timesheet_sheet/wizard/hr_timesheet_current.py:51 +#, python-format +msgid "Open Timesheet" +msgstr "勤務表を開く" + +#. module: hr_timesheet_sheet +#: view:hr.timesheet.report:0 view:timesheet.report:0 +msgid "Group by year of date" +msgstr "日付の年度でグループ化" + +#. module: hr_timesheet_sheet +#: model:process.node,note:hr_timesheet_sheet.process_node_validatedtimesheet0 +msgid "State is 'validated'." +msgstr "承認された状態" + +#. module: hr_timesheet_sheet +#: help:hr_timesheet_sheet.sheet,state:0 +msgid "" +" * The 'Draft' state is used when a user is encoding a new and unconfirmed " +"timesheet. \n" +"* The 'Confirmed' state is used for to confirm the timesheet by user. " +" \n" +"* The 'Done' state is used when users timesheet is accepted by his/her " +"senior." +msgstr "" +" ・「草案」状態とは、ユーザが新しい勤務表を記録中であり未確認であることを示します。\n" +"・「確認済み」状態とは、ユーザ自身が確認した勤務表であることを示します。\n" +"・「完了」状態とは、上司が承認した勤務表であることを示します。" + +#. module: hr_timesheet_sheet +#: view:hr.timesheet.report:0 +#: model:ir.actions.act_window,name:hr_timesheet_sheet.action_hr_timesheet_report_stat_all +#: model:ir.ui.menu,name:hr_timesheet_sheet.menu_hr_timesheet_report_all +msgid "Timesheet Analysis" +msgstr "勤務表の分析" + +#. module: hr_timesheet_sheet +#: view:hr_timesheet_sheet.sheet:0 +msgid "Search Timesheet" +msgstr "勤務表を検索" + +#. module: hr_timesheet_sheet +#: view:hr_timesheet_sheet.sheet:0 +msgid "Confirmed Timesheets" +msgstr "確認済みの勤務表" + +#. module: hr_timesheet_sheet +#: model:ir.model,name:hr_timesheet_sheet.model_hr_analytic_timesheet +msgid "Timesheet Line" +msgstr "勤務表の行" + +#. module: hr_timesheet_sheet +#: view:hr.timesheet.report:0 field:hr.timesheet.report,product_id:0 +#: view:timesheet.report:0 field:timesheet.report,product_id:0 +msgid "Product" +msgstr "製品" + +#. module: hr_timesheet_sheet +#: view:hr_timesheet_sheet.sheet:0 +#: field:hr_timesheet_sheet.sheet,attendances_ids:0 +#: model:ir.actions.act_window,name:hr_timesheet_sheet.act_hr_timesheet_sheet_sheet_2_hr_attendance +msgid "Attendances" +msgstr "勤怠" + +#. module: hr_timesheet_sheet +#: field:hr.timesheet.report,name:0 field:timesheet.report,name:0 +msgid "Description" +msgstr "詳細" + +#. module: hr_timesheet_sheet +#: model:process.transition,note:hr_timesheet_sheet.process_transition_confirmtimesheet0 +msgid "The employee periodically confirms his own timesheets." +msgstr "従業員は定期的に自分の勤務表を確認すること。" + +#. module: hr_timesheet_sheet +#: selection:hr.timesheet.report,month:0 selection:timesheet.report,month:0 +msgid "May" +msgstr "5月" + +#. module: hr_timesheet_sheet +#: model:process.node,note:hr_timesheet_sheet.process_node_workontask0 +msgid "Defines the work summary of task" +msgstr "仕事の作業要約を定義します。" + +#. module: hr_timesheet_sheet +#: view:hr_timesheet_sheet.sheet:0 +msgid "Sign Out" +msgstr "ログオフ" + +#. module: hr_timesheet_sheet +#: model:process.transition,note:hr_timesheet_sheet.process_transition_tasktimesheet0 +msgid "Moves task entry into the timesheet line" +msgstr "作業の記入項目を勤務表に移します。" + +#. module: hr_timesheet_sheet +#: view:hr_timesheet_sheet.sheet.day:0 +msgid "Total Attendances" +msgstr "出勤日の合計" + +#. module: hr_timesheet_sheet +#: model:ir.actions.act_window,name:hr_timesheet_sheet.action_timesheet_report_stat_all +#: model:ir.ui.menu,name:hr_timesheet_sheet.menu_timesheet_report_all +msgid "Timesheet Sheet Analysis" +msgstr "勤務表の分析" + +#. module: hr_timesheet_sheet +#: field:hr_timesheet_sheet.sheet,total_difference:0 +#: field:hr_timesheet_sheet.sheet,total_difference_day:0 +#: field:hr_timesheet_sheet.sheet.day,total_difference:0 +msgid "Difference" +msgstr "差分" + +#. module: hr_timesheet_sheet +#: selection:hr_timesheet_sheet.sheet,state_attendance:0 +msgid "Absent" +msgstr "欠勤" + +#. module: hr_timesheet_sheet +#: selection:hr.timesheet.report,month:0 selection:timesheet.report,month:0 +msgid "February" +msgstr "2月" + +#. module: hr_timesheet_sheet +#: sql_constraint:res.company:0 +msgid "The company name must be unique !" +msgstr "会社名は固有でなければいけません。" + +#. module: hr_timesheet_sheet +#: view:hr_timesheet_sheet.sheet:0 +msgid "Employees" +msgstr "従業員" + +#. module: hr_timesheet_sheet +#: model:process.node,note:hr_timesheet_sheet.process_node_timesheet0 +msgid "Information of time spent on a service" +msgstr "サービスに費やした時間の情報" + +#. module: hr_timesheet_sheet +#: selection:hr.timesheet.report,month:0 selection:timesheet.report,month:0 +msgid "April" +msgstr "4月" + +#. module: hr_timesheet_sheet +#: model:process.transition,name:hr_timesheet_sheet.process_transition_confirmtimesheet0 +msgid "Confirmation" +msgstr "確認" + +#. module: hr_timesheet_sheet +#: field:hr_timesheet_sheet.sheet.account,invoice_rate:0 +msgid "Invoice rate" +msgstr "請求率" + +#. module: hr_timesheet_sheet +#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:619 +#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:639 +#, python-format +msgid "UserError" +msgstr "ユーザエラー" + +#. module: hr_timesheet_sheet +#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:250 +#, python-format +msgid "" +"In order to create a timesheet for this employee, you must assign the " +"employee to an analytic journal, like 'Timesheet'!" +msgstr "この従業員の勤務表を作成するには、従業員に分析項目(例えば、勤務表)を割り当ててください。" + +#. module: hr_timesheet_sheet +#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:318 +#, python-format +msgid "You cannot sign in/sign out from an other date than today" +msgstr "今日とは別の日付でサインイン / サインアウトすることはできません。" + +#. module: hr_timesheet_sheet +#: view:hr_timesheet_sheet.sheet:0 +msgid "Submited to Manager" +msgstr "マネジャに提出済み" + +#. module: hr_timesheet_sheet +#: field:hr_timesheet_sheet.sheet,account_ids:0 +msgid "Analytic accounts" +msgstr "分析アカウント" + +#. module: hr_timesheet_sheet +#: view:timesheet.report:0 field:timesheet.report,to_invoice:0 +msgid "Type of Invoicing" +msgstr "請求のタイプ" + +#. module: hr_timesheet_sheet +#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:246 +#: code:addons/hr_timesheet_sheet/hr_timesheet_sheet.py:257 +#, python-format +msgid "" +"In order to create a timesheet for this employee, you must assign it to a " +"user!" +msgstr "この従業員の勤務表を作成するには、それをユーザに割り当てなければいけません。" + +#. module: hr_timesheet_sheet +#: view:timesheet.report:0 field:timesheet.report,total_attendance:0 +msgid "#Total Attendance" +msgstr "出勤日の合計日数" + +#. module: hr_timesheet_sheet +#: field:hr.timesheet.report,cost:0 +msgid "Cost" +msgstr "経費" + +#. module: hr_timesheet_sheet +#: field:hr_timesheet_sheet.sheet,date_current:0 +#: field:timesheet.report,date_current:0 +msgid "Current date" +msgstr "今日" + +#. module: hr_timesheet_sheet +#: model:process.process,name:hr_timesheet_sheet.process_process_hrtimesheetprocess0 +msgid "Hr Timesheet" +msgstr "人材 勤務表" + +#. module: hr_timesheet_sheet +#: view:hr.timesheet.report:0 field:hr.timesheet.report,year:0 +#: view:timesheet.report:0 field:timesheet.report,year:0 +msgid "Year" +msgstr "年" + +#. module: hr_timesheet_sheet +#: view:hr.timesheet.current.open:0 selection:hr_timesheet_sheet.sheet,state:0 +msgid "Open" +msgstr "オープン" + +#. module: hr_timesheet_sheet +#: view:hr_timesheet_sheet.sheet:0 +msgid "To Approve" +msgstr "承認する" + +#. module: hr_timesheet_sheet +#: view:hr_timesheet_sheet.sheet.account:0 +msgid "Total" +msgstr "合計" + +#. module: hr_timesheet_sheet +#: field:hr.timesheet.report,journal_id:0 +msgid "Journal" +msgstr "仕訳" diff --git a/addons/html_view/i18n/ja.po b/addons/html_view/i18n/ja.po new file mode 100644 index 00000000000..8820fdd9f33 --- /dev/null +++ b/addons/html_view/i18n/ja.po @@ -0,0 +1,49 @@ +# Japanese translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 00:36+0000\n" +"PO-Revision-Date: 2012-04-18 01:30+0000\n" +"Last-Translator: Masaki Yamaya \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-18 04:42+0000\n" +"X-Generator: Launchpad (build 15108)\n" + +#. module: html_view +#: field:html.view,name:0 +msgid "Name" +msgstr "氏名" + +#. module: html_view +#: field:html.view,comp_id:0 +msgid "Company" +msgstr "会社" + +#. module: html_view +#: model:ir.actions.act_window,name:html_view.action_html_view_form +#: model:ir.ui.menu,name:html_view.html_form +msgid "Html Test" +msgstr "HTMLテスト" + +#. module: html_view +#: view:html.view:0 +msgid "Html Example" +msgstr "HTML例" + +#. module: html_view +#: field:html.view,bank_ids:0 +msgid "Banks" +msgstr "銀行" + +#. module: html_view +#: model:ir.model,name:html_view.model_html_view +msgid "html.view" +msgstr "HTMLビュー" diff --git a/addons/import_sugarcrm/i18n/fr.po b/addons/import_sugarcrm/i18n/fr.po new file mode 100644 index 00000000000..cbbe4c99743 --- /dev/null +++ b/addons/import_sugarcrm/i18n/fr.po @@ -0,0 +1,404 @@ +# French translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 00:36+0000\n" +"PO-Revision-Date: 2012-04-17 13:55+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: French \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-18 04:42+0000\n" +"X-Generator: Launchpad (build 15108)\n" + +#. module: import_sugarcrm +#: code:addons/import_sugarcrm/import_sugarcrm.py:1105 +#: code:addons/import_sugarcrm/import_sugarcrm.py:1131 +#, python-format +msgid "Error !!" +msgstr "" + +#. module: import_sugarcrm +#: view:import.sugarcrm:0 +msgid "" +"Use the SugarSoap API URL (read tooltip) and a full access SugarCRM login." +msgstr "" + +#. module: import_sugarcrm +#: view:import.sugarcrm:0 +msgid "(Coming Soon)" +msgstr "" + +#. module: import_sugarcrm +#: field:import.sugarcrm,document:0 +msgid "Documents" +msgstr "" + +#. module: import_sugarcrm +#: view:import.sugarcrm:0 +msgid "Import your data from SugarCRM :" +msgstr "" + +#. module: import_sugarcrm +#: view:import.sugarcrm:0 +msgid "" +"Choose data you want to import. Click 'Import' to get data manually or " +"'Schedule Reccurent Imports' to get recurrently and automatically data." +msgstr "" + +#. module: import_sugarcrm +#: field:import.sugarcrm,contact:0 +msgid "Contacts" +msgstr "" + +#. module: import_sugarcrm +#: view:import.sugarcrm:0 +msgid "HR" +msgstr "" + +#. module: import_sugarcrm +#: help:import.sugarcrm,bug:0 +msgid "Check this box to import sugarCRM Bugs into OpenERP project issues" +msgstr "" + +#. module: import_sugarcrm +#: field:import.sugarcrm,instance_name:0 +msgid "Instance's Name" +msgstr "" + +#. module: import_sugarcrm +#: field:import.sugarcrm,project_task:0 +msgid "Project Tasks" +msgstr "" + +#. module: import_sugarcrm +#: field:import.sugarcrm,email_from:0 +msgid "Notify End Of Import To:" +msgstr "" + +#. module: import_sugarcrm +#: help:import.sugarcrm,user:0 +msgid "" +"Check this box to import sugarCRM Users into OpenERP users, warning if a " +"user with the same login exist in OpenERP, user information will be erase by " +"sugarCRM user information" +msgstr "" + +#. module: import_sugarcrm +#: code:addons/import_sugarcrm/sugarsoap_services.py:23 +#, python-format +msgid "Please install SOAP for python - ZSI-2.0-rc3.tar.gz - python-zci" +msgstr "" + +#. module: import_sugarcrm +#: view:import.sugarcrm:0 +msgid "_Schedule Recurrent Imports" +msgstr "" + +#. module: import_sugarcrm +#: view:import.sugarcrm:0 +msgid "" +"Do not forget the email address to be notified of the success of the import." +msgstr "" + +#. module: import_sugarcrm +#: help:import.sugarcrm,call:0 +msgid "Check this box to import sugarCRM Calls into OpenERP calls" +msgstr "" + +#. module: import_sugarcrm +#: view:import.sugarcrm:0 +msgid "" +"If you make recurrent or ponctual import, data already in OpenERP will be " +"updated by SugarCRM data." +msgstr "" + +#. module: import_sugarcrm +#: field:import.sugarcrm,employee:0 +msgid "Employee" +msgstr "" + +#. module: import_sugarcrm +#: view:import.sugarcrm:0 +msgid "Document" +msgstr "" + +#. module: import_sugarcrm +#: help:import.sugarcrm,document:0 +msgid "Check this box to import sugarCRM Documents into OpenERP documents" +msgstr "" + +#. module: import_sugarcrm +#: view:import.sugarcrm:0 +msgid "Import Data From SugarCRM" +msgstr "" + +#. module: import_sugarcrm +#: view:import.sugarcrm:0 +msgid "CRM" +msgstr "" + +#. module: import_sugarcrm +#: view:import.message:0 +msgid "" +"Data are importing, the process is running in the background, an email will " +"be sent to the given email address if it was defined." +msgstr "" + +#. module: import_sugarcrm +#: field:import.sugarcrm,call:0 +msgid "Calls" +msgstr "" + +#. module: import_sugarcrm +#: view:import.sugarcrm:0 +msgid "Multi Instance Management" +msgstr "" + +#. module: import_sugarcrm +#: view:import.message:0 +msgid "_Ok" +msgstr "" + +#. module: import_sugarcrm +#: help:import.sugarcrm,opportunity:0 +msgid "" +"Check this box to import sugarCRM Leads and Opportunities into OpenERP Leads " +"and Opportunities" +msgstr "" + +#. module: import_sugarcrm +#: field:import.sugarcrm,email_history:0 +msgid "Email and Note" +msgstr "" + +#. module: import_sugarcrm +#: help:import.sugarcrm,url:0 +msgid "" +"Webservice's url where to get the data. example : " +"'http://example.com/sugarcrm/soap.php', or copy the address of your sugarcrm " +"application " +"http://trial.sugarcrm.com/qbquyj4802/index.php?module=Home&action=index" +msgstr "" + +#. module: import_sugarcrm +#: model:ir.actions.act_window,name:import_sugarcrm.action_import_sugarcrm +#: model:ir.ui.menu,name:import_sugarcrm.menu_sugarcrm_import +msgid "Import SugarCRM" +msgstr "" + +#. module: import_sugarcrm +#: view:import.sugarcrm:0 +msgid "_Import" +msgstr "" + +#. module: import_sugarcrm +#: field:import.sugarcrm,user:0 +msgid "User" +msgstr "" + +#. module: import_sugarcrm +#: code:addons/import_sugarcrm/import_sugarcrm.py:1105 +#: code:addons/import_sugarcrm/import_sugarcrm.py:1131 +#, python-format +msgid "%s data required %s Module to be installed, Please install %s module" +msgstr "" + +#. module: import_sugarcrm +#: field:import.sugarcrm,claim:0 +msgid "Cases" +msgstr "" + +#. module: import_sugarcrm +#: help:import.sugarcrm,meeting:0 +msgid "" +"Check this box to import sugarCRM Meetings and Tasks into OpenERP meetings" +msgstr "" + +#. module: import_sugarcrm +#: help:import.sugarcrm,email_history:0 +msgid "" +"Check this box to import sugarCRM Emails, Notes and Attachments into OpenERP " +"Messages and Attachments" +msgstr "" + +#. module: import_sugarcrm +#: field:import.sugarcrm,project:0 +msgid "Projects" +msgstr "" + +#. module: import_sugarcrm +#: code:addons/import_sugarcrm/sugarsoap_services_types.py:14 +#, python-format +msgid "" +"Please install SOAP for python - ZSI-2.0-rc3.tar.gz from " +"http://pypi.python.org/pypi/ZSI/" +msgstr "" + +#. module: import_sugarcrm +#: help:import.sugarcrm,project:0 +msgid "Check this box to import sugarCRM Projects into OpenERP projects" +msgstr "" + +#. module: import_sugarcrm +#: code:addons/import_sugarcrm/import_sugarcrm.py:1098 +#: code:addons/import_sugarcrm/import_sugarcrm.py:1124 +#, python-format +msgid "Select Module to Import." +msgstr "" + +#. module: import_sugarcrm +#: field:import.sugarcrm,meeting:0 +msgid "Meetings" +msgstr "" + +#. module: import_sugarcrm +#: help:import.sugarcrm,employee:0 +msgid "Check this box to import sugarCRM Employees into OpenERP employees" +msgstr "" + +#. module: import_sugarcrm +#: field:import.sugarcrm,url:0 +msgid "SugarSoap Api url:" +msgstr "" + +#. module: import_sugarcrm +#: view:import.sugarcrm:0 +msgid "Address Book" +msgstr "" + +#. module: import_sugarcrm +#: code:addons/import_sugarcrm/sugar.py:60 +#, python-format +msgid "" +"Authentication error !\n" +"Bad Username or Password bad SugarSoap Api url !" +msgstr "" + +#. module: import_sugarcrm +#: field:import.sugarcrm,bug:0 +msgid "Bugs" +msgstr "" + +#. module: import_sugarcrm +#: view:import.sugarcrm:0 +msgid "Project" +msgstr "" + +#. module: import_sugarcrm +#: help:import.sugarcrm,project_task:0 +msgid "Check this box to import sugarCRM Project Tasks into OpenERP tasks" +msgstr "" + +#. module: import_sugarcrm +#: field:import.sugarcrm,opportunity:0 +msgid "Leads & Opp" +msgstr "" + +#. module: import_sugarcrm +#: code:addons/import_sugarcrm/import_sugarcrm.py:79 +#, python-format +msgid "" +"Authentication error !\n" +"Bad Username or Password or bad SugarSoap Api url !" +msgstr "" + +#. module: import_sugarcrm +#: code:addons/import_sugarcrm/import_sugarcrm.py:79 +#: code:addons/import_sugarcrm/sugar.py:60 +#, python-format +msgid "Error !" +msgstr "" + +#. module: import_sugarcrm +#: code:addons/import_sugarcrm/import_sugarcrm.py:1098 +#: code:addons/import_sugarcrm/import_sugarcrm.py:1124 +#, python-format +msgid "Warning !" +msgstr "" + +#. module: import_sugarcrm +#: help:import.sugarcrm,instance_name:0 +msgid "" +"Prefix of SugarCRM id to differentiate xml_id of SugarCRM models datas come " +"from different server." +msgstr "" + +#. module: import_sugarcrm +#: help:import.sugarcrm,contact:0 +msgid "Check this box to import sugarCRM Contacts into OpenERP addresses" +msgstr "" + +#. module: import_sugarcrm +#: field:import.sugarcrm,password:0 +msgid "Password" +msgstr "" + +#. module: import_sugarcrm +#: view:import.sugarcrm:0 +msgid "Login Information" +msgstr "" + +#. module: import_sugarcrm +#: help:import.sugarcrm,claim:0 +msgid "Check this box to import sugarCRM Cases into OpenERP claims" +msgstr "" + +#. module: import_sugarcrm +#: view:import.sugarcrm:0 +msgid "Email Notification When Import is finished" +msgstr "" + +#. module: import_sugarcrm +#: field:import.sugarcrm,username:0 +msgid "User Name" +msgstr "" + +#. module: import_sugarcrm +#: view:import.message:0 +#: model:ir.model,name:import_sugarcrm.model_import_message +msgid "Import Message" +msgstr "" + +#. module: import_sugarcrm +#: help:import.sugarcrm,account:0 +msgid "Check this box to import sugarCRM Accounts into OpenERP partners" +msgstr "" + +#. module: import_sugarcrm +#: view:import.sugarcrm:0 +msgid "Online documentation:" +msgstr "" + +#. module: import_sugarcrm +#: field:import.sugarcrm,account:0 +msgid "Accounts" +msgstr "" + +#. module: import_sugarcrm +#: view:import.sugarcrm:0 +msgid "_Cancel" +msgstr "" + +#. module: import_sugarcrm +#: code:addons/import_sugarcrm/sugarsoap_services.py:23 +#: code:addons/import_sugarcrm/sugarsoap_services_types.py:14 +#, python-format +msgid "ZSI Import Error!" +msgstr "" + +#. module: import_sugarcrm +#: model:ir.model,name:import_sugarcrm.model_import_sugarcrm +msgid "Import SugarCRM DATA" +msgstr "" + +#. module: import_sugarcrm +#: view:import.sugarcrm:0 +msgid "Email Address to Notify" +msgstr "" diff --git a/addons/web_dashboard/i18n/sv.po b/addons/web_dashboard/i18n/sv.po new file mode 100644 index 00000000000..dd70f52088c --- /dev/null +++ b/addons/web_dashboard/i18n/sv.po @@ -0,0 +1,112 @@ +# Swedish translation for openerp-web +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openerp-web package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openerp-web\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-14 15:27+0100\n" +"PO-Revision-Date: 2012-04-17 09:21+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Swedish \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-18 04:57+0000\n" +"X-Generator: Launchpad (build 15108)\n" + +#. openerp-web +#: addons/web_dashboard/static/src/js/dashboard.js:63 +msgid "Edit Layout" +msgstr "Ändra layout" + +#. openerp-web +#: addons/web_dashboard/static/src/js/dashboard.js:109 +msgid "Are you sure you want to remove this item ?" +msgstr "Är du säker på att du vill radera?" + +#. openerp-web +#: addons/web_dashboard/static/src/js/dashboard.js:316 +msgid "Uncategorized" +msgstr "Okategoriserad" + +#. openerp-web +#: addons/web_dashboard/static/src/js/dashboard.js:324 +#, python-format +msgid "Execute task \"%s\"" +msgstr "Utför åtgärd \"%s\"" + +#. openerp-web +#: addons/web_dashboard/static/src/js/dashboard.js:325 +msgid "Mark this task as done" +msgstr "Markera denna uppgift som färdig" + +#. openerp-web +#: addons/web_dashboard/static/src/xml/web_dashboard.xml:4 +msgid "Reset Layout.." +msgstr "Återställ layouten" + +#. openerp-web +#: addons/web_dashboard/static/src/xml/web_dashboard.xml:6 +msgid "Reset" +msgstr "Nollställ" + +#. openerp-web +#: addons/web_dashboard/static/src/xml/web_dashboard.xml:8 +msgid "Change Layout.." +msgstr "Ändra layout..." + +#. openerp-web +#: addons/web_dashboard/static/src/xml/web_dashboard.xml:10 +msgid "Change Layout" +msgstr "Ändra layout" + +#. openerp-web +#: addons/web_dashboard/static/src/xml/web_dashboard.xml:27 +msgid " " +msgstr "" + +#. openerp-web +#: addons/web_dashboard/static/src/xml/web_dashboard.xml:28 +msgid "Create" +msgstr "Skapa" + +#. openerp-web +#: addons/web_dashboard/static/src/xml/web_dashboard.xml:39 +msgid "Choose dashboard layout" +msgstr "Välj infopanellayout" + +#. openerp-web +#: addons/web_dashboard/static/src/xml/web_dashboard.xml:62 +msgid "progress:" +msgstr "framsteg:" + +#. openerp-web +#: addons/web_dashboard/static/src/xml/web_dashboard.xml:67 +msgid "" +"Click on the functionalites listed below to launch them and configure your " +"system" +msgstr "" +"Välj bland funktionerna nedan för att starta och konfigurera ditt system" + +#. openerp-web +#: addons/web_dashboard/static/src/xml/web_dashboard.xml:110 +msgid "Welcome to OpenERP" +msgstr "Välkommen till OpenERP" + +#. openerp-web +#: addons/web_dashboard/static/src/xml/web_dashboard.xml:118 +msgid "Remember to bookmark" +msgstr "Kom ihåg att spara ett bokmärke till" + +#. openerp-web +#: addons/web_dashboard/static/src/xml/web_dashboard.xml:119 +msgid "This url" +msgstr "denna url" + +#. openerp-web +#: addons/web_dashboard/static/src/xml/web_dashboard.xml:121 +msgid "Your login:" +msgstr "Din inloggning:" diff --git a/addons/web_diagram/i18n/sv.po b/addons/web_diagram/i18n/sv.po new file mode 100644 index 00000000000..da5bb3fbcdd --- /dev/null +++ b/addons/web_diagram/i18n/sv.po @@ -0,0 +1,57 @@ +# Swedish translation for openerp-web +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openerp-web package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openerp-web\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-06 17:33+0100\n" +"PO-Revision-Date: 2012-04-17 13:23+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Swedish \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-18 04:57+0000\n" +"X-Generator: Launchpad (build 15108)\n" + +#. openerp-web +#: addons/web_diagram/static/src/js/diagram.js:11 +msgid "Diagram" +msgstr "Diagram" + +#. openerp-web +#: addons/web_diagram/static/src/js/diagram.js:208 +#: addons/web_diagram/static/src/js/diagram.js:224 +#: addons/web_diagram/static/src/js/diagram.js:257 +msgid "Activity" +msgstr "Aktivitet" + +#. openerp-web +#: addons/web_diagram/static/src/js/diagram.js:208 +#: addons/web_diagram/static/src/js/diagram.js:289 +#: addons/web_diagram/static/src/js/diagram.js:308 +msgid "Transition" +msgstr "Övergång" + +#. openerp-web +#: addons/web_diagram/static/src/js/diagram.js:214 +#: addons/web_diagram/static/src/js/diagram.js:262 +#: addons/web_diagram/static/src/js/diagram.js:314 +msgid "Create:" +msgstr "Skapa:" + +#. openerp-web +#: addons/web_diagram/static/src/js/diagram.js:231 +#: addons/web_diagram/static/src/js/diagram.js:232 +#: addons/web_diagram/static/src/js/diagram.js:296 +msgid "Open: " +msgstr "Öppna: " + +#. openerp-web +#: addons/web_diagram/static/src/xml/base_diagram.xml:5 +#: addons/web_diagram/static/src/xml/base_diagram.xml:6 +msgid "New Node" +msgstr "Ny nod" diff --git a/addons/web_graph/i18n/sv.po b/addons/web_graph/i18n/sv.po new file mode 100644 index 00000000000..98335a89577 --- /dev/null +++ b/addons/web_graph/i18n/sv.po @@ -0,0 +1,23 @@ +# Swedish translation for openerp-web +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openerp-web package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openerp-web\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-06 17:33+0100\n" +"PO-Revision-Date: 2012-04-17 13:21+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Swedish \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-18 04:57+0000\n" +"X-Generator: Launchpad (build 15108)\n" + +#. openerp-web +#: addons/web_graph/static/src/js/graph.js:19 +msgid "Graph" +msgstr "Diagram" diff --git a/addons/web_kanban/i18n/sv.po b/addons/web_kanban/i18n/sv.po new file mode 100644 index 00000000000..ad96ac598d2 --- /dev/null +++ b/addons/web_kanban/i18n/sv.po @@ -0,0 +1,55 @@ +# Swedish translation for openerp-web +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openerp-web package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openerp-web\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-14 15:27+0100\n" +"PO-Revision-Date: 2012-04-17 12:50+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Swedish \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-18 04:57+0000\n" +"X-Generator: Launchpad (build 15108)\n" + +#. openerp-web +#: addons/web_kanban/static/src/js/kanban.js:10 +msgid "Kanban" +msgstr "Kanban" + +#. openerp-web +#: addons/web_kanban/static/src/js/kanban.js:294 +#: addons/web_kanban/static/src/js/kanban.js:295 +msgid "Undefined" +msgstr "Odefinierad" + +#. openerp-web +#: addons/web_kanban/static/src/js/kanban.js:469 +#: addons/web_kanban/static/src/js/kanban.js:470 +msgid "Are you sure you want to delete this record ?" +msgstr "Är du säker på att du vill radera denna post?" + +#. openerp-web +#: addons/web_kanban/static/src/xml/web_kanban.xml:5 +msgid "Create" +msgstr "Skapa" + +#. openerp-web +#: addons/web_kanban/static/src/xml/web_kanban.xml:41 +msgid "Show more... (" +msgstr "Visa mer... (" + +#. openerp-web +#: addons/web_kanban/static/src/xml/web_kanban.xml:41 +msgid "remaining)" +msgstr "återstående)" + +#. openerp-web +#: addons/web_kanban/static/src/xml/web_kanban.xml:59 +msgid "" +msgstr "" diff --git a/addons/web_mobile/i18n/sv.po b/addons/web_mobile/i18n/sv.po new file mode 100644 index 00000000000..d0dc990c7c8 --- /dev/null +++ b/addons/web_mobile/i18n/sv.po @@ -0,0 +1,106 @@ +# Swedish translation for openerp-web +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openerp-web package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openerp-web\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-07 10:13+0100\n" +"PO-Revision-Date: 2012-04-17 12:46+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Swedish \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-18 04:57+0000\n" +"X-Generator: Launchpad (build 15108)\n" + +#. openerp-web +#: addons/web_mobile/static/src/xml/web_mobile.xml:17 +msgid "OpenERP" +msgstr "OpenERP" + +#. openerp-web +#: addons/web_mobile/static/src/xml/web_mobile.xml:22 +msgid "Database:" +msgstr "Databas:" + +#. openerp-web +#: addons/web_mobile/static/src/xml/web_mobile.xml:30 +msgid "Login:" +msgstr "Användarnamn:" + +#. openerp-web +#: addons/web_mobile/static/src/xml/web_mobile.xml:32 +msgid "Password:" +msgstr "Lösenord:" + +#. openerp-web +#: addons/web_mobile/static/src/xml/web_mobile.xml:34 +msgid "Login" +msgstr "Logga in" + +#. openerp-web +#: addons/web_mobile/static/src/xml/web_mobile.xml:36 +msgid "Bad username or password" +msgstr "Fel användanamn eller lösenord" + +#. openerp-web +#: addons/web_mobile/static/src/xml/web_mobile.xml:42 +msgid "Powered by openerp.com" +msgstr "Baserad på openerp.com" + +#. openerp-web +#: addons/web_mobile/static/src/xml/web_mobile.xml:49 +msgid "Home" +msgstr "Hem" + +#. openerp-web +#: addons/web_mobile/static/src/xml/web_mobile.xml:57 +msgid "Favourite" +msgstr "Favorit" + +#. openerp-web +#: addons/web_mobile/static/src/xml/web_mobile.xml:58 +msgid "Preference" +msgstr "Inställning" + +#. openerp-web +#: addons/web_mobile/static/src/xml/web_mobile.xml:123 +msgid "Logout" +msgstr "Logga ut" + +#. openerp-web +#: addons/web_mobile/static/src/xml/web_mobile.xml:132 +msgid "There are no records to show." +msgstr "Det finns inte några poster att visa." + +#. openerp-web +#: addons/web_mobile/static/src/xml/web_mobile.xml:183 +msgid "Open this resource" +msgstr "Öppna denna resurs" + +#. openerp-web +#: addons/web_mobile/static/src/xml/web_mobile.xml:223 +#: addons/web_mobile/static/src/xml/web_mobile.xml:226 +msgid "Percent of tasks closed according to total of tasks to do..." +msgstr "Andel avslutade uppgifter i jämförelse med alla..." + +#. openerp-web +#: addons/web_mobile/static/src/xml/web_mobile.xml:264 +#: addons/web_mobile/static/src/xml/web_mobile.xml:268 +msgid "On" +msgstr "På" + +#. openerp-web +#: addons/web_mobile/static/src/xml/web_mobile.xml:265 +#: addons/web_mobile/static/src/xml/web_mobile.xml:269 +msgid "Off" +msgstr "Av" + +#. openerp-web +#: addons/web_mobile/static/src/xml/web_mobile.xml:294 +msgid "Form View" +msgstr "Formulär" diff --git a/addons/web_process/i18n/bs.po b/addons/web_process/i18n/bs.po new file mode 100644 index 00000000000..7685aeea7ff --- /dev/null +++ b/addons/web_process/i18n/bs.po @@ -0,0 +1,118 @@ +# Bosnian translation for openerp-web +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openerp-web package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openerp-web\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-07 19:19+0100\n" +"PO-Revision-Date: 2012-04-17 17:00+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Bosnian \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-18 04:57+0000\n" +"X-Generator: Launchpad (build 15108)\n" + +#. openerp-web +#: addons/web_process/static/src/js/process.js:261 +msgid "Cancel" +msgstr "Otkaži" + +#. openerp-web +#: addons/web_process/static/src/js/process.js:262 +msgid "Save" +msgstr "Spasi" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:6 +msgid "Process View" +msgstr "Pregled Procesa" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:19 +msgid "Documentation" +msgstr "Dokumentacija" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:19 +msgid "Read Documentation Online" +msgstr "Čitaj Dokumentaciju Online" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:25 +msgid "Forum" +msgstr "Forum" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:25 +msgid "Community Discussion" +msgstr "Zajednička Diskusija" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:31 +msgid "Books" +msgstr "Knjige" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:31 +msgid "Get the books" +msgstr "Nabavite knjige" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:37 +msgid "OpenERP Enterprise" +msgstr "Pokreni OpenERP" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:37 +msgid "Purchase OpenERP Enterprise" +msgstr "Kupi OpenERP Enterprise" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:52 +msgid "Process" +msgstr "Proces" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:56 +msgid "Notes:" +msgstr "Bilješke:" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:59 +msgid "Last modified by:" +msgstr "Posljednje modifikovano od:" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:59 +msgid "N/A" +msgstr "N/A" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:62 +msgid "Subflows:" +msgstr "" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:75 +msgid "Related:" +msgstr "Srodnost:" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:88 +msgid "Select Process" +msgstr "Odabrani Proces" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:98 +msgid "Select" +msgstr "Izaberi" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:109 +msgid "Edit Process" +msgstr "Edituj proces" diff --git a/addons/web_process/i18n/sv.po b/addons/web_process/i18n/sv.po new file mode 100644 index 00000000000..f054ab1ce45 --- /dev/null +++ b/addons/web_process/i18n/sv.po @@ -0,0 +1,118 @@ +# Swedish translation for openerp-web +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openerp-web package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openerp-web\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-07 19:19+0100\n" +"PO-Revision-Date: 2012-04-17 12:42+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Swedish \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-18 04:57+0000\n" +"X-Generator: Launchpad (build 15108)\n" + +#. openerp-web +#: addons/web_process/static/src/js/process.js:261 +msgid "Cancel" +msgstr "Avbryt" + +#. openerp-web +#: addons/web_process/static/src/js/process.js:262 +msgid "Save" +msgstr "Spara" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:6 +msgid "Process View" +msgstr "Processvy" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:19 +msgid "Documentation" +msgstr "Dokumentation" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:19 +msgid "Read Documentation Online" +msgstr "Läs online-dokumentationen" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:25 +msgid "Forum" +msgstr "Forum" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:25 +msgid "Community Discussion" +msgstr "Diskussion i användarföreningen" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:31 +msgid "Books" +msgstr "Böcker" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:31 +msgid "Get the books" +msgstr "Komma över böckerna" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:37 +msgid "OpenERP Enterprise" +msgstr "OpenERP Enterprise" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:37 +msgid "Purchase OpenERP Enterprise" +msgstr "Köp OpenERP Enterprise" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:52 +msgid "Process" +msgstr "Process" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:56 +msgid "Notes:" +msgstr "Anteckningar:" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:59 +msgid "Last modified by:" +msgstr "Senast ändrad av:" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:59 +msgid "N/A" +msgstr "Ej tillgänglig" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:62 +msgid "Subflows:" +msgstr "Underflöde" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:75 +msgid "Related:" +msgstr "Relaterad:" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:88 +msgid "Select Process" +msgstr "Välj process" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:98 +msgid "Select" +msgstr "Välj" + +#. openerp-web +#: addons/web_process/static/src/xml/web_process.xml:109 +msgid "Edit Process" +msgstr "Ändra processen" From 522de0125cd5764220957637ee8f647dc910ef8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 18 Apr 2012 10:47:37 +0200 Subject: [PATCH 04/49] [REVIEW] needaction: remove unnecessary bzr revid: tde@openerp.com-20120418084737-jxvoe5jf02xalq8r --- openerp/addons/base/ir/ir_needaction.py | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/openerp/addons/base/ir/ir_needaction.py b/openerp/addons/base/ir/ir_needaction.py index 3fcd56affae..6dd0b73e82c 100644 --- a/openerp/addons/base/ir/ir_needaction.py +++ b/openerp/addons/base/ir/ir_needaction.py @@ -49,15 +49,11 @@ class ir_needaction_users(osv.osv): 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) @@ -65,8 +61,6 @@ class ir_needaction_users(osv.osv): 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) @@ -131,8 +125,6 @@ class ir_needaction_mixin(osv.osv): 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) @@ -142,8 +134,6 @@ class ir_needaction_mixin(osv.osv): 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) @@ -154,8 +144,6 @@ class ir_needaction_mixin(osv.osv): 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) @@ -169,8 +157,6 @@ class ir_needaction_mixin(osv.osv): 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)) @@ -178,8 +164,6 @@ class ir_needaction_mixin(osv.osv): 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) @@ -188,8 +172,6 @@ class ir_needaction_mixin(osv.osv): 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) From 3930d41621dddd023f62ad0695528367a9773127 Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Wed, 18 Apr 2012 10:47:42 +0200 Subject: [PATCH 05/49] [IMP] hr.config.settings: small fix in view bzr revid: rco@openerp.com-20120418084742-ruboxpqeggpzu2sh --- addons/hr/res_config_view.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/hr/res_config_view.xml b/addons/hr/res_config_view.xml index 3377ad20c37..a34783772c9 100644 --- a/addons/hr/res_config_view.xml +++ b/addons/hr/res_config_view.xml @@ -42,7 +42,7 @@ - Configure Human Resources Application + Configure Human Resources hr.config.settings form From 7ef99096b0b84b0eb338ba55fcce14b3f9b5142c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 18 Apr 2012 10:59:45 +0200 Subject: [PATCH 06/49] [RFEVIEW] Cleaned code, based on ODO/VMT review. bzr revid: tde@openerp.com-20120418085945-jlr7hbzrpju3yv2m --- openerp/addons/base/ir/ir_needaction.py | 52 +++++++++---------- .../addons/base/security/ir.model.access.csv | 2 +- 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/openerp/addons/base/ir/ir_needaction.py b/openerp/addons/base/ir/ir_needaction.py index 6dd0b73e82c..7f246dc282a 100644 --- a/openerp/addons/base/ir/ir_needaction.py +++ b/openerp/addons/base/ir/ir_needaction.py @@ -24,17 +24,18 @@ from operator import itemgetter from osv import osv, fields from tools.translate import _ -class ir_needaction_users(osv.osv): +class ir_needaction_users_rel(osv.osv): ''' - ir_needaction_users holds data related to the needaction - mechanism inside OpenERP. A needaction is characterized by: + ir_needaction_users_rel holds data related to the needaction + mechanism inside OpenERP. A row in this model is characterized by: - res_model: model of the record requiring an action - res_id: ID of the record requiring an action - user_id: foreign key to the res.users table, to the user that has to perform the action - ''' + This model can be seen as a many2many, linking (res_model, res_id) to + users (those whose attention is required on the record).''' - _name = 'ir.needaction_users' + _name = 'ir.ir_needaction_users_rel' _description = 'Needaction relationship table' _rec_name = 'id' _order = 'id desc' @@ -49,8 +50,8 @@ class ir_needaction_users(osv.osv): def _get_users(self, cr, uid, res_ids, res_model, context=None): """Given res_ids of res_model, get user_ids present in table""" - 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)) + rel_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, rel_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""" @@ -88,11 +89,11 @@ class ir_needaction_mixin(osv.osv): 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 + inheriting from this mixin class. This class handles the low-level considerations of updating relationships. Every change made on the record calls a method that updates the relationships. - Objects using the need_action feature should override the + 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, @@ -112,7 +113,7 @@ class ir_needaction_mixin(osv.osv): are given as references, a list of tuples (model_name, record_id) ''' _name = 'ir.needaction_mixin' - _description = 'Need action of users on records API' + _description = '"Need action" mixin' #------------------------------------------------------ # Addon API @@ -125,56 +126,55 @@ class ir_needaction_mixin(osv.osv): return dict.fromkeys(ids, []) def create(self, cr, uid, values, context=None): - needact_table_obj = self.pool.get('ir.needaction_users') + rel_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) + rel_obj.create_users(cr, uid, [obj_id], self._name, needaction_user_ids[obj_id], context=context) return obj_id def write(self, cr, uid, ids, values, context=None): - needact_table_obj = self.pool.get('ir.needaction_users') + rel_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) + rel_obj.update_users(cr, uid, [id], self._name, needaction_user_ids[id], context=context) return write_res def unlink(self, cr, uid, ids, context=None): # unlink user_ids - needact_table_obj = self.pool.get('ir.needaction_users') - needact_table_obj.unlink_users(cr, uid, ids, self._name, context=context) + rel_obj = self.pool.get('ir.needaction_users') + rel_obj.unlink_users(cr, uid, ids, self._name, context=context) # perform unlink return super(ir_needaction_mixin, self).unlink(cr, uid, ids, context=context) #------------------------------------------------------ - # Need action API + # "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""" - 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)) + rel_obj = self.pool.get('ir.needaction_users') + needact_table_ids = rel_obj.search(cr, uid, [('res_model', '=', self._name), ('user_id', '=', user_id)], limit=limit, context=context) + return map(itemgetter('res_id'), rel_obj.read(cr, uid, 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""" - 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) + rel_obj = self.pool.get('ir.needaction_users') + return rel_obj.search(cr, uid, [('res_model', '=', self._name), ('user_id', '=', user_id)], limit=limit, count=True, context=context) def needaction_get_record_references(self, cr, uid, user_id, offset=None, limit=None, order=None, context=None): """For a given user_id, get all the records that asks this user to perform an action. Records are given as references, a list of tuples (model_name, record_id). This method is trans-model.""" - 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) + rel_obj = self.pool.get('ir.needaction_users') + needact_table_ids = rel_obj.search(cr, uid, [('user_id', '=', user_id)], offset=offset, limit=limit, order=order, context=context) + return map(itemgetter('res_model', 'id'), rel_obj.read(cr, uid, needact_table_ids, context=context)) # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/addons/base/security/ir.model.access.csv b/openerp/addons/base/security/ir.model.access.csv index ac05b726341..8b906ba48a5 100644 --- a/openerp/addons/base/security/ir.model.access.csv +++ b/openerp/addons/base/security/ir.model.access.csv @@ -121,6 +121,6 @@ "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 +"access_ir_needaction_users_rel","ir_needaction_users_rel","model_ir_needaction_users_rel",,1,1,1,1 "access_ir_needaction_mixin","ir_needaction_mixin","model_ir_needaction_mixin",,1,1,1,1 From 94210b26a27cb32c0a00bcb578b44bca138eeec1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 18 Apr 2012 11:01:41 +0200 Subject: [PATCH 07/49] [REVIEW] [DOC] Updated documentation. bzr revid: tde@openerp.com-20120418090141-ho1205rt0omyxo4k --- doc/api/need_action_specs.rst | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/api/need_action_specs.rst b/doc/api/need_action_specs.rst index c9f32dd60c4..88787ae4c44 100644 --- a/doc/api/need_action_specs.rst +++ b/doc/api/need_action_specs.rst @@ -1,14 +1,14 @@ Need action mechanism ===================== -ir.needaction mixin class -++++++++++++++++++++++++++ +ir.needaction_mixin 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. +This class wraps a class (ir.needaction_users) that behaves like a many2many field. However, no field is added to the model inheriting from ir.needaction_mixin. 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. @@ -30,12 +30,12 @@ Those fields are functional, because they depend on the user and must therefore 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: +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 ``ir.needaction_mixin``, you override the ``get_needaction_user_ids`` method: :: [...] - _inherit = [base.needaction] + _inherit = [`ir.needaction_mixin] [...] def get_needaction_user_ids(self, cr, uid, ids, context=None): result = dict.fromkeys(ids) From c1a4f1f8db6e3161ae61a8358e023c281dc3fed5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 18 Apr 2012 11:07:35 +0200 Subject: [PATCH 08/49] [IMP] Updated code (see odo/vmt review). Also removed record_ids storage in menus, to avoid passing too much data to the client. bzr revid: tde@openerp.com-20120418090735-e5ewk3wcf7bp0bvu --- openerp/addons/base/ir/ir_needaction.py | 15 ++++++++------- openerp/addons/base/ir/ir_ui_menu.py | 8 +++----- openerp/osv/orm.py | 10 ++++++---- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/openerp/addons/base/ir/ir_needaction.py b/openerp/addons/base/ir/ir_needaction.py index 7f246dc282a..c408c189939 100644 --- a/openerp/addons/base/ir/ir_needaction.py +++ b/openerp/addons/base/ir/ir_needaction.py @@ -51,7 +51,7 @@ class ir_needaction_users_rel(osv.osv): def _get_users(self, cr, uid, res_ids, res_model, context=None): """Given res_ids of res_model, get user_ids present in table""" rel_ids = self.search(cr, uid, [('res_model', '=', res_model), ('res_id', 'in', res_ids)], context=context) - return map(itemgetter('res_id'), self.read(cr, uid, rel_ids, context=context)) + return list(set(map(itemgetter('user_id'), self.read(cr, uid, rel_ids, ['user_id'], context=context)))) def create_users(self, cr, uid, res_ids, res_model, user_ids, context=None): """Given res_ids of res_model, add user_ids to the relationship table""" @@ -69,7 +69,7 @@ class ir_needaction_users_rel(osv.osv): """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]): + 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) @@ -157,10 +157,11 @@ class ir_needaction_mixin(osv.osv): 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""" + return the record ids that require the user to perform an + action""" rel_obj = self.pool.get('ir.needaction_users') - needact_table_ids = rel_obj.search(cr, uid, [('res_model', '=', self._name), ('user_id', '=', user_id)], limit=limit, context=context) - return map(itemgetter('res_id'), rel_obj.read(cr, uid, needact_table_ids, context=context)) + rel_ids = rel_obj.search(cr, uid, [('res_model', '=', self._name), ('user_id', '=', user_id)], limit=limit, context=context) + return map(itemgetter('res_id'), rel_obj.read(cr, uid, rel_ids, ['res_id'], context=context)) def needaction_get_action_count(self, cr, uid, user_id, limit=80, context=None): """Given the current model and a user_id @@ -174,7 +175,7 @@ class ir_needaction_mixin(osv.osv): tuples (model_name, record_id). This method is trans-model.""" rel_obj = self.pool.get('ir.needaction_users') - needact_table_ids = rel_obj.search(cr, uid, [('user_id', '=', user_id)], offset=offset, limit=limit, order=order, context=context) - return map(itemgetter('res_model', 'id'), rel_obj.read(cr, uid, needact_table_ids, context=context)) + rel_ids = rel_obj.search(cr, uid, [('user_id', '=', user_id)], offset=offset, limit=limit, order=order, context=context) + return map(itemgetter('res_model', 'res_id'), rel_obj.read(cr, uid, rel_ids, ['res_model', 'res_id'], context=context)) # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/openerp/addons/base/ir/ir_ui_menu.py b/openerp/addons/base/ir/ir_ui_menu.py index 1f3f2e0f181..0de4ff74c11 100644 --- a/openerp/addons/base/ir/ir_ui_menu.py +++ b/openerp/addons/base/ir/ir_ui_menu.py @@ -258,19 +258,17 @@ class ir_ui_menu(osv.osv): def _get_needaction(self, cr, uid, ids, field_names, args, context=None): if context is None: context = {} - res = dict.fromkeys(ids) + res = {} for menu in self.browse(cr, uid, ids, context=context): res[menu.id] = {} if menu.action and menu.action.type == 'ir.actions.act_window' and menu.action.res_model: - menu_needaction_res = self.pool.get(menu.action.res_model).get_needaction_info(cr, uid, uid, domain=menu.action.domain, context=context) + menu_needaction_res = self.pool.get(menu.action.res_model)._get_needaction_info(cr, uid, uid, domain=menu.action.domain, context=context) # TODO: find the addon that causes a bug on runbot, not on local if not isinstance(menu_needaction_res[1], (int, long)): menu_needaction_res[1] = 0 else: - menu_needaction_res = [False, 0, ()] + menu_needaction_res = [False, 0] res[menu.id]['needaction_enabled'] = menu_needaction_res[0] res[menu.id]['needaction_counter'] = menu_needaction_res[1] - # not used currently, therefore set to a void list - res[menu.id]['needaction_record_ids'] = [] return res _columns = { diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py index 313c96a9fb4..bdf78fd3567 100644 --- a/openerp/osv/orm.py +++ b/openerp/osv/orm.py @@ -4866,7 +4866,7 @@ class BaseModel(object): 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): + 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 @@ -4883,16 +4883,18 @@ class BaseModel(object): :return: [uses_needaction=True/False, needaction_uid_ctr=%d] """ if hasattr(self, 'needaction_get_record_ids'): + # Arbitrary limit, but still much lower thant infinity, to avoid + # getting too much data. ids = self.needaction_get_record_ids(cr, uid, user_id, limit=8192, context=context) if not ids: - return [True, 0, []] + return [True, 0] if domain: new_domain = eval(domain, locals_dict={'uid': user_id}) + [('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] + return [True, self.search(cr, uid, new_domain, limit=limit, order=order, count=True, context=context)] else: - return [False, 0, []] + return [False, 0] # Transience def is_transient(self): From aca2b4874639b5adbe13e6471b8d9a0d5f59651d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 18 Apr 2012 11:12:59 +0200 Subject: [PATCH 09/49] [FIX] Propagated name change from ir_needaction_users to ir_needaction_users_rel. bzr revid: tde@openerp.com-20120418091259-cnhae6rsc8dqlmkw --- openerp/addons/base/ir/ir_needaction.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/openerp/addons/base/ir/ir_needaction.py b/openerp/addons/base/ir/ir_needaction.py index c408c189939..2ea81870c68 100644 --- a/openerp/addons/base/ir/ir_needaction.py +++ b/openerp/addons/base/ir/ir_needaction.py @@ -87,7 +87,7 @@ class ir_needaction_mixin(osv.osv): 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 + This class wraps a class (ir.ir_needaction_users_rel) that behaves like a many2many field. However, no field is added to the model inheriting from this mixin class. This class handles the low-level considerations of updating relationships. Every change made on the @@ -126,7 +126,7 @@ class ir_needaction_mixin(osv.osv): return dict.fromkeys(ids, []) def create(self, cr, uid, values, context=None): - rel_obj = self.pool.get('ir.needaction_users') + rel_obj = self.pool.get('ir.ir_needaction_users_rel') # perform create obj_id = super(ir_needaction_mixin, self).create(cr, uid, values, context=context) # link user_ids @@ -135,7 +135,7 @@ class ir_needaction_mixin(osv.osv): return obj_id def write(self, cr, uid, ids, values, context=None): - rel_obj = self.pool.get('ir.needaction_users') + rel_obj = self.pool.get('ir.ir_needaction_users_rel') # perform write write_res = super(ir_needaction_mixin, self).write(cr, uid, ids, values, context=context) # get and update user_ids @@ -146,7 +146,7 @@ class ir_needaction_mixin(osv.osv): def unlink(self, cr, uid, ids, context=None): # unlink user_ids - rel_obj = self.pool.get('ir.needaction_users') + rel_obj = self.pool.get('ir.ir_needaction_users_rel') rel_obj.unlink_users(cr, uid, ids, self._name, context=context) # perform unlink return super(ir_needaction_mixin, self).unlink(cr, uid, ids, context=context) @@ -159,14 +159,14 @@ class ir_needaction_mixin(osv.osv): """Given the current model and a user_id return the record ids that require the user to perform an action""" - rel_obj = self.pool.get('ir.needaction_users') + rel_obj = self.pool.get('ir.ir_needaction_users_rel') rel_ids = rel_obj.search(cr, uid, [('res_model', '=', self._name), ('user_id', '=', user_id)], limit=limit, context=context) return map(itemgetter('res_id'), rel_obj.read(cr, uid, rel_ids, ['res_id'], context=context)) def needaction_get_action_count(self, cr, uid, user_id, limit=80, context=None): """Given the current model and a user_id get the number of actions it has to perform""" - rel_obj = self.pool.get('ir.needaction_users') + rel_obj = self.pool.get('ir.ir_needaction_users_rel') return rel_obj.search(cr, uid, [('res_model', '=', self._name), ('user_id', '=', user_id)], limit=limit, count=True, context=context) def needaction_get_record_references(self, cr, uid, user_id, offset=None, limit=None, order=None, context=None): @@ -174,7 +174,7 @@ class ir_needaction_mixin(osv.osv): perform an action. Records are given as references, a list of tuples (model_name, record_id). This method is trans-model.""" - rel_obj = self.pool.get('ir.needaction_users') + rel_obj = self.pool.get('ir.ir_needaction_users_rel') rel_ids = rel_obj.search(cr, uid, [('user_id', '=', user_id)], offset=offset, limit=limit, order=order, context=context) return map(itemgetter('res_model', 'res_id'), rel_obj.read(cr, uid, rel_ids, ['res_model', 'res_id'], context=context)) From 7b073bd3861d83fee01e987b151eeef88c8dd314 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 18 Apr 2012 11:13:57 +0200 Subject: [PATCH 10/49] [FIX] Propagated name change from ir_needaction_users to ir_needaction_users_rel. bzr revid: tde@openerp.com-20120418091357-w3364qw5e0fyfjkj --- openerp/addons/base/ir/ir.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/openerp/addons/base/ir/ir.xml b/openerp/addons/base/ir/ir.xml index ccec381f1d1..e66182bae39 100644 --- a/openerp/addons/base/ir/ir.xml +++ b/openerp/addons/base/ir/ir.xml @@ -662,9 +662,9 @@ - - ir.needaction_users.tree - ir.needaction_users + + ir.needaction_users_rel.tree + ir.needaction_users_rel tree 10 @@ -676,14 +676,14 @@ - + Need action relationships - ir.needaction_users + ir.needaction_users_rel form tree,form - + Date: Wed, 18 Apr 2012 11:16:13 +0200 Subject: [PATCH 11/49] [imp] removed validate & invalid in form view bzr revid: nicolas.vanhoren@openerp.com-20120418091613-c0gpu6eo3yqndq6l --- addons/web/static/src/js/view_form.js | 65 +++++++------------ addons/web_calendar/static/src/js/calendar.js | 1 - 2 files changed, 23 insertions(+), 43 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 3f9ef8301fd..2ca19687cec 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -250,9 +250,6 @@ instance.web.FormView = instance.web.View.extend({ field.reset(); var result = field.set_value(self.datarecord[f] || false); set_values.push(result); - $.when(result).then(function() { - field.validate(); - }); }); return $.when.apply(null, set_values).pipe(function() { if (!record.id) { @@ -285,9 +282,6 @@ instance.web.FormView = instance.web.View.extend({ on_form_changed: function() { this.trigger("view_content_has_changed"); _.each(this.get_widgets(), function(w) { - if (w.field) { - w.validate(); - } w.update_dom(); }); }, @@ -1265,7 +1259,7 @@ instance.web.form.compute_domain = function(expr, fields) { _t("Unknown field %s in domain %s"), ex[0], JSON.stringify(expr))); } - var field_value = field.get_value(); + var field_value = field.get_value ? field.get_value() : field.value; var op = ex[1]; var val = ex[2]; @@ -1655,7 +1649,7 @@ instance.web.form.AbstractField = instance.web.form.Widget.extend(/** @lends ins this.set({'value': false}); this.field = this.field_manager.get_field(this.name); this.set({required: this.modifiers['required'] === true}); - this.invalid = this.dirty = false; + this.dirty = false; // some events to make the property "effective_readonly" sync automatically with "readonly" and // "force_readonly" @@ -1695,7 +1689,6 @@ instance.web.form.AbstractField = instance.web.form.Widget.extend(/** @lends ins this._inhibit_on_change = true; this.set({'value': value_}); this._inhibit_on_change = false; - this.invalid = false; this.update_dom(); }, on_translate: function() { @@ -1705,7 +1698,7 @@ instance.web.form.AbstractField = instance.web.form.Widget.extend(/** @lends ins return this.get('value'); }, is_valid: function() { - return !this.invalid; + return true; }, is_dirty: function() { return this.dirty && !this.get("effective_readonly"); @@ -1723,7 +1716,6 @@ instance.web.form.AbstractField = instance.web.form.Widget.extend(/** @lends ins }, _on_ui_change: function() { this.dirty = true; - this.validate(); if (this.is_valid()) { this.view.do_onchange(this); this.view.on_form_changed(true); @@ -1732,9 +1724,6 @@ instance.web.form.AbstractField = instance.web.form.Widget.extend(/** @lends ins this.update_dom(true); } }, - validate: function() { - this.invalid = false; - }, focus: function($element) { if ($element) { setTimeout(function() { @@ -1821,16 +1810,16 @@ instance.web.form.FieldChar = instance.web.form.AbstractField.extend(_.extend({} this.$element.text(show_value); } }, - validate: function() { - this.invalid = false; + is_valid: function() { if (!this.get("effective_readonly")) { try { var value_ = instance.web.parse_value(this.$element.find('input').val(), this, ''); - this.invalid = this.get("required") && value_ === ''; + return (! this.get("required")) || value_ !== ''; } catch(e) { - this.invalid = true; + return false; } } + return true; }, focus: function($element) { this._super($element || this.$element.find('input:first')); @@ -2031,11 +2020,11 @@ instance.web.form.FieldDatetime = instance.web.form.AbstractField.extend(_.exten this.$element.text(instance.web.format_value(this.get('value'), this, '')); } }, - validate: function() { - this.invalid = false; + is_valid: function() { if (!this.get("effective_readonly")) { - this.invalid = !this.datewidget.is_valid() || (this.get("required") && !this.datewidget.get_value()); + return this.datewidget.is_valid() && (!this.get("required") || this.datewidget.get_value()); } + return true; }, focus: function($element) { this._super($element || (this.datewidget && this.datewidget.$input)); @@ -2076,16 +2065,16 @@ instance.web.form.FieldText = instance.web.form.AbstractField.extend(_.extend({} this.$element.text(show_value); } }, - validate: function() { - this.invalid = false; + is_valid: function() { if (!this.get("effective_readonly")) { try { var value_ = instance.web.parse_value(this.$textarea.val(), this, ''); - this.invalid = this.get("required") && value_ === ''; + return !this.get("required") || value_ !== ''; } catch(e) { - this.invalid = true; + return false; } } + return true; }, focus: function($element) { this._super($element || this.$textarea); @@ -2220,13 +2209,13 @@ instance.web.form.FieldSelection = instance.web.form.AbstractField.extend(_.exte this.$element.text(option ? option[1] : this.values[0][1]); } }, - validate: function() { + is_valid: function() { if (this.get("effective_readonly")) { - this.invalid = false; - return; + return true; } var value_ = this.values[this.$element.find('select')[0].selectedIndex]; - this.invalid = !(value_ && !(this.get("required") && value_[0] === false)); + var invalid_ = !(value_ && !(this.get("required") && value_[0] === false)); + return ! invalid_; }, focus: function($element) { this._super($element || this.$element.find('select:first')); @@ -2570,8 +2559,8 @@ instance.web.form.FieldMany2One = instance.web.form.AbstractField.extend(_.exten this._super(value_); this.inhibit_on_change = false; }, - validate: function() { - this.invalid = this.get("required") && ! this.get("value"); + is_valid: function() { + return !this.get("required") || !! this.get("value"); }, focus: function ($element) { this._super($element || this.$input); @@ -2876,23 +2865,18 @@ instance.web.form.FieldOne2Many = instance.web.form.AbstractField.extend({ }, this)); }, is_valid: function() { - this.validate(); - return this._super(); - }, - validate: function() { - this.invalid = false; if (!this.viewmanager.views[this.viewmanager.active_view]) - return; + return true; var view = this.viewmanager.views[this.viewmanager.active_view].controller; if (this.viewmanager.active_view === "form") { for (var f in view.fields) { f = view.fields[f]; if (!f.is_valid()) { - this.invalid = true; - return; + return false; } } } + return true; }, is_dirty: function() { this.save_any_view(); @@ -3066,9 +3050,6 @@ instance.web.form.FieldMany2Many = instance.web.form.AbstractField.extend({ self.reload_content(); this.is_setted.resolve(); }, - validate: function() { - this.invalid = false; - }, load_view: function() { var self = this; this.list_view = new instance.web.form.Many2ManyListView(this, this.dataset, false, { diff --git a/addons/web_calendar/static/src/js/calendar.js b/addons/web_calendar/static/src/js/calendar.js index fe261ba6fec..d92aac4304e 100644 --- a/addons/web_calendar/static/src/js/calendar.js +++ b/addons/web_calendar/static/src/js/calendar.js @@ -291,7 +291,6 @@ instance.web_calendar.CalendarView = instance.web.View.extend({ var ffield = form.fields[field_name]; ffield.reset(); $.when(ffield.set_value(data[field_name])).then(function() { - ffield.validate(); ffield.dirty = true; form.do_onchange(ffield); }); From 79a4e461a7f666cf71b597d3a733c85d03e8647d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 18 Apr 2012 11:23:15 +0200 Subject: [PATCH 12/49] [FIX] Fixed wrong model name. bzr revid: tde@openerp.com-20120418092315-c35p0dtazgkgd9ae --- openerp/addons/base/ir/ir_needaction.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/openerp/addons/base/ir/ir_needaction.py b/openerp/addons/base/ir/ir_needaction.py index 2ea81870c68..6dd9cdfdc54 100644 --- a/openerp/addons/base/ir/ir_needaction.py +++ b/openerp/addons/base/ir/ir_needaction.py @@ -35,7 +35,7 @@ class ir_needaction_users_rel(osv.osv): This model can be seen as a many2many, linking (res_model, res_id) to users (those whose attention is required on the record).''' - _name = 'ir.ir_needaction_users_rel' + _name = 'ir.needaction_users_rel' _description = 'Needaction relationship table' _rec_name = 'id' _order = 'id desc' @@ -126,7 +126,7 @@ class ir_needaction_mixin(osv.osv): return dict.fromkeys(ids, []) def create(self, cr, uid, values, context=None): - rel_obj = self.pool.get('ir.ir_needaction_users_rel') + rel_obj = self.pool.get('ir.needaction_users_rel') # perform create obj_id = super(ir_needaction_mixin, self).create(cr, uid, values, context=context) # link user_ids @@ -135,7 +135,7 @@ class ir_needaction_mixin(osv.osv): return obj_id def write(self, cr, uid, ids, values, context=None): - rel_obj = self.pool.get('ir.ir_needaction_users_rel') + rel_obj = self.pool.get('ir.needaction_users_rel') # perform write write_res = super(ir_needaction_mixin, self).write(cr, uid, ids, values, context=context) # get and update user_ids @@ -146,7 +146,7 @@ class ir_needaction_mixin(osv.osv): def unlink(self, cr, uid, ids, context=None): # unlink user_ids - rel_obj = self.pool.get('ir.ir_needaction_users_rel') + rel_obj = self.pool.get('ir.needaction_users_rel') rel_obj.unlink_users(cr, uid, ids, self._name, context=context) # perform unlink return super(ir_needaction_mixin, self).unlink(cr, uid, ids, context=context) @@ -159,14 +159,14 @@ class ir_needaction_mixin(osv.osv): """Given the current model and a user_id return the record ids that require the user to perform an action""" - rel_obj = self.pool.get('ir.ir_needaction_users_rel') + rel_obj = self.pool.get('ir.needaction_users_rel') rel_ids = rel_obj.search(cr, uid, [('res_model', '=', self._name), ('user_id', '=', user_id)], limit=limit, context=context) return map(itemgetter('res_id'), rel_obj.read(cr, uid, rel_ids, ['res_id'], context=context)) def needaction_get_action_count(self, cr, uid, user_id, limit=80, context=None): """Given the current model and a user_id get the number of actions it has to perform""" - rel_obj = self.pool.get('ir.ir_needaction_users_rel') + rel_obj = self.pool.get('ir.needaction_users_rel') return rel_obj.search(cr, uid, [('res_model', '=', self._name), ('user_id', '=', user_id)], limit=limit, count=True, context=context) def needaction_get_record_references(self, cr, uid, user_id, offset=None, limit=None, order=None, context=None): @@ -174,7 +174,7 @@ class ir_needaction_mixin(osv.osv): perform an action. Records are given as references, a list of tuples (model_name, record_id). This method is trans-model.""" - rel_obj = self.pool.get('ir.ir_needaction_users_rel') + rel_obj = self.pool.get('ir.needaction_users_rel') rel_ids = rel_obj.search(cr, uid, [('user_id', '=', user_id)], offset=offset, limit=limit, order=order, context=context) return map(itemgetter('res_model', 'res_id'), rel_obj.read(cr, uid, rel_ids, ['res_model', 'res_id'], context=context)) From 22adea444c6614243ce280a795931ce91460ddc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 18 Apr 2012 11:41:01 +0200 Subject: [PATCH 13/49] [ADD] Added a 'needaction_pending' field: this states whether the record has an action pending. bzr revid: tde@openerp.com-20120418094101-o0a9lcpux8b6d75u --- openerp/addons/base/ir/ir_needaction.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/openerp/addons/base/ir/ir_needaction.py b/openerp/addons/base/ir/ir_needaction.py index 6dd9cdfdc54..7270eb2ce54 100644 --- a/openerp/addons/base/ir/ir_needaction.py +++ b/openerp/addons/base/ir/ir_needaction.py @@ -115,6 +115,21 @@ class ir_needaction_mixin(osv.osv): _name = 'ir.needaction_mixin' _description = '"Need action" mixin' + def get_needaction_pending(self, cr, uid, ids, name, arg, context=None): + res = {} + rel_obj = self.pool.get('ir.needaction_users_rel') + for id in ids: + res[id] = rel_obj.search(cr, uid, [('res_model', '=', self._name), ('res_id', '=', id), ('user_id', '=', uid)], limit=1, count=True, context=context) > 0 + return res + + _columns = { + 'needaction_pending': fields.function(get_needaction_pending, type='boolean', + string='Need action pending', + help='If True, this field states that users have to perform an action. \ + This field comes from the needaction mechanism. Please refer \ + to the ir.needaction_mixin class.'), + } + #------------------------------------------------------ # Addon API #------------------------------------------------------ From 9012e82d774ce96d0fafaa41b56e39dd3b4ab6c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 18 Apr 2012 11:45:54 +0200 Subject: [PATCH 14/49] [IMP] 'needaction_pending' field: not necessary to read a table as the information is already available in object. bzr revid: tde@openerp.com-20120418094554-n5p2wf599tbmhizi --- openerp/addons/base/ir/ir_needaction.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openerp/addons/base/ir/ir_needaction.py b/openerp/addons/base/ir/ir_needaction.py index 7270eb2ce54..7ed9762f8db 100644 --- a/openerp/addons/base/ir/ir_needaction.py +++ b/openerp/addons/base/ir/ir_needaction.py @@ -117,9 +117,9 @@ class ir_needaction_mixin(osv.osv): def get_needaction_pending(self, cr, uid, ids, name, arg, context=None): res = {} - rel_obj = self.pool.get('ir.needaction_users_rel') + needaction_user_ids = self.get_needaction_user_ids(cr, uid, ids, context=context) for id in ids: - res[id] = rel_obj.search(cr, uid, [('res_model', '=', self._name), ('res_id', '=', id), ('user_id', '=', uid)], limit=1, count=True, context=context) > 0 + res[id] = uid in needaction_user_ids[id] return res _columns = { From 84dadd0e27e1c6f7686ac97e3cfbdd53d74ef757 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Wed, 18 Apr 2012 11:50:43 +0200 Subject: [PATCH 15/49] [imp] separated syntax validity from required validity in form view bzr revid: nicolas.vanhoren@openerp.com-20120418095043-6b3pgd89d984f6o0 --- addons/web/static/src/js/view_form.js | 50 +++++++++++++++++---------- 1 file changed, 32 insertions(+), 18 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 2ca19687cec..976c844c3db 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -1698,8 +1698,14 @@ instance.web.form.AbstractField = instance.web.form.Widget.extend(/** @lends ins return this.get('value'); }, is_valid: function() { + return this.is_syntax_valid() && (! this.get('required') || ! this.is_false()); + }, + is_syntax_valid: function() { return true; }, + is_false: function() { + return this.get('value') === false; + }, is_dirty: function() { return this.dirty && !this.get("effective_readonly"); }, @@ -1716,7 +1722,7 @@ instance.web.form.AbstractField = instance.web.form.Widget.extend(/** @lends ins }, _on_ui_change: function() { this.dirty = true; - if (this.is_valid()) { + if (this.is_syntax_valid()) { this.view.do_onchange(this); this.view.on_form_changed(true); this.view.do_notify_change(); @@ -1810,17 +1816,20 @@ instance.web.form.FieldChar = instance.web.form.AbstractField.extend(_.extend({} this.$element.text(show_value); } }, - is_valid: function() { + is_syntax_valid: function() { if (!this.get("effective_readonly")) { try { var value_ = instance.web.parse_value(this.$element.find('input').val(), this, ''); - return (! this.get("required")) || value_ !== ''; + return true; } catch(e) { return false; } } return true; }, + is_false: function() { + return this.get('value') === ''; + }, focus: function($element) { this._super($element || this.$element.find('input:first')); } @@ -1846,7 +1855,7 @@ instance.web.form.FieldEmail = instance.web.form.FieldChar.extend({ } }, on_button_clicked: function() { - if (!this.get('value') || !this.is_valid()) { + if (!this.get('value') || !this.is_syntax_valid()) { this.do_warn("E-mail error", "Can't send email to invalid e-mail address"); } else { location.href = 'mailto:' + this.get('value'); @@ -1958,7 +1967,7 @@ instance.web.DateTimeWidget = instance.web.OldWidget.extend({ this.$input.prop('readonly', this.readonly); this.$element.find('img.oe_datepicker_trigger').toggleClass('oe_input_icon_disabled', readonly); }, - is_valid: function() { + is_valid_: function() { var value_ = this.$input.val(); if (value_ === "") { return true; @@ -1978,7 +1987,7 @@ instance.web.DateTimeWidget = instance.web.OldWidget.extend({ return instance.web.format_value(v, {"widget": this.type_of_date}); }, on_change: function() { - if (this.is_valid()) { + if (this.is_valid_()) { this.set_value_from_ui_(); } } @@ -2020,12 +2029,15 @@ instance.web.form.FieldDatetime = instance.web.form.AbstractField.extend(_.exten this.$element.text(instance.web.format_value(this.get('value'), this, '')); } }, - is_valid: function() { + is_syntax_valid: function() { if (!this.get("effective_readonly")) { - return this.datewidget.is_valid() && (!this.get("required") || this.datewidget.get_value()); + return this.datewidget.is_valid_(); } return true; }, + is_false: function() { + return this.get('value') === ''; + }, focus: function($element) { this._super($element || (this.datewidget && this.datewidget.$input)); } @@ -2065,17 +2077,20 @@ instance.web.form.FieldText = instance.web.form.AbstractField.extend(_.extend({} this.$element.text(show_value); } }, - is_valid: function() { + is_syntax_valid: function() { if (!this.get("effective_readonly")) { try { var value_ = instance.web.parse_value(this.$textarea.val(), this, ''); - return !this.get("required") || value_ !== ''; + return true; } catch(e) { return false; } } return true; }, + is_false: function() { + return this.get('value') === ''; + }, focus: function($element) { this._super($element || this.$textarea); }, @@ -2209,13 +2224,12 @@ instance.web.form.FieldSelection = instance.web.form.AbstractField.extend(_.exte this.$element.text(option ? option[1] : this.values[0][1]); } }, - is_valid: function() { + is_syntax_valid: function() { if (this.get("effective_readonly")) { return true; } var value_ = this.values[this.$element.find('select')[0].selectedIndex]; - var invalid_ = !(value_ && !(this.get("required") && value_[0] === false)); - return ! invalid_; + return !! value_; }, focus: function($element) { this._super($element || this.$element.find('select:first')); @@ -2559,8 +2573,8 @@ instance.web.form.FieldMany2One = instance.web.form.AbstractField.extend(_.exten this._super(value_); this.inhibit_on_change = false; }, - is_valid: function() { - return !this.get("required") || !! this.get("value"); + is_false: function() { + return ! this.get("value"); }, focus: function ($element) { this._super($element || this.$input); @@ -2864,7 +2878,7 @@ instance.web.form.FieldOne2Many = instance.web.form.AbstractField.extend({ return false; }, this)); }, - is_valid: function() { + is_syntax_valid: function() { if (!this.viewmanager.views[this.viewmanager.active_view]) return true; var view = this.viewmanager.views[this.viewmanager.active_view].controller; @@ -3510,8 +3524,8 @@ instance.web.form.FieldReference = instance.web.form.AbstractField.extend(_.exte this.m2o.renderElement(); this.m2o.start(); }, - is_valid: function() { - return this.get("required") === false || typeof(this.get_value()) === 'string'; + is_false: function() { + return typeof(this.get_value()) !== 'string'; }, is_dirty: function() { return this.selection.is_dirty() || this.m2o.is_dirty(); From e4063efdf27324d91ad2d1a33f042e0c2b192af8 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Wed, 18 Apr 2012 11:57:58 +0200 Subject: [PATCH 16/49] [imp] changed the way on_changes are received by the form view bzr revid: nicolas.vanhoren@openerp.com-20120418095758-x7du906934jbkp90 --- addons/web/static/src/js/view_form.js | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 976c844c3db..3cda7bf1b4c 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -853,6 +853,11 @@ instance.web.FormView = instance.web.View.extend({ if (this.get_field(name).translate) { this.translatable_fields.push(field); } + field.on('changed_value', this, function() { + this.do_onchange(field); + this.on_form_changed(true); + this.do_notify_change(); + }); }, get_field: function(field_name) { return this.fields_view.fields[field_name]; @@ -1574,7 +1579,7 @@ instance.web.form.FieldManagerInterface = { * - force_readonly: boolean, When it is true, the field should always appear * in read only mode, no matter what the value of the "readonly" property can be. * Events: - * - ... + * - changed_value: called to trigger a on_change in the view * */ instance.web.form.FieldInterface = { @@ -1662,14 +1667,12 @@ instance.web.form.AbstractField = instance.web.form.Widget.extend(/** @lends ins _.bind(test_effective_readonly, this)(); this.on("change:value", this, function() { - if (this._field_is_started && ! this._inhibit_on_change) + if (! this._inhibit_on_change) this._on_ui_change(); }); }, start: function() { this._super.apply(this, arguments); - // quick hack, will change later - this._field_is_started = true; if (this.field.translate) { this.$element.addClass('oe_form_field_translatable'); this.$element.find('.oe_field_translate').click(this.on_translate); @@ -1723,9 +1726,7 @@ instance.web.form.AbstractField = instance.web.form.Widget.extend(/** @lends ins _on_ui_change: function() { this.dirty = true; if (this.is_syntax_valid()) { - this.view.do_onchange(this); - this.view.on_form_changed(true); - this.view.do_notify_change(); + this.trigger('changed_value'); } else { this.update_dom(true); } From 49f785c74ec6e6aa5df27439e8bf8860e23df58d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 18 Apr 2012 11:58:54 +0200 Subject: [PATCH 17/49] [DOC] Improved doc, adding reference to the needaction_pending field. bzr revid: tde@openerp.com-20120418095854-29o6qupaoi741imr --- doc/api/need_action_specs.rst | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/doc/api/need_action_specs.rst b/doc/api/need_action_specs.rst index 88787ae4c44..de1b75a5fb1 100644 --- a/doc/api/need_action_specs.rst +++ b/doc/api/need_action_specs.rst @@ -1,6 +1,8 @@ Need action mechanism ===================== +.. versionadded:: openobject-server.4124 + ir.needaction_mixin mixin class +++++++++++++++++++++++++++++++ @@ -15,15 +17,37 @@ Objects using the need_action feature should override the ``get_needaction_user_ 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) + - ``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). + +.. versionadded:: openobject-server.XXXX + +This revision of the needaction_mixin mechanism slighty modifies the class behavior. The ``ir_needaction_mixin`` class now adds a function field on model inheriting from the class. This field allows to state whether a given record has a needaction for the current user. This is usefull if you want to customize views according to the needaction feature. For example, you may want to set records in bold in a list view if the current user has an action to perform on the record. This makes the class not a pure abstract class, but allows to easily use the action information. The field definition is:: + + + def get_needaction_pending(self, cr, uid, ids, name, arg, context=None): + res = {} + needaction_user_ids = self.get_needaction_user_ids(cr, uid, ids, context=context) + for id in ids: + res[id] = uid in needaction_user_ids[id] + return res + + _columns = { + 'needaction_pending': fields.function(get_needaction_pending, type='boolean', + string='Need action pending', + help='If True, this field states that users have to perform an action. \ + This field comes from the needaction mechanism. Please refer \ + to the ir.needaction_mixin class.'), + } Menu modification +++++++++++++++++ +.. versionchanged:: openobject-server.XXXX + 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. + - ``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. **This field has been removed on version XXXX**. 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. From a787430ba943af3a7e7e71b3ddcb0c76d00d5d1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 18 Apr 2012 13:10:16 +0200 Subject: [PATCH 18/49] [DOC] Small doc update. bzr revid: tde@openerp.com-20120418111016-fgmvnq85esyhvw87 --- doc/api/need_action_specs.rst | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/doc/api/need_action_specs.rst b/doc/api/need_action_specs.rst index de1b75a5fb1..111c156ac79 100644 --- a/doc/api/need_action_specs.rst +++ b/doc/api/need_action_specs.rst @@ -1,16 +1,18 @@ Need action mechanism ===================== -.. versionadded:: openobject-server.4124 +.. versionadded:: 7.0 -ir.needaction_mixin mixin class -+++++++++++++++++++++++++++++++ +ir.needaction_mixin class ++++++++++++++++++++++++++ + +.. versionadded:: openobject-server.4124 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 ir.needaction_mixin. The mixin class manages the low-level considerations of updating relationships. Every change made on the record calls a method that updates the relationships. +This class wraps a class (ir.ir_needaction_users_rel) that behaves like a many2many field. However, no field is added to the model inheriting from ir.needaction_mixin. 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. @@ -39,6 +41,23 @@ This revision of the needaction_mixin mechanism slighty modifies the class behav to the ir.needaction_mixin class.'), } +ir.needaction_users_rel class ++++++++++++++++++++++++++++++ + +.. versionadded:: openobject-server.4124 + +This class essentially wraps a database table that behaves like a many2many. +It holds data related to the needaction mechanism inside OpenERP. A row +in this model is characterized by: + + - ``res_model``: model of the record requiring an action + - ``res_id``: ID of the record requiring an action + - ``user_id``: foreign key to the res.users table, to the user that + has to perform the action + +This model can be seen as a many2many, linking (res_model, res_id) to +users (those whose attention is required on the record) + Menu modification +++++++++++++++++ From 8d858cf0b02e4e9a053ac3c4dd1438afe1c6278a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 18 Apr 2012 13:12:12 +0200 Subject: [PATCH 19/49] [TMP] Uncommit temp fix. bzr revid: tde@openerp.com-20120418111212-j035lajdu2g045kf --- openerp/addons/base/ir/ir_ui_menu.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openerp/addons/base/ir/ir_ui_menu.py b/openerp/addons/base/ir/ir_ui_menu.py index 0de4ff74c11..e861f8231ca 100644 --- a/openerp/addons/base/ir/ir_ui_menu.py +++ b/openerp/addons/base/ir/ir_ui_menu.py @@ -264,7 +264,7 @@ class ir_ui_menu(osv.osv): 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) # TODO: find the addon that causes a bug on runbot, not on local - if not isinstance(menu_needaction_res[1], (int, long)): menu_needaction_res[1] = 0 + #if not isinstance(menu_needaction_res[1], (int, long)): menu_needaction_res[1] = 0 else: menu_needaction_res = [False, 0] res[menu.id]['needaction_enabled'] = menu_needaction_res[0] From 78883771bdb16b9d2c4c926162fc1d5dfab0e068 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 18 Apr 2012 13:25:43 +0200 Subject: [PATCH 20/49] [DOC] Added comments in code. bzr revid: tde@openerp.com-20120418112543-g5jbcn2h5mgrbxtc --- openerp/addons/base/ir/ir_needaction.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/openerp/addons/base/ir/ir_needaction.py b/openerp/addons/base/ir/ir_needaction.py index 7ed9762f8db..cb6d29d1715 100644 --- a/openerp/addons/base/ir/ir_needaction.py +++ b/openerp/addons/base/ir/ir_needaction.py @@ -111,7 +111,15 @@ class ir_needaction_mixin(osv.osv): - ``needaction_get_user_record_references``: for a given uid, get all the records that ask this user to perform an action. Records are given as references, a list of tuples (model_name, record_id) - ''' + + The ``ir_needaction_mixin`` class adds a function field on model inheriting + from the class. This field allows to state whether a given record has + a needaction for the current user. This is usefull if you want to customize + views according to the needaction feature. For example, you may want to + set records in bold in a list view if the current user has an action to + perform on the record. This makes the class not a pure abstract class, + but allows to easily use the action information.''' + _name = 'ir.needaction_mixin' _description = '"Need action" mixin' From 3da67c851fa3333215dfa9afb8faa2be032dac11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 18 Apr 2012 13:37:06 +0200 Subject: [PATCH 21/49] [REM] Removed unused field in menus. BTW it solves a GTk client crash. bzr revid: tde@openerp.com-20120418113706-raesdy1tak5dwkwo --- openerp/addons/base/ir/ir_ui_menu.py | 1 - 1 file changed, 1 deletion(-) diff --git a/openerp/addons/base/ir/ir_ui_menu.py b/openerp/addons/base/ir/ir_ui_menu.py index e861f8231ca..f73496cb230 100644 --- a/openerp/addons/base/ir/ir_ui_menu.py +++ b/openerp/addons/base/ir/ir_ui_menu.py @@ -289,7 +289,6 @@ class ir_ui_menu(osv.osv): '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=[ From d029e2734c65624083eeb593a9684e35d31e7b47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thibault=20Delavall=C3=A9e?= Date: Wed, 18 Apr 2012 13:37:48 +0200 Subject: [PATCH 22/49] [DOC] Small doc update. bzr revid: tde@openerp.com-20120418113748-vsdtsype2l94wbl5 --- doc/api/need_action_specs.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/api/need_action_specs.rst b/doc/api/need_action_specs.rst index 111c156ac79..a3a8ba04bf0 100644 --- a/doc/api/need_action_specs.rst +++ b/doc/api/need_action_specs.rst @@ -66,7 +66,7 @@ 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. **This field has been removed on version XXXX**. + - **REMOVED** ``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. **This field has been removed on version XXXX**. 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. From 29d48867ab89e6067fb34b97522095c334040766 Mon Sep 17 00:00:00 2001 From: niv-openerp Date: Wed, 18 Apr 2012 13:50:04 +0200 Subject: [PATCH 23/49] [imp] changed the way validity is tested bzr revid: nicolas.vanhoren@openerp.com-20120418115004-otz3xocucky9u5gl --- addons/web/static/src/js/view_form.js | 47 ++++++++++----------------- 1 file changed, 17 insertions(+), 30 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 3cda7bf1b4c..fedc602b4b1 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -247,7 +247,7 @@ instance.web.FormView = instance.web.View.extend({ } _(this.fields).each(function (field, f) { - field.reset(); + field._dirty_flag = false; var result = field.set_value(self.datarecord[f] || false); set_values.push(result); }); @@ -258,7 +258,7 @@ instance.web.FormView = instance.web.View.extend({ _.each(self.fields_order, function(field_name) { if (record[field_name] !== undefined) { var field = self.fields[field_name]; - field.dirty = true; + field._dirty_flag = true; self.do_onchange(field); } }); @@ -469,7 +469,7 @@ instance.web.FormView = instance.web.View.extend({ var value_ = result.value[f]; if (field.get_value() != value_) { field.set_value(value_); - field.dirty = true; + field._dirty_flag = true; if (!_.contains(processed, field.name)) { this.do_onchange(field, processed); } @@ -615,7 +615,7 @@ instance.web.FormView = instance.web.View.extend({ if (!first_invalid_field) { first_invalid_field = f; } - } else if (f.name !== 'id' && !f.get("readonly") && (!self.datarecord.id || f.is_dirty())) { + } else if (f.name !== 'id' && !f.get("readonly") && (!self.datarecord.id || f._dirty_flag)) { // Special case 'id' field, do not save this field // on 'create' : save all non readonly fields // on 'edit' : save non readonly modified fields @@ -754,7 +754,7 @@ instance.web.FormView = instance.web.View.extend({ }, is_dirty: function() { return _.any(this.fields, function (value_) { - return value_.is_dirty(); + return value_._dirty_flag; }); }, is_interactible_record: function() { @@ -854,9 +854,11 @@ instance.web.FormView = instance.web.View.extend({ this.translatable_fields.push(field); } field.on('changed_value', this, function() { - this.do_onchange(field); - this.on_form_changed(true); - this.do_notify_change(); + if (field.is_syntax_valid()) { + this.do_onchange(field); + this.on_form_changed(true); + this.do_notify_change(); + } }); }, get_field: function(field_name) { @@ -1628,7 +1630,11 @@ instance.web.form.FieldInterface = { * Inform the current object of the id it should use to match a html