diff --git a/addons/account_analytic_analysis/i18n/fi.po b/addons/account_analytic_analysis/i18n/fi.po index dc4d71fde1d..6d42a86ce98 100644 --- a/addons/account_analytic_analysis/i18n/fi.po +++ b/addons/account_analytic_analysis/i18n/fi.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: 2010-09-09 07:17+0000\n" -"Last-Translator: OpenERP Administrators \n" +"PO-Revision-Date: 2012-05-08 09:39+0000\n" +"Last-Translator: Tino Kraft \n" "Language-Team: Finnish \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:32+0000\n" -"X-Generator: Launchpad (build 14763)\n" +"X-Launchpad-Export-Date: 2012-05-09 04:47+0000\n" +"X-Generator: Launchpad (build 15213)\n" #. module: account_analytic_analysis #: field:account.analytic.account,revenue_per_hour:0 @@ -30,7 +30,7 @@ msgstr "Laskettu kaavalla: Laskun hinta enintään - Laskutettu" #. module: account_analytic_analysis #: help:account.analytic.account,last_worked_date:0 msgid "Date of the latest work done on this account." -msgstr "Päivämäärä viimeiselle Työ valmis merkinnälle" +msgstr "Päivämäärä viimeiselle Työ valmis -merkinnälle" #. module: account_analytic_analysis #: view:account.analytic.account:0 @@ -38,11 +38,13 @@ msgid "" "The contracts to be renewed because the deadline is passed or the working " "hours are higher than the allocated hours" msgstr "" +"Sopimukset on uusittava, koska deadline on mennyt tai työtuntien määrä " +"ylittää suunnitellun tuntimäärän" #. module: account_analytic_analysis #: view:account.analytic.account:0 msgid "Pending contracts to renew with your customer" -msgstr "" +msgstr "Asiakkaan kanssa uusittavat odottavat sopimukset" #. module: account_analytic_analysis #: help:account.analytic.account,hours_qtt_non_invoiced:0 @@ -125,8 +127,8 @@ msgid "" "If invoice from the costs, this is the date of the latest work or cost that " "have been invoiced." msgstr "" -"Jos laskutetaan kuluista, tämä on päivä jolloin viimeisimmät työt tai kulut " -"on laskutettu." +"Jos laskutetaan kuluista, tämä on viimeisimpien töiden tai kulujen " +"laskutuspäivä." #. module: account_analytic_analysis #: view:account.analytic.account:0 @@ -152,7 +154,7 @@ msgstr "" #. module: account_analytic_analysis #: field:account.analytic.account,remaining_hours:0 msgid "Remaining Time" -msgstr "" +msgstr "Jäljellä oleva aika" #. module: account_analytic_analysis #: model:ir.actions.act_window,name:account_analytic_analysis.action_account_analytic_overdue @@ -177,8 +179,8 @@ msgid "" "if all these costs have been invoiced at the normal sale price provided by " "the pricelist." msgstr "" -"Perustuu projektin kustannuksille.Mikä olisi ollut tulo jos kaikki kulut " -"oltaisiin laskutettu hintalistan listahinnalla." +"Perustuu projektin kustannuksille: mikä olisi ollut tulo, jos kaikki kulut " +"olisi laskutettu hintalistan listahinnalla." #. module: account_analytic_analysis #: view:account.analytic.account:0 @@ -220,7 +222,7 @@ msgstr "Tuntiyhteenveto käyttäjittäin" #. module: account_analytic_analysis #: field:account.analytic.account,ca_invoiced:0 msgid "Invoiced Amount" -msgstr "Laskutetut määrä" +msgstr "Laskutettu määrä" #. module: account_analytic_analysis #: field:account.analytic.account,last_worked_invoiced_date:0 @@ -245,7 +247,7 @@ msgstr "Todellinen kate" #. module: account_analytic_analysis #: help:account.analytic.account,ca_invoiced:0 msgid "Total customer invoiced amount for this account." -msgstr "Asiakkaiden kokonaislaskutuksen määrä tälle kuukaudelle" +msgstr "Asiakkaiden kokonaislaskutuksen määrä tälle tilille." #. module: account_analytic_analysis #: model:ir.model,name:account_analytic_analysis.model_account_analytic_analysis_summary_month @@ -260,7 +262,7 @@ msgstr "Virhe! Et voi luoda sisäkkäisiä analyyttisiä tilejä." #. module: account_analytic_analysis #: field:account.analytic.account,remaining_ca:0 msgid "Remaining Revenue" -msgstr "Jäljelläoleva liikevaihto" +msgstr "Jäljellä oleva liikevaihto" #. module: account_analytic_analysis #: help:account.analytic.account,remaining_hours:0 @@ -280,8 +282,8 @@ msgid "" "If invoice from analytic account, the remaining amount you can invoice to " "the customer based on the total costs." msgstr "" -"Jos laskutetaan analyyttisiltä tileiltä, jäljelläoleva määrä jonka voit " -"veloittaa asiakkaala määräytyy kokonaiskuluista." +"Jos laskutetaan analyyttisiltä tileiltä, jäljellä oleva määrä, jonka voit " +"veloittaa asiakkaalta, määräytyy kokonaiskuluista." #. module: account_analytic_analysis #: help:account.analytic.account,revenue_per_hour:0 diff --git a/addons/account_coda/i18n/ja.po b/addons/account_coda/i18n/ja.po index 45e68ffc18a..8b4b3d1ba78 100644 --- a/addons/account_coda/i18n/ja.po +++ b/addons/account_coda/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-05-07 23:42+0000\n" +"PO-Revision-Date: 2012-05-09 04:41+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-05-08 04:49+0000\n" -"X-Generator: Launchpad (build 15204)\n" +"X-Launchpad-Export-Date: 2012-05-09 04:47+0000\n" +"X-Generator: Launchpad (build 15213)\n" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_09_21 @@ -119,7 +119,7 @@ msgid "" "The File contains an invalid CODA Transaction Family : %s!" msgstr "" "\n" -"ファイルは無効なCODA取引の一群が含まれています:%s" +"ファイルは無効なCODA取引ファミリが含まれています:%s" #. module: account_coda #: model:account.coda.trans.category,description:account_coda.actrca_030 @@ -388,12 +388,12 @@ msgstr "取引コード" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_47_13 msgid "Discount foreign supplier's bills" -msgstr "外国仕入先請求書の割引" +msgstr "外国仕入先請求の割引" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcf_05 msgid "Direct debit" -msgstr "口座引き落とし" +msgstr "口座引落" #. module: account_coda #: model:account.coda.trans.code,comment:account_coda.actcc_47_11 @@ -568,7 +568,7 @@ msgstr "ユーロに相当額" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_47_50 msgid "Remittance of foreign bill credit after collection" -msgstr "訂正後害外請求クレジットの送金" +msgstr "集金後外国請求クレジットの送金" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_03_03 @@ -633,7 +633,7 @@ msgstr "クレジット手数料" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_43_58 msgid "Remittance of foreign cheque credit after collection" -msgstr "訂正後外国小切手クレジットの送金" +msgstr "集金後外国小切手クレジットの送金" #. module: account_coda #: model:account.coda.trans.type,description:account_coda.actt_8 @@ -702,7 +702,7 @@ msgstr "外国小切手の支払に関連する経費" #. module: account_coda #: field:account.coda.trans.code,parent_id:0 msgid "Family" -msgstr "家族" +msgstr "ファミリ" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_11_66 @@ -858,7 +858,7 @@ msgstr "海外証書による送金 - 通常貯められたクレジット" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_04_52 msgid "Loading GSM cards" -msgstr "GSMカードを入れる" +msgstr "GSMカードの装填" #. module: account_coda #: view:coda.bank.statement:0 @@ -1075,18 +1075,18 @@ msgstr "構造化フォーマット通信によるクレジット転送または #. module: account_coda #: model:account.coda.comm.type,description:account_coda.acct_127 msgid "European direct debit (SEPA)" -msgstr "" +msgstr "欧州口座引落(SEPA)" #. module: account_coda #: model:account.coda.trans.category,description:account_coda.actrca_068 msgid "Countervalue of an entry" -msgstr "" +msgstr "エントリーの対価" #. module: account_coda #: model:account.coda.trans.category,description:account_coda.actrca_010 #: model:account.coda.trans.code,description:account_coda.actcc_80_31 msgid "Writ service fee" -msgstr "" +msgstr "令状サービス料" #. module: account_coda #: code:addons/account_coda/wizard/account_coda_import.py:635 @@ -1096,43 +1096,45 @@ msgid "" "The CODA Statement %s Starting Balance (%.2f) does not correspond with the " "previous Closing Balance (%.2f) in journal %s!" msgstr "" +"\n" +"CODA取引明細書 %s 期首残高(%.2f)は前期期末残高(%.2f)と対応していません。仕訳帳 %s" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_11_13 msgid "Your repurchase of issue" -msgstr "" +msgstr "発行物の買戻し" #. module: account_coda #: model:account.coda.trans.category,description:account_coda.actrca_409 msgid "Safe deposit charges" -msgstr "" +msgstr "保管庫費用" #. module: account_coda #: field:coda.bank.account,def_payable:0 msgid "Default Payable Account" -msgstr "" +msgstr "デフォルト買掛金勘定" #. module: account_coda #: model:account.coda.trans.category,description:account_coda.actrca_055 msgid "Repayment loan or credit capital" -msgstr "" +msgstr "返済ローンまたはクレジット資本" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_13_05 msgid "Settlement of fixed advance" -msgstr "" +msgstr "固定貸出金の決済" #. module: account_coda #: model:account.coda.trans.code,comment:account_coda.actcc_80_15 msgid "" "Commission collected to the debit of the customer to whom the bank delivers " "a key which gives access to the night safe" -msgstr "" +msgstr "銀行が夜間の安全なアクセス用のために提供した鍵に対する顧客の借方に集められた手数料" #. module: account_coda #: model:account.coda.trans.category,description:account_coda.actrca_059 msgid "Default interest" -msgstr "" +msgstr "延滞利息" #. module: account_coda #: help:coda.bank.account,coda_st_naming:0 @@ -1148,97 +1150,106 @@ msgid "" "CODA sequence number: %(coda)s\n" "Paper Statement sequence number: %(paper)s" msgstr "" +"CODA処理により生成される銀行取引明細書の名前を作成するためのルールを定義して下さい。\n" +"例えば、%(code)s%(y)s/%(paper)s\n" +"\n" +"変数:\n" +"銀行仕訳帳コード:%(code)s\n" +"4桁の西暦年:%(year)s\n" +"2桁の西暦年:%(y)s\n" +"CODA順序番号:%(coda)s\n" +"取引明細書用紙順序番号:%(paper)s" #. module: account_coda #: model:account.coda.comm.type,description:account_coda.acct_108 #: model:account.coda.trans.code,description:account_coda.actcc_35_01 #: model:account.coda.trans.code,description:account_coda.actcc_35_50 msgid "Closing" -msgstr "" +msgstr "取引完了" #. module: account_coda #: help:coda.bank.statement.line,globalisation_id:0 msgid "" "Code to identify transactions belonging to the same globalisation level " "within a batch payment" -msgstr "" +msgstr "バッチ支払いの中で、同じ国際化レベルに沿った取引を識別するためのコード" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_07_05 msgid "Commercial paper claimed back" -msgstr "" +msgstr "コマーシャルペーパーの変換請求" #. module: account_coda #: model:account.coda.trans.category,description:account_coda.actrca_411 msgid "Fixed collection charge" -msgstr "" +msgstr "固定回収費" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_09_64 msgid "Your winning lottery ticket" -msgstr "" +msgstr "当選宝くじ" #. module: account_coda #: model:account.coda.comm.type,description:account_coda.acct_009 msgid "" "Identification of the de ultimate ordering customer/debtor (SEPA SCT/SDD)" -msgstr "" +msgstr "最終的な注文顧客 / 債務者の識別(SEPA 送金・口座振込(SCT) / 自動引落し(SDD))" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_80_05 msgid "Card charges" -msgstr "" +msgstr "カード手数料" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_80_03 msgid "Payment card charges" -msgstr "" +msgstr "支払カード手数料" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_07_54 msgid "Remittance of commercial paper for discount" -msgstr "" +msgstr "割引のためのコマーシャルペーパーの送金" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_05_01 msgid "Payment" -msgstr "" +msgstr "支払" #. module: account_coda #: view:account.coda.import:0 msgid "_Cancel" -msgstr "" +msgstr "キャンセル" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_09_07 msgid "Purchase of gold/pieces" -msgstr "" +msgstr "金 / 硬貨の購入" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_01_15 msgid "Balance due insurance premium" -msgstr "" +msgstr "保険料不足額" #. module: account_coda #: model:account.coda.trans.code,comment:account_coda.actcc_11_11 msgid "Debit of the issuer by the bank in charge of the financial service" -msgstr "" +msgstr "金融サービス料金の中の銀行による発行者のデビット" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_03_58 msgid "Remittance of cheques, vouchers, etc. credit after collection" -msgstr "" +msgstr "集金後の小切手、クーポンなどクレジットの送金" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_09_19 #: model:account.coda.trans.code,description:account_coda.actcc_09_68 msgid "Difference in payment" -msgstr "" +msgstr "支払の差額" #. module: account_coda #: field:coda.bank.statement.line,date:0 msgid "Entry Date" -msgstr "" +msgstr "入力日" #. module: account_coda #: code:addons/account_coda/wizard/account_coda_import.py:193 @@ -1249,11 +1260,13 @@ msgid "" "Description' fields of your configuration record match with '%s', '%s' and " "'%s' !" msgstr "" +"\n" +"銀行口座番号、通貨、口座詳細について設定レコードの %s、%s、%s と一致することを確認して下さい。" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_47_58 msgid "Idem without guarantee" -msgstr "" +msgstr "保証なしの外国仕入先請求の送金" #. module: account_coda #: code:addons/account_coda/wizard/account_coda_import.py:139 @@ -1263,16 +1276,18 @@ msgid "" "CODA File with Filename '%s' and Creation Date '%s' has already been " "imported !" msgstr "" +"\n" +"CODAファイルファイル名 %s 作成日 %s は既にインポート済みです。" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_03_63 msgid "Second credit of unpaid cheque" -msgstr "" +msgstr "未払小切手の第2クレジット" #. module: account_coda #: model:account.coda.trans.category,description:account_coda.actrca_065 msgid "Interest payment advice" -msgstr "" +msgstr "利払のアドバイス" #. module: account_coda #: field:account.coda.trans.code,type:0 @@ -1280,29 +1295,29 @@ msgstr "" #: field:coda.bank.statement,type:0 #: field:coda.bank.statement.line,type:0 msgid "Type" -msgstr "" +msgstr "タイプ" #. module: account_coda #: model:account.coda.comm.type,description:account_coda.acct_112 msgid "ATM payment (usually Eurocheque card)" -msgstr "" +msgstr "ATM支払(通常はユーロチェックカード)" #. module: account_coda #: field:coda.bank.account,description1:0 msgid "Primary Account Description" -msgstr "" +msgstr "主要口座詳細" #. module: account_coda #: model:account.coda.comm.type,description:account_coda.acct_126 msgid "Term investments" -msgstr "" +msgstr "短期投資" #. module: account_coda #: model:account.coda.comm.type,description:account_coda.acct_100 msgid "" "(SEPA) payment with a structured format communication applying the ISO " "standard 11649: Structured creditor reference to remittan" -msgstr "" +msgstr "(SEPA)ISO標準11649に適用した構造化フォーマットの通信による支払:送金するための構造化された債権者の参照" #. module: account_coda #: code:addons/account_coda/wizard/account_coda_import.py:164 @@ -1311,117 +1326,119 @@ msgid "" "\n" "Foreign bank accounts with IBAN structure are not supported !" msgstr "" +"\n" +"IBAN構造の外国銀行口座はサポートされていません。" #. module: account_coda #: model:account.coda.trans.category,description:account_coda.actrca_100 msgid "Gross amount" -msgstr "" +msgstr "総額" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_43_62 msgid "Reversal of cheques" -msgstr "" +msgstr "小切手の取り消し" #. module: account_coda #: code:addons/account_coda/account_coda.py:299 #, python-format msgid "Invalid action !" -msgstr "" +msgstr "無効なアクションです。" #. module: account_coda #: model:account.coda.trans.code,comment:account_coda.actcc_01_64 #: model:account.coda.trans.code,comment:account_coda.actcc_41_13 #: model:account.coda.trans.code,comment:account_coda.actcc_41_64 msgid "Intracompany" -msgstr "" +msgstr "社内" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_30_01 msgid "Spot purchase of foreign exchange" -msgstr "" +msgstr "外国為替のスポット購入" #. module: account_coda #: model:account.coda.trans.category,description:account_coda.actrca_429 msgid "Foreign Stock Exchange tax" -msgstr "" +msgstr "外国株式取引税" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_05_05 #: model:account.coda.trans.code,description:account_coda.actcc_05_54 msgid "Reimbursement" -msgstr "" +msgstr "精算" #. module: account_coda #: code:addons/account_coda/wizard/account_coda_import.py:868 #, python-format msgid "None" -msgstr "" +msgstr "なし" #. module: account_coda #: model:account.coda.trans.category,description:account_coda.actrca_405 msgid "Bill guarantee commission" -msgstr "" +msgstr "証書支払保証料" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_47_06 msgid "Extension" -msgstr "" +msgstr "拡張" #. module: account_coda #: model:account.coda.comm.type,description:account_coda.acct_008 msgid "Identification of the de ultimate beneficiary/creditor (SEPA SCT/SDD)" -msgstr "" +msgstr "最終的な受益者 / 債権者の識別(SEPA 送金・口座振込(SCT) / 自動引落し(SDD))" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcf_49 msgid "Foreign counter transactions" -msgstr "" +msgstr "外国の店頭取引" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_09_01 msgid "Cash withdrawal" -msgstr "" +msgstr "現金払い出し" #. module: account_coda #: field:coda.bank.statement.line,partner_id:0 msgid "Partner" -msgstr "" +msgstr "パートナ" #. module: account_coda #: model:account.coda.trans.code,comment:account_coda.actcc_80_37 msgid "" "Fixed right, either one-off or periodical; for details, see \"categories\"" -msgstr "" +msgstr "右固定、1回限りまたは定期的の何れか;詳細については分類参照して下さい。" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_04_05 msgid "Loading Proton" -msgstr "" +msgstr "Protonの装填" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_80_21 msgid "Pay-packet charges" -msgstr "" +msgstr "給料袋手数料" #. module: account_coda #: field:coda.bank.account,transfer_account:0 msgid "Default Internal Transfer Account" -msgstr "" +msgstr "デフォルト内部転送口座" #. module: account_coda #: model:account.coda.trans.category,description:account_coda.actrca_074 msgid "Mailing costs" -msgstr "" +msgstr "郵送費" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_47_07 msgid "Unpaid foreign bill" -msgstr "" +msgstr "未払外国請求" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_04_07 msgid "Payment by GSM" -msgstr "" +msgstr "GSMによる支払" #. module: account_coda #: view:coda.bank.account:0 @@ -1429,61 +1446,61 @@ msgstr "" #: view:coda.bank.statement:0 #: selection:coda.bank.statement,type:0 msgid "Normal" -msgstr "" +msgstr "通常" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_05_50 msgid "Credit after collection" -msgstr "" +msgstr "集金後クレジット" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcf_80 msgid "Separately charged costs and provisions" -msgstr "" +msgstr "費用と手当てを別個に請求" #. module: account_coda #: view:coda.bank.account:0 #: field:coda.bank.account,currency:0 #: field:coda.bank.statement,currency:0 msgid "Currency" -msgstr "" +msgstr "通貨" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_07_06 msgid "Extension of maturity date" -msgstr "" +msgstr "満期日の延長" #. module: account_coda #: field:coda.bank.account,def_receivable:0 msgid "Default Receivable Account" -msgstr "" +msgstr "デフォルト売掛金勘定" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_80_15 msgid "Night safe" -msgstr "" +msgstr "夜間安全" #. module: account_coda #: view:coda.bank.statement.line:0 msgid "Total Amount" -msgstr "" +msgstr "合計金額" #. module: account_coda #: model:account.coda.trans.category,description:account_coda.actrca_214 msgid "Issue commission (delivery order)" -msgstr "" +msgstr "発行手数料(配信順)" #. module: account_coda #: model:account.coda.trans.code,comment:account_coda.actcc_13_07 msgid "" "Often by standing order or direct debit. In case of direct debit, family 13 " "is used." -msgstr "" +msgstr "多くの場合、自動振替や口座引落。口座引落の場合はファミリ13が使われます。" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_04_01 msgid "Loading a GSM card" -msgstr "" +msgstr "GSMカードの装填" #. module: account_coda #: model:account.coda.trans.category,description:account_coda.actrca_021 @@ -1493,23 +1510,23 @@ msgstr "" #. module: account_coda #: model:account.coda.trans.category,description:account_coda.actrca_026 msgid "Handling commission" -msgstr "" +msgstr "手数料の取り扱い" #. module: account_coda #: model:account.coda.trans.category,description:account_coda.actrca_201 msgid "Advice notice commission" -msgstr "" +msgstr "アドバイス通知手数料" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_07_64 #: model:account.coda.trans.code,description:account_coda.actcc_47_64 msgid "Warrant" -msgstr "" +msgstr "保証" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_07_07 msgid "Unpaid commercial paper" -msgstr "" +msgstr "未払コマーシャルペーパー" #. module: account_coda #: code:addons/account_coda/wizard/account_coda_import.py:120 @@ -1527,17 +1544,17 @@ msgstr "" #: code:addons/account_coda/wizard/account_coda_import.py:497 #, python-format msgid "Data Error!" -msgstr "" +msgstr "データエラー" #. module: account_coda #: model:account.coda.comm.type,description:account_coda.acct_010 msgid "Information pertaining to sale or purchase of securities" -msgstr "" +msgstr "有価証券の販売または購入に関しての情報" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_09_54 msgid "Your payment ATM" -msgstr "" +msgstr "支払ATM" #. module: account_coda #: model:account.coda.comm.type,description:account_coda.acct_123 @@ -1783,7 +1800,7 @@ msgstr "" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_80_25 msgid "Renting of direct debit box" -msgstr "" +msgstr "口座引落箱の賃借" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_11_52 @@ -2113,7 +2130,7 @@ msgstr "" #: model:account.coda.trans.code,description:account_coda.actcc_07_14 #: model:account.coda.trans.code,description:account_coda.actcc_47_14 msgid "Warrant fallen due" -msgstr "" +msgstr "満期保証" #. module: account_coda #: model:ir.actions.act_window,name:account_coda.action_imported_coda_files @@ -2177,7 +2194,7 @@ msgstr "" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_07_50 msgid "Remittance of commercial paper - credit after collection" -msgstr "" +msgstr "コマーシャルペーパーの送金 - 集金後クレジット" #. module: account_coda #: view:coda.bank.statement:0 @@ -2723,7 +2740,7 @@ msgstr "" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_04_51 msgid "Unloading Proton" -msgstr "" +msgstr "Protonの装填解除" #. module: account_coda #: model:account.coda.trans.category,description:account_coda.actrca_019 @@ -3024,7 +3041,7 @@ msgstr "" #. module: account_coda #: model:account.coda.comm.type,description:account_coda.acct_107 msgid "Direct debit – DOM’80" -msgstr "" +msgstr "口座引落 - DOM'80" #. module: account_coda #: model:account.coda.trans.code,description:account_coda.actcc_03_60 @@ -3193,7 +3210,7 @@ msgstr "" #. module: account_coda #: model:account.coda.trans.code,comment:account_coda.actcc_04_01 msgid "Debit customer who is loading" -msgstr "" +msgstr "装填しているデビット顧客" #. module: account_coda #: model:account.coda.trans.category,description:account_coda.actrca_047 diff --git a/addons/analytic/analytic.py b/addons/analytic/analytic.py index 6e800247cb5..248eee3d103 100644 --- a/addons/analytic/analytic.py +++ b/addons/analytic/analytic.py @@ -96,6 +96,8 @@ class account_analytic_account(osv.osv): return self._compute_level_tree(cr, uid, ids, child_ids, res, fields, context) def name_get(self, cr, uid, ids, context=None): + if isinstance(ids, (int, long)): + ids=[ids] if not ids: return [] res = [] @@ -132,7 +134,7 @@ class account_analytic_account(osv.osv): return accounts def _set_company_currency(self, cr, uid, ids, name, value, arg, context=None): - if type(ids) != type([]): + if isinstance(ids, (int, long)): ids=[ids] for account in self.browse(cr, uid, ids, context=context): if account.company_id: diff --git a/addons/crm_todo/i18n/sv.po b/addons/crm_todo/i18n/sv.po new file mode 100644 index 00000000000..c480dae76fb --- /dev/null +++ b/addons/crm_todo/i18n/sv.po @@ -0,0 +1,95 @@ +# Swedish 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-05-08 16:44+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-05-09 04:47+0000\n" +"X-Generator: Launchpad (build 15213)\n" + +#. module: crm_todo +#: model:ir.model,name:crm_todo.model_project_task +msgid "Task" +msgstr "Uppgift" + +#. module: crm_todo +#: view:crm.lead:0 +msgid "Timebox" +msgstr "Timebox" + +#. module: crm_todo +#: view:crm.lead:0 +msgid "For cancelling the task" +msgstr "För att avbryta uppgiften" + +#. module: crm_todo +#: constraint:project.task:0 +msgid "Error ! Task end-date must be greater then task start-date" +msgstr "Fel ! Uppgiftens slutdatum måste komma efter startdatumet" + +#. module: crm_todo +#: model:ir.model,name:crm_todo.model_crm_lead +msgid "crm.lead" +msgstr "" + +#. module: crm_todo +#: view:crm.lead:0 +msgid "Next" +msgstr "Nästa" + +#. module: crm_todo +#: model:ir.actions.act_window,name:crm_todo.crm_todo_action +#: model:ir.ui.menu,name:crm_todo.menu_crm_todo +msgid "My Tasks" +msgstr "Mina uppgifter" + +#. module: crm_todo +#: view:crm.lead:0 +#: field:crm.lead,task_ids:0 +msgid "Tasks" +msgstr "Uppgifter" + +#. module: crm_todo +#: view:crm.lead:0 +msgid "Done" +msgstr "Klar" + +#. module: crm_todo +#: constraint:project.task:0 +msgid "Error ! You cannot create recursive tasks." +msgstr "Fel ! Du kan inte skapa rekursiva uppgifter" + +#. module: crm_todo +#: view:crm.lead:0 +msgid "Cancel" +msgstr "Avbryt" + +#. module: crm_todo +#: view:crm.lead:0 +msgid "Extra Info" +msgstr "Tilläggsinformation" + +#. module: crm_todo +#: field:project.task,lead_id:0 +msgid "Lead / Opportunity" +msgstr "Kundämne / affärsmöjlighet" + +#. module: crm_todo +#: view:crm.lead:0 +msgid "For changing to done state" +msgstr "För att ändra till klarstatus" + +#. module: crm_todo +#: view:crm.lead:0 +msgid "Previous" +msgstr "Bakåt" diff --git a/addons/hr_attendance/i18n/fi.po b/addons/hr_attendance/i18n/fi.po index 81a081a06ca..586e02986e5 100644 --- a/addons/hr_attendance/i18n/fi.po +++ b/addons/hr_attendance/i18n/fi.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: 2010-09-09 07:20+0000\n" -"Last-Translator: OpenERP Administrators \n" +"PO-Revision-Date: 2012-05-08 09:39+0000\n" +"Last-Translator: Jenny Perttola \n" "Language-Team: Finnish \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:46+0000\n" -"X-Generator: Launchpad (build 14763)\n" +"X-Launchpad-Export-Date: 2012-05-09 04:47+0000\n" +"X-Generator: Launchpad (build 15213)\n" #. module: hr_attendance #: model:ir.ui.menu,name:hr_attendance.menu_hr_time_tracking @@ -43,7 +43,7 @@ msgid "" "You did not sign out the last time. Please enter the date and time you " "signed out." msgstr "" -"Et kirjautunut ulos viimekerralla. Anna päivä ja kellonaika kun kirjauduit " +"Et kirjautunut ulos viime kerralla. Anna päivä ja kellonaika kun kirjauduit " "ulos." #. module: hr_attendance @@ -65,7 +65,7 @@ msgstr "Tulosta läsnäoloraporttien virheet" #: code:addons/hr_attendance/wizard/hr_attendance_sign_in_out.py:161 #, python-format msgid "The sign-out date must be in the past" -msgstr "Uloskirjautumispäivän tulee olla menneisyydessä" +msgstr "Uloskirjautumispäivän tulee olla mennyt ajankohta." #. module: hr_attendance #: report:report.hr.timesheet.attendance.error:0 @@ -198,7 +198,7 @@ msgstr "HR läsnäolo haku" #. module: hr_attendance #: model:ir.actions.act_window,name:hr_attendance.action_hr_attendance_week msgid "Attendances By Week" -msgstr "" +msgstr "Läsnäolot viikoittain" #. module: hr_attendance #: constraint:hr.attendance:0 @@ -275,7 +275,7 @@ msgstr "" #. module: hr_attendance #: view:hr.attendance:0 msgid "My Attendance" -msgstr "" +msgstr "Omat läsnäoloni" #. module: hr_attendance #: help:hr.attendance,action_desc:0 @@ -314,7 +314,7 @@ msgstr "" #. module: hr_attendance #: view:hr.attendance.week:0 msgid "Print Attendance Report Weekly" -msgstr "" +msgstr "Tulosta läsnäoloraportti viikoittain" #. module: hr_attendance #: selection:hr.attendance.month,month:0 @@ -435,7 +435,7 @@ msgstr "" #. module: hr_attendance #: view:hr.attendance.month:0 msgid "Print Attendance Report Monthly" -msgstr "Tulosta kuukausittainen läsnäoloraportti" +msgstr "Tulosta läsnäoloraportti kuukausittain" #. module: hr_attendance #: selection:hr.action.reason,action_type:0 @@ -495,7 +495,7 @@ msgstr "Viimeisin kirjautuminen" #: selection:hr.attendance,action:0 #: view:hr.employee:0 msgid "Sign Out" -msgstr "Kirjaudu Ulos" +msgstr "Kirjaudu ulos" #. module: hr_attendance #: model:ir.actions.act_window,help:hr_attendance.action_hr_attendance_sigh_in_out @@ -524,7 +524,7 @@ msgstr "Helmikuu" #. module: hr_attendance #: view:hr.attendance:0 msgid "Employee attendances" -msgstr "Työntekijöiden paikallaolot" +msgstr "Työntekijöiden läsnäolot" #. module: hr_attendance #: field:hr.sign.in.out,state:0 diff --git a/addons/hr_timesheet_invoice/i18n/es_EC.po b/addons/hr_timesheet_invoice/i18n/es_EC.po new file mode 100644 index 00000000000..a25af4834fe --- /dev/null +++ b/addons/hr_timesheet_invoice/i18n/es_EC.po @@ -0,0 +1,1154 @@ +# Spanish (Ecuador) 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-05-08 22:01+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Spanish (Ecuador) \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-05-09 04:47+0000\n" +"X-Generator: Launchpad (build 15213)\n" + +#. module: hr_timesheet_invoice +#: view:report.timesheet.line:0 +#: view:report_timesheet.user:0 +msgid "Timesheet by user" +msgstr "Horario por usuario" + +#. module: hr_timesheet_invoice +#: view:report.timesheet.line:0 +msgid "Timesheet lines in this year" +msgstr "Líneas de horario para este año" + +#. module: hr_timesheet_invoice +#: view:hr_timesheet_invoice.factor:0 +msgid "Type of invoicing" +msgstr "Tipo de facturación" + +#. module: hr_timesheet_invoice +#: report:account.analytic.profit:0 +msgid "Profit" +msgstr "Beneficio" + +#. module: hr_timesheet_invoice +#: model:ir.model,name:hr_timesheet_invoice.model_hr_timesheet_invoice_create_final +msgid "Create invoice from timesheet final" +msgstr "Crear factura desde hoja de servicios final" + +#. module: hr_timesheet_invoice +#: view:hr.timesheet.invoice.create:0 +msgid "Force to use a specific product" +msgstr "Forzar para uso de un producto específico" + +#. module: hr_timesheet_invoice +#: view:report.timesheet.line:0 +msgid " 7 Days " +msgstr " 7 Días " + +#. module: hr_timesheet_invoice +#: report:account.analytic.profit:0 +msgid "Income" +msgstr "Ingreso" + +#. 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 "Reabrir proyecto" + +#. module: hr_timesheet_invoice +#: model:ir.model,name:hr_timesheet_invoice.model_report_timesheet_user +msgid "Timesheet per day" +msgstr "Hoja de servicios por día" + +#. 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 "Marzo" + +#. module: hr_timesheet_invoice +#: field:hr.timesheet.invoice.create.final,name:0 +msgid "Name of entry" +msgstr "Nombre de la entrada" + +#. 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 "" +"El producto a facturar se define en el formulario de empleado, el precio se " +"deducirá del producto mediante esta lista de precios." + +#. 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 "No se puede modificar una línea de factura analítica" + +#. module: hr_timesheet_invoice +#: model:ir.model,name:hr_timesheet_invoice.model_hr_timesheet_invoice_factor +msgid "Invoice Rate" +msgstr "Tasa de facturación" + +#. 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 "Este Año" + +#. module: hr_timesheet_invoice +#: help:hr.timesheet.invoice.create.final,time:0 +msgid "Display time in the history of works" +msgstr "Mostrar tiempo en el historial de trabajos" + +#. module: hr_timesheet_invoice +#: view:hr.timesheet.analytic.profit:0 +msgid "Journals" +msgstr "Diarios" + +#. module: hr_timesheet_invoice +#: view:report.timesheet.line:0 +#: field:report.timesheet.line,day:0 +msgid "Day" +msgstr "Día" + +#. module: hr_timesheet_invoice +#: field:report.account.analytic.line.to.invoice,product_uom_id:0 +msgid "UoM" +msgstr "UdM" + +#. module: hr_timesheet_invoice +#: view:report.timesheet.line:0 +msgid "Account" +msgstr "Cuenta" + +#. module: hr_timesheet_invoice +#: field:hr.timesheet.invoice.create,time:0 +#: field:hr.timesheet.invoice.create.final,time:0 +msgid "Time spent" +msgstr "Tiempo dedicado" + +#. module: hr_timesheet_invoice +#: field:account.analytic.account,amount_invoiced:0 +msgid "Invoiced Amount" +msgstr "Importe facturado" + +#. module: hr_timesheet_invoice +#: view:report.timesheet.line:0 +msgid "Uninvoiced line with billing rate" +msgstr "Línea no facturada con tasa de facturación" + +#. module: hr_timesheet_invoice +#: sql_constraint:account.invoice:0 +msgid "Invoice Number must be unique per Company!" +msgstr "¡El número de factura debe ser único por empresa!" + +#. module: hr_timesheet_invoice +#: field:report_timesheet.invoice,account_id:0 +msgid "Project" +msgstr "Proyecto" + +#. module: hr_timesheet_invoice +#: field:report.account.analytic.line.to.invoice,amount:0 +msgid "Amount" +msgstr "Monto" + +#. module: hr_timesheet_invoice +#: sql_constraint:account.move.line:0 +msgid "Wrong credit or debit value in accounting entry !" +msgstr "¡Valor crédito o débito erróneo en apunte contable!" + +#. 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 "El detalle de cada trabajo realizado se mostrará en la factura" + +#. module: hr_timesheet_invoice +#: code:addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py:209 +#, python-format +msgid "Warning !" +msgstr "Advertencia !" + +#. module: hr_timesheet_invoice +#: model:ir.model,name:hr_timesheet_invoice.model_hr_timesheet_invoice_create +msgid "Create invoice from timesheet" +msgstr "Crear factura desde hoja de servicios" + +#. module: hr_timesheet_invoice +#: report:account.analytic.profit:0 +msgid "Period to enddate" +msgstr "Periodo hasta fecha final" + +#. module: hr_timesheet_invoice +#: model:ir.model,name:hr_timesheet_invoice.model_report_analytic_account_close +msgid "Analytic account to close" +msgstr "Cuenta analítica a cerrar" + +#. 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 "Agrupar por..." + +#. module: hr_timesheet_invoice +#: constraint:account.invoice:0 +msgid "Invalid BBA Structured Communication !" +msgstr "¡Estructura de comunicación BBA no válida!" + +#. module: hr_timesheet_invoice +#: view:hr.timesheet.invoice.create:0 +msgid "Create Invoices" +msgstr "Crear Facturas" + +#. 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 "Hoja de servicios diaria por cuenta" + +#. module: hr_timesheet_invoice +#: code:addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py:64 +#, python-format +msgid "Analytic Account incomplete" +msgstr "Cuenta analítica incompleta" + +#. 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 "Cuenta Analítica" + +#. module: hr_timesheet_invoice +#: field:report.analytic.account.close,date_deadline:0 +msgid "Deadline" +msgstr "Fecha límite" + +#. module: hr_timesheet_invoice +#: model:ir.actions.act_window,name:hr_timesheet_invoice.act_my_account +msgid "Accounts to invoice" +msgstr "Cuentas a facturar" + +#. module: hr_timesheet_invoice +#: field:report.analytic.account.close,partner_id:0 +msgid "Partner" +msgstr "Cliente" + +#. module: hr_timesheet_invoice +#: constraint:account.analytic.account:0 +msgid "Error! You can not create recursive analytic accounts." +msgstr "¡Error! No puede crear cuentas analíticas recursivas." + +#. 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 "El tiempo de cada trabajo realizado se mostrará en la factura" + +#. module: hr_timesheet_invoice +#: model:ir.actions.act_window,name:hr_timesheet_invoice.act_account_analytic_account_2_report_timehsheet_account +msgid "Timesheets" +msgstr "Hojas de trabajo" + +#. module: hr_timesheet_invoice +#: model:ir.model,name:hr_timesheet_invoice.model_hr_timesheet_analytic_cost_ledger +msgid "hr.timesheet.analytic.cost.ledger" +msgstr "" + +#. module: hr_timesheet_invoice +#: field:hr.timesheet.analytic.profit,date_from:0 +msgid "From" +msgstr "Desde" + +#. 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 "Costos a facturar" + +#. module: hr_timesheet_invoice +#: view:report_timesheet.user:0 +msgid "Timesheet by user in this month" +msgstr "Hojas de trabajo por usuaro para este mes" + +#. 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 "Cuenta Analítica" + +#. module: hr_timesheet_invoice +#: field:report.analytic.account.close,state:0 +msgid "State" +msgstr "Estado" + +#. module: hr_timesheet_invoice +#: code:addons/hr_timesheet_invoice/wizard/hr_timesheet_analytic_profit.py:58 +#, python-format +msgid "Data Insufficient!" +msgstr "¡Datos insuficientes!" + +#. module: hr_timesheet_invoice +#: report:hr.timesheet.invoice.account.analytic.account.cost_ledger:0 +msgid "Debit" +msgstr "Débito" + +#. module: hr_timesheet_invoice +#: view:hr.timesheet.analytic.cost.ledger:0 +#: view:hr.timesheet.analytic.profit:0 +msgid "Print" +msgstr "Imprimir" + +#. module: hr_timesheet_invoice +#: help:account.analytic.line,to_invoice:0 +msgid "It allows to set the discount while making invoice" +msgstr "Permite establecer el descuento al facturar" + +#. 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 "" +"El coste de cada trabajo realizado se detallará en la factura. Probablemente " +"no desee activar esto" + +#. module: hr_timesheet_invoice +#: view:hr.timesheet.invoice.create.final:0 +msgid "Force to use a special product" +msgstr "Forzar el uso de un producto especial" + +#. 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 "Líneas a facturar" + +#. module: hr_timesheet_invoice +#: code:addons/hr_timesheet_invoice/hr_timesheet_invoice.py:128 +#, python-format +msgid "Error !" +msgstr "Error !" + +#. module: hr_timesheet_invoice +#: model:hr_timesheet_invoice.factor,name:hr_timesheet_invoice.timesheet_invoice_factor3 +msgid "Gratis" +msgstr "Gratis" + +#. module: hr_timesheet_invoice +#: view:account.analytic.line:0 +msgid "To Invoice" +msgstr "A facturar" + +#. 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 "" +"Rellene este campo si va a generar automáticamente las facturas basadas en " +"los costes de esta cuenta analítica: hojas de servicios, gastos, ... Se " +"puede configurar un porcentaje de facturación automática en las cuentas " +"analíticas." + +#. 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 "Beneficio hoja servicios" + +#. 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 "Mostrar detalle del trabajo en la línea de factura." + +#. 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 "Julio" + +#. module: hr_timesheet_invoice +#: report:hr.timesheet.invoice.account.analytic.account.cost_ledger:0 +msgid "Printing date" +msgstr "Fecha de impresión" + +#. 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 "Tipos de facturación" + +#. module: hr_timesheet_invoice +#: report:account.analytic.profit:0 +msgid "Theorical" +msgstr "Teórico" + +#. module: hr_timesheet_invoice +#: code:addons/hr_timesheet_invoice/wizard/hr_timesheet_invoice_create.py:132 +#, python-format +msgid "Configuration Error" +msgstr "Error de configuración" + +#. 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 "Líneas analíticas para informe facturación" + +#. module: hr_timesheet_invoice +#: field:account.analytic.account,to_invoice:0 +msgid "Invoice on Timesheet & Costs" +msgstr "Factura de hoja de Servicios & Costos" + +#. module: hr_timesheet_invoice +#: model:ir.actions.act_window,name:hr_timesheet_invoice.action_timesheet_user_stat_all +msgid "Timesheet by User" +msgstr "Hoja de servicios por usuario" + +#. module: hr_timesheet_invoice +#: model:ir.actions.act_window,name:hr_timesheet_invoice.action_timesheet_invoice_stat_all +msgid "Timesheet by Invoice" +msgstr "Hoja de servicios por factura" + +#. 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 "Descuento (%)" + +#. module: hr_timesheet_invoice +#: model:hr_timesheet_invoice.factor,name:hr_timesheet_invoice.timesheet_invoice_factor1 +msgid "Yes (100%)" +msgstr "Sí (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 "Facturas" + +#. 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 "Diciembre" + +#. module: hr_timesheet_invoice +#: view:hr.timesheet.invoice.create.final:0 +msgid "Invoice contract" +msgstr "Contrato de factura" + +#. 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 "" +"La cuenta selecionada de su diario obliga a tener una moneda secundaria. " +"Usted debería eliminar la moneda secundaria de la cuenta o asignar una vista " +"de multi-moneda al diario." + +#. 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 "Month" + +#. module: hr_timesheet_invoice +#: report:account.analytic.profit:0 +msgid "Currency" +msgstr "Moneda" + +#. module: hr_timesheet_invoice +#: model:ir.model,name:hr_timesheet_invoice.model_account_move_line +msgid "Journal Items" +msgstr "Asientos Contables" + +#. 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 "" +"Complete este campo sólo si quiere obligar a utilizar un producto " +"específico. Déjelo vacío para utilizar el producto real que viene del coste." + +#. module: hr_timesheet_invoice +#: view:hr.timesheet.analytic.profit:0 +msgid "Users" +msgstr "Usuarios" + +#. 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 "" + +#. 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 "" + +#. 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 "" + +#. module: hr_timesheet_invoice +#: model:hr_timesheet_invoice.factor,name:hr_timesheet_invoice.timesheet_invoice_factor2 +msgid "50%" +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 "June" +msgstr "" + +#. 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 "" + +#. 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 "" + +#. 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 "" + +#. 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 "" + +#. 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 "" + +#. 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 "" + +#. 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 "" + +#. 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 "" + +#. 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 "" diff --git a/addons/pad/pad.py b/addons/pad/pad.py index c58a4663a8e..70144aedd80 100644 --- a/addons/pad/pad.py +++ b/addons/pad/pad.py @@ -7,6 +7,23 @@ import string class pad_common(osv.osv_memory): _name = 'pad.common' + def pad_generate_url(self, cr, uid, model, context=None): + pad_url_template = self.pool.get('res.users').browse(cr,uid,[uid])[0].company_id.pad_url_template + s = string.ascii_uppercase + string.digits + salt = ''.join([s[random.randint(0, len(s) - 1)] for i in range(8)]) + template_vars = { + 'db' : cr.dbname, + 'model' : model, + 'salt' : salt, + } + return pad_url_template % template_vars + + def _pad_api_key(self, cr, uid, context=None): + return self.pool.get('res.users').browse(cr,uid,[uid])[0].company_id.etherpad_api_key + + def _pad_user_name(self, cr, uid, context=None): + return self.pool.get('res.users').browse(cr,uid,[uid])[0].name + def copy(self, cr, uid, id, default=None, context=None): if not default: default = {} @@ -31,6 +48,8 @@ class pad_common(osv.osv_memory): _columns = { 'pad_url': fields.char('Full Screen', size=512), + 'pad_api_key': fields.function(_pad_api_key, type='text', string="Pad API Key"), + 'pad_user_name': fields.function(_pad_user_name, type='text', string="Current Pad User"), } _defaults = { 'pad_url': lambda self, cr, uid, context: self.pool.get('ir.attachment').pad_generate_url(cr, uid, self._name) diff --git a/addons/pad/res_company.py b/addons/pad/res_company.py index 72ee8e09552..ca0cab825c0 100644 --- a/addons/pad/res_company.py +++ b/addons/pad/res_company.py @@ -1,15 +1,19 @@ # -*- coding: utf-8 -*- from osv import fields, osv -PAD_TEMPLATE = 'http://pad.tn/p/%(db)s-%(model)s-%(salt)s' +PAD_TEMPLATE = 'http://beta.etherpad.org/p/%(db).10s-%(model)s-%(salt)s' +PAD_API_KEY = 'EtherpadFTW' class company_pad(osv.osv): _inherit = 'res.company' _columns = { 'pad_url_template': fields.char('Pad URL Template', size=128, required=True, help="Template used to generate pad URL."), + 'etherpad_api_key': fields.char('Pad API Key', size=128), + } _defaults = { - 'pad_url_template': PAD_TEMPLATE + 'pad_url_template': PAD_TEMPLATE, + 'etherpad_api_key': PAD_API_KEY, } diff --git a/addons/pad/res_company.xml b/addons/pad/res_company.xml index 20b6f52d853..fd13349c166 100644 --- a/addons/pad/res_company.xml +++ b/addons/pad/res_company.xml @@ -9,6 +9,7 @@ + diff --git a/addons/pad/static/src/js/pad.js b/addons/pad/static/src/js/pad.js index 95be5b9aae7..524cd45e868 100644 --- a/addons/pad/static/src/js/pad.js +++ b/addons/pad/static/src/js/pad.js @@ -20,8 +20,9 @@ instance.web.form.FieldEtherpad = instance.web.form.AbstractField.extend(_.exten }, render_value: function() { var show_value = instance.web.format_value(this.get('value'), this, ''); + console.log(this); if (!this.get("effective_readonly")) { - this.$element.find('div').html(''); + this.$element.find('div').html(''); } else { if(this.get('value') != false) { diff --git a/addons/project/__openerp__.py b/addons/project/__openerp__.py index df2f83223ba..7e5024ef6bd 100644 --- a/addons/project/__openerp__.py +++ b/addons/project/__openerp__.py @@ -29,7 +29,7 @@ "sequence": 8, 'complexity': "easy", "images": ["images/gantt.png", "images/project_dashboard.jpeg","images/project_task_tree.jpeg","images/project_task.jpeg","images/project.jpeg","images/task_analysis.jpeg"], - "depends": ["base_setup", "product", "analytic", "board", "mail", "resource", "pad"], + "depends": ["base_setup", "product", "analytic", "board", "mail", "resource", "pad", "web_kanban"], "description": """ Project management module tracks multi-level projects, tasks, work done on tasks, eso. ====================================================================================== @@ -70,6 +70,8 @@ Dashboard for project members that includes: 'installable': True, 'auto_install': False, 'application': True, + 'css': ['static/src/css/project.css'], + 'js': ['static/src/js/dropdown.js','static/src/js/project.js'], 'certificate': '0075116868317', } # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/project/project.py b/addons/project/project.py index 47c4f45f70d..a8c6c6c6df3 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -155,6 +155,13 @@ class project(osv.osv): raise osv.except_osv(_('Operation Not Permitted !'), _('You cannot delete a project containing tasks. I suggest you to desactivate it.')) return super(project, self).unlink(cr, uid, ids, *args, **kwargs) + def _task_count(self, cr, uid, ids, field_name, arg, context=None): + res = dict.fromkeys(ids, 0) + task_ids = self.pool.get('project.task').search(cr, uid, [('project_id', 'in', ids)]) + for task in self.pool.get('project.task').browse(cr, uid, task_ids, context): + res[task.project_id.id] += 1 + return res + _columns = { 'complete_name': fields.function(_complete_name, string="Project Name", type='char', size=250), 'active': fields.boolean('Active', help="If the active field is set to False, it will allow you to hide the project without removing it."), @@ -191,7 +198,15 @@ class project(osv.osv): 'warn_header': fields.text('Mail Header', help="Header added at the beginning of the email for the warning message sent to the customer when a task is closed.", states={'close':[('readonly',True)], 'cancelled':[('readonly',True)]}), 'warn_footer': fields.text('Mail Footer', help="Footer added at the beginning of the email for the warning message sent to the customer when a task is closed.", states={'close':[('readonly',True)], 'cancelled':[('readonly',True)]}), 'type_ids': fields.many2many('project.task.type', 'project_task_type_rel', 'project_id', 'type_id', 'Tasks Stages', states={'close':[('readonly',True)], 'cancelled':[('readonly',True)]}), + 'use_tasks': fields.boolean('Use Tasks', help="Check this field if this project is aimed at managing tasks"), + 'task_count': fields.function(_task_count, type='integer', string="Open Tasks"), + 'color': fields.integer('Color Index'), + 'company_uom_id': fields.related('company_id', 'project_time_mode_id', type='many2one', relation='product.uom'), } + + def dummy(self, cr, uid, ids, context): + return True + def _get_type_common(self, cr, uid, context): ids = self.pool.get('project.task.type').search(cr, uid, [('project_default','=',1)], context=context) return ids @@ -201,7 +216,8 @@ class project(osv.osv): 'active': True, 'priority': 1, 'sequence': 10, - 'type_ids': _get_type_common + 'type_ids': _get_type_common, + 'use_tasks': True, } # TODO: Why not using a SQL contraints ? diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml index 59940b82afb..03a924ad1bd 100644 --- a/addons/project/project_view.xml +++ b/addons/project/project_view.xml @@ -43,12 +43,17 @@ + + + + - + + @@ -155,6 +160,94 @@ + + + + + + project.project.kanban + project.project + kanban + + + + + + + + + + + + + +
+
  • + B + +

    ...

    + +
    + +
  • +
    + +
    +
    +
    +
    +
    project.project.gantt @@ -171,8 +264,8 @@ project.project form [] - tree,form,gantt - + kanban,tree,form,gantt + {} A project contains a set of tasks or issues that will be performed by your resources assigned to it. A project can be hierarchically structured, as a child of a Parent Project. This allows you to design large project structures with different phases spread over the project duration cycle. Each user can set his default project in his own preferences to automatically filter the tasks or issues he usually works on. If you choose to invoice the time spent on a project task, you can find project tasks to be invoiced in the billing section. @@ -314,8 +407,7 @@ - - + project.task.kanban @@ -624,22 +716,13 @@ - + - + - - res.company.task.config res.company diff --git a/addons/project/static/src/css/project.css b/addons/project/static/src/css/project.css new file mode 100644 index 00000000000..93437c878ba --- /dev/null +++ b/addons/project/static/src/css/project.css @@ -0,0 +1,220 @@ +.project_fields { + margin-top: 1px; + margin-bottom: 1px; + font-size: 11px; + padding-left: 0px; + } +.project_fields td { + border: none; + padding: 2px 0 2px 8px; } +.project_fields th { + padding: 0; + border-right: 1px solid #dddddd; + vertical-align: top; + margin-right: 8px; } +.project_vignettes{ + padding: 4px !important } + .project_vignettes li { + float: left; + } + .project_vignettes .project_avatar { + width: 30px; + height: 30px; + padding-left: 0px; } + .project_vignettes .project_fields { + width: 100%; } + .project_vignettes .project_fields th { + width: 120px; + font-weight: normal; } + .project_vignettes .project_fields td { + color: #888888; } + .project_vignettes h4 a { + color: #4c4c4c; } + .project_vignettes > li h4 { + margin-bottom: 2px; + padding-left: 2px; } + +.oe_project_buttons { + padding: 2px 2px !important; + background: none !important; + background-color: transparent !important; + border: hidden !important; + color: #8A89BA !important; +} +.oe_project_buttons:hover { + cursor: pointer; + color: #0000FF; +} +.project_avatar { + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); + -box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); + } +.click_button { + background: none !important; + background-color: transparent !important; + border: hidden !important; + min-height: 155px; + min-width: 265px; + border: hidden; + /*margin-left: 6px !important;*/ + margin-top: 3px !important; + text-align: left; + vertical-align: super; + font-size: 11px; + -webkit-box-align: baseline; +} + + +.click_button:hover { + cursor: default !important; +} +.dropdown-menu { + display: none; + position: absolute; } +.dropdown { + position: relative; } +.dropdown-toggle:after { + width: 0; + height: 0; + display: inline-block; + content: "&darr"; + text-indent: -99999px; + vertical-align: top; + margin-top: 8px; + margin-left: 4px; + border-left: 4px solid transparent; + border-right: 4px solid transparent; + border-top: 4px solid white; + filter: alpha(opacity=50); + -khtml-opacity: 0.5; + -moz-opacity: 0.5; + opacity: 0.5; } + .oe_project_kanban_vignette .dropdown-menu .color-chooser { + padding: 0 3px; } + .oe_project_kanban_vignette .dropdown-menu .color-chooser li { + float: left; } + .oe_project_kanban_vignette .dropdown-menu .color-chooser li a { + padding: 2px; } +a.oe_project_kanban_action { + position: absolute; + right: 0; + display: none; + } + a.oe_project_kanban_action:hover { + text-decoration: none; } + a.oe_project_kanban_action .oe_i { + color: #4c4c4c; } + +.square { + display: inline-block; + width: 18px; + height: 18px; + border:1px solid grey; + } + +.oe_kanban_color_0 { + background: white; +} +.oe_kanban_color_1 { + background: #B1DCFE; +} +.oe_kanban_color_2 { + background: #FF8E8E; +} +.oe_kanban_color_3 { + background: khaki; +} +.oe_kanban_color_4 { + background: thistle; +} +.oe_kanban_color_5 { + background: orange; +} + +.open { + display: block; + } + .open .dropdown-menu { + display: block; } + +a.oe_project_kanban_action { + position: absolute; + right: 0; + } + a.oe_project_kanban_action:hover { + text-decoration: none; + } + a.oe_project_kanban_action .eo_i { + color: #4c4c4c; } + +.oe_project_kanban_vignette { + position: relative; + min-height: 50px; + /*background: white;*/ + border: 1px solid #d8d8d8; + border-bottom-color: #b9b9b9; + padding: 6px; + margin: 6px 0; + display: inline-block; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + +} + .oe_project_kanban_vignette:last-child { + margin-bottom: 0; } + .oe_project_kanban_vignette:hover { + -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.6); + -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.6); + -box-shadow: 0 0 3px rgba(0, 0, 0, 0.6); } + .oe_project_kanban_vignette h4 { + margin: 0 0 2px; } + +.oe_project_kanban_vignette .dropdown-menu { + top: 30px; + right: -140px; + padding: 4px; + border: 1px solid #afafb6; + width: 160px; + overflow-x: hidden; + z-index: 900; + background: white; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); + -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); + -box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); } + .oe_project_kanban_vignette .dropdown-menu p { + margin-left: 12px; } + .oe_project_kanban_vignette .dropdown-menu li { + float: none; + display: block; + background-color: none; } + .oe_project_kanban_vignette .dropdown-menu li a { + display: block; + padding: 3px 6px; + clear: both; + font-weight: normal; + line-height: 14px; + color: #4c4c4c; + text-decoration: none; } + .oe_project_kanban_vignette .dropdown-menu li a:hover { + background: #f0f0fa; + background: -moz-linear-gradient(#f0f0fa, #eeeef6); + background: -webkit-gradient(linear, left top, left bottom, from(#f0f0fa), to(#eeeef6)); + background: -webkit-linear-gradient(#f0f0fa, #eeeef6); + -moz-box-shadow: none; + -webkit-box-shadow: none; + -box-shadow: none; } + +.oe_project_kanban_vignette .dropdown-menu .color-chooser { + padding: 0 3px; } + .oe_project_kanban_vignette .dropdown-menu .color-chooser li { + float: left; } + .oe_project_kanban_vignette .dropdown-menu .color-chooser li a { + padding: 2px; } diff --git a/addons/project/static/src/img/tasks_icon.png b/addons/project/static/src/img/tasks_icon.png new file mode 100644 index 00000000000..5c5073b1633 Binary files /dev/null and b/addons/project/static/src/img/tasks_icon.png differ diff --git a/addons/project/static/src/js/dropdown.js b/addons/project/static/src/js/dropdown.js new file mode 100644 index 00000000000..54b61c5e9d0 --- /dev/null +++ b/addons/project/static/src/js/dropdown.js @@ -0,0 +1,92 @@ +/* ============================================================ + * bootstrap-dropdown.js v2.0.2 + * http://twitter.github.com/bootstrap/javascript.html#dropdowns + * ============================================================ + * Copyright 2012 Twitter, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================ */ + + +!function( $ ){ + + "use strict" + + /* DROPDOWN CLASS DEFINITION + * ========================= */ + + var toggle = '[data-toggle="dropdown"]' + , Dropdown = function ( element ) { + var $el = $(element).on('click.dropdown.data-api', this.toggle) + $('html').on('click.dropdown.data-api', function () { + $el.parent().removeClass('open') + }) + } + + Dropdown.prototype = { + + constructor: Dropdown + + , toggle: function ( e ) { + var $this = $(this) + , selector = $this.attr('data-target') + , $parent + , isActive + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 + } + + $parent = $(selector) + $parent.length || ($parent = $this.parent()) + + isActive = $parent.hasClass('open') + + clearMenus() + !isActive && $parent.toggleClass('open') + + return false + } + + } + + function clearMenus() { + $(toggle).parent().removeClass('open') + } + + + /* DROPDOWN PLUGIN DEFINITION + * ========================== */ + + $.fn.dropdown = function ( option ) { + return this.each(function () { + var $this = $(this) + , data = $this.data('dropdown') + if (!data) $this.data('dropdown', (data = new Dropdown(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + $.fn.dropdown.Constructor = Dropdown + + + /* APPLY TO STANDARD DROPDOWN ELEMENTS + * =================================== */ + + $(function () { + $('html').on('click.dropdown.data-api', clearMenus) + $('body').on('click.dropdown.data-api', toggle, Dropdown.prototype.toggle) + }) + +}( window.jQuery ); \ No newline at end of file diff --git a/addons/project/static/src/js/project.js b/addons/project/static/src/js/project.js new file mode 100644 index 00000000000..09a7c9eb256 --- /dev/null +++ b/addons/project/static/src/js/project.js @@ -0,0 +1,48 @@ +openerp.project = function(openerp) { + openerp.web_kanban.ProjectKanban = openerp.web_kanban.KanbanRecord.include({ + bind_events: function() { + var self = this; + self._super(); + if(this.view.dataset.model == 'project.project') { + + /*set avatar title for members. + In many2many fields, returns only list of ids. + we can implement return value of m2m fields like [(1,"Adminstration"),...]. + */ + _.each($(this.$element).find('.project_avatar'),function(avatar){ + var dataset = new openerp.web.DataSetSearch(this, 'res.users', self.session.context, [['id','=',avatar.id]]); + dataset.read_slice(['name']).then(function(result){ + avatar.setAttribute("title",result[0].name) + }); + }); + + // set sequence like Tasks,Issues,Timesheets and Phases + var my_list = $("#list a") + my_list.sort(function (a, b) { + var aValue = parseInt(a.id); + var bValue = parseInt(b.id); + return aValue == bValue ? 0 : aValue < bValue ? -1 : 1; + }); + $('#list').replaceWith(my_list); + + // when vignette is clicked, it opens the first action in sequence + if (my_list.length != 0) { + var click_button = $(this.$element).find('.click_button') + click_button.attr('data-name', my_list[0].getAttribute('data-name')); + click_button.attr('data-type', "action"); + } + + /* set background color. + we can do other way to implement new widget. + because we need to rpc call for that. + */ + this.$element.find('.bgcolor').click(function(){ + var color = parseInt($(this).find('span').attr('class').split(' ')[0].substring(16)) + var color_class = $(this).find('span').attr('class').split(' ')[0] + $(this).closest('#oe_project_kanban_vignette').removeClass().addClass(color_class + ' oe_project_kanban_vignette'); + self.view.dataset.write(parseInt(this.id), {color:color}); + }); + } + } + }); +} diff --git a/addons/project_issue/project_issue.py b/addons/project_issue/project_issue.py index e61af235d42..5a792ac4d28 100644 --- a/addons/project_issue/project_issue.py +++ b/addons/project_issue/project_issue.py @@ -222,6 +222,8 @@ class project_issue(crm.crm_case, osv.osv): }), } + def on_change_project(self, cr, uid, ids, project_id, context=None): + return {} _defaults = { 'active': 1, @@ -506,9 +508,23 @@ project_issue() class project(osv.osv): _inherit = "project.project" + + def _issue_count(self, cr, uid, ids, field_name, arg, context=None): + res = dict.fromkeys(ids, 0) + issue_ids = self.pool.get('project.issue').search(cr, uid, [('project_id', 'in', ids)]) + for issue in self.pool.get('project.issue').browse(cr, uid, issue_ids, context): + res[issue.project_id.id] += 1 + return res + _columns = { 'project_escalation_id' : fields.many2one('project.project','Project Escalation', help='If any issue is escalated from the current Project, it will be listed under the project selected here.', states={'close':[('readonly',True)], 'cancelled':[('readonly',True)]}), - 'reply_to' : fields.char('Reply-To Email Address', size=256) + 'reply_to' : fields.char('Reply-To Email Address', size=256), + 'use_issues' : fields.boolean('Use Issues', help="Check this field if this project manages issues"), + 'issue_count': fields.function(_issue_count, type='integer'), + } + + _defaults = { + 'use_issues': True, } def _check_escalation(self, cr, uid, ids, context=None): diff --git a/addons/project_issue/project_issue_menu.xml b/addons/project_issue/project_issue_menu.xml index dd61992a555..1c4cecfe439 100644 --- a/addons/project_issue/project_issue_menu.xml +++ b/addons/project_issue/project_issue_menu.xml @@ -45,15 +45,6 @@ - - diff --git a/addons/project_issue/project_issue_view.xml b/addons/project_issue/project_issue_view.xml index 7c22ad748c0..35a256be17e 100644 --- a/addons/project_issue/project_issue_view.xml +++ b/addons/project_issue/project_issue_view.xml @@ -334,6 +334,14 @@ + + # ------------------------------------------------------ # Project @@ -345,12 +353,32 @@ form + + + - + + + project.project.kanban.inherited + project.project + kanban + + + + + + + + + Issues() + + + diff --git a/addons/project_long_term/project_long_term.py b/addons/project_long_term/project_long_term.py index 612bd784bb0..925e4258ed9 100644 --- a/addons/project_long_term/project_long_term.py +++ b/addons/project_long_term/project_long_term.py @@ -215,9 +215,23 @@ project_user_allocation() class project(osv.osv): _inherit = "project.project" + + def _phase_count(self, cr, uid, ids, field_name, arg, context=None): + res = dict.fromkeys(ids, 0) + phase_ids = self.pool.get('project.phase').search(cr, uid, [('project_id', 'in', ids)]) + for phase in self.pool.get('project.phase').browse(cr, uid, phase_ids, context): + res[phase.project_id.id] += 1 + return res + _columns = { 'phase_ids': fields.one2many('project.phase', 'project_id', "Project Phases"), + 'use_phases': fields.boolean('Use Phases', help="Check this field if project manages phases"), + 'phase_count': fields.function(_phase_count, type='integer', string="Open Phases"), } + _defaults = { + 'use_phases': True, + } + def schedule_phases(self, cr, uid, ids, context=None): context = context or {} if type(ids) in (long, int,): diff --git a/addons/project_long_term/project_long_term_view.xml b/addons/project_long_term/project_long_term_view.xml index 7231395a2a9..b4042fc42e7 100644 --- a/addons/project_long_term/project_long_term_view.xml +++ b/addons/project_long_term/project_long_term_view.xml @@ -84,12 +84,12 @@ - + Planning of Users project.user.allocation form gantt,tree,form,calendar - {} + {} @@ -98,6 +98,44 @@ # Project Phase # ------------------------------------------------------ + + Inherit project form : Phase + project.project + form + + + + + + + + + + + + project.project.kanban.inherited + project.project + kanban + + + + + + + + Phases() + + + + project.phase.form project.phase @@ -278,7 +316,7 @@ - + @@ -327,16 +365,6 @@ view_mode="tree,form" /> - - # ------------------------------------------------------ # Menu Items # ------------------------------------------------------ diff --git a/addons/project_timesheet/project_timesheet.py b/addons/project_timesheet/project_timesheet.py index db7066505e1..585b3cd6ec8 100644 --- a/addons/project_timesheet/project_timesheet.py +++ b/addons/project_timesheet/project_timesheet.py @@ -29,6 +29,36 @@ from tools.translate import _ class project_project(osv.osv): _inherit = 'project.project' + def _to_invoice(self, cr, uid, ids, field_name, arg, context=None): + account_analytic_line = self.pool.get("account.analytic.line") + res = {} + for project in self.browse(cr,uid,ids,context=context): + line_ids = account_analytic_line.search(cr, uid, [('account_id', '=', project.analytic_account_id.id), ('to_invoice','=',1), ('invoice_id','=',False)]) + lines = account_analytic_line.browse(cr, uid, line_ids, context) + res[project.id] = { + 'amount_to_invoice': sum(line.amount for line in lines), + 'time_to_invoice': sum(line.unit_amount for line in lines), + } + return res + + def _timesheet_count(self, cr, uid, ids, field_name, arg, context=None): + account_analytic_line = self.pool.get('account.analytic.line') + res = {} + for project in self.browse(cr, uid, ids, context): + line_ids = account_analytic_line.search(cr, uid, [('account_id', '=', project.analytic_account_id.id)]) + res[project.id] = len(line_ids) + return res + + _columns = { + 'use_timesheets': fields.boolean('Timesheets', help="Check this field if this project manages timesheets"), + 'amount_to_invoice': fields.function(_to_invoice, string="Amount to Invoice", multi="sums"), + 'time_to_invoice': fields.function(_to_invoice, string="Time to Invoice", multi="sums"), + 'timesheet_count': fields.function(_timesheet_count, type='integer', string="Issue"), + } + _defaults = { + 'use_timesheets': True, + } + def onchange_partner_id(self, cr, uid, ids, part=False, context=None): res = super(project_project, self).onchange_partner_id(cr, uid, ids, part, context) if part and res and ('value' in res): @@ -39,6 +69,28 @@ class project_project(osv.osv): factor_id = data_obj.browse(cr, uid, data_id).res_id res['value'].update({'to_invoice': factor_id}) return res + + def open_timesheets(self, cr, uid, ids, context=None): + """ open Timesheets view """ + project = self.browse(cr, uid, ids[0], context) + try: + journal_id = self.pool.get('ir.model.data').get_object(cr, uid, 'hr_timesheet', 'analytic_journal').id + except ValueError: + journal_id = False + view_context = { + 'search_default_account_id': [project.analytic_account_id.id], + 'default_account_id': project.analytic_account_id.id, + 'default_journal_id': journal_id, + } + return { + 'type': 'ir.actions.act_window', + 'name': _('Bill Tasks Works'), + 'res_model': 'account.analytic.line', + 'view_type': 'form', + 'view_mode': 'tree,form', + 'context': view_context, + 'nodestroy': True, + } project_project() diff --git a/addons/project_timesheet/project_timesheet_view.xml b/addons/project_timesheet/project_timesheet_view.xml index 0c9d6c57f44..f0b2e2abc20 100644 --- a/addons/project_timesheet/project_timesheet_view.xml +++ b/addons/project_timesheet/project_timesheet_view.xml @@ -7,6 +7,11 @@ form + + + + + @@ -19,6 +24,41 @@ + + project.project.kanban.inherited + project.project + kanban + + + + + + + + + + Timesheets() + + + + + Amount to invoice + + + + + + Time to Invoice + + + + + + + + + Inherit project form : Customer project.project