diff --git a/addons/account/account_invoice.py b/addons/account/account_invoice.py index 700936695b8..d06ba70bf02 100644 --- a/addons/account/account_invoice.py +++ b/addons/account/account_invoice.py @@ -178,6 +178,7 @@ class account_invoice(osv.osv): return invoice_ids _name = "account.invoice" + _inherit = ['mail.thread'] _description = 'Invoice' _order = "id desc" @@ -355,12 +356,8 @@ class account_invoice(osv.osv): context = {} try: res = super(account_invoice, self).create(cr, uid, vals, context) - for inv_id, name in self.name_get(cr, uid, [res], context=context): - ctx = context.copy() - if vals.get('type', 'in_invoice') in ('out_invoice', 'out_refund'): - ctx = self.get_log_context(cr, uid, context=ctx) - message = _("Invoice '%s' is waiting for validation.") % name - self.log(cr, uid, inv_id, message, context=ctx) + if res: + self.create_send_note(cr, uid, [res], context=context) return res except Exception, e: if '"journal_id" viol' in e.args[0]: @@ -373,9 +370,7 @@ class account_invoice(osv.osv): if context is None: context = {} self.write(cr, uid, ids, {'state':'paid'}, context=context) - for inv_id, name in self.name_get(cr, uid, ids, context=context): - message = _("Invoice '%s' is paid.") % name - self.log(cr, uid, inv_id, message) + self.confirm_paid_send_note(cr, uid, ids, context=context) return True def unlink(self, cr, uid, ids, context=None): @@ -943,6 +938,11 @@ class account_invoice(osv.osv): move_obj.post(cr, uid, [move_id], context=ctx) self._log_event(cr, uid, ids) return True + + def invoice_validate(self, cr, uid, ids, context=None): + self.write(cr, uid, ids, {'state':'open'}, context=context) + self.invoice_validate_send_note(cr, uid, ids, context=context) + return True def line_get_convert(self, cr, uid, x, part, date, context=None): return { @@ -1033,6 +1033,7 @@ class account_invoice(osv.osv): # will be automatically deleted too account_move_obj.unlink(cr, uid, move_ids, context=context) self._log_event(cr, uid, ids, -1.0, 'Cancel Invoice') + self.invoice_cancel_send_note(cr, uid, ids, context=context) return True ################### @@ -1240,7 +1241,36 @@ class account_invoice(osv.osv): # Update the stored value (fields.function), so we write to trigger recompute self.pool.get('account.invoice').write(cr, uid, ids, {}, context=context) return True - + + # ----------------------------------------- + # OpenChatter notifications and need_action + # ----------------------------------------- + + def _get_document_type(self, type): + type_dict = { + 'out_invoice': 'Customer invoice', + 'in_invoice': 'Supplier invoice', + 'out_refund': 'Customer Refund', + 'in_refund': 'Supplier Refund', + } + return type_dict.get(type, 'Invoice') + + def create_send_note(self, cr, uid, ids, context=None): + for obj in self.browse(cr, uid, ids, context=context): + self.message_append_note(cr, uid, [obj.id],body=_("%s created.") % (self._get_document_type(obj.type)), context=context) + + def invoice_validate_send_note(self, cr, uid, ids, context=None): + for obj in self.browse(cr, uid, ids, context=context): + self.message_append_note(cr, uid, [obj.id], body=_("%s validated.") % (self._get_document_type(obj.type)), context=context) + + def confirm_paid_send_note(self, cr, uid, ids, context=None): + for obj in self.browse(cr, uid, ids, context=context): + self.message_append_note(cr, uid, [obj.id], body=_("%s paid.") % (self._get_document_type(obj.type)), context=context) + + def invoice_cancel_send_note(self, cr, uid, ids, context=None): + for obj in self.browse(cr, uid, ids, context=context): + self.message_append_note(cr, uid, [obj.id], body=_("%s cancelled.") % (self._get_document_type(obj.type)), context=context) + account_invoice() class account_invoice_line(osv.osv): diff --git a/addons/account/account_invoice_view.xml b/addons/account/account_invoice_view.xml index ef6c2510c54..ca8530fb082 100644 --- a/addons/account/account_invoice_view.xml +++ b/addons/account/account_invoice_view.xml @@ -243,6 +243,7 @@ + @@ -338,6 +339,7 @@ + diff --git a/addons/account/account_invoice_workflow.xml b/addons/account/account_invoice_workflow.xml index 2af1e192a9b..13db193af8d 100644 --- a/addons/account/account_invoice_workflow.xml +++ b/addons/account/account_invoice_workflow.xml @@ -27,7 +27,7 @@ action_date_assign() action_move_create() action_number() -write({'state':'open'}) +invoice_validate() function diff --git a/addons/account/i18n/hi.po b/addons/account/i18n/hi.po index d4672f43932..41be2943728 100644 --- a/addons/account/i18n/hi.po +++ b/addons/account/i18n/hi.po @@ -8,20 +8,20 @@ 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-12-21 08:18+0000\n" -"Last-Translator: Sanjay Kumar \n" +"PO-Revision-Date: 2012-04-03 07:14+0000\n" +"Last-Translator: Vibhav Pant \n" "Language-Team: Hindi \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:19+0000\n" -"X-Generator: Launchpad (build 14763)\n" +"X-Launchpad-Export-Date: 2012-04-04 04:41+0000\n" +"X-Generator: Launchpad (build 15055)\n" #. module: account #: view:account.invoice.report:0 #: view:analytic.entries.report:0 msgid "last month" -msgstr "" +msgstr "पहले का महिना" #. module: account #: model:process.transition,name:account.process_transition_supplierreconcilepaid0 @@ -165,18 +165,18 @@ msgstr "चेतावनी!" #: code:addons/account/account.py:3112 #, python-format msgid "Miscellaneous Journal" -msgstr "" +msgstr "विविध जर्नल" #. module: account #: field:account.fiscal.position.account,account_src_id:0 #: field:account.fiscal.position.account.template,account_src_id:0 msgid "Account Source" -msgstr "" +msgstr "खाता श्रोत" #. module: account #: model:ir.actions.act_window,name:account.act_acc_analytic_acc_5_report_hr_timesheet_invoice_journal msgid "All Analytic Entries" -msgstr "" +msgstr "सभी विश्लेषणात्मक प्रविष्टियाँ" #. module: account #: model:ir.actions.act_window,name:account.action_view_created_invoice_dashboard @@ -186,7 +186,7 @@ msgstr "" #. module: account #: field:accounting.report,label_filter:0 msgid "Column Label" -msgstr "" +msgstr "स्तंभ लेबल" #. module: account #: code:addons/account/wizard/account_move_journal.py:95 @@ -206,7 +206,7 @@ msgstr "" #: model:ir.actions.act_window,name:account.action_account_tax_template_form #: model:ir.ui.menu,name:account.menu_action_account_tax_template_form msgid "Tax Templates" -msgstr "" +msgstr "टैक्स टेम्पलेट्स" #. module: account #: model:ir.model,name:account.model_account_tax diff --git a/addons/account/res_config_view.xml b/addons/account/res_config_view.xml index 80517d44f88..742b842684a 100644 --- a/addons/account/res_config_view.xml +++ b/addons/account/res_config_view.xml @@ -110,6 +110,7 @@ ir.actions.act_window account.config.settings form + inline \n" "Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-02-09 07:10+0000\n" -"X-Generator: Launchpad (build 14763)\n" +"X-Launchpad-Export-Date: 2012-04-07 04:56+0000\n" +"X-Generator: Launchpad (build 15060)\n" "X-Poedit-Language: Czech\n" #. module: account_asset @@ -401,6 +401,8 @@ msgid "" "currency. You should remove the secondary currency on the account or select " "a multi-currency view on the journal." msgstr "" +"Vybraný účet vašeho záznamu deníku vynucuje použití druhotné měny. Měli " +"byste odstranit druhotnou měnu z účtu nebo vybrat více-měny." #. module: account_asset #: view:asset.asset.report:0 @@ -445,6 +447,8 @@ 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 "" +"Datum vašeho záznamu deníku není v určeném období! Měli byste změnit datum " +"nebo odstranit omezení z deníku." #. module: account_asset #: field:account.asset.asset,note:0 field:account.asset.category,note:0 @@ -507,7 +511,7 @@ msgstr "Zaúčtované řádky odpisů" #. module: account_asset #: constraint:account.move.line:0 msgid "Company must be the same for its related account and period." -msgstr "" +msgstr "Společnost musí být stejná pro své vztažené účty a období." #. module: account_asset #: field:account.asset.asset,child_ids:0 @@ -537,7 +541,7 @@ msgstr "Majetek zakoupený v tomto měsíci" #. module: account_asset #: constraint:account.move.line:0 msgid "You can not create journal items on an account of type view." -msgstr "" +msgstr "Nemůžete vytvořit položky deníku v účtu typu pohled." #. module: account_asset #: view:asset.asset.report:0 @@ -769,7 +773,7 @@ msgstr "Vytvořit pohyby majetku" #. module: account_asset #: constraint:account.move.line:0 msgid "You can not create journal items on closed account." -msgstr "" +msgstr "Nemůžete vytvořit položky deníku v uzavřeném účtu." #. module: account_asset #: model:ir.actions.act_window,help:account_asset.action_asset_asset_report diff --git a/addons/account_bank_statement_extensions/i18n/es_EC.po b/addons/account_bank_statement_extensions/i18n/es_EC.po new file mode 100644 index 00000000000..ff96580afa1 --- /dev/null +++ b/addons/account_bank_statement_extensions/i18n/es_EC.po @@ -0,0 +1,374 @@ +# 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:35+0000\n" +"PO-Revision-Date: 2012-04-03 19:17+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-04-04 04:41+0000\n" +"X-Generator: Launchpad (build 15055)\n" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +msgid "Search Bank Transactions" +msgstr "Buscar Transacciones Bancarias" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +#: selection:account.bank.statement.line,state:0 +msgid "Confirmed" +msgstr "Confirmado" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement:0 +#: view:account.bank.statement.line:0 +msgid "Glob. Id" +msgstr "" + +#. module: account_bank_statement_extensions +#: selection:account.bank.statement.line.global,type:0 +msgid "CODA" +msgstr "" + +#. module: account_bank_statement_extensions +#: field:account.bank.statement.line.global,parent_id:0 +msgid "Parent Code" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +msgid "Debit" +msgstr "Débito" + +#. module: account_bank_statement_extensions +#: view:cancel.statement.line:0 +#: model:ir.actions.act_window,name:account_bank_statement_extensions.action_cancel_statement_line +#: model:ir.model,name:account_bank_statement_extensions.model_cancel_statement_line +msgid "Cancel selected statement lines" +msgstr "" + +#. module: account_bank_statement_extensions +#: constraint:res.partner.bank:0 +msgid "The RIB and/or IBAN is not valid" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +msgid "Group By..." +msgstr "" + +#. module: account_bank_statement_extensions +#: field:account.bank.statement.line,state:0 +msgid "State" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +#: selection:account.bank.statement.line,state:0 +msgid "Draft" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +msgid "Statement" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:confirm.statement.line:0 +#: model:ir.actions.act_window,name:account_bank_statement_extensions.action_confirm_statement_line +#: model:ir.model,name:account_bank_statement_extensions.model_confirm_statement_line +msgid "Confirm selected statement lines" +msgstr "" + +#. module: account_bank_statement_extensions +#: report:bank.statement.balance.report:0 +#: model:ir.actions.report.xml,name:account_bank_statement_extensions.bank_statement_balance_report +msgid "Bank Statement Balances Report" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:cancel.statement.line:0 +msgid "Cancel Lines" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line.global:0 +#: model:ir.model,name:account_bank_statement_extensions.model_account_bank_statement_line_global +msgid "Batch Payment Info" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:confirm.statement.line:0 +msgid "Confirm Lines" +msgstr "" + +#. module: account_bank_statement_extensions +#: code:addons/account_bank_statement_extensions/account_bank_statement.py:130 +#, python-format +msgid "" +"Delete operation not allowed ! Please go to the associated bank " +"statement in order to delete and/or modify this bank statement line" +msgstr "" + +#. module: account_bank_statement_extensions +#: field:account.bank.statement.line.global,type:0 +msgid "Type" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +#: field:account.bank.statement.line,journal_id:0 +#: report:bank.statement.balance.report:0 +msgid "Journal" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +msgid "Confirmed Statement Lines." +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +msgid "Credit Transactions." +msgstr "" + +#. module: account_bank_statement_extensions +#: model:ir.actions.act_window,help:account_bank_statement_extensions.action_cancel_statement_line +msgid "cancel selected statement lines." +msgstr "" + +#. module: account_bank_statement_extensions +#: field:account.bank.statement.line,counterparty_number:0 +msgid "Counterparty Number" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line.global:0 +msgid "Transactions" +msgstr "" + +#. module: account_bank_statement_extensions +#: code:addons/account_bank_statement_extensions/account_bank_statement.py:130 +#, python-format +msgid "Warning" +msgstr "" + +#. module: account_bank_statement_extensions +#: report:bank.statement.balance.report:0 +msgid "Closing Balance" +msgstr "" + +#. module: account_bank_statement_extensions +#: report:bank.statement.balance.report:0 +msgid "Date" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +#: field:account.bank.statement.line,globalisation_amount:0 +msgid "Glob. Amount" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +msgid "Debit Transactions." +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +msgid "Extended Filters..." +msgstr "" + +#. module: account_bank_statement_extensions +#: view:confirm.statement.line:0 +msgid "Confirmed lines cannot be changed anymore." +msgstr "" + +#. module: account_bank_statement_extensions +#: constraint:res.partner.bank:0 +msgid "" +"\n" +"Please define BIC/Swift code on bank for bank type IBAN Account to make " +"valid payments" +msgstr "" + +#. module: account_bank_statement_extensions +#: field:account.bank.statement.line,val_date:0 +msgid "Valuta Date" +msgstr "" + +#. module: account_bank_statement_extensions +#: model:ir.actions.act_window,help:account_bank_statement_extensions.action_confirm_statement_line +msgid "Confirm selected statement lines." +msgstr "" + +#. module: account_bank_statement_extensions +#: view:cancel.statement.line:0 +msgid "Are you sure you want to cancel the selected Bank Statement lines ?" +msgstr "" + +#. module: account_bank_statement_extensions +#: report:bank.statement.balance.report:0 +msgid "Name" +msgstr "" + +#. module: account_bank_statement_extensions +#: selection:account.bank.statement.line.global,type:0 +msgid "ISO 20022" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +msgid "Notes" +msgstr "" + +#. module: account_bank_statement_extensions +#: selection:account.bank.statement.line.global,type:0 +msgid "Manual" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +msgid "Credit" +msgstr "" + +#. module: account_bank_statement_extensions +#: field:account.bank.statement.line.global,amount:0 +msgid "Amount" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +msgid "Fin.Account" +msgstr "" + +#. module: account_bank_statement_extensions +#: field:account.bank.statement.line,counterparty_currency:0 +msgid "Counterparty Currency" +msgstr "" + +#. module: account_bank_statement_extensions +#: field:account.bank.statement.line,counterparty_bic:0 +msgid "Counterparty BIC" +msgstr "" + +#. module: account_bank_statement_extensions +#: field:account.bank.statement.line.global,child_ids:0 +msgid "Child Codes" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:confirm.statement.line:0 +msgid "Are you sure you want to confirm the selected Bank Statement lines ?" +msgstr "" + +#. module: account_bank_statement_extensions +#: constraint:account.bank.statement.line:0 +msgid "" +"The amount of the voucher must be the same amount as the one on the " +"statement line" +msgstr "" + +#. module: account_bank_statement_extensions +#: help:account.bank.statement.line,globalisation_id:0 +msgid "" +"Code to identify transactions belonging to the same globalisation level " +"within a batch payment" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +msgid "Draft Statement Lines." +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +msgid "Glob. Am." +msgstr "" + +#. module: account_bank_statement_extensions +#: model:ir.model,name:account_bank_statement_extensions.model_account_bank_statement_line +msgid "Bank Statement Line" +msgstr "" + +#. module: account_bank_statement_extensions +#: field:account.bank.statement.line.global,code:0 +msgid "Code" +msgstr "" + +#. module: account_bank_statement_extensions +#: field:account.bank.statement.line,counterparty_name:0 +msgid "Counterparty Name" +msgstr "" + +#. module: account_bank_statement_extensions +#: field:account.bank.statement.line.global,name:0 +msgid "Communication" +msgstr "" + +#. module: account_bank_statement_extensions +#: model:ir.model,name:account_bank_statement_extensions.model_res_partner_bank +msgid "Bank Accounts" +msgstr "" + +#. module: account_bank_statement_extensions +#: constraint:account.bank.statement:0 +msgid "The journal and period chosen have to belong to the same company." +msgstr "" + +#. module: account_bank_statement_extensions +#: model:ir.model,name:account_bank_statement_extensions.model_account_bank_statement +msgid "Bank Statement" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +msgid "Statement Line" +msgstr "" + +#. module: account_bank_statement_extensions +#: sql_constraint:account.bank.statement.line.global:0 +msgid "The code must be unique !" +msgstr "" + +#. module: account_bank_statement_extensions +#: field:account.bank.statement.line.global,bank_statement_line_ids:0 +#: model:ir.actions.act_window,name:account_bank_statement_extensions.action_bank_statement_line +#: model:ir.ui.menu,name:account_bank_statement_extensions.bank_statement_line +msgid "Bank Statement Lines" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line.global:0 +msgid "Child Batch Payments" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:cancel.statement.line:0 +#: view:confirm.statement.line:0 +msgid "Cancel" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +msgid "Statement Lines" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +msgid "Total Amount" +msgstr "" + +#. module: account_bank_statement_extensions +#: field:account.bank.statement.line,globalisation_id:0 +msgid "Globalisation ID" +msgstr "" diff --git a/addons/account_cancel/i18n/cs.po b/addons/account_cancel/i18n/cs.po new file mode 100644 index 00000000000..0b6a396e044 --- /dev/null +++ b/addons/account_cancel/i18n/cs.po @@ -0,0 +1,23 @@ +# Czech translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 00:35+0000\n" +"PO-Revision-Date: 2012-04-06 04:54+0000\n" +"Last-Translator: Jiří Hajda \n" +"Language-Team: Czech \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n" +"X-Generator: Launchpad (build 15060)\n" + +#. module: account_cancel +#: view:account.invoice:0 +msgid "Cancel" +msgstr "Zrušit" diff --git a/addons/account_check_writing/i18n/ar.po b/addons/account_check_writing/i18n/ar.po new file mode 100644 index 00000000000..9c35de222f4 --- /dev/null +++ b/addons/account_check_writing/i18n/ar.po @@ -0,0 +1,199 @@ +# Arabic translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 00:35+0000\n" +"PO-Revision-Date: 2012-04-06 00:34+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Arabic \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-04-07 04:56+0000\n" +"X-Generator: Launchpad (build 15060)\n" + +#. module: account_check_writing +#: selection:res.company,check_layout:0 +msgid "Check on Top" +msgstr "" + +#. module: account_check_writing +#: model:ir.actions.act_window,help:account_check_writing.action_write_check +msgid "" +"The check payment form allows you to track the payment you do to your " +"suppliers specially by check. When you select a supplier, the payment method " +"and an amount for the payment, OpenERP will propose to reconcile your " +"payment with the open supplier invoices or bills.You can print the check" +msgstr "" + +#. module: account_check_writing +#: view:account.voucher:0 +#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_bottom +#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_middle +#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_top +msgid "Print Check" +msgstr "" + +#. module: account_check_writing +#: selection:res.company,check_layout:0 +msgid "Check in middle" +msgstr "" + +#. module: account_check_writing +#: help:res.company,check_layout:0 +msgid "" +"Check on top is compatible with Quicken, QuickBooks and Microsoft Money. " +"Check in middle is compatible with Peachtree, ACCPAC and DacEasy. Check on " +"bottom is compatible with Peachtree, ACCPAC and DacEasy only" +msgstr "" + +#. module: account_check_writing +#: selection:res.company,check_layout:0 +msgid "Check on bottom" +msgstr "" + +#. module: account_check_writing +#: constraint:res.company:0 +msgid "Error! You can not create recursive companies." +msgstr "خطأ! لا يمكنك إنشاء شركات متداخلة (شركات تستخدم نفسها)." + +#. module: account_check_writing +#: help:account.journal,allow_check_writing:0 +msgid "Check this if the journal is to be used for writing checks." +msgstr "" + +#. module: account_check_writing +#: field:account.journal,allow_check_writing:0 +msgid "Allow Check writing" +msgstr "" + +#. module: account_check_writing +#: report:account.print.check.bottom:0 +#: report:account.print.check.middle:0 +#: report:account.print.check.top:0 +msgid "Description" +msgstr "الوصف" + +#. module: account_check_writing +#: model:ir.model,name:account_check_writing.model_account_journal +msgid "Journal" +msgstr "اليومية" + +#. module: account_check_writing +#: model:ir.actions.act_window,name:account_check_writing.action_write_check +#: model:ir.ui.menu,name:account_check_writing.menu_action_write_check +msgid "Write Checks" +msgstr "كتابة شيك" + +#. module: account_check_writing +#: report:account.print.check.bottom:0 +#: report:account.print.check.middle:0 +#: report:account.print.check.top:0 +msgid "Discount" +msgstr "الخصم" + +#. module: account_check_writing +#: report:account.print.check.bottom:0 +#: report:account.print.check.middle:0 +#: report:account.print.check.top:0 +msgid "Original Amount" +msgstr "المبلغ الأصلي" + +#. module: account_check_writing +#: view:res.company:0 +msgid "Configuration" +msgstr "إعدادات" + +#. module: account_check_writing +#: field:account.voucher,allow_check:0 +msgid "Allow Check Writing" +msgstr "سماح بكتابة شيك" + +#. module: account_check_writing +#: report:account.print.check.bottom:0 +#: report:account.print.check.middle:0 +#: report:account.print.check.top:0 +msgid "Payment" +msgstr "الدفع" + +#. module: account_check_writing +#: field:account.journal,use_preprint_check:0 +msgid "Use Preprinted Check" +msgstr "" + +#. module: account_check_writing +#: sql_constraint:res.company:0 +msgid "The company name must be unique !" +msgstr "اسم الشركة يجب أن يكون فريداً !" + +#. module: account_check_writing +#: report:account.print.check.bottom:0 +#: report:account.print.check.middle:0 +#: report:account.print.check.top:0 +msgid "Due Date" +msgstr "تاريخ الإستحقاق" + +#. module: account_check_writing +#: model:ir.model,name:account_check_writing.model_res_company +msgid "Companies" +msgstr "الشركات" + +#. module: account_check_writing +#: view:res.company:0 +msgid "Default Check layout" +msgstr "" + +#. module: account_check_writing +#: constraint:account.journal:0 +msgid "" +"Configuration error! The currency chosen should be shared by the default " +"accounts too." +msgstr "" + +#. module: account_check_writing +#: report:account.print.check.bottom:0 +#: report:account.print.check.middle:0 +msgid "Balance Due" +msgstr "" + +#. module: account_check_writing +#: report:account.print.check.bottom:0 +#: report:account.print.check.middle:0 +#: report:account.print.check.top:0 +msgid "Check Amount" +msgstr "" + +#. module: account_check_writing +#: model:ir.model,name:account_check_writing.model_account_voucher +msgid "Accounting Voucher" +msgstr "القسيمة المحاسبية" + +#. module: account_check_writing +#: sql_constraint:account.journal:0 +msgid "The name of the journal must be unique per company !" +msgstr "يجب ان يكون الاسم لليومية فريد لكل شركة!" + +#. module: account_check_writing +#: sql_constraint:account.journal:0 +msgid "The code of the journal must be unique per company !" +msgstr "يجب ان يكون الكود لليومية فريد لكل شركة !" + +#. module: account_check_writing +#: field:account.voucher,amount_in_word:0 +msgid "Amount in Word" +msgstr "" + +#. module: account_check_writing +#: report:account.print.check.top:0 +msgid "Open Balance" +msgstr "فتح رصيد" + +#. module: account_check_writing +#: field:res.company,check_layout:0 +msgid "Choose Check layout" +msgstr "" diff --git a/addons/account_voucher/account_voucher.py b/addons/account_voucher/account_voucher.py index 54226166508..fbbf66c0360 100644 --- a/addons/account_voucher/account_voucher.py +++ b/addons/account_voucher/account_voucher.py @@ -202,12 +202,19 @@ class account_voucher(osv.osv): line_dr_ids = resolve_o2m_operations(cr, uid, line_osv, line_dr_ids, ['amount'], context) line_cr_ids = resolve_o2m_operations(cr, uid, line_osv, line_cr_ids, ['amount'], context) - #loop into the lines to see if there is an amount allocated on a voucher line with a currency different than the voucher currency + #compute the field is_multi_currency that is used to hide/display options linked to secondary currency on the voucher is_multi_currency = False - for voucher_line in line_dr_ids+line_cr_ids: - if voucher_line.get('currency_id',False) != voucher_currency: - is_multi_currency = True - break + if voucher_currency: + # if the voucher currency is not False, it means it is different than the company currency and we need to display the options + is_multi_currency = True + else: + #loop on the voucher lines to see if one of these has a secondary currency. If yes, we need to define the options + for voucher_line in line_dr_ids+line_cr_ids: + company_currency = False + company_currency = voucher_line.get('move_line_id', False) and self.pool.get('account.move.line').browse(cr, uid, voucher_line.get('move_line_id'), context=context).company_id.currency_id.id + if voucher_line.get('currency_id', company_currency) != company_currency: + is_multi_currency = True + break return {'value': {'writeoff_amount': self._compute_writeoff_amount(cr, uid, line_dr_ids, line_cr_ids, amount), 'is_multi_currency': is_multi_currency}} def _get_writeoff_amount(self, cr, uid, ids, name, args, context=None): diff --git a/addons/account_voucher/voucher_payment_receipt_view.xml b/addons/account_voucher/voucher_payment_receipt_view.xml index 241bd23d5bb..0ef84e104aa 100644 --- a/addons/account_voucher/voucher_payment_receipt_view.xml +++ b/addons/account_voucher/voucher_payment_receipt_view.xml @@ -356,7 +356,7 @@ - + diff --git a/addons/analytic_user_function/i18n/ja.po b/addons/analytic_user_function/i18n/ja.po new file mode 100644 index 00000000000..e63fedd273f --- /dev/null +++ b/addons/analytic_user_function/i18n/ja.po @@ -0,0 +1,79 @@ +# Japanese translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 00:35+0000\n" +"PO-Revision-Date: 2012-04-08 05:16+0000\n" +"Last-Translator: Masaki Yamaya \n" +"Language-Team: Japanese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-04-09 04:56+0000\n" +"X-Generator: Launchpad (build 15060)\n" + +#. module: analytic_user_function +#: field:analytic.user.funct.grid,product_id:0 +msgid "Product" +msgstr "商品" + +#. module: analytic_user_function +#: model:ir.model,name:analytic_user_function.model_analytic_user_funct_grid +msgid "Relation table between users and products on a analytic account" +msgstr "分析アカウントのユーザと商品の関係テーブル" + +#. module: analytic_user_function +#: constraint:hr.analytic.timesheet:0 +msgid "You cannot modify an entry in a Confirmed/Done timesheet !." +msgstr "確認済みのタイムシートの項目を変更することはできません。" + +#. module: analytic_user_function +#: field:analytic.user.funct.grid,account_id:0 +#: model:ir.model,name:analytic_user_function.model_account_analytic_account +msgid "Analytic Account" +msgstr "分析アカウント" + +#. module: analytic_user_function +#: view:account.analytic.account:0 +#: field:account.analytic.account,user_product_ids:0 +msgid "Users/Products Rel." +msgstr "ユーザ・商品の関係" + +#. module: analytic_user_function +#: field:analytic.user.funct.grid,user_id:0 +msgid "User" +msgstr "ユーザ" + +#. module: analytic_user_function +#: code:addons/analytic_user_function/analytic_user_function.py:96 +#: code:addons/analytic_user_function/analytic_user_function.py:131 +#, python-format +msgid "There is no expense account define for this product: \"%s\" (id:%d)" +msgstr "商品 \"%s\" (id:%d) のアカウントが定義されていません。" + +#. module: analytic_user_function +#: code:addons/analytic_user_function/analytic_user_function.py:95 +#: code:addons/analytic_user_function/analytic_user_function.py:130 +#, python-format +msgid "Error !" +msgstr "エラー" + +#. module: analytic_user_function +#: constraint:account.analytic.account:0 +msgid "Error! You can not create recursive analytic accounts." +msgstr "エラー。反復した分析アカウントを作ることはできません" + +#. module: analytic_user_function +#: model:ir.model,name:analytic_user_function.model_hr_analytic_timesheet +msgid "Timesheet Line" +msgstr "タイムシートの行" + +#. module: analytic_user_function +#: view:analytic.user.funct.grid:0 +msgid "User's Product for this Analytic Account" +msgstr "この分析アカウントのユーザの商品" diff --git a/addons/association/i18n/ja.po b/addons/association/i18n/ja.po new file mode 100644 index 00000000000..02e034238c6 --- /dev/null +++ b/addons/association/i18n/ja.po @@ -0,0 +1,135 @@ +# Japanese translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2011-01-11 11:14+0000\n" +"PO-Revision-Date: 2012-04-08 06:15+0000\n" +"Last-Translator: Masaki Yamaya \n" +"Language-Team: Japanese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-04-09 04:56+0000\n" +"X-Generator: Launchpad (build 15060)\n" + +#. module: association +#: field:profile.association.config.install_modules_wizard,wiki:0 +msgid "Wiki" +msgstr "" + +#. module: association +#: view:profile.association.config.install_modules_wizard:0 +msgid "Event Management" +msgstr "イベント管理" + +#. module: association +#: field:profile.association.config.install_modules_wizard,project_gtd:0 +msgid "Getting Things Done" +msgstr "物事を完了" + +#. module: association +#: model:ir.module.module,description:association.module_meta_information +msgid "This module is to create Profile for Associates" +msgstr "" + +#. module: association +#: field:profile.association.config.install_modules_wizard,progress:0 +msgid "Configuration Progress" +msgstr "設定を進行中" + +#. module: association +#: view:profile.association.config.install_modules_wizard:0 +msgid "" +"Here are specific applications related to the Association Profile you " +"selected." +msgstr "" + +#. module: association +#: view:profile.association.config.install_modules_wizard:0 +msgid "title" +msgstr "タイトル" + +#. module: association +#: help:profile.association.config.install_modules_wizard,event_project:0 +msgid "Helps you to manage and organize your events." +msgstr "" + +#. module: association +#: field:profile.association.config.install_modules_wizard,config_logo:0 +msgid "Image" +msgstr "画像" + +#. module: association +#: help:profile.association.config.install_modules_wizard,hr_expense:0 +msgid "" +"Tracks and manages employee expenses, and can automatically re-invoice " +"clients if the expenses are project-related." +msgstr "" + +#. module: association +#: help:profile.association.config.install_modules_wizard,project_gtd:0 +msgid "" +"GTD is a methodology to efficiently organise yourself and your tasks. This " +"module fully integrates GTD principle with OpenERP's project management." +msgstr "" + +#. module: association +#: view:profile.association.config.install_modules_wizard:0 +msgid "Resources Management" +msgstr "" + +#. module: association +#: model:ir.module.module,shortdesc:association.module_meta_information +msgid "Association profile" +msgstr "" + +#. module: association +#: field:profile.association.config.install_modules_wizard,hr_expense:0 +msgid "Expenses Tracking" +msgstr "" + +#. module: association +#: model:ir.actions.act_window,name:association.action_config_install_module +#: view:profile.association.config.install_modules_wizard:0 +msgid "Association Application Configuration" +msgstr "" + +#. module: association +#: help:profile.association.config.install_modules_wizard,wiki:0 +msgid "" +"Lets you create wiki pages and page groups in order to keep track of " +"business knowledge and share it with and between your employees." +msgstr "" + +#. module: association +#: help:profile.association.config.install_modules_wizard,project:0 +msgid "" +"Helps you manage your projects and tasks by tracking them, generating " +"plannings, etc..." +msgstr "" + +#. module: association +#: model:ir.model,name:association.model_profile_association_config_install_modules_wizard +msgid "profile.association.config.install_modules_wizard" +msgstr "" + +#. module: association +#: field:profile.association.config.install_modules_wizard,event_project:0 +msgid "Events" +msgstr "" + +#. module: association +#: view:profile.association.config.install_modules_wizard:0 +#: field:profile.association.config.install_modules_wizard,project:0 +msgid "Project Management" +msgstr "" + +#. module: association +#: view:profile.association.config.install_modules_wizard:0 +msgid "Configure" +msgstr "" diff --git a/addons/auth_openid/i18n/ar.po b/addons/auth_openid/i18n/ar.po new file mode 100644 index 00000000000..a36f5ea011d --- /dev/null +++ b/addons/auth_openid/i18n/ar.po @@ -0,0 +1,113 @@ +# Arabic translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 01:37+0100\n" +"PO-Revision-Date: 2012-04-06 00:53+0000\n" +"Last-Translator: FULL NAME \n" +"Language-Team: Arabic \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-04-07 04:56+0000\n" +"X-Generator: Launchpad (build 15060)\n" + +#. #-#-#-#-# auth_openid.pot (OpenERP Server 6.1rc1) #-#-#-#-# +#. module: auth_openid +#. #-#-#-#-# auth_openid.pot.web (PROJECT VERSION) #-#-#-#-# +#. openerp-web +#: view:res.users:0 +#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:12 +msgid "OpenID" +msgstr "معرف OpenID" + +#. #-#-#-#-# auth_openid.pot (OpenERP Server 6.1rc1) #-#-#-#-# +#. module: auth_openid +#. #-#-#-#-# auth_openid.pot.web (PROJECT VERSION) #-#-#-#-# +#. openerp-web +#: field:res.users,openid_url:0 +#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:47 +msgid "OpenID URL" +msgstr "رابط OpenID" + +#. module: auth_openid +#: help:res.users,openid_email:0 +msgid "Used for disambiguation in case of a shared OpenID URL" +msgstr "تستخدم للتفرقة في حالة إستخدام معرف OpenID مشترك" + +#. module: auth_openid +#: sql_constraint:res.users:0 +msgid "You can not have two users with the same login !" +msgstr "لا يمكن ان يكون هناك مستخدمان بنفس اسم الدخول!" + +#. module: auth_openid +#: field:res.users,openid_email:0 +msgid "OpenID Email" +msgstr "بريد OpenID" + +#. module: auth_openid +#: constraint:res.users:0 +msgid "The chosen company is not in the allowed companies for this user" +msgstr "" +"الشركة المختارة غير مدرجة ضمن قائمة الشركات المسموح بها لهذا المستخدم" + +#. module: auth_openid +#: field:res.users,openid_key:0 +msgid "OpenID Key" +msgstr "مفتاح OpenID" + +#. module: auth_openid +#: model:ir.model,name:auth_openid.model_res_users +msgid "res.users" +msgstr "res.users" + +#. openerp-web +#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:8 +msgid "Password" +msgstr "كلمة المرور" + +#. openerp-web +#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:9 +#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:10 +msgid "Google" +msgstr "جوجل" + +#. openerp-web +#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:10 +msgid "Google Apps" +msgstr "برامج جوجل" + +#. openerp-web +#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:11 +msgid "Launchpad" +msgstr "لانشباد (Launchpad)" + +#. openerp-web +#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:20 +msgid "Google Apps Domain:" +msgstr "نطاق برامج جوجل:" + +#. openerp-web +#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:24 +msgid "Username:" +msgstr "اسم المستخدم:" + +#. openerp-web +#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:28 +msgid "OpenID URL:" +msgstr "رابط OpenID:" + +#. openerp-web +#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:35 +msgid "Google Apps Domain" +msgstr "نطاق برامج جوجل" + +#. openerp-web +#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:41 +msgid "Username" +msgstr "اسم المستخدم" diff --git a/addons/auth_openid/i18n/sr@latin.po b/addons/auth_openid/i18n/sr@latin.po new file mode 100644 index 00000000000..e1b4ca7b911 --- /dev/null +++ b/addons/auth_openid/i18n/sr@latin.po @@ -0,0 +1,112 @@ +# Serbian Latin translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 01:37+0100\n" +"PO-Revision-Date: 2012-04-05 15:20+0000\n" +"Last-Translator: Milan Milosevic \n" +"Language-Team: Serbian Latin \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-04-06 04:37+0000\n" +"X-Generator: Launchpad (build 15060)\n" + +#. #-#-#-#-# auth_openid.pot (OpenERP Server 6.1rc1) #-#-#-#-# +#. module: auth_openid +#. #-#-#-#-# auth_openid.pot.web (PROJECT VERSION) #-#-#-#-# +#. openerp-web +#: view:res.users:0 +#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:12 +msgid "OpenID" +msgstr "OpenID" + +#. #-#-#-#-# auth_openid.pot (OpenERP Server 6.1rc1) #-#-#-#-# +#. module: auth_openid +#. #-#-#-#-# auth_openid.pot.web (PROJECT VERSION) #-#-#-#-# +#. openerp-web +#: field:res.users,openid_url:0 +#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:47 +msgid "OpenID URL" +msgstr "OpenID URL" + +#. module: auth_openid +#: help:res.users,openid_email:0 +msgid "Used for disambiguation in case of a shared OpenID URL" +msgstr "Koristi se za razlikovanje u slučaju deljenog OpenID URL-a" + +#. module: auth_openid +#: sql_constraint:res.users:0 +msgid "You can not have two users with the same login !" +msgstr "Ne možete imati dva korisnika sa istom prijavom!" + +#. module: auth_openid +#: field:res.users,openid_email:0 +msgid "OpenID Email" +msgstr "OpenID Email" + +#. module: auth_openid +#: constraint:res.users:0 +msgid "The chosen company is not in the allowed companies for this user" +msgstr "Odabrano preduzeće nije u dozvoljenim preduzećima za ovog korisnioka" + +#. module: auth_openid +#: field:res.users,openid_key:0 +msgid "OpenID Key" +msgstr "OpenID Ključ" + +#. module: auth_openid +#: model:ir.model,name:auth_openid.model_res_users +msgid "res.users" +msgstr "res.users" + +#. openerp-web +#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:8 +msgid "Password" +msgstr "Lozinka" + +#. openerp-web +#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:9 +#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:10 +msgid "Google" +msgstr "Google" + +#. openerp-web +#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:10 +msgid "Google Apps" +msgstr "Google-ove aplikacije" + +#. openerp-web +#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:11 +msgid "Launchpad" +msgstr "Launchpad" + +#. openerp-web +#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:20 +msgid "Google Apps Domain:" +msgstr "Domen Google-ovih aplikacija" + +#. openerp-web +#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:24 +msgid "Username:" +msgstr "Korisničko ime:" + +#. openerp-web +#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:28 +msgid "OpenID URL:" +msgstr "OpenID URL" + +#. openerp-web +#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:35 +msgid "Google Apps Domain" +msgstr "Domen Google-ovih aplikacija" + +#. openerp-web +#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:41 +msgid "Username" +msgstr "Korisničko ime" diff --git a/addons/base_crypt/i18n/cs.po b/addons/base_crypt/i18n/cs.po new file mode 100644 index 00000000000..38b1cfda3a5 --- /dev/null +++ b/addons/base_crypt/i18n/cs.po @@ -0,0 +1,46 @@ +# Czech translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 00:36+0000\n" +"PO-Revision-Date: 2012-04-06 05:20+0000\n" +"Last-Translator: Jiří Hajda \n" +"Language-Team: Czech \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n" +"X-Generator: Launchpad (build 15060)\n" + +#. module: base_crypt +#: model:ir.model,name:base_crypt.model_res_users +msgid "res.users" +msgstr "res.users" + +#. module: base_crypt +#: sql_constraint:res.users:0 +msgid "You can not have two users with the same login !" +msgstr "Nemůžete mít dva uživatele se stejným přihlašovacím jménem !" + +#. module: base_crypt +#: constraint:res.users:0 +msgid "The chosen company is not in the allowed companies for this user" +msgstr "" +"Vybraná společnost není v povolených společnostech pro tohoto uživatele" + +#. module: base_crypt +#: code:addons/base_crypt/crypt.py:140 +#, python-format +msgid "Please specify the password !" +msgstr "Prosíme zadejte heslo!" + +#. module: base_crypt +#: code:addons/base_crypt/crypt.py:140 +#, python-format +msgid "Error" +msgstr "Chyba" diff --git a/addons/base_iban/i18n/cs.po b/addons/base_iban/i18n/cs.po index 624cd1ced60..6d07d09d8bb 100644 --- a/addons/base_iban/i18n/cs.po +++ b/addons/base_iban/i18n/cs.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-02-08 00:36+0000\n" -"PO-Revision-Date: 2010-08-03 01:50+0000\n" -"Last-Translator: Mantavya Gajjar (Open ERP) \n" +"PO-Revision-Date: 2012-04-06 06:16+0000\n" +"Last-Translator: Jiří Hajda \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-02-09 06:01+0000\n" -"X-Generator: Launchpad (build 14763)\n" +"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n" +"X-Generator: Launchpad (build 15060)\n" #. module: base_iban #: constraint:res.partner.bank:0 @@ -23,27 +23,30 @@ msgid "" "Please define BIC/Swift code on bank for bank type IBAN Account to make " "valid payments" msgstr "" +"\n" +"Prosíme určete kód BIC/Swift u banky pro IBAN účet bankovního typu k ověření " +"plateb" #. module: base_iban #: code:addons/base_iban/base_iban.py:139 #, python-format msgid "This IBAN does not pass the validation check, please verify it" -msgstr "" +msgstr "Tento IBAN neprošel testem ověření, prosíme zkontrolujte jej" #. module: base_iban #: model:res.partner.bank.type,format_layout:base_iban.bank_iban msgid "%(bank_name)s: IBAN %(acc_number)s - BIC %(bank_bic)s" -msgstr "" +msgstr "%(bank_name)s: IBAN %(acc_number)s - BIC %(bank_bic)s" #. module: base_iban #: model:res.partner.bank.type.field,name:base_iban.bank_swift_field msgid "bank_bic" -msgstr "" +msgstr "bank_bic" #. module: base_iban #: model:res.partner.bank.type.field,name:base_iban.bank_zip_field msgid "zip" -msgstr "zip" +msgstr "psč" #. module: base_iban #: help:res.partner.bank,iban:0 @@ -53,12 +56,12 @@ msgstr "Mezinárodní Bankovní Číslo Účtu" #. module: base_iban #: model:ir.model,name:base_iban.model_res_partner_bank msgid "Bank Accounts" -msgstr "" +msgstr "Bankovní účty" #. module: base_iban #: model:res.partner.bank.type.field,name:base_iban.bank_country_field msgid "country_id" -msgstr "id_státu" +msgstr "country_id" #. module: base_iban #: code:addons/base_iban/base_iban.py:136 @@ -66,7 +69,7 @@ msgstr "id_státu" msgid "" "The IBAN does not seem to be correct. You should have entered something like " "this %s" -msgstr "" +msgstr "IBAN nevypadá jako správný. Měli byste zadat něco jako toto %s" #. module: base_iban #: field:res.partner.bank,iban:0 @@ -77,7 +80,7 @@ msgstr "IBAN" #: code:addons/base_iban/base_iban.py:140 #, python-format msgid "The IBAN is invalid, it should begin with the country code" -msgstr "" +msgstr "IBAN je neplatný, měl by začínat kódem země" #. module: base_iban #: model:res.partner.bank.type,name:base_iban.bank_iban @@ -87,7 +90,7 @@ msgstr "Účet IBAN" #. module: base_iban #: constraint:res.partner.bank:0 msgid "The RIB and/or IBAN is not valid" -msgstr "" +msgstr "RIB a/nebo IBAN není platný" #~ msgid "Invalid XML for View Architecture!" #~ msgstr "Invalidní XML pro zobrazení architektury!" diff --git a/addons/base_iban/i18n/ja.po b/addons/base_iban/i18n/ja.po new file mode 100644 index 00000000000..6a23a021336 --- /dev/null +++ b/addons/base_iban/i18n/ja.po @@ -0,0 +1,91 @@ +# Japanese translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 00:36+0000\n" +"PO-Revision-Date: 2012-04-08 06:11+0000\n" +"Last-Translator: Masaki Yamaya \n" +"Language-Team: Japanese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-04-09 04:56+0000\n" +"X-Generator: Launchpad (build 15060)\n" + +#. module: base_iban +#: constraint:res.partner.bank:0 +msgid "" +"\n" +"Please define BIC/Swift code on bank for bank type IBAN Account to make " +"valid payments" +msgstr "" + +#. module: base_iban +#: code:addons/base_iban/base_iban.py:139 +#, python-format +msgid "This IBAN does not pass the validation check, please verify it" +msgstr "" + +#. module: base_iban +#: model:res.partner.bank.type,format_layout:base_iban.bank_iban +msgid "%(bank_name)s: IBAN %(acc_number)s - BIC %(bank_bic)s" +msgstr "" + +#. module: base_iban +#: model:res.partner.bank.type.field,name:base_iban.bank_swift_field +msgid "bank_bic" +msgstr "" + +#. module: base_iban +#: model:res.partner.bank.type.field,name:base_iban.bank_zip_field +msgid "zip" +msgstr "" + +#. module: base_iban +#: help:res.partner.bank,iban:0 +msgid "International Bank Account Number" +msgstr "国際銀行口座番号" + +#. module: base_iban +#: model:ir.model,name:base_iban.model_res_partner_bank +msgid "Bank Accounts" +msgstr "銀行口座" + +#. module: base_iban +#: model:res.partner.bank.type.field,name:base_iban.bank_country_field +msgid "country_id" +msgstr "" + +#. module: base_iban +#: code:addons/base_iban/base_iban.py:136 +#, python-format +msgid "" +"The IBAN does not seem to be correct. You should have entered something like " +"this %s" +msgstr "" + +#. module: base_iban +#: field:res.partner.bank,iban:0 +msgid "IBAN" +msgstr "国際銀行口座番号" + +#. module: base_iban +#: code:addons/base_iban/base_iban.py:140 +#, python-format +msgid "The IBAN is invalid, it should begin with the country code" +msgstr "" + +#. module: base_iban +#: model:res.partner.bank.type,name:base_iban.bank_iban +msgid "IBAN Account" +msgstr "" + +#. module: base_iban +#: constraint:res.partner.bank:0 +msgid "The RIB and/or IBAN is not valid" +msgstr "銀行情報のRIBまたはIBANが正しくありません。" diff --git a/addons/base_iban/i18n/sr@latin.po b/addons/base_iban/i18n/sr@latin.po index fa0c4aa20f1..34f2852fb17 100644 --- a/addons/base_iban/i18n/sr@latin.po +++ b/addons/base_iban/i18n/sr@latin.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-02-08 00:36+0000\n" -"PO-Revision-Date: 2012-01-20 15:40+0000\n" +"PO-Revision-Date: 2012-04-05 15:22+0000\n" "Last-Translator: Milan Milosevic \n" "Language-Team: Serbian latin \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-02-09 06:02+0000\n" -"X-Generator: Launchpad (build 14763)\n" +"X-Launchpad-Export-Date: 2012-04-06 04:37+0000\n" +"X-Generator: Launchpad (build 15060)\n" #. module: base_iban #: constraint:res.partner.bank:0 @@ -32,7 +32,7 @@ msgstr "" #: code:addons/base_iban/base_iban.py:139 #, python-format msgid "This IBAN does not pass the validation check, please verify it" -msgstr "" +msgstr "Ovaj IBAN ne prolazi proveru validacije, molimo proverite ga" #. module: base_iban #: model:res.partner.bank.type,format_layout:base_iban.bank_iban @@ -91,7 +91,7 @@ msgstr "IBAN račun" #. module: base_iban #: constraint:res.partner.bank:0 msgid "The RIB and/or IBAN is not valid" -msgstr "" +msgstr "RIB i / ili IBAN nije validan" #~ msgid "Invalid XML for View Architecture!" #~ msgstr "Nevažeći XML za pregled arhitekture" diff --git a/addons/base_module_record/i18n/cs.po b/addons/base_module_record/i18n/cs.po index 05034f6c84a..c38439da947 100644 --- a/addons/base_module_record/i18n/cs.po +++ b/addons/base_module_record/i18n/cs.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-02-08 00:36+0000\n" -"PO-Revision-Date: 2011-09-09 10:24+0000\n" +"PO-Revision-Date: 2012-04-06 05:26+0000\n" "Last-Translator: Jiří Hajda \n" "Language-Team: Czech \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-02-09 06:14+0000\n" -"X-Generator: Launchpad (build 14763)\n" +"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n" +"X-Generator: Launchpad (build 15060)\n" "X-Poedit-Language: Czech\n" #. module: base_module_record @@ -90,6 +90,9 @@ msgid "" "publish it on http://www.openerp.com, in the 'Modules' section. You can do " "it through the website or using features of the 'base_module_publish' module." msgstr "" +"Pokud myslíte, že váš modul může zajímat jiné lidi, byli bychom rádi, abyste " +"jej zveřejnili v sekci 'Moduly' na http://www.openerp.com. Můžete to provést " +"přes webové stránky nebo použitím schopnosti modulu 'base_module_publish'." #. module: base_module_record #: wizard_field:base_module_record.module_record_data,init,check_date:0 diff --git a/addons/base_setup/base_setup_views.xml b/addons/base_setup/base_setup_views.xml index 7b471ecc068..453d4b167c0 100644 --- a/addons/base_setup/base_setup_views.xml +++ b/addons/base_setup/base_setup_views.xml @@ -160,6 +160,7 @@ sale.config.settings form + inline diff --git a/addons/base_tools/i18n/cs.po b/addons/base_tools/i18n/cs.po new file mode 100644 index 00000000000..6215f692393 --- /dev/null +++ b/addons/base_tools/i18n/cs.po @@ -0,0 +1,32 @@ +# Czech 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: 2011-01-11 11:14+0000\n" +"PO-Revision-Date: 2012-04-06 06:17+0000\n" +"Last-Translator: Jiří Hajda \n" +"Language-Team: Czech \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n" +"X-Generator: Launchpad (build 15060)\n" + +#. module: base_tools +#: model:ir.module.module,shortdesc:base_tools.module_meta_information +msgid "Common base for tools modules" +msgstr "Obecný základ pro nástrojové moduly" + +#. module: base_tools +#: model:ir.module.module,description:base_tools.module_meta_information +msgid "" +"\n" +" " +msgstr "" +"\n" +" " diff --git a/addons/base_vat/i18n/cs.po b/addons/base_vat/i18n/cs.po index 277f65c1989..b770b46f8fd 100644 --- a/addons/base_vat/i18n/cs.po +++ b/addons/base_vat/i18n/cs.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-02-08 00:36+0000\n" -"PO-Revision-Date: 2011-08-07 19:04+0000\n" -"Last-Translator: Jan B. Krejčí \n" +"PO-Revision-Date: 2012-04-06 06:22+0000\n" +"Last-Translator: Jiří Hajda \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-02-09 06:15+0000\n" -"X-Generator: Launchpad (build 14763)\n" +"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n" +"X-Generator: Launchpad (build 15060)\n" #. module: base_vat #: code:addons/base_vat/base_vat.py:141 @@ -23,31 +23,33 @@ msgid "" "This VAT number does not seem to be valid.\n" "Note: the expected format is %s" msgstr "" +"Toto DIČ nevypadá jako platné.\n" +"Poznámka: očekávaný formát je %s" #. module: base_vat #: sql_constraint:res.company:0 msgid "The company name must be unique !" -msgstr "" +msgstr "Jméno společnosti musí být jedinečné !" #. module: base_vat #: constraint:res.partner:0 msgid "Error ! You cannot create recursive associated members." -msgstr "" +msgstr "Chyba ! Nemůžete vytvořit rekurzivní přidružené členy." #. module: base_vat #: field:res.company,vat_check_vies:0 msgid "VIES VAT Check" -msgstr "" +msgstr "Kontrola DIČ přes VIES" #. module: base_vat #: model:ir.model,name:base_vat.model_res_company msgid "Companies" -msgstr "" +msgstr "Společnosti" #. module: base_vat #: constraint:res.company:0 msgid "Error! You can not create recursive companies." -msgstr "" +msgstr "Chyba! Nemůžete vytvořit rekurzivní společnosti." #. module: base_vat #: help:res.partner,vat_subjected:0 @@ -55,11 +57,13 @@ msgid "" "Check this box if the partner is subjected to the VAT. It will be used for " "the VAT legal statement." msgstr "" +"Zaškrtněte toto políčko, pokud partner podléhá DPH. Toto bude použito pro " +"přiznání k DPH." #. module: base_vat #: model:ir.model,name:base_vat.model_res_partner msgid "Partner" -msgstr "" +msgstr "Partner" #. module: base_vat #: help:res.company,vat_check_vies:0 @@ -67,6 +71,8 @@ msgid "" "If checked, Partners VAT numbers will be fully validated against EU's VIES " "service rather than via a simple format validation (checksum)." msgstr "" +"Pokud je zaškrtnuto, DIČ partnera bude plně ověřeno proti službě VIES EU " +"raději než přes jednoduché ověření formátu (kontrolní součet)." #. module: base_vat #: field:res.partner,vat_subjected:0 diff --git a/addons/board/board.py b/addons/board/board.py index 61ade1203bb..6c28aa33c40 100644 --- a/addons/board/board.py +++ b/addons/board/board.py @@ -186,45 +186,4 @@ class board_line(osv.osv): 'position': lambda *args: 'left' } -class res_log_report(osv.osv): - """ Log Report """ - _name = "res.log.report" - _auto = False - _description = "Log Report" - _columns = { - 'name': fields.char('Year', size=64, required=False, readonly=True), - 'month':fields.selection([('01', 'January'), ('02', 'February'), \ - ('03', 'March'), ('04', 'April'),\ - ('05', 'May'), ('06', 'June'), \ - ('07', 'July'), ('08', 'August'),\ - ('09', 'September'), ('10', 'October'),\ - ('11', 'November'), ('12', 'December')], 'Month', readonly=True), - 'day': fields.char('Day', size=128, readonly=True), - 'creation_date': fields.date('Creation Date', readonly=True), - 'res_model': fields.char('Object', size=128), - 'nbr': fields.integer('# of Entries', readonly=True) - } - - def init(self, cr): - """ - Log Report - @param cr: the current row, from the database cursor - """ - tools.drop_view_if_exists(cr,'res_log_report') - cr.execute(""" - CREATE OR REPLACE VIEW res_log_report AS ( - SELECT - l.id as id, - 1 as nbr, - to_char(l.create_date, 'YYYY') as name, - to_char(l.create_date, 'MM') as month, - to_char(l.create_date, 'YYYY-MM-DD') as day, - to_char(l.create_date, 'YYYY-MM-DD') as creation_date, - l.res_model as res_model, - date_trunc('day',l.create_date) as create_date - FROM - res_log l - )""") -res_log_report() - # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/board/board_data_admin.xml b/addons/board/board_data_admin.xml index 8cefd04a3b7..5f8c2f1b05c 100644 --- a/addons/board/board_data_admin.xml +++ b/addons/board/board_data_admin.xml @@ -1,6 +1,7 @@ - + + user.connection.tree @@ -21,115 +22,11 @@ - - - Latest Activities - res.log - form - tree,form - - - - - res.log.report.select - res.log.report - search - - - - - - - - - - - - - - - - - - - - - - res.log.report.tree - res.log.report - tree - - - - - - - - - - - - Configuration Overview board.config.overview - - - board.res.log.report.graph - res.log.report - graph - - - - - - - - - Monthly Activity per Document - res.log.report - form - graph,tree - [('create_date','>',(datetime.date.today()-datetime.timedelta(days=30)).strftime('%Y-%m-%d'))] - {'group_by':['res_model'],'group_by_no_leaf':1} - - - - - - board.weekly.res.log.report.graph - res.log.report - graph - - - - - - - - - Weekly Global Activity - res.log.report - form - graph,tree - [('create_date','>',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%Y-%m-%d'))] - {'group_by':['day'],'group_by_no_leaf':1} - - - board.administration.form board.board @@ -164,5 +61,5 @@ - + diff --git a/addons/board/i18n/cs.po b/addons/board/i18n/cs.po index 1252b26e977..5b2f1f21026 100644 --- a/addons/board/i18n/cs.po +++ b/addons/board/i18n/cs.po @@ -7,14 +7,14 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-02-08 00:36+0000\n" -"PO-Revision-Date: 2009-12-23 20:43+0000\n" -"Last-Translator: Kuvaly [LCT] \n" +"PO-Revision-Date: 2012-04-06 06:15+0000\n" +"Last-Translator: Jiří Hajda \n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-02-09 06:40+0000\n" -"X-Generator: Launchpad (build 14763)\n" +"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n" +"X-Generator: Launchpad (build 15060)\n" "X-Poedit-Language: Czech\n" #. module: board @@ -40,13 +40,13 @@ msgstr "Poslední spojení" #. module: board #: view:res.log.report:0 msgid "Log created in last month" -msgstr "" +msgstr "Záznam vytvořený minulý měsíc" #. module: board #: view:board.board:0 #: model:ir.actions.act_window,name:board.open_board_administration_form msgid "Administration Dashboard" -msgstr "Správa nástěnky" +msgstr "Nástěnka správy" #. module: board #: view:res.log.report:0 @@ -56,7 +56,7 @@ msgstr "Seskupit podle..." #. module: board #: view:res.log.report:0 msgid "Log created in current year" -msgstr "" +msgstr "Záznam vytvořený v tomto roce" #. module: board #: model:ir.model,name:board.model_board_board @@ -93,7 +93,7 @@ msgstr "Měsíc" #. module: board #: view:res.log.report:0 msgid "Log created in current month" -msgstr "" +msgstr "Záznam vytvořený v tomto měsíci" #. module: board #: model:ir.actions.act_window,name:board.board_monthly_res_log_report_action @@ -104,7 +104,7 @@ msgstr "Měsíční činnosti dle dokumentu" #. module: board #: view:board.board:0 msgid "Configuration Overview" -msgstr "" +msgstr "Přehled nastavení" #. module: board #: model:ir.actions.act_window,name:board.action_view_board_list_form @@ -212,7 +212,7 @@ msgstr "Leden" #. module: board #: view:board.board:0 msgid "Users" -msgstr "" +msgstr "Uživatelé" #. module: board #: selection:res.log.report,month:0 @@ -265,7 +265,7 @@ msgstr "Model" #. module: board #: model:ir.actions.act_window,name:board.board_homepage_action msgid "Home Page" -msgstr "" +msgstr "Domovská stránka" #. module: board #: model:ir.actions.act_window,name:board.action_latest_activities_tree diff --git a/addons/board/i18n/ja.po b/addons/board/i18n/ja.po new file mode 100644 index 00000000000..1114a624c53 --- /dev/null +++ b/addons/board/i18n/ja.po @@ -0,0 +1,348 @@ +# Japanese translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 00:36+0000\n" +"PO-Revision-Date: 2012-04-04 01:20+0000\n" +"Last-Translator: Masaki Yamaya \n" +"Language-Team: Japanese \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-04-05 04:43+0000\n" +"X-Generator: Launchpad (build 15060)\n" + +#. module: board +#: view:res.log.report:0 +msgid " Year " +msgstr " 年 " + +#. module: board +#: model:ir.model,name:board.model_board_menu_create +msgid "Menu Create" +msgstr "メニュー作成" + +#. module: board +#: view:board.menu.create:0 +msgid "Menu Information" +msgstr "" + +#. module: board +#: view:res.users:0 +msgid "Latest Connections" +msgstr "最近の接続" + +#. module: board +#: view:res.log.report:0 +msgid "Log created in last month" +msgstr "先月、作成されたログ" + +#. module: board +#: view:board.board:0 +#: model:ir.actions.act_window,name:board.open_board_administration_form +msgid "Administration Dashboard" +msgstr "アドミニストレーションダッシュボード" + +#. module: board +#: view:res.log.report:0 +msgid "Group By..." +msgstr "グループ化…" + +#. module: board +#: view:res.log.report:0 +msgid "Log created in current year" +msgstr "今年、作成されたログ" + +#. module: board +#: model:ir.model,name:board.model_board_board +msgid "Board" +msgstr "ボード" + +#. module: board +#: field:board.menu.create,menu_name:0 +msgid "Menu Name" +msgstr "メニュー名" + +#. module: board +#: model:ir.actions.act_window,name:board.board_weekly_res_log_report_action +#: view:res.log.report:0 +msgid "Weekly Global Activity" +msgstr "今週のグローバルな活動" + +#. module: board +#: field:board.board.line,name:0 +msgid "Title" +msgstr "タイトル" + +#. module: board +#: field:res.log.report,nbr:0 +msgid "# of Entries" +msgstr "項目数" + +#. module: board +#: view:res.log.report:0 +#: field:res.log.report,month:0 +msgid "Month" +msgstr "月" + +#. module: board +#: view:res.log.report:0 +msgid "Log created in current month" +msgstr "今月、作成したログ" + +#. module: board +#: model:ir.actions.act_window,name:board.board_monthly_res_log_report_action +#: view:res.log.report:0 +msgid "Monthly Activity per Document" +msgstr "ドキュメントごとの月間の活動" + +#. module: board +#: view:board.board:0 +msgid "Configuration Overview" +msgstr "設定の概要" + +#. module: board +#: model:ir.actions.act_window,name:board.action_view_board_list_form +#: model:ir.ui.menu,name:board.menu_view_board_form +msgid "Dashboard Definition" +msgstr "ダッシュボードの定義" + +#. module: board +#: selection:res.log.report,month:0 +msgid "March" +msgstr "3月" + +#. module: board +#: selection:res.log.report,month:0 +msgid "August" +msgstr "8月" + +#. module: board +#: model:ir.actions.act_window,name:board.action_user_connection_tree +msgid "User Connections" +msgstr "ユーザコネクション" + +#. module: board +#: field:res.log.report,creation_date:0 +msgid "Creation Date" +msgstr "作成日" + +#. module: board +#: view:res.log.report:0 +msgid "Log Analysis" +msgstr "ログ分析" + +#. module: board +#: field:res.log.report,res_model:0 +msgid "Object" +msgstr "オブジェクト" + +#. module: board +#: selection:res.log.report,month:0 +msgid "June" +msgstr "6月" + +#. module: board +#: field:board.board,line_ids:0 +msgid "Action Views" +msgstr "アクションビュー" + +#. module: board +#: model:ir.model,name:board.model_res_log_report +msgid "Log Report" +msgstr "ログレポート" + +#. module: board +#: code:addons/board/wizard/board_menu_create.py:46 +#, python-format +msgid "Please Insert Dashboard View(s) !" +msgstr "ダッシュボードビューを挿入してください" + +#. module: board +#: selection:res.log.report,month:0 +msgid "July" +msgstr "7月" + +#. module: board +#: view:res.log.report:0 +#: field:res.log.report,day:0 +msgid "Day" +msgstr "日" + +#. module: board +#: view:board.menu.create:0 +msgid "Create Menu For Dashboard" +msgstr "" + +#. module: board +#: selection:res.log.report,month:0 +msgid "February" +msgstr "" + +#. module: board +#: selection:res.log.report,month:0 +msgid "October" +msgstr "" + +#. module: board +#: model:ir.model,name:board.model_board_board_line +msgid "Board Line" +msgstr "" + +#. module: board +#: field:board.menu.create,menu_parent_id:0 +msgid "Parent Menu" +msgstr "" + +#. module: board +#: view:res.log.report:0 +msgid " Month-1 " +msgstr "" + +#. module: board +#: selection:res.log.report,month:0 +msgid "January" +msgstr "" + +#. module: board +#: view:board.board:0 +msgid "Users" +msgstr "" + +#. module: board +#: selection:res.log.report,month:0 +msgid "November" +msgstr "" + +#. module: board +#: help:board.board.line,sequence:0 +msgid "" +"Gives the sequence order when displaying a list of " +"board lines." +msgstr "" + +#. module: board +#: selection:res.log.report,month:0 +msgid "April" +msgstr "" + +#. module: board +#: view:board.board:0 +#: field:board.board,name:0 +#: field:board.board.line,board_id:0 +#: model:ir.ui.menu,name:board.menu_dasboard +msgid "Dashboard" +msgstr "" + +#. module: board +#: code:addons/board/wizard/board_menu_create.py:45 +#, python-format +msgid "User Error!" +msgstr "" + +#. module: board +#: field:board.board.line,action_id:0 +msgid "Action" +msgstr "" + +#. module: board +#: field:board.board.line,position:0 +msgid "Position" +msgstr "" + +#. module: board +#: view:res.log.report:0 +msgid "Model" +msgstr "" + +#. module: board +#: model:ir.actions.act_window,name:board.board_homepage_action +msgid "Home Page" +msgstr "" + +#. module: board +#: model:ir.actions.act_window,name:board.action_latest_activities_tree +msgid "Latest Activities" +msgstr "" + +#. module: board +#: selection:board.board.line,position:0 +msgid "Left" +msgstr "" + +#. module: board +#: field:board.board,view_id:0 +msgid "Board View" +msgstr "" + +#. module: board +#: selection:board.board.line,position:0 +msgid "Right" +msgstr "" + +#. module: board +#: field:board.board.line,width:0 +msgid "Width" +msgstr "" + +#. module: board +#: view:res.log.report:0 +msgid " Month " +msgstr "" + +#. module: board +#: field:board.board.line,sequence:0 +msgid "Sequence" +msgstr "" + +#. module: board +#: selection:res.log.report,month:0 +msgid "September" +msgstr "" + +#. module: board +#: selection:res.log.report,month:0 +msgid "December" +msgstr "" + +#. module: board +#: view:board.board:0 +#: view:board.menu.create:0 +msgid "Create Menu" +msgstr "" + +#. module: board +#: field:board.board.line,height:0 +msgid "Height" +msgstr "" + +#. module: board +#: model:ir.actions.act_window,name:board.action_board_menu_create +msgid "Create Board Menu" +msgstr "" + +#. module: board +#: selection:res.log.report,month:0 +msgid "May" +msgstr "" + +#. module: board +#: view:res.log.report:0 +#: field:res.log.report,name:0 +msgid "Year" +msgstr "" + +#. module: board +#: view:board.menu.create:0 +msgid "Cancel" +msgstr "" + +#. module: board +#: view:board.board:0 +msgid "Dashboard View" +msgstr "" diff --git a/addons/board/security/ir.model.access.csv b/addons/board/security/ir.model.access.csv index 2275cc7d47d..bc9e0844923 100644 --- a/addons/board/security/ir.model.access.csv +++ b/addons/board/security/ir.model.access.csv @@ -3,4 +3,3 @@ access_board_board all,board.board,model_board_board,,1,0,0,0 access_board_board_line all,board.board.line,model_board_board_line,,1,0,0,0 access_board_board system,board.board system,model_board_board,base.group_system,1,1,1,1 access_board_board_line system,board.board.line system,model_board_board_line,base.group_system,1,1,1,1 -access_res_log_report all,res.log.report,model_res_log_report,,1,0,0,0 diff --git a/addons/claim_from_delivery/i18n/cs.po b/addons/claim_from_delivery/i18n/cs.po new file mode 100644 index 00000000000..6f3a8ca0a81 --- /dev/null +++ b/addons/claim_from_delivery/i18n/cs.po @@ -0,0 +1,23 @@ +# Czech translation for openobject-addons +# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME \n" +"POT-Creation-Date: 2012-02-08 00:36+0000\n" +"PO-Revision-Date: 2012-04-06 04:57+0000\n" +"Last-Translator: Jiří Hajda \n" +"Language-Team: Czech \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2012-04-07 04:55+0000\n" +"X-Generator: Launchpad (build 15060)\n" + +#. module: claim_from_delivery +#: model:ir.actions.act_window,name:claim_from_delivery.action_claim_from_delivery +msgid "Claim" +msgstr "Pohledávka" diff --git a/addons/crm/crm.py b/addons/crm/crm.py index 6fa84a83560..467ea64e633 100644 --- a/addons/crm/crm.py +++ b/addons/crm/crm.py @@ -127,7 +127,7 @@ class crm_case_section(osv.osv): def name_get(self, cr, uid, ids, context=None): """Overrides orm name_get method""" - if not isinstance(ids, list) : + if not isinstance(ids, list) : ids = [ids] res = [] if not ids: @@ -256,7 +256,40 @@ class crm_base(object): data.update(self.onchange_partner_address_id(cr, uid, ids, addr['contact'])['value']) return {'value': data} - def case_open(self, cr, uid, ids, *args): + def case_get_note_msg_prefix(self, cr, uid, id, context=None): + return '' + + def case_open_send_note(self, cr, uid, ids, context=None): + for id in ids: + msg = '%s has been opened.' % (self.case_get_note_msg_prefix(cr, uid, id, context=context)) + self.message_append_note(cr, uid, [id], body=msg, context=context) + return True + + def case_close_send_note(self, cr, uid, ids, context=None): + for id in ids: + msg = '%s has been closed.'% (self.case_get_note_msg_prefix(cr, uid, id, context=context)) + self.message_append_note(cr, uid, [id], body=msg, context=context) + return True + + def case_cancel_send_note(self, cr, uid, ids, context=None): + for id in ids: + msg = '%s has been canceled.' % (self.case_get_note_msg_prefix(cr, uid, id, context=context)) + self.message_append_note(cr, uid, [id], body=msg, context=context) + return True + + def case_pending_send_note(self, cr, uid, ids, context=None): + for id in ids: + msg = '%s is now pending.' % (self.case_get_note_msg_prefix(cr, uid, id, context=context)) + self.message_append_note(cr, uid, [id], body=msg, context=context) + return True + + def case_reset_send_note(self, cr, uid, ids, context=None): + for id in ids: + msg = '%s has been renewed.' % (self.case_get_note_msg_prefix(cr, uid, id, context=context)) + self.message_append_note(cr, uid, [id], body=msg, context=context) + return True + + def case_open(self, cr, uid, ids, context=None): """Opens Case :param ids: List of case Ids """ @@ -265,12 +298,13 @@ class crm_base(object): data = {'state': 'open', 'active': True} if not case.user_id: data['user_id'] = uid - self.write(cr, uid, case.id, data) - + self.write(cr, uid, [case.id], data) + self.case_open_send_note(cr, uid, ids, context=context) self._action(cr, uid, cases, 'open') + return True - def case_close(self, cr, uid, ids, *args): + def case_close(self, cr, uid, ids, context=None): """Closes Case :param ids: List of case Ids """ @@ -278,10 +312,11 @@ class crm_base(object): cases[0].state # to fill the browse record cache self.write(cr, uid, ids, {'state': 'done', 'date_closed': time.strftime('%Y-%m-%d %H:%M:%S'), }) # We use the cache of cases to keep the old case state + self.case_close_send_note(cr, uid, ids, context=context) self._action(cr, uid, cases, 'done') return True - def case_cancel(self, cr, uid, ids, *args): + def case_cancel(self, cr, uid, ids, context=None): """Cancels Case :param ids: List of case Ids """ @@ -289,26 +324,29 @@ class crm_base(object): cases[0].state # to fill the browse record cache self.write(cr, uid, ids, {'state': 'cancel', 'active': True}) # We use the cache of cases to keep the old case state + self.case_cancel_send_note(cr, uid, ids, context=context) self._action(cr, uid, cases, 'cancel') return True - def case_pending(self, cr, uid, ids, *args): + def case_pending(self, cr, uid, ids, context=None): """Marks case as pending :param ids: List of case Ids """ cases = self.browse(cr, uid, ids) cases[0].state # to fill the browse record cache self.write(cr, uid, ids, {'state': 'pending', 'active': True}) + self.case_pending_send_note(cr, uid, ids, context=context) self._action(cr, uid, cases, 'pending') return True - def case_reset(self, cr, uid, ids, *args): + def case_reset(self, cr, uid, ids, context=None): """Resets case as draft :param ids: List of case Ids """ cases = self.browse(cr, uid, ids) cases[0].state # to fill the browse record cache self.write(cr, uid, ids, {'state': 'draft', 'active': True}) + self.case_reset_send_note(cr, uid, ids, context=context) self._action(cr, uid, cases, 'draft') return True @@ -323,12 +361,12 @@ class crm_base(object): return rule_obj._action(cr, uid, rule_ids, cases, scrit=scrit, context=context) class crm_case(crm_base): - """ A simple python class to be used for common functions + """ A simple python class to be used for common functions Object that inherit from this class should inherit from mailgate.thread And need a stage_id field - And object that inherit (orm inheritance) from a class the overwrite copy + And object that inherit (orm inheritance) from a class the overwrite copy """ - + def stage_find(self, cr, uid, section_id, domain=[], order='sequence'): domain = list(domain) if section_id: @@ -387,34 +425,45 @@ class crm_case(crm_base): default.update({ 'date_open': False }) return super(crm_case, self).copy(cr, uid, id, default, context=context) + def case_escalate_send_note(self, cr, uid, ids, new_section=None, context=None): + for id in ids: + if new_section: + msg = '%s has been escalated to %s.' % (self.case_get_note_msg_prefix(cr, uid, id, context=context), new_section.name) + else: + msg = '%s has been escalated.' % (self.case_get_note_msg_prefix(cr, uid, id, context=context)) + self.message_append_note(cr, uid, [id], 'System Notification', msg, context=context) + return True - def case_open(self, cr, uid, ids, *args): + def case_get_note_msg_prefix(self, cr, uid, id, context=None): + return '' + + def case_open(self, cr, uid, ids, context=None): """Opens Case""" cases = self.browse(cr, uid, ids) - self.message_append(cr, uid, cases, _('Open')) for case in cases: data = {'state': 'open', 'active': True } if not case.user_id: data['user_id'] = uid - self.write(cr, uid, case.id, data) + self.write(cr, uid, [case.id], data) + self.case_open_send_note(cr, uid, ids, context=context) self._action(cr, uid, cases, 'open') return True - def case_close(self, cr, uid, ids, *args): + def case_close(self, cr, uid, ids, context=None): """Closes Case""" cases = self.browse(cr, uid, ids) cases[0].state # to fill the browse record cache - self.message_append(cr, uid, cases, _('Close')) self.write(cr, uid, ids, {'state': 'done', 'date_closed': time.strftime('%Y-%m-%d %H:%M:%S'), }) # # We use the cache of cases to keep the old case state # + self.case_close_send_note(cr, uid, ids, context=context) self._action(cr, uid, cases, 'done') return True - def case_escalate(self, cr, uid, ids, *args): + def case_escalate(self, cr, uid, ids, context=None): """Escalates case to parent level""" cases = self.browse(cr, uid, ids) for case in cases: @@ -427,42 +476,37 @@ class crm_case(crm_base): else: raise osv.except_osv(_('Error !'), _('You can not escalate, you are already at the top level regarding your sales-team category.')) self.write(cr, uid, [case.id], data) + case.case_escalate_send_note(case.section_id.parent_id) cases = self.browse(cr, uid, ids) - self.message_append(cr, uid, cases, _('Escalate')) self._action(cr, uid, cases, 'escalate') return True - def case_cancel(self, cr, uid, ids, *args): + def case_cancel(self, cr, uid, ids, context=None): """Cancels Case""" cases = self.browse(cr, uid, ids) cases[0].state # to fill the browse record cache - self.message_append(cr, uid, cases, _('Cancel')) self.write(cr, uid, ids, {'state': 'cancel', 'active': True}) + self.case_cancel_send_note(cr, uid, ids, context=context) self._action(cr, uid, cases, 'cancel') - for case in cases: - message = _("The case '%s' has been cancelled.") % (case.name,) - self.log(cr, uid, case.id, message) return True - def case_pending(self, cr, uid, ids, *args): + def case_pending(self, cr, uid, ids, context=None): """Marks case as pending""" cases = self.browse(cr, uid, ids) cases[0].state # to fill the browse record cache - self.message_append(cr, uid, cases, _('Pending')) self.write(cr, uid, ids, {'state': 'pending', 'active': True}) + self.case_pending_send_note(cr, uid, ids, context=context) self._action(cr, uid, cases, 'pending') return True - def case_reset(self, cr, uid, ids, *args): + def case_reset(self, cr, uid, ids, context=None): """Resets case as draft""" state = 'draft' - if 'crm.phonecall' in args: - state = 'open' cases = self.browse(cr, uid, ids) cases[0].state # to fill the browse record cache - self.message_append(cr, uid, cases, _('Draft')) self.write(cr, uid, ids, {'state': state, 'active': True}) + self.case_reset_send_note(cr, uid, ids, context=context) self._action(cr, uid, cases, state) return True diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py index 2b319e565da..00f477a75d7 100644 --- a/addons/crm/crm_lead.py +++ b/addons/crm/crm_lead.py @@ -40,7 +40,7 @@ class crm_lead(crm_case, osv.osv): _name = "crm.lead" _description = "Lead/Opportunity" _order = "priority,date_action,id desc" - _inherit = ['mail.thread','res.partner'] + _inherit = ['ir.needaction_mixin', 'mail.thread','res.partner'] def _read_group_stage_ids(self, cr, uid, ids, domain, read_group_order=None, access_rights_uid=None, context=None): access_rights_uid = access_rights_uid or uid @@ -183,7 +183,6 @@ class crm_lead(crm_case, osv.osv): 'message_ids': fields.one2many('mail.message', 'res_id', 'Messages', domain=[('model','=',_name)]), 'subjects': fields.function(_get_email_subject, fnct_search=_history_search, string='Subject of Email', type='char', size=64), - # Only used for type opportunity 'probability': fields.float('Probability (%)',group_operator="avg"), 'planned_revenue': fields.float('Expected Revenue'), @@ -215,6 +214,19 @@ class crm_lead(crm_case, osv.osv): 'color': 0, } + def get_needaction_user_ids(self, cr, uid, ids, context=None): + result = dict.fromkeys(ids, []) + for obj in self.browse(cr, uid, ids, context=context): + # salesman must perform an action when in draft mode + if obj.state == 'draft' and obj.user_id: + result[obj.id] = [obj.user_id.id] + return result + + def create(self, cr, uid, vals, context=None): + obj_id = super(crm_lead, self).create(cr, uid, vals, context) + self.create_send_note(cr, uid, [obj_id], context=context) + return obj_id + def on_change_optin(self, cr, uid, ids, optin): return {'value':{'optin':optin,'optout':False}} @@ -248,75 +260,58 @@ class crm_lead(crm_case, osv.osv): def stage_find_won(self, cr, uid, section_id): return self.stage_find_percent(cr, uid, 100.0, section_id) - def case_open(self, cr, uid, ids, *args): - for l in self.browse(cr, uid, ids): - # When coming from draft override date and stage otherwise just set state - if l.state == 'draft': - if l.type == 'lead': - message = _("The lead '%s' has been opened.") % l.name - elif l.type == 'opportunity': - message = _("The opportunity '%s' has been opened.") % l.name - else: - message = _("The case '%s' has been opened.") % l.name - self.log(cr, uid, l.id, message) + def case_open(self, cr, uid, ids, context=None): + for lead in self.browse(cr, uid, ids, context=context): + if lead.state == 'draft': value = {'date_open': time.strftime('%Y-%m-%d %H:%M:%S')} - self.write(cr, uid, [l.id], value) - if l.type == 'opportunity' and not l.stage_id: - stage_id = self.stage_find(cr, uid, l.section_id.id or False, [('sequence','>',0)]) + self.write(cr, uid, [lead.id], value) + if lead.type == 'opportunity' and not lead.stage_id: + stage_id = self.stage_find(cr, uid, lead.section_id.id or False, [('sequence','>',0)]) if stage_id: - self.stage_set(cr, uid, [l.id], stage_id) - res = super(crm_lead, self).case_open(cr, uid, ids, *args) + self.stage_set(cr, uid, [lead.id], stage_id) + res = super(crm_lead, self).case_open(cr, uid, ids, context) return res - def case_close(self, cr, uid, ids, *args): - res = super(crm_lead, self).case_close(cr, uid, ids, *args) + def case_close(self, cr, uid, ids, context=None): + res = super(crm_lead, self).case_close(cr, uid, ids, context) self.write(cr, uid, ids, {'date_closed': time.strftime('%Y-%m-%d %H:%M:%S')}) - for case in self.browse(cr, uid, ids): - if case.type == 'lead': - message = _("The lead '%s' has been closed.") % case.name - else: - message = _("The case '%s' has been closed.") % case.name - self.log(cr, uid, case.id, message) return res - def case_cancel(self, cr, uid, ids, *args): + def case_cancel(self, cr, uid, ids, context=None): """Overrides cancel for crm_case for setting probability """ - res = super(crm_lead, self).case_cancel(cr, uid, ids, args) + res = super(crm_lead, self).case_cancel(cr, uid, ids, context) self.write(cr, uid, ids, {'probability' : 0.0}) return res - def case_reset(self, cr, uid, ids, *args): + def case_reset(self, cr, uid, ids, context=None): """Overrides reset as draft in order to set the stage field as empty """ - res = super(crm_lead, self).case_reset(cr, uid, ids, *args) + res = super(crm_lead, self).case_reset(cr, uid, ids, context) self.write(cr, uid, ids, {'stage_id': False, 'probability': 0.0}) return res - def case_mark_lost(self, cr, uid, ids, *args): + def case_mark_lost(self, cr, uid, ids, context=None): """Mark the case as lost: state = done and probability = 0% """ - res = super(crm_lead, self).case_close(cr, uid, ids, *args) + res = super(crm_lead, self).case_close(cr, uid, ids, context) self.write(cr, uid, ids, {'probability' : 0.0}) - for l in self.browse(cr, uid, ids): - stage_id = self.stage_find_lost(cr, uid, l.section_id.id or False) + for lead in self.browse(cr, uid, ids): + stage_id = self.stage_find_lost(cr, uid, lead.section_id.id or False) if stage_id: - self.stage_set(cr, uid, [l.id], stage_id) - message = _("The opportunity '%s' has been marked as lost.") % l.name - self.log(cr, uid, l.id, message) + self.stage_set(cr, uid, [lead.id], stage_id) return res - def case_mark_won(self, cr, uid, ids, *args): + def case_mark_won(self, cr, uid, ids, context=None): """Mark the case as lost: state = done and probability = 0% """ - res = super(crm_lead, self).case_close(cr, uid, ids, *args) + res = super(crm_lead, self).case_close(cr, uid, ids, context=None) self.write(cr, uid, ids, {'probability' : 100.0}) - for l in self.browse(cr, uid, ids): - stage_id = self.stage_find_won(cr, uid, l.section_id.id or False) + for lead in self.browse(cr, uid, ids): + stage_id = self.stage_find_won(cr, uid, lead.section_id.id or False) if stage_id: - self.stage_set(cr, uid, [l.id], stage_id) - message = _("The opportunity '%s' has been been won.") % l.name - self.log(cr, uid, l.id, message) + self.stage_set(cr, uid, [lead.id], stage_id) + self.case_mark_won_send_note(cr, uid, [lead.id], context=context) return res def set_priority(self, cr, uid, ids, priority): @@ -324,12 +319,12 @@ class crm_lead(crm_case, osv.osv): """ return self.write(cr, uid, ids, {'priority' : priority}) - def set_high_priority(self, cr, uid, ids, *args): + def set_high_priority(self, cr, uid, ids, context=None): """Set lead priority to high """ return self.set_priority(cr, uid, ids, '1') - def set_normal_priority(self, cr, uid, ids, *args): + def set_normal_priority(self, cr, uid, ids, context=None): """Set lead priority to normal """ return self.set_priority(cr, uid, ids, '3') @@ -422,7 +417,7 @@ class crm_lead(crm_case, osv.osv): subject = subject[0] + ", ".join(subject[1:]) details = "\n\n".join(details) - return self.message_append(cr, uid, [opportunity_id], subject, body_text=details, context=context) + return self.message_append_note(cr, uid, [opportunity_id], subject=subject, body=details) def _merge_opportunity_history(self, cr, uid, opportunity_id, opportunities, context=None): message = self.pool.get('mail.message') @@ -529,13 +524,6 @@ class crm_lead(crm_case, osv.osv): 'date_open': time.strftime('%Y-%m-%d %H:%M:%S'), } - def _convert_opportunity_notification(self, cr, uid, lead, context=None): - success_message = _("Lead '%s' has been converted to an opportunity.") % lead.name - self.message_append(cr, uid, [lead.id], success_message, body_text=success_message, context=context) - self.log(cr, uid, lead.id, success_message) - self._send_mail_to_salesman(cr, uid, lead, context=context) - return True - def convert_opportunity(self, cr, uid, ids, partner_id, user_ids=False, section_id=False, context=None): partner = self.pool.get('res.partner') mail_message = self.pool.get('mail.message') @@ -551,7 +539,7 @@ class crm_lead(crm_case, osv.osv): vals = self._convert_opportunity_data(cr, uid, lead, customer, section_id, context=context) self.write(cr, uid, [lead.id], vals, context=context) - self._convert_opportunity_notification(cr, uid, lead, context=context) + self.convert_opportunity_send_note(cr, uid, lead, context=context) #TOCHECK: why need to change partner details in all messages of lead ? if lead.partner_id: msg_ids = [ x.id for x in lead.message_ids] @@ -605,6 +593,7 @@ class crm_lead(crm_case, osv.osv): res_partner.write(cr, uid, partner_id, {'section_id': lead.section_id.id or False}) contact_id = res_partner.address_get(cr, uid, [partner_id])['default'] res = lead.write({'partner_id' : partner_id, }, context=context) + self._lead_set_partner_send_note(cr, uid, [lead.id], context) return res def convert_partner(self, cr, uid, ids, action='create', partner_id=False, context=None): @@ -684,12 +673,12 @@ class crm_lead(crm_case, osv.osv): 'partner_mobile' : lead.partner_id and lead.partner_id.mobile or False, 'priority': lead.priority, } - new_id = phonecall.create(cr, uid, vals, context=context) - phonecall.case_open(cr, uid, [new_id]) + phonecall.case_open(cr, uid, [new_id], context=context) if action == 'log': - phonecall.case_close(cr, uid, [new_id]) + phonecall.case_close(cr, uid, [new_id], context=context) phonecall_dict[lead.id] = new_id + self.schedule_phonecall_send_note(cr, uid, [lead.id], new_id, action, context=context) return phonecall_dict @@ -767,7 +756,7 @@ class crm_lead(crm_case, osv.osv): #re-open values.update(state=crm.AVAILABLE_STATES[1][0]) if not case.date_open: - values['date_open'] = time.strftime(tools.DEFAULT_SERVER_DATETIME_FORMAT) + values['date_open'] = time.strftime(tools.DEFAULT_SERVER_DATETIME_FORMAT) res = self.write(cr, uid, [case.id], values, context=context) return res @@ -831,17 +820,59 @@ class crm_lead(crm_case, osv.osv): # change probability of lead(s) if required by stage if not vals.get('probability') and stage.on_change: vals['probability'] = stage.probability - text = _("Changed Stage to: %s") % stage.name - self.message_append(cr, uid, ids, text, body_text=text, context=context) for case in self.browse(cr, uid, ids, context=context): - if case.type == 'lead' or context.get('stage_type') == 'lead': - message = _("The stage of lead '%s' has been changed to '%s'.") % (case.name, stage.name) - self.log(cr, uid, case.id, message) - elif case.type == 'opportunity': - message = _("The stage of opportunity '%s' has been changed to '%s'.") % (case.name, stage.name) - self.log(cr, uid, case.id, message) - + message = _("Stage changed to %s.") % (stage.name) + case.message_append_note(body=message) return super(crm_lead,self).write(cr, uid, ids, vals, context) + + # ---------------------------------------- + # OpenChatter methods and notifications + # ---------------------------------------- + + def message_get_subscribers(self, cr, uid, ids, context=None): + sub_ids = self.message_get_subscribers_ids(cr, uid, ids, context=context) + # add salesman to the subscribers + for obj in self.browse(cr, uid, ids, context=context): + if obj.user_id: + sub_ids.append(obj.user_id.id) + return self.pool.get('res.users').read(cr, uid, sub_ids, context=context) + + def case_get_note_msg_prefix(self, cr, uid, lead, context=None): + if isinstance(lead, (int, long)): + lead = self.browse(cr, uid, [lead], context=context)[0] + return ('Opportunity' if lead.type == 'opportunity' else 'Lead') + + def create_send_note(self, cr, uid, ids, context=None): + for id in ids: + message = _("%s has been created.")% (self.case_get_note_msg_prefix(cr, uid, id, context=context)) + self.message_append_note(cr, uid, [id], body=message, context=context) + return True + + def case_mark_lost_send_note(self, cr, uid, ids, context=None): + message = _("Opportunity has been lost.") + return self.message_append_note(cr, uid, ids, body=message, context=context) + + def case_mark_won_send_note(self, cr, uid, ids, context=None): + message = _("Opportunity has been won.") + return self.message_append_note(cr, uid, ids, body=message, context=context) + + def schedule_phonecall_send_note(self, cr, uid, ids, phonecall_id, action, context=None): + phonecall = self.pool.get('crm.phonecall').browse(cr, uid, [phonecall_id], context=context)[0] + if action == 'log': prefix = 'Logged' + else: prefix = 'Scheduled' + message = _("%s a call for the %s.") % (prefix, phonecall.date) + return self. message_append_note(cr, uid, ids, body=message, context=context) + + def _lead_set_partner_send_note(self, cr, uid, ids, context=None): + for lead in self.browse(cr, uid, ids, context=context): + message = _("%s partner is now set to %s." % (self.case_get_note_msg_prefix(cr, uid, lead, context=context), lead.partner_id.name)) + lead.message_append_note(body=message) + return True + + def convert_opportunity_send_note(self, cr, uid, lead, context=None): + message = _("Lead has been converted to an opportunity.") + lead.message_append_note(body=message) + return True crm_lead() diff --git a/addons/crm/crm_lead_demo.xml b/addons/crm/crm_lead_demo.xml index e4d32cdaa13..19987f8f61a 100644 --- a/addons/crm/crm_lead_demo.xml +++ b/addons/crm/crm_lead_demo.xml @@ -220,21 +220,21 @@ - - - + - - - + - - - + - - - + diff --git a/addons/crm/crm_lead_view.xml b/addons/crm/crm_lead_view.xml index a0a17e9b985..52b7c88c2d4 100644 --- a/addons/crm/crm_lead_view.xml +++ b/addons/crm/crm_lead_view.xml @@ -143,29 +143,6 @@ type="object" icon="gtk-convert" /> - - - - - - - - -