diff options
| author | Raphael Collet <rco@openerp.com> | 2013-04-11 09:37:08 +0200 |
|---|---|---|
| committer | Raphael Collet <rco@openerp.com> | 2013-04-11 09:37:08 +0200 |
| commit | 894eeef8e0ff44b2bf0b276718e6f48a0a7c1ee6 (patch) | |
| tree | 4ae49603ad9be6364b2aee9c3134c2a71be294b8 | |
| parent | fb4b655139d5a00f605ea954dfee2df77e457778 (diff) | |
| parent | a0a9ae61e7e41607aa9f6c918f003fd5699ffa4c (diff) | |
[MERGE] from trunk
bzr revid: rco@openerp.com-20130411073708-gaxl2332umtedmg6
174 files changed, 15010 insertions, 1054 deletions
diff --git a/addons/account/account.py b/addons/account/account.py index 48e66dd957b..a620c0b5ddc 100644 --- a/addons/account/account.py +++ b/addons/account/account.py @@ -1027,6 +1027,9 @@ class account_period(osv.osv): def action_draft(self, cr, uid, ids, *args): mode = 'draft' + for period in self.browse(cr, uid, ids): + if period.fiscalyear_id.state == 'done': + raise osv.except_osv(_('Warning !'), _('You can not re-open a period which belongs to closed fiscal year')) cr.execute('update account_journal_period set state=%s where period_id in %s', (mode, tuple(ids),)) cr.execute('update account_period set state=%s where id in %s', (mode, tuple(ids),)) return True diff --git a/addons/account/account_invoice.py b/addons/account/account_invoice.py index 0802f77f497..8fe79d87064 100644 --- a/addons/account/account_invoice.py +++ b/addons/account/account_invoice.py @@ -421,6 +421,7 @@ class account_invoice(osv.osv): 'mark_invoice_as_sent': True, }) return { + 'name': _('Compose Email'), 'type': 'ir.actions.act_window', 'view_type': 'form', 'view_mode': 'form', diff --git a/addons/account/account_invoice_view.xml b/addons/account/account_invoice_view.xml index 8c0854bd6c6..c2f21c0d8bc 100644 --- a/addons/account/account_invoice_view.xml +++ b/addons/account/account_invoice_view.xml @@ -453,10 +453,11 @@ <filter name="invoices" string="Invoices" domain="[('state','not in',['draft','cancel'])]" help="Proforma/Open/Paid Invoices"/> <filter name="unpaid" string="Unpaid" domain="[('state','=','open')]" help="Unpaid Invoices"/> <separator/> - <filter domain="[('user_id','=',uid)]" help="My Invoices" icon="terp-personal"/> <field name="partner_id"/> <field name="user_id" string="Salesperson"/> <field name="period_id" string="Period"/> + <separator/> + <filter domain="[('user_id','=',uid)]" help="My Invoices"/> <group expand="0" string="Group By..."> <filter string="Partner" icon="terp-partner" domain="[]" context="{'group_by':'partner_id'}"/> <filter string="Responsible" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/> diff --git a/addons/account/account_move_line.py b/addons/account/account_move_line.py index 36d211c11d2..082d654c5a2 100644 --- a/addons/account/account_move_line.py +++ b/addons/account/account_move_line.py @@ -742,7 +742,7 @@ class account_move_line(osv.osv): def list_partners_to_reconcile(self, cr, uid, context=None): cr.execute( """SELECT partner_id FROM ( - SELECT l.partner_id, p.last_reconciliation_date, SUM(l.debit) AS debit, SUM(l.credit) AS credit, MAX(l.date) AS max_date + SELECT l.partner_id, p.last_reconciliation_date, SUM(l.debit) AS debit, SUM(l.credit) AS credit, MAX(l.create_date) AS max_date FROM account_move_line l RIGHT JOIN account_account a ON (a.id = l.account_id) RIGHT JOIN res_partner p ON (l.partner_id = p.id) @@ -753,9 +753,14 @@ class account_move_line(osv.osv): ) AS s WHERE debit > 0 AND credit > 0 AND (last_reconciliation_date IS NULL OR max_date > last_reconciliation_date) ORDER BY last_reconciliation_date""") - ids = cr.fetchall() - ids = len(ids) and [x[0] for x in ids] or [] - return self.pool.get('res.partner').name_get(cr, uid, ids, context=context) + ids = [x[0] for x in cr.fetchall()] + if not ids: + return [] + + # To apply the ir_rules + partner_obj = self.pool.get('res.partner') + ids = partner_obj.search(cr, uid, [('id', 'in', ids)], context=context) + return partner_obj.name_get(cr, uid, ids, context=context) def reconcile_partial(self, cr, uid, ids, type='auto', context=None, writeoff_acc_id=False, writeoff_period_id=False, writeoff_journal_id=False): move_rec_obj = self.pool.get('account.move.reconcile') diff --git a/addons/account/report/account_invoice_report.py b/addons/account/report/account_invoice_report.py index af6ae1eede7..31725a46b46 100644 --- a/addons/account/report/account_invoice_report.py +++ b/addons/account/report/account_invoice_report.py @@ -210,8 +210,8 @@ class account_invoice_report(osv.osv): cr.id IN (SELECT id FROM res_currency_rate cr2 WHERE (cr2.currency_id = sub.currency_id) - AND ((sub.date IS NOT NULL AND cr.name <= sub.date) - OR (sub.date IS NULL AND cr.name <= NOW())) + AND ((sub.date IS NOT NULL AND cr2.name <= sub.date) + OR (sub.date IS NULL AND cr2.name <= NOW())) ORDER BY name DESC LIMIT 1) )""" % ( self._table, diff --git a/addons/account/report/account_print_invoice.rml b/addons/account/report/account_print_invoice.rml index 4ffa7a33f9d..9268c94d4c7 100644 --- a/addons/account/report/account_print_invoice.rml +++ b/addons/account/report/account_print_invoice.rml @@ -168,7 +168,7 @@ </para> <para style="terp_default_8">Tel. : [[ (o.partner_id.phone) or removeParentNode('para') ]]</para> <para style="terp_default_8">Fax : [[ (o.partner_id.fax) or removeParentNode('para') ]]</para> - <para style="terp_default_8">VAT : [[ (o.partner_id.vat) or removeParentNode('para') ]]</para> + <para style="terp_default_8">TIN : [[ (o.partner_id.vat) or removeParentNode('para') ]]</para> </td> </tr> </blockTable> diff --git a/addons/account/wizard/account_invoice_refund.py b/addons/account/wizard/account_invoice_refund.py index df4ad3494d2..ba48dd34fe2 100644 --- a/addons/account/wizard/account_invoice_refund.py +++ b/addons/account/wizard/account_invoice_refund.py @@ -181,9 +181,9 @@ class account_invoice_refund(osv.osv_memory): invoice = invoice[0] del invoice['id'] invoice_lines = inv_line_obj.browse(cr, uid, invoice['invoice_line'], context=context) - invoice_lines = inv_obj._refund_cleanup_lines(cr, uid, invoice_lines) + invoice_lines = inv_obj._refund_cleanup_lines(cr, uid, invoice_lines, context=context) tax_lines = inv_tax_obj.browse(cr, uid, invoice['tax_line'], context=context) - tax_lines = inv_obj._refund_cleanup_lines(cr, uid, tax_lines) + tax_lines = inv_obj._refund_cleanup_lines(cr, uid, tax_lines, context=context) invoice.update({ 'type': inv.type, 'date_invoice': date, diff --git a/addons/account_analytic_analysis/account_analytic_analysis.py b/addons/account_analytic_analysis/account_analytic_analysis.py index 0a56c80766b..33ab3be209c 100644 --- a/addons/account_analytic_analysis/account_analytic_analysis.py +++ b/addons/account_analytic_analysis/account_analytic_analysis.py @@ -352,11 +352,10 @@ class account_analytic_account(osv.osv): res[account.id] = 0.0 sale_ids = sale_obj.search(cr, uid, [('project_id','=', account.id), ('state', '=', 'manual')], context=context) for sale in sale_obj.browse(cr, uid, sale_ids, context=context): - if not sale.invoiced: - res[account.id] += sale.amount_untaxed - for invoice in sale.invoice_ids: - if invoice.state not in ('draft', 'cancel'): - res[account.id] -= invoice.amount_untaxed + res[account.id] += sale.amount_untaxed + for invoice in sale.invoice_ids: + if invoice.state != 'cancel': + res[account.id] -= invoice.amount_untaxed return res def _timesheet_ca_invoiced_calc(self, cr, uid, ids, name, arg, context=None): diff --git a/addons/account_analytic_analysis/account_analytic_analysis_view.xml b/addons/account_analytic_analysis/account_analytic_analysis_view.xml index 6f670b2c6b9..97a4bb8fac2 100644 --- a/addons/account_analytic_analysis/account_analytic_analysis_view.xml +++ b/addons/account_analytic_analysis/account_analytic_analysis_view.xml @@ -267,7 +267,7 @@ </field> </record> <menuitem id="base.menu_sales" name="Sales" parent="base.menu_base_partner" sequence="1"/> - <menuitem action="action_account_analytic_overdue_all" id="menu_action_account_analytic_overdue_all" sequence="7" parent="base.menu_sales"/> + <menuitem action="action_account_analytic_overdue_all" id="menu_action_account_analytic_overdue_all" sequence="8" parent="base.menu_sales"/> <!-- Action Sales/Invoicing/Time and Material to Invoice --> <record id="action_hr_tree_invoiced_all" model="ir.actions.act_window"> diff --git a/addons/account_bank_statement_extensions/i18n/cs.po b/addons/account_bank_statement_extensions/i18n/cs.po new file mode 100644 index 00000000000..4eef2acf03b --- /dev/null +++ b/addons/account_bank_statement_extensions/i18n/cs.po @@ -0,0 +1,357 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-03-31 16:42+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-04-01 05:06+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: account_bank_statement_extensions +#: help:account.bank.statement.line.global,name:0 +msgid "Originator to Beneficiary Information" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +#: selection:account.bank.statement.line,state:0 +msgid "Confirmed" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement:0 +#: view:account.bank.statement.line:0 +msgid "Glob. Id" +msgstr "" + +#. module: account_bank_statement_extensions +#: selection:account.bank.statement.line.global,type:0 +msgid "CODA" +msgstr "" + +#. module: account_bank_statement_extensions +#: field:account.bank.statement.line.global,parent_id:0 +msgid "Parent Code" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +msgid "Debit" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:cancel.statement.line:0 +#: model:ir.actions.act_window,name:account_bank_statement_extensions.action_cancel_statement_line +#: model:ir.model,name:account_bank_statement_extensions.model_cancel_statement_line +msgid "Cancel selected statement lines" +msgstr "" + +#. module: account_bank_statement_extensions +#: field:account.bank.statement.line,val_date:0 +msgid "Value Date" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line:0 +msgid "Group By..." +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 +#: field:account.bank.statement.line,state:0 +msgid "Status" +msgstr "" + +#. module: account_bank_statement_extensions +#: code:addons/account_bank_statement_extensions/account_bank_statement.py:129 +#, python-format +msgid "" +"Delete operation not allowed. Please go to the associated bank " +"statement in order to delete and/or modify bank statement line." +msgstr "" + +#. module: account_bank_statement_extensions +#: view:confirm.statement.line:0 +msgid "or" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:confirm.statement.line:0 +msgid "Confirm Lines" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line.global:0 +msgid "Transactions" +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 +#: 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 +#: 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 +#: 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 +#: field:account.bank.statement.line.global,name:0 +msgid "OBI" +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 "Bank Transaction" +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:account.bank.statement.line:0 +msgid "Search Bank Transactions" +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 +#: 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 +#: model:ir.model,name:account_bank_statement_extensions.model_res_partner_bank +msgid "Bank Accounts" +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 +#: code:addons/account_bank_statement_extensions/account_bank_statement.py:129 +#, python-format +msgid "Warning!" +msgstr "" + +#. module: account_bank_statement_extensions +#: view:account.bank.statement.line.global:0 +msgid "Child Batch Payments" +msgstr "" + +#. module: account_bank_statement_extensions +#: 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/hu.po b/addons/account_cancel/i18n/hu.po index 6b63bb37bb2..bab8304030f 100644 --- a/addons/account_cancel/i18n/hu.po +++ b/addons/account_cancel/i18n/hu.po @@ -7,19 +7,19 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-21 17:05+0000\n" -"PO-Revision-Date: 2011-01-30 16:46+0000\n" -"Last-Translator: Krisztian Eyssen <krisz@eyssen.hu>\n" +"PO-Revision-Date: 2013-04-04 13:17+0000\n" +"Last-Translator: krnkris <Unknown>\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: 2013-03-16 05:42+0000\n" -"X-Generator: Launchpad (build 16532)\n" +"X-Launchpad-Export-Date: 2013-04-05 05:37+0000\n" +"X-Generator: Launchpad (build 16550)\n" #. module: account_cancel #: view:account.invoice:0 msgid "Cancel" -msgstr "" +msgstr "Sztornó" #~ msgid "Account Cancel" #~ msgstr "Érvénytelenítés" diff --git a/addons/account_followup/i18n/hu.po b/addons/account_followup/i18n/hu.po index a8fc4f8963c..e69bb7b38c0 100644 --- a/addons/account_followup/i18n/hu.po +++ b/addons/account_followup/i18n/hu.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-12-21 17:05+0000\n" -"PO-Revision-Date: 2011-11-11 15:21+0000\n" -"Last-Translator: Krisztian Eyssen <krisz@eyssen.hu>\n" +"PO-Revision-Date: 2013-04-04 13:15+0000\n" +"Last-Translator: krnkris <Unknown>\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: 2013-03-16 05:11+0000\n" -"X-Generator: Launchpad (build 16532)\n" +"X-Launchpad-Export-Date: 2013-04-05 05:37+0000\n" +"X-Generator: Launchpad (build 16550)\n" #. module: account_followup #: model:email.template,subject:account_followup.email_template_account_followup_default @@ -22,12 +22,12 @@ msgstr "" #: model:email.template,subject:account_followup.email_template_account_followup_level1 #: model:email.template,subject:account_followup.email_template_account_followup_level2 msgid "${user.company_id.name} Payment Reminder" -msgstr "" +msgstr "${user.company_id.name} Fizetési felszólítás" #. module: account_followup #: help:res.partner,latest_followup_level_id:0 msgid "The maximum follow-up level" -msgstr "" +msgstr "Fizetési-emlékeztető szint maximuma" #. module: account_followup #: view:account_followup.stat:0 @@ -43,33 +43,33 @@ msgstr "Fizetési emlékeztető" #. module: account_followup #: view:account_followup.followup.line:0 msgid "%(date)s" -msgstr "" +msgstr "%(date)s" #. module: account_followup #: field:res.partner,payment_next_action_date:0 msgid "Next Action Date" -msgstr "" +msgstr "Következő művelet időpontja" #. module: account_followup #: view:account_followup.followup.line:0 #: field:account_followup.followup.line,manual_action:0 msgid "Manual Action" -msgstr "" +msgstr "Kézi művelet" #. module: account_followup #: field:account_followup.sending.results,needprinting:0 msgid "Needs Printing" -msgstr "" +msgstr "Nyomtatás szükséges" #. module: account_followup #: view:res.partner:0 msgid "⇾ Mark as Done" -msgstr "" +msgstr "⇾ Jelölje elvégzettnek" #. module: account_followup #: field:account_followup.followup.line,manual_action_note:0 msgid "Action To Do" -msgstr "" +msgstr "Elvégzendő művelet" #. module: account_followup #: field:account_followup.followup,company_id:0 @@ -94,34 +94,34 @@ msgstr "E-mail tárgya" #. module: account_followup #: view:account_followup.followup.line:0 msgid "%(user_signature)s" -msgstr "" +msgstr "%(user_signature)s" #. module: account_followup #: view:account_followup.followup.line:0 msgid "days overdue, do the following actions:" -msgstr "" +msgstr "a határidő napján, a következő műveleteket hajtsa végre:" #. module: account_followup #: view:account_followup.followup.line:0 msgid "Follow-up Steps" -msgstr "" +msgstr "Fizetési-emlékezetető lépései" #. module: account_followup #: field:account_followup.print,email_body:0 msgid "Email Body" -msgstr "" +msgstr "E-mail szövege" #. module: account_followup #: model:ir.actions.act_window,name:account_followup.action_account_followup_print msgid "Send Follow-Ups" -msgstr "" +msgstr "Fizetési-emlékezető küldése" #. module: account_followup #: report:account_followup.followup.print:0 #: code:addons/account_followup/account_followup.py:263 #, python-format msgid "Amount" -msgstr "" +msgstr "Összeg" #. module: account_followup #: help:res.partner,payment_next_action:0 @@ -129,11 +129,14 @@ msgid "" "This is the next action to be taken. It will automatically be set when the " "partner gets a follow-up level that requires a manual action. " msgstr "" +"Ez a következő elvégezni kívánt művelet. Ez automatikusan beállított amint " +"a partner elér egy olyan fizetési-emlékeztető szintet, ami kézi beavatkozást " +"igényel. " #. module: account_followup #: view:res.partner:0 msgid "No Responsible" -msgstr "" +msgstr "Nincs felelős" #. module: account_followup #: model:account_followup.followup.line,description:account_followup.demo_followup_line2 @@ -158,6 +161,24 @@ msgid "" "\n" "Best Regards,\n" msgstr "" +"\n" +"Tisztelt %(partner_name)s,\n" +"\n" +"Csalódottan vettük tudomásul, és ezért fizetési-emlékeztetőt vagyunk " +"kénytelenek küldeni, mivel a számlája már régebben esedékessé vált.\n" +"\n" +"Fontos, hogy azonnal fizessenek, egyéb esetben kénytelenek vagyunk elbírálni " +"a számlájuk lezárását, ami azzal jár, hogy nem leszünk képesek időben " +"szállítani az Önök vállalakozásának (termékeket/szolgáltatásokat).\n" +"Kérjük Önöket a fizetés 8 napon belüli pontos teljesítésére.\n" +"\n" +"Ha a fizetéssel kapcsolatban probléma merült fel, amit mi nem vettünk " +"figyelembe, akkor kérjük vegyék fel a könyvelési csoportunkkal a " +"kapcsolatot, hogy elháríthassuk azt amilyen gyorsan csak lehet.\n" +"\n" +"A lejárt számlák részleteit lentebb találják.\n" +"\n" +"Üdvözlettel,\n" #. module: account_followup #: model:email.template,body_html:account_followup.email_template_account_followup_level0 @@ -195,6 +216,39 @@ msgid "" "</div>\n" " " msgstr "" +"\n" +"<div style=\"font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-" +"serif; font-size: 12px; color: rgb(34, 34, 34); background-color: rgb(255, " +"255, 255); \">\n" +"\n" +" <p>Tisztelt ${object.name},</p>\n" +" <p>\n" +" Ha időközben kiegyenlítésre került, vagy a mi hibánkból adódóan téves, " +"akkor tárgytalan, \n" +"de adataink szerint a következő tétel kifizetés nélkül maradt. \n" +"Kérjük Önöket a fizetés 8 napon belüli pontos teljesítésére.\n" +"\n" +"Ha a levél elküldése előtt a fizetés már megtörtént akkor kérjük tekintsék " +"ezt tárgytalannak. Kérjük vegyék fel a kapcsolatot könyvelési " +"csoportunkkal. \n" +"\n" +" </p>\n" +"<br/>\n" +"Üdvözlettel,\n" +"<br/>\n" +" <br/>\n" +"${user.name}\n" +"\n" +"<br/>\n" +"<br/>\n" +"\n" +"\n" +"${object.get_followup_table_html() | safe}\n" +"\n" +" <br/>\n" +"\n" +"</div>\n" +" " #. module: account_followup #: view:account_followup.stat.by.partner:0 @@ -209,17 +263,17 @@ msgstr "Tartozik összesen" #. module: account_followup #: field:res.partner,payment_next_action:0 msgid "Next Action" -msgstr "" +msgstr "Következő művelet" #. module: account_followup #: view:account_followup.followup.line:0 msgid ": Partner Name" -msgstr "" +msgstr ": Partner neve" #. module: account_followup #: field:account_followup.followup.line,manual_action_responsible_id:0 msgid "Assign a Responsible" -msgstr "" +msgstr "Jelöljön ki egy felelőst" #. module: account_followup #: view:account_followup.followup:0 @@ -255,6 +309,16 @@ msgid "" " same customer, the actions of the most \n" " overdue invoice will be executed." msgstr "" +"Egy vevő kifizetetlen számlájának emlékeztetésére,\n" +" meghatározhat különböző műveleteket a vevő késedel-\n" +" métől függően. Ezek a műveletek fizetési-emlékeztető " +"szintekbe\n" +" csoportosítottak, melyek a számla fizetési határidő " +"dátumától\n" +" számított bizonyos napokon lesznek kapcsolva.\n" +" Ha több lejárt számlája is van ugyanannak a \n" +" vevőnek, akkor a leghosszabb nappal lejárt művelet \n" +" lesz elvégezve." #. module: account_followup #: report:account_followup.followup.print:0 @@ -269,7 +333,7 @@ msgstr "Partnerek" #. module: account_followup #: sql_constraint:account_followup.followup:0 msgid "Only one follow-up per company is allowed" -msgstr "" +msgstr "Vállalatonként csak egy fizetési-emlékeztető engedélyezett" #. module: account_followup #: code:addons/account_followup/wizard/account_followup_print.py:254 @@ -280,12 +344,12 @@ msgstr "Fizetési emlékeztető" #. module: account_followup #: help:account_followup.followup.line,send_letter:0 msgid "When processing, it will print a letter" -msgstr "" +msgstr "Ha el lesz végeve, akkor levelet fog nyomtatni" #. module: account_followup #: field:res.partner,payment_earliest_due_date:0 msgid "Worst Due Date" -msgstr "" +msgstr "Legroszabb leghoszabb lejárati idő" #. module: account_followup #: view:account_followup.stat:0 @@ -295,17 +359,17 @@ msgstr "Nem peresített" #. module: account_followup #: view:account_followup.print:0 msgid "Send emails and generate letters" -msgstr "" +msgstr "Küldjön e-mail-t és hozzon létre levelet" #. module: account_followup #: model:ir.actions.act_window,name:account_followup.action_customer_followup msgid "Manual Follow-Ups" -msgstr "" +msgstr "Kézi fizetési-emlékeztető" #. module: account_followup #: view:account_followup.followup.line:0 msgid "%(partner_name)s" -msgstr "" +msgstr "%(partner_name)s" #. module: account_followup #: model:email.template,body_html:account_followup.email_template_account_followup_level1 @@ -347,6 +411,40 @@ msgid "" "</div>\n" " " msgstr "" +"\n" +"<div style=\"font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-" +"serif; font-size: 12px; color: rgb(34, 34, 34); background-color: rgb(255, " +"255, 255); \">\n" +" \n" +" <p>Dear ${object.name},</p>\n" +" <p>\n" +" Csalódottan vettük tudomásul, és ezért fizetési-emlékeztetőt vagyunk " +"kénytelenek küldeni, mivel a számlája már régebben esedékessé vált.Fontos, " +"hogy azonnal fizessenek, egyéb esetben kénytelenek vagyunk elbírálni a " +"számlájuk lezárását, ami azzal jár, hogy nem leszünk képesek időben " +"szállítani az Önök vállalakozásának (termékeket/szolgáltatásokat).\n" +"Kérjük Önöket a fizetés 8 napon belüli pontos teljesítésére.\n" +"Ha a fizetéssel kapcsolatban probléma merült fel, amit mi nem vettünk " +"figyelembe, akkor kérjük vegyék fel a könyvelési csoportunkkal a " +"kapcsolatot, hogy elháríthassuk azt amilyen gyorsan csak lehet.\n" +"A lejárt számlák részleteit lentebb találják.\n" +" </p>\n" +"<br/>\n" +"Üdvözlettel,\n" +" \n" +"<br/>\n" +"<br/>\n" +"${user.name}\n" +" \n" +"<br/>\n" +"<br/>\n" +"\n" +"${object.get_followup_table_html() | safe}\n" +"\n" +" <br/>\n" +"\n" +"</div>\n" +" " #. module: account_followup #: field:account_followup.stat,debit:0 @@ -356,49 +454,49 @@ msgstr "Tartozik" #. module: account_followup #: model:ir.model,name:account_followup.model_account_followup_stat msgid "Follow-up Statistics" -msgstr "" +msgstr "Fizetési-emlékeztető statisztikák" #. module: account_followup #: view:res.partner:0 msgid "Send Overdue Email" -msgstr "" +msgstr "Lejárt dátumú fizetésről e-mail emlékeztető küldése" #. module: account_followup #: model:ir.model,name:account_followup.model_account_followup_followup_line msgid "Follow-up Criteria" -msgstr "" +msgstr "Fizetési-emlékeztető kritériom" #. module: account_followup #: help:account_followup.followup.line,sequence:0 msgid "Gives the sequence order when displaying a list of follow-up lines." -msgstr "Megadja a fizetési emlékeztető sorok listázási sorrendjét." +msgstr "Megadja a fizetési-emlékeztető sorok listázási sorrendjét." #. module: account_followup #: code:addons/account_followup/wizard/account_followup_print.py:166 #, python-format msgid " will be sent" -msgstr "" +msgstr " el lesz küldve" #. module: account_followup #: view:account_followup.followup.line:0 msgid ": User's Company Name" -msgstr "" +msgstr ": Felhasználó vállalata neve" #. module: account_followup #: view:account_followup.followup.line:0 #: field:account_followup.followup.line,send_letter:0 msgid "Send a Letter" -msgstr "" +msgstr "Levél küldése" #. module: account_followup #: model:ir.actions.act_window,name:account_followup.action_account_followup_definition_form msgid "Payment Follow-ups" -msgstr "" +msgstr "fizetési-emlékeztetők kifizetése" #. module: account_followup #: field:account_followup.followup.line,delay:0 msgid "Due Days" -msgstr "" +msgstr "Határidő túllépése napokban" #. module: account_followup #: field:account.move.line,followup_line_id:0 @@ -414,12 +512,12 @@ msgstr "Legutolsó fizetési emlékeztető" #. module: account_followup #: model:ir.ui.menu,name:account_followup.menu_manual_reconcile_followup msgid "Reconcile Invoices & Payments" -msgstr "" +msgstr "Számlák & Fizetések párosítása" #. module: account_followup #: model:ir.ui.menu,name:account_followup.account_followup_s msgid "Do Manual Follow-Ups" -msgstr "" +msgstr "Kézi fizetési-emlékeztető elvégzése" #. module: account_followup #: report:account_followup.followup.print:0 @@ -429,17 +527,17 @@ msgstr "P." #. module: account_followup #: field:account_followup.print,email_conf:0 msgid "Send Email Confirmation" -msgstr "" +msgstr "E-mail megerősítés küldése" #. module: account_followup #: view:account_followup.stat:0 msgid "Follow-up Entries with period in current year" -msgstr "" +msgstr "Fizetési-emlékeztető bejegyzések a tárgyi évben" #. module: account_followup #: field:account_followup.stat.by.partner,date_followup:0 msgid "Latest follow-up" -msgstr "" +msgstr "Legutóbbi fizetési-emlékeztető" #. module: account_followup #: field:account_followup.print,partner_lang:0 @@ -450,12 +548,12 @@ msgstr "E-mail küldése a partner nyelvén" #: code:addons/account_followup/wizard/account_followup_print.py:169 #, python-format msgid " email(s) sent" -msgstr "" +msgstr " e-mail(ek) elküldve" #. module: account_followup #: model:ir.model,name:account_followup.model_account_followup_print msgid "Print Follow-up & Send Mail to Customers" -msgstr "" +msgstr "Fizetési-emlékeztető nyomtatása & E-mail küldése a vevők részére" #. module: account_followup #: field:account_followup.followup.line,description:0 @@ -466,12 +564,12 @@ msgstr "Kinyomtatott üzenet" #: code:addons/account_followup/wizard/account_followup_print.py:155 #, python-format msgid "Anybody" -msgstr "" +msgstr "Bárki" #. module: account_followup #: help:account_followup.followup.line,send_email:0 msgid "When processing, it will send an email" -msgstr "" +msgstr "végrehajtáskor egy e-mailt fog küldeni" #. module: account_followup #: view:account_followup.stat.by.partner:0 @@ -481,7 +579,7 @@ msgstr "Emlékeztetendő partner" #. module: account_followup #: view:res.partner:0 msgid "Print Overdue Payments" -msgstr "" +msgstr "Határidőn túli fizetések nyomtatása" #. module: account_followup #: field:account_followup.followup.line,followup_id:0 @@ -494,11 +592,12 @@ msgstr "Fizetési emlékeztetők" #, python-format msgid "Email not sent because of email address of partner not filled in" msgstr "" +"E-mail nem lett elküldve, mert a partner e-mail címe nem lett kitöltve" #. module: account_followup #: model:ir.model,name:account_followup.model_account_followup_followup msgid "Account Follow-up" -msgstr "" +msgstr "Fizetési-emlékeztető könyvelés" #. module: account_followup #: help:res.partner,payment_responsible_id:0 @@ -506,11 +605,13 @@ msgid "" "Optionally you can assign a user to this field, which will make him " "responsible for the action." msgstr "" +"Választhat felhasználót is erre a mezőre, ami felelőssé teszi erre a " +"műveletre." #. module: account_followup #: model:ir.model,name:account_followup.model_account_followup_sending_results msgid "Results from the sending of the different letters and emails" -msgstr "" +msgstr "A különböző levelek és e-mailek küldéséből származó eredmény" #. module: account_followup #: constraint:account_followup.followup.line:0 @@ -518,27 +619,29 @@ msgid "" "Your description is invalid, use the right legend or %% if you want to use " "the percent character." msgstr "" +"A leírása érvénytelen, használja a jobb oldali feliratot vagy %% ha akarja a " +"százalék karaktert használja." #. module: account_followup #: code:addons/account_followup/wizard/account_followup_print.py:172 #, python-format msgid " manual action(s) assigned:" -msgstr "" +msgstr " kézi művelet(ek) hozzárendelve:" #. module: account_followup #: view:res.partner:0 msgid "Search Partner" -msgstr "" +msgstr "Partner keresés" #. module: account_followup #: model:ir.ui.menu,name:account_followup.account_followup_print_menu msgid "Send Letters and Emails" -msgstr "" +msgstr "Levelek és E-mailek küldése" #. module: account_followup #: view:account_followup.followup:0 msgid "Search Follow-up" -msgstr "" +msgstr "Fizetési-emlékeztető keresése" #. module: account_followup #: view:res.partner:0 @@ -549,12 +652,12 @@ msgstr "" #: code:addons/account_followup/wizard/account_followup_print.py:237 #, python-format msgid "Send Letters and Emails: Actions Summary" -msgstr "" +msgstr "Levelek és E-mailek küldése: Műveletek összegzése" #. module: account_followup #: view:account_followup.print:0 msgid "or" -msgstr "" +msgstr "vagy" #. module: account_followup #: view:res.partner:0 @@ -562,21 +665,23 @@ msgid "" "If not specified by the latest follow-up level, it will send from the " "default email template" msgstr "" +"Ha nincs meghatározva a legutóbbi fizetési-emlékeztető szinttel, akkor az " +"alapértelmezett e-mail sablonnal lesz elküldve" #. module: account_followup #: sql_constraint:account_followup.followup.line:0 msgid "Days of the follow-up levels must be different" -msgstr "" +msgstr "A fizetési-emlékeztető szintek napjainak különbözőeknek kell lenniük" #. module: account_followup #: view:res.partner:0 msgid "Click to mark the action as done." -msgstr "" +msgstr "Kattintson a művelet elvégzésének jelülésére." #. module: account_followup #: model:ir.ui.menu,name:account_followup.menu_action_followup_stat_follow msgid "Follow-Ups Analysis" -msgstr "" +msgstr "Fizetési-emlékeztető elemzések" #. module: account_followup #: help:res.partner,payment_next_action_date:0 @@ -586,11 +691,16 @@ msgid "" "action. Can be practical to set manually e.g. to see if he keeps his " "promises." msgstr "" +"Ez az amikor kézi fizetési-emlékeztető szükséges. A mai nap lesz beállítva, " +"ha a partner egy olyan fizetési-emlékeztető szintet kap ami kézi " +"beavatkozást igényel. Praktikus lehet kézire állítani pl. megfigyelni, hogy " +"betartja-e a szavát." #. module: account_followup #: view:res.partner:0 msgid "Print overdue payments report independent of follow-up line" msgstr "" +"fizetési-emlékeztető soroktól független lejárt fizetési tételek nyomtatása" #. module: account_followup #: help:account_followup.print,date:0 @@ -609,7 +719,7 @@ msgstr "Fizetési emlékeztető küldés időpontja" #: view:res.partner:0 #: field:res.partner,payment_responsible_id:0 msgid "Follow-up Responsible" -msgstr "" +msgstr "Fizetési-emlékeztető felelőse" #. module: account_followup #: model:email.template,body_html:account_followup.email_template_account_followup_level2 @@ -646,6 +756,37 @@ msgid "" "</div>\n" " " msgstr "" +"\n" +"<div style=\"font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-" +"serif; font-size: 12px; color: rgb(34, 34, 34); background-color: rgb(255, " +"255, 255); \">\n" +" \n" +" <p>Dear ${object.name},</p>\n" +" <p>\n" +" A többszörös fizetési-emlékeztető ellenére, még mindig nem történt meg a " +"számla kiegyenlítése.\n" +"Ha nem történik meg a kiegyenlítés 8 napon belül, törvényes úton vagyunk " +"kénytelenek az adósságot behajtani, minden további felszólítás nélkül.\n" +"Úgy gondoljuk, hogy ez nem lesz szükséges lépés a lenti részletekkel " +"kapcsolatban.\n" +"Az üggyel kapcsolatban felmerült kérdésekben, kérjük vegyék fel a " +"kapcsolatot a könyvelési csoportunkkal.\n" +"</p>\n" +"<br/>\n" +"Tisztelttel,\n" +"<br/>\n" +"<br/>\n" +"${user.name}\n" +"<br/>\n" +"<br/>\n" +"\n" +"\n" +"${object.get_followup_table_html() | safe}\n" +"\n" +" <br/>\n" +"\n" +"</div>\n" +" " #. module: account_followup #: report:account_followup.followup.print:0 @@ -655,7 +796,7 @@ msgstr "Bizonylat: vevő folyószámla kivonat" #. module: account_followup #: model:ir.ui.menu,name:account_followup.account_followup_menu msgid "Follow-up Levels" -msgstr "" +msgstr "Fizetési-emlékeztető szintek" #. module: account_followup #: model:account_followup.followup.line,description:account_followup.demo_followup_line4 @@ -678,40 +819,54 @@ msgid "" "Best Regards,\n" " " msgstr "" +"\n" +"Tisztelt %(partner_name)s,\n" +"\n" +"A többszörös fizetési-emlékeztető ellenére, még mindig nem történt meg a " +"számla kiegyenlítése.\n" +"Ha nem történik meg a kiegyenlítés 8 napon belül, törvényes úton vagyunk " +"kénytelenek az adósságot behajtani, minden további felszólítás nélkül.\n" +"Úgy gondoljuk, hogy ez nem lesz szükséges lépés a lenti részletekkel " +"kapcsolatban.\n" +"Az üggyel kapcsolatban felmerült kérdésekben, kérjük vegyék fel a " +"kapcsolatot a könyvelési csoportunkkal.\n" +"\n" +"Üdvözlettel,\n" +" " #. module: account_followup #: field:res.partner,payment_amount_due:0 msgid "Amount Due" -msgstr "" +msgstr "Esedékes összeg" #. module: account_followup #: field:account.move.line,followup_date:0 msgid "Latest Follow-up" -msgstr "Legutolsó fizetési emlékeztető" +msgstr "Legutobbi fizetési emlékeztető" #. module: account_followup #: view:account_followup.sending.results:0 msgid "Download Letters" -msgstr "" +msgstr "Levelek letöltése" #. module: account_followup #: field:account_followup.print,company_id:0 #: field:res.partner,unreconciled_aml_ids:0 msgid "unknown" -msgstr "" +msgstr "ismeretlen" #. module: account_followup #: code:addons/account_followup/account_followup.py:314 #, python-format msgid "Printed overdue payments report" -msgstr "" +msgstr "Lejárt fizetési tételek jelentésének nyomtatása" #. module: account_followup #: help:account_followup.followup.line,manual_action:0 msgid "" "When processing, it will set the manual action to be taken for that " "customer. " -msgstr "" +msgstr "Végrehajtáskor, a vevőhöz a kézi műveletet fogja beállítani. " #. module: account_followup #: view:res.partner:0 @@ -721,18 +876,25 @@ msgid "" " order to exclude it from the next follow-up " "actions." msgstr "" +"Alább a vevő ügyleteinek története.\n" +" Ellenőrizheti a \"Nincs fizetési-emlékeztető\" " +"soron\n" +" a következő fizetési-emlékeztető műveletekből " +"való kizárását." #. module: account_followup #: code:addons/account_followup/wizard/account_followup_print.py:171 #, python-format msgid " email(s) should have been sent, but " -msgstr "" +msgstr " ki kellett volna küldeni az e-mail(ek)t, de " #. module: account_followup #: help:account_followup.print,test_print:0 msgid "" "Check if you want to print follow-ups without changing follow-ups level." msgstr "" +"Ellenőrizze, hogy a fizetési-emlékeztető szintek változtatása nélkül " +"szeretné a fizetési-emlékeztetők nyomtatást." #. module: account_followup #: model:ir.model,name:account_followup.model_account_move_line @@ -742,12 +904,12 @@ msgstr "Könyvelési tételsorok" #. module: account_followup #: report:account_followup.followup.print:0 msgid "Total:" -msgstr "" +msgstr "Összesen:" #. module: account_followup #: field:account_followup.followup.line,email_template_id:0 msgid "Email Template" -msgstr "" +msgstr "E-mail sablon" #. module: account_followup #: field:account_followup.print,summary:0 @@ -758,7 +920,7 @@ msgstr "Összegzés" #: view:account_followup.followup.line:0 #: field:account_followup.followup.line,send_email:0 msgid "Send an Email" -msgstr "" +msgstr "Egy E-amil küldése" #. module: account_followup #: field:account_followup.stat,credit:0 @@ -768,7 +930,7 @@ msgstr "Követel" #. module: account_followup #: field:res.partner,payment_amount_overdue:0 msgid "Amount Overdue" -msgstr "" +msgstr "Lejárt összeg" #. module: account_followup #: help:res.partner,latest_followup_level_id_without_lit:0 @@ -776,12 +938,14 @@ msgid "" "The maximum follow-up level without taking into account the account move " "lines with litigation" msgstr "" +"A maximum fizetési-emlékeztető szint ami megtehető anélkül, hogy az ne " +"kerüljön peres eléjárásra" #. module: account_followup #: view:account_followup.stat:0 #: field:res.partner,latest_followup_date:0 msgid "Latest Follow-up Date" -msgstr "" +msgstr "Legutóbbi fizetési-emlékeztető dátuma." #. module: account_followup #: model:email.template,body_html:account_followup.email_template_account_followup_default @@ -814,6 +978,34 @@ msgid "" "</div>\n" " " msgstr "" +"\n" +"<div style=\"font-family: 'Lucica Grande', Ubuntu, Arial, Verdana, sans-" +"serif; font-size: 12px; color: rgb(34, 34, 34); background-color: rgb(255, " +"255, 255); \">\n" +" \n" +" <p>Tisztelt ${object.name},</p>\n" +" <p>\n" +" Ha időközben kiegyenlítésre került, vagy a mi hibánkból adódóan téves, " +"akkor tárgytalan, \n" +"de adataink szerint a következő tétel kifizetés nélkül maradt. \n" +"Kérjük Önöket a fizetés 8 napon belüli pontos teljesítésére.\n" +"Ha a levél elküldése előtt a fizetés már megtörtént akkor kérjük tekintsék " +"ezt tárgytalannak. Kérjük vegyék fel a kapcsolatot könyvelési " +"csoportunkkal. \n" +" </p>\n" +"<br/>\n" +"Üdvözlettel,\n" +"<br/>\n" +"<br/>\n" +"${user.name}\n" +"<br/>\n" +"<br/>\n" +"\n" +"${object.get_followup_table_html() | safe}\n" +"\n" +"<br/>\n" +"</div>\n" +" " #. module: account_followup #: field:account.move.line,result:0 @@ -826,17 +1018,17 @@ msgstr "Egyenleg" #. module: account_followup #: help:res.partner,payment_note:0 msgid "Payment Note" -msgstr "" +msgstr "Megjegyzés a fizetéshez" #. module: account_followup #: view:res.partner:0 msgid "My Follow-ups" -msgstr "" +msgstr "Fizetési-emlékeztetőim" #. module: account_followup #: view:account_followup.followup.line:0 msgid "%(company_name)s" -msgstr "" +msgstr "%(company_name)s" #. module: account_followup #: model:account_followup.followup.line,description:account_followup.demo_followup_line1 @@ -854,6 +1046,18 @@ msgid "" "\n" "Best Regards,\n" msgstr "" +"\n" +"Dear %(partner_name)s,\n" +"\n" +" Ha időközben kiegyenlítésre került, vagy a mi hibánkból adódóan téves, " +"akkor tárgytalan, de adataink szerint a következő tétel kifizetés nélkül " +"maradt. Kérjük Önöket a fizetés 8 napon belüli pontos teljesítésére.\n" +"\n" +"Ha a levél elküldése előtt a fizetés már megtörtént akkor kérjük tekintsék " +"ezt tárgytalannak. Kérjük vegyék fel a kapcsolatot könyvelési " +"csoportunkkal. \n" +"\n" +"Üdvözlettel,\n" #. module: account_followup #: field:account_followup.stat,date_move_last:0 @@ -870,12 +1074,12 @@ msgstr "Időszak" #: code:addons/account_followup/wizard/account_followup_print.py:228 #, python-format msgid "%s partners have no credits and as such the action is cleared" -msgstr "" +msgstr "%s a partnernek nincs hitele azért a művelet törölve lett" #. module: account_followup #: model:ir.actions.report.xml,name:account_followup.account_followup_followup_report msgid "Follow-up Report" -msgstr "" +msgstr "Fizetési-emlékeztető jelentés" #. module: account_followup #: view:res.partner:0 @@ -883,6 +1087,8 @@ msgid "" ", the latest payment follow-up\n" " was:" msgstr "" +", a legutóbbi fizetési-emlékeztető kifizetés\n" +" ez volt:" #. module: account_followup #: view:account_followup.print:0 @@ -892,7 +1098,7 @@ msgstr "Mégse" #. module: account_followup #: view:account_followup.sending.results:0 msgid "Close" -msgstr "" +msgstr "Lezár" #. module: account_followup #: view:account_followup.stat:0 @@ -908,23 +1114,23 @@ msgstr "Maximális fizetési emlékeztető szint" #: code:addons/account_followup/wizard/account_followup_print.py:171 #, python-format msgid " had unknown email address(es)" -msgstr "" +msgstr " ismeretlen e-mail címe(i) van(nak)" #. module: account_followup #: view:res.partner:0 msgid "Responsible" -msgstr "" +msgstr "Felelős" #. module: account_followup #: model:ir.ui.menu,name:account_followup.menu_finance_followup #: view:res.partner:0 msgid "Payment Follow-up" -msgstr "" +msgstr "Fizetési-emlékeztető kifizetés" #. module: account_followup #: view:account_followup.followup.line:0 msgid ": Current Date" -msgstr "" +msgstr ": Jelenlegi dátum" #. module: account_followup #: view:account_followup.print:0 @@ -933,16 +1139,20 @@ msgid "" " set the manual actions per customer, according to " "the follow-up levels defined." msgstr "" +"Ez a művelet fizetési-emlékeztető e-mail küldéseket indít, levelet nyomtat " +"és\n" +" beállítja a vevőnkénti kézi műveletet, a fizetési-" +"emlékeztető szintek beállításának megfelelően." #. module: account_followup #: field:account_followup.followup.line,name:0 msgid "Follow-Up Action" -msgstr "" +msgstr "Fizetési-emlékeztető művelet" #. module: account_followup #: view:account_followup.stat:0 msgid "Including journal entries marked as a litigation" -msgstr "" +msgstr "Beleértve a peres megjelölésű jelentés bejegyzéseket" #. module: account_followup #: report:account_followup.followup.print:0 @@ -955,7 +1165,7 @@ msgstr "Megjegyzés" #. module: account_followup #: view:account_followup.sending.results:0 msgid "Summary of actions" -msgstr "" +msgstr "Műveletek összegzése" #. module: account_followup #: report:account_followup.followup.print:0 @@ -965,7 +1175,7 @@ msgstr "Hiv." #. module: account_followup #: view:account_followup.followup.line:0 msgid "After" -msgstr "" +msgstr "Utána" #. module: account_followup #: view:account_followup.stat:0 @@ -975,7 +1185,7 @@ msgstr "Tárgyév" #. module: account_followup #: field:res.partner,latest_followup_level_id_without_lit:0 msgid "Latest Follow-up Level without litigation" -msgstr "" +msgstr "Legitóbbi per nélküli fizetési-emlékeztetőt szint" #. module: account_followup #: model:ir.actions.act_window,help:account_followup.action_account_manual_reconcile_receivable @@ -985,6 +1195,10 @@ msgid "" " </p>\n" " " msgstr "" +"<p>\n" +" Nem talált jelentés tartalmat.\n" +" </p>\n" +" " #. module: account_followup #: view:account.move.line:0 @@ -994,7 +1208,7 @@ msgstr "Partner tételek" #. module: account_followup #: view:account_followup.stat:0 msgid "Follow-up lines" -msgstr "" +msgstr "Fizetési emlékeztető sorok" #. module: account_followup #: model:account_followup.followup.line,description:account_followup.demo_followup_line3 @@ -1015,6 +1229,21 @@ msgid "" "\n" "Best Regards,\n" msgstr "" +"\n" +"Tisztelt %(partner_name)s,\n" +"\n" +" A többszörös fizetési-emlékeztető ellenére, még mindig nem történt meg a " +"számla kiegyenlítése.\n" +"Ha nem történik meg a kiegyenlítés 8 napon belül, törvényes úton vagyunk " +"kénytelenek az adósságot behajtani, minden további felszólítás nélkül.\n" +"\n" +"Úgy gondoljuk, hogy ez nem lesz szükséges lépés a lenti részletekkel " +"kapcsolatban.\n" +"\n" +"Az üggyel kapcsolatban felmerült kérdésekben, kérjük vegyék fel a " +"kapcsolatot a könyvelési csoportunkkal.\n" +"\n" +"Üdvözlettel,\n" #. module: account_followup #: help:account_followup.print,partner_lang:0 @@ -1036,6 +1265,13 @@ msgid "" "installed\n" " using to top right icon." msgstr "" +"Írja ide ennek a levélnek a levél bemutatását,\n" +" a fizetési-emlékeztető szint szerint. " +"Használhatóak a\n" +" következő kulcsszavak a szövegben. Meg kell " +"lennie\n" +" az összes jobb felső ikon szerinti nyelv " +"fordításban is!" #. module: account_followup #: view:account_followup.stat:0 @@ -1051,7 +1287,7 @@ msgstr "Név" #. module: account_followup #: field:res.partner,latest_followup_level_id:0 msgid "Latest Follow-up Level" -msgstr "" +msgstr "Legitóbbi fizetési-emlékeztető szint" #. module: account_followup #: field:account_followup.stat,date_move:0 @@ -1062,23 +1298,23 @@ msgstr "Első tétel" #. module: account_followup #: model:ir.model,name:account_followup.model_account_followup_stat_by_partner msgid "Follow-up Statistics by Partner" -msgstr "" +msgstr "Fizetési-emlékeztető partnerenkénti statisztika" #. module: account_followup #: code:addons/account_followup/wizard/account_followup_print.py:172 #, python-format msgid " letter(s) in report" -msgstr "" +msgstr " level(ek) a jelentésben" #. module: account_followup #: view:res.partner:0 msgid "Partners with Overdue Credits" -msgstr "" +msgstr "Lejárt fizetési hitelekkel rendelkező partnerek" #. module: account_followup #: view:res.partner:0 msgid "Customer Followup" -msgstr "" +msgstr "Vevői fizetési-emlékeztető" #. module: account_followup #: model:ir.actions.act_window,help:account_followup.action_account_followup_definition_form @@ -1094,22 +1330,33 @@ msgid "" " </p>\n" " " msgstr "" +"<p class=\"oe_view_nocontent_create\">\n" +" Kattintson a fizetési-emlékeztető szint és műveletének " +"létrehozásához.\n" +" </p><p>\n" +" Minden lépéshez, határozza meg a műveletet amit a lejárat " +"után annyi nappal el fog végezni.\n" +" Lehetséges nyomtatás és e-mail sablon használatával egy " +"üzenet eljuttatása a vevő\n" +" részére.\n" +" </p>\n" +" " #. module: account_followup #: code:addons/account_followup/wizard/account_followup_print.py:166 #, python-format msgid "Follow-up letter of " -msgstr "" +msgstr "Fizetési-emlékeztető levél ide " #. module: account_followup #: view:res.partner:0 msgid "The" -msgstr "" +msgstr "A" #. module: account_followup #: view:account_followup.print:0 msgid "Send follow-ups" -msgstr "" +msgstr "Fizetési-emlékeztető küldése" #. module: account_followup #: view:account.move.line:0 @@ -1124,7 +1371,7 @@ msgstr "Sorszám" #. module: account_followup #: view:res.partner:0 msgid "Follow-ups To Do" -msgstr "" +msgstr "Még végrehejtandó fizetési-emlékeztető" #. module: account_followup #: report:account_followup.followup.print:0 @@ -1143,26 +1390,30 @@ msgid "" "the reminder. Could be negative if you want to send a polite alert " "beforehand." msgstr "" +"A számla lejárati dátuma utáni napok száma, amíg várakozik a felszólítás " +"küldése előtt. Negatív is lehet, ha egy udvarias levelet szeretne küldeni a " +"lejárati dátumra vonatkozólag." #. module: account_followup #: help:res.partner,latest_followup_date:0 msgid "Latest date that the follow-up level of the partner was changed" msgstr "" +"Legutóbbi dátum amikor a vevőnek a fizetési-emlékeztető szintje változott" #. module: account_followup #: field:account_followup.print,test_print:0 msgid "Test Print" -msgstr "" +msgstr "Nyomtatás teszt" #. module: account_followup #: view:account_followup.followup.line:0 msgid ": User Name" -msgstr "" +msgstr ": Felhasználó neve" #. module: account_followup #: view:res.partner:0 msgid "Accounting" -msgstr "" +msgstr "Könyvelés" #. module: account_followup #: field:account_followup.stat,blocked:0 @@ -1172,7 +1423,7 @@ msgstr "Zárolt" #. module: account_followup #: field:res.partner,payment_note:0 msgid "Customer Payment Promise" -msgstr "" +msgstr "Vevő fizetésre vonatkozó igérete" #, python-format #~ msgid "Follwoup Summary" diff --git a/addons/account_sequence/i18n/cs.po b/addons/account_sequence/i18n/cs.po new file mode 100644 index 00000000000..480e6f5ff6b --- /dev/null +++ b/addons/account_sequence/i18n/cs.po @@ -0,0 +1,150 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-03-31 16:43+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-04-01 05:06+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: account_sequence +#: view:account.sequence.installer:0 +#: model:ir.actions.act_window,name:account_sequence.action_account_seq_installer +msgid "Account Sequence Application Configuration" +msgstr "" + +#. module: account_sequence +#: help:account.move,internal_sequence_number:0 +#: help:account.move.line,internal_sequence_number:0 +msgid "Internal Sequence Number" +msgstr "" + +#. module: account_sequence +#: help:account.sequence.installer,number_next:0 +msgid "Next number of this sequence" +msgstr "" + +#. module: account_sequence +#: field:account.sequence.installer,number_next:0 +msgid "Next Number" +msgstr "" + +#. module: account_sequence +#: field:account.sequence.installer,number_increment:0 +msgid "Increment Number" +msgstr "" + +#. module: account_sequence +#: help:account.sequence.installer,number_increment:0 +msgid "The next number of the sequence will be incremented by this number" +msgstr "" + +#. module: account_sequence +#: view:account.sequence.installer:0 +msgid "Configure Your Account Sequence Application" +msgstr "" + +#. module: account_sequence +#: view:account.sequence.installer:0 +msgid "Configure" +msgstr "" + +#. module: account_sequence +#: help:account.sequence.installer,suffix:0 +msgid "Suffix value of the record for the sequence" +msgstr "" + +#. module: account_sequence +#: field:account.sequence.installer,company_id:0 +msgid "Company" +msgstr "" + +#. module: account_sequence +#: field:account.sequence.installer,padding:0 +msgid "Number padding" +msgstr "" + +#. module: account_sequence +#: model:ir.model,name:account_sequence.model_account_move_line +msgid "Journal Items" +msgstr "" + +#. module: account_sequence +#: field:account.move,internal_sequence_number:0 +#: field:account.move.line,internal_sequence_number:0 +msgid "Internal Number" +msgstr "" + +#. module: account_sequence +#: help:account.sequence.installer,padding:0 +msgid "" +"OpenERP will automatically adds some '0' on the left of the 'Next Number' to " +"get the required padding size." +msgstr "" + +#. module: account_sequence +#: field:account.sequence.installer,name:0 +msgid "Name" +msgstr "" + +#. module: account_sequence +#: field:account.journal,internal_sequence_id:0 +msgid "Internal Sequence" +msgstr "" + +#. module: account_sequence +#: help:account.sequence.installer,prefix:0 +msgid "Prefix value of the record for the sequence" +msgstr "" + +#. module: account_sequence +#: model:ir.model,name:account_sequence.model_account_move +msgid "Account Entry" +msgstr "" + +#. module: account_sequence +#: field:account.sequence.installer,suffix:0 +msgid "Suffix" +msgstr "" + +#. module: account_sequence +#: view:account.sequence.installer:0 +msgid "title" +msgstr "" + +#. module: account_sequence +#: field:account.sequence.installer,prefix:0 +msgid "Prefix" +msgstr "" + +#. module: account_sequence +#: help:account.journal,internal_sequence_id:0 +msgid "" +"This sequence will be used to maintain the internal number for the journal " +"entries related to this journal." +msgstr "" + +#. module: account_sequence +#: model:ir.model,name:account_sequence.model_account_sequence_installer +msgid "account.sequence.installer" +msgstr "" + +#. module: account_sequence +#: model:ir.model,name:account_sequence.model_account_journal +msgid "Journal" +msgstr "" + +#. module: account_sequence +#: view:account.sequence.installer:0 +msgid "You can enhance the Account Sequence Application by installing ." +msgstr "" diff --git a/addons/account_test/i18n/cs.po b/addons/account_test/i18n/cs.po new file mode 100644 index 00000000000..82c85a734dd --- /dev/null +++ b/addons/account_test/i18n/cs.po @@ -0,0 +1,241 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-03-31 16:43+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-04-01 05:06+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: account_test +#: view:accounting.assert.test:0 +msgid "" +"Code should always set a variable named `result` with the result of your " +"test, that can be a list or\n" +"a dictionary. If `result` is an empty list, it means that the test was " +"succesful. Otherwise it will\n" +"try to translate and print what is inside `result`.\n" +"\n" +"If the result of your test is a dictionary, you can set a variable named " +"`column_order` to choose in\n" +"what order you want to print `result`'s content.\n" +"\n" +"Should you need them, you can also use the following variables into your " +"code:\n" +" * cr: cursor to the database\n" +" * uid: ID of the current user\n" +"\n" +"In any ways, the code must be legal python statements with correct " +"indentation (if needed).\n" +"\n" +"Example: \n" +" sql = '''SELECT id, name, ref, date\n" +" FROM account_move_line \n" +" WHERE account_id IN (SELECT id FROM account_account WHERE type " +"= 'view')\n" +" '''\n" +" cr.execute(sql)\n" +" result = cr.dictfetchall()" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_02 +msgid "Test 2: Opening a fiscal year" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_05 +msgid "" +"Check that reconciled invoice for Sales/Purchases has reconciled entries for " +"Payable and Receivable Accounts" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_03 +msgid "" +"Check if movement lines are balanced and have the same date and period" +msgstr "" + +#. module: account_test +#: field:accounting.assert.test,name:0 +msgid "Test Name" +msgstr "" + +#. module: account_test +#: report:account.test.assert.print:0 +msgid "Accouting tests on" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_01 +msgid "Test 1: General balance" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_06 +msgid "Check that paid/reconciled invoices are not in 'Open' state" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_05_2 +msgid "" +"Check that reconciled account moves, that define Payable and Receivable " +"accounts, are belonging to reconciled invoices" +msgstr "" + +#. module: account_test +#: view:accounting.assert.test:0 +msgid "Tests" +msgstr "" + +#. module: account_test +#: field:accounting.assert.test,desc:0 +msgid "Test Description" +msgstr "" + +#. module: account_test +#: view:accounting.assert.test:0 +msgid "Description" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_06_1 +msgid "Check that there's no move for any account with « View » account type" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_08 +msgid "Test 9 : Accounts and partners on account moves" +msgstr "" + +#. module: account_test +#: model:ir.actions.act_window,name:account_test.action_accounting_assert +#: model:ir.actions.report.xml,name:account_test.account_assert_test_report +#: model:ir.ui.menu,name:account_test.menu_action_license +msgid "Accounting Tests" +msgstr "" + +#. module: account_test +#: code:addons/account_test/report/account_test_report.py:74 +#, python-format +msgid "The test was passed successfully" +msgstr "" + +#. module: account_test +#: field:accounting.assert.test,active:0 +msgid "Active" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_06 +msgid "Test 6 : Invoices status" +msgstr "" + +#. module: account_test +#: model:ir.model,name:account_test.model_accounting_assert_test +msgid "accounting.assert.test" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_05 +msgid "" +"Test 5.1 : Payable and Receivable accountant lines of reconciled invoices" +msgstr "" + +#. module: account_test +#: field:accounting.assert.test,code_exec:0 +msgid "Python code" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_07 +msgid "" +"Check on bank statement that the Closing Balance = Starting Balance + sum of " +"statement lines" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_07 +msgid "Test 8 : Closing balance on bank statements" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_03 +msgid "Test 3: Movement lines" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_05_2 +msgid "Test 5.2 : Reconcilied invoices and Payable/Receivable accounts" +msgstr "" + +#. module: account_test +#: view:accounting.assert.test:0 +msgid "Expression" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_04 +msgid "Test 4: Totally reconciled mouvements" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_04 +msgid "Check if the totally reconciled movements are balanced" +msgstr "" + +#. module: account_test +#: field:accounting.assert.test,sequence:0 +msgid "Sequence" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_02 +msgid "" +"Check if the balance of the new opened fiscal year matches with last year's " +"balance" +msgstr "" + +#. module: account_test +#: view:accounting.assert.test:0 +msgid "Python Code" +msgstr "" + +#. module: account_test +#: model:ir.actions.act_window,help:account_test.action_accounting_assert +msgid "" +"<p class=\"oe_view_nocontent_create\">\n" +" Click to create Accounting Test.\n" +" </p>\n" +" " +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_01 +msgid "Check the balance: Debit sum = Credit sum" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_08 +msgid "Check that general accounts and partners on account moves are active" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_06_1 +msgid "Test 7: « View » account type" +msgstr "" + +#. module: account_test +#: view:accounting.assert.test:0 +msgid "Code Help" +msgstr "" diff --git a/addons/account_test/i18n/hu.po b/addons/account_test/i18n/hu.po new file mode 100644 index 00000000000..b2d8eb81feb --- /dev/null +++ b/addons/account_test/i18n/hu.po @@ -0,0 +1,241 @@ +# Hungarian translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-04-02 12:44+0000\n" +"Last-Translator: krnkris <Unknown>\n" +"Language-Team: Hungarian <hu@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-04-03 05:26+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: account_test +#: view:accounting.assert.test:0 +msgid "" +"Code should always set a variable named `result` with the result of your " +"test, that can be a list or\n" +"a dictionary. If `result` is an empty list, it means that the test was " +"succesful. Otherwise it will\n" +"try to translate and print what is inside `result`.\n" +"\n" +"If the result of your test is a dictionary, you can set a variable named " +"`column_order` to choose in\n" +"what order you want to print `result`'s content.\n" +"\n" +"Should you need them, you can also use the following variables into your " +"code:\n" +" * cr: cursor to the database\n" +" * uid: ID of the current user\n" +"\n" +"In any ways, the code must be legal python statements with correct " +"indentation (if needed).\n" +"\n" +"Example: \n" +" sql = '''SELECT id, name, ref, date\n" +" FROM account_move_line \n" +" WHERE account_id IN (SELECT id FROM account_account WHERE type " +"= 'view')\n" +" '''\n" +" cr.execute(sql)\n" +" result = cr.dictfetchall()" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_02 +msgid "Test 2: Opening a fiscal year" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_05 +msgid "" +"Check that reconciled invoice for Sales/Purchases has reconciled entries for " +"Payable and Receivable Accounts" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_03 +msgid "" +"Check if movement lines are balanced and have the same date and period" +msgstr "" + +#. module: account_test +#: field:accounting.assert.test,name:0 +msgid "Test Name" +msgstr "Teszt név" + +#. module: account_test +#: report:account.test.assert.print:0 +msgid "Accouting tests on" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_01 +msgid "Test 1: General balance" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_06 +msgid "Check that paid/reconciled invoices are not in 'Open' state" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_05_2 +msgid "" +"Check that reconciled account moves, that define Payable and Receivable " +"accounts, are belonging to reconciled invoices" +msgstr "" + +#. module: account_test +#: view:accounting.assert.test:0 +msgid "Tests" +msgstr "Tesztek" + +#. module: account_test +#: field:accounting.assert.test,desc:0 +msgid "Test Description" +msgstr "" + +#. module: account_test +#: view:accounting.assert.test:0 +msgid "Description" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_06_1 +msgid "Check that there's no move for any account with « View » account type" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_08 +msgid "Test 9 : Accounts and partners on account moves" +msgstr "" + +#. module: account_test +#: model:ir.actions.act_window,name:account_test.action_accounting_assert +#: model:ir.actions.report.xml,name:account_test.account_assert_test_report +#: model:ir.ui.menu,name:account_test.menu_action_license +msgid "Accounting Tests" +msgstr "" + +#. module: account_test +#: code:addons/account_test/report/account_test_report.py:74 +#, python-format +msgid "The test was passed successfully" +msgstr "" + +#. module: account_test +#: field:accounting.assert.test,active:0 +msgid "Active" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_06 +msgid "Test 6 : Invoices status" +msgstr "" + +#. module: account_test +#: model:ir.model,name:account_test.model_accounting_assert_test +msgid "accounting.assert.test" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_05 +msgid "" +"Test 5.1 : Payable and Receivable accountant lines of reconciled invoices" +msgstr "" + +#. module: account_test +#: field:accounting.assert.test,code_exec:0 +msgid "Python code" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_07 +msgid "" +"Check on bank statement that the Closing Balance = Starting Balance + sum of " +"statement lines" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_07 +msgid "Test 8 : Closing balance on bank statements" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_03 +msgid "Test 3: Movement lines" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_05_2 +msgid "Test 5.2 : Reconcilied invoices and Payable/Receivable accounts" +msgstr "" + +#. module: account_test +#: view:accounting.assert.test:0 +msgid "Expression" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_04 +msgid "Test 4: Totally reconciled mouvements" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_04 +msgid "Check if the totally reconciled movements are balanced" +msgstr "" + +#. module: account_test +#: field:accounting.assert.test,sequence:0 +msgid "Sequence" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_02 +msgid "" +"Check if the balance of the new opened fiscal year matches with last year's " +"balance" +msgstr "" + +#. module: account_test +#: view:accounting.assert.test:0 +msgid "Python Code" +msgstr "" + +#. module: account_test +#: model:ir.actions.act_window,help:account_test.action_accounting_assert +msgid "" +"<p class=\"oe_view_nocontent_create\">\n" +" Click to create Accounting Test.\n" +" </p>\n" +" " +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_01 +msgid "Check the balance: Debit sum = Credit sum" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,desc:account_test.account_test_08 +msgid "Check that general accounts and partners on account moves are active" +msgstr "" + +#. module: account_test +#: model:accounting.assert.test,name:account_test.account_test_06_1 +msgid "Test 7: « View » account type" +msgstr "" + +#. module: account_test +#: view:accounting.assert.test:0 +msgid "Code Help" +msgstr "" diff --git a/addons/account_voucher/i18n/hu.po b/addons/account_voucher/i18n/hu.po index 746ffe5b247..1a50a813042 100644 --- a/addons/account_voucher/i18n/hu.po +++ b/addons/account_voucher/i18n/hu.po @@ -7,19 +7,19 @@ msgstr "" "Project-Id-Version: OpenERP Server 6.0dev\n" "Report-Msgid-Bugs-To: support@openerp.com\n" "POT-Creation-Date: 2012-12-21 17:04+0000\n" -"PO-Revision-Date: 2013-03-26 15:03+0000\n" +"PO-Revision-Date: 2013-04-04 11:34+0000\n" "Last-Translator: krnkris <Unknown>\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: 2013-03-27 04:36+0000\n" -"X-Generator: Launchpad (build 16540)\n" +"X-Launchpad-Export-Date: 2013-04-05 05:37+0000\n" +"X-Generator: Launchpad (build 16550)\n" #. module: account_voucher #: field:account.bank.statement.line,voucher_id:0 msgid "Reconciliation" -msgstr "" +msgstr "Párosítás" #. module: account_voucher #: model:ir.model,name:account_voucher.model_account_config_settings @@ -51,7 +51,7 @@ msgstr "Nyitott vevő tételek" #: view:account.voucher:0 #: view:sale.receipt.report:0 msgid "Group By..." -msgstr "Csoportosítás" +msgstr "Csoportosítás ezzel..." #. module: account_voucher #: help:account.voucher,writeoff_amount:0 @@ -102,7 +102,7 @@ msgstr "Számla kifizetése" #. module: account_voucher #: view:account.voucher:0 msgid "Are you sure you want to cancel this receipt?" -msgstr "" +msgstr "Biztos, hogy vissza akarja vonni ezt a bevételi bizonylatot?" #. module: account_voucher #: view:account.voucher:0 @@ -137,6 +137,8 @@ msgid "" "You can not change the journal as you already reconciled some statement " "lines!" msgstr "" +"Nem tudja a naplót megváltoztatni mivel a kivonatok egyes sorait már " +"párosította!" #. module: account_voucher #: view:account.voucher:0 @@ -160,6 +162,15 @@ msgid "" " </p>\n" " " msgstr "" +"<p class=\"oe_view_nocontent_create\">\n" +" Kattintson vásárlási bevételi bizonylat rögzítéséhez. \n" +" </p><p>\n" +" Ha a vásárlási bevételi bizonylat igazolva lett, rögzítheti " +"a \n" +" vásárlási bevételi bizonylathoz kapcsolódó beszállítói " +"kifizetést.\n" +" </p>\n" +" " #. module: account_voucher #: view:account.voucher:0 @@ -169,7 +180,7 @@ msgstr "Nyugták keresése" #. module: account_voucher #: field:account.voucher,writeoff_acc_id:0 msgid "Counterpart Account" -msgstr "" +msgstr "Ellenszámla" #. module: account_voucher #: field:account.voucher,account_id:0 @@ -191,7 +202,7 @@ msgstr "Rendben" #. module: account_voucher #: field:account.voucher.line,reconcile:0 msgid "Full Reconcile" -msgstr "" +msgstr "Teljes párosítás" #. module: account_voucher #: field:account.voucher,date_due:0 @@ -215,7 +226,7 @@ msgstr "Üzenetek" #: model:ir.actions.act_window,name:account_voucher.action_purchase_receipt #: model:ir.ui.menu,name:account_voucher.menu_action_purchase_receipt msgid "Purchase Receipts" -msgstr "" +msgstr "Vásárlások bevételi bizonylatai" #. module: account_voucher #: field:account.voucher.line,move_line_id:0 @@ -271,11 +282,18 @@ msgid "" " </p>\n" " " msgstr "" +"<p class=\"oe_view_nocontent_create\">\n" +" Kattintson értékesítési bevételi bizonylat létrehozásához.\n" +" </p><p>\n" +" Ha az értékesítési bizonylat igazolva lett, rögzítheti az \n" +" értékesítéshez tartozó vevői befizetést.\n" +" </p>\n" +" " #. module: account_voucher #: help:account.voucher,message_unread:0 msgid "If checked new messages require your attention." -msgstr "" +msgstr "Ha be van jelölve, akkor figyelje az új üzeneteket." #. module: account_voucher #: model:ir.model,name:account_voucher.model_account_bank_statement_line @@ -298,17 +316,17 @@ msgstr "ÁFA" #: code:addons/account_voucher/account_voucher.py:879 #, python-format msgid "Invalid Action!" -msgstr "" +msgstr "Érvénytelen lépés!" #. module: account_voucher #: field:account.voucher,comment:0 msgid "Counterpart Comment" -msgstr "" +msgstr "Ellenoldali meglyegyzés" #. module: account_voucher #: field:account.voucher.line,account_analytic_id:0 msgid "Analytic Account" -msgstr "Gyűjtőkód" +msgstr "Gyűjtő/elemző könyvelés" #. module: account_voucher #: help:account.voucher,message_summary:0 @@ -316,11 +334,13 @@ msgid "" "Holds the Chatter summary (number of messages, ...). This summary is " "directly in html format in order to be inserted in kanban views." msgstr "" +"A chettelés összegzést megállítja (üzenetek száma,...). Ez az összegzés " +"direkt HTML formátumú ahhoz hogy beilleszthető legyen a kanban nézetekbe." #. module: account_voucher #: view:account.voucher:0 msgid "Total Allocation" -msgstr "" +msgstr "Összes kiosztás" #. module: account_voucher #: view:account.voucher:0 @@ -330,7 +350,7 @@ msgstr "Fizetési információ" #. module: account_voucher #: view:account.voucher:0 msgid "(update)" -msgstr "" +msgstr "(frissítés)" #. module: account_voucher #: view:account.voucher:0 @@ -349,20 +369,20 @@ msgstr "Számlák importálása" #: code:addons/account_voucher/account_voucher.py:1112 #, python-format msgid "Wrong voucher line" -msgstr "Nem megfelelő nyugta sorok" +msgstr "Nem megfelelő nyugta sor" #. module: account_voucher #: selection:account.voucher,pay_now:0 #: selection:sale.receipt.report,pay_now:0 msgid "Pay Later or Group Funds" -msgstr "Későbbi fizetés" +msgstr "Fizessen később vagy csoportosítsa a pénzeket" #. module: account_voucher #: view:account.voucher:0 #: selection:account.voucher,type:0 #: selection:sale.receipt.report,type:0 msgid "Receipt" -msgstr "Befizetés" +msgstr "Bevételi bizonylat" #. module: account_voucher #: code:addons/account_voucher/account_voucher.py:1018 @@ -372,6 +392,9 @@ msgid "" "settings, to manage automatically the booking of accounting entries related " "to differences between exchange rates." msgstr "" +"Be kell állítani a 'Átváltási arány nyereség számlája' a könyvelés " +"beállításainál, ahhoz, hogy kezelni tudja az automatikus könyvelését azoknak " +"a számla tételeknek, melyek az átváltási arányok különbségéből adódhatnak." #. module: account_voucher #: view:account.voucher:0 @@ -399,7 +422,7 @@ msgstr "Szállítói nyugta" #. module: account_voucher #: field:account.voucher,message_follower_ids:0 msgid "Followers" -msgstr "" +msgstr "Követők" #. module: account_voucher #: selection:account.voucher.line,type:0 @@ -410,13 +433,13 @@ msgstr "Tartozik" #: code:addons/account_voucher/account_voucher.py:1547 #, python-format msgid "Unable to change journal !" -msgstr "" +msgstr "Naplót nem lehet megváltoztatni !" #. module: account_voucher #: view:sale.receipt.report:0 #: field:sale.receipt.report,nbr:0 msgid "# of Voucher Lines" -msgstr "Nyugtasorok száma" +msgstr "# nyugta sor száma" #. module: account_voucher #: view:sale.receipt.report:0 @@ -446,6 +469,13 @@ msgid "" " </p>\n" " " msgstr "" +"<p class=\"oe_view_nocontent_create\">\n" +" Kattintson új beszállítói fizetés létrehozásához.\n" +" </p><p>\n" +" OpenERP segít a kifizetéseinek, valamint a beszállítók " +"részére még fizetendő mérleg könnyű nyomon követéséhez.\n" +" </p>\n" +" " #. module: account_voucher #: view:account.voucher:0 @@ -460,12 +490,12 @@ msgstr "Nyugta tételek" #. module: account_voucher #: field:account.voucher,name:0 msgid "Memo" -msgstr "Megnevezés" +msgstr "Emlékeztető" #. module: account_voucher #: view:account.voucher:0 msgid "Are you sure to unreconcile and cancel this record ?" -msgstr "" +msgstr "Biztosan visszavonja a bejegyzés párosítását?" #. module: account_voucher #: field:account.voucher,is_multi_currency:0 @@ -494,17 +524,25 @@ msgid "" "\n" "* The 'Cancelled' status is used when user cancel voucher." msgstr "" +" * A 'Tervezet' állapotot használja amint egy felhasználó létrehoz egy új és " +"még le nem igazolt nyugtát. \n" +"* 'Pro-forma' lesz, ha a nyugta Pro-forma állapotú, a nyugtának még nincs " +"nyugta száma. \n" +"* 'Elküldött' állapotú, ha egy felhasználó létrehozta a nyugtát, egy nyugta " +"számot generált hozzá, és a könyvelésben egy nyugta bevitel létre lett hozva " +" \n" +"* A 'Visszavonva' állapot lesz, ha egy felhasználó visszavonta a nyugtát." #. module: account_voucher #: field:account.voucher,writeoff_amount:0 msgid "Difference Amount" -msgstr "" +msgstr "Különbség számla" #. module: account_voucher #: view:sale.receipt.report:0 #: field:sale.receipt.report,due_delay:0 msgid "Avg. Due Delay" -msgstr "Álagos fizetési határidő" +msgstr "Álagos fizetési késedelem" #. module: account_voucher #: code:addons/account_voucher/invoice.py:34 @@ -543,12 +581,24 @@ msgid "" " </p>\n" " " msgstr "" +"<p class=\"oe_view_nocontent_create\">\n" +" Kattintson új kifizetés rögzítéséhez. \n" +" </p><p>\n" +" Vigye be a vásárlót és a fizetési módot és utána, vagy " +"hozzon\n" +" létre kézzel egy fizetési rekordot, vagy az OpenERP fel fog " +"ajánlani\n" +" automatikusan a fizetéshez tartozó összeegyeztetést a\n" +" nyitott számlákkal vagy értékesítési bevételi " +"bizonylatokkal.\n" +" </p>\n" +" " #. module: account_voucher #: field:account.config.settings,expense_currency_exchange_account_id:0 #: field:res.company,expense_currency_exchange_account_id:0 msgid "Loss Exchange Rate Account" -msgstr "" +msgstr "Árfolyamveszteség számla" #. module: account_voucher #: view:account.voucher:0 @@ -572,7 +622,7 @@ msgstr "Ellenőrizendő" #: code:addons/account_voucher/account_voucher.py:1194 #, python-format msgid "change" -msgstr "" +msgstr "módosítás" #. module: account_voucher #: code:addons/account_voucher/account_voucher.py:1014 @@ -582,6 +632,9 @@ msgid "" "settings, to manage automatically the booking of accounting entries related " "to differences between exchange rates." msgstr "" +"Be kell állítani a 'Árfolyamveszteség számla' a könyvelés beállításoknál, " +"ahhoz, hogy kezelni tudja automatikusan a könyvelési tételek rögzítését, " +"melyek az átváltási árfolyam különbségekkel összefüggenek." #. module: account_voucher #: view:account.voucher:0 @@ -599,11 +652,13 @@ msgid "" "Fields with internal purpose only that depicts if the voucher is a multi " "currency one or not" msgstr "" +"Belső használatú mezők, melyek azt ábrázolják, hogy a nyugták több " +"pénzneműek vagy nem" #. module: account_voucher #: view:account.invoice:0 msgid "Register Payment" -msgstr "Kifizetés" +msgstr "Kifizetés rögzítés" #. module: account_voucher #: field:account.statement.from.invoice.lines,line_ids:0 @@ -618,7 +673,7 @@ msgstr "December" #. module: account_voucher #: view:sale.receipt.report:0 msgid "Group by month of Invoice Date" -msgstr "" +msgstr "Csoportosítás számla dátuma alapján" #. module: account_voucher #: view:sale.receipt.report:0 @@ -636,7 +691,7 @@ msgstr "Pénznem" #. module: account_voucher #: view:account.statement.from.invoice.lines:0 msgid "Payable and Receivables" -msgstr "Vevők és szállítók" +msgstr "Fizetendők & Bevételek" #. module: account_voucher #: view:account.voucher:0 @@ -651,7 +706,7 @@ msgstr "Nyugta állapota" #. module: account_voucher #: view:account.voucher:0 msgid "Are you sure to unreconcile this record?" -msgstr "" +msgstr "Biztosan törölni szeretné ennek a rekordnak a párosítását?" #. module: account_voucher #: field:account.voucher,company_id:0 @@ -664,18 +719,18 @@ msgstr "Vállalat" #. module: account_voucher #: help:account.voucher,paid:0 msgid "The Voucher has been totally paid." -msgstr "A nyugta ki lett egyenlítve" +msgstr "A nyugta teljesen ki lett egyenlítve" #. module: account_voucher #: selection:account.voucher,payment_option:0 msgid "Reconcile Payment Balance" -msgstr "" +msgstr "Fizetési egyenleg párosítás" #. module: account_voucher #: code:addons/account_voucher/account_voucher.py:975 #, python-format msgid "Configuration Error !" -msgstr "" +msgstr "Beállítási hiba!" #. module: account_voucher #: view:account.voucher:0 @@ -687,7 +742,7 @@ msgstr "Nyugta tervezetek" #: view:sale.receipt.report:0 #: field:sale.receipt.report,price_total_tax:0 msgid "Total With Tax" -msgstr "Bruttó érték" +msgstr "Bruttó érték adóval" #. module: account_voucher #: view:account.voucher:0 @@ -699,18 +754,18 @@ msgstr "Beszerzési nyugta" #: field:account.voucher,state:0 #: view:sale.receipt.report:0 msgid "Status" -msgstr "" +msgstr "Állapot" #. module: account_voucher #: view:account.voucher:0 msgid "Allocation" -msgstr "" +msgstr "Kiosztás" #. module: account_voucher #: view:account.statement.from.invoice.lines:0 #: view:account.voucher:0 msgid "or" -msgstr "" +msgstr "vagy" #. module: account_voucher #: selection:sale.receipt.report,month:0 @@ -720,7 +775,7 @@ msgstr "Augusztus" #. module: account_voucher #: view:account.voucher:0 msgid "Validate Payment" -msgstr "" +msgstr "Fizetés jóváhagyása" #. module: account_voucher #: help:account.voucher,audit:0 @@ -728,6 +783,8 @@ msgid "" "Check this box if you are unsure of that journal entry and if you want to " "note it as 'to be reviewed' by an accounting expert." msgstr "" +"Jelölje be, ha bizonytalan a napló tétel kontírozásában. Ennek hatására " +"könyvelő szekértő által 'ellenőrizendő'-ként jelölődik meg." #. module: account_voucher #: selection:sale.receipt.report,month:0 @@ -738,7 +795,7 @@ msgstr "Október" #: code:addons/account_voucher/account_voucher.py:976 #, python-format msgid "Please activate the sequence of selected journal !" -msgstr "" +msgstr "Kérem a sorozat aktiválását a kiválasztott naplóra !" #. module: account_voucher #: selection:sale.receipt.report,month:0 @@ -748,23 +805,23 @@ msgstr "Június" #. module: account_voucher #: field:account.voucher,payment_rate_currency_id:0 msgid "Payment Rate Currency" -msgstr "" +msgstr "Fizetési pénznem aránya" #. module: account_voucher #: field:account.voucher,paid:0 msgid "Paid" -msgstr "" +msgstr "Rendezett" #. module: account_voucher #: model:ir.actions.act_window,name:account_voucher.action_sale_receipt #: model:ir.ui.menu,name:account_voucher.menu_action_sale_receipt msgid "Sales Receipts" -msgstr "" +msgstr "Értékesítési bevételi bizonylatok" #. module: account_voucher #: field:account.voucher,message_is_follower:0 msgid "Is a Follower" -msgstr "" +msgstr "Ez egy követő" #. module: account_voucher #: field:account.voucher,analytic_id:0 @@ -791,7 +848,7 @@ msgstr "Kiterjesztett szűrők" #. module: account_voucher #: field:account.voucher,paid_amount_in_company_currency:0 msgid "Paid Amount in Company Currency" -msgstr "" +msgstr "Kifizetett összeg a vállalat pénznemében" #. module: account_voucher #: field:account.bank.statement.line,amount_reconciled:0 @@ -807,7 +864,7 @@ msgstr "Azonnali kifizetés" #. module: account_voucher #: field:account.voucher.line,type:0 msgid "Dr/Cr" -msgstr "" +msgstr "T/K" #. module: account_voucher #: field:account.voucher,pre_line:0 @@ -818,7 +875,7 @@ msgstr "Előző kifizetések ?" #: code:addons/account_voucher/account_voucher.py:1112 #, python-format msgid "The invoice you are willing to pay is not valid anymore." -msgstr "" +msgstr "A kifizetni kívánt számla már nem érvényes." #. module: account_voucher #: selection:sale.receipt.report,month:0 @@ -829,52 +886,52 @@ msgstr "Január" #: model:ir.actions.act_window,name:account_voucher.action_voucher_list #: model:ir.ui.menu,name:account_voucher.menu_encode_entries_by_voucher msgid "Journal Vouchers" -msgstr "Nyugták" +msgstr "Nyugták naplói" #. module: account_voucher #: model:ir.model,name:account_voucher.model_res_company msgid "Companies" -msgstr "" +msgstr "Vállalatok" #. module: account_voucher #: field:account.voucher,message_summary:0 msgid "Summary" -msgstr "" +msgstr "Összegzés" #. module: account_voucher #: field:account.voucher,active:0 msgid "Active" -msgstr "" +msgstr "Aktív" #. module: account_voucher #: code:addons/account_voucher/account_voucher.py:982 #, python-format msgid "Please define a sequence on the journal." -msgstr "" +msgstr "Kérem egy sorozat meghatározását a naplón." #. module: account_voucher #: model:ir.actions.act_window,name:account_voucher.act_pay_voucher #: model:ir.actions.act_window,name:account_voucher.action_vendor_receipt #: model:ir.ui.menu,name:account_voucher.menu_action_vendor_receipt msgid "Customer Payments" -msgstr "" +msgstr "Vevői befizetések" #. module: account_voucher #: model:ir.actions.act_window,name:account_voucher.action_sale_receipt_report_all #: model:ir.ui.menu,name:account_voucher.menu_action_sale_receipt_report_all #: view:sale.receipt.report:0 msgid "Sales Receipts Analysis" -msgstr "" +msgstr "Értékesítési bevételi bizonylatok elemzései" #. module: account_voucher #: view:sale.receipt.report:0 msgid "Group by Invoice Date" -msgstr "" +msgstr "Számla dátuma szerinti csoportosítása" #. module: account_voucher #: view:account.voucher:0 msgid "Post" -msgstr "Könyvelés" +msgstr "Elküld" #. module: account_voucher #: view:account.voucher:0 @@ -885,7 +942,7 @@ msgstr "Számlák és kifizetetlen tételek" #: view:sale.receipt.report:0 #: field:sale.receipt.report,price_total:0 msgid "Total Without Tax" -msgstr "Nettó érték" +msgstr "Nettó, adó nélküli érték" #. module: account_voucher #: view:account.voucher:0 @@ -921,7 +978,7 @@ msgstr "Bankkivonat" #. module: account_voucher #: view:account.bank.statement:0 msgid "onchange_amount(amount)" -msgstr "" +msgstr "onchange_amount(amount)" #. module: account_voucher #: selection:sale.receipt.report,month:0 @@ -954,19 +1011,19 @@ msgstr "Nyugta tételsorok" #: view:account.statement.from.invoice.lines:0 #: view:account.voucher:0 msgid "Cancel" -msgstr "Mégsem" +msgstr "Visszavonás" #. module: account_voucher #: model:ir.actions.client,name:account_voucher.action_client_invoice_menu msgid "Open Invoicing Menu" -msgstr "" +msgstr "Számlázási menü megnyitása" #. module: account_voucher #: selection:account.voucher,state:0 #: view:sale.receipt.report:0 #: selection:sale.receipt.report,state:0 msgid "Pro-forma" -msgstr "Pro forma" +msgstr "Pro-forma" #. module: account_voucher #: view:account.voucher:0 @@ -979,6 +1036,8 @@ msgstr "Könyvelési tételsorok" #, python-format msgid "Please define default credit/debit accounts on the journal \"%s\"." msgstr "" +"Kérem meghatározni az alapértelmezett követelés/tartozás könyvelést a naplón " +"\"%s\"." #. module: account_voucher #: selection:account.voucher,type:0 @@ -995,7 +1054,7 @@ msgstr "Fizetés" #. module: account_voucher #: view:account.voucher:0 msgid "Currency Options" -msgstr "" +msgstr "Pénznem lehetőségek" #. module: account_voucher #: help:account.voucher,payment_option:0 @@ -1005,6 +1064,10 @@ msgid "" "either choose to keep open this difference on the partner's account, or " "reconcile it with the payment(s)" msgstr "" +"Ez a mező megkönnyíti a választást ahhoz, hogy mit szeretne tenni a " +"kifizetett összeg és a kiosztott összeg közti különbségekkel. Hagyhatja " +"nyitottan ezt a különbséget a partner számláján, vagy párosíthatja a " +"fizetés(ek)el." #. module: account_voucher #: model:ir.actions.act_window,help:account_voucher.action_sale_receipt_report_all @@ -1018,16 +1081,24 @@ msgid "" " </p>\n" " " msgstr "" +"<p>\n" +" Erről a jelentésről, a vevőnek elküldött számlákról és fizetési\n" +" határidőkről és késve fizetésről áttekintést kaphat. A \n" +" keresési eszköz használható a számla beszámolók személyre\n" +" szabásához és így, az elemzést az igényének megfelelően " +"alakíthatja.\n" +" </p>\n" +" " #. module: account_voucher #: view:account.voucher:0 msgid "Posted Vouchers" -msgstr "" +msgstr "Elküldött nyugták" #. module: account_voucher #: field:account.voucher,payment_rate:0 msgid "Exchange Rate" -msgstr "" +msgstr "Árfolyam arány" #. module: account_voucher #: view:account.voucher:0 @@ -1047,7 +1118,7 @@ msgstr "Május" #. module: account_voucher #: view:account.voucher:0 msgid "Sale Receipt" -msgstr "" +msgstr "Értékesítési bevételi bizonylat" #. module: account_voucher #: view:account.voucher:0 @@ -1066,7 +1137,7 @@ msgstr "Belső megjegyzések" #: view:account.voucher:0 #: field:account.voucher,line_cr_ids:0 msgid "Credits" -msgstr "Követel" +msgstr "Követelések" #. module: account_voucher #: field:account.voucher.line,amount_original:0 @@ -1076,7 +1147,7 @@ msgstr "Eredeti összeg" #. module: account_voucher #: view:account.voucher:0 msgid "Purchase Receipt" -msgstr "" +msgstr "Vásárlási bevételi bizonylatok" #. module: account_voucher #: help:account.voucher,payment_rate:0 @@ -1084,6 +1155,8 @@ msgid "" "The specific rate that will be used, in this voucher, between the selected " "currency (in 'Payment Rate Currency' field) and the voucher currency." msgstr "" +"Az arány, mely ezen nyugtán lesz használva, a kiválasztott pénznem (a " +"'Fizetési pénznem aránya' mezőben) és a nyugta pénzneme közt." #. module: account_voucher #: view:account.voucher:0 @@ -1115,12 +1188,12 @@ msgstr "Február" #. module: account_voucher #: view:account.voucher:0 msgid "Supplier Invoices and Outstanding transactions" -msgstr "Bejövő számlák és kifizetetlen tételek" +msgstr "Beszállítók bejövő számlái és kifizetetlen tételek" #. module: account_voucher #: field:account.voucher,reference:0 msgid "Ref #" -msgstr "Hiv. szám" +msgstr "Hiv. szám #" #. module: account_voucher #: view:sale.receipt.report:0 @@ -1132,7 +1205,7 @@ msgstr "Év" #: field:account.config.settings,income_currency_exchange_account_id:0 #: field:res.company,income_currency_exchange_account_id:0 msgid "Gain Exchange Rate Account" -msgstr "" +msgstr "Árfolyamnyereség számla" #. module: account_voucher #: selection:account.voucher,type:0 @@ -1148,7 +1221,7 @@ msgstr "Április" #. module: account_voucher #: help:account.voucher,tax_id:0 msgid "Only for tax excluded from price" -msgstr "" +msgstr "Csak az árakból kihagyott adók" #. module: account_voucher #: field:account.voucher,type:0 @@ -1158,7 +1231,7 @@ msgstr "Alapértelmezett típus" #. module: account_voucher #: help:account.voucher,message_ids:0 msgid "Messages and communication history" -msgstr "" +msgstr "Üzenetek és kommunikációs történet" #. module: account_voucher #: model:ir.model,name:account_voucher.model_account_statement_from_invoice_lines @@ -1182,12 +1255,16 @@ msgid "" "The amount of the voucher must be the same amount as the one on the " "statement line." msgstr "" +"A nyugtán lévő összegnek ugyanannak kell lennie mint ami a kivonat sorában " +"szerepel." #. module: account_voucher #: code:addons/account_voucher/account_voucher.py:879 #, python-format msgid "Cannot delete voucher(s) which are already opened or paid." msgstr "" +"Nem lehet olyan nyugtá(ka)t törölni, melyek meg lettek nyitva vagy ki lettek " +"fozetve." #. module: account_voucher #: help:account.voucher,date:0 @@ -1197,7 +1274,7 @@ msgstr "Könyvelési tételek teljesítési dátuma" #. module: account_voucher #: model:mail.message.subtype,name:account_voucher.mt_voucher_state_change msgid "Status Change" -msgstr "" +msgstr "Állapotváltozás" #. module: account_voucher #: selection:account.voucher,payment_option:0 @@ -1225,7 +1302,7 @@ msgstr "Nettó érték" #. module: account_voucher #: model:ir.model,name:account_voucher.model_sale_receipt_report msgid "Sales Receipt Statistics" -msgstr "Értékesítési nyugta statisztika" +msgstr "Értékesítési bevételi bizonylatok statisztikái" #. module: account_voucher #: view:account.voucher:0 @@ -1244,14 +1321,14 @@ msgstr "Nyitott egyenleg" #. module: account_voucher #: model:mail.message.subtype,description:account_voucher.mt_voucher_state_change msgid "Status <b>changed</b>" -msgstr "" +msgstr "Állapot <b>megváltozott</b>" #. module: account_voucher #: code:addons/account_voucher/account_voucher.py:1014 #: code:addons/account_voucher/account_voucher.py:1018 #, python-format msgid "Insufficient Configuration!" -msgstr "" +msgstr "Nem megfelelő beállítás!" #. module: account_voucher #: help:account.voucher,active:0 @@ -1260,6 +1337,9 @@ msgid "" "inactive, which allow to hide the customer/supplier payment while the bank " "statement isn't confirmed." msgstr "" +"Alapértelmezetten, a tervezet bank kivonathoz párosított nyugták nem lesznek " +"aktívak, így el lehet tüntetni a vevő/beszállító fizetéseket amíg a banki " +"kivonatok nem kerülnek jóváhagyásra." #~ msgid "Particulars" #~ msgstr "Adatok" @@ -1310,9 +1390,6 @@ msgstr "" #~ msgid "Want to remove accounting entries too ?" #~ msgstr "A könyvelési tételeket is törölni szeretné?" -#~ msgid "Sales Receipt" -#~ msgstr "Nyugta" - #~ msgid "Unreconciliation" #~ msgstr "Párosítás visszavonása" @@ -1485,3 +1562,6 @@ msgstr "" #~ msgid "Canceled" #~ msgstr "Érvénytelenített" + +#~ msgid "Sales Receipt" +#~ msgstr "Értékesítési bevételi bizonylat" diff --git a/addons/analytic_contract_hr_expense/i18n/cs.po b/addons/analytic_contract_hr_expense/i18n/cs.po new file mode 100644 index 00000000000..b57756bce0b --- /dev/null +++ b/addons/analytic_contract_hr_expense/i18n/cs.po @@ -0,0 +1,72 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-03-31 16:44+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-04-01 05:06+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: analytic_contract_hr_expense +#: view:account.analytic.account:0 +msgid "or view" +msgstr "" + +#. module: analytic_contract_hr_expense +#: view:account.analytic.account:0 +msgid "Nothing to invoice, create" +msgstr "" + +#. module: analytic_contract_hr_expense +#: view:account.analytic.account:0 +msgid "expenses" +msgstr "" + +#. module: analytic_contract_hr_expense +#: model:ir.model,name:analytic_contract_hr_expense.model_account_analytic_account +msgid "Analytic Account" +msgstr "" + +#. module: analytic_contract_hr_expense +#: code:addons/analytic_contract_hr_expense/analytic_contract_hr_expense.py:129 +#, python-format +msgid "Expenses to Invoice of %s" +msgstr "" + +#. module: analytic_contract_hr_expense +#: code:addons/analytic_contract_hr_expense/analytic_contract_hr_expense.py:121 +#, python-format +msgid "Expenses of %s" +msgstr "" + +#. module: analytic_contract_hr_expense +#: field:account.analytic.account,expense_invoiced:0 +#: field:account.analytic.account,expense_to_invoice:0 +#: field:account.analytic.account,remaining_expense:0 +msgid "unknown" +msgstr "" + +#. module: analytic_contract_hr_expense +#: field:account.analytic.account,est_expenses:0 +msgid "Estimation of Expenses to Invoice" +msgstr "" + +#. module: analytic_contract_hr_expense +#: field:account.analytic.account,charge_expenses:0 +msgid "Charge Expenses" +msgstr "" + +#. module: analytic_contract_hr_expense +#: view:account.analytic.account:0 +msgid "⇒ Invoice" +msgstr "" diff --git a/addons/anonymization/i18n/cs.po b/addons/anonymization/i18n/cs.po new file mode 100644 index 00000000000..aa320cbba21 --- /dev/null +++ b/addons/anonymization/i18n/cs.po @@ -0,0 +1,331 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-03-31 16:44+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-04-01 05:06+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: anonymization +#: model:ir.model,name:anonymization.model_ir_model_fields_anonymize_wizard +msgid "ir.model.fields.anonymize.wizard" +msgstr "" + +#. module: anonymization +#: field:ir.model.fields.anonymization,model_id:0 +msgid "Object" +msgstr "" + +#. module: anonymization +#: model:ir.model,name:anonymization.model_ir_model_fields_anonymization_migration_fix +msgid "ir.model.fields.anonymization.migration.fix" +msgstr "" + +#. module: anonymization +#: field:ir.model.fields.anonymization.migration.fix,target_version:0 +msgid "Target Version" +msgstr "" + +#. module: anonymization +#: selection:ir.model.fields.anonymization.migration.fix,query_type:0 +msgid "sql" +msgstr "" + +#. module: anonymization +#: code:addons/anonymization/anonymization.py:91 +#, python-format +msgid "" +"The database anonymization is currently in an unstable state. Some fields " +"are anonymized, while some fields are not anonymized. You should try to " +"solve this problem before trying to create, write or delete fields." +msgstr "" + +#. module: anonymization +#: field:ir.model.fields.anonymization,field_name:0 +msgid "Field Name" +msgstr "" + +#. module: anonymization +#: field:ir.model.fields.anonymization,field_id:0 +#: field:ir.model.fields.anonymization.migration.fix,field_name:0 +msgid "Field" +msgstr "" + +#. module: anonymization +#: selection:ir.model.fields.anonymization,state:0 +msgid "New" +msgstr "" + +#. module: anonymization +#: field:ir.model.fields.anonymize.wizard,file_import:0 +msgid "Import" +msgstr "" + +#. module: anonymization +#: model:ir.model,name:anonymization.model_ir_model_fields_anonymization +msgid "ir.model.fields.anonymization" +msgstr "" + +#. module: anonymization +#: code:addons/anonymization/anonymization.py:300 +#, python-format +msgid "" +"Before executing the anonymization process, you should make a backup of your " +"database." +msgstr "" + +#. module: anonymization +#: field:ir.model.fields.anonymization.history,state:0 +#: field:ir.model.fields.anonymize.wizard,state:0 +msgid "Status" +msgstr "" + +#. module: anonymization +#: field:ir.model.fields.anonymization.history,direction:0 +msgid "Direction" +msgstr "" + +#. module: anonymization +#: model:ir.actions.act_window,name:anonymization.action_ir_model_fields_anonymization_tree +#: view:ir.model.fields.anonymization:0 +#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization_fields +msgid "Anonymized Fields" +msgstr "" + +#. module: anonymization +#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization +msgid "Database anonymization" +msgstr "" + +#. module: anonymization +#: selection:ir.model.fields.anonymization.history,direction:0 +msgid "clear -> anonymized" +msgstr "" + +#. module: anonymization +#: selection:ir.model.fields.anonymization,state:0 +#: selection:ir.model.fields.anonymize.wizard,state:0 +msgid "Anonymized" +msgstr "" + +#. module: anonymization +#: field:ir.model.fields.anonymization,state:0 +msgid "unknown" +msgstr "" + +#. module: anonymization +#: code:addons/anonymization/anonymization.py:448 +#, python-format +msgid "Anonymized value is None. This cannot happens." +msgstr "" + +#. module: anonymization +#: field:ir.model.fields.anonymization.history,filepath:0 +msgid "File path" +msgstr "" + +#. module: anonymization +#: help:ir.model.fields.anonymize.wizard,file_import:0 +msgid "" +"This is the file created by the anonymization process. It should have the " +"'.pickle' extention." +msgstr "" + +#. module: anonymization +#: field:ir.model.fields.anonymization.history,date:0 +msgid "Date" +msgstr "" + +#. module: anonymization +#: field:ir.model.fields.anonymize.wizard,file_export:0 +msgid "Export" +msgstr "" + +#. module: anonymization +#: view:ir.model.fields.anonymize.wizard:0 +msgid "Reverse the Database Anonymization" +msgstr "" + +#. module: anonymization +#: code:addons/anonymization/anonymization.py:444 +#, python-format +msgid "" +"Cannot anonymize fields of these types: binary, many2many, many2one, " +"one2many, reference." +msgstr "" + +#. module: anonymization +#: view:ir.model.fields.anonymize.wizard:0 +msgid "Database Anonymization" +msgstr "" + +#. module: anonymization +#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization_wizard +msgid "Anonymize database" +msgstr "" + +#. module: anonymization +#: selection:ir.model.fields.anonymization.migration.fix,query_type:0 +msgid "python" +msgstr "" + +#. module: anonymization +#: view:ir.model.fields.anonymization.history:0 +#: field:ir.model.fields.anonymization.history,field_ids:0 +msgid "Fields" +msgstr "" + +#. module: anonymization +#: selection:ir.model.fields.anonymization,state:0 +#: selection:ir.model.fields.anonymize.wizard,state:0 +msgid "Clear" +msgstr "" + +#. module: anonymization +#: code:addons/anonymization/anonymization.py:533 +#, python-format +msgid "" +"It is not possible to reverse the anonymization process without supplying " +"the anonymization export file." +msgstr "" + +#. module: anonymization +#: field:ir.model.fields.anonymize.wizard,summary:0 +msgid "Summary" +msgstr "" + +#. module: anonymization +#: view:ir.model.fields.anonymization:0 +msgid "Anonymized Field" +msgstr "" + +#. module: anonymization +#: code:addons/anonymization/anonymization.py:391 +#: code:addons/anonymization/anonymization.py:526 +#, python-format +msgid "" +"The database anonymization is currently in an unstable state. Some fields " +"are anonymized, while some fields are not anonymized. You should try to " +"solve this problem before trying to do anything." +msgstr "" + +#. module: anonymization +#: selection:ir.model.fields.anonymize.wizard,state:0 +msgid "Unstable" +msgstr "" + +#. module: anonymization +#: selection:ir.model.fields.anonymization.history,state:0 +msgid "Exception occured" +msgstr "" + +#. module: anonymization +#: selection:ir.model.fields.anonymization,state:0 +msgid "Not Existing" +msgstr "" + +#. module: anonymization +#: field:ir.model.fields.anonymization,model_name:0 +msgid "Object Name" +msgstr "" + +#. module: anonymization +#: model:ir.actions.act_window,name:anonymization.action_ir_model_fields_anonymization_history_tree +#: view:ir.model.fields.anonymization.history:0 +#: model:ir.ui.menu,name:anonymization.menu_administration_anonymization_history +msgid "Anonymization History" +msgstr "" + +#. module: anonymization +#: field:ir.model.fields.anonymization.migration.fix,model_name:0 +msgid "Model" +msgstr "" + +#. module: anonymization +#: model:ir.model,name:anonymization.model_ir_model_fields_anonymization_history +msgid "ir.model.fields.anonymization.history" +msgstr "" + +#. module: anonymization +#: code:addons/anonymization/anonymization.py:358 +#, python-format +msgid "" +"The database anonymization is currently in an unstable state. Some fields " +"are anonymized, while some fields are not anonymized. You should try to " +"solve this problem before trying to do anything else." +msgstr "" + +#. module: anonymization +#: code:addons/anonymization/anonymization.py:389 +#: code:addons/anonymization/anonymization.py:448 +#, python-format +msgid "Error !" +msgstr "" + +#. module: anonymization +#: model:ir.actions.act_window,name:anonymization.action_ir_model_fields_anonymize_wizard +#: view:ir.model.fields.anonymize.wizard:0 +msgid "Anonymize Database" +msgstr "" + +#. module: anonymization +#: field:ir.model.fields.anonymize.wizard,name:0 +msgid "File Name" +msgstr "" + +#. module: anonymization +#: field:ir.model.fields.anonymization.migration.fix,sequence:0 +msgid "Sequence" +msgstr "" + +#. module: anonymization +#: selection:ir.model.fields.anonymization.history,direction:0 +msgid "anonymized -> clear" +msgstr "" + +#. module: anonymization +#: selection:ir.model.fields.anonymization.history,state:0 +msgid "Started" +msgstr "" + +#. module: anonymization +#: code:addons/anonymization/anonymization.py:389 +#, python-format +msgid "The database is currently anonymized, you cannot anonymize it again." +msgstr "" + +#. module: anonymization +#: selection:ir.model.fields.anonymization.history,state:0 +msgid "Done" +msgstr "" + +#. module: anonymization +#: field:ir.model.fields.anonymization.migration.fix,query:0 +#: field:ir.model.fields.anonymization.migration.fix,query_type:0 +msgid "Query" +msgstr "" + +#. module: anonymization +#: view:ir.model.fields.anonymization.history:0 +#: field:ir.model.fields.anonymization.history,msg:0 +#: field:ir.model.fields.anonymize.wizard,msg:0 +msgid "Message" +msgstr "" + +#. module: anonymization +#: code:addons/anonymization/anonymization.py:65 +#: sql_constraint:ir.model.fields.anonymization:0 +#, python-format +msgid "You cannot have two fields with the same name on the same object!" +msgstr "" diff --git a/addons/auth_crypt/i18n/cs.po b/addons/auth_crypt/i18n/cs.po index b97e90df13b..0ae0746fbdb 100644 --- a/addons/auth_crypt/i18n/cs.po +++ b/addons/auth_crypt/i18n/cs.po @@ -1,41 +1,28 @@ # Czech translation for openobject-addons -# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012 +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 # This file is distributed under the same license as the openobject-addons package. -# FIRST AUTHOR <EMAIL@ADDRESS>, 2012. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. # msgid "" msgstr "" "Project-Id-Version: openobject-addons\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" -"POT-Creation-Date: 2012-12-03 16:03+0000\n" -"PO-Revision-Date: 2012-04-06 05:20+0000\n" -"Last-Translator: Jiří Hajda <robie@centrum.cz>\n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-03-31 16:44+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: Czech <cs@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-12-04 05:53+0000\n" -"X-Generator: Launchpad (build 16335)\n" +"X-Launchpad-Export-Date: 2013-04-01 05:06+0000\n" +"X-Generator: Launchpad (build 16546)\n" -#. module: base_crypt -#: model:ir.model,name:base_crypt.model_res_users -msgid "Users" +#. module: auth_crypt +#: field:res.users,password_crypt:0 +msgid "Encrypted Password" msgstr "" -#~ 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 !" - -#, python-format -#~ msgid "Error" -#~ msgstr "Chyba" - -#, python-format -#~ msgid "Please specify the password !" -#~ msgstr "Prosíme zadejte heslo!" - -#~ 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" - -#~ msgid "res.users" -#~ msgstr "res.users" +#. module: auth_crypt +#: model:ir.model,name:auth_crypt.model_res_users +msgid "Users" +msgstr "" diff --git a/addons/auth_ldap/i18n/cs.po b/addons/auth_ldap/i18n/cs.po new file mode 100644 index 00000000000..539c923450d --- /dev/null +++ b/addons/auth_ldap/i18n/cs.po @@ -0,0 +1,159 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-03-31 16:44+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-04-01 05:06+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: auth_ldap +#: field:res.company.ldap,user:0 +msgid "Template User" +msgstr "" + +#. module: auth_ldap +#: help:res.company.ldap,ldap_tls:0 +msgid "" +"Request secure TLS/SSL encryption when connecting to the LDAP server. This " +"option requires a server with STARTTLS enabled, otherwise all authentication " +"attempts will fail." +msgstr "" + +#. module: auth_ldap +#: view:res.company:0 +#: view:res.company.ldap:0 +msgid "LDAP Configuration" +msgstr "" + +#. module: auth_ldap +#: field:res.company.ldap,ldap_binddn:0 +msgid "LDAP binddn" +msgstr "" + +#. module: auth_ldap +#: field:res.company.ldap,company:0 +msgid "Company" +msgstr "" + +#. module: auth_ldap +#: field:res.company.ldap,ldap_server:0 +msgid "LDAP Server address" +msgstr "" + +#. module: auth_ldap +#: field:res.company.ldap,ldap_server_port:0 +msgid "LDAP Server port" +msgstr "" + +#. module: auth_ldap +#: help:res.company.ldap,create_user:0 +msgid "" +"Automatically create local user accounts for new users authenticating via " +"LDAP" +msgstr "" + +#. module: auth_ldap +#: field:res.company.ldap,ldap_base:0 +msgid "LDAP base" +msgstr "" + +#. module: auth_ldap +#: view:res.company.ldap:0 +msgid "User Information" +msgstr "" + +#. module: auth_ldap +#: field:res.company.ldap,ldap_password:0 +msgid "LDAP password" +msgstr "" + +#. module: auth_ldap +#: model:ir.model,name:auth_ldap.model_res_company +msgid "Companies" +msgstr "" + +#. module: auth_ldap +#: view:res.company.ldap:0 +msgid "Process Parameter" +msgstr "" + +#. module: auth_ldap +#: model:ir.model,name:auth_ldap.model_res_company_ldap +msgid "res.company.ldap" +msgstr "" + +#. module: auth_ldap +#: help:res.company.ldap,user:0 +msgid "User to copy when creating new users" +msgstr "" + +#. module: auth_ldap +#: field:res.company.ldap,ldap_tls:0 +msgid "Use TLS" +msgstr "" + +#. module: auth_ldap +#: field:res.company.ldap,sequence:0 +msgid "Sequence" +msgstr "" + +#. module: auth_ldap +#: view:res.company.ldap:0 +msgid "Login Information" +msgstr "" + +#. module: auth_ldap +#: view:res.company.ldap:0 +msgid "Server Information" +msgstr "" + +#. module: auth_ldap +#: model:ir.actions.act_window,name:auth_ldap.action_ldap_installer +msgid "Setup your LDAP Server" +msgstr "" + +#. module: auth_ldap +#: view:res.company:0 +#: field:res.company,ldaps:0 +msgid "LDAP Parameters" +msgstr "" + +#. module: auth_ldap +#: help:res.company.ldap,ldap_password:0 +msgid "" +"The password of the user account on the LDAP server that is used to query " +"the directory." +msgstr "" + +#. module: auth_ldap +#: help:res.company.ldap,ldap_binddn:0 +msgid "" +"The user account on the LDAP server that is used to query the directory. " +"Leave empty to connect anonymously." +msgstr "" + +#. module: auth_ldap +#: model:ir.model,name:auth_ldap.model_res_users +msgid "Users" +msgstr "" + +#. module: auth_ldap +#: field:res.company.ldap,ldap_filter:0 +msgid "LDAP filter" +msgstr "" + +#. module: auth_ldap +#: field:res.company.ldap,create_user:0 +msgid "Create user" +msgstr "" diff --git a/addons/auth_oauth/i18n/cs.po b/addons/auth_oauth/i18n/cs.po new file mode 100644 index 00000000000..e607a08a7bd --- /dev/null +++ b/addons/auth_oauth/i18n/cs.po @@ -0,0 +1,135 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-03-31 16:45+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-04-01 05:06+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: auth_oauth +#: field:auth.oauth.provider,validation_endpoint:0 +msgid "Validation URL" +msgstr "" + +#. module: auth_oauth +#: field:auth.oauth.provider,auth_endpoint:0 +msgid "Authentication URL" +msgstr "" + +#. module: auth_oauth +#: model:ir.model,name:auth_oauth.model_base_config_settings +msgid "base.config.settings" +msgstr "" + +#. module: auth_oauth +#: field:auth.oauth.provider,name:0 +msgid "Provider name" +msgstr "" + +#. module: auth_oauth +#: field:auth.oauth.provider,scope:0 +msgid "Scope" +msgstr "" + +#. module: auth_oauth +#: field:res.users,oauth_provider_id:0 +msgid "OAuth Provider" +msgstr "" + +#. module: auth_oauth +#: field:auth.oauth.provider,css_class:0 +msgid "CSS class" +msgstr "" + +#. module: auth_oauth +#: field:auth.oauth.provider,body:0 +msgid "Body" +msgstr "" + +#. module: auth_oauth +#: model:ir.model,name:auth_oauth.model_res_users +msgid "Users" +msgstr "" + +#. module: auth_oauth +#: field:auth.oauth.provider,sequence:0 +msgid "unknown" +msgstr "" + +#. module: auth_oauth +#: field:res.users,oauth_access_token:0 +msgid "OAuth Access Token" +msgstr "" + +#. module: auth_oauth +#: field:auth.oauth.provider,client_id:0 +#: field:base.config.settings,auth_oauth_facebook_client_id:0 +#: field:base.config.settings,auth_oauth_google_client_id:0 +msgid "Client ID" +msgstr "" + +#. module: auth_oauth +#: model:ir.ui.menu,name:auth_oauth.menu_oauth_providers +msgid "OAuth Providers" +msgstr "" + +#. module: auth_oauth +#: model:ir.model,name:auth_oauth.model_auth_oauth_provider +msgid "OAuth2 provider" +msgstr "" + +#. module: auth_oauth +#: field:res.users,oauth_uid:0 +msgid "OAuth User ID" +msgstr "" + +#. module: auth_oauth +#: field:base.config.settings,auth_oauth_facebook_enabled:0 +msgid "Allow users to sign in with Facebook" +msgstr "" + +#. module: auth_oauth +#: sql_constraint:res.users:0 +msgid "OAuth UID must be unique per provider" +msgstr "" + +#. module: auth_oauth +#: help:res.users,oauth_uid:0 +msgid "Oauth Provider user_id" +msgstr "" + +#. module: auth_oauth +#: field:auth.oauth.provider,data_endpoint:0 +msgid "Data URL" +msgstr "" + +#. module: auth_oauth +#: view:auth.oauth.provider:0 +msgid "arch" +msgstr "" + +#. module: auth_oauth +#: model:ir.actions.act_window,name:auth_oauth.action_oauth_provider +msgid "Providers" +msgstr "" + +#. module: auth_oauth +#: field:base.config.settings,auth_oauth_google_enabled:0 +msgid "Allow users to sign in with Google" +msgstr "" + +#. module: auth_oauth +#: field:auth.oauth.provider,enabled:0 +msgid "Allowed" +msgstr "" diff --git a/addons/auth_oauth/static/src/js/auth_oauth.js b/addons/auth_oauth/static/src/js/auth_oauth.js index 7ee83bd99e9..131ae5c1c42 100644 --- a/addons/auth_oauth/static/src/js/auth_oauth.js +++ b/addons/auth_oauth/static/src/js/auth_oauth.js @@ -5,6 +5,7 @@ openerp.auth_oauth = function(instance) { start: function(parent, params) { var self = this; var d = this._super.apply(this, arguments); + this.$el.hide(); this.$el.on('click', 'a.zocial', this.on_oauth_sign_in); this.oauth_providers = []; if(this.params.oauth_error === 1) { @@ -24,6 +25,8 @@ openerp.auth_oauth = function(instance) { var db = this.$("form [name=db]").val(); if (db) { this.rpc("/auth_oauth/list_providers", { dbname: db }).done(this.on_oauth_loaded); + } else { + this.$el.show(); } }, on_oauth_loaded: function(result) { @@ -32,6 +35,7 @@ openerp.auth_oauth = function(instance) { if (this.oauth_providers.length === 1 && params.type === 'signup') { this.do_oauth_sign_in(this.oauth_providers[0]); } else { + this.$el.show(); this.$('.oe_oauth_provider_login_button').remove(); var buttons = QWeb.render("auth_oauth.Login.button",{"widget":this}); this.$(".oe_login_pane form ul").after(buttons); @@ -57,7 +61,7 @@ openerp.auth_oauth = function(instance) { state: JSON.stringify(state), }; var url = provider.auth_endpoint + '?' + $.param(params); - window.location = url; + instance.web.redirect(url); }, _oauth_state: function(provider) { // return the state object sent back with the redirected uri diff --git a/addons/auth_oauth_signup/i18n/cs.po b/addons/auth_oauth_signup/i18n/cs.po new file mode 100644 index 00000000000..6351d6c056c --- /dev/null +++ b/addons/auth_oauth_signup/i18n/cs.po @@ -0,0 +1,23 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-03-31 16:45+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-04-01 05:06+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: auth_oauth_signup +#: model:ir.model,name:auth_oauth_signup.model_res_users +msgid "Users" +msgstr "" diff --git a/addons/auth_openid/i18n/cs.po b/addons/auth_openid/i18n/cs.po new file mode 100644 index 00000000000..071ee7ea210 --- /dev/null +++ b/addons/auth_openid/i18n/cs.po @@ -0,0 +1,97 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-03-31 16:45+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-04-01 05:06+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: auth_openid +#. openerp-web +#: code:addons/auth_openid/static/src/xml/auth_openid.xml:24 +#, python-format +msgid "Username" +msgstr "" + +#. module: auth_openid +#. openerp-web +#: code:addons/auth_openid/static/src/xml/auth_openid.xml:12 +#: view:res.users:0 +#, python-format +msgid "OpenID" +msgstr "" + +#. module: auth_openid +#. openerp-web +#: code:addons/auth_openid/static/src/xml/auth_openid.xml:30 +#: field:res.users,openid_url:0 +#, python-format +msgid "OpenID URL" +msgstr "" + +#. module: auth_openid +#. openerp-web +#: code:addons/auth_openid/static/src/xml/auth_openid.xml:9 +#: code:addons/auth_openid/static/src/xml/auth_openid.xml:10 +#, python-format +msgid "Google" +msgstr "" + +#. module: auth_openid +#. openerp-web +#: code:addons/auth_openid/static/src/xml/auth_openid.xml:11 +#, python-format +msgid "Launchpad" +msgstr "" + +#. module: auth_openid +#: help:res.users,openid_email:0 +msgid "Used for disambiguation in case of a shared OpenID URL" +msgstr "" + +#. module: auth_openid +#. openerp-web +#: code:addons/auth_openid/static/src/xml/auth_openid.xml:18 +#, python-format +msgid "Google Apps Domain" +msgstr "" + +#. module: auth_openid +#: field:res.users,openid_email:0 +msgid "OpenID Email" +msgstr "" + +#. module: auth_openid +#: field:res.users,openid_key:0 +msgid "OpenID Key" +msgstr "" + +#. module: auth_openid +#. openerp-web +#: code:addons/auth_openid/static/src/xml/auth_openid.xml:8 +#, python-format +msgid "Password" +msgstr "" + +#. module: auth_openid +#. openerp-web +#: code:addons/auth_openid/static/src/xml/auth_openid.xml:10 +#, python-format +msgid "Google Apps" +msgstr "" + +#. module: auth_openid +#: model:ir.model,name:auth_openid.model_res_users +msgid "Users" +msgstr "" diff --git a/addons/auth_signup/i18n/cs.po b/addons/auth_signup/i18n/cs.po new file mode 100644 index 00000000000..ee9cf157cdd --- /dev/null +++ b/addons/auth_signup/i18n/cs.po @@ -0,0 +1,279 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-03-31 16:45+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-04-01 05:06+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: auth_signup +#: field:res.partner,signup_type:0 +msgid "Signup Token Type" +msgstr "" + +#. module: auth_signup +#: field:base.config.settings,auth_signup_uninvited:0 +msgid "Allow external users to sign up" +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:16 +#, python-format +msgid "Confirm Password" +msgstr "" + +#. module: auth_signup +#: help:base.config.settings,auth_signup_uninvited:0 +msgid "If unchecked, only invited users may sign up." +msgstr "" + +#. module: auth_signup +#: model:ir.model,name:auth_signup.model_base_config_settings +msgid "base.config.settings" +msgstr "" + +#. module: auth_signup +#: code:addons/auth_signup/res_users.py:265 +#, python-format +msgid "Cannot send email: user has no email address." +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:24 +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:28 +#, python-format +msgid "Reset password" +msgstr "" + +#. module: auth_signup +#: field:base.config.settings,auth_signup_template_user_id:0 +msgid "Template user for new users created through signup" +msgstr "" + +#. module: auth_signup +#: model:email.template,subject:auth_signup.reset_password_email +msgid "Password reset" +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/js/auth_signup.js:117 +#, python-format +msgid "Please enter a password and confirm it." +msgstr "" + +#. module: auth_signup +#: view:res.users:0 +msgid "Send an email to the user to (re)set their password." +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:23 +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:26 +#, python-format +msgid "Sign Up" +msgstr "" + +#. module: auth_signup +#: selection:res.users,state:0 +msgid "New" +msgstr "" + +#. module: auth_signup +#: code:addons/auth_signup/res_users.py:258 +#, python-format +msgid "Mail sent to:" +msgstr "" + +#. module: auth_signup +#: field:res.users,state:0 +msgid "Status" +msgstr "" + +#. module: auth_signup +#: model:email.template,body_html:auth_signup.reset_password_email +msgid "" +"\n" +"<p>A password reset was requested for the OpenERP account linked to this " +"email.</p>\n" +"\n" +"<p>You may change your password by following <a " +"href=\"${object.signup_url}\">this link</a>.</p>\n" +"\n" +"<p>Note: If you do not expect this, you can safely ignore this email.</p>" +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/js/auth_signup.js:111 +#, python-format +msgid "Please enter a name." +msgstr "" + +#. module: auth_signup +#: model:ir.model,name:auth_signup.model_res_users +msgid "Users" +msgstr "" + +#. module: auth_signup +#: field:res.partner,signup_url:0 +msgid "Signup URL" +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/js/auth_signup.js:114 +#, python-format +msgid "Please enter a username." +msgstr "" + +#. module: auth_signup +#: selection:res.users,state:0 +msgid "Active" +msgstr "" + +#. module: auth_signup +#: code:addons/auth_signup/res_users.py:269 +#, python-format +msgid "" +"Cannot send email: no outgoing email server configured.\n" +"You can configure it under Settings/General Settings." +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:12 +#, python-format +msgid "Username" +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:8 +#, python-format +msgid "Name" +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/js/auth_signup.js:170 +#, python-format +msgid "Please enter a username or email address." +msgstr "" + +#. module: auth_signup +#: selection:res.users,state:0 +msgid "Resetting Password" +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:13 +#, python-format +msgid "Username (Email)" +msgstr "" + +#. module: auth_signup +#: field:res.partner,signup_expiration:0 +msgid "Signup Expiration" +msgstr "" + +#. module: auth_signup +#: help:base.config.settings,auth_signup_reset_password:0 +msgid "This allows users to trigger a password reset from the Login page." +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:22 +#, python-format +msgid "Log in" +msgstr "" + +#. module: auth_signup +#: field:res.partner,signup_valid:0 +msgid "Signup Token is Valid" +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/js/auth_signup.js:108 +#: code:addons/auth_signup/static/src/js/auth_signup.js:111 +#: code:addons/auth_signup/static/src/js/auth_signup.js:114 +#: code:addons/auth_signup/static/src/js/auth_signup.js:117 +#: code:addons/auth_signup/static/src/js/auth_signup.js:120 +#: code:addons/auth_signup/static/src/js/auth_signup.js:167 +#: code:addons/auth_signup/static/src/js/auth_signup.js:170 +#, python-format +msgid "Login" +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/js/auth_signup.js:94 +#, python-format +msgid "Invalid signup token" +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/js/auth_signup.js:120 +#, python-format +msgid "Passwords do not match; please retype them." +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/js/auth_signup.js:108 +#: code:addons/auth_signup/static/src/js/auth_signup.js:167 +#, python-format +msgid "No database selected !" +msgstr "" + +#. module: auth_signup +#: view:res.users:0 +msgid "Reset Password" +msgstr "" + +#. module: auth_signup +#: field:base.config.settings,auth_signup_reset_password:0 +msgid "Enable password reset from Login page" +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:27 +#, python-format +msgid "Back to Login" +msgstr "" + +#. module: auth_signup +#. openerp-web +#: code:addons/auth_signup/static/src/xml/auth_signup.xml:22 +#, python-format +msgid "Sign up" +msgstr "" + +#. module: auth_signup +#: model:ir.model,name:auth_signup.model_res_partner +msgid "Partner" +msgstr "" + +#. module: auth_signup +#: field:res.partner,signup_token:0 +msgid "Signup Token" +msgstr "" diff --git a/addons/base_gengo/i18n/cs.po b/addons/base_gengo/i18n/cs.po new file mode 100644 index 00000000000..91dc5ea941d --- /dev/null +++ b/addons/base_gengo/i18n/cs.po @@ -0,0 +1,249 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-03-31 16:46+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-04-01 05:06+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: base_gengo +#: view:res.company:0 +msgid "Comments for Translator" +msgstr "" + +#. module: base_gengo +#: field:ir.translation,job_id:0 +msgid "Gengo Job ID" +msgstr "" + +#. module: base_gengo +#: code:addons/base_gengo/wizard/base_gengo_translations.py:114 +#, python-format +msgid "This language is not supported by the Gengo translation services." +msgstr "" + +#. module: base_gengo +#: field:res.company,gengo_comment:0 +msgid "Comments" +msgstr "" + +#. module: base_gengo +#: field:res.company,gengo_private_key:0 +msgid "Gengo Private Key" +msgstr "" + +#. module: base_gengo +#: model:ir.model,name:base_gengo.model_base_gengo_translations +msgid "base.gengo.translations" +msgstr "" + +#. module: base_gengo +#: help:res.company,gengo_auto_approve:0 +msgid "Jobs are Automatically Approved by Gengo." +msgstr "" + +#. module: base_gengo +#: field:base.gengo.translations,lang_id:0 +msgid "Language" +msgstr "" + +#. module: base_gengo +#: field:ir.translation,gengo_comment:0 +msgid "Comments & Activity Linked to Gengo" +msgstr "" + +#. module: base_gengo +#: code:addons/base_gengo/wizard/base_gengo_translations.py:124 +#, python-format +msgid "Gengo Sync Translation (Response)" +msgstr "" + +#. module: base_gengo +#: code:addons/base_gengo/wizard/base_gengo_translations.py:72 +#, python-format +msgid "" +"Gengo `Public Key` or `Private Key` are missing. Enter your Gengo " +"authentication parameters under `Settings > Companies > Gengo Parameters`." +msgstr "" + +#. module: base_gengo +#: selection:ir.translation,gengo_translation:0 +msgid "Translation By Machine" +msgstr "" + +#. module: base_gengo +#: code:addons/base_gengo/wizard/base_gengo_translations.py:155 +#, python-format +msgid "" +"%s\n" +"\n" +"--\n" +" Commented on %s by %s." +msgstr "" + +#. module: base_gengo +#: field:ir.translation,gengo_translation:0 +msgid "Gengo Translation Service Level" +msgstr "" + +#. module: base_gengo +#: constraint:ir.translation:0 +msgid "" +"The Gengo translation service selected is not supported for this language." +msgstr "" + +#. module: base_gengo +#: selection:ir.translation,gengo_translation:0 +msgid "Standard" +msgstr "" + +#. module: base_gengo +#: help:ir.translation,gengo_translation:0 +msgid "" +"You can select here the service level you want for an automatic translation " +"using Gengo." +msgstr "" + +#. module: base_gengo +#: field:base.gengo.translations,restart_send_job:0 +msgid "Restart Sending Job" +msgstr "" + +#. module: base_gengo +#: view:ir.translation:0 +msgid "To Approve In Gengo" +msgstr "" + +#. module: base_gengo +#: view:res.company:0 +msgid "Private Key" +msgstr "" + +#. module: base_gengo +#: view:res.company:0 +msgid "Public Key" +msgstr "" + +#. module: base_gengo +#: field:res.company,gengo_public_key:0 +msgid "Gengo Public Key" +msgstr "" + +#. module: base_gengo +#: code:addons/base_gengo/wizard/base_gengo_translations.py:123 +#, python-format +msgid "Gengo Sync Translation (Request)" +msgstr "" + +#. module: base_gengo +#: view:ir.translation:0 +msgid "Translations" +msgstr "" + +#. module: base_gengo +#: field:res.company,gengo_auto_approve:0 +msgid "Auto Approve Translation ?" +msgstr "" + +#. module: base_gengo +#: model:ir.actions.act_window,name:base_gengo.action_wizard_base_gengo_translations +#: model:ir.ui.menu,name:base_gengo.menu_action_wizard_base_gengo_translations +msgid "Gengo: Manual Request of Translation" +msgstr "" + +#. module: base_gengo +#: code:addons/base_gengo/ir_translation.py:62 +#: code:addons/base_gengo/wizard/base_gengo_translations.py:109 +#, python-format +msgid "Gengo Authentication Error" +msgstr "" + +#. module: base_gengo +#: model:ir.model,name:base_gengo.model_res_company +msgid "Companies" +msgstr "" + +#. module: base_gengo +#: view:ir.translation:0 +msgid "" +"Note: If the translation state is 'In Progress', it means that the " +"translation has to be approved to be uploaded in this system. You are " +"supposed to do that directly by using your Gengo Account" +msgstr "" + +#. module: base_gengo +#: code:addons/base_gengo/wizard/base_gengo_translations.py:82 +#, python-format +msgid "" +"Gengo connection failed with this message:\n" +"``%s``" +msgstr "" + +#. module: base_gengo +#: view:res.company:0 +msgid "Gengo Parameters" +msgstr "" + +#. module: base_gengo +#: view:base.gengo.translations:0 +msgid "Send" +msgstr "" + +#. module: base_gengo +#: selection:ir.translation,gengo_translation:0 +msgid "Ultra" +msgstr "" + +#. module: base_gengo +#: model:ir.model,name:base_gengo.model_ir_translation +msgid "ir.translation" +msgstr "" + +#. module: base_gengo +#: view:ir.translation:0 +msgid "Gengo Translation Service" +msgstr "" + +#. module: base_gengo +#: selection:ir.translation,gengo_translation:0 +msgid "Pro" +msgstr "" + +#. module: base_gengo +#: view:base.gengo.translations:0 +msgid "Gengo Request Form" +msgstr "" + +#. module: base_gengo +#: code:addons/base_gengo/wizard/base_gengo_translations.py:114 +#, python-format +msgid "Warning" +msgstr "" + +#. module: base_gengo +#: help:res.company,gengo_comment:0 +msgid "" +"This comment will be automatically be enclosed in each an every request sent " +"to Gengo" +msgstr "" + +#. module: base_gengo +#: view:base.gengo.translations:0 +msgid "Cancel" +msgstr "" + +#. module: base_gengo +#: view:base.gengo.translations:0 +msgid "or" +msgstr "" diff --git a/addons/base_import/i18n/cs.po b/addons/base_import/i18n/cs.po new file mode 100644 index 00000000000..e49e2198de7 --- /dev/null +++ b/addons/base_import/i18n/cs.po @@ -0,0 +1,1164 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-03-31 16:46+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-04-01 05:06+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:451 +#, python-format +msgid "Get all possible values" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:71 +#, python-format +msgid "Need to import data from an other application?" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:163 +#, python-format +msgid "" +"When you use External IDs, you can import CSV files \n" +" with the \"External ID\" column to define the " +"External \n" +" ID of each record you import. Then, you will be able " +"\n" +" to make a reference to that record with columns like " +"\n" +" \"Field/External ID\". The following two CSV files " +"give \n" +" you an example for Products and their Categories." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:271 +#, python-format +msgid "" +"How to export/import different tables from an SQL \n" +" application to OpenERP?" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:331 +#, python-format +msgid "Relation Fields" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:142 +#, python-format +msgid "" +"Country/Database ID: the unique OpenERP ID for a \n" +" record, defined by the ID postgresql column" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:155 +#, python-format +msgid "" +"Use \n" +" Country/Database ID: You should rarely use this \n" +" notation. It's mostly used by developers as it's " +"main \n" +" advantage is to never have conflicts (you may have \n" +" several records with the same name, but they always " +"\n" +" have a unique Database ID)" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:146 +#, python-format +msgid "" +"For the country \n" +" Belgium, you can use one of these 3 ways to import:" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:303 +#, python-format +msgid "company_1,Bigees,True" +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_m2o +msgid "base_import.tests.models.m2o" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:297 +#, python-format +msgid "" +"copy \n" +" (select 'company_'||id as \"External " +"ID\",company_name \n" +" as \"Name\",'True' as \"Is a Company\" from " +"companies) TO \n" +" '/tmp/company.csv' with CSV HEADER;" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:206 +#, python-format +msgid "CSV file for Manufacturer, Retailer" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:160 +#, python-format +msgid "" +"Use \n" +" Country/External ID: Use External ID when you import " +"\n" +" data from a third party application." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:316 +#, python-format +msgid "person_1,Fabien,False,company_1" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:80 +#, python-format +msgid "XXX/External ID" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:351 +#, python-format +msgid "Don't Import" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:24 +#, python-format +msgid "Select the" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:100 +#, python-format +msgid "" +"Note that if your CSV file \n" +" has a tabulation as separator, OpenERP will not \n" +" detect the separations. You will need to change the " +"\n" +" file format options in your spreadsheet application. " +"\n" +" See the following question." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:141 +#, python-format +msgid "Country: the name or code of the country" +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_o2m_child +msgid "base_import.tests.models.o2m.child" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:239 +#, python-format +msgid "Can I import several times the same record?" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:15 +#, python-format +msgid "Validate" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:55 +#, python-format +msgid "Map your data to OpenERP" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:153 +#, python-format +msgid "" +"Use Country: This is \n" +" the easiest way when your data come from CSV files \n" +" that have been created manually." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:127 +#, python-format +msgid "" +"What's the difference between Database ID and \n" +" External ID?" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:138 +#, python-format +msgid "" +"For example, to \n" +" reference the country of a contact, OpenERP proposes " +"\n" +" you 3 different fields to import:" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:175 +#, python-format +msgid "What can I do if I have multiple matches for a field?" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:302 +#, python-format +msgid "External ID,Name,Is a Company" +msgstr "" + +#. module: base_import +#: field:base_import.tests.models.preview,somevalue:0 +msgid "Some Value" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:231 +#, python-format +msgid "" +"The following CSV file shows how to import \n" +" suppliers and their respective contacts" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:109 +#, python-format +msgid "" +"How can I change the CSV file format options when \n" +" saving in my spreadsheet application?" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:320 +#, python-format +msgid "" +"As you can see in this file, Fabien and Laurence \n" +" are working for the Bigees company (company_1) and \n" +" Eric is working for the Organi company. The relation " +"\n" +" between persons and companies is done using the \n" +" External ID of the companies. We had to prefix the \n" +" \"External ID\" by the name of the table to avoid a " +"\n" +" conflict of ID between persons and companies " +"(person_1 \n" +" and company_1 who shared the same ID 1 in the " +"orignial \n" +" database)." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:308 +#, python-format +msgid "" +"copy (select \n" +" 'person_'||id as \"External ID\",person_name as \n" +" \"Name\",'False' as \"Is a " +"Company\",'company_'||company_id\n" +" as \"Related Company/External ID\" from persons) TO " +"\n" +" '/tmp/person.csv' with CSV" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:148 +#, python-format +msgid "Country: Belgium" +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_char_stillreadonly +msgid "base_import.tests.models.char.stillreadonly" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:314 +#, python-format +msgid "" +"External ID,Name,Is a \n" +" Company,Related Company/External ID" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:233 +#, python-format +msgid "Suppliers and their respective contacts" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:179 +#, python-format +msgid "" +"If for example you have two product categories \n" +" with the child name \"Sellable\" (ie. \"Misc. \n" +" Products/Sellable\" & \"Other Products/Sellable\"),\n" +" your validation is halted but you may still import \n" +" your data. However, we recommend you do not import " +"the \n" +" data because they will all be linked to the first \n" +" 'Sellable' category found in the Product Category " +"list \n" +" (\"Misc. Products/Sellable\"). We recommend you " +"modify \n" +" one of the duplicates' values or your product " +"category \n" +" hierarchy." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:306 +#, python-format +msgid "" +"To create the CSV file for persons, linked to \n" +" companies, we will use the following SQL command in " +"\n" +" PSQL:" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:119 +#, python-format +msgid "" +"Microsoft Excel will allow \n" +" you to modify only the encoding when saving \n" +" (in 'Save As' dialog box > click 'Tools' dropdown \n" +" list > Encoding tab)." +msgstr "" + +#. module: base_import +#: field:base_import.tests.models.preview,othervalue:0 +msgid "Other Variable" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:82 +#, python-format +msgid "" +"will also be used to update the original\n" +" import if you need to re-import modified data\n" +" later, it's thus good practice to specify it\n" +" whenever possible" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:26 +#, python-format +msgid "" +"file to import. If you need a sample importable file, you\n" +" can use the export tool to generate one." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:148 +#, python-format +msgid "" +"Country/Database \n" +" ID: 21" +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_char +msgid "base_import.tests.models.char" +msgstr "" + +#. module: base_import +#: help:base_import.import,file:0 +msgid "File to check and/or import, raw binary (not base64)" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:230 +#, python-format +msgid "Purchase orders with their respective purchase order lines" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:60 +#, python-format +msgid "" +"If the file contains\n" +" the column names, OpenERP can try auto-detecting the\n" +" field corresponding to the column. This makes imports\n" +" simpler especially when the file has many columns." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:26 +#, python-format +msgid ".CSV" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:360 +#, python-format +msgid "" +". The issue is\n" +" usually an incorrect file encoding." +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_m2o_required +msgid "base_import.tests.models.m2o.required" +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_char_noreadonly +msgid "base_import.tests.models.char.noreadonly" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:113 +#, python-format +msgid "" +"If you edit and save CSV files in speadsheet \n" +" applications, your computer's regional settings will " +"\n" +" be applied for the separator and delimiter. \n" +" We suggest you use OpenOffice or LibreOffice Calc \n" +" as they will allow you to modify all three options \n" +" (in 'Save As' dialog box > Check the box 'Edit " +"filter \n" +" settings' > Save)." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:30 +#, python-format +msgid "CSV File:" +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_preview +msgid "base_import.tests.models.preview" +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_char_required +msgid "base_import.tests.models.char.required" +msgstr "" + +#. module: base_import +#: code:addons/base_import/models.py:112 +#, python-format +msgid "Database ID" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:313 +#, python-format +msgid "It will produce the following CSV file:" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:362 +#, python-format +msgid "Here is the start of the file we could not import:" +msgstr "" + +#. module: base_import +#: field:base_import.import,file_type:0 +msgid "File Type" +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_import +msgid "base_import.import" +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_o2m +msgid "base_import.tests.models.o2m" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:360 +#, python-format +msgid "Import preview failed due to:" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:144 +#, python-format +msgid "" +"Country/External ID: the ID of this record \n" +" referenced in another application (or the .XML file " +"\n" +" that imported it)" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:35 +#, python-format +msgid "Reload data to check changes." +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_char_readonly +msgid "base_import.tests.models.char.readonly" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:131 +#, python-format +msgid "" +"Some fields define a relationship with another \n" +" object. For example, the country of a contact is a \n" +" link to a record of the 'Country' object. When you \n" +" want to import such fields, OpenERP will have to \n" +" recreate links between the different records. \n" +" To help you import such fields, OpenERP provides 3 \n" +" mechanisms. You must use one and only one mechanism " +"\n" +" per field you want to import." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:201 +#, python-format +msgid "" +"The tags should be separated by a comma without any \n" +" spacing. For example, if you want you customer to be " +"\n" +" lined to both tags 'Manufacturer' and 'Retailer' \n" +" then you will encode it as follow \"Manufacturer,\n" +" Retailer\" in the same column of your CSV file." +msgstr "" + +#. module: base_import +#: code:addons/base_import/models.py:264 +#, python-format +msgid "You must configure at least one field to import" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:304 +#, python-format +msgid "company_2,Organi,True" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:58 +#, python-format +msgid "" +"The first row of the\n" +" file contains the label of the column" +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_char_states +msgid "base_import.tests.models.char.states" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:7 +#, python-format +msgid "Import a CSV File" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:74 +#, python-format +msgid "Quoting:" +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_m2o_required_related +msgid "base_import.tests.models.m2o.required.related" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:293 +#, python-format +msgid ")." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:18 +#: code:addons/base_import/static/src/xml/import.xml:396 +#, python-format +msgid "Import" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:438 +#, python-format +msgid "Here are the possible values:" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:82 +#, python-format +msgid "The" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:248 +#, python-format +msgid "" +"A single column was found in the file, this often means the file separator " +"is incorrect" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:293 +#, python-format +msgid "dump of such a PostgreSQL database" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:301 +#, python-format +msgid "This SQL command will create the following CSV file:" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:228 +#, python-format +msgid "" +"The following CSV file shows how to import purchase \n" +" orders with their respective purchase order lines:" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:91 +#, python-format +msgid "" +"What can I do when the Import preview table isn't \n" +" displayed correctly?" +msgstr "" + +#. module: base_import +#: field:base_import.tests.models.char,value:0 +#: field:base_import.tests.models.char.noreadonly,value:0 +#: field:base_import.tests.models.char.readonly,value:0 +#: field:base_import.tests.models.char.required,value:0 +#: field:base_import.tests.models.char.states,value:0 +#: field:base_import.tests.models.char.stillreadonly,value:0 +#: field:base_import.tests.models.m2o,value:0 +#: field:base_import.tests.models.m2o.related,value:0 +#: field:base_import.tests.models.m2o.required,value:0 +#: field:base_import.tests.models.m2o.required.related,value:0 +#: field:base_import.tests.models.o2m,value:0 +#: field:base_import.tests.models.o2m.child,parent_id:0 +#: field:base_import.tests.models.o2m.child,value:0 +msgid "unknown" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:317 +#, python-format +msgid "person_2,Laurence,False,company_1" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:149 +#, python-format +msgid "Country/External ID: base.be" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:288 +#, python-format +msgid "" +"As an example, suppose you have a SQL database \n" +" with two tables you want to import: companies and \n" +" persons. Each person belong to one company, so you \n" +" will have to recreate the link between a person and " +"\n" +" the company he work for. (If you want to test this \n" +" example, here is a" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:427 +#, python-format +msgid "(%d more)" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:227 +#, python-format +msgid "File for some Quotations" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:72 +#, python-format +msgid "Encoding:" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:280 +#, python-format +msgid "" +"To manage relations between tables, \n" +" you can use the \"External ID\" facilities of " +"OpenERP. \n" +" The \"External ID\" of a record is the unique " +"identifier \n" +" of this record in another application. This " +"\"External \n" +" ID\" must be unique accoss all the records of all \n" +" objects, so it's a good practice to prefix this \n" +" \"External ID\" with the name of the application or " +"\n" +" table. (like 'company_1', 'person_1' instead of '1')" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:295 +#, python-format +msgid "" +"We will first export all companies and their \n" +" \"External ID\". In PSQL, write the following " +"command:" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:212 +#, python-format +msgid "" +"How can I import a one2many relationship (e.g. several \n" +" Order Lines of a Sales Order)?" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:404 +#, python-format +msgid "Everything seems valid." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:188 +#, python-format +msgid "" +"However if you do not wish to change your \n" +" configuration of product categories, we recommend " +"you \n" +" use make use of the external ID for this field \n" +" 'Category'." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:421 +#, python-format +msgid "at row %d" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:197 +#, python-format +msgid "" +"How can I import a many2many relationship field \n" +" (e.g. a customer that has multiple tags)?" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:80 +#, python-format +msgid "XXX/ID" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:275 +#, python-format +msgid "" +"If you need to import data from different tables, \n" +" you will have to recreate relations between records " +"\n" +" belonging to different tables. (e.g. if you import \n" +" companies and persons, you will have to recreate the " +"\n" +" link between each person and the company they work \n" +" for)." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:150 +#, python-format +msgid "" +"According to your need, you should use \n" +" one of these 3 ways to reference records in " +"relations. \n" +" Here is when you should use one or the other, \n" +" according to your need:" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:319 +#, python-format +msgid "person_4,Ramsy,False,company_3" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:261 +#, python-format +msgid "" +"If you do not set all fields in your CSV file, \n" +" OpenERP will assign the default value for every non " +"\n" +" defined fields. But if you\n" +" set fields with empty values in your CSV file, " +"OpenERP \n" +" will set the EMPTY value in the field, instead of \n" +" assigning the default value." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:20 +#, python-format +msgid "Cancel" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:257 +#, python-format +msgid "" +"What happens if I do not provide a value for a \n" +" specific field?" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:68 +#, python-format +msgid "Frequently Asked Questions" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:305 +#, python-format +msgid "company_3,Boum,True" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:249 +#, python-format +msgid "" +"This feature \n" +" allows you to use the Import/Export tool of OpenERP " +"to \n" +" modify a batch of records in your favorite " +"spreadsheet \n" +" application." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:77 +#, python-format +msgid "" +"column in OpenERP. When you\n" +" import an other record that links to the first\n" +" one, use" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:242 +#, python-format +msgid "" +"If you import a file that contains one of the \n" +" column \"External ID\" or \"Database ID\", records " +"that \n" +" have already been imported will be modified instead " +"of \n" +" being created. This is very usefull as it allows you " +"\n" +" to import several times the same CSV file while " +"having \n" +" made some changes in between two imports. OpenERP " +"will \n" +" take care of creating or modifying each record \n" +" depending if it's new or not." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:169 +#, python-format +msgid "CSV file for categories" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:330 +#, python-format +msgid "Normal Fields" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:74 +#, python-format +msgid "" +"In order to re-create relationships between\n" +" different records, you should use the unique\n" +" identifier from the original application and\n" +" map it to the" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:170 +#, python-format +msgid "CSV file for Products" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:216 +#, python-format +msgid "" +"If you want to import sales order having several \n" +" order lines; for each order line, you need to " +"reserve \n" +" a specific row in the CSV file. The first order line " +"\n" +" will be imported on the same row as the information " +"\n" +" relative to order. Any additional lines will need an " +"\n" +" addtional row that does not have any information in " +"\n" +" the fields relative to the order." +msgstr "" + +#. module: base_import +#: model:ir.model,name:base_import.model_base_import_tests_models_m2o_related +msgid "base_import.tests.models.m2o.related" +msgstr "" + +#. module: base_import +#: field:base_import.tests.models.preview,name:0 +msgid "Name" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:80 +#, python-format +msgid "to the original unique identifier." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:318 +#, python-format +msgid "person_3,Eric,False,company_2" +msgstr "" + +#. module: base_import +#: field:base_import.import,res_model:0 +msgid "Model" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:77 +#: code:addons/base_import/static/src/xml/import.xml:82 +#, python-format +msgid "ID" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:329 +#, python-format +msgid "" +"The two files produced are ready to be imported in \n" +" OpenERP without any modifications. After having \n" +" imported these two CSV files, you will have 4 " +"contacts \n" +" and 3 companies. (the firsts two contacts are linked " +"\n" +" to the first company). You must first import the \n" +" companies and then the persons." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:95 +#, python-format +msgid "" +"By default the Import preview is set on commas as \n" +" field separators and quotation marks as text \n" +" delimiters. If your csv file does not have these \n" +" settings, you can modify the File Format Options \n" +" (displayed under the Browse CSV file bar after you \n" +" select your file)." +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:73 +#, python-format +msgid "Separator:" +msgstr "" + +#. module: base_import +#: field:base_import.import,file_name:0 +msgid "File Name" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/models.py:80 +#: code:addons/base_import/models.py:111 +#: code:addons/base_import/static/src/xml/import.xml:77 +#: code:addons/base_import/static/src/xml/import.xml:82 +#, python-format +msgid "External ID" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:39 +#, python-format +msgid "File Format Options…" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/js/import.js:423 +#, python-format +msgid "between rows %d and %d" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:19 +#, python-format +msgid "or" +msgstr "" + +#. module: base_import +#. openerp-web +#: code:addons/base_import/static/src/xml/import.xml:223 +#, python-format +msgid "" +"As an example, here is \n" +" purchase.order_functional_error_line_cant_adpat.CSV " +"\n" +" file of some quotations you can import, based on " +"demo \n" +" data." +msgstr "" + +#. module: base_import +#: field:base_import.import,file:0 +msgid "File" +msgstr "" diff --git a/addons/base_status/i18n/cs.po b/addons/base_status/i18n/cs.po new file mode 100644 index 00000000000..3fdb5247e7f --- /dev/null +++ b/addons/base_status/i18n/cs.po @@ -0,0 +1,76 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-03-30 12:43+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-03-31 05:28+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: base_status +#: code:addons/base_status/base_state.py:107 +#, python-format +msgid "Error !" +msgstr "" + +#. module: base_status +#: code:addons/base_status/base_state.py:166 +#, python-format +msgid "%s has been <b>opened</b>." +msgstr "" + +#. module: base_status +#: code:addons/base_status/base_state.py:199 +#, python-format +msgid "%s has been <b>renewed</b>." +msgstr "" + +#. module: base_status +#: code:addons/base_status/base_stage.py:210 +#, python-format +msgid "Error!" +msgstr "" + +#. module: base_status +#: code:addons/base_status/base_state.py:107 +#, python-format +msgid "" +"You can not escalate, you are already at the top level regarding your sales-" +"team category." +msgstr "" + +#. module: base_status +#: code:addons/base_status/base_state.py:193 +#, python-format +msgid "%s is now <b>pending</b>." +msgstr "" + +#. module: base_status +#: code:addons/base_status/base_state.py:187 +#, python-format +msgid "%s has been <b>canceled</b>." +msgstr "" + +#. module: base_status +#: code:addons/base_status/base_stage.py:210 +#, python-format +msgid "" +"You are already at the top level of your sales-team category.\n" +"Therefore you cannot escalate furthermore." +msgstr "" + +#. module: base_status +#: code:addons/base_status/base_state.py:181 +#, python-format +msgid "%s has been <b>closed</b>." +msgstr "" diff --git a/addons/board/static/src/js/dashboard.js b/addons/board/static/src/js/dashboard.js index bd9625a4fa8..3489b686e1b 100644 --- a/addons/board/static/src/js/dashboard.js +++ b/addons/board/static/src/js/dashboard.js @@ -419,8 +419,10 @@ instance.board.AddToDashboard = instance.web.search.Input.extend({ instance.web.SearchView.include({ add_common_inputs: function() { this._super(); - (new instance.board.AddToDashboard(this)); - + var vm = this.getParent().getParent(); + if (vm.inner_action && vm.inner_action.views) { + (new instance.board.AddToDashboard(this)); + } } }); diff --git a/addons/crm/__openerp__.py b/addons/crm/__openerp__.py index 0dd075d48e6..072624a7d98 100644 --- a/addons/crm/__openerp__.py +++ b/addons/crm/__openerp__.py @@ -81,6 +81,8 @@ Dashboard for CRM will include: 'crm_lead_view.xml', 'crm_lead_menu.xml', + 'crm_case_section_view.xml', + 'crm_meeting_menu.xml', 'crm_phonecall_view.xml', @@ -103,20 +105,37 @@ Dashboard for CRM will include: 'crm_action_rule_demo.xml', ], 'test': [ - 'test/process/communication_with_customer.yml', - 'test/process/lead2opportunity2win.yml', - 'test/process/lead2opportunity_assign_salesmen.yml', - 'test/process/merge_opportunity.yml', - 'test/process/cancel_lead.yml', - 'test/process/segmentation.yml', - 'test/process/phonecalls.yml', - 'test/ui/crm_demo.yml', - 'test/ui/duplicate_lead.yml', - 'test/ui/delete_lead.yml', + 'test/crm_lead_message.yml', + 'test/lead2opportunity2win.yml', + 'test/lead2opportunity_assign_salesmen.yml', + 'test/crm_lead_merge.yml', + 'test/crm_lead_cancel.yml', + 'test/segmentation.yml', + 'test/phonecalls.yml', + 'test/crm_lead_onchange.yml', + 'test/crm_lead_copy.yml', + 'test/crm_lead_unlink.yml', + ], + 'css': [ + 'static/src/css/crm.css' + ], + 'js': [ + 'static/src/js/crm.js' ], 'installable': True, 'application': True, 'auto_install': False, - 'images': ['images/crm_dashboard.png', 'images/customers.png','images/leads.png','images/opportunities_kanban.png','images/opportunities_form.png','images/opportunities_calendar.png','images/opportunities_graph.png','images/logged_calls.png','images/scheduled_calls.png','images/stages.png'], + 'images': [ + 'images/crm_dashboard.png', + 'images/customers.png', + 'images/leads.png', + 'images/opportunities_kanban.png', + 'images/opportunities_form.png', + 'images/opportunities_calendar.png', + 'images/opportunities_graph.png', + 'images/logged_calls.png', + 'images/scheduled_calls.png', + 'images/stages.png', + ], } # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/crm/crm.py b/addons/crm/crm.py index df6d5e12b66..7b6fe02afa8 100644 --- a/addons/crm/crm.py +++ b/addons/crm/crm.py @@ -98,6 +98,7 @@ class crm_case_stage(osv.osv): 'case_default': True, } + class crm_case_section(osv.osv): """ Model for sales teams. """ _name = "crm.case.section" @@ -107,7 +108,7 @@ class crm_case_section(osv.osv): _order = "complete_name" def get_full_name(self, cr, uid, ids, field_name, arg, context=None): - return dict(self.name_get(cr, uid, ids, context=context)) + return dict(self.name_get(cr, uid, ids, context=context)) _columns = { 'name': fields.char('Sales Team', size=64, required=True, translate=True), @@ -117,27 +118,36 @@ class crm_case_section(osv.osv): "true, it will allow you to hide the sales team without removing it."), 'change_responsible': fields.boolean('Reassign Escalated', help="When escalating to this team override the salesman with the team leader."), 'user_id': fields.many2one('res.users', 'Team Leader'), - 'member_ids':fields.many2many('res.users', 'sale_member_rel', 'section_id', 'member_id', 'Team Members'), + 'member_ids': fields.many2many('res.users', 'sale_member_rel', 'section_id', 'member_id', 'Team Members'), 'reply_to': fields.char('Reply-To', size=64, help="The email address put in the 'Reply-To' of all emails sent by OpenERP about cases in this sales team"), 'parent_id': fields.many2one('crm.case.section', 'Parent Team'), 'child_ids': fields.one2many('crm.case.section', 'parent_id', 'Child Teams'), 'resource_calendar_id': fields.many2one('resource.calendar', "Working Time", help="Used to compute open days"), 'note': fields.text('Description'), - 'working_hours': fields.float('Working Hours', digits=(16,2 )), + 'working_hours': fields.float('Working Hours', digits=(16, 2)), 'stage_ids': fields.many2many('crm.case.stage', 'section_stage_rel', 'section_id', 'stage_id', 'Stages'), 'alias_id': fields.many2one('mail.alias', 'Alias', ondelete="cascade", required=True, help="The email address associated with this team. New emails received will automatically " "create new leads assigned to the team."), + 'open_lead_ids': fields.one2many('crm.lead', 'section_id', + string='Open Leads', readonly=True, + domain=['&', ('type', '!=', 'opportunity'), ('state', 'not in', ['done', 'cancel'])]), + 'open_opportunity_ids': fields.one2many('crm.lead', 'section_id', + string='Open Opportunities', readonly=True, + domain=['&', '|', ('type', '=', 'opportunity'), ('type', '=', 'both'), ('state', 'not in', ['done', 'cancel'])]), + 'color': fields.integer('Color Index'), + 'use_leads': fields.boolean('Leads', + help="This enables the management of leads in the sales team. Otherwise the sales team manages only opportunities."), } def _get_stage_common(self, cr, uid, context): - ids = self.pool.get('crm.case.stage').search(cr, uid, [('case_default','=',1)], context=context) + ids = self.pool.get('crm.case.stage').search(cr, uid, [('case_default', '=', 1)], context=context) return ids _defaults = { 'active': 1, 'stage_ids': _get_stage_common, - 'alias_domain': False, # always hide alias during creation + 'use_leads': True, } _sql_constraints = [ @@ -150,7 +160,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: @@ -167,20 +177,20 @@ class crm_case_section(osv.osv): def create(self, cr, uid, vals, context=None): mail_alias = self.pool.get('mail.alias') if not vals.get('alias_id'): - vals.pop('alias_name', None) # prevent errors during copy() + alias_name = vals.pop('alias_name', None) or vals.get('name') # prevent errors during copy() alias_id = mail_alias.create_unique_alias(cr, uid, - {'alias_name': vals['name']}, + {'alias_name': alias_name}, model_name="crm.lead", context=context) vals['alias_id'] = alias_id res = super(crm_case_section, self).create(cr, uid, vals, context) - mail_alias.write(cr, uid, [vals['alias_id']], {'alias_defaults': {'section_id': res, 'type':'lead'}}, context) + mail_alias.write(cr, uid, [vals['alias_id']], {'alias_defaults': {'section_id': res, 'type': 'lead'}}, context) return res def unlink(self, cr, uid, ids, context=None): # Cascade-delete mail aliases as well, as they should not exist without the sales team. mail_alias = self.pool.get('mail.alias') - alias_ids = [team.alias_id.id for team in self.browse(cr, uid, ids, context=context) if team.alias_id ] + alias_ids = [team.alias_id.id for team in self.browse(cr, uid, ids, context=context) if team.alias_id] res = super(crm_case_section, self).unlink(cr, uid, ids, context=context) mail_alias.unlink(cr, uid, alias_ids, context=context) return res @@ -230,4 +240,5 @@ class crm_payment_mode(osv.osv): 'section_id': fields.many2one('crm.case.section', 'Sales Team'), } + # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/crm/crm_case_section_view.xml b/addons/crm/crm_case_section_view.xml new file mode 100644 index 00000000000..c788872b47e --- /dev/null +++ b/addons/crm/crm_case_section_view.xml @@ -0,0 +1,294 @@ +<?xml version="1.0" encoding="utf-8"?> +<openerp> + <data> + + <!-- CRM lead search by Salesteams --> + + <record model="ir.actions.act_window" id="crm_case_form_view_salesteams_lead"> + <field name="name">Leads</field> + <field name="res_model">crm.lead</field> + <field name="view_mode">tree,form</field> + <field name="domain">['|', ('type','=','lead'), ('type','=',False)]</field> + <field name="view_id" ref="crm_case_tree_view_leads"/> + <field name="search_view_id" ref="crm.view_crm_case_leads_filter"/> + <field name="context">{ + 'search_default_section_id': [active_id], + 'search_default_open': 1, + 'default_section_id': active_id, + 'default_type': 'lead', + 'stage_type': 'lead', + } + </field> + <field name="help" type="html"> + <p> + Use leads if you need a qualification step before creating an + opportunity or a customer. It can be a business card you received, + a contact form filled in your website, or a file of unqualified + prospects you import, etc. + </p><p> + Once qualified, the lead can be converted into a business + opportunity and/or a new customer in your address book. + </p> + </field> + </record> + + <!-- CRM opportunity search by Salesteams --> + + <record model="ir.actions.act_window" id="crm_case_form_view_salesteams_opportunity"> + <field name="name">Opportunities</field> + <field name="res_model">crm.lead</field> + <field name="view_mode">kanban,tree,graph,form,calendar</field> + <field name="domain">[('type','=','opportunity')]</field> + <field name="view_id" ref="crm.crm_case_kanban_view_leads"/> + <field name="search_view_id" ref="crm.view_crm_case_opportunities_filter"/> + <field name="context">{ + 'search_default_section_id': [active_id], + 'search_default_new': 1, + 'search_default_open': 1, + 'default_section_id': active_id, + 'stage_type': 'opportunity', + 'default_type': 'opportunity', + 'default_user_id': uid, + } + </field> + <field name="help" type="html"> + <p class="oe_view_nocontent_create"> + Click to create a new opportunity. + </p><p> + OpenERP helps you keep track of your sales pipeline to follow + up potential sales and better forecast your future revenues. + </p><p> + You will be able to plan meetings and phone calls from + opportunities, convert them into quotations, attach related + documents, track all discussions, and much more. + </p> + </field> + </record> + + <!-- Case Sections Salesteams kanban view --> + + <record model="ir.ui.view" id="crm_case_section_salesteams_view_kanban"> + <field name="name">crm.case.section.kanban</field> + <field name="model">crm.case.section</field> + <field name="arch" type="xml"> + <kanban version="7.0" class="oe_background_grey"> + <field name="use_leads"/> + <field name="name"/> + <field name="user_id"/> + <field name="member_ids"/> + <field name="note"/> + <field name="alias_id"/> + <field name="color"/> + <field name="open_lead_ids"/> + <field name="open_opportunity_ids"/> + <templates> + <t t-name="kanban-box"> + <div t-attf-class="oe_kanban_color_#{kanban_getcolor(record.color.raw_value)} oe_kanban_card oe_kanban_project oe_kanban_global_click oe_kanban_crm_salesteams"> + <div class="oe_dropdown_toggle oe_dropdown_kanban" groups="base.group_user"> + <span class="oe_e">í</span> + <ul class="oe_dropdown_menu"> + <li t-if="widget.view.is_action_enabled('edit')"><a type="edit">Sales Teams Settings</a></li> + <li t-if="widget.view.is_action_enabled('delete')"><a type="delete">Delete</a></li> + <li t-if="widget.view.is_action_enabled('edit')"><ul class="oe_kanban_colorpicker" data-field="color"/></li> + </ul> + </div> + <div class="oe_kanban_content"> + <h4><field name="name"/></h4> + <div class="oe_kanban_alias" t-if="record.use_leads.raw_value and record.alias_id.value"> + <span class="oe_e">%%</span><small><field name="alias_id"/></small> + </div> + <div class="oe_items_list"> + <a t-if="record.use_leads.raw_value" name="%(crm_case_form_view_salesteams_lead)d" type="action"> + <t t-raw="record.open_lead_ids.raw_value.length"/> + <t t-if="record.open_lead_ids.raw_value.length >= 2">Leads</t> + <t t-if="record.open_lead_ids.raw_value.length < 2">Lead</t></a> + <a name="%(crm_case_form_view_salesteams_opportunity)d" type="action"> + <t t-raw="record.open_opportunity_ids.raw_value.length"/> + <t t-if="record.open_opportunity_ids.raw_value.length >= 2">Opportunities</t> + <t t-if="record.open_opportunity_ids.raw_value.length < 2">Opportunity</t></a> + </div> + <div class="oe_avatars"> + <img t-if="record.user_id.raw_value" t-att-src="kanban_image('res.users', 'image_small', record.user_id.raw_value)" t-att-data-member_id="record.user_id.raw_value"/> + <t t-foreach="record.member_ids.raw_value.slice(0,11)" t-as="member"> + <img t-att-src="kanban_image('res.users', 'image_small', member)" t-att-data-member_id="member"/> + </t> + </div> + </div> + </div> + </t> + </templates> + </kanban> + </field> + </record> + + <!-- Case Sections Action --> + + <record id="crm_case_section_salesteams_act" model="ir.actions.act_window"> + <field name="name">Sales Teams</field> + <field name="res_model">crm.case.section</field> + <field name="view_type">form</field> + <field name="view_mode">kanban,tree,form</field> + <field name="view_id" ref="crm_case_section_salesteams_view_kanban"/> + <field name="help" type="html"> + <p class="oe_view_nocontent_create"> + Click here to define a new sales team. + </p><p> + Use sales team to organize your different salespersons or + departments into separate teams. Each team will work in + its own list of opportunities. + </p> + </field> + </record> + + <!-- Case Sections Form View --> + + <record id="crm_case_section_view_form" model="ir.ui.view"> + <field name="name">crm.case.section.form</field> + <field name="model">crm.case.section</field> + <field name="arch" type="xml"> + <form string="Sales Team" version="7.0"> + <sheet> + <div class="oe_title"> + <label for="name" class="oe_edit_only" string="Project Name"/> + <h1> + <field name="name" string="Project Name"/> + </h1> + <div name="group_alias" + attrs="{'invisible': [('alias_domain', '=', False)]}"> + <label for="alias_id" string="Email Alias"/> + <field name="alias_id" class="oe_inline oe_read_only" required="0" nolabel="1"/> + <span name="edit_alias" class="oe_edit_only"> + <field name="alias_name" class="oe_inline" + attrs="{'required': [('use_leads', '=', True), ('alias_id', '!=', False)]}"/> + @ + <field name="alias_domain" class="oe_inline" readonly="1"/> + </span> + </div> + <div name="options_active"> + <field name="use_leads" class="oe_inline"/><label for="use_leads"/> + </div> + </div> + <group> + <group> + <field name="parent_id"/> + <field name="resource_calendar_id"/> + <field name="active"/> + </group> + <group> + <field name="user_id"/> + <field name="code"/> + </group> + <group colspan="4" attrs="{'invisible': [('use_leads', '=', False)]}"> + + </group> + </group> + <notebook colspan="4"> + <page string="Sales Team"> + <group> + <field name="change_responsible"/> + </group> + <separator string="Team Members"/> + <field name="member_ids" widget="many2many_kanban"> + <kanban quick_create="false" create="true"> + <field name="name"/> + <templates> + <t t-name="kanban-box"> + <div style="position: relative"> + <a t-if="! read_only_mode" type="delete" style="position: absolute; right: 0; padding: 4px; diplay: inline-block">X</a> + <div class="oe_module_vignette"> + <div class="oe_module_desc"> + <field name="name"/> + </div> + </div> + </div> + </t> + </templates> + </kanban> + </field> + </page> + <page string="Stages"> + <separator string="Select Stages for this Sales Team"/> + <field name="stage_ids"/> + </page> + <page string="Notes"> + <field name="note"/> + </page> + </notebook> + </sheet> + <div class="oe_chatter"> + <field name="message_follower_ids" widget="mail_followers" help="Follow this salesteam to automatically track the events associated to users of this team."/> + <field name="message_ids" widget="mail_thread"/> + </div> + </form> + </field> + </record> + + <!-- Case Sections Tree View --> + + <record id="crm_case_section_view_tree" model="ir.ui.view"> + <field name="name">crm.case.section.tree</field> + <field name="model">crm.case.section</field> + <field name="field_parent">child_ids</field> + <field name="arch" type="xml"> + <tree string="Sales Team"> + <field name="name"/> + <field name="code"/> + <field name="user_id"/> + </tree> + </field> + </record> + + <!-- Case Sections Action --> + + <record model="ir.actions.act_window.view" id="action_crm_tag_kanban_view_salesteams_oppor11"> + <field name="sequence" eval="0"/> + <field name="view_mode">kanban</field> + <field name="view_id" ref="crm_case_kanban_view_leads"/> + <field name="act_window_id" ref="crm_case_form_view_salesteams_opportunity"/> + </record> + + <record model="ir.actions.act_window.view" id="action_crm_tag_tree_view_salesteams_oppor11"> + <field name="sequence" eval="1"/> + <field name="view_mode">tree</field> + <field name="view_id" ref="crm_case_tree_view_oppor"/> + <field name="act_window_id" ref="crm_case_form_view_salesteams_opportunity"/> + </record> + + <record model="ir.actions.act_window.view" id="action_crm_tag_form_view_salesteams_oppor11"> + <field name="sequence" eval="2"/> + <field name="view_mode">form</field> + <field name="view_id" ref="crm_case_form_view_oppor"/> + <field name="act_window_id" ref="crm_case_form_view_salesteams_opportunity"/> + </record> + + <record id="crm_case_section_act_tree" model="ir.actions.act_window"> + <field name="name">Cases by Sales Team</field> + <field name="res_model">crm.case.section</field> + <field name="domain">[('parent_id','=',False)]</field> + <field name="view_type">tree</field> + <field name="view_id" ref="crm_case_section_view_tree"/> + </record> + + <record id="crm_case_section_act" model="ir.actions.act_window"> + <field name="name">Sales Teams</field> + <field name="res_model">crm.case.section</field> + <field name="view_type">form</field> + <field name="view_id" ref="crm_case_section_view_tree"/> + <field name="help" type="html"> + <p class="oe_view_nocontent_create"> + Click here to define a new sales team. + </p><p> + Use sales team to organize your different salespersons or + departments into separate teams. Each team will work in + its own list of opportunities. + </p> + </field> + </record> + + <menuitem id="crm.menu_crm_case_section_act" + action="crm_case_section_salesteams_act" + sequence="1" + parent="base.menu_sales" + groups="base.group_multi_salesteams"/> + </data> +</openerp>
\ No newline at end of file diff --git a/addons/crm/crm_data.xml b/addons/crm/crm_data.xml index 3db7a457dfd..f24aee13c1d 100644 --- a/addons/crm/crm_data.xml +++ b/addons/crm/crm_data.xml @@ -27,8 +27,10 @@ </record> <record model="crm.case.section" id="section_sales_department"> - <field name="name">Sales Department</field> + <field name="name">Sales</field> <field name="code">Sales</field> + <field name="use_leads">True</field> + <field name="member_ids" eval="[(4, ref('base.user_root'))]"/> </record> <!-- Payment Mode --> @@ -64,12 +66,6 @@ <p>To manage quotations and sale orders, install the "Sales Management" application.</p>]]></field> </record> - <record model="mail.alias" id="default_sales_alias"> - <field name="alias_name">sales</field> - <field name="alias_model_id" ref="model_crm_lead"/> - <field name="alias_user_id" ref="base.user_root"/> - <field name="alias_defaults">{'type':'lead'}</field> - </record> </data> </openerp> diff --git a/addons/crm/crm_lead.py b/addons/crm/crm_lead.py index 6c74ead0140..6d195fec383 100644 --- a/addons/crm/crm_lead.py +++ b/addons/crm/crm_lead.py @@ -22,6 +22,7 @@ from openerp.addons.base_status.base_stage import base_stage import crm from datetime import datetime +from operator import itemgetter from openerp.osv import fields, osv import time from openerp import tools @@ -84,6 +85,22 @@ class crm_lead(base_stage, format_address, osv.osv): }, } + def get_empty_list_help(self, cr, uid, help, context=None): + if context.get('default_type') == 'lead': + context['empty_list_help_model'] = 'crm.case.section' + context['empty_list_help_id'] = context.get('default_section_id') + context['empty_list_help_document_name'] = _("leads") + return super(crm_lead, self).get_empty_list_help(cr, uid, help, context=context) + + def onchange_user_id(self, cr, uid, ids, section_id, user_id, context=None): + """ When changing the user, also set a section_id or restrict section id + to the ones user_id is member of. """ + if user_id: + section_ids = self.pool.get('crm.case.section').search(cr, uid, ['|', ('user_id', '=', user_id), ('member_ids', '=', user_id)], context=context) + if len(section_ids) > 0 and section_id not in section_ids: + section_id = section_ids[0] + return {'value': {'section_id': section_id}} + def create(self, cr, uid, vals, context=None): if context is None: context = {} @@ -628,12 +645,13 @@ class crm_lead(base_stage, format_address, osv.osv): opportunities = self.browse(cr, uid, ids, context=context) sequenced_opps = [] for opportunity in opportunities: + sequence = -1 if opportunity.stage_id and opportunity.stage_id.state != 'cancel': - sequenced_opps.append((opportunity.stage_id.sequence, opportunity)) - else: - sequenced_opps.append((-1, opportunity)) - sequenced_opps.sort(key=lambda tup: tup[0], reverse=True) - opportunities = [opportunity for sequence, opportunity in sequenced_opps] + sequence = opportunity.stage_id.sequence + sequenced_opps.append(((int(sequence != -1 and opportunity.type == 'opportunity'), sequence, -opportunity.id), opportunity)) + + sequenced_opps.sort(reverse=True) + opportunities = map(itemgetter(1), sequenced_opps) ids = [opportunity.id for opportunity in opportunities] highest = opportunities[0] opportunities_rest = opportunities[1:] @@ -652,11 +670,10 @@ class crm_lead(base_stage, format_address, osv.osv): opportunities.extend(opportunities_rest) self._merge_notify(cr, uid, highest, opportunities, context=context) # Check if the stage is in the stages of the sales team. If not, assign the stage with the lowest sequence - if merged_data.get('type') == 'opportunity' and merged_data.get('section_id'): - section_stages = self.pool.get('crm.case.section').read(cr, uid, merged_data['section_id'], ['stage_ids'], context=context) - if merged_data.get('stage_id') not in section_stages['stage_ids']: - stages_sequences = self.pool.get('crm.case.stage').search(cr, uid, [('id','in',section_stages['stage_ids'])], order='sequence', limit=1, context=context) - merged_data['stage_id'] = stages_sequences and stages_sequences[0] or False + if merged_data.get('section_id'): + section_stage_ids = self.pool.get('crm.case.stage').search(cr, uid, [('section_ids', 'in', merged_data['section_id']), ('type', '=', merged_data.get('type'))], order='sequence', context=context) + if merged_data.get('stage_id') not in section_stage_ids: + merged_data['stage_id'] = section_stage_ids and section_stage_ids[0] or False # Write merged data into first opportunity self.write(cr, uid, [highest.id], merged_data, context=context) # Delete tail opportunities @@ -944,6 +961,7 @@ class crm_lead(base_stage, format_address, osv.osv): 'default_composition_mode': 'comment', }) return { + 'name': _('Compose Email'), 'type': 'ir.actions.act_window', 'view_type': 'form', 'view_mode': 'form', diff --git a/addons/crm/crm_lead_data.xml b/addons/crm/crm_lead_data.xml index e335bd1b2ff..0979a94eb3f 100644 --- a/addons/crm/crm_lead_data.xml +++ b/addons/crm/crm_lead_data.xml @@ -7,68 +7,69 @@ <field name="name">New</field> <field eval="1" name="case_default"/> <field name="state">draft</field> - <field eval="'10'" name="probability"/> - <field eval="'10'" name="sequence"/> + <field eval="0" name="probability"/> + <field eval="10" name="sequence"/> <field name="type">both</field> </record> <record model="crm.case.stage" id="stage_lead2"> <field name="name">Opportunity</field> <field eval="1" name="case_default"/> <field name="state">open</field> - <field eval="'20'" name="probability"/> - <field eval="'11'" name="sequence"/> + <field eval="20" name="probability"/> + <field eval="20" name="sequence"/> + <field name="type">lead</field> + </record> + <record model="crm.case.stage" id="stage_lead7"> + <field name="name">Dead</field> + <field eval="1" name="case_default"/> + <field eval="False" name="fold"/> + <field name="state">cancel</field> + <field eval="0" name="probability"/> + <field eval="30" name="sequence"/> <field name="type">lead</field> </record> <record model="crm.case.stage" id="stage_lead3"> <field name="name">Qualification</field> <field eval="1" name="case_default"/> <field name="state">open</field> - <field eval="'20'" name="probability"/> - <field eval="'12'" name="sequence"/> + <field eval="20" name="probability"/> + <field eval="100" name="sequence"/> <field name="type">opportunity</field> </record> <record model="crm.case.stage" id="stage_lead4"> <field name="name">Proposition</field> <field eval="1" name="case_default"/> <field name="state">open</field> - <field eval="'40'" name="probability"/> - <field eval="'13'" name="sequence"/> + <field eval="40" name="probability"/> + <field eval="110" name="sequence"/> <field name="type">opportunity</field> </record> <record model="crm.case.stage" id="stage_lead5"> <field name="name">Negotiation</field> <field eval="1" name="case_default"/> <field name="state">open</field> - <field eval="'60'" name="probability"/> - <field eval="'14'" name="sequence"/> + <field eval="60" name="probability"/> + <field eval="120" name="sequence"/> <field name="type">opportunity</field> </record> <record model="crm.case.stage" id="stage_lead6"> <field name="name">Won</field> + <field eval="True" name="fold"/> <field eval="1" name="case_default"/> <field name="state">done</field> - <field eval="'100'" name="probability"/> - <field eval="'15'" name="sequence"/> + <field eval="100" name="probability"/> + <field eval="130" name="sequence"/> <field eval="1" name="on_change"/> <field name="type">opportunity</field> </record> - <record model="crm.case.stage" id="stage_lead7"> - <field name="name">Dead</field> - <field eval="1" name="case_default"/> - <field eval="False" name="fold"/> - <field name="state">cancel</field> - <field eval="'0'" name="probability"/> - <field eval="'16'" name="sequence"/> - <field name="type">lead</field> - </record> <record model="crm.case.stage" id="stage_lead8"> <field name="name">Lost</field> <field eval="1" name="case_default"/> <field eval="True" name="fold"/> <field eval="1" name="on_change"/> <field name="state">cancel</field> - <field eval="'0'" name="probability"/> - <field eval="'17'" name="sequence"/> + <field eval="0" name="probability"/> + <field eval="140" name="sequence"/> <field name="type">opportunity</field> </record> @@ -228,7 +229,7 @@ <field name="name">Lead/Opportunity Mass Mail</field> <field name="model_id" ref="crm.model_crm_lead"/> <field name="auto_delete" eval="True"/> - <field name="partner_to">${object.partner_id and object.partner_id.id}</field> + <field name="partner_to">${object.partner_id != False and object.partner_id.id}</field> <field name="email_to">${not object.partner_id and object.email_from}</field> <field name="body_html"></field> </record> diff --git a/addons/crm/crm_lead_menu.xml b/addons/crm/crm_lead_menu.xml index 8c38ed41a1c..2226b4ac895 100644 --- a/addons/crm/crm_lead_menu.xml +++ b/addons/crm/crm_lead_menu.xml @@ -9,55 +9,49 @@ <field name="domain">['|', ('type','=','lead'), ('type','=',False)]</field> <field name="view_id" ref="crm_case_tree_view_leads"/> <field name="search_view_id" ref="crm.view_crm_case_leads_filter"/> - <field name="context">{'default_type':'lead', 'stage_type':'lead'}</field> + <field name="context">{ + 'default_type':'lead', + 'stage_type':'lead', + 'search_default_unassigned':1, + } + </field> <field name="help" type="html"> - <p class="oe_view_nocontent_create"> - Click to create an unqualified lead. - </p><p> - Use leads if you need a qualification step before creating an - opportunity or a customer. It can be a business card you received, - a contact form filled in your website, or a file of unqualified - prospects you import, etc. - </p><p> - Once qualified, the lead can be converted into a business - opportunity and/or a new customer in your address book. - </p> + <p> + Use leads if you need a qualification step before creating an + opportunity or a customer. It can be a business card you received, + a contact form filled in your website, or a file of unqualified + prospects you import, etc. + </p><p> + Once qualified, the lead can be converted into a business + opportunity and/or a new customer in your address book. + </p> </field> </record> - <record model="ir.actions.act_window.view" id="action_crm_tag_tree_view_leads_all"> - <field name="sequence" eval="1"/> - <field name="view_mode">tree</field> - <field name="view_id" ref="crm_case_tree_view_leads"/> - <field name="act_window_id" ref="crm_case_category_act_leads_all"/> - </record> - - <record model="ir.actions.act_window.view" id="action_crm_tag_form_view_leads_all"> - <field name="sequence" eval="3"/> - <field name="view_mode">form</field> - <field name="view_id" ref="crm_case_form_view_leads"/> - <field name="act_window_id" ref="crm_case_category_act_leads_all"/> - </record> - <record model="ir.actions.act_window" id="crm_case_category_act_oppor11"> <field name="name">Opportunities</field> <field name="res_model">crm.lead</field> <field name="view_mode">kanban,tree,graph,form,calendar</field> <field name="domain">[('type','=','opportunity')]</field> - <field name="context">{'stage_type': 'opportunity', 'default_type': 'opportunity', 'default_user_id': uid}</field> + <field name="context">{ + 'stage_type': 'opportunity', + 'default_type': 'opportunity', + 'default_user_id': uid + } + </field> <field name="view_id" eval="False"/> <field name="search_view_id" ref="crm.view_crm_case_opportunities_filter"/> <field name="help" type="html"> - <p class="oe_view_nocontent_create"> - Click to create a new opportunity. - </p><p> - OpenERP helps you keep track of your sales pipeline to follow - up potential sales and better forecast your future revenues. - </p><p> - You will be able to plan meetings and phone calls from - opportunities, convert them into quotations, attach related - documents, track all discussions, and much more. - </p> + <p class="oe_view_nocontent_create"> + Click to create a new opportunity. + </p><p> + OpenERP helps you keep track of your sales pipeline to follow + up potential sales and better forecast your future revenues. + </p><p> + You will be able to plan meetings and phone calls from + opportunities, convert them into quotations, attach related + documents, track all discussions, and much more. + </p> </field> </record> @@ -82,9 +76,13 @@ <field name="act_window_id" ref="crm_case_category_act_oppor11"/> </record> - <menuitem name="Sales" id="base.menu_sales" parent="base.menu_base_partner" sequence="1" /> - <menuitem name="Leads" id="menu_crm_leads" parent="base.menu_sales" action="crm_case_category_act_leads_all" sequence="2" /> - <menuitem name="Opportunities" id="menu_crm_opportunities" parent="base.menu_sales" action="crm_case_category_act_oppor11" sequence="3" /> + <menuitem name="Sales" id="base.menu_sales" parent="base.menu_base_partner" sequence="1"/> + <menuitem name="Leads" id="menu_crm_leads" parent="base.menu_sales" sequence="3" + action="crm_case_category_act_leads_all" + groups="base.group_mono_salesteams,base.group_sale_manager"/> + <menuitem name="Opportunities" id="menu_crm_opportunities" parent="base.menu_sales" sequence="4" + action="crm_case_category_act_oppor11" + groups="base.group_mono_salesteams,base.group_sale_manager"/> </data> </openerp> diff --git a/addons/crm/crm_lead_view.xml b/addons/crm/crm_lead_view.xml index df28d240a0c..3001e8b1d88 100644 --- a/addons/crm/crm_lead_view.xml +++ b/addons/crm/crm_lead_view.xml @@ -100,6 +100,7 @@ <button name="case_cancel" string="Cancel Case" type="object" states="draft,open,pending"/> <field name="stage_id" widget="statusbar" clickable="True" + domain="['&', '|', ('case_default', '=', True), ('section_ids', '=', section_id), '|', ('type', '=', type), ('type', '=', 'both')]" on_change="onchange_stage_id(stage_id)"/> </header> <sheet> @@ -151,12 +152,13 @@ --> </group> <group> - <field name="user_id" - context="{'default_groups_ref': ['base.group_user', 'base.group_sale_salesman_all_leads']}"/> - <label for="section_id"/> - <div> + <field name="user_id" on_change="onchange_user_id(section_id, user_id)" + context="{'default_groups_ref': ['base.group_user', 'base.group_sale_salesman_all_leads'] }"/> + <label for="section_id" groups="base.group_multi_salesteams"/> + <div groups="base.group_multi_salesteams"> <field name="section_id"/> - <button name="case_escalate" string="Escalate" type="object" attrs="{'invisible': ['|', ('section_id','=',False), ('state', 'not in', ['draft','open','pending'])]}"/> + <button name="case_escalate" string="Escalate" type="object" + attrs="{'invisible': ['|', ('section_id','=',False), ('state', 'not in', ['draft','open','pending'])]}"/> </div> <field name="type" invisible="1"/> </group> @@ -228,7 +230,7 @@ <field name="stage_id"/> <field name="user_id" invisible="1"/> <field name="partner_id" invisible="1"/> - <field name="section_id" invisible="context.get('invisible_section', True)"/> + <field name="section_id" invisible="context.get('invisible_section', True)" groups="base.group_multi_salesteams"/> <field name="state" invisible="1"/> <field name="type_id" invisible="1"/> <field name="referred" invisible="1"/> @@ -326,7 +328,7 @@ <search string="Search Leads"> <field name="name" string="Lead / Customer" filter_domain="['|','|',('partner_name','ilike',self),('email_from','ilike',self),('name','ilike',self)]"/> <field name="categ_ids" string="Category" filter_domain="[('categ_ids','ilike',self)]"/> - <field name="section_id" context="{'invisible_section': False, 'default_section_id': self}"/> + <field name="section_id" context="{'invisible_section': False}" groups="base.group_multi_salesteams"/> <field name="user_id"/> <field name="partner_id"/> <field name="create_date"/> @@ -334,7 +336,7 @@ <separator/> <filter string="Open" name="open" domain="[('state','!=','cancel')]" help="Open Leads"/> <filter string="Dead" name="dead" domain="[('state','=','cancel')]"/> - <filter string="Unassigned" domain="[('user_id','=', False)]" help="No salesperson"/> + <filter string="Unassigned" name="unassigned" domain="[('user_id','=', False)]" help="No salesperson"/> <filter string="Unread Messages" name="message_unread" domain="[('message_unread','=',True)]" help="Unread messages"/> <filter string="Assigned to Me" domain="[('user_id','=',uid)]" context="{'invisible_section': False}" @@ -427,9 +429,9 @@ </group> <group> - <field name="user_id" context="{'default_groups_ref': ['base.group_user', 'base.group_sale_salesman_all_leads']}"/> - <label for="section_id"/> - <div> + <field name="user_id" on_change="onchange_user_id(section_id, user_id)" context="{'default_groups_ref': ['base.group_user', 'base.group_sale_salesman_all_leads']}"/> + <label for="section_id" groups="base.group_multi_salesteams"/> + <div groups="base.group_multi_salesteams"> <field name="section_id" widget="selection"/> <button name="case_escalate" string="Escalate" type="object" class="oe_link" attrs="{'invisible': ['|', ('section_id','=',False), ('state', 'not in', ['draft','open','pending'])]}"/> </div> @@ -525,7 +527,7 @@ <field name="stage_id"/> <field name="planned_revenue" sum="Expected Revenues"/> <field name="probability" avg="Avg. of Probability"/> - <field name="section_id" invisible="context.get('invisible_section', True)"/> + <field name="section_id" invisible="context.get('invisible_section', True)" groups="base.group_multi_salesteams"/> <field name="user_id"/> <field name="referred" invisible="1"/> <field name="priority" invisible="1"/> @@ -544,7 +546,7 @@ <search string="Search Opportunities"> <field name="name" string="Opportunity" filter_domain="['|','|','|',('partner_id','ilike',self),('partner_name','ilike',self),('email_from','ilike',self),('name', 'ilike', self)]"/> <field name="categ_ids" string="Category" filter_domain="[('categ_ids','ilike', self)]"/> - <field name="section_id" context="{'invisible_section': False, 'default_section_id': self}"/> + <field name="section_id" context="{'invisible_section': False}" groups="base.group_multi_salesteams"/> <field name="user_id"/> <field name="partner_id"/> <separator/> @@ -552,7 +554,7 @@ <filter string="In Progress" name="open" domain="[('state','=','open')]" help="Open Opportunities"/> <filter string="Won" name="won" domain="[('state','=','done')]"/> <filter string="Lost" name="lost" domain="[('state','=','cancel')]"/> - <filter string="Unassigned" domain="[('user_id','=', False)]" help="No salesperson"/> + <filter string="Unassigned" name="unassigned" domain="[('user_id','=', False)]" help="No salesperson"/> <filter string="Unread Messages" name="message_unread" domain="[('message_unread','=',True)]" help="Unread messages"/> <filter string="Assigned to Me" domain="[('user_id','=',uid)]" context="{'invisible_section': False}" diff --git a/addons/crm/crm_phonecall_view.xml b/addons/crm/crm_phonecall_view.xml index 67df85e6178..3efb54f98b8 100644 --- a/addons/crm/crm_phonecall_view.xml +++ b/addons/crm/crm_phonecall_view.xml @@ -103,7 +103,8 @@ <field name="date"/> <field name="user_id"/> <field name="duration" widget="float_time"/> - <field name="section_id" colspan="1" widget="selection"/> + <field name="section_id" colspan="1" widget="selection" + groups="base.group_multi_salesteams"/> <field name="partner_id" on_change="onchange_partner_id(partner_id)"/> <field name="email_from" invisible="1"/> <!--not needed because of the chatter, thus invisible, but must be in the view as it's returned by onchange_partner_id()--> <field name="categ_id" widget="selection" @@ -187,7 +188,8 @@ help="Phone Calls Assigned to the current user or with a team having the current user as team leader"/> <field name="partner_id"/> <field name="user_id"/> - <field name="section_id" string="Sales Team"/> + <field name="section_id" string="Sales Team" + groups="base.group_multi_salesteams"/> <group expand="0" string="Group By..."> <filter string="Partner" icon="terp-partner" domain="[]" context="{'group_by':'partner_id'}"/> <filter string="Responsible" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/> diff --git a/addons/crm/crm_report_view.xml b/addons/crm/crm_report_view.xml index 355d862c898..39a2967c947 100644 --- a/addons/crm/crm_report_view.xml +++ b/addons/crm/crm_report_view.xml @@ -12,7 +12,7 @@ <field name="name"/> <field name="month"/> <field name="user_id"/> - <field name="section_id"/> + <field name="section_id" groups="base.group_multi_salesteams"/> <field name="category2_id"/> <field name="stage_id"/> <field name="amount_revenue"/> @@ -33,7 +33,8 @@ <field name="name"/> <field name="month"/> <field name="user_id"/> - <field name="section_id" widget="selection"/> + <field name="section_id" widget="selection" + groups="base.group_multi_salesteams"/> <field name="category2_id" /> <field name="stage_id"/> <field name="amount_revenue"/> @@ -53,7 +54,8 @@ <graph string="Cases by Teams and Type" type="bar" orientation="horizontal"> <field name="category2_id"/> <field name="amount_revenue" operator="+"/> - <field name="section_id" group="True"/> + <field name="section_id" group="True" + groups="base.group_multi_salesteams"/> </graph> </field> </record> @@ -69,7 +71,7 @@ <field name="month"/> <field name="nbr"/> <field name="state"/> - <field name="section_id"/> + <field name="section_id" groups="base.group_multi_salesteams"/> <field name="category2_id"/> </search> </field> @@ -95,7 +97,7 @@ <field name="name"/> <field name="month"/> <field name="user_id"/> - <field name="section_id"/> + <field name="section_id" groups="base.group_multi_salesteams"/> <field name="stage_id"/> <field name="amount_revenue"/> <field name="nbr"/> @@ -115,7 +117,8 @@ <field name="name"/> <field name="month"/> <field name="user_id"/> - <field name="section_id" widget="selection"/> + <field name="section_id" widget="selection" + groups="base.group_multi_salesteams"/> <field name="stage_id"/> <field name="amount_revenue"/> <field name="nbr" /> @@ -134,7 +137,7 @@ <graph string="Cases by Team and Stage" type="bar" orientation="horizontal"> <field name="stage_id"/> <field name="amount_revenue" operator="+"/> - <field name="section_id" group="True"/> + <field name="section_id" group="True" groups="base.group_multi_salesteams"/> </graph> </field> </record> @@ -150,7 +153,7 @@ <field name="month"/> <field name="nbr"/> <field name="state"/> - <field name="section_id"/> + <field name="section_id" groups="base.group_multi_salesteams"/> </search> </field> </record> @@ -175,7 +178,7 @@ <field name="name"/> <field name="month"/> <field name="user_id"/> - <field name="section_id"/> + <field name="section_id" groups="base.group_multi_salesteams"/> <field name="categ_id"/> <field name="stage_id"/> <field name="nbr"/> @@ -195,7 +198,7 @@ <field name="name"/> <field name="month"/> <field name="user_id"/> - <field name="section_id" widget="selection"/> + <field name="section_id" widget="selection" groups="base.group_multi_salesteams"/> <field name="categ_id"/> <field name="stage_id"/> <field name="nbr" /> @@ -216,7 +219,7 @@ <field name="month"/> <field name="nbr"/> <field name="state"/> - <field name="section_id"/> + <field name="section_id" groups="base.group_multi_salesteams"/> </search> </field> </record> @@ -230,7 +233,7 @@ <graph string="Cases by Section, Category and Stage" type="bar" orientation="horizontal"> <field name="categ_id"/> <field name="nbr" operator="+"/> - <field name="section_id" group="True"/> + <field name="section_id" group="True" groups="base.group_multi_salesteams"/> </graph> </field> </record> @@ -255,7 +258,7 @@ <field name="name"/> <field name="month"/> <field name="user_id"/> - <field name="section_id"/> + <field name="section_id" groups="base.group_multi_salesteams"/> <field name="categ_id"/> <field name="category2_id"/> <field name="stage_id"/> @@ -276,7 +279,7 @@ <field name="name"/> <field name="month"/> <field name="user_id"/> - <field name="section_id" widget="selection"/> + <field name="section_id" widget="selection" groups="base.group_multi_salesteams"/> <field name="categ_id"/> <field name="category2_id"/> <field name="stage_id"/> @@ -298,7 +301,7 @@ <field name="month"/> <field name="nbr"/> <field name="state"/> - <field name="section_id"/> + <field name="section_id" groups="base.group_multi_salesteams"/> </search> </field> </record> @@ -312,7 +315,7 @@ <graph string="Cases by Section, Category and Type" type="bar" orientation="horizontal"> <field name="category2_id"/> <field name="nbr" operator="+"/> - <field name="section_id" group="True"/> + <field name="section_id" group="True" groups="base.group_multi_salesteams"/> </graph> </field> </record> diff --git a/addons/crm/crm_view.xml b/addons/crm/crm_view.xml index 2c156ca2ac2..63385fa3e17 100644 --- a/addons/crm/crm_view.xml +++ b/addons/crm/crm_view.xml @@ -70,109 +70,6 @@ <menuitem action="crm_case_channel_action" id="menu_crm_case_channel" parent="base.menu_crm_config_lead" sequence="4" groups="base.group_no_one"/> - <!-- Case Sections Form View --> - - <record id="crm_case_section_view_form" model="ir.ui.view"> - <field name="name">crm.case.section.form</field> - <field name="model">crm.case.section</field> - <field name="arch" type="xml"> - <form string="Sales Team" version="7.0"> - <group> - <group> - <field name="name" colspan="2"/> - <field name="parent_id"/> - <field name="code"/> - </group> - - <group> - <field name="user_id"/> - <field name="resource_calendar_id"/> - <field name="active"/> - </group> - </group> - <notebook colspan="4"> - <page string="Sales Team"> - <group> - <field name="alias_id" invisible="1" required="0"/> - <label for="alias_name" attrs="{'invisible': [('alias_domain', '=', False)]}"/> - <div attrs="{'invisible': [('alias_domain', '=', False)]}"> - <field name="alias_name" class="oe_inline" attrs="{'required': [('alias_id', '!=', False)]}"/>@<field name="alias_domain" class="oe_inline"/> - </div> - <field name="change_responsible"/> - </group> - <separator string="Team Members"/> - <field name="member_ids" widget="many2many_kanban"> - <kanban quick_create="false" create="true"> - <field name="name"/> - <templates> - <t t-name="kanban-box"> - <div style="position: relative"> - <a t-if="! read_only_mode" type="delete" style="position: absolute; right: 0; padding: 4px; diplay: inline-block">X</a> - <div class="oe_module_vignette"> - <div class="oe_module_desc"> - <field name="name"/> - </div> - </div> - </div> - </t> - </templates> - </kanban> - </field> - </page> - <page string="Stages"> - <separator string="Select Stages for this Sales Team"/> - <field name="stage_ids"/> - </page> - <page string="Notes"> - <field name="note"/> - </page> - </notebook> - <div class="oe_chatter"> - <field name="message_follower_ids" widget="mail_followers" help="Follow this salesteam to automatically track the events associated to users of this team."/> - <field name="message_ids" widget="mail_thread"/> - </div> - </form> - </field> - </record> - - <!-- Case Sections Tree View --> - - <record id="crm_case_section_view_tree" model="ir.ui.view"> - <field name="name">crm.case.section.tree</field> - <field name="model">crm.case.section</field> - <field name="field_parent">child_ids</field> - <field name="arch" type="xml"> - <tree string="Sales Team"> - <field name="name"/> - <field name="code"/> - <field name="user_id"/> - </tree> - </field> - </record> - - <!-- Case Sections Action --> - - <record id="crm_case_section_act" model="ir.actions.act_window"> - <field name="name">Sales Teams</field> - <field name="res_model">crm.case.section</field> - <field name="view_type">form</field> - <field name="view_id" ref="crm_case_section_view_tree"/> - <field name="help" type="html"> - <p class="oe_view_nocontent_create"> - Click to define a new sales team. - </p><p> - Use sales team to organize your different salespersons or - departments into separate teams. Each team will work in - its own list of opportunities. - </p> - </field> - </record> - - <menuitem action="crm_case_section_act" - id="menu_crm_case_section_act" sequence="15" - parent="base.menu_base_config" groups="base.group_sale_manager"/> - - <!-- CRM Stage Tree View --> <record model="ir.ui.view" id="crm_case_stage_tree"> @@ -233,7 +130,7 @@ <form string="Case Category" version="7.0"> <group> <field name="name"/> - <field name="section_id"/> + <field name="section_id" groups="base.group_multi_salesteams"/> <field name="object_id" invisible="1"/> </group> </form> @@ -248,7 +145,7 @@ <field name="arch" type="xml"> <tree string="Case Category"> <field name="name"/> - <field name="section_id"/> + <field name="section_id" groups="base.group_multi_salesteams"/> </tree> </field> </record> @@ -261,7 +158,7 @@ <field name="arch" type="xml"> <tree string="Campaign"> <field name="name"/> - <field name="section_id"/> + <field name="section_id" groups="base.group_multi_salesteams"/> </tree> </field> </record> @@ -275,7 +172,7 @@ <form string="Campaign" version="7.0"> <group> <field name="name"/> - <field name="section_id"/> + <field name="section_id" groups="base.group_multi_salesteams"/> </group> </form> </field> @@ -295,13 +192,6 @@ groups="base.group_no_one" parent="base.menu_crm_config_lead"/> - <record id="crm_case_section_act_tree" model="ir.actions.act_window"> - <field name="name">Cases by Sales Team</field> - <field name="res_model">crm.case.section</field> - <field name="domain">[('parent_id','=',False)]</field> - <field name="view_type">tree</field> - <field name="view_id" ref="crm_case_section_view_tree"/> - </record> <!-- Segmentation line Tree View --> @@ -434,7 +324,7 @@ <field name="arch" type="xml"> <tree string="Payment Mode"> <field name="name"/> - <field name="section_id"/> + <field name="section_id" groups="base.group_multi_salesteams"/> </tree> </field> </record> @@ -448,7 +338,7 @@ <form string="Payment Mode" version="7.0"> <group> <field name="name"/> - <field name="section_id"/> + <field name="section_id" groups="base.group_multi_salesteams"/> </group> </form> </field> diff --git a/addons/crm/report/crm_lead_report_view.xml b/addons/crm/report/crm_lead_report_view.xml index 0e5df8837f1..1009e1c376d 100644 --- a/addons/crm/report/crm_lead_report_view.xml +++ b/addons/crm/report/crm_lead_report_view.xml @@ -19,7 +19,8 @@ <field name="channel_id" invisible="1"/> <field name="type" invisible="1"/> <field name="priority" invisible="1"/> - <field name="section_id" invisible="1"/> + <field name="section_id" invisible="1" + groups="base.group_multi_salesteams"/> <field name="user_id" invisible="1"/> <field name="company_id" invisible="1"/> <field name="partner_id" invisible="1"/> @@ -77,7 +78,8 @@ help="Leads/Opportunities that are assigned to one of the sale teams I manage"/> <separator/> <filter icon="terp-personal" string="My Case(s)" help="Leads/Opportunities that are assigned to me" domain="[('user_id','=',uid)]"/> - <field name="section_id" context="{'invisible_section': False}"/> + <field name="section_id" context="{'invisible_section': False}" + groups="base.group_multi_salesteams"/> <field name="user_id" string="Salesperson"/> <group expand="0" string="Extended Filters..."> <field name="partner_id"/> @@ -134,7 +136,8 @@ <field name="creation_month" invisible="1"/> <field name="creation_day" invisible="1"/> <field name="deadline_month" invisible="1"/> - <field name="section_id" invisible="1"/> + <field name="section_id" invisible="1" + groups="base.group_multi_salesteams"/> <field name="user_id" invisible="1"/> <field name="partner_id" invisible="1"/> <field name="country_id" invisible="1"/> diff --git a/addons/crm/report/crm_phonecall_report_view.xml b/addons/crm/report/crm_phonecall_report_view.xml index 1f1a4f91046..c27d876ddd7 100644 --- a/addons/crm/report/crm_phonecall_report_view.xml +++ b/addons/crm/report/crm_phonecall_report_view.xml @@ -11,7 +11,8 @@ <tree string="Phone calls" create="false"> <field name="name" invisible="1"/> <field name="month" invisible="1"/> - <field name="section_id" invisible="1"/> + <field name="section_id" invisible="1" + groups="base.group_multi_salesteams"/> <field name="priority" invisible="1"/> <field name="user_id" invisible="1"/> <field name="company_id" invisible="1"/> @@ -59,7 +60,8 @@ help="Phone calls that are assigned to one of the sale teams I manage"/> <separator/> <filter icon="terp-personal" string="My Phone Calls" help="Phone Calls that are assigned to me" domain="[('user_id','=',uid)]" /> - <field name="section_id" string="Sales Team" context="{'invisible_section': False}"/> + <field name="section_id" string="Sales Team" context="{'invisible_section': False}" + groups="base.group_multi_salesteams"/> <field name="user_id" string="Salesperson"/> <group expand="0" string="Extended Filters..."> <field name="partner_id"/> diff --git a/addons/crm/res_config.py b/addons/crm/res_config.py index 229ad0189ff..ea37c24fe06 100644 --- a/addons/crm/res_config.py +++ b/addons/crm/res_config.py @@ -2,7 +2,7 @@ ############################################################################## # # OpenERP, Open Source Business Applications -# Copyright (C) 2004-2012 OpenERP S.A. (<http://openerp.com>). +# Copyright (C) 2004-TODAY OpenERP S.A. (<http://openerp.com>). # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as @@ -21,24 +21,51 @@ from openerp.osv import fields, osv -class crm_configuration(osv.osv_memory): + +class crm_configuration(osv.TransientModel): _name = 'sale.config.settings' _inherit = ['sale.config.settings', 'fetchmail.config.settings'] + def set_group_multi_salesteams(self, cr, uid, ids, context=None): + """ This method is automatically called by res_config as it begins + with set. It is used to implement the 'one group or another' + behavior. We have to perform some group manipulation by hand + because in res_config.execute(), set_* methods are called + after group_*; therefore writing on an hidden res_config file + could not work. + If group_multi_salesteams is checked: remove group_mono_salesteams + from group_user, remove the users. Otherwise, just add + group_mono_salesteams in group_user. + The inverse logic about group_multi_salesteams is managed by the + normal behavior of 'group_multi_salesteams' field. + """ + def ref(xml_id): + mod, xml = xml_id.split('.', 1) + return self.pool['ir.model.data'].get_object(cr, uid, mod, xml, context) + + for obj in self.browse(cr, uid, ids, context=context): + config_group = ref('base.group_mono_salesteams') + base_group = ref('base.group_user') + if obj.group_multi_salesteams: + base_group.write({'implied_ids': [(3, config_group.id)]}) + config_group.write({'users': [(3, u.id) for u in base_group.users]}) + else: + base_group.write({'implied_ids': [(4, config_group.id)]}) + return True + _columns = { - 'fetchmail_lead': fields.boolean("Create leads from incoming mails", - fetchmail_model='crm.lead', fetchmail_name='Incoming Leads', - help="""Allows you to configure your incoming mail server, and create leads from incoming emails."""), 'group_fund_raising': fields.boolean("Manage Fund Raising", implied_group='crm.group_fund_raising', help="""Allows you to trace and manage your activities for fund raising."""), - 'module_crm_claim':fields.boolean("Manage Customer Claims", + 'module_crm_claim': fields.boolean("Manage Customer Claims", help="""Allows you to track your customers/suppliers claims and grievances. This installs the module crm_claim."""), - 'module_crm_helpdesk':fields.boolean("Manage Helpdesk and Support", - help="""Allows you to communicate with Customer, process Customer query, and provide better help and support. This installs the module crm_helpdesk."""), - - + 'module_crm_helpdesk': fields.boolean("Manage Helpdesk and Support", + help="""Allows you to communicate with Customer, process Customer query, and provide better help and support. This installs the module crm_helpdesk."""), + 'group_multi_salesteams': fields.boolean("Organize Sales activities into multiple Sales Teams", + implied_group='base.group_multi_salesteams', + help="""Allows you to use Sales Teams to manage your leads and opportunities."""), } + # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/crm/res_config_view.xml b/addons/crm/res_config_view.xml index 9534c8620ee..547ce1c2ae6 100644 --- a/addons/crm/res_config_view.xml +++ b/addons/crm/res_config_view.xml @@ -22,20 +22,15 @@ </div> </div> </group> - </div> - <group name="On Mail Client" version="7.0" position="after"> + <separator string="Sales Teams Configuration"/> <group> - <label for="id" string="On Mail Server"/> + <label for="id" string="Use Sales Teams"/> <div> - <div name="fetchmail_lead"> - <field name="fetchmail_lead" class="oe_inline"/> - <label for="fetchmail_lead"/> - <button name="configure_fetchmail_lead" type="object" string="Configure" icon="gtk-go-forward" - attrs="{'invisible': [('fetchmail_lead','=',False)]}" class="oe_link"/> - </div> + <field name="group_multi_salesteams" class="oe_inline"/> + <label for="group_multi_salesteams"/> </div> </group> - </group> + </div> </field> </record> diff --git a/addons/crm/res_partner_view.xml b/addons/crm/res_partner_view.xml index 00a071fa954..dd6c50dbaba 100644 --- a/addons/crm/res_partner_view.xml +++ b/addons/crm/res_partner_view.xml @@ -10,7 +10,7 @@ <field eval="18" name="priority"/> <field name="arch" type="xml"> <field name="user_id" position="after"> - <field name="section_id" completion="1"/> + <field name="section_id" completion="1" groups="base.group_multi_salesteams"/> </field> </field> </record> @@ -30,8 +30,11 @@ <field name="res_model">crm.lead</field> <field name="view_mode">kanban,tree,form,graph,calendar</field> <field name="domain">[('type','=','opportunity')]</field> - <field name="context">{'search_default_partner_id': active_id, - 'stage_type': 'opportunity', 'default_type': 'opportunity'}</field> + <field name="context">{ + 'search_default_partner_id': active_id, + 'stage_type': 'opportunity', + 'default_type': 'opportunity' + }</field> <field name="view_id" eval="False"/> <field name="search_view_id" ref="crm.view_crm_case_opportunities_filter"/> <field name="help" type="html"> diff --git a/addons/crm/security/crm_security.xml b/addons/crm/security/crm_security.xml index 2c34252209c..34137dc0fac 100644 --- a/addons/crm/security/crm_security.xml +++ b/addons/crm/security/crm_security.xml @@ -22,6 +22,19 @@ <field name="implied_ids" eval="[(4, ref('base.group_sale_salesman_all_leads'))]"/> <field name="users" eval="[(4, ref('base.user_root'))]"/> </record> + + <record id="base.group_mono_salesteams" model="res.groups"> + <field name="name">Do Not Use Sales Teams</field> + <field name="category_id" ref="base.module_category_hidden"/> + </record> + <record id="base.group_user" model="res.groups"> + <field name="implied_ids" eval="[(4, ref('base.group_mono_salesteams'))]"/> + </record> + + <record id="base.group_multi_salesteams" model="res.groups"> + <field name="name">Manage Sales Teams</field> + <field name="category_id" ref="base.module_category_hidden"/> + </record> <record id="group_fund_raising" model="res.groups"> <field name="name">Manage Fund Raising</field> diff --git a/addons/crm/security/ir.model.access.csv b/addons/crm/security/ir.model.access.csv index 74394d3c5ce..52648c8e347 100644 --- a/addons/crm/security/ir.model.access.csv +++ b/addons/crm/security/ir.model.access.csv @@ -11,9 +11,7 @@ access_crm_lead_manager,crm.lead.manager,model_crm_lead,base.group_sale_manager, access_crm_phonecall_manager,crm.phonecall.manager,model_crm_phonecall,base.group_sale_manager,1,1,1,1
access_crm_case_categ,crm.case.categ,model_crm_case_categ,base.group_user,1,0,0,0
access_crm_lead,crm.lead,model_crm_lead,base.group_sale_salesman,1,1,1,0
-access_crm_lead_all,crm.lead.all,model_crm_lead,base.group_user,1,0,0,0
access_crm_phonecall,crm.phonecall,model_crm_phonecall,base.group_sale_salesman,1,1,1,0
-access_crm_phonecall_all,crm.phonecall.all,model_crm_phonecall,base.group_user,1,0,0,0
access_crm_case_section_user,crm.case.section.user,model_crm_case_section,base.group_sale_salesman,1,1,1,0
access_crm_case_section_manager,crm.case.section.manager,model_crm_case_section,base.group_sale_manager,1,1,1,1
access_crm_case_stage,crm.case.stage,model_crm_case_stage,,1,0,0,0
diff --git a/addons/crm/static/src/css/crm.css b/addons/crm/static/src/css/crm.css new file mode 100644 index 00000000000..3ad3840a4e1 --- /dev/null +++ b/addons/crm/static/src/css/crm.css @@ -0,0 +1,42 @@ +.openerp .oe_kanban_view .oe_kanban_crm_salesteams { + width: 345px; +} +.openerp .oe_kanban_view .oe_kanban_crm_salesteams .oe_avatars { + text-align: right; + margin: -5px 0 -10px 0; +} + +.openerp .oe_kanban_view .oe_kanban_crm_salesteams .oe_avatars img { + width: 30px; + height: 30px; + padding-left: 0px; + margin-top: 3px; + -moz-border-radius: 2px; + -webkit-border-radius: 2px; + border-radius: 2px; + -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); + -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); + -box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2); +} + +.openerp .oe_kanban_view .oe_kanban_crm_salesteams .oe_items_list { + margin: 10px 0; +} +.openerp .oe_kanban_view .oe_kanban_crm_salesteams .oe_items_list a { + width: 110px; + display: inline-block; +} +.openerp .oe_kanban_view .oe_kanban_crm_salesteams .oe_items_list a:hover { + text-decoration: underline !important; +} +.openerp .oe_kanban_view .oe_kanban_crm_salesteams .oe_center { + text-align: center; + margin: 3px 0; +} +.openerp .oe_kanban_view .oe_kanban_crm_salesteams .oe_center .oe_sum { + margin: 0; + font-size: 40px; +} +.openerp .oe_kanban_view .oe_kanban_crm_salesteams .oe_center .oe_subsum { + font-size: 10px; +} diff --git a/addons/crm/static/src/js/crm.js b/addons/crm/static/src/js/crm.js new file mode 100644 index 00000000000..e027313d6dc --- /dev/null +++ b/addons/crm/static/src/js/crm.js @@ -0,0 +1,11 @@ +openerp.crm = function(openerp) { + openerp.web_kanban.KanbanRecord.include({ + on_card_clicked: function() { + if (this.view.dataset.model === 'crm.case.section') { + this.$('.oe_kanban_crm_salesteams_list a').first().click(); + } else { + this._super.apply(this, arguments); + } + }, + }); +}; diff --git a/addons/crm/test/process/cancel_lead.yml b/addons/crm/test/crm_lead_cancel.yml index edaf844952a..edaf844952a 100644 --- a/addons/crm/test/process/cancel_lead.yml +++ b/addons/crm/test/crm_lead_cancel.yml diff --git a/addons/crm/test/ui/duplicate_lead.yml b/addons/crm/test/crm_lead_copy.yml index b6071ae9f9d..b6071ae9f9d 100644 --- a/addons/crm/test/ui/duplicate_lead.yml +++ b/addons/crm/test/crm_lead_copy.yml diff --git a/addons/crm/test/process/merge_opportunity.yml b/addons/crm/test/crm_lead_merge.yml index c50af5214e6..b14f9272df9 100644 --- a/addons/crm/test/process/merge_opportunity.yml +++ b/addons/crm/test/crm_lead_merge.yml @@ -37,20 +37,19 @@ I check for the resulting merged opp (based on name and partner). - !python {model: crm.lead}: | - merge_id = self.search(cr, uid, [('name', '=', 'Test lead 1'), ('partner_id','=', ref("base.res_partner_1"))]) + merge_id = self.search(cr, uid, [('name', '=', 'Test opportunity 1'), ('partner_id','=', ref("base.res_partner_5"))]) assert merge_id, 'Fail to create merge opportunity wizard' merge_result = self.browse(cr, uid, merge_id)[0] - assert merge_result.partner_id.id == ref("base.res_partner_1"), 'Partner mismatch: when merging leads/opps with different m2o values, the first not null value prevails (the other are dropped)' - assert merge_result.description == 'This is the description of the test lead 1.\n\nThis is the description of the test lead 2.\n\nThis is the description of the test opp 1.', 'Description mismatch: when merging leads/opps with different text values, these values should get concatenated and separated with line returns' + assert merge_result.description == 'This is the description of the test opp 1.\n\nThis is the description of the test lead 1.\n\nThis is the description of the test lead 2.', 'Description mismatch: when merging leads/opps with different text values, these values should get concatenated and separated with line returns' assert merge_result.type == 'opportunity', 'Type mismatch: when at least one opp in involved in the merge, the result should be a new opp (instead of %s)' % merge_result.type - The other (tailing) leads/opps shouldn't exist anymore. - !python {model: crm.lead}: | - tailing_lead = self.search(cr, uid, [('id', '=', ref('test_crm_lead_02'))]) + tailing_lead = self.search(cr, uid, [('id', '=', ref('test_crm_lead_01'))]) assert not tailing_lead, 'This tailing lead (id %s) should not exist anymore' % ref('test_crm_lead_02') - tailing_opp = self.search(cr, uid, [('id', '=', ref('test_crm_opp_01'))]) + tailing_opp = self.search(cr, uid, [('id', '=', ref('test_crm_lead_02'))]) assert not tailing_opp, 'This tailing opp (id %s) should not exist anymore' % ref('test_crm_opp_01') - I want to test leads merge. Start by creating two leads (with the same partner). diff --git a/addons/crm/test/process/communication_with_customer.yml b/addons/crm/test/crm_lead_message.yml index 221a4ab634f..221a4ab634f 100644 --- a/addons/crm/test/process/communication_with_customer.yml +++ b/addons/crm/test/crm_lead_message.yml diff --git a/addons/crm/test/ui/crm_demo.yml b/addons/crm/test/crm_lead_onchange.yml index 9154ffdf513..9154ffdf513 100644 --- a/addons/crm/test/ui/crm_demo.yml +++ b/addons/crm/test/crm_lead_onchange.yml diff --git a/addons/crm/test/ui/delete_lead.yml b/addons/crm/test/crm_lead_unlink.yml index 49713039f22..49713039f22 100644 --- a/addons/crm/test/ui/delete_lead.yml +++ b/addons/crm/test/crm_lead_unlink.yml diff --git a/addons/crm/test/process/lead2opportunity2win.yml b/addons/crm/test/lead2opportunity2win.yml index 94e7149ef77..94e7149ef77 100644 --- a/addons/crm/test/process/lead2opportunity2win.yml +++ b/addons/crm/test/lead2opportunity2win.yml diff --git a/addons/crm/test/process/lead2opportunity_assign_salesmen.yml b/addons/crm/test/lead2opportunity_assign_salesmen.yml index 0edd3b8edce..0edd3b8edce 100644 --- a/addons/crm/test/process/lead2opportunity_assign_salesmen.yml +++ b/addons/crm/test/lead2opportunity_assign_salesmen.yml diff --git a/addons/crm/test/process/phonecalls.yml b/addons/crm/test/phonecalls.yml index 51a933f3223..51a933f3223 100644 --- a/addons/crm/test/process/phonecalls.yml +++ b/addons/crm/test/phonecalls.yml diff --git a/addons/crm/test/process/segmentation.yml b/addons/crm/test/segmentation.yml index f3801b80ec6..f3801b80ec6 100644 --- a/addons/crm/test/process/segmentation.yml +++ b/addons/crm/test/segmentation.yml diff --git a/addons/crm/wizard/crm_lead_to_opportunity_view.xml b/addons/crm/wizard/crm_lead_to_opportunity_view.xml index 00686de1c8e..4093df910d0 100644 --- a/addons/crm/wizard/crm_lead_to_opportunity_view.xml +++ b/addons/crm/wizard/crm_lead_to_opportunity_view.xml @@ -22,7 +22,7 @@ <field name="phone"/> <field name="stage_id"/> <field name="user_id"/> - <field name="section_id"/> + <field name="section_id" groups="base.group_multi_salesteams"/> </tree> </field> </group> @@ -68,13 +68,13 @@ <field name="phone"/> <field name="stage_id"/> <field name="user_id"/> - <field name="section_id"/> + <field name="section_id" groups="base.group_multi_salesteams"/> </tree> </field> </group> <group string="Assign opportunities to" attrs="{'invisible': [('name', '=', '')]}"> - <field name="section_id"/> + <field name="section_id" groups="base.group_multi_salesteams"/> <field name="user_ids" widget="many2many_tags"/> </group> diff --git a/addons/crm/wizard/crm_merge_opportunities_view.xml b/addons/crm/wizard/crm_merge_opportunities_view.xml index f68abeb8a52..919d83cb9a7 100644 --- a/addons/crm/wizard/crm_merge_opportunities_view.xml +++ b/addons/crm/wizard/crm_merge_opportunities_view.xml @@ -19,7 +19,7 @@ <field name="phone"/> <field name="stage_id"/> <field name="user_id"/> - <field name="section_id"/> + <field name="section_id" groups="base.group_multi_salesteams"/> </tree> </field> <footer> diff --git a/addons/crm/wizard/crm_opportunity_to_phonecall_view.xml b/addons/crm/wizard/crm_opportunity_to_phonecall_view.xml index ad369448517..846d71d74da 100644 --- a/addons/crm/wizard/crm_opportunity_to_phonecall_view.xml +++ b/addons/crm/wizard/crm_opportunity_to_phonecall_view.xml @@ -23,7 +23,7 @@ <field name="partner_id" readonly="True"/> <field name="phone"/> <field name="user_id" attrs="{'invisible': [('action','=','log')]}"/> - <field name="section_id" widget="selection" attrs="{'invisible': [('action','=','log')]}"/> + <field name="section_id" widget="selection" attrs="{'invisible': [('action','=','log')]}" groups="base.group_multi_salesteams"/> </group> </group> <field name="note" placeholder="Call Description" /> diff --git a/addons/crm/wizard/crm_phonecall_to_phonecall_view.xml b/addons/crm/wizard/crm_phonecall_to_phonecall_view.xml index e2d25218749..812468b17e6 100644 --- a/addons/crm/wizard/crm_phonecall_to_phonecall_view.xml +++ b/addons/crm/wizard/crm_phonecall_to_phonecall_view.xml @@ -15,7 +15,7 @@ <field name="date" string="Planned Date" attrs="{'invisible': [('action','=','log')]}"/> <field name="partner_id" readonly="True"/> <field name="user_id"/> - <field name="section_id"/> + <field name="section_id" groups="base.group_multi_salesteams"/> </group> <footer> <button name="action_schedule" type="object" string="Log Call" attrs="{'invisible' : [('action', '!=', 'log')]}" class="oe_highlight"/> diff --git a/addons/crm_claim/__init__.py b/addons/crm_claim/__init__.py index 2012c227adf..7395ea83fe5 100644 --- a/addons/crm_claim/__init__.py +++ b/addons/crm_claim/__init__.py @@ -21,7 +21,6 @@ import crm_claim import report -import res_config # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/crm_claim/__openerp__.py b/addons/crm_claim/__openerp__.py index 78dfba2ed53..61257265f1b 100644 --- a/addons/crm_claim/__openerp__.py +++ b/addons/crm_claim/__openerp__.py @@ -41,7 +41,6 @@ automatically new claims based on incoming emails. 'crm_claim_menu.xml', 'security/ir.model.access.csv', 'report/crm_claim_report_view.xml', - 'res_config_view.xml', 'crm_claim_data.xml', ], 'demo': ['crm_claim_demo.xml'], diff --git a/addons/crm_claim/crm_claim_view.xml b/addons/crm_claim/crm_claim_view.xml index b1ab72e20f6..78e467a7ba8 100644 --- a/addons/crm_claim/crm_claim_view.xml +++ b/addons/crm_claim/crm_claim_view.xml @@ -116,7 +116,7 @@ <group colspan="4" col="4" groups="base.group_user"> <field name="user_id"/> <field name="priority"/> - <field name="section_id"/> + <field name="section_id" groups="base.group_multi_salesteams"/> <field name="date_deadline"/> <field name="state" groups="base.group_no_one"/> </group> diff --git a/addons/crm_claim/i18n/cs.po b/addons/crm_claim/i18n/cs.po new file mode 100644 index 00000000000..9c9bc7c46d0 --- /dev/null +++ b/addons/crm_claim/i18n/cs.po @@ -0,0 +1,881 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-03-31 16:47+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-04-01 05:06+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: crm_claim +#: help:crm.claim.stage,fold:0 +msgid "" +"This stage is not visible, for example in status bar or kanban view, when " +"there are no records in that stage to display." +msgstr "" + +#. module: crm_claim +#: field:crm.claim.report,nbr:0 +msgid "# of Cases" +msgstr "" + +#. module: crm_claim +#: view:crm.claim:0 +#: view:crm.claim.report:0 +msgid "Group By..." +msgstr "" + +#. module: crm_claim +#: view:crm.claim:0 +msgid "Responsibilities" +msgstr "" + +#. module: crm_claim +#: help:sale.config.settings,fetchmail_claim:0 +msgid "" +"Allows you to configure your incoming mail server, and create claims from " +"incoming emails." +msgstr "" + +#. module: crm_claim +#: model:ir.model,name:crm_claim.model_crm_claim_stage +msgid "Claim stages" +msgstr "" + +#. module: crm_claim +#: selection:crm.claim.report,month:0 +msgid "March" +msgstr "" + +#. module: crm_claim +#: field:crm.claim.report,delay_close:0 +msgid "Delay to close" +msgstr "" + +#. module: crm_claim +#: field:crm.claim,message_unread:0 +msgid "Unread Messages" +msgstr "" + +#. module: crm_claim +#: field:crm.claim,resolution:0 +msgid "Resolution" +msgstr "" + +#. module: crm_claim +#: field:crm.claim,company_id:0 +#: view:crm.claim.report:0 +#: field:crm.claim.report,company_id:0 +msgid "Company" +msgstr "" + +#. module: crm_claim +#: model:ir.actions.act_window,help:crm_claim.crm_claim_categ_action +msgid "" +"<p class=\"oe_view_nocontent_create\">\n" +" Click to create a claim category.\n" +" </p><p>\n" +" Create claim categories to better manage and classify your\n" +" claims. Some example of claims can be: preventive action,\n" +" corrective action.\n" +" </p>\n" +" " +msgstr "" + +#. module: crm_claim +#: view:crm.claim.report:0 +msgid "#Claim" +msgstr "" + +#. module: crm_claim +#: field:crm.claim.stage,name:0 +msgid "Stage Name" +msgstr "" + +#. module: crm_claim +#: view:crm.claim.report:0 +msgid "Salesperson" +msgstr "" + +#. module: crm_claim +#: selection:crm.claim,priority:0 +#: selection:crm.claim.report,priority:0 +msgid "Highest" +msgstr "" + +#. module: crm_claim +#: view:crm.claim.report:0 +#: field:crm.claim.report,day:0 +msgid "Day" +msgstr "" + +#. module: crm_claim +#: view:crm.claim:0 +msgid "Claim Description" +msgstr "" + +#. module: crm_claim +#: field:crm.claim,message_ids:0 +msgid "Messages" +msgstr "" + +#. module: crm_claim +#: model:crm.case.categ,name:crm_claim.categ_claim1 +msgid "Factual Claims" +msgstr "" + +#. module: crm_claim +#: selection:crm.claim,state:0 +#: selection:crm.claim.report,state:0 +#: selection:crm.claim.stage,state:0 +msgid "Cancelled" +msgstr "" + +#. module: crm_claim +#: model:crm.case.resource.type,name:crm_claim.type_claim2 +msgid "Preventive" +msgstr "" + +#. module: crm_claim +#: help:crm.claim,message_unread:0 +msgid "If checked new messages require your attention." +msgstr "" + +#. module: crm_claim +#: field:crm.claim.report,date_closed:0 +msgid "Close Date" +msgstr "" + +#. module: crm_claim +#: view:res.partner:0 +msgid "False" +msgstr "" + +#. module: crm_claim +#: field:crm.claim,ref:0 +msgid "Reference" +msgstr "" + +#. module: crm_claim +#: view:crm.claim.report:0 +msgid "Date of claim" +msgstr "" + +#. module: crm_claim +#: view:crm.claim.report:0 +msgid "# Mails" +msgstr "" + +#. module: crm_claim +#: help:crm.claim,message_summary:0 +msgid "" +"Holds the Chatter summary (number of messages, ...). This summary is " +"directly in html format in order to be inserted in kanban views." +msgstr "" + +#. module: crm_claim +#: view:crm.claim:0 +#: field:crm.claim,date_deadline:0 +#: field:crm.claim.report,date_deadline:0 +msgid "Deadline" +msgstr "" + +#. module: crm_claim +#: view:crm.claim:0 +#: field:crm.claim,partner_id:0 +#: view:crm.claim.report:0 +#: field:crm.claim.report,partner_id:0 +#: model:ir.model,name:crm_claim.model_res_partner +msgid "Partner" +msgstr "" + +#. module: crm_claim +#: view:crm.claim:0 +msgid "Follow Up" +msgstr "" + +#. module: crm_claim +#: selection:crm.claim,type_action:0 +#: selection:crm.claim.report,type_action:0 +msgid "Preventive Action" +msgstr "" + +#. module: crm_claim +#: field:crm.claim.report,section_id:0 +msgid "Section" +msgstr "" + +#. module: crm_claim +#: view:crm.claim:0 +msgid "Root Causes" +msgstr "" + +#. module: crm_claim +#: field:crm.claim,user_fault:0 +msgid "Trouble Responsible" +msgstr "" + +#. module: crm_claim +#: field:crm.claim,priority:0 +#: view:crm.claim.report:0 +#: field:crm.claim.report,priority:0 +msgid "Priority" +msgstr "" + +#. module: crm_claim +#: field:crm.claim.stage,fold:0 +msgid "Hide in Views when Empty" +msgstr "" + +#. module: crm_claim +#: field:crm.claim,message_follower_ids:0 +msgid "Followers" +msgstr "" + +#. module: crm_claim +#: view:crm.claim:0 +#: selection:crm.claim,state:0 +#: view:crm.claim.report:0 +#: model:crm.claim.stage,name:crm_claim.stage_claim1 +#: selection:crm.claim.stage,state:0 +msgid "New" +msgstr "" + +#. module: crm_claim +#: field:crm.claim.stage,section_ids:0 +msgid "Sections" +msgstr "" + +#. module: crm_claim +#: field:crm.claim,email_from:0 +msgid "Email" +msgstr "" + +#. module: crm_claim +#: selection:crm.claim,priority:0 +#: selection:crm.claim.report,priority:0 +msgid "Lowest" +msgstr "" + +#. module: crm_claim +#: field:crm.claim,action_next:0 +msgid "Next Action" +msgstr "" + +#. module: crm_claim +#: view:crm.claim.report:0 +msgid "My Sales Team(s)" +msgstr "" + +#. module: crm_claim +#: field:crm.claim,create_date:0 +msgid "Creation Date" +msgstr "" + +#. module: crm_claim +#: field:crm.claim,name:0 +msgid "Claim Subject" +msgstr "" + +#. module: crm_claim +#: model:crm.claim.stage,name:crm_claim.stage_claim3 +msgid "Rejected" +msgstr "" + +#. module: crm_claim +#: field:crm.claim,date_action_next:0 +msgid "Next Action Date" +msgstr "" + +#. module: crm_claim +#: model:ir.actions.act_window,help:crm_claim.action_report_crm_claim +msgid "" +"Have a general overview of all claims processed in the system by sorting " +"them with specific criteria." +msgstr "" + +#. module: crm_claim +#: selection:crm.claim.report,month:0 +msgid "July" +msgstr "" + +#. module: crm_claim +#: view:crm.claim.stage:0 +#: model:ir.actions.act_window,name:crm_claim.crm_claim_stage_act +msgid "Claim Stages" +msgstr "" + +#. module: crm_claim +#: model:ir.ui.menu,name:crm_claim.menu_crm_case_claim-act +msgid "Categories" +msgstr "" + +#. module: crm_claim +#: view:crm.claim:0 +#: field:crm.claim,stage_id:0 +#: view:crm.claim.report:0 +#: field:crm.claim.report,stage_id:0 +msgid "Stage" +msgstr "" + +#. module: crm_claim +#: view:crm.claim:0 +msgid "Dates" +msgstr "" + +#. module: crm_claim +#: help:crm.claim,email_from:0 +msgid "Destination email for email gateway." +msgstr "" + +#. module: crm_claim +#: code:addons/crm_claim/crm_claim.py:194 +#, python-format +msgid "No Subject" +msgstr "" + +#. module: crm_claim +#: help:crm.claim.stage,state:0 +msgid "" +"The related status for the stage. The status of your document will " +"automatically change regarding the selected stage. For example, if a stage " +"is related to the status 'Close', when your document reaches this stage, it " +"will be automatically have the 'closed' status." +msgstr "" + +#. module: crm_claim +#: view:crm.claim:0 +msgid "Settle" +msgstr "" + +#. module: crm_claim +#: model:ir.ui.menu,name:crm_claim.menu_claim_stage_view +msgid "Stages" +msgstr "" + +#. module: crm_claim +#: model:ir.actions.act_window,name:crm_claim.action_report_crm_claim +#: model:ir.ui.menu,name:crm_claim.menu_report_crm_claim_tree +msgid "Claims Analysis" +msgstr "" + +#. module: crm_claim +#: help:crm.claim.report,delay_close:0 +msgid "Number of Days to close the case" +msgstr "" + +#. module: crm_claim +#: model:ir.model,name:crm_claim.model_crm_claim_report +msgid "CRM Claim Report" +msgstr "" + +#. module: crm_claim +#: view:sale.config.settings:0 +msgid "Configure" +msgstr "" + +#. module: crm_claim +#: model:crm.case.resource.type,name:crm_claim.type_claim1 +msgid "Corrective" +msgstr "" + +#. module: crm_claim +#: selection:crm.claim.report,month:0 +msgid "September" +msgstr "" + +#. module: crm_claim +#: selection:crm.claim.report,month:0 +msgid "December" +msgstr "" + +#. module: crm_claim +#: view:crm.claim.report:0 +#: field:crm.claim.report,month:0 +msgid "Month" +msgstr "" + +#. module: crm_claim +#: field:crm.claim,type_action:0 +#: view:crm.claim.report:0 +#: field:crm.claim.report,type_action:0 +msgid "Action Type" +msgstr "" + +#. module: crm_claim +#: field:crm.claim,write_date:0 +msgid "Update Date" +msgstr "" + +#. module: crm_claim +#: view:crm.claim.report:0 +msgid "Year of claim" +msgstr "" + +#. module: crm_claim +#: help:crm.claim.stage,case_default:0 +msgid "" +"If you check this field, this stage will be proposed by default on each " +"sales team. It will not assign this stage to existing teams." +msgstr "" + +#. module: crm_claim +#: field:crm.claim,categ_id:0 +#: view:crm.claim.report:0 +#: field:crm.claim.report,categ_id:0 +msgid "Category" +msgstr "" + +#. module: crm_claim +#: model:crm.case.categ,name:crm_claim.categ_claim2 +msgid "Value Claims" +msgstr "" + +#. module: crm_claim +#: view:crm.claim:0 +msgid "Responsible User" +msgstr "" + +#. module: crm_claim +#: field:crm.claim,email_cc:0 +msgid "Watchers Emails" +msgstr "" + +#. module: crm_claim +#: help:crm.claim,email_cc:0 +msgid "" +"These email addresses will be added to the CC field of all inbound and " +"outbound emails for this record before being sent. Separate multiple email " +"addresses with a comma" +msgstr "" + +#. module: crm_claim +#: selection:crm.claim.report,state:0 +msgid "Draft" +msgstr "" + +#. module: crm_claim +#: selection:crm.claim,priority:0 +#: selection:crm.claim.report,priority:0 +msgid "Low" +msgstr "" + +#. module: crm_claim +#: field:crm.claim,date_closed:0 +#: selection:crm.claim,state:0 +#: selection:crm.claim.report,state:0 +#: selection:crm.claim.stage,state:0 +msgid "Closed" +msgstr "" + +#. module: crm_claim +#: view:crm.claim:0 +msgid "Reject" +msgstr "" + +#. module: crm_claim +#: view:res.partner:0 +msgid "Partners Claim" +msgstr "" + +#. module: crm_claim +#: view:crm.claim.stage:0 +msgid "Claim Stage" +msgstr "" + +#. module: crm_claim +#: view:crm.claim:0 +#: selection:crm.claim,state:0 +#: view:crm.claim.report:0 +#: selection:crm.claim.report,state:0 +#: selection:crm.claim.stage,state:0 +msgid "Pending" +msgstr "" + +#. module: crm_claim +#: view:crm.claim:0 +#: field:crm.claim,state:0 +#: view:crm.claim.report:0 +#: field:crm.claim.report,state:0 +#: field:crm.claim.stage,state:0 +msgid "Status" +msgstr "" + +#. module: crm_claim +#: selection:crm.claim.report,month:0 +msgid "August" +msgstr "" + +#. module: crm_claim +#: selection:crm.claim,priority:0 +#: selection:crm.claim.report,priority:0 +msgid "Normal" +msgstr "" + +#. module: crm_claim +#: help:crm.claim.stage,sequence:0 +msgid "Used to order stages. Lower is better." +msgstr "" + +#. module: crm_claim +#: selection:crm.claim.report,month:0 +msgid "June" +msgstr "" + +#. module: crm_claim +#: field:crm.claim,id:0 +msgid "ID" +msgstr "" + +#. module: crm_claim +#: field:crm.claim,partner_phone:0 +msgid "Phone" +msgstr "" + +#. module: crm_claim +#: field:crm.claim,message_is_follower:0 +msgid "Is a Follower" +msgstr "" + +#. module: crm_claim +#: field:crm.claim.report,user_id:0 +msgid "User" +msgstr "" + +#. module: crm_claim +#: model:ir.actions.act_window,help:crm_claim.crm_claim_stage_act +msgid "" +"<p class=\"oe_view_nocontent_create\">\n" +" Click to setup a new stage in the processing of the claims. " +"\n" +" </p><p>\n" +" You can create claim stages to categorize the status of " +"every\n" +" claim entered in the system. The stages define all the " +"steps\n" +" required for the resolution of a claim.\n" +" </p>\n" +" " +msgstr "" + +#. module: crm_claim +#: help:crm.claim,state:0 +msgid "" +"The status is set to 'Draft', when a case is created. " +"If the case is in progress the status is set to 'Open'. " +"When the case is over, the status is set to 'Done'. If " +"the case needs to be reviewed then the status is set " +"to 'Pending'." +msgstr "" + +#. module: crm_claim +#: field:crm.claim,active:0 +msgid "Active" +msgstr "" + +#. module: crm_claim +#: selection:crm.claim.report,month:0 +msgid "November" +msgstr "" + +#. module: crm_claim +#: view:crm.claim.report:0 +msgid "Extended Filters..." +msgstr "" + +#. module: crm_claim +#: view:crm.claim:0 +msgid "Closure" +msgstr "" + +#. module: crm_claim +#: help:crm.claim,section_id:0 +msgid "" +"Responsible sales team. Define Responsible user and Email account for mail " +"gateway." +msgstr "" + +#. module: crm_claim +#: selection:crm.claim.report,month:0 +msgid "October" +msgstr "" + +#. module: crm_claim +#: selection:crm.claim.report,month:0 +msgid "January" +msgstr "" + +#. module: crm_claim +#: view:crm.claim:0 +#: field:crm.claim,date:0 +msgid "Claim Date" +msgstr "" + +#. module: crm_claim +#: field:crm.claim,message_summary:0 +msgid "Summary" +msgstr "" + +#. module: crm_claim +#: model:ir.actions.act_window,name:crm_claim.crm_claim_categ_action +msgid "Claim Categories" +msgstr "" + +#. module: crm_claim +#: field:crm.claim.stage,case_default:0 +msgid "Common to All Teams" +msgstr "" + +#. module: crm_claim +#: view:crm.claim:0 +#: view:crm.claim.report:0 +#: model:ir.actions.act_window,name:crm_claim.act_claim_partner +#: model:ir.actions.act_window,name:crm_claim.crm_case_categ_claim0 +#: model:ir.ui.menu,name:crm_claim.menu_crm_case_claims +#: view:res.partner:0 +#: field:res.partner,claims_ids:0 +msgid "Claims" +msgstr "" + +#. module: crm_claim +#: selection:crm.claim,type_action:0 +#: selection:crm.claim.report,type_action:0 +msgid "Corrective Action" +msgstr "" + +#. module: crm_claim +#: model:crm.case.categ,name:crm_claim.categ_claim3 +msgid "Policy Claims" +msgstr "" + +#. module: crm_claim +#: view:crm.claim:0 +msgid "Date Closed" +msgstr "" + +#. module: crm_claim +#: view:crm.claim:0 +#: model:ir.model,name:crm_claim.model_crm_claim +#: model:ir.ui.menu,name:crm_claim.menu_config_claim +msgid "Claim" +msgstr "" + +#. module: crm_claim +#: view:crm.claim.report:0 +msgid "My Company" +msgstr "" + +#. module: crm_claim +#: view:crm.claim.report:0 +msgid "Done" +msgstr "" + +#. module: crm_claim +#: view:crm.claim:0 +msgid "Claim Reporter" +msgstr "" + +#. module: crm_claim +#: view:crm.claim.report:0 +msgid "Cancel" +msgstr "" + +#. module: crm_claim +#: view:crm.claim.report:0 +#: selection:crm.claim.report,state:0 +msgid "Open" +msgstr "" + +#. module: crm_claim +#: view:crm.claim:0 +msgid "New Claims" +msgstr "" + +#. module: crm_claim +#: view:crm.claim:0 +#: selection:crm.claim,state:0 +#: model:crm.claim.stage,name:crm_claim.stage_claim5 +#: selection:crm.claim.stage,state:0 +msgid "In Progress" +msgstr "" + +#. module: crm_claim +#: view:crm.claim:0 +#: field:crm.claim,user_id:0 +msgid "Responsible" +msgstr "" + +#. module: crm_claim +#: view:crm.claim.report:0 +msgid "Search" +msgstr "" + +#. module: crm_claim +#: view:crm.claim:0 +msgid "Unassigned Claims" +msgstr "" + +#. module: crm_claim +#: field:crm.claim.report,delay_expected:0 +msgid "Overpassed Deadline" +msgstr "" + +#. module: crm_claim +#: field:crm.claim,cause:0 +msgid "Root Cause" +msgstr "" + +#. module: crm_claim +#: view:crm.claim:0 +msgid "Claim/Action Description" +msgstr "" + +#. module: crm_claim +#: field:crm.claim,description:0 +msgid "Description" +msgstr "" + +#. module: crm_claim +#: view:crm.claim:0 +msgid "Search Claims" +msgstr "" + +#. module: crm_claim +#: selection:crm.claim.report,month:0 +msgid "May" +msgstr "" + +#. module: crm_claim +#: view:crm.claim:0 +#: view:crm.claim.report:0 +msgid "Type" +msgstr "" + +#. module: crm_claim +#: view:crm.claim:0 +msgid "Resolution Actions" +msgstr "" + +#. module: crm_claim +#: field:crm.claim.stage,case_refused:0 +msgid "Refused stage" +msgstr "" + +#. module: crm_claim +#: model:ir.actions.act_window,help:crm_claim.crm_case_categ_claim0 +msgid "" +"Record and track your customers' claims. Claims may be linked to a sales " +"order or a lot. You can send emails with attachments and keep the full " +"history for a claim (emails sent, intervention type and so on). Claims may " +"automatically be linked to an email address using the mail gateway module." +msgstr "" + +#. module: crm_claim +#: field:crm.claim.report,email:0 +msgid "# Emails" +msgstr "" + +#. module: crm_claim +#: view:crm.claim.report:0 +msgid "Month of claim" +msgstr "" + +#. module: crm_claim +#: selection:crm.claim.report,month:0 +msgid "February" +msgstr "" + +#. module: crm_claim +#: model:ir.model,name:crm_claim.model_sale_config_settings +msgid "sale.config.settings" +msgstr "" + +#. module: crm_claim +#: view:crm.claim.report:0 +#: field:crm.claim.report,name:0 +msgid "Year" +msgstr "" + +#. module: crm_claim +#: view:crm.claim.report:0 +msgid "My company" +msgstr "" + +#. module: crm_claim +#: selection:crm.claim.report,month:0 +msgid "April" +msgstr "" + +#. module: crm_claim +#: view:crm.claim.report:0 +msgid "My Case(s)" +msgstr "" + +#. module: crm_claim +#: model:crm.claim.stage,name:crm_claim.stage_claim2 +msgid "Settled" +msgstr "" + +#. module: crm_claim +#: help:crm.claim,message_ids:0 +msgid "Messages and communication history" +msgstr "" + +#. module: crm_claim +#: field:sale.config.settings,fetchmail_claim:0 +msgid "Create claims from incoming mails" +msgstr "" + +#. module: crm_claim +#: field:crm.claim.stage,sequence:0 +msgid "Sequence" +msgstr "" + +#. module: crm_claim +#: view:crm.claim:0 +msgid "Actions" +msgstr "" + +#. module: crm_claim +#: selection:crm.claim,priority:0 +#: selection:crm.claim.report,priority:0 +msgid "High" +msgstr "" + +#. module: crm_claim +#: field:crm.claim,section_id:0 +#: view:crm.claim.report:0 +msgid "Sales Team" +msgstr "" + +#. module: crm_claim +#: field:crm.claim.report,create_date:0 +msgid "Create Date" +msgstr "" + +#. module: crm_claim +#: view:crm.claim:0 +msgid "In Progress Claims" +msgstr "" + +#. module: crm_claim +#: help:crm.claim.stage,section_ids:0 +msgid "" +"Link between stages and sales teams. When set, this limitate the current " +"stage to the selected sales teams." +msgstr "" + +#. module: crm_claim +#: help:crm.claim.stage,case_refused:0 +msgid "Refused stages are specific stages for done." +msgstr "" diff --git a/addons/crm_claim/i18n/ko.po b/addons/crm_claim/i18n/ko.po index 31f23dffe55..aabd1bef7bb 100644 --- a/addons/crm_claim/i18n/ko.po +++ b/addons/crm_claim/i18n/ko.po @@ -14,7 +14,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-03-29 04:36+0000\n" +"X-Launchpad-Export-Date: 2013-03-30 05:27+0000\n" "X-Generator: Launchpad (build 16546)\n" #. module: crm_claim diff --git a/addons/crm_claim/report/crm_claim_report_view.xml b/addons/crm_claim/report/crm_claim_report_view.xml index a61490c6086..febf9cafd73 100644 --- a/addons/crm_claim/report/crm_claim_report_view.xml +++ b/addons/crm_claim/report/crm_claim_report_view.xml @@ -11,7 +11,8 @@ <tree string="Claims" create="false"> <field name="name" invisible="1"/> <field name="month" invisible="1"/> - <field name="section_id" invisible="1"/> + <field name="section_id" invisible="1" + groups="base.group_multi_salesteams"/> <field name="user_id" invisible="1"/> <field name="company_id" invisible="1"/> <field name="partner_id" invisible="1"/> @@ -61,7 +62,8 @@ <filter icon="terp-personal" string="My Case(s)" help="My Case(s)" domain="[('user_id','=',uid)]" /> <field name="company_id" groups="base.group_multi_company"/> <field name="user_id" string="Salesperson"/> - <field name="section_id" string="Sales Team" context="{'invisible_section': False}"/> + <field name="section_id" string="Sales Team" context="{'invisible_section': False}" + groups="base.group_multi_salesteams"/> <group expand="0" string="Extended Filters..."> <field name="partner_id"/> <field name="stage_id" domain="[('section_ids', '=', 'section_id')]"/> diff --git a/addons/crm_claim/res_config.py b/addons/crm_claim/res_config.py deleted file mode 100644 index aa0cb7ffa20..00000000000 --- a/addons/crm_claim/res_config.py +++ /dev/null @@ -1,32 +0,0 @@ -# -*- coding: utf-8 -*- -############################################################################## -# -# OpenERP, Open Source Business Applications -# Copyright (C) 2004-2012 OpenERP S.A. (<http://openerp.com>). -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. -# -############################################################################## - -from openerp.osv import fields, osv - -class crm_claim_settings(osv.osv_memory): - _name = 'sale.config.settings' - _inherit = ['sale.config.settings', 'fetchmail.config.settings'] - - _columns = { - 'fetchmail_claim': fields.boolean("Create claims from incoming mails", - fetchmail_model='crm.claim', fetchmail_name='Incoming Claims', - help="""Allows you to configure your incoming mail server, and create claims from incoming emails."""), - } diff --git a/addons/crm_claim/res_config_view.xml b/addons/crm_claim/res_config_view.xml deleted file mode 100644 index 79474f1fb00..00000000000 --- a/addons/crm_claim/res_config_view.xml +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<openerp> - <data> - - <record id="view_project_config_claim" model="ir.ui.view"> - <field name="name">crm_claim settings</field> - <field name="model">sale.config.settings</field> - <field name="inherit_id" ref="base_setup.view_sale_config_settings"/> - <field name="priority" eval="20"/> - <field name="arch" type="xml"> - <div name="fetchmail_lead" position="after"> - <div> - <field name="fetchmail_claim" class="oe_inline"/> - <label for="fetchmail_claim"/> - <button type="object" name="configure_fetchmail_claim" string="Configure" icon="gtk-go-forward" - attrs="{'invisible': [('fetchmail_claim','=',False)]}" class="oe_link"/> - </div> - </div> - </field> - </record> - - </data> -</openerp> diff --git a/addons/crm_helpdesk/crm_helpdesk_view.xml b/addons/crm_helpdesk/crm_helpdesk_view.xml index 6c0e3433afe..6769b42a7f8 100644 --- a/addons/crm_helpdesk/crm_helpdesk_view.xml +++ b/addons/crm_helpdesk/crm_helpdesk_view.xml @@ -48,7 +48,7 @@ <sheet string="Helpdesk Support"> <group col="4" class="oe_header"> <field name="name" string="Query"/> - <field name="section_id" widget="selection"/> + <field name="section_id" widget="selection" groups="base.group_multi_salesteams"/> <field name="user_id"/> <field name="date"/> <field name="date_deadline"/> @@ -115,7 +115,7 @@ <field name="date" string="Date"/> <field name="date_deadline"/> <field name="user_id"/> - <field name="section_id"/> + <field name="section_id" groups="base.group_multi_salesteams"/> <field name="priority"/> <field name="state"/> </tree> @@ -154,7 +154,7 @@ help="Helpdesk requests that are assigned to me or to one of the sale teams I manage" /> <field name="partner_id" /> <field name="user_id"/> - <field name="section_id" string="Sales Team"/> + <field name="section_id" string="Sales Team" groups="base.group_multi_salesteams"/> <group expand="0" string="Group By..."> <filter string="Partner" icon="terp-partner" domain="[]" help="Partner" context="{'group_by':'partner_id'}" /> <filter string="Responsible" icon="terp-personal" domain="[]" help="Responsible User" context="{'group_by':'user_id'}" /> diff --git a/addons/crm_helpdesk/i18n/cs.po b/addons/crm_helpdesk/i18n/cs.po new file mode 100644 index 00000000000..58c37a7bc30 --- /dev/null +++ b/addons/crm_helpdesk/i18n/cs.po @@ -0,0 +1,708 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-03-31 16:47+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-04-01 05:06+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: crm_helpdesk +#: field:crm.helpdesk.report,delay_close:0 +msgid "Delay to Close" +msgstr "" + +#. module: crm_helpdesk +#: field:crm.helpdesk.report,nbr:0 +msgid "# of Cases" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +#: view:crm.helpdesk.report:0 +msgid "Group By..." +msgstr "" + +#. module: crm_helpdesk +#: help:crm.helpdesk,email_from:0 +msgid "Destination email for email gateway" +msgstr "" + +#. module: crm_helpdesk +#: selection:crm.helpdesk.report,month:0 +msgid "March" +msgstr "" + +#. module: crm_helpdesk +#: field:crm.helpdesk,message_unread:0 +msgid "Unread Messages" +msgstr "" + +#. module: crm_helpdesk +#: field:crm.helpdesk,company_id:0 +#: view:crm.helpdesk.report:0 +#: field:crm.helpdesk.report,company_id:0 +msgid "Company" +msgstr "" + +#. module: crm_helpdesk +#: field:crm.helpdesk,email_cc:0 +msgid "Watchers Emails" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk.report:0 +msgid "Salesperson" +msgstr "" + +#. module: crm_helpdesk +#: selection:crm.helpdesk,priority:0 +#: selection:crm.helpdesk.report,priority:0 +msgid "Highest" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk.report:0 +#: field:crm.helpdesk.report,day:0 +msgid "Day" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk.report:0 +msgid "Date of helpdesk requests" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +msgid "Notes" +msgstr "" + +#. module: crm_helpdesk +#: field:crm.helpdesk,message_ids:0 +msgid "Messages" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk.report:0 +msgid "My company" +msgstr "" + +#. module: crm_helpdesk +#: selection:crm.helpdesk,state:0 +#: selection:crm.helpdesk.report,state:0 +msgid "Cancelled" +msgstr "" + +#. module: crm_helpdesk +#: help:crm.helpdesk,message_unread:0 +msgid "If checked new messages require your attention." +msgstr "" + +#. module: crm_helpdesk +#: model:ir.actions.act_window,name:crm_helpdesk.action_report_crm_helpdesk +#: model:ir.ui.menu,name:crm_helpdesk.menu_report_crm_helpdesks_tree +msgid "Helpdesk Analysis" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk.report:0 +#: field:crm.helpdesk.report,date_closed:0 +msgid "Close Date" +msgstr "" + +#. module: crm_helpdesk +#: field:crm.helpdesk,ref:0 +msgid "Reference" +msgstr "" + +#. module: crm_helpdesk +#: field:crm.helpdesk,date_action_next:0 +msgid "Next Action" +msgstr "" + +#. module: crm_helpdesk +#: help:crm.helpdesk,message_summary:0 +msgid "" +"Holds the Chatter summary (number of messages, ...). This summary is " +"directly in html format in order to be inserted in kanban views." +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +msgid "Helpdesk Supports" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +msgid "Extra Info" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +#: field:crm.helpdesk,partner_id:0 +#: view:crm.helpdesk.report:0 +#: field:crm.helpdesk.report,partner_id:0 +msgid "Partner" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +msgid "Estimates" +msgstr "" + +#. module: crm_helpdesk +#: field:crm.helpdesk.report,section_id:0 +msgid "Section" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +#: field:crm.helpdesk,priority:0 +#: view:crm.helpdesk.report:0 +#: field:crm.helpdesk.report,priority:0 +msgid "Priority" +msgstr "" + +#. module: crm_helpdesk +#: field:crm.helpdesk,message_follower_ids:0 +msgid "Followers" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +#: selection:crm.helpdesk,state:0 +#: view:crm.helpdesk.report:0 +msgid "New" +msgstr "" + +#. module: crm_helpdesk +#: model:ir.model,name:crm_helpdesk.model_crm_helpdesk_report +msgid "Helpdesk report after Sales Services" +msgstr "" + +#. module: crm_helpdesk +#: field:crm.helpdesk,email_from:0 +msgid "Email" +msgstr "" + +#. module: crm_helpdesk +#: field:crm.helpdesk,channel_id:0 +#: view:crm.helpdesk.report:0 +#: field:crm.helpdesk.report,channel_id:0 +msgid "Channel" +msgstr "" + +#. module: crm_helpdesk +#: selection:crm.helpdesk,priority:0 +#: selection:crm.helpdesk.report,priority:0 +msgid "Lowest" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk.report:0 +msgid "# Mails" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk.report:0 +msgid "My Sales Team(s)" +msgstr "" + +#. module: crm_helpdesk +#: field:crm.helpdesk,create_date:0 +#: field:crm.helpdesk.report,create_date:0 +msgid "Creation Date" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +msgid "Reset to Draft" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +#: field:crm.helpdesk,date_deadline:0 +#: field:crm.helpdesk.report,date_deadline:0 +msgid "Deadline" +msgstr "" + +#. module: crm_helpdesk +#: selection:crm.helpdesk.report,month:0 +msgid "July" +msgstr "" + +#. module: crm_helpdesk +#: model:ir.actions.act_window,name:crm_helpdesk.crm_helpdesk_categ_action +msgid "Helpdesk Categories" +msgstr "" + +#. module: crm_helpdesk +#: model:ir.ui.menu,name:crm_helpdesk.menu_crm_case_helpdesk-act +msgid "Categories" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +msgid "New Helpdesk Request" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +msgid "Dates" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk.report:0 +msgid "Month of helpdesk requests" +msgstr "" + +#. module: crm_helpdesk +#: code:addons/crm_helpdesk/crm_helpdesk.py:104 +#, python-format +msgid "No Subject" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +msgid "" +"Helpdesk requests that are assigned to me or to one of the sale teams I " +"manage" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk.report:0 +msgid "#Helpdesk" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +msgid "All pending Helpdesk Request" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk.report:0 +msgid "Year of helpdesk requests" +msgstr "" + +#. module: crm_helpdesk +#: selection:crm.helpdesk.report,month:0 +msgid "September" +msgstr "" + +#. module: crm_helpdesk +#: selection:crm.helpdesk.report,month:0 +msgid "December" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk.report:0 +#: field:crm.helpdesk.report,month:0 +msgid "Month" +msgstr "" + +#. module: crm_helpdesk +#: field:crm.helpdesk,write_date:0 +msgid "Update Date" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +msgid "Query" +msgstr "" + +#. module: crm_helpdesk +#: field:crm.helpdesk,ref2:0 +msgid "Reference 2" +msgstr "" + +#. module: crm_helpdesk +#: field:crm.helpdesk,categ_id:0 +#: field:crm.helpdesk.report,categ_id:0 +msgid "Category" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +msgid "Responsible User" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +msgid "Helpdesk Support" +msgstr "" + +#. module: crm_helpdesk +#: field:crm.helpdesk,planned_cost:0 +#: field:crm.helpdesk.report,planned_cost:0 +msgid "Planned Costs" +msgstr "" + +#. module: crm_helpdesk +#: help:crm.helpdesk,channel_id:0 +msgid "Communication channel." +msgstr "" + +#. module: crm_helpdesk +#: help:crm.helpdesk,email_cc:0 +msgid "" +"These email addresses will be added to the CC field of all inbound and " +"outbound emails for this record before being sent. Separate multiple email " +"addresses with a comma" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +msgid "Search Helpdesk" +msgstr "" + +#. module: crm_helpdesk +#: selection:crm.helpdesk.report,state:0 +msgid "Draft" +msgstr "" + +#. module: crm_helpdesk +#: selection:crm.helpdesk,priority:0 +#: selection:crm.helpdesk.report,priority:0 +msgid "Low" +msgstr "" + +#. module: crm_helpdesk +#: field:crm.helpdesk,date_closed:0 +#: selection:crm.helpdesk,state:0 +#: view:crm.helpdesk.report:0 +#: selection:crm.helpdesk.report,state:0 +msgid "Closed" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +#: selection:crm.helpdesk,state:0 +#: selection:crm.helpdesk.report,state:0 +msgid "Pending" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +#: field:crm.helpdesk,state:0 +#: view:crm.helpdesk.report:0 +#: field:crm.helpdesk.report,state:0 +msgid "Status" +msgstr "" + +#. module: crm_helpdesk +#: selection:crm.helpdesk.report,month:0 +msgid "August" +msgstr "" + +#. module: crm_helpdesk +#: selection:crm.helpdesk,priority:0 +#: selection:crm.helpdesk.report,priority:0 +msgid "Normal" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +msgid "Escalate" +msgstr "" + +#. module: crm_helpdesk +#: selection:crm.helpdesk.report,month:0 +msgid "June" +msgstr "" + +#. module: crm_helpdesk +#: field:crm.helpdesk,id:0 +msgid "ID" +msgstr "" + +#. module: crm_helpdesk +#: model:ir.actions.act_window,help:crm_helpdesk.crm_case_helpdesk_act111 +msgid "" +"<p class=\"oe_view_nocontent_create\">\n" +" Click to create a new request. \n" +" </p><p>\n" +" Helpdesk and Support allow you to track your interventions.\n" +" </p><p>\n" +" Use the OpenERP Issues system to manage your support\n" +" activities. Issues can be connected to the email gateway: " +"new\n" +" emails may create issues, each of them automatically gets " +"the\n" +" history of the conversation with the customer.\n" +" </p>\n" +" " +msgstr "" + +#. module: crm_helpdesk +#: field:crm.helpdesk,planned_revenue:0 +msgid "Planned Revenue" +msgstr "" + +#. module: crm_helpdesk +#: field:crm.helpdesk,message_is_follower:0 +msgid "Is a Follower" +msgstr "" + +#. module: crm_helpdesk +#: field:crm.helpdesk.report,user_id:0 +msgid "User" +msgstr "" + +#. module: crm_helpdesk +#: field:crm.helpdesk,active:0 +msgid "Active" +msgstr "" + +#. module: crm_helpdesk +#: selection:crm.helpdesk.report,month:0 +msgid "November" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk.report:0 +msgid "Extended Filters..." +msgstr "" + +#. module: crm_helpdesk +#: model:ir.actions.act_window,name:crm_helpdesk.crm_case_helpdesk_act111 +msgid "Helpdesk Requests" +msgstr "" + +#. module: crm_helpdesk +#: help:crm.helpdesk,section_id:0 +msgid "" +"Responsible sales team. Define Responsible user and Email account for mail " +"gateway." +msgstr "" + +#. module: crm_helpdesk +#: selection:crm.helpdesk.report,month:0 +msgid "October" +msgstr "" + +#. module: crm_helpdesk +#: selection:crm.helpdesk.report,month:0 +msgid "January" +msgstr "" + +#. module: crm_helpdesk +#: field:crm.helpdesk,message_summary:0 +msgid "Summary" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +#: field:crm.helpdesk,date:0 +msgid "Date" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +msgid "Misc" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk.report:0 +msgid "My Company" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +msgid "General" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +msgid "References" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +msgid "Communication" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +msgid "Cancel" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +msgid "Close" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +#: view:crm.helpdesk.report:0 +#: selection:crm.helpdesk.report,state:0 +msgid "Open" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +msgid "Helpdesk Support Tree" +msgstr "" + +#. module: crm_helpdesk +#: selection:crm.helpdesk,state:0 +msgid "In Progress" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +msgid "Categorization" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk.report:0 +#: model:ir.model,name:crm_helpdesk.model_crm_helpdesk +#: model:ir.ui.menu,name:crm_helpdesk.menu_config_helpdesk +msgid "Helpdesk" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +#: field:crm.helpdesk,user_id:0 +msgid "Responsible" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk.report:0 +msgid "Search" +msgstr "" + +#. module: crm_helpdesk +#: field:crm.helpdesk.report,delay_expected:0 +msgid "Overpassed Deadline" +msgstr "" + +#. module: crm_helpdesk +#: field:crm.helpdesk,description:0 +msgid "Description" +msgstr "" + +#. module: crm_helpdesk +#: selection:crm.helpdesk.report,month:0 +msgid "May" +msgstr "" + +#. module: crm_helpdesk +#: field:crm.helpdesk,probability:0 +msgid "Probability (%)" +msgstr "" + +#. module: crm_helpdesk +#: field:crm.helpdesk.report,email:0 +msgid "# Emails" +msgstr "" + +#. module: crm_helpdesk +#: model:ir.actions.act_window,help:crm_helpdesk.action_report_crm_helpdesk +msgid "" +"Have a general overview of all support requests by sorting them with " +"specific criteria such as the processing time, number of requests answered, " +"emails sent and costs." +msgstr "" + +#. module: crm_helpdesk +#: selection:crm.helpdesk.report,month:0 +msgid "February" +msgstr "" + +#. module: crm_helpdesk +#: field:crm.helpdesk,name:0 +msgid "Name" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk.report:0 +#: field:crm.helpdesk.report,name:0 +msgid "Year" +msgstr "" + +#. module: crm_helpdesk +#: model:ir.ui.menu,name:crm_helpdesk.menu_help_support_main +msgid "Helpdesk and Support" +msgstr "" + +#. module: crm_helpdesk +#: selection:crm.helpdesk.report,month:0 +msgid "April" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk.report:0 +msgid "My Case(s)" +msgstr "" + +#. module: crm_helpdesk +#: help:crm.helpdesk,state:0 +msgid "" +"The status is set to 'Draft', when a case is created. " +" \n" +"If the case is in progress the status is set to 'Open'. " +" \n" +"When the case is over, the status is set to 'Done'. " +" \n" +"If the case needs to be reviewed then the status is set to 'Pending'." +msgstr "" + +#. module: crm_helpdesk +#: help:crm.helpdesk,message_ids:0 +msgid "Messages and communication history" +msgstr "" + +#. module: crm_helpdesk +#: model:ir.actions.act_window,help:crm_helpdesk.crm_helpdesk_categ_action +msgid "" +"Create and manage helpdesk categories to better manage and classify your " +"support requests." +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +msgid "Request Date" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +msgid "Open Helpdesk Request" +msgstr "" + +#. module: crm_helpdesk +#: selection:crm.helpdesk,priority:0 +#: selection:crm.helpdesk.report,priority:0 +msgid "High" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +#: field:crm.helpdesk,section_id:0 +#: view:crm.helpdesk.report:0 +msgid "Sales Team" +msgstr "" + +#. module: crm_helpdesk +#: field:crm.helpdesk,date_action_last:0 +msgid "Last Action" +msgstr "" + +#. module: crm_helpdesk +#: view:crm.helpdesk:0 +msgid "Assigned to Me or My Sales Team(s)" +msgstr "" + +#. module: crm_helpdesk +#: field:crm.helpdesk,duration:0 +msgid "Duration" +msgstr "" diff --git a/addons/crm_helpdesk/i18n/ko.po b/addons/crm_helpdesk/i18n/ko.po index 8b1fbe46c60..42d5760068c 100644 --- a/addons/crm_helpdesk/i18n/ko.po +++ b/addons/crm_helpdesk/i18n/ko.po @@ -14,7 +14,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-03-29 04:36+0000\n" +"X-Launchpad-Export-Date: 2013-03-30 05:27+0000\n" "X-Generator: Launchpad (build 16546)\n" #. module: crm_helpdesk diff --git a/addons/crm_helpdesk/report/crm_helpdesk_report_view.xml b/addons/crm_helpdesk/report/crm_helpdesk_report_view.xml index 05f502656d2..795ae210d8d 100644 --- a/addons/crm_helpdesk/report/crm_helpdesk_report_view.xml +++ b/addons/crm_helpdesk/report/crm_helpdesk_report_view.xml @@ -11,7 +11,7 @@ <tree string="Helpdesk" create="false"> <field name="name" invisible="1"/> <field name="month" invisible="1"/> - <field name="section_id" invisible="1"/> + <field name="section_id" invisible="1" groups="base.group_multi_salesteams"/> <field name="user_id" invisible="1"/> <field name="company_id" invisible="1"/> <field name="partner_id" invisible="1"/> @@ -60,7 +60,7 @@ <separator/> <filter string="My Company" icon="terp-go-home" context="{'invisible_section': False}" domain="[('section_id.user_id.company_id','=',uid)]" help="My company"/> <field name="user_id" string="Salesperson"/> - <field name="section_id" string="Sales Team" context="{'invisible_section': False}"/> + <field name="section_id" string="Sales Team" context="{'invisible_section': False}" groups="base.group_multi_salesteams"/> <field name="company_id" groups="base.group_multi_company"/> <group expand="0" string="Extended Filters..." groups="base.group_no_one"> <field name="priority" string="Priority"/> diff --git a/addons/crm_partner_assign/i18n/cs.po b/addons/crm_partner_assign/i18n/cs.po new file mode 100644 index 00000000000..12c03bf18eb --- /dev/null +++ b/addons/crm_partner_assign/i18n/cs.po @@ -0,0 +1,931 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-03-30 12:42+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-03-31 05:27+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: crm_partner_assign +#: field:crm.lead.report.assign,delay_close:0 +msgid "Delay to Close" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.forward.to.partner,author_id:0 +msgid "Author" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.report.assign,planned_revenue:0 +msgid "Planned Revenue" +msgstr "" + +#. module: crm_partner_assign +#: help:crm.lead.forward.to.partner,type:0 +msgid "" +"Message type: email for email message, notification for system message, " +"comment for other messages such as user replies" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.report.assign,nbr:0 +msgid "# of Cases" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead.report.assign:0 +#: view:crm.partner.report.assign:0 +msgid "Group By..." +msgstr "" + +#. module: crm_partner_assign +#: help:crm.lead.forward.to.partner,body:0 +msgid "Automatically sanitized HTML contents" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead:0 +msgid "Forward" +msgstr "" + +#. module: crm_partner_assign +#: view:res.partner:0 +msgid "Geo Localize" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.forward.to.partner,starred:0 +msgid "Starred" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead.forward.to.partner:0 +msgid "Body" +msgstr "" + +#. module: crm_partner_assign +#: help:crm.lead.forward.to.partner,email_from:0 +msgid "" +"Email address of the sender. This field is set when no matching partner is " +"found for incoming emails." +msgstr "" + +#. module: crm_partner_assign +#: view:crm.partner.report.assign:0 +msgid "Date Partnership" +msgstr "" + +#. module: crm_partner_assign +#: selection:crm.lead.report.assign,type:0 +msgid "Lead" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead.report.assign:0 +msgid "Delay to close" +msgstr "" + +#. module: crm_partner_assign +#: selection:crm.lead.forward.to.partner,history_mode:0 +msgid "Whole Story" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead.report.assign:0 +#: field:crm.lead.report.assign,company_id:0 +msgid "Company" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.forward.to.partner,notification_ids:0 +msgid "Notifications" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.report.assign,date_assign:0 +msgid "Partner Date" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead.report.assign:0 +#: view:crm.partner.report.assign:0 +#: view:res.partner:0 +msgid "Salesperson" +msgstr "" + +#. module: crm_partner_assign +#: selection:crm.lead.report.assign,priority:0 +msgid "Highest" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead.report.assign:0 +#: field:crm.lead.report.assign,day:0 +msgid "Day" +msgstr "" + +#. module: crm_partner_assign +#: help:crm.lead.forward.to.partner,message_id:0 +msgid "Message unique identifier" +msgstr "" + +#. module: crm_partner_assign +#: field:res.partner,date_review_next:0 +msgid "Next Partner Review" +msgstr "" + +#. module: crm_partner_assign +#: selection:crm.lead.forward.to.partner,history_mode:0 +msgid "Latest email" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead,partner_latitude:0 +#: field:res.partner,partner_latitude:0 +msgid "Geo Latitude" +msgstr "" + +#. module: crm_partner_assign +#: selection:crm.lead.report.assign,state:0 +msgid "Cancelled" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead:0 +msgid "Geo Assignation" +msgstr "" + +#. module: crm_partner_assign +#: model:ir.model,name:crm_partner_assign.model_crm_lead_forward_to_partner +msgid "Email composition wizard" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.partner.report.assign,turnover:0 +msgid "Turnover" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.report.assign,date_closed:0 +msgid "Close Date" +msgstr "" + +#. module: crm_partner_assign +#: help:res.partner,partner_weight:0 +msgid "" +"Gives the probability to assign a lead to this partner. (0 means no " +"assignation.)" +msgstr "" + +#. module: crm_partner_assign +#: view:res.partner:0 +msgid "Partner Activation" +msgstr "" + +#. module: crm_partner_assign +#: selection:crm.lead.forward.to.partner,type:0 +msgid "System notification" +msgstr "" + +#. module: crm_partner_assign +#: code:addons/crm_partner_assign/wizard/crm_forward_to_partner.py:74 +#, python-format +msgid "Lead forward" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.report.assign,probability:0 +msgid "Avg Probability" +msgstr "" + +#. module: crm_partner_assign +#: view:res.partner:0 +msgid "Previous" +msgstr "" + +#. module: crm_partner_assign +#: code:addons/crm_partner_assign/partner_geo_assign.py:36 +#, python-format +msgid "Network error" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.forward.to.partner,email_from:0 +msgid "From" +msgstr "" + +#. module: crm_partner_assign +#: model:ir.actions.act_window,name:crm_partner_assign.res_partner_grade_action +#: model:ir.ui.menu,name:crm_partner_assign.menu_res_partner_grade_action +#: view:res.partner.grade:0 +msgid "Partner Grade" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead.report.assign:0 +#: view:crm.partner.report.assign:0 +msgid "Section" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead.forward.to.partner:0 +msgid "Send" +msgstr "" + +#. module: crm_partner_assign +#: view:res.partner:0 +msgid "Next" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead.report.assign:0 +#: field:crm.lead.report.assign,priority:0 +msgid "Priority" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.report.assign,delay_expected:0 +msgid "Overpassed Deadline" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.forward.to.partner,type:0 +#: field:crm.lead.report.assign,type:0 +msgid "Type" +msgstr "" + +#. module: crm_partner_assign +#: selection:crm.lead.forward.to.partner,type:0 +msgid "Email" +msgstr "" + +#. module: crm_partner_assign +#: help:crm.lead,partner_assigned_id:0 +msgid "Partner this case has been forwarded/assigned to." +msgstr "" + +#. module: crm_partner_assign +#: selection:crm.lead.report.assign,priority:0 +msgid "Lowest" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.partner.report.assign:0 +msgid "Date Invoice" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.forward.to.partner,template_id:0 +msgid "Template" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead.report.assign:0 +msgid "Assign Date" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead.report.assign:0 +msgid "Leads Analysis" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.report.assign,creation_date:0 +msgid "Creation Date" +msgstr "" + +#. module: crm_partner_assign +#: model:ir.model,name:crm_partner_assign.model_res_partner_activation +msgid "res.partner.activation" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.forward.to.partner,parent_id:0 +msgid "Parent Message" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.forward.to.partner,res_id:0 +msgid "Related Document ID" +msgstr "" + +#. module: crm_partner_assign +#: selection:crm.lead.report.assign,state:0 +msgid "Pending" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead:0 +msgid "Partner Assignation" +msgstr "" + +#. module: crm_partner_assign +#: help:crm.lead.report.assign,type:0 +msgid "Type is used to separate Leads and Opportunities" +msgstr "" + +#. module: crm_partner_assign +#: selection:crm.lead.report.assign,month:0 +msgid "July" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.partner.report.assign:0 +msgid "Date Review" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead.report.assign:0 +#: field:crm.lead.report.assign,stage_id:0 +msgid "Stage" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead.report.assign:0 +#: field:crm.lead.report.assign,state:0 +msgid "Status" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.forward.to.partner,to_read:0 +msgid "To read" +msgstr "" + +#. module: crm_partner_assign +#: code:addons/crm_partner_assign/wizard/crm_forward_to_partner.py:74 +#, python-format +msgid "Fwd" +msgstr "" + +#. module: crm_partner_assign +#: view:res.partner:0 +msgid "Geo Localization" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead.report.assign:0 +#: view:crm.partner.report.assign:0 +msgid "Opportunities Assignment Analysis" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead.forward.to.partner:0 +#: view:res.partner:0 +msgid "Cancel" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.forward.to.partner,history_mode:0 +msgid "Send history" +msgstr "" + +#. module: crm_partner_assign +#: view:res.partner:0 +msgid "Close" +msgstr "" + +#. module: crm_partner_assign +#: selection:crm.lead.report.assign,month:0 +msgid "March" +msgstr "" + +#. module: crm_partner_assign +#: model:ir.actions.act_window,name:crm_partner_assign.action_report_crm_opportunity_assign +#: model:ir.ui.menu,name:crm_partner_assign.menu_report_crm_opportunities_assign_tree +msgid "Opp. Assignment Analysis" +msgstr "" + +#. module: crm_partner_assign +#: help:crm.lead.report.assign,delay_close:0 +msgid "Number of Days to close the case" +msgstr "" + +#. module: crm_partner_assign +#: help:crm.lead.forward.to.partner,notified_partner_ids:0 +msgid "" +"Partners that have a notification pushing this message in their mailboxes" +msgstr "" + +#. module: crm_partner_assign +#: selection:crm.lead.forward.to.partner,type:0 +msgid "Comment" +msgstr "" + +#. module: crm_partner_assign +#: field:res.partner,partner_weight:0 +msgid "Weight" +msgstr "" + +#. module: crm_partner_assign +#: selection:crm.lead.report.assign,month:0 +msgid "April" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead.report.assign:0 +#: field:crm.lead.report.assign,grade_id:0 +#: view:crm.partner.report.assign:0 +#: field:crm.partner.report.assign,grade_id:0 +msgid "Grade" +msgstr "" + +#. module: crm_partner_assign +#: selection:crm.lead.report.assign,month:0 +msgid "December" +msgstr "" + +#. module: crm_partner_assign +#: help:crm.lead.forward.to.partner,vote_user_ids:0 +msgid "Users that voted for this message" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead.report.assign:0 +#: field:crm.lead.report.assign,month:0 +msgid "Month" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.report.assign,opening_date:0 +msgid "Opening Date" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.forward.to.partner,child_ids:0 +msgid "Child Messages" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.partner.report.assign,date_review:0 +#: field:res.partner,date_review:0 +msgid "Latest Partner Review" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.forward.to.partner,subject:0 +msgid "Subject" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead.forward.to.partner:0 +msgid "or" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.forward.to.partner,body:0 +msgid "Contents" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.forward.to.partner,vote_user_ids:0 +msgid "Votes" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead.report.assign:0 +msgid "#Opportunities" +msgstr "" + +#. module: crm_partner_assign +#: help:crm.lead.forward.to.partner,starred:0 +msgid "Current user has a starred notification linked to this message" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.partner.report.assign,date_partnership:0 +#: field:res.partner,date_partnership:0 +msgid "Partnership Date" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead:0 +msgid "Team" +msgstr "" + +#. module: crm_partner_assign +#: selection:crm.lead.report.assign,state:0 +msgid "Draft" +msgstr "" + +#. module: crm_partner_assign +#: selection:crm.lead.report.assign,priority:0 +msgid "Low" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead.report.assign:0 +#: selection:crm.lead.report.assign,state:0 +msgid "Closed" +msgstr "" + +#. module: crm_partner_assign +#: model:ir.actions.act_window,name:crm_partner_assign.action_crm_send_mass_forward +msgid "Mass forward to partner" +msgstr "" + +#. module: crm_partner_assign +#: view:res.partner:0 +#: field:res.partner,opportunity_assigned_ids:0 +msgid "Assigned Opportunities" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead,date_assign:0 +msgid "Assignation Date" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.report.assign,probability_max:0 +msgid "Max Probability" +msgstr "" + +#. module: crm_partner_assign +#: selection:crm.lead.report.assign,month:0 +msgid "August" +msgstr "" + +#. module: crm_partner_assign +#: help:crm.lead.forward.to.partner,record_name:0 +msgid "Name get of the related document." +msgstr "" + +#. module: crm_partner_assign +#: selection:crm.lead.report.assign,priority:0 +msgid "Normal" +msgstr "" + +#. module: crm_partner_assign +#: view:res.partner:0 +msgid "Escalate" +msgstr "" + +#. module: crm_partner_assign +#: selection:crm.lead.report.assign,month:0 +msgid "June" +msgstr "" + +#. module: crm_partner_assign +#: help:crm.lead.report.assign,delay_open:0 +msgid "Number of Days to open the case" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.report.assign,delay_open:0 +msgid "Delay to Open" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.report.assign,user_id:0 +#: field:crm.partner.report.assign,user_id:0 +msgid "User" +msgstr "" + +#. module: crm_partner_assign +#: field:res.partner.grade,active:0 +msgid "Active" +msgstr "" + +#. module: crm_partner_assign +#: selection:crm.lead.report.assign,month:0 +msgid "November" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead.report.assign:0 +msgid "Extended Filters..." +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead,partner_longitude:0 +#: field:res.partner,partner_longitude:0 +msgid "Geo Longitude" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.partner.report.assign,opp:0 +msgid "# of Opportunity" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead.report.assign:0 +msgid "Lead Assign" +msgstr "" + +#. module: crm_partner_assign +#: selection:crm.lead.report.assign,month:0 +msgid "October" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead:0 +msgid "Assignation" +msgstr "" + +#. module: crm_partner_assign +#: selection:crm.lead.report.assign,month:0 +msgid "January" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead.forward.to.partner:0 +msgid "Send Mail" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.forward.to.partner,date:0 +msgid "Date" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead.report.assign:0 +msgid "Planned Revenues" +msgstr "" + +#. module: crm_partner_assign +#: view:res.partner:0 +msgid "Partner Review" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.partner.report.assign,period_id:0 +msgid "Invoice Period" +msgstr "" + +#. module: crm_partner_assign +#: model:ir.model,name:crm_partner_assign.model_res_partner_grade +msgid "res.partner.grade" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.forward.to.partner,message_id:0 +msgid "Message-Id" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead.forward.to.partner:0 +#: field:crm.lead.forward.to.partner,attachment_ids:0 +msgid "Attachments" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.forward.to.partner,record_name:0 +msgid "Message Record Name" +msgstr "" + +#. module: crm_partner_assign +#: field:res.partner.activation,sequence:0 +#: field:res.partner.grade,sequence:0 +msgid "Sequence" +msgstr "" + +#. module: crm_partner_assign +#: code:addons/crm_partner_assign/partner_geo_assign.py:37 +#, python-format +msgid "" +"Cannot contact geolocation servers. Please make sure that your internet " +"connection is up and running (%s)." +msgstr "" + +#. module: crm_partner_assign +#: selection:crm.lead.report.assign,month:0 +msgid "September" +msgstr "" + +#. module: crm_partner_assign +#: field:res.partner.grade,name:0 +msgid "Grade Name" +msgstr "" + +#. module: crm_partner_assign +#: help:crm.lead,date_assign:0 +msgid "Last date this case was forwarded/assigned to a partner" +msgstr "" + +#. module: crm_partner_assign +#: selection:crm.lead.report.assign,state:0 +#: view:res.partner:0 +msgid "Open" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.forward.to.partner,subtype_id:0 +msgid "Subtype" +msgstr "" + +#. module: crm_partner_assign +#: field:res.partner,date_localization:0 +msgid "Geo Localization Date" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead.report.assign:0 +msgid "Current" +msgstr "" + +#. module: crm_partner_assign +#: model:ir.model,name:crm_partner_assign.model_crm_lead +msgid "Lead/Opportunity" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.forward.to.partner,notified_partner_ids:0 +msgid "Notified partners" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead.forward.to.partner:0 +#: model:ir.actions.act_window,name:crm_partner_assign.crm_lead_forward_to_partner_act +msgid "Forward to Partner" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.report.assign,section_id:0 +#: field:crm.partner.report.assign,section_id:0 +msgid "Sales Team" +msgstr "" + +#. module: crm_partner_assign +#: selection:crm.lead.report.assign,month:0 +msgid "May" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.report.assign,probable_revenue:0 +msgid "Probable Revenue" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.partner.report.assign:0 +#: field:crm.partner.report.assign,activation:0 +#: view:res.partner:0 +#: field:res.partner,activation:0 +#: view:res.partner.activation:0 +msgid "Activation" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead:0 +#: field:crm.lead,partner_assigned_id:0 +msgid "Assigned Partner" +msgstr "" + +#. module: crm_partner_assign +#: field:res.partner,grade_id:0 +msgid "Partner Level" +msgstr "" + +#. module: crm_partner_assign +#: help:crm.lead.forward.to.partner,to_read:0 +msgid "Current user has an unread notification linked to this message" +msgstr "" + +#. module: crm_partner_assign +#: selection:crm.lead.report.assign,type:0 +msgid "Opportunity" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.report.assign,partner_id:0 +msgid "Customer" +msgstr "" + +#. module: crm_partner_assign +#: selection:crm.lead.report.assign,month:0 +msgid "February" +msgstr "" + +#. module: crm_partner_assign +#: field:res.partner.activation,name:0 +msgid "Name" +msgstr "" + +#. module: crm_partner_assign +#: model:ir.actions.act_window,name:crm_partner_assign.res_partner_activation_act +#: model:ir.ui.menu,name:crm_partner_assign.res_partner_activation_config_mi +msgid "Partner Activations" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead.report.assign:0 +#: field:crm.lead.report.assign,country_id:0 +#: view:crm.partner.report.assign:0 +#: field:crm.partner.report.assign,country_id:0 +msgid "Country" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead.report.assign:0 +#: field:crm.lead.report.assign,year:0 +msgid "Year" +msgstr "" + +#. module: crm_partner_assign +#: view:res.partner:0 +msgid "Convert to Opportunity" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead:0 +msgid "Geo Assign" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead.report.assign:0 +msgid "Delay to open" +msgstr "" + +#. module: crm_partner_assign +#: model:ir.actions.act_window,name:crm_partner_assign.action_report_crm_partner_assign +#: model:ir.ui.menu,name:crm_partner_assign.menu_report_crm_partner_assign_tree +msgid "Partnership Analysis" +msgstr "" + +#. module: crm_partner_assign +#: help:crm.lead.forward.to.partner,notification_ids:0 +msgid "" +"Technical field holding the message notifications. Use notified_partner_ids " +"to access notified partners." +msgstr "" + +#. module: crm_partner_assign +#: view:crm.partner.report.assign:0 +msgid "Partner assigned Analysis" +msgstr "" + +#. module: crm_partner_assign +#: model:ir.model,name:crm_partner_assign.model_crm_lead_report_assign +msgid "CRM Lead Report" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.forward.to.partner,composition_mode:0 +msgid "Composition mode" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.forward.to.partner,model:0 +msgid "Related Document Model" +msgstr "" + +#. module: crm_partner_assign +#: selection:crm.lead.forward.to.partner,history_mode:0 +msgid "Case Information" +msgstr "" + +#. module: crm_partner_assign +#: help:crm.lead.forward.to.partner,author_id:0 +msgid "" +"Author of the message. If not set, email_from may hold an email address that " +"did not match any partner." +msgstr "" + +#. module: crm_partner_assign +#: model:ir.model,name:crm_partner_assign.model_crm_partner_report_assign +msgid "CRM Partner Report" +msgstr "" + +#. module: crm_partner_assign +#: selection:crm.lead.report.assign,priority:0 +msgid "High" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.forward.to.partner,partner_ids:0 +msgid "Additional contacts" +msgstr "" + +#. module: crm_partner_assign +#: help:crm.lead.forward.to.partner,parent_id:0 +msgid "Initial thread message." +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.report.assign,create_date:0 +msgid "Create Date" +msgstr "" + +#. module: crm_partner_assign +#: field:crm.lead.forward.to.partner,filter_id:0 +msgid "Filters" +msgstr "" + +#. module: crm_partner_assign +#: view:crm.lead.report.assign:0 +#: field:crm.lead.report.assign,partner_assigned_id:0 +#: view:crm.partner.report.assign:0 +#: field:crm.partner.report.assign,partner_id:0 +#: model:ir.model,name:crm_partner_assign.model_res_partner +msgid "Partner" +msgstr "" diff --git a/addons/crm_partner_assign/i18n/ko.po b/addons/crm_partner_assign/i18n/ko.po index b7c33f77f72..f5b394c4634 100644 --- a/addons/crm_partner_assign/i18n/ko.po +++ b/addons/crm_partner_assign/i18n/ko.po @@ -14,7 +14,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-03-29 04:36+0000\n" +"X-Launchpad-Export-Date: 2013-03-30 05:27+0000\n" "X-Generator: Launchpad (build 16546)\n" #. module: crm_partner_assign diff --git a/addons/crm_partner_assign/report/crm_lead_report_view.xml b/addons/crm_partner_assign/report/crm_lead_report_view.xml index ee9266a0235..fbc46302fd7 100644 --- a/addons/crm_partner_assign/report/crm_lead_report_view.xml +++ b/addons/crm_partner_assign/report/crm_lead_report_view.xml @@ -10,7 +10,7 @@ <search string="Leads Analysis"> <filter icon="terp-check" string="Current" domain="[('state','in',('draft','open'))]"/> <filter icon="terp-dialog-close" string="Closed" domain="[('state','=','done')]"/> - <field name="section_id" context="{'invisible_section': False}"/> + <field name="section_id" context="{'invisible_section': False}" groups="base.group_multi_salesteams"/> <field name="grade_id"/> <field name="user_id"/> <field name="partner_assigned_id"/> @@ -69,7 +69,7 @@ <field name="year" invisible="1"/> <field name="month" invisible="1"/> <field name="date_assign" invisible="1"/> - <field name="section_id" invisible="1"/> + <field name="section_id" invisible="1" groups="base.group_multi_salesteams"/> <field name="user_id" invisible="1"/> <field name="grade_id" invisible="1" widget="selection"/> <field name="partner_assigned_id" invisible="1"/> diff --git a/addons/crm_partner_assign/report/crm_partner_report_view.xml b/addons/crm_partner_assign/report/crm_partner_report_view.xml index eb2c86874c4..4e7e13afb15 100644 --- a/addons/crm_partner_assign/report/crm_partner_report_view.xml +++ b/addons/crm_partner_assign/report/crm_partner_report_view.xml @@ -8,7 +8,7 @@ <field name="model">crm.partner.report.assign</field> <field name="arch" type="xml"> <search string="Partner assigned Analysis"> - <field name="section_id"/> + <field name="section_id" groups="base.group_multi_salesteams"/> <field name="user_id"/> <field name="grade_id"/> <field name="activation"/> @@ -49,7 +49,7 @@ <field name="date_review" invisible="1"/> <field name="date_partnership" invisible="1"/> <field name="period_id" invisible="1"/> - <field name="section_id" invisible="1"/> + <field name="section_id" invisible="1" groups="base.group_multi_salesteams"/> <field name="user_id" invisible="1"/> <field name="opp"/> <field name="turnover"/> diff --git a/addons/crm_partner_assign/res_partner_view.xml b/addons/crm_partner_assign/res_partner_view.xml index 433a290ae81..9e70835a3f1 100644 --- a/addons/crm_partner_assign/res_partner_view.xml +++ b/addons/crm_partner_assign/res_partner_view.xml @@ -140,30 +140,31 @@ <field name="type"/> <field name="stage_id"/> <button name="stage_previous" string="Previous" - states="open,pending" type="object" icon="gtk-go-back" /> + states="open,pending" type="object" icon="gtk-go-back" /> <button name="stage_next" string="Next" - states="open,pending" type="object" - icon="gtk-go-forward" /> + states="open,pending" type="object" + icon="gtk-go-forward" /> <field name="section_id" - invisible="context.get('invisible_section', True)" /> + invisible="context.get('invisible_section', True)" + groups="base.group_multi_salesteams"/> <field name="user_id" /> <field name="state" /> <button name="case_cancel" string="Cancel" - states="draft,open,pending" type="object" - icon="gtk-cancel" /> + states="draft,open,pending" type="object" + icon="gtk-cancel" /> <button name="case_open" string="Open" - states="draft,pending" type="object" - icon="gtk-go-forward" /> + states="draft,pending" type="object" + icon="gtk-go-forward" /> <button name="case_close" string="Close" - states="open,draft,pending" type="object" - icon="gtk-close" /> + states="open,draft,pending" type="object" + icon="gtk-close" /> <button string="Convert to Opportunity" - name="convert_opportunity" - states="draft,open,pending" icon="gtk-index" - type="object" attrs="{'invisible':[('type','=','opportunity')]}" /> + name="convert_opportunity" + states="draft,open,pending" icon="gtk-index" + type="object" attrs="{'invisible':[('type','=','opportunity')]}" /> <button name="case_escalate" string="Escalate" - states="open,draft,pending" type="object" - icon="gtk-go-up" /> + states="open,draft,pending" type="object" + icon="gtk-go-up" /> </tree> </field> </page> diff --git a/addons/crm_todo/crm_todo_view.xml b/addons/crm_todo/crm_todo_view.xml index 0b3de338808..851c2abfba4 100644 --- a/addons/crm_todo/crm_todo_view.xml +++ b/addons/crm_todo/crm_todo_view.xml @@ -52,11 +52,10 @@ <field name="view_type">form</field> <field name="view_mode">tree,form,calendar,gantt,graph,kanban</field> </record> - <menuitem - id="menu_crm_todo" - parent="base.menu_sales" - action="crm_todo_action" - sequence="6"/> + <menuitem id="menu_crm_todo" + parent="base.menu_sales" + action="crm_todo_action" + sequence="7"/> </data> diff --git a/addons/crm_todo/i18n/cs.po b/addons/crm_todo/i18n/cs.po new file mode 100644 index 00000000000..fea912005b8 --- /dev/null +++ b/addons/crm_todo/i18n/cs.po @@ -0,0 +1,85 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-03-30 12:42+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-03-31 05:27+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: crm_todo +#: model:ir.model,name:crm_todo.model_project_task +msgid "Task" +msgstr "" + +#. module: crm_todo +#: view:crm.lead:0 +msgid "Timebox" +msgstr "" + +#. module: crm_todo +#: view:crm.lead:0 +msgid "Lead" +msgstr "" + +#. module: crm_todo +#: view:crm.lead:0 +msgid "For cancelling the task" +msgstr "" + +#. module: crm_todo +#: view:crm.lead:0 +msgid "Next" +msgstr "" + +#. module: crm_todo +#: model:ir.actions.act_window,name:crm_todo.crm_todo_action +#: model:ir.ui.menu,name:crm_todo.menu_crm_todo +msgid "My Tasks" +msgstr "" + +#. module: crm_todo +#: view:crm.lead:0 +#: field:crm.lead,task_ids:0 +msgid "Tasks" +msgstr "" + +#. module: crm_todo +#: view:crm.lead:0 +msgid "Done" +msgstr "" + +#. module: crm_todo +#: view:crm.lead:0 +msgid "Cancel" +msgstr "" + +#. module: crm_todo +#: model:ir.model,name:crm_todo.model_crm_lead +msgid "Lead/Opportunity" +msgstr "" + +#. module: crm_todo +#: field:project.task,lead_id:0 +msgid "Lead / Opportunity" +msgstr "" + +#. module: crm_todo +#: view:crm.lead:0 +msgid "For changing to done state" +msgstr "" + +#. module: crm_todo +#: view:crm.lead:0 +msgid "Previous" +msgstr "" diff --git a/addons/crm_todo/i18n/ko.po b/addons/crm_todo/i18n/ko.po index f2c3468c5a9..f5924f76b40 100644 --- a/addons/crm_todo/i18n/ko.po +++ b/addons/crm_todo/i18n/ko.po @@ -14,7 +14,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2013-03-29 04:36+0000\n" +"X-Launchpad-Export-Date: 2013-03-30 05:27+0000\n" "X-Generator: Launchpad (build 16546)\n" #. module: crm_todo diff --git a/addons/document/document_view.xml b/addons/document/document_view.xml index 68f294b251c..c3bd5ad3f56 100644 --- a/addons/document/document_view.xml +++ b/addons/document/document_view.xml @@ -258,7 +258,9 @@ name="Documents" action="action_document_file_form" id="menu_document_files" - parent="menu_document_doc"/> + parent="menu_document_doc" + sequence="0" + /> <record model="ir.actions.act_window" id="action_document_file_directory_form"> <field name="type">ir.actions.act_window</field> diff --git a/addons/document_ftp/ftpserver/abstracted_fs.py b/addons/document_ftp/ftpserver/abstracted_fs.py index a83843eb1a5..4a2d6e5e1ec 100644 --- a/addons/document_ftp/ftpserver/abstracted_fs.py +++ b/addons/document_ftp/ftpserver/abstracted_fs.py @@ -325,7 +325,7 @@ class abstracted_fs(object): """ Get cr, uid, pool from a node """ assert node - db = openerp.registry.(node.context.dbname).db + db = openerp.registry(node.context.dbname).db return db.cursor(), node.context.uid def get_node_cr(self, node): diff --git a/addons/edi/i18n/cs.po b/addons/edi/i18n/cs.po new file mode 100644 index 00000000000..880519ca93b --- /dev/null +++ b/addons/edi/i18n/cs.po @@ -0,0 +1,87 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-03-31 16:48+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-04-01 05:06+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: edi +#. openerp-web +#: code:addons/edi/static/src/js/edi.js:67 +#, python-format +msgid "Reason:" +msgstr "" + +#. module: edi +#. openerp-web +#: code:addons/edi/static/src/js/edi.js:60 +#, python-format +msgid "The document has been successfully imported!" +msgstr "" + +#. module: edi +#. openerp-web +#: code:addons/edi/static/src/js/edi.js:65 +#, python-format +msgid "Sorry, the document could not be imported." +msgstr "" + +#. module: edi +#: model:ir.model,name:edi.model_res_company +msgid "Companies" +msgstr "" + +#. module: edi +#: model:ir.model,name:edi.model_res_currency +msgid "Currency" +msgstr "" + +#. module: edi +#. openerp-web +#: code:addons/edi/static/src/js/edi.js:71 +#, python-format +msgid "Document Import Notification" +msgstr "" + +#. module: edi +#: code:addons/edi/models/edi.py:130 +#, python-format +msgid "Missing application." +msgstr "" + +#. module: edi +#: code:addons/edi/models/edi.py:131 +#, python-format +msgid "" +"The document you are trying to import requires the OpenERP `%s` application. " +"You can install it by connecting as the administrator and opening the " +"configuration assistant." +msgstr "" + +#. module: edi +#: code:addons/edi/models/edi.py:47 +#, python-format +msgid "'%s' is an invalid external ID" +msgstr "" + +#. module: edi +#: model:ir.model,name:edi.model_res_partner +msgid "Partner" +msgstr "" + +#. module: edi +#: model:ir.model,name:edi.model_edi_edi +msgid "EDI Subsystem" +msgstr "" diff --git a/addons/email_template/email_template_view.xml b/addons/email_template/email_template_view.xml index 8c63a06ebe0..5429341e154 100644 --- a/addons/email_template/email_template_view.xml +++ b/addons/email_template/email_template_view.xml @@ -9,7 +9,7 @@ <sheet> <div class="oe_title"> <label for="name" class="oe_edit_only"/><h1><field name="name" required="1"/></h1> - <h3><label for="model_id"/><field name="model_id" required="1" on_change="onchange_model_id(model_id)" class="oe_inline"/></h3> + <label for="model_id"/><field name="model_id" required="1" on_change="onchange_model_id(model_id)" class="oe_inline"/> <field name="model" invisible="1"/> </div> <div class="oe_right oe_button_box" name="buttons"> @@ -25,30 +25,44 @@ context="{'template_id':active_id}"/> </div> <notebook> - <page string="Email Details"> + <page string="Mailing Template"> <group> - <group string="Addressing"> - <field name="email_from"/> - <field name="email_to"/> - <field name="partner_to"/> - <field name="email_cc"/> - <field name="reply_to"/> - <field name="user_signature"/> + <group> + <field name="email_from" + placeholder="Override author's email"/> + <field name="email_to" + placeholder="Comma-separated recipient addresses"/> + <field name="partner_to" + placeholder="Comma-separated ids of recipient partners"/> + <field name="email_cc" + placeholder="Comma-separated carbon copy recipients addresses"/> + <field name="reply_to" + placeholder="Preferred reply address"/> + <field name="subject" + placeholder="Subject (placeholders may be used here)"/> + <field name="user_signature" string="Author Signature (mass mail only)"/> </group> - <group string="Dynamic Value Builder" class="oe_edit_only"> - <field name="model_object_field" domain="[('model_id','=',model_id),('ttype','!=','one2many'),('ttype','!=','many2many')]" on_change="onchange_sub_model_object_value_field(model_object_field)"/> - <field name="sub_object" readonly="1"/> - <field name="sub_model_object_field" domain="[('model_id','=',sub_object),('ttype','!=','one2many'),('ttype','!=','many2many')]" attrs="{'readonly':[('sub_object','=',False)],'required':[('sub_object','!=',False)]}" on_change="onchange_sub_model_object_value_field(model_object_field,sub_model_object_field)"/> - <field name="null_value" on_change="onchange_sub_model_object_value_field(model_object_field,sub_model_object_field,null_value)"/> - <field name="copyvalue"/> - </group> - <group string="Contents" colspan="2"> - <field name="subject"/> - <field name="body_html" width="250" height="450" nolabel="1" colspan="2" placeholder="Email contents (in raw HTML format)"/> + <group class="oe_edit_only"> + <h3 colspan="2">Dynamic placeholder generator</h3> + <field name="model_object_field" + domain="[('model_id','=',model_id),('ttype','!=','one2many'),('ttype','!=','many2many')]" + on_change="onchange_sub_model_object_value_field(model_object_field)"/> + <field name="sub_object" readonly="1"/> + <field name="sub_model_object_field" + domain="[('model_id','=',sub_object),('ttype','!=','one2many'),('ttype','!=','many2many')]" + attrs="{'readonly':[('sub_object','=',False)],'required':[('sub_object','!=',False)]}" + on_change="onchange_sub_model_object_value_field(model_object_field,sub_model_object_field)"/> + <field name="null_value" + on_change="onchange_sub_model_object_value_field(model_object_field,sub_model_object_field,null_value)"/> + <field name="copyvalue"/> </group> </group> + <h3>Body</h3> + <field name="body_html" width="250" height="450" + placeholder="Rich-text/HTML content of the message (placeholders may be used here)"/> + <field name="attachment_ids" nolabel="1" widget="many2many_binary"/> </page> - <page string="Advanced"> + <page string="Advanced Settings"> <group> <field name="lang"/> <field name="mail_server_id"/> @@ -56,9 +70,6 @@ <field name="report_template" domain="[('model','=',model)]"/> <field name="report_name" class="oe_inline" attrs="{'invisible':[('report_template','=',False)]}"/> - <field name="attachment_ids"> - <tree><field name="name"/></tree> - </field> </group> </page> </notebook> diff --git a/addons/email_template/wizard/email_template_preview.py b/addons/email_template/wizard/email_template_preview.py index f24c4f13962..5fee415a75e 100644 --- a/addons/email_template/wizard/email_template_preview.py +++ b/addons/email_template/wizard/email_template_preview.py @@ -69,15 +69,19 @@ class email_template_preview(osv.osv_memory): } def on_change_res_id(self, cr, uid, ids, res_id, context=None): - if not res_id: return {} - vals = {} + if context is None: + context = {'value': {}} + if not res_id or not context.get('template_id'): + return {'value': {}} + email_template = self.pool.get('email.template') - template_id = context and context.get('template_id') + template_id = context.get('template_id') template = email_template.browse(cr, uid, template_id, context=context) - vals['name'] = template.name + + # generate and get template values mail_values = email_template.generate_email(cr, uid, template_id, res_id, context=context) - for k in ('email_from','email_to','email_cc','reply_to','subject','body_html'): - vals[k] = mail_values[k] + vals = dict((field, mail_values.get(field, False)) for field in ('email_from', 'email_to', 'email_cc', 'reply_to', 'subject', 'body_html', 'partner_to')) + vals['name'] = template.name return {'value': vals} # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/email_template/wizard/email_template_preview_view.xml b/addons/email_template/wizard/email_template_preview_view.xml index 2d7abcb4eef..0a74f7d813e 100644 --- a/addons/email_template/wizard/email_template_preview_view.xml +++ b/addons/email_template/wizard/email_template_preview_view.xml @@ -7,22 +7,22 @@ <field name="model">email_template.preview</field> <field name="arch" type="xml"> <form string="Email Preview" version="7.0"> - <div> - <h2>Preview of <field name="name" readonly="1" class="oe_inline"/></h2> - <field name="model_id" invisible="1"/> - <h3>Using sample document - <field name="res_id" on_change="on_change_res_id(res_id, context)" class="oe_inline"/> - </h3> - </div> + <field name="model_id" invisible="1"/> + <h2 style="color: #7c7bad;">Preview of <field name="name" readonly="1" nolabel="1" class="oe_inline"/></h2> + Using sample document <field name="res_id" on_change="on_change_res_id(res_id, context)" class="oe_inline"/> <group> - <field name="email_from" readonly="1"/> - <field name="email_to" readonly="1"/> - <field name="partner_to" readonly="1"/> - <field name="email_cc" readonly="1" attrs="{'invisible':[('email_cc','=',False)]}"/> - <field name="reply_to" readonly="1" attrs="{'invisible':[('reply_to','=',False)]}"/> - <field name="subject" readonly="1"/> - <field name="body_html" widget="html" readonly="1" options='{"safe": True}'/> + <field name="subject" readonly="1"/> + <field name="email_from" readonly="1" + attrs="{'invisible':[('email_from','=',False)]}"/> + <field name="email_to" readonly="1"/> + <field name="partner_to" readonly="1"/> + <field name="email_cc" readonly="1" + attrs="{'invisible':[('email_cc','=',False)]}"/> + <field name="reply_to" readonly="1" + attrs="{'invisible':[('reply_to','=',False)]}"/> </group> + <field name="body_html" widget="html" readonly="1" + nolabel="1" options='{"safe": True}'/> </form> </field> </record> diff --git a/addons/email_template/wizard/mail_compose_message.py b/addons/email_template/wizard/mail_compose_message.py index 2215d0705f1..f3b03d16a2f 100644 --- a/addons/email_template/wizard/mail_compose_message.py +++ b/addons/email_template/wizard/mail_compose_message.py @@ -39,26 +39,8 @@ def _reopen(self, res_id, model): class mail_compose_message(osv.TransientModel): _inherit = 'mail.compose.message' - def _get_templates(self, cr, uid, context=None): - if context is None: - context = {} - model = False - email_template_obj = self.pool.get('email.template') - message_id = context.get('default_parent_id', context.get('message_id', context.get('active_id'))) - - if context.get('default_composition_mode') == 'reply' and message_id: - message_data = self.pool.get('mail.message').browse(cr, uid, message_id, context=context) - if message_data: - model = message_data.model - else: - model = context.get('default_model', context.get('active_model')) - - record_ids = email_template_obj.search(cr, uid, [('model', '=', model)], context=context) - return email_template_obj.name_get(cr, uid, record_ids, context) + [(False, '')] - _columns = { - # incredible hack of the day: size=-1 means we want an int db column instead of an str one - 'template_id': fields.selection(_get_templates, 'Template', size=-1), + 'template_id': fields.many2one('email.template', 'Use template', select=True), 'partner_to': fields.char('To (Partner IDs)', help="Comma-separated list of recipient partners ids (placeholders may be used here)"), 'email_to': fields.char('To (Emails)', @@ -114,10 +96,13 @@ class mail_compose_message(osv.TransientModel): 'subject': record.subject or False, 'body_html': record.body or False, 'model_id': model_id or False, - 'attachment_ids': [(6, 0, [att.id for att in record.attachment_ids])] + 'attachment_ids': [(6, 0, [att.id for att in record.attachment_ids])], } template_id = email_template.create(cr, uid, values, context=context) - record.write(record.onchange_template_id(template_id, record.composition_mode, record.model, record.res_id)['value']) + # generate the saved template + template_values = record.onchange_template_id(template_id, record.composition_mode, record.model, record.res_id)['value'] + template_values['template_id'] = template_id + record.write(template_values) return _reopen(self, record.id, record.model) #------------------------------------------------------ diff --git a/addons/email_template/wizard/mail_compose_message_view.xml b/addons/email_template/wizard/mail_compose_message_view.xml index 1b2be68a4a2..46ed49e6627 100644 --- a/addons/email_template/wizard/mail_compose_message_view.xml +++ b/addons/email_template/wizard/mail_compose_message_view.xml @@ -24,10 +24,11 @@ </div> </xpath> <xpath expr="//footer" position="inside"> - <group class="oe_right" col="1"> + <group class="oe_right oe_form" col="1"> <div>Use template - <field name="template_id" nolabel="1" - on_change="onchange_template_id(template_id, composition_mode, model, res_id, context)"/> + <!--FIX: To avoid css issue of many2one field in footer temporary used oe_form (BUG:1152464)--> + <field name="template_id" nolabel="1" class='oe_inline' + on_change="onchange_template_id(template_id, composition_mode, model, res_id, context)" domain="[('model_id','=',context.get('default_model'))]"/> </div> <button icon="/email_template/static/src/img/email_template_save.png" type="object" name="save_as_template" string="Save as new template" class="oe_link" diff --git a/addons/event_moodle/i18n/cs.po b/addons/event_moodle/i18n/cs.po new file mode 100644 index 00000000000..fd98a1df93a --- /dev/null +++ b/addons/event_moodle/i18n/cs.po @@ -0,0 +1,185 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-03-31 16:48+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-04-01 05:06+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: event_moodle +#: view:event.moodle.config.wiz:0 +msgid "Connection with username and password" +msgstr "" + +#. module: event_moodle +#: model:ir.model,name:event_moodle.model_event_moodle_config_wiz +msgid "event.moodle.config.wiz" +msgstr "" + +#. module: event_moodle +#: help:event.moodle.config.wiz,server_moodle:0 +msgid "" +"URL where you have your moodle server. For exemple: 'http://127.0.0.1' or " +"'http://localhost'" +msgstr "" + +#. module: event_moodle +#: field:event.registration,moodle_user_password:0 +msgid "Password for Moodle User" +msgstr "" + +#. module: event_moodle +#: field:event.moodle.config.wiz,moodle_password:0 +msgid "Moodle Password" +msgstr "" + +#. module: event_moodle +#: code:addons/event_moodle/event_moodle.py:137 +#, python-format +msgid "Your email '%s' is wrong." +msgstr "" + +#. module: event_moodle +#: view:event.moodle.config.wiz:0 +msgid "Connection with a Token" +msgstr "" + +#. module: event_moodle +#: view:event.moodle.config.wiz:0 +msgid "" +"The easiest way to connect OpenERP with a moodle server is to create a " +"'token' in Moodle. It will be used to authenticate OpenERP as a trustable " +"application." +msgstr "" + +#. module: event_moodle +#: field:event.moodle.config.wiz,url:0 +msgid "URL to Moodle Server" +msgstr "" + +#. module: event_moodle +#: help:event.moodle.config.wiz,url:0 +msgid "The url that will be used for the connection with moodle in xml-rpc" +msgstr "" + +#. module: event_moodle +#: model:ir.model,name:event_moodle.model_event_registration +msgid "Event Registration" +msgstr "" + +#. module: event_moodle +#: view:event.moodle.config.wiz:0 +msgid "" +"Another approach is to create a user for OpenERP in Moodle. If you do so, " +"make sure that this user has appropriate access rights." +msgstr "" + +#. module: event_moodle +#: field:event.registration,moodle_uid:0 +msgid "Moodle User ID" +msgstr "" + +#. module: event_moodle +#: field:event.moodle.config.wiz,server_moodle:0 +msgid "Moodle Server" +msgstr "" + +#. module: event_moodle +#: field:event.event,moodle_id:0 +msgid "Moodle ID" +msgstr "" + +#. module: event_moodle +#: view:event.moodle.config.wiz:0 +msgid "Server" +msgstr "" + +#. module: event_moodle +#: code:addons/event_moodle/event_moodle.py:57 +#: code:addons/event_moodle/event_moodle.py:105 +#: code:addons/event_moodle/event_moodle.py:137 +#, python-format +msgid "Error!" +msgstr "" + +#. module: event_moodle +#: code:addons/event_moodle/event_moodle.py:105 +#, python-format +msgid "You must configure your moodle connection." +msgstr "" + +#. module: event_moodle +#: field:event.moodle.config.wiz,moodle_username:0 +#: field:event.registration,moodle_username:0 +msgid "Moodle Username" +msgstr "" + +#. module: event_moodle +#: view:event.moodle.config.wiz:0 +#: model:ir.actions.act_window,name:event_moodle.configure_moodle +msgid "Configure Moodle" +msgstr "" + +#. module: event_moodle +#: field:event.moodle.config.wiz,moodle_token:0 +msgid "Moodle Token" +msgstr "" + +#. module: event_moodle +#: help:event.moodle.config.wiz,moodle_username:0 +msgid "" +"You can also connect with your username that you define when you create a " +"token" +msgstr "" + +#. module: event_moodle +#: help:event.event,moodle_id:0 +msgid "The identifier of this event in Moodle" +msgstr "" + +#. module: event_moodle +#: help:event.moodle.config.wiz,moodle_token:0 +msgid "Put your token that you created in your moodle server" +msgstr "" + +#. module: event_moodle +#: model:ir.ui.menu,name:event_moodle.wizard_moodle +msgid "Moodle Configuration" +msgstr "" + +#. module: event_moodle +#: view:event.moodle.config.wiz:0 +msgid "or" +msgstr "" + +#. module: event_moodle +#: code:addons/event_moodle/event_moodle.py:57 +#, python-format +msgid "First configure your moodle connection." +msgstr "" + +#. module: event_moodle +#: view:event.moodle.config.wiz:0 +msgid "Apply" +msgstr "" + +#. module: event_moodle +#: view:event.moodle.config.wiz:0 +msgid "Cancel" +msgstr "" + +#. module: event_moodle +#: model:ir.model,name:event_moodle.model_event_event +msgid "Event" +msgstr "" diff --git a/addons/event_sale/i18n/cs.po b/addons/event_sale/i18n/cs.po new file mode 100644 index 00000000000..69b719fbc8d --- /dev/null +++ b/addons/event_sale/i18n/cs.po @@ -0,0 +1,90 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-03-31 16:48+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-04-01 05:06+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: event_sale +#: model:ir.model,name:event_sale.model_product_product +msgid "Product" +msgstr "" + +#. module: event_sale +#: help:product.product,event_ok:0 +msgid "" +"Determine if a product needs to create automatically an event registration " +"at the confirmation of a sales order line." +msgstr "" + +#. module: event_sale +#: help:sale.order.line,event_id:0 +msgid "" +"Choose an event and it will automatically create a registration for this " +"event." +msgstr "" + +#. module: event_sale +#: model:event.event,name:event_sale.event_technical_training +msgid "Technical training in Grand-Rosiere" +msgstr "" + +#. module: event_sale +#: help:product.product,event_type_id:0 +msgid "" +"Select event types so when we use this product in sales order lines, it will " +"filter events of this type only." +msgstr "" + +#. module: event_sale +#: field:product.product,event_type_id:0 +msgid "Type of Event" +msgstr "" + +#. module: event_sale +#: field:sale.order.line,event_ok:0 +msgid "event_ok" +msgstr "" + +#. module: event_sale +#: field:product.product,event_ok:0 +msgid "Event Subscription" +msgstr "" + +#. module: event_sale +#: field:sale.order.line,event_type_id:0 +msgid "Event Type" +msgstr "" + +#. module: event_sale +#: model:product.template,name:event_sale.event_product_product_template +msgid "Technical Training" +msgstr "" + +#. module: event_sale +#: code:addons/event_sale/event_sale.py:88 +#, python-format +msgid "The registration %s has been created from the Sales Order %s." +msgstr "" + +#. module: event_sale +#: field:sale.order.line,event_id:0 +msgid "Event" +msgstr "" + +#. module: event_sale +#: model:ir.model,name:event_sale.model_sale_order_line +msgid "Sales Order Line" +msgstr "" diff --git a/addons/google_base_account/i18n/cs.po b/addons/google_base_account/i18n/cs.po new file mode 100644 index 00000000000..48287b5c484 --- /dev/null +++ b/addons/google_base_account/i18n/cs.po @@ -0,0 +1,109 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-03-31 16:49+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-04-01 05:06+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: google_base_account +#: field:res.users,gmail_user:0 +msgid "Username" +msgstr "" + +#. module: google_base_account +#: model:ir.actions.act_window,name:google_base_account.act_google_login_form +msgid "Google Login" +msgstr "" + +#. module: google_base_account +#: code:addons/google_base_account/wizard/google_login.py:29 +#, python-format +msgid "Google Contacts Import Error!" +msgstr "" + +#. module: google_base_account +#: model:ir.model,name:google_base_account.model_res_users +msgid "Users" +msgstr "" + +#. module: google_base_account +#: view:google.login:0 +msgid "or" +msgstr "" + +#. module: google_base_account +#: view:google.login:0 +msgid "Google login" +msgstr "" + +#. module: google_base_account +#: field:google.login,password:0 +msgid "Google Password" +msgstr "" + +#. module: google_base_account +#: code:addons/google_base_account/wizard/google_login.py:77 +#, python-format +msgid "Error!" +msgstr "" + +#. module: google_base_account +#: view:res.users:0 +msgid "Google Account" +msgstr "" + +#. module: google_base_account +#: view:res.users:0 +msgid "Synchronization" +msgstr "" + +#. module: google_base_account +#: code:addons/google_base_account/wizard/google_login.py:77 +#, python-format +msgid "Authentication failed. Check the user and password." +msgstr "" + +#. module: google_base_account +#: code:addons/google_base_account/wizard/google_login.py:29 +#, python-format +msgid "" +"Please install gdata-python-client from http://code.google.com/p/gdata-" +"python-client/downloads/list" +msgstr "" + +#. module: google_base_account +#: model:ir.model,name:google_base_account.model_google_login +msgid "Google Contact" +msgstr "" + +#. module: google_base_account +#: view:google.login:0 +msgid "Cancel" +msgstr "" + +#. module: google_base_account +#: field:google.login,user:0 +msgid "Google Username" +msgstr "" + +#. module: google_base_account +#: field:res.users,gmail_password:0 +msgid "Password" +msgstr "" + +#. module: google_base_account +#: view:google.login:0 +msgid "_Login" +msgstr "" diff --git a/addons/google_docs/i18n/cs.po b/addons/google_docs/i18n/cs.po new file mode 100644 index 00000000000..38cda3eccca --- /dev/null +++ b/addons/google_docs/i18n/cs.po @@ -0,0 +1,188 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-03-31 16:49+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-04-01 05:06+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: google_docs +#: code:addons/google_docs/google_docs.py:167 +#, python-format +msgid "Key Error!" +msgstr "" + +#. module: google_docs +#: view:google.docs.config:0 +msgid "" +"for a presentation (slide show) document with url like " +"`https://docs.google.com/a/openerp.com/presentation/d/123456789/edit#slide=id" +".p`, the ID is `presentation:123456789`" +msgstr "" + +#. module: google_docs +#: view:google.docs.config:0 +msgid "" +"for a text document with url like " +"`https://docs.google.com/a/openerp.com/document/d/123456789/edit`, the ID is " +"`document:123456789`" +msgstr "" + +#. module: google_docs +#: field:google.docs.config,gdocs_resource_id:0 +msgid "Google Resource ID to Use as Template" +msgstr "" + +#. module: google_docs +#: view:google.docs.config:0 +msgid "" +"for a drawing document with url like " +"`https://docs.google.com/a/openerp.com/drawings/d/123456789/edit`, the ID is " +"`drawings:123456789`" +msgstr "" + +#. module: google_docs +#. openerp-web +#: code:addons/google_docs/static/src/xml/gdocs.xml:6 +#, python-format +msgid "Add Google Doc..." +msgstr "" + +#. module: google_docs +#: view:google.docs.config:0 +msgid "" +"This is the id of the template document, on google side. You can find it " +"thanks to its URL:" +msgstr "" + +#. module: google_docs +#: model:ir.model,name:google_docs.model_google_docs_config +msgid "Google Docs templates config" +msgstr "" + +#. module: google_docs +#. openerp-web +#: code:addons/google_docs/static/src/js/gdocs.js:25 +#, python-format +msgid "" +"The user google credentials are not set yet. Contact your administrator for " +"help." +msgstr "" + +#. module: google_docs +#: view:google.docs.config:0 +msgid "" +"for a spreadsheet document with url like " +"`https://docs.google.com/a/openerp.com/spreadsheet/ccc?key=123456789#gid=0`, " +"the ID is `spreadsheet:123456789`" +msgstr "" + +#. module: google_docs +#: code:addons/google_docs/google_docs.py:129 +#, python-format +msgid "" +"Your resource id is not correct. You can find the id in the google docs URL." +msgstr "" + +#. module: google_docs +#: code:addons/google_docs/google_docs.py:153 +#, python-format +msgid "Creating google docs may only be done by one at a time." +msgstr "" + +#. module: google_docs +#: code:addons/google_docs/google_docs.py:83 +#: code:addons/google_docs/google_docs.py:129 +#: code:addons/google_docs/google_docs.py:153 +#, python-format +msgid "Google Docs Error!" +msgstr "" + +#. module: google_docs +#: code:addons/google_docs/google_docs.py:83 +#, python-format +msgid "Check your google configuration in Users/Users/Synchronization tab." +msgstr "" + +#. module: google_docs +#: model:ir.ui.menu,name:google_docs.menu_gdocs_config +msgid "Google Docs configuration" +msgstr "" + +#. module: google_docs +#: model:ir.actions.act_window,name:google_docs.action_google_docs_users_config +#: model:ir.ui.menu,name:google_docs.menu_gdocs_model_config +msgid "Models configuration" +msgstr "" + +#. module: google_docs +#: field:google.docs.config,model_id:0 +msgid "Model" +msgstr "" + +#. module: google_docs +#. openerp-web +#: code:addons/google_docs/static/src/js/gdocs.js:28 +#, python-format +msgid "User Google credentials are not yet set." +msgstr "" + +#. module: google_docs +#: code:addons/google_docs/google_docs.py:167 +#, python-format +msgid "Your Google Doc Name Pattern's key does not found in object." +msgstr "" + +#. module: google_docs +#: help:google.docs.config,name_template:0 +msgid "" +"Choose how the new google docs will be named, on google side. Eg. " +"gdoc_%(field_name)s" +msgstr "" + +#. module: google_docs +#: view:google.docs.config:0 +msgid "Google Docs Configuration" +msgstr "" + +#. module: google_docs +#: help:google.docs.config,gdocs_resource_id:0 +msgid "" +"\n" +"This is the id of the template document, on google side. You can find it " +"thanks to its URL: \n" +"*for a text document with url like " +"`https://docs.google.com/a/openerp.com/document/d/123456789/edit`, the ID is " +"`document:123456789`\n" +"*for a spreadsheet document with url like " +"`https://docs.google.com/a/openerp.com/spreadsheet/ccc?key=123456789#gid=0`, " +"the ID is `spreadsheet:123456789`\n" +"*for a presentation (slide show) document with url like " +"`https://docs.google.com/a/openerp.com/presentation/d/123456789/edit#slide=id" +".p`, the ID is `presentation:123456789`\n" +"*for a drawing document with url like " +"`https://docs.google.com/a/openerp.com/drawings/d/123456789/edit`, the ID is " +"`drawings:123456789`\n" +"...\n" +msgstr "" + +#. module: google_docs +#: model:ir.model,name:google_docs.model_ir_attachment +msgid "ir.attachment" +msgstr "" + +#. module: google_docs +#: field:google.docs.config,name_template:0 +msgid "Google Doc Name Pattern" +msgstr "" diff --git a/addons/hr/hr_view.xml b/addons/hr/hr_view.xml index e0c3edfdb39..ccd11bc0dc2 100644 --- a/addons/hr/hr_view.xml +++ b/addons/hr/hr_view.xml @@ -341,7 +341,8 @@ </group> <group> <field name="company_id" widget="selection" groups="base.group_multi_company"/> - <field name="department_id"/> </group> + <field name="department_id"/> + </group> </group> <div> <label for="description"/> diff --git a/addons/hr_evaluation/i18n/cs.po b/addons/hr_evaluation/i18n/cs.po new file mode 100644 index 00000000000..5fee15f25a9 --- /dev/null +++ b/addons/hr_evaluation/i18n/cs.po @@ -0,0 +1,910 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:04+0000\n" +"PO-Revision-Date: 2013-03-31 16:49+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-04-01 05:06+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: hr_evaluation +#: help:hr_evaluation.plan.phase,send_anonymous_manager:0 +msgid "Send an anonymous summary to the manager" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "Start Appraisal" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +#: view:hr.evaluation.report:0 +#: view:hr_evaluation.plan:0 +msgid "Group By..." +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.interview,request_id:0 +#: field:hr.evaluation.report,request_id:0 +msgid "Request_id" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "March" +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.report,delay_date:0 +msgid "Delay to Start" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "Appraisal that are in waiting appreciation state" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan:0 +#: field:hr_evaluation.plan,company_id:0 +#: field:hr_evaluation.plan.phase,company_id:0 +msgid "Company" +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.interview,evaluation_id:0 +#: field:hr_evaluation.plan.phase,survey_id:0 +msgid "Appraisal Form" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +#: field:hr.evaluation.report,day:0 +msgid "Day" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan:0 +#: field:hr_evaluation.plan,phase_ids:0 +msgid "Appraisal Phases" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +msgid "Send Request" +msgstr "" + +#. module: hr_evaluation +#: help:hr_evaluation.plan,month_first:0 +msgid "" +"This number of months will be used to schedule the first evaluation date of " +"the employee when selecting an evaluation plan. " +msgstr "" + +#. module: hr_evaluation +#: view:hr.employee:0 +#: model:ir.ui.menu,name:hr_evaluation.menu_open_view_hr_evaluation_tree +msgid "Appraisals" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid "(eval_name)s:Appraisal Name" +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.interview,message_ids:0 +#: field:hr_evaluation.evaluation,message_ids:0 +msgid "Messages" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid "Mail Body" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.plan.phase,wait:0 +msgid "Wait Previous Phases" +msgstr "" + +#. module: hr_evaluation +#: model:ir.model,name:hr_evaluation.model_hr_evaluation_evaluation +msgid "Employee Appraisal" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,state:0 +#: selection:hr_evaluation.evaluation,state:0 +msgid "Cancelled" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,rating:0 +#: selection:hr_evaluation.evaluation,rating:0 +msgid "Did not meet expectations" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +#: model:ir.actions.act_window,name:hr_evaluation.open_view_hr_evaluation_tree +#: model:ir.ui.menu,name:hr_evaluation.menu_eval_hr +msgid "Appraisal" +msgstr "" + +#. module: hr_evaluation +#: help:hr.evaluation.interview,message_unread:0 +#: help:hr_evaluation.evaluation,message_unread:0 +msgid "If checked new messages require your attention." +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid "Send to Managers" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.evaluation,date_close:0 +msgid "Ending Date" +msgstr "" + +#. module: hr_evaluation +#: help:hr_evaluation.evaluation,note_action:0 +msgid "" +"If the evaluation does not meet the expectations, you can proposean action " +"plan" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid "Send to Employees" +msgstr "" + +#. module: hr_evaluation +#: code:addons/hr_evaluation/hr_evaluation.py:84 +#, python-format +msgid "" +"\n" +"Date: %(date)s\n" +"\n" +"Dear %(employee_name)s,\n" +"\n" +"I am doing an evaluation regarding %(eval_name)s.\n" +"\n" +"Kindly submit your response.\n" +"\n" +"\n" +"Thanks,\n" +"--\n" +"%(user_signature)s\n" +"\n" +" " +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "Appraisal that are in Plan In Progress state" +msgstr "" + +#. module: hr_evaluation +#: help:hr.evaluation.interview,message_summary:0 +#: help:hr_evaluation.evaluation,message_summary:0 +msgid "" +"Holds the Chatter summary (number of messages, ...). This summary is " +"directly in html format in order to be inserted in kanban views." +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "Reset to Draft" +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.report,deadline:0 +msgid "Deadline" +msgstr "" + +#. module: hr_evaluation +#: code:addons/hr_evaluation/hr_evaluation.py:235 +#: code:addons/hr_evaluation/hr_evaluation.py:320 +#, python-format +msgid "Warning!" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +msgid "In progress Evaluations" +msgstr "" + +#. module: hr_evaluation +#: model:ir.model,name:hr_evaluation.model_survey_request +msgid "survey.request" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid "(date)s: Current Date" +msgstr "" + +#. module: hr_evaluation +#: model:ir.actions.act_window,name:hr_evaluation.act_hr_employee_2_hr__evaluation_interview +msgid "Interviews" +msgstr "" + +#. module: hr_evaluation +#: code:addons/hr_evaluation/hr_evaluation.py:83 +#, python-format +msgid "Regarding " +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.interview,message_follower_ids:0 +#: field:hr_evaluation.evaluation,message_follower_ids:0 +msgid "Followers" +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.interview,message_unread:0 +#: field:hr_evaluation.evaluation,message_unread:0 +msgid "Unread Messages" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +#: field:hr.evaluation.report,employee_id:0 +#: view:hr_evaluation.evaluation:0 +#: field:hr_evaluation.evaluation,employee_id:0 +#: model:ir.model,name:hr_evaluation.model_hr_employee +msgid "Employee" +msgstr "" + +#. module: hr_evaluation +#: selection:hr_evaluation.evaluation,state:0 +msgid "New" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.plan.phase,mail_body:0 +msgid "Email" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,rating:0 +#: selection:hr_evaluation.evaluation,rating:0 +msgid "Exceeds expectations" +msgstr "" + +#. module: hr_evaluation +#: help:hr_evaluation.plan.phase,mail_feature:0 +msgid "" +"Check this box if you want to send mail to employees coming under this phase" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +msgid "Creation Date" +msgstr "" + +#. module: hr_evaluation +#: help:hr_evaluation.plan.phase,send_answer_manager:0 +msgid "Send all answers to the manager" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,state:0 +#: selection:hr_evaluation.evaluation,state:0 +msgid "Plan In Progress" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "Public Notes" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +msgid "Send Reminder Email" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +#: field:hr_evaluation.evaluation,rating:0 +msgid "Appreciation" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "Print Interview" +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.report,closed:0 +msgid "closed" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,rating:0 +#: selection:hr_evaluation.evaluation,rating:0 +msgid "Meet expectations" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +#: field:hr.evaluation.report,nbr:0 +msgid "# of Requests" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "July" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +#: view:hr.evaluation.report:0 +#: field:hr.evaluation.report,state:0 +#: view:hr_evaluation.evaluation:0 +#: field:hr_evaluation.evaluation,state:0 +msgid "Status" +msgstr "" + +#. module: hr_evaluation +#: model:ir.actions.act_window,name:hr_evaluation.action_evaluation_plans_installer +msgid "Review Appraisal Plans" +msgstr "" + +#. module: hr_evaluation +#: model:ir.actions.act_window,help:hr_evaluation.action_evaluation_plans_installer +msgid "" +"<p class=\"oe_view_nocontent_create\">\n" +" Click to define a new appraisal plan.\n" +" </p><p>\n" +" You can define appraisal plans (ex: first interview after 6\n" +" months, then every year). Then, each employee can be linked " +"to\n" +" an appraisal plan so that OpenERP can automatically " +"generate\n" +" interview requests to managers and/or subordinates.\n" +" </p>\n" +" " +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid "Action to Perform" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.evaluation,note_action:0 +msgid "Action Plan" +msgstr "" + +#. module: hr_evaluation +#: model:ir.ui.menu,name:hr_evaluation.menu_eval_hr_config +msgid "Periodic Appraisal" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.plan,month_next:0 +msgid "Periodicity of Appraisal (months)" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,rating:0 +#: selection:hr_evaluation.evaluation,rating:0 +msgid "Significantly exceeds expectations" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "In progress" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +msgid "Interview Request" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.plan.phase,send_answer_employee:0 +#: field:hr_evaluation.plan.phase,send_answer_manager:0 +msgid "All Answers" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +#: view:hr_evaluation.evaluation:0 +msgid "Answer Survey" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "September" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "December" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +#: field:hr.evaluation.report,month:0 +msgid "Month" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "Group by..." +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid "Mail Settings" +msgstr "" + +#. module: hr_evaluation +#: model:ir.actions.act_window,name:hr_evaluation.evaluation_reminders +msgid "Appraisal Reminders" +msgstr "" + +#. module: hr_evaluation +#: help:hr_evaluation.plan.phase,wait:0 +msgid "" +"Check this box if you want to wait that all preceding phases are finished " +"before launching this phase." +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid "Legend" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.plan,month_first:0 +msgid "First Appraisal in (months)" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,state:0 +msgid "Draft" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.plan.phase,send_anonymous_employee:0 +#: field:hr_evaluation.plan.phase,send_anonymous_manager:0 +msgid "Anonymous Summary" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "Pending" +msgstr "" + +#. module: hr_evaluation +#: field:hr.employee,evaluation_plan_id:0 +#: view:hr.evaluation.interview:0 +#: view:hr_evaluation.plan:0 +#: field:hr_evaluation.plan,name:0 +#: field:hr_evaluation.plan.phase,plan_id:0 +#: model:ir.model,name:hr_evaluation.model_hr_evaluation_plan +msgid "Appraisal Plan" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +msgid "Print Survey" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "August" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "June" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,rating:0 +#: selection:hr_evaluation.evaluation,rating:0 +msgid "Significantly bellow expectations" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "Validate Appraisal" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid " (employee_name)s: Partner name" +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.interview,message_is_follower:0 +#: field:hr_evaluation.evaluation,message_is_follower:0 +msgid "Is a Follower" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +#: field:hr.evaluation.report,plan_id:0 +#: view:hr_evaluation.evaluation:0 +#: field:hr_evaluation.evaluation,plan_id:0 +msgid "Plan" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.plan,active:0 +msgid "Active" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "November" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +msgid "Extended Filters..." +msgstr "" + +#. module: hr_evaluation +#: help:hr_evaluation.plan.phase,send_anonymous_employee:0 +msgid "Send an anonymous summary to the employee" +msgstr "" + +#. module: hr_evaluation +#: model:ir.model,name:hr_evaluation.model_hr_evaluation_plan_phase +msgid "Appraisal Plan Phase" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "January" +msgstr "" + +#. module: hr_evaluation +#: view:hr.employee:0 +msgid "Appraisal Interviews" +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.interview,message_summary:0 +#: field:hr_evaluation.evaluation,message_summary:0 +msgid "Summary" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "Date" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +msgid "Survey" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.plan.phase,action:0 +msgid "Action" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +#: selection:hr.evaluation.report,state:0 +msgid "Final Validation" +msgstr "" + +#. module: hr_evaluation +#: selection:hr_evaluation.evaluation,state:0 +msgid "Waiting Appreciation" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +#: model:ir.actions.act_window,name:hr_evaluation.action_evaluation_report_all +#: model:ir.ui.menu,name:hr_evaluation.menu_evaluation_report_all +msgid "Appraisal Analysis" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.evaluation,date:0 +msgid "Appraisal Deadline" +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.report,rating:0 +msgid "Overall Rating" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +#: view:hr_evaluation.evaluation:0 +msgid "Interviewer" +msgstr "" + +#. module: hr_evaluation +#: model:ir.model,name:hr_evaluation.model_hr_evaluation_report +msgid "Evaluations Statistics" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +msgid "Deadline Date" +msgstr "" + +#. module: hr_evaluation +#: help:hr_evaluation.evaluation,rating:0 +msgid "This is the appreciation on which the evaluation is summarized." +msgstr "" + +#. module: hr_evaluation +#: selection:hr_evaluation.plan.phase,action:0 +msgid "Top-Down Appraisal Requests" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid "General" +msgstr "" + +#. module: hr_evaluation +#: help:hr_evaluation.plan.phase,send_answer_employee:0 +msgid "Send all answers to the employee" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +#: view:hr.evaluation.report:0 +#: selection:hr.evaluation.report,state:0 +#: view:hr_evaluation.evaluation:0 +#: selection:hr_evaluation.evaluation,state:0 +msgid "Done" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan:0 +#: model:ir.actions.act_window,name:hr_evaluation.open_view_hr_evaluation_plan_tree +#: model:ir.ui.menu,name:hr_evaluation.menu_open_view_hr_evaluation_plan_tree +msgid "Appraisal Plans" +msgstr "" + +#. module: hr_evaluation +#: model:ir.model,name:hr_evaluation.model_hr_evaluation_interview +msgid "Appraisal Interview" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +#: view:hr_evaluation.evaluation:0 +msgid "Cancel" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +msgid "In Progress" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +msgid "To Do" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +msgid "Final Validation Evaluations" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.plan.phase,mail_feature:0 +msgid "Send mail for this phase" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.plan.phase,email_subject:0 +msgid "char" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "October" +msgstr "" + +#. module: hr_evaluation +#: help:hr.employee,evaluation_date:0 +msgid "" +"The date of the next appraisal is computed by the appraisal plan's dates " +"(first appraisal + periodicity)." +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.report,overpass_delay:0 +msgid "Overpassed Deadline" +msgstr "" + +#. module: hr_evaluation +#: help:hr_evaluation.plan,month_next:0 +msgid "" +"The number of month that depicts the delay between each evaluation of this " +"plan (after the first one)." +msgstr "" + +#. module: hr_evaluation +#: selection:hr_evaluation.plan.phase,action:0 +msgid "Self Appraisal Requests" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +#: field:hr_evaluation.evaluation,survey_request_ids:0 +msgid "Appraisal Forms" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "May" +msgstr "" + +#. module: hr_evaluation +#: model:ir.actions.act_window,help:hr_evaluation.open_view_hr_evaluation_tree +msgid "" +"<p class=\"oe_view_nocontent_create\">\n" +" Click to create a new appraisal.\n" +" </p><p>\n" +" Each employee may be assigned an Appraisal Plan. Such a " +"plan\n" +" defines the frequency and the way you manage your periodic\n" +" personnel evaluation. You will be able to define steps and\n" +" attach interviews to each step. OpenERP manages all kinds " +"of\n" +" evaluations: bottom-up, top-down, self-evaluation and final\n" +" evaluation by the manager.\n" +" </p>\n" +" " +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.evaluation:0 +msgid "Internal Notes" +msgstr "" + +#. module: hr_evaluation +#: selection:hr_evaluation.plan.phase,action:0 +msgid "Final Interview" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.plan.phase,name:0 +msgid "Phase" +msgstr "" + +#. module: hr_evaluation +#: selection:hr_evaluation.plan.phase,action:0 +msgid "Bottom-Up Appraisal Requests" +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "February" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +#: view:hr_evaluation.evaluation:0 +msgid "Interview Appraisal" +msgstr "" + +#. module: hr_evaluation +#: field:survey.request,is_evaluation:0 +msgid "Is Appraisal?" +msgstr "" + +#. module: hr_evaluation +#: code:addons/hr_evaluation/hr_evaluation.py:320 +#, python-format +msgid "You cannot start evaluation without Appraisal." +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.interview,user_to_review_id:0 +msgid "Employee to Interview" +msgstr "" + +#. module: hr_evaluation +#: code:addons/hr_evaluation/hr_evaluation.py:235 +#, python-format +msgid "" +"You cannot change state, because some appraisal(s) are in waiting answer or " +"draft state." +msgstr "" + +#. module: hr_evaluation +#: selection:hr.evaluation.report,month:0 +msgid "April" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid "Appraisal Plan Phases" +msgstr "" + +#. module: hr_evaluation +#: model:ir.actions.act_window,help:hr_evaluation.action_hr_evaluation_interview_tree +msgid "" +"<p class=\"oe_view_nocontent_create\">\n" +" Click to create a new interview request related to a " +"personal evaluation. \n" +" </p><p>\n" +" Interview requests are usually generated automatically by\n" +" OpenERP according to an employee's appraisal plan. Each " +"user\n" +" receives automatic emails and requests to evaluate their\n" +" colleagues periodically.\n" +" </p>\n" +" " +msgstr "" + +#. module: hr_evaluation +#: help:hr.evaluation.interview,message_ids:0 +#: help:hr_evaluation.evaluation,message_ids:0 +msgid "Messages and communication history" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.interview:0 +#: view:hr_evaluation.evaluation:0 +msgid "Search Appraisal" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.plan.phase,sequence:0 +msgid "Sequence" +msgstr "" + +#. module: hr_evaluation +#: view:hr_evaluation.plan.phase:0 +msgid "(user_signature)s: User name" +msgstr "" + +#. module: hr_evaluation +#: view:board.board:0 +#: model:ir.actions.act_window,name:hr_evaluation.action_hr_evaluation_interview_board +#: model:ir.actions.act_window,name:hr_evaluation.action_hr_evaluation_interview_tree +#: model:ir.ui.menu,name:hr_evaluation.menu_open_hr_evaluation_interview_requests +msgid "Interview Requests" +msgstr "" + +#. module: hr_evaluation +#: field:hr.evaluation.report,create_date:0 +msgid "Create Date" +msgstr "" + +#. module: hr_evaluation +#: view:hr.evaluation.report:0 +#: field:hr.evaluation.report,year:0 +msgid "Year" +msgstr "" + +#. module: hr_evaluation +#: field:hr_evaluation.evaluation,note_summary:0 +msgid "Appraisal Summary" +msgstr "" + +#. module: hr_evaluation +#: field:hr.employee,evaluation_date:0 +msgid "Next Appraisal Date" +msgstr "" diff --git a/addons/hr_expense/hr_expense.py b/addons/hr_expense/hr_expense.py index 15926336697..2177add8878 100644 --- a/addons/hr_expense/hr_expense.py +++ b/addons/hr_expense/hr_expense.py @@ -228,6 +228,8 @@ class hr_expense_expense(osv.osv): for exp in self.browse(cr, uid, ids, context=context): if not exp.employee_id.address_home_id: raise osv.except_osv(_('Error!'), _('The employee must have a home address.')) + if not exp.employee_id.address_home_id.property_account_payable.id: + raise osv.except_osv(_('Error!'), _('The employee must have a payable account set on his home address.')) company_currency = exp.company_id.currency_id.id diff_currency_p = exp.currency_id.id <> company_currency @@ -333,6 +335,8 @@ class hr_expense_expense(osv.osv): acc = line.product_id.property_account_expense if not acc: acc = line.product_id.categ_id.property_account_expense_categ + if not acc: + raise osv.except_osv(_('Error!'), _('No purchase account found for the product %s (or for his category), please configure one.') % (line.product_id.name)) else: acc = property_obj.get(cr, uid, 'property_account_expense_categ', 'product.category', context={'force_company': company.id}) if not acc: diff --git a/addons/hr_expense/hr_expense_view.xml b/addons/hr_expense/hr_expense_view.xml index 49ea2f0ab9e..eab24b06717 100644 --- a/addons/hr_expense/hr_expense_view.xml +++ b/addons/hr_expense/hr_expense_view.xml @@ -112,7 +112,7 @@ <field name="date_value" string="Expense Date"/> <field name="name"/> <field name="ref"/> - <field domain="[('type','in',['normal','contract']), ('parent_id','!=',False)]" name="analytic_account" groups="analytic.group_analytic_accounting"/> + <field domain="[('type','in',['normal','contract'])]" name="analytic_account" groups="analytic.group_analytic_accounting"/> <field name="uom_id" on_change="onchange_uom(product_id, uom_id, context)"/> <field name="unit_amount"/> <field name="unit_quantity"/> diff --git a/addons/hr_holidays/hr_holidays.py b/addons/hr_holidays/hr_holidays.py index 8c715149ff8..4e113a23510 100644 --- a/addons/hr_holidays/hr_holidays.py +++ b/addons/hr_holidays/hr_holidays.py @@ -184,6 +184,16 @@ class hr_holidays(osv.osv): ('date_check2', "CHECK ( (type='add') OR (date_from <= date_to))", "The start date must be anterior to the end date."), ('date_check', "CHECK ( number_of_days_temp >= 0 )", "The number of days must be greater than 0."), ] + + def copy(self, cr, uid, id, default=None, context=None): + if default is None: + default = {} + if context is None: + context = {} + default = default.copy() + default['date_from'] = False + default['date_to'] = False + return super(hr_holidays, self).copy(cr, uid, id, default, context=context) def _create_resource_leave(self, cr, uid, leaves, context=None): '''This method will create entry in resource calendar leave object at the time of holidays validated ''' diff --git a/addons/hr_payroll_account/i18n/cs.po b/addons/hr_payroll_account/i18n/cs.po new file mode 100644 index 00000000000..f981b32d5e1 --- /dev/null +++ b/addons/hr_payroll_account/i18n/cs.po @@ -0,0 +1,126 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-03-31 16:50+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-04-01 05:06+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: hr_payroll_account +#: field:hr.salary.rule,account_credit:0 +msgid "Credit Account" +msgstr "" + +#. module: hr_payroll_account +#: code:addons/hr_payroll_account/hr_payroll_account.py:103 +#, python-format +msgid "Payslip of %s" +msgstr "" + +#. module: hr_payroll_account +#: code:addons/hr_payroll_account/hr_payroll_account.py:156 +#, python-format +msgid "" +"The Expense Journal \"%s\" has not properly configured the Credit Account!" +msgstr "" + +#. module: hr_payroll_account +#: field:hr.payslip,move_id:0 +msgid "Accounting Entry" +msgstr "" + +#. module: hr_payroll_account +#: code:addons/hr_payroll_account/hr_payroll_account.py:172 +#, python-format +msgid "" +"The Expense Journal \"%s\" has not properly configured the Debit Account!" +msgstr "" + +#. module: hr_payroll_account +#: field:hr.salary.rule,account_tax_id:0 +msgid "Tax Code" +msgstr "" + +#. module: hr_payroll_account +#: field:hr.payslip,period_id:0 +msgid "Force Period" +msgstr "" + +#. module: hr_payroll_account +#: help:hr.payslip,period_id:0 +msgid "Keep empty to use the period of the validation(Payslip) date." +msgstr "" + +#. module: hr_payroll_account +#: model:ir.model,name:hr_payroll_account.model_hr_contract +msgid "Contract" +msgstr "" + +#. module: hr_payroll_account +#: field:hr.contract,analytic_account_id:0 +#: field:hr.salary.rule,analytic_account_id:0 +msgid "Analytic Account" +msgstr "" + +#. module: hr_payroll_account +#: field:hr.salary.rule,account_debit:0 +msgid "Debit Account" +msgstr "" + +#. module: hr_payroll_account +#: model:ir.model,name:hr_payroll_account.model_hr_payslip_run +msgid "Payslip Batches" +msgstr "" + +#. module: hr_payroll_account +#: model:ir.model,name:hr_payroll_account.model_hr_payslip_employees +msgid "Generate payslips for all selected employees" +msgstr "" + +#. module: hr_payroll_account +#: code:addons/hr_payroll_account/hr_payroll_account.py:156 +#: code:addons/hr_payroll_account/hr_payroll_account.py:172 +#, python-format +msgid "Configuration Error!" +msgstr "" + +#. module: hr_payroll_account +#: model:ir.model,name:hr_payroll_account.model_hr_salary_rule +msgid "hr.salary.rule" +msgstr "" + +#. module: hr_payroll_account +#: view:hr.contract:0 +#: view:hr.salary.rule:0 +msgid "Accounting" +msgstr "" + +#. module: hr_payroll_account +#: model:ir.model,name:hr_payroll_account.model_hr_payslip +msgid "Pay Slip" +msgstr "" + +#. module: hr_payroll_account +#: code:addons/hr_payroll_account/hr_payroll_account.py:158 +#: code:addons/hr_payroll_account/hr_payroll_account.py:174 +#, python-format +msgid "Adjustment Entry" +msgstr "" + +#. module: hr_payroll_account +#: field:hr.contract,journal_id:0 +#: field:hr.payslip,journal_id:0 +#: field:hr.payslip.run,journal_id:0 +msgid "Salary Journal" +msgstr "" diff --git a/addons/hr_recruitment/hr_recruitment.py b/addons/hr_recruitment/hr_recruitment.py index deccf10619f..b0b60db6bd5 100644 --- a/addons/hr_recruitment/hr_recruitment.py +++ b/addons/hr_recruitment/hr_recruitment.py @@ -487,6 +487,12 @@ class hr_applicant(base_stage, osv.Model): """ return self.set_priority(cr, uid, ids, '3') + def get_empty_list_help(self, cr, uid, help, context=None): + context['empty_list_help_model'] = 'hr.job' + context['empty_list_help_id'] = context.get('default_job_id', None) + context['empty_list_help_document_name'] = _("job applicants") + return super(hr_applicant, self).get_empty_list_help(cr, uid, help, context=context) + class hr_job(osv.osv): _inherit = "hr.job" diff --git a/addons/hr_recruitment/hr_recruitment_menu.xml b/addons/hr_recruitment/hr_recruitment_menu.xml index dbd4335d730..c280f64105c 100644 --- a/addons/hr_recruitment/hr_recruitment_menu.xml +++ b/addons/hr_recruitment/hr_recruitment_menu.xml @@ -10,17 +10,13 @@ <field name="view_id" eval="False"/> <field name="search_view_id" ref="view_crm_case_jobs_filter"/> <field name="help" type="html"> - <p class="oe_view_nocontent_create"> - Click to add a new job applicant. - </p><p> + <p> OpenERP helps you track applicants in the recruitment process and follow up all operations: meetings, interviews, etc. </p><p> - If you setup the email gateway, applicants and their attached - CV are created automatically when an email is sent to - jobs@yourcompany.com. If you install the document management - modules, all resumes are indexed automatically, so that you can - easily search through their content. + Applicants and their attached CV are created automatically when an email is sent. + If you install the document management modules, all resumes are indexed automatically, + so that you can easily search through their content. </p> </field> </record> diff --git a/addons/hr_recruitment/hr_recruitment_view.xml b/addons/hr_recruitment/hr_recruitment_view.xml index ccf5c8f7934..b531677d538 100644 --- a/addons/hr_recruitment/hr_recruitment_view.xml +++ b/addons/hr_recruitment/hr_recruitment_view.xml @@ -312,11 +312,17 @@ attrs="{'invisible':[('survey_id','=',False)]}"/> </div> </field> - <xpath expr="//div[@class='oe_title']" version="7.0" position="after"> - <div attrs="{'invisible': [('alias_domain', '=', False)]}"> - <field name="alias_id" invisible="1" required="0"/> - <label for="alias_name" class="oe_edit_only"/> - <field name="alias_name" nolabel="1" class="oe_inline" attrs="{'required': [('alias_id', '!=', False)]}"/>@<field name="alias_domain" nolabel="1" class="oe_inline"/> + <xpath expr="//div[@class='oe_title']//h1" position="after"> + <div name="group_alias" + attrs="{'invisible': [('alias_domain', '=', False)]}"> + <label for="alias_id" string="Email Alias"/> + <field name="alias_id" class="oe_inline oe_read_only" required="0" nolabel="1"/> + <span name="edit_alias" class="oe_edit_only"> + <field name="alias_name" class="oe_inline" + attrs="{'required': [('alias_id', '!=', False)]}"/> + @ + <field name="alias_domain" class="oe_inline" readonly="1"/> + </span> </div> </xpath> </field> diff --git a/addons/hr_recruitment/i18n/cs.po b/addons/hr_recruitment/i18n/cs.po new file mode 100644 index 00000000000..c5ac49a5b6d --- /dev/null +++ b/addons/hr_recruitment/i18n/cs.po @@ -0,0 +1,1261 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:04+0000\n" +"PO-Revision-Date: 2013-03-31 16:50+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-04-01 05:06+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: hr_recruitment +#: help:hr.applicant,active:0 +msgid "" +"If the active field is set to false, it will allow you to hide the case " +"without removing it." +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.stage:0 +#: field:hr.recruitment.stage,requirements:0 +msgid "Requirements" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Application Summary" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Start Interview" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Mobile:" +msgstr "" + +#. module: hr_recruitment +#: help:hr.recruitment.stage,fold:0 +msgid "" +"This stage is not visible, for example in status bar or kanban view, when " +"there are no records in that stage to display." +msgstr "" + +#. module: hr_recruitment +#: model:hr.recruitment.degree,name:hr_recruitment.degree_graduate +msgid "Graduate" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Group By..." +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Filter and view on next actions and date" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +#: field:hr.applicant,department_id:0 +#: view:hr.recruitment.report:0 +#: field:hr.recruitment.report,department_id:0 +msgid "Department" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,date_action:0 +msgid "Next Action Date" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,salary_expected_extra:0 +msgid "Expected Salary Extra" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +msgid "Jobs" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Pending Jobs" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +#: field:hr.applicant,message_unread:0 +msgid "Unread Messages" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,company_id:0 +#: view:hr.recruitment.report:0 +#: field:hr.recruitment.report,company_id:0 +msgid "Company" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.source:0 +#: model:ir.actions.act_window,name:hr_recruitment.hr_recruitment_source_action +#: model:ir.ui.menu,name:hr_recruitment.menu_hr_recruitment_source +msgid "Sources of Applicants" +msgstr "" + +#. module: hr_recruitment +#: code:addons/hr_recruitment/hr_recruitment.py:445 +#, python-format +msgid "You must define Applied Job for this applicant." +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Job" +msgstr "" + +#. module: hr_recruitment +#: field:hr.recruitment.partner.create,close:0 +msgid "Close job request" +msgstr "" + +#. module: hr_recruitment +#: model:ir.actions.act_window,help:hr_recruitment.crm_case_categ0_act_job +msgid "" +"<p class=\"oe_view_nocontent_create\">\n" +" Click to add a new job applicant.\n" +" </p><p>\n" +" OpenERP helps you track applicants in the recruitment\n" +" process and follow up all operations: meetings, interviews, " +"etc.\n" +" </p><p>\n" +" If you setup the email gateway, applicants and their " +"attached\n" +" CV are created automatically when an email is sent to\n" +" jobs@yourcompany.com. If you install the document " +"management\n" +" modules, all resumes are indexed automatically, so that you " +"can\n" +" easily search through their content.\n" +" </p>\n" +" " +msgstr "" + +#. module: hr_recruitment +#: model:ir.actions.act_window,name:hr_recruitment.crm_case_categ0_act_job +#: model:ir.ui.menu,name:hr_recruitment.menu_crm_case_categ0_act_job +msgid "Applications" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,day_open:0 +msgid "Days to Open" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,emp_id:0 +msgid "employee" +msgstr "" + +#. module: hr_recruitment +#: field:hr.config.settings,fetchmail_applicants:0 +msgid "Create applicants from an incoming email account" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +#: field:hr.recruitment.report,day:0 +msgid "Day" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.partner.create:0 +#: model:ir.actions.act_window,name:hr_recruitment.action_hr_recruitment_partner_create +msgid "Create Contact" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Refuse" +msgstr "" + +#. module: hr_recruitment +#: model:hr.recruitment.degree,name:hr_recruitment.degree_licenced +msgid "Master Degree" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,partner_mobile:0 +msgid "Mobile" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,message_ids:0 +msgid "Messages" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Next Actions" +msgstr "" + +#. module: hr_recruitment +#: code:addons/hr_recruitment/wizard/hr_recruitment_create_partner_job.py:38 +#: code:addons/hr_recruitment/wizard/hr_recruitment_create_partner_job.py:56 +#, python-format +msgid "Error!" +msgstr "" + +#. module: hr_recruitment +#: model:hr.recruitment.degree,name:hr_recruitment.degree_bac5 +msgid "Doctoral Degree" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,job_id:0 +#: field:hr.recruitment.report,job_id:0 +msgid "Applied Job" +msgstr "" + +#. module: hr_recruitment +#: help:hr.recruitment.stage,department_id:0 +msgid "" +"Stages of the recruitment process may be different per department. If this " +"stage is common to all departments, keep this field empty." +msgstr "" + +#. module: hr_recruitment +#: help:hr.applicant,message_unread:0 +msgid "If checked new messages require your attention." +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,color:0 +msgid "Color Index" +msgstr "" + +#. module: hr_recruitment +#: model:ir.actions.act_window,name:hr_recruitment.act_hr_applicant_to_meeting +msgid "Meetings" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +#: model:ir.actions.act_window,name:hr_recruitment.action_applicants_status +msgid "Applicants Status" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +msgid "My Recruitment" +msgstr "" + +#. module: hr_recruitment +#: field:hr.job,survey_id:0 +msgid "Interview Form" +msgstr "" + +#. module: hr_recruitment +#: help:hr.job,survey_id:0 +msgid "" +"Choose an interview form for this job position and you will be able to " +"print/answer this interview from all applicants who apply for this job" +msgstr "" + +#. module: hr_recruitment +#: model:ir.ui.menu,name:hr_recruitment.menu_hr_recruitment_recruitment +msgid "Recruitment" +msgstr "" + +#. module: hr_recruitment +#: help:hr.applicant,message_summary:0 +msgid "" +"Holds the Chatter summary (number of messages, ...). This summary is " +"directly in html format in order to be inserted in kanban views." +msgstr "" + +#. module: hr_recruitment +#: code:addons/hr_recruitment/hr_recruitment.py:445 +#, python-format +msgid "Warning!" +msgstr "" + +#. module: hr_recruitment +#: field:hr.recruitment.report,salary_prop:0 +msgid "Salary Proposed" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +#: field:hr.recruitment.report,partner_id:0 +msgid "Partner" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +msgid "Avg Proposed Salary" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +#: field:hr.applicant,availability:0 +#: field:hr.recruitment.report,available:0 +msgid "Availability" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,salary_proposed:0 +#: view:hr.recruitment.report:0 +msgid "Proposed Salary" +msgstr "" + +#. module: hr_recruitment +#: model:ir.model,name:hr_recruitment.model_hr_recruitment_source +msgid "Source of Applicants" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.partner.create:0 +msgid "Convert To Partner" +msgstr "" + +#. module: hr_recruitment +#: model:ir.model,name:hr_recruitment.model_hr_recruitment_report +msgid "Recruitments Statistics" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Print interview report" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +msgid "Hired employees" +msgstr "" + +#. module: hr_recruitment +#: model:ir.model,name:hr_recruitment.model_hr_job +msgid "Job Description" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +#: field:hr.applicant,source_id:0 +msgid "Source" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,message_follower_ids:0 +msgid "Followers" +msgstr "" + +#. module: hr_recruitment +#: model:hr.recruitment.source,name:hr_recruitment.source_monster +msgid "Monster" +msgstr "" + +#. module: hr_recruitment +#: model:mail.message.subtype,name:hr_recruitment.mt_applicant_hired +msgid "Applicant Hired" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,email_from:0 +msgid "Email" +msgstr "" + +#. module: hr_recruitment +#: model:ir.actions.act_window,help:hr_recruitment.hr_job_stage_act +msgid "" +"<p class=\"oe_view_nocontent_create\">\n" +" Click to add a new stage in the recruitment process.\n" +" </p><p>\n" +" Define here your stages of the recruitment process, for " +"example:\n" +" qualification call, first interview, second interview, refused,\n" +" hired.\n" +" </p>\n" +" " +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +msgid "Available" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,title_action:0 +msgid "Next Action" +msgstr "" + +#. module: hr_recruitment +#: help:hr.job,alias_id:0 +msgid "" +"Email alias for this job position. New emails will automatically create new " +"applicants for this job position." +msgstr "" + +#. module: hr_recruitment +#: selection:hr.applicant,priority:0 +#: selection:hr.recruitment.report,priority:0 +msgid "Good" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.recruitment.report,month:0 +msgid "August" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +#: field:hr.applicant,create_date:0 +#: view:hr.recruitment.report:0 +msgid "Creation Date" +msgstr "" + +#. module: hr_recruitment +#: model:ir.actions.act_window,name:hr_recruitment.action_hr_recruitment_hired_employee +#: model:ir.model,name:hr_recruitment.model_hired_employee +msgid "Create Employee" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +#: field:hr.applicant,priority:0 +#: field:hr.recruitment.report,priority:0 +msgid "Appreciation" +msgstr "" + +#. module: hr_recruitment +#: model:hr.recruitment.stage,name:hr_recruitment.stage_job1 +msgid "Initial Qualification" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Print Interview" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +#: field:hr.applicant,stage_id:0 +#: view:hr.recruitment.report:0 +#: field:hr.recruitment.report,stage_id:0 +#: view:hr.recruitment.stage:0 +msgid "Stage" +msgstr "" + +#. module: hr_recruitment +#: model:hr.recruitment.stage,name:hr_recruitment.stage_job3 +msgid "Second Interview" +msgstr "" + +#. module: hr_recruitment +#: model:ir.actions.act_window,name:hr_recruitment.hr_job_stage_act +msgid "Recruitment / Applicants Stages" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,salary_expected:0 +#: view:hr.recruitment.report:0 +msgid "Expected Salary" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.recruitment.report,month:0 +msgid "July" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,email_cc:0 +msgid "Watchers Emails" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Applicants" +msgstr "" + +#. module: hr_recruitment +#: code:addons/hr_recruitment/hr_recruitment.py:360 +#, python-format +msgid "No Subject" +msgstr "" + +#. module: hr_recruitment +#: field:hr.recruitment.report,salary_exp:0 +msgid "Salary Expected" +msgstr "" + +#. module: hr_recruitment +#: model:ir.model,name:hr_recruitment.model_hr_applicant +msgid "Applicant" +msgstr "" + +#. module: hr_recruitment +#: help:hr.recruitment.stage,sequence:0 +msgid "Gives the sequence order when displaying a list of stages." +msgstr "" + +#. module: hr_recruitment +#: code:addons/hr_recruitment/hr_recruitment.py:347 +#: field:hr.applicant,partner_id:0 +#, python-format +msgid "Contact" +msgstr "" + +#. module: hr_recruitment +#: help:hr.applicant,salary_expected_extra:0 +msgid "Salary Expected by Applicant, extra advantages" +msgstr "" + +#. module: hr_recruitment +#: help:hr.applicant,state:0 +msgid "" +"The status is set to 'Draft', when a case is created. " +"If the case is in progress the status is set to 'Open'. " +"When the case is over, the status is set to 'Done'. If " +"the case needs to be reviewed then the status is set " +"to 'Pending'." +msgstr "" + +#. module: hr_recruitment +#: selection:hr.recruitment.report,month:0 +msgid "March" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.stage:0 +#: model:ir.actions.act_window,name:hr_recruitment.hr_recruitment_stage_act +#: model:ir.ui.menu,name:hr_recruitment.menu_hr_recruitment_stage +msgid "Stages" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +msgid "Draft recruitment" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Delete" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +msgid "In progress" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Hire & Create Employee" +msgstr "" + +#. module: hr_recruitment +#: model:mail.message.subtype,description:hr_recruitment.mt_applicant_hired +msgid "Applicant hired" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Jobs - Recruitment Form" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,probability:0 +msgid "Probability" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.recruitment.report,month:0 +msgid "April" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.recruitment.report,month:0 +msgid "September" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.recruitment.report,month:0 +msgid "December" +msgstr "" + +#. module: hr_recruitment +#: code:addons/hr_recruitment/wizard/hr_recruitment_create_partner_job.py:39 +#, python-format +msgid "A contact is already defined on this job request." +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,categ_ids:0 +msgid "Tags" +msgstr "" + +#. module: hr_recruitment +#: model:ir.model,name:hr_recruitment.model_hr_applicant_category +msgid "Category of applicant" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +#: field:hr.recruitment.report,month:0 +msgid "Month" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Answer related job question" +msgstr "" + +#. module: hr_recruitment +#: model:hr.recruitment.stage,name:hr_recruitment.stage_job2 +msgid "First Interview" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,write_date:0 +msgid "Update Date" +msgstr "" + +#. module: hr_recruitment +#: view:hired.employee:0 +msgid "Yes" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +#: field:hr.applicant,name:0 +msgid "Subject" +msgstr "" + +#. module: hr_recruitment +#: view:hired.employee:0 +#: view:hr.recruitment.partner.create:0 +msgid "or" +msgstr "" + +#. module: hr_recruitment +#: model:mail.message.subtype,name:hr_recruitment.mt_applicant_refused +msgid "Applicant Refused" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Schedule Meeting" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,partner_name:0 +msgid "Applicant's Name" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.applicant,priority:0 +#: selection:hr.recruitment.report,priority:0 +msgid "Very Good" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,user_email:0 +msgid "User Email" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,date_open:0 +msgid "Opened" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +msgid "Group By ..." +msgstr "" + +#. module: hr_recruitment +#: view:hired.employee:0 +msgid "No" +msgstr "" + +#. module: hr_recruitment +#: help:hr.applicant,salary_expected:0 +msgid "Salary Expected by Applicant" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "All Initial Jobs" +msgstr "" + +#. module: hr_recruitment +#: help:hr.applicant,email_cc:0 +msgid "" +"These email addresses will be added to the CC field of all inbound and " +"outbound emails for this record before being sent. Separate multiple email " +"addresses with a comma" +msgstr "" + +#. module: hr_recruitment +#: model:ir.ui.menu,name:hr_recruitment.menu_hr_recruitment_degree +msgid "Degrees" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,date_closed:0 +#: field:hr.recruitment.report,date_closed:0 +msgid "Closed" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.stage:0 +msgid "Stage Definition" +msgstr "" + +#. module: hr_recruitment +#: field:hr.recruitment.report,delay_close:0 +msgid "Avg. Delay to Close" +msgstr "" + +#. module: hr_recruitment +#: help:hr.applicant,salary_proposed:0 +msgid "Salary Proposed by the Organisation" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +#: selection:hr.applicant,state:0 +#: view:hr.recruitment.report:0 +#: selection:hr.recruitment.report,state:0 +#: selection:hr.recruitment.stage,state:0 +msgid "Pending" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,state:0 +#: field:hr.recruitment.report,state:0 +#: field:hr.recruitment.stage,state:0 +msgid "Status" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Schedule interview with this applicant" +msgstr "" + +#. module: hr_recruitment +#: code:addons/hr_recruitment/hr_recruitment.py:407 +#, python-format +msgid "Applicant <b>created</b>" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +#: field:hr.applicant,type_id:0 +#: view:hr.recruitment.degree:0 +#: view:hr.recruitment.report:0 +#: field:hr.recruitment.report,type_id:0 +#: model:ir.actions.act_window,name:hr_recruitment.hr_recruitment_degree_action +msgid "Degree" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,partner_phone:0 +msgid "Phone" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.recruitment.report,month:0 +msgid "June" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,day_close:0 +msgid "Days to Close" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,message_is_follower:0 +msgid "Is a Follower" +msgstr "" + +#. module: hr_recruitment +#: field:hr.recruitment.report,user_id:0 +msgid "User" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.applicant,priority:0 +#: selection:hr.recruitment.report,priority:0 +msgid "Excellent" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,active:0 +msgid "Active" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +#: field:hr.recruitment.report,nbr:0 +msgid "# of Applications" +msgstr "" + +#. module: hr_recruitment +#: model:ir.actions.act_window,help:hr_recruitment.hr_recruitment_stage_act +msgid "" +"<p class=\"oe_view_nocontent_create\">\n" +" Click to add a new stage in the recruitment process.\n" +" </p><p>\n" +" Don't forget to specify the department if your recruitment " +"process\n" +" is different according to the job position.\n" +" </p>\n" +" " +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,response:0 +msgid "Response" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.recruitment.report,month:0 +msgid "October" +msgstr "" + +#. module: hr_recruitment +#: field:hr.config.settings,module_document_ftp:0 +msgid "Allow the automatic indexation of resumes" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,salary_proposed_extra:0 +msgid "Proposed Salary Extra" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.recruitment.report,month:0 +msgid "January" +msgstr "" + +#. module: hr_recruitment +#: code:addons/hr_recruitment/wizard/hr_recruitment_create_partner_job.py:56 +#, python-format +msgid "A contact is already existing with the same name." +msgstr "" + +#. module: hr_recruitment +#: model:ir.actions.act_window,name:hr_recruitment.hr_recruitment_stage_form_installer +msgid "Review Recruitment Stages" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Contact:" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Search Jobs" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,date:0 +#: field:hr.recruitment.report,date:0 +msgid "Date" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,survey:0 +msgid "Survey" +msgstr "" + +#. module: hr_recruitment +#: view:hired.employee:0 +msgid "Would you like to create an employee ?" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Degree:" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +msgid "Extended Filters..." +msgstr "" + +#. module: hr_recruitment +#: model:ir.actions.act_window,help:hr_recruitment.hr_recruitment_stage_form_installer +msgid "" +"Check if the following stages are matching your recruitment process. Don't " +"forget to specify the department if your recruitment process is different " +"according to the job position." +msgstr "" + +#. module: hr_recruitment +#: view:hr.config.settings:0 +msgid "Configure" +msgstr "" + +#. module: hr_recruitment +#: model:hr.recruitment.stage,name:hr_recruitment.stage_job4 +msgid "Contract Proposed" +msgstr "" + +#. module: hr_recruitment +#: model:hr.recruitment.source,name:hr_recruitment.source_website_company +msgid "Company Website" +msgstr "" + +#. module: hr_recruitment +#: sql_constraint:hr.recruitment.degree:0 +msgid "The name of the Degree of Recruitment must be unique!" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +#: field:hr.recruitment.report,year:0 +msgid "Year" +msgstr "" + +#. module: hr_recruitment +#: view:hired.employee:0 +#: view:hr.recruitment.partner.create:0 +msgid "Cancel" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.partner.create:0 +msgid "Are you sure you want to create a contact based on this job request ?" +msgstr "" + +#. module: hr_recruitment +#: help:hr.config.settings,fetchmail_applicants:0 +msgid "" +"Allow applicants to send their job application to an email address " +"(jobs@mycompany.com),\n" +" and create automatically application documents in the system." +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +#: selection:hr.applicant,state:0 +#: selection:hr.recruitment.stage,state:0 +msgid "In Progress" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Subject / Applicant" +msgstr "" + +#. module: hr_recruitment +#: help:hr.recruitment.degree,sequence:0 +msgid "Gives the sequence order when displaying a list of degrees." +msgstr "" + +#. module: hr_recruitment +#: model:mail.message.subtype,description:hr_recruitment.mt_stage_changed +msgid "Stage changed" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +#: field:hr.applicant,user_id:0 +#: view:hr.recruitment.report:0 +msgid "Responsible" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +#: model:ir.actions.act_window,name:hr_recruitment.action_hr_recruitment_report_all +#: model:ir.ui.menu,name:hr_recruitment.menu_hr_recruitment_report_all +msgid "Recruitment Analysis" +msgstr "" + +#. module: hr_recruitment +#: view:hired.employee:0 +msgid "Create New Employee" +msgstr "" + +#. module: hr_recruitment +#: model:hr.recruitment.source,name:hr_recruitment.source_linkedin +msgid "LinkedIn" +msgstr "" + +#. module: hr_recruitment +#: model:mail.message.subtype,name:hr_recruitment.mt_job_new_applicant +msgid "New Applicant" +msgstr "" + +#. module: hr_recruitment +#: model:ir.model,name:hr_recruitment.model_hr_recruitment_stage +msgid "Stage of Recruitment" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Cases By Stage and Estimates" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +#: selection:hr.applicant,state:0 +#: view:hr.recruitment.report:0 +#: selection:hr.recruitment.report,state:0 +#: selection:hr.recruitment.stage,state:0 +msgid "New" +msgstr "" + +#. module: hr_recruitment +#: model:crm.meeting.type,name:hr_recruitment.categ_meet_interview +#: view:hr.job:0 +msgid "Interview" +msgstr "" + +#. module: hr_recruitment +#: field:hr.recruitment.source,name:0 +msgid "Source Name" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Day(s)" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,description:0 +msgid "Description" +msgstr "" + +#. module: hr_recruitment +#: model:mail.message.subtype,name:hr_recruitment.mt_stage_changed +msgid "Stage Changed" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.recruitment.report,month:0 +msgid "May" +msgstr "" + +#. module: hr_recruitment +#: model:hr.recruitment.stage,name:hr_recruitment.stage_job5 +msgid "Contract Signed" +msgstr "" + +#. module: hr_recruitment +#: model:hr.recruitment.source,name:hr_recruitment.source_word +msgid "Word of Mouth" +msgstr "" + +#. module: hr_recruitment +#: field:hr.recruitment.stage,fold:0 +msgid "Hide in views if empty" +msgstr "" + +#. module: hr_recruitment +#: help:hr.config.settings,module_document_ftp:0 +msgid "" +"Manage your CV's and motivation letter related to all applicants.\n" +" This installs the module document_ftp. This will install the " +"knowledge management module in order to allow you to search using specific " +"keywords through the content of all documents (PDF, .DOCx...)" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.applicant,state:0 +#: selection:hr.recruitment.report,state:0 +#: model:hr.recruitment.stage,name:hr_recruitment.stage_job6 +#: selection:hr.recruitment.stage,state:0 +msgid "Refused" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.applicant,state:0 +#: view:hr.recruitment.report:0 +#: selection:hr.recruitment.report,state:0 +#: selection:hr.recruitment.stage,state:0 +msgid "Hired" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,reference:0 +msgid "Referred By" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Departement:" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.applicant,priority:0 +#: selection:hr.recruitment.report,priority:0 +msgid "On Average" +msgstr "" + +#. module: hr_recruitment +#: model:ir.model,name:hr_recruitment.model_hr_recruitment_degree +msgid "Degree of Recruitment" +msgstr "" + +#. module: hr_recruitment +#: field:hr.recruitment.report,salary_prop_avg:0 +msgid "Avg. Proposed Salary" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Open Jobs" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.recruitment.report,month:0 +msgid "February" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.applicant,priority:0 +#: selection:hr.recruitment.report,priority:0 +msgid "Not Good" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant_category,name:0 +#: field:hr.recruitment.degree,name:0 +#: field:hr.recruitment.stage,name:0 +msgid "Name" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.recruitment.report,month:0 +msgid "November" +msgstr "" + +#. module: hr_recruitment +#: field:hr.recruitment.report,salary_exp_avg:0 +msgid "Avg. Expected Salary" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +msgid "Avg Expected Salary" +msgstr "" + +#. module: hr_recruitment +#: model:ir.model,name:hr_recruitment.model_hr_recruitment_partner_create +msgid "Create Partner from job application" +msgstr "" + +#. module: hr_recruitment +#: help:hr.applicant,email_from:0 +msgid "These people will receive email." +msgstr "" + +#. module: hr_recruitment +#: field:hr.job,alias_id:0 +msgid "Alias" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +msgid "Pending recruitment" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Contract" +msgstr "" + +#. module: hr_recruitment +#: field:hr.applicant,message_summary:0 +msgid "Summary" +msgstr "" + +#. module: hr_recruitment +#: help:hr.applicant,message_ids:0 +msgid "Messages and communication history" +msgstr "" + +#. module: hr_recruitment +#: model:mail.message.subtype,description:hr_recruitment.mt_applicant_refused +msgid "Applicant refused" +msgstr "" + +#. module: hr_recruitment +#: field:hr.recruitment.stage,department_id:0 +msgid "Specific to a Department" +msgstr "" + +#. module: hr_recruitment +#: view:hr.recruitment.report:0 +msgid "In progress recruitment" +msgstr "" + +#. module: hr_recruitment +#: field:hr.recruitment.degree,sequence:0 +#: field:hr.recruitment.stage,sequence:0 +msgid "Sequence" +msgstr "" + +#. module: hr_recruitment +#: model:hr.recruitment.degree,name:hr_recruitment.degree_bachelor +msgid "Bachelor Degree" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Unassigned Recruitments" +msgstr "" + +#. module: hr_recruitment +#: model:ir.model,name:hr_recruitment.model_hr_config_settings +msgid "hr.config.settings" +msgstr "" + +#. module: hr_recruitment +#: help:hr.recruitment.stage,state:0 +msgid "" +"The related status for the stage. The status of your document will " +"automatically change according to the selected stage. Example, a stage is " +"related to the status 'Close', when your document reach this stage, it will " +"be automatically closed." +msgstr "" + +#. module: hr_recruitment +#: help:hr.applicant,salary_proposed_extra:0 +msgid "Salary Proposed by the Organisation, extra advantages" +msgstr "" + +#. module: hr_recruitment +#: help:hr.recruitment.report,delay_close:0 +msgid "Number of Days to close the project issue" +msgstr "" + +#. module: hr_recruitment +#: selection:hr.recruitment.report,state:0 +msgid "Open" +msgstr "" + +#. module: hr_recruitment +#: view:board.board:0 +msgid "Applications to be Processed" +msgstr "" + +#. module: hr_recruitment +#: view:hr.applicant:0 +msgid "Schedule Interview" +msgstr "" diff --git a/addons/lunch/lunch.py b/addons/lunch/lunch.py index 9f18c391eec..efad6fd6944 100644 --- a/addons/lunch/lunch.py +++ b/addons/lunch/lunch.py @@ -169,7 +169,7 @@ class lunch_order(osv.Model): line_ref = self.pool.get("lunch.order.line") if view_type == 'form': doc = etree.XML(res['arch']) - pref_ids = line_ref.search(cr, uid, [('user_id', '=', uid)], order='create_date desc', context=context) + pref_ids = line_ref.search(cr, uid, [('user_id', '=', uid)], order='id desc', context=context) xml_start = etree.Element("div") #If there are no preference (it's the first time for the user) if len(pref_ids)==0: @@ -215,63 +215,70 @@ class lunch_order(osv.Model): currency = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.currency_id #For each preferences that we get, we will create the XML structure - for key,value in categories.items(): + for key, value in categories.items(): xml_pref_1 = etree.Element("div") - xml_pref_1.set('class','oe_lunch_30pc') + xml_pref_1.set('class', 'oe_lunch_30pc') xml_pref_2 = etree.Element("h2") xml_pref_2.text = key xml_pref_1.append(xml_pref_2) i = 0 value = value.values() + #TODO: sorted_values is used for a quick and dirty hack in order to display the 5 last orders of each categories. + #It would be better to fetch only the 5 items to display instead of fetching everything then sorting them in order to keep only the 5 last. + #NB: The note could also be ignored + we could fetch the preferences on the most ordered products instead of the last ones... + sorted_values = {} for val in value: - for pref in val.values(): - #We only show 5 preferences per category (or it will be too long) - if i==5: break - i+=1 - xml_pref_3 = etree.Element("div") - xml_pref_3.set('class','oe_lunch_vignette') - xml_pref_1.append(xml_pref_3) - - xml_pref_4 = etree.Element("span") - xml_pref_4.set('class','oe_lunch_button') - xml_pref_3.append(xml_pref_4) - - xml_pref_5 = etree.Element("button") - xml_pref_5.set('name',"add_preference_"+str(pref.id)) - xml_pref_5.set('class','oe_link oe_i oe_button_plus') - xml_pref_5.set('type','object') - xml_pref_5.set('string','+') - xml_pref_4.append(xml_pref_5) - - xml_pref_6 = etree.Element("button") - xml_pref_6.set('name',"add_preference_"+str(pref.id)) - xml_pref_6.set('class','oe_link oe_button_add') - xml_pref_6.set('type','object') - xml_pref_6.set('string',_("Add")) - xml_pref_4.append(xml_pref_6) - - xml_pref_7 = etree.Element("div") - xml_pref_7.set('class','oe_group_text_button') - xml_pref_3.append(xml_pref_7) - - xml_pref_8 = etree.Element("div") - xml_pref_8.set('class','oe_lunch_text') - xml_pref_8.text = escape(pref.product_id.name)+str(" ") - xml_pref_7.append(xml_pref_8) - - price = pref.product_id.price or 0.0 - cur = currency.name or '' - xml_pref_9 = etree.Element("span") - xml_pref_9.set('class','oe_tag') - xml_pref_9.text = str(price)+str(" ")+cur - xml_pref_8.append(xml_pref_9) - - xml_pref_10 = etree.Element("div") - xml_pref_10.set('class','oe_grey') - xml_pref_10.text = escape(pref.note or '') - xml_pref_3.append(xml_pref_10) - - xml_start.append(xml_pref_1) + for elmt in val.values(): + sorted_values[elmt.id] = elmt + for key, pref in sorted(sorted_values.iteritems(), key=lambda (k, v): (k, v), reverse=True): + #We only show 5 preferences per category (or it will be too long) + if i == 5: + break + i += 1 + xml_pref_3 = etree.Element("div") + xml_pref_3.set('class','oe_lunch_vignette') + xml_pref_1.append(xml_pref_3) + + xml_pref_4 = etree.Element("span") + xml_pref_4.set('class','oe_lunch_button') + xml_pref_3.append(xml_pref_4) + + xml_pref_5 = etree.Element("button") + xml_pref_5.set('name',"add_preference_"+str(pref.id)) + xml_pref_5.set('class','oe_link oe_i oe_button_plus') + xml_pref_5.set('type','object') + xml_pref_5.set('string','+') + xml_pref_4.append(xml_pref_5) + + xml_pref_6 = etree.Element("button") + xml_pref_6.set('name',"add_preference_"+str(pref.id)) + xml_pref_6.set('class','oe_link oe_button_add') + xml_pref_6.set('type','object') + xml_pref_6.set('string',_("Add")) + xml_pref_4.append(xml_pref_6) + + xml_pref_7 = etree.Element("div") + xml_pref_7.set('class','oe_group_text_button') + xml_pref_3.append(xml_pref_7) + + xml_pref_8 = etree.Element("div") + xml_pref_8.set('class','oe_lunch_text') + xml_pref_8.text = escape(pref.product_id.name)+str(" ") + xml_pref_7.append(xml_pref_8) + + price = pref.product_id.price or 0.0 + cur = currency.name or '' + xml_pref_9 = etree.Element("span") + xml_pref_9.set('class','oe_tag') + xml_pref_9.text = str(price)+str(" ")+cur + xml_pref_8.append(xml_pref_9) + + xml_pref_10 = etree.Element("div") + xml_pref_10.set('class','oe_grey') + xml_pref_10.text = escape(pref.note or '') + xml_pref_3.append(xml_pref_10) + + xml_start.append(xml_pref_1) first_node = doc.xpath("//div[@name='preferences']") if first_node and len(first_node)>0: diff --git a/addons/mail/mail_alias.py b/addons/mail/mail_alias.py index dab6621824c..f806b325291 100644 --- a/addons/mail/mail_alias.py +++ b/addons/mail/mail_alias.py @@ -117,8 +117,13 @@ class mail_alias(osv.Model): mail catchall domain from config. e.g. `jobs@openerp.my.openerp.com` or `sales@openerp.my.openerp.com` """ - return [(record['id'], "%s@%s" % (record['alias_name'], record['alias_domain'])) - for record in self.read(cr, uid, ids, ['alias_name', 'alias_domain'], context=context)] + res = [] + for record in self.browse(cr, uid, ids, context=context): + if record.alias_name and record.alias_domain: + res.append((record['id'], "%s@%s" % (record.alias_name, record.alias_domain))) + else: + res.append((record['id'], False)) + return res def _find_unique(self, cr, uid, name, context=None): """Find a unique alias name similar to ``name``. If ``name`` is diff --git a/addons/mail/mail_group.py b/addons/mail/mail_group.py index 24aed942b1b..977608f487e 100644 --- a/addons/mail/mail_group.py +++ b/addons/mail/mail_group.py @@ -144,11 +144,19 @@ class mail_group(osv.Model): search_ref = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'mail', 'view_message_search') params = { 'search_view_id': search_ref and search_ref[1] or False, - 'domain': [('model', '=', 'mail.group'), ('res_id', '=', mail_group_id)], - 'context': {'default_model': 'mail.group', 'default_res_id': mail_group_id, 'search_default_message_unread': True}, + 'domain': [ + ('model', '=', 'mail.group'), + ('res_id', '=', mail_group_id), + ], + 'context': { + 'default_model': 'mail.group', + 'default_res_id': mail_group_id, + }, 'res_model': 'mail.message', 'thread_level': 1, - 'header_description': self._generate_header_description(cr, uid, group, context=context) + 'header_description': self._generate_header_description(cr, uid, group, context=context), + 'view_mailbox': True, + 'compose_placeholder': 'Send a message to the group', } cobj = self.pool.get('ir.actions.client') newref = cobj.copy(cr, SUPERUSER_ID, ref[1], default={'params': str(params), 'name': vals['name']}, context=context) diff --git a/addons/mail/mail_group_view.xml b/addons/mail/mail_group_view.xml index 77c0b8f6c86..04212b2f58a 100644 --- a/addons/mail/mail_group_view.xml +++ b/addons/mail/mail_group_view.xml @@ -7,7 +7,6 @@ <field name="tag">mail.wall</field> <field name="res_model">mail.message</field> <field name="context">{ - 'search_default_message_unread': True }</field> <field name="params">{ 'read_action': 'read' @@ -30,6 +29,7 @@ <field name="message_is_follower"/> <field name="message_summary"/> <field name="description"/> + <field name="alias_id"/> <templates> <t t-name="kanban-description"> <div class="oe_group_description" t-if="record.description.raw_value"> @@ -43,6 +43,9 @@ </div> <div class="oe_group_details"> <h4><a type="open"><field name="name"/></a></h4> + <div class="oe_kanban_alias" t-if="record.alias_id.value"> + <span class="oe_e">%%</span><small><field name="alias_id"/></small> + </div> <div class="oe_grey"> <field name="description"/> </div> @@ -69,39 +72,43 @@ <field name="arch" type="xml"> <form string="Group Form" version="7.0"> <sheet class="openerp_mail_group_sheet"> - <field name="image" widget='image' class="oe_avatar oe_left" options='{"preview_image": "image_medium"}'/> + <field name="image" widget='image' class="oe_avatar oe_left" options='{"preview_image": "image_small"}'/> <div class="oe_title"> <div class="oe_edit_only"> <label for="name" string="Group Name"/> </div> <h1><field name="name" readonly="0"/></h1> - <div name="alias_box" colspan="4" attrs="{'invisible': [('alias_domain', '=', False)]}"> - <field name="alias_id" invisible="1" required="0"/> - <label for="alias_name" class="oe_edit_only"/> - <field name="alias_name" nolabel="1" class="oe_inline" attrs="{'required': [('alias_id', '!=', False)]}"/>@<field name="alias_domain" nolabel="1" class="oe_inline"/> + <div name="group_alias" + attrs="{'invisible': [('alias_domain', '=', False)]}"> + <label for="alias_id" string="Email Alias"/> + <field name="alias_id" class="oe_inline oe_read_only" required="0" nolabel="1"/> + <span name="edit_alias" class="oe_edit_only"> + <field name="alias_name" class="oe_inline" + attrs="{'required': [('alias_id', '!=', False)]}"/> + @ + <field name="alias_domain" class="oe_inline" readonly="1"/> + </span> </div> - <field name="description" placeholder="Topics discussed in this group..."/> </div> + <field name="description" placeholder="Topics discussed in this group..."/> <div class="oe_clear"/> - <group> - <group class="oe_edit_only"> - <field name="public"/> - <field name="group_public_id" - attrs="{'invisible': [('public','<>','groups')], 'required': [('public','=','groups')]}" - /> - <field name="group_ids" widget="many2many_tags"/> - </group> - <group> - <div class="oe_grey" attrs="{'invisible': [('public','<>','public')]}"> - This group is visible by everyone, - including your customers if you installed - the portal module. - </div> - <div class="oe_grey" attrs="{'invisible': [('public','<>','private')]}"> - Only the invited followers can read the - discussions on this group. - </div> - </group> + <group class="oe_edit_only"> + <field name="public"/> + <field name="group_public_id" + attrs="{'invisible': [('public','<>','groups')], 'required': [('public','=','groups')]}" + /> + <field name="group_ids" widget="many2many_tags"/> + </group> + <group attrs="{'invisible': [('public', 'not in', ['public', 'private'])]}"> + <div class="oe_grey" attrs="{'invisible': [('public','<>','public')]}"> + This group is visible by everyone, + including your customers if you installed + the portal module. + </div> + <div class="oe_grey" attrs="{'invisible': [('public','<>','private')]}"> + Only the invited followers can read the + discussions on this group. + </div> </group> </sheet> <div class="oe_chatter"> diff --git a/addons/mail/mail_mail.py b/addons/mail/mail_mail.py index 8bcc8b0a91c..3c30a950230 100644 --- a/addons/mail/mail_mail.py +++ b/addons/mail/mail_mail.py @@ -256,7 +256,19 @@ class mail_mail(osv.Model): body = self.send_get_mail_body(cr, uid, mail, partner=partner, context=context) subject = self.send_get_mail_subject(cr, uid, mail, partner=partner, context=context) body_alternative = tools.html2plaintext(body) - email_to = ['%s <%s>' % (partner.name, partner.email)] if partner else tools.email_split(mail.email_to) + + # generate email_to, heuristic: + # 1. if 'partner' is specified and there is a related document: Followers of 'Doc' <email> + # 2. if 'partner' is specified, but no related document: Partner Name <email> + # 3; fallback on mail.email_to that we split to have an email addresses list + if partner and mail.record_name: + sanitized_record_name = re.sub(r'[^\w+.]+', '-', mail.record_name) + email_to = [_('"Followers of %s" <%s>') % (sanitized_record_name, partner.email)] + elif partner: + email_to = ['%s <%s>' % (partner.name, partner.email)] + else: + email_to = tools.email_split(mail.email_to) + return { 'body': body, 'body_alternative': body_alternative, diff --git a/addons/mail/mail_message.py b/addons/mail/mail_message.py index dd5ebc8b48b..05e9619797a 100644 --- a/addons/mail/mail_message.py +++ b/addons/mail/mail_message.py @@ -268,19 +268,25 @@ class mail_message(osv.Model): domain = [('partner_id', '=', user_pid), ('message_id', 'in', msg_ids)] if not create_missing: domain += [('starred', '=', not starred)] + values = { + 'starred': starred + } + if starred: + values['read'] = False + notif_ids = notification_obj.search(cr, uid, domain, context=context) # all message have notifications: already set them as (un)starred if len(notif_ids) == len(msg_ids) or not create_missing: - notification_obj.write(cr, uid, notif_ids, {'starred': starred}, context=context) + notification_obj.write(cr, uid, notif_ids, values, context=context) return starred # some messages do not have notifications: find which one, create notification, update starred status notified_msg_ids = [notification.message_id.id for notification in notification_obj.browse(cr, uid, notif_ids, context=context)] to_create_msg_ids = list(set(msg_ids) - set(notified_msg_ids)) for msg_id in to_create_msg_ids: - notification_obj.create(cr, uid, {'partner_id': user_pid, 'starred': starred, 'message_id': msg_id}, context=context) - notification_obj.write(cr, uid, notif_ids, {'starred': starred}, context=context) + notification_obj.create(cr, uid, dict(values, partner_id=user_pid, message_id=msg_id), context=context) + notification_obj.write(cr, uid, notif_ids, values, context=context) return starred #------------------------------------------------------ diff --git a/addons/mail/mail_thread.py b/addons/mail/mail_thread.py index b082a52a9a9..e8ca1ec4184 100644 --- a/addons/mail/mail_thread.py +++ b/addons/mail/mail_thread.py @@ -89,6 +89,46 @@ class mail_thread(osv.AbstractModel): # :param function lambda: returns whether the tracking should record using this subtype _track = {} + def get_empty_list_help(self, cr, uid, help, context=None): + """ Override of BaseModel.get_empty_list_help() to generate an help message + that adds alias information. """ + model = context.get('empty_list_help_model') + res_id = context.get('empty_list_help_id') + ir_config_parameter = self.pool.get("ir.config_parameter") + catchall_domain = ir_config_parameter.get_param(cr, uid, "mail.catchall.domain", context=context) + document_name = context.get('empty_list_help_document_name', _('document')) + alias = None + + if catchall_domain and model and res_id: # specific res_id -> find its alias (i.e. section_id specified) + object_id = self.pool.get(model).browse(cr, uid, res_id, context=context) + alias = object_id.alias_id + elif catchall_domain and model: # no specific res_id given -> generic help message, take an example alias (i.e. alias of some section_id) + model_id = self.pool.get('ir.model').search(cr, uid, [("model", "=", self._name)], context=context)[0] + alias_obj = self.pool.get('mail.alias') + alias_ids = alias_obj.search(cr, uid, [("alias_model_id", "=", model_id)], context=context, limit=1, order='id ASC') + if alias_ids: + alias = alias_obj.browse(cr, uid, alias_ids[0], context=context) + + if alias: + alias_email = alias.name_get()[0][1] + return _("""<p class='oe_view_nocontent_create'> + Click here to add a new %(document)s or send an email to: <a href='mailto:%(email)s'>%(email)s</a> + </p> + %(static_help)s""" + ) % { + 'document': document_name, + 'email': alias_email, + 'static_help': help or '' + } + + if document_name != 'document' and help and help.find("oe_view_nocontent_create") == -1: + return _("<p class='oe_view_nocontent_create'>Click here to add a new %(document)s</p>%(static_help)s") % { + 'document': document_name, + 'static_help': help or '', + } + + return help + def _get_message_data(self, cr, uid, ids, name, args, context=None): """ Computes: - message_unread: has uid unread message for the document @@ -468,6 +508,8 @@ class mail_thread(osv.AbstractModel): """ assert isinstance(message, Message), 'message must be an email.message.Message at this point' message_id = message.get('Message-Id') + email_from = decode_header(message, 'From') + email_to = decode_header(message, 'To') references = decode_header(message, 'References') in_reply_to = decode_header(message, 'In-Reply-To') @@ -481,8 +523,8 @@ class mail_thread(osv.AbstractModel): if thread_id and model in self.pool: model_obj = self.pool[model] if model_obj.exists(cr, uid, thread_id) and hasattr(model_obj, 'message_update'): - _logger.debug('Routing mail with Message-Id %s: direct reply to model: %s, thread_id: %s, custom_values: %s, uid: %s', - message_id, model, thread_id, custom_values, uid) + _logger.info('Routing mail from %s to %s with Message-Id %s: direct reply to model: %s, thread_id: %s, custom_values: %s, uid: %s', + email_from, email_to, message_id, model, thread_id, custom_values, uid) return [(model, thread_id, custom_values, uid)] # Verify whether this is a reply to a private message @@ -493,8 +535,8 @@ class mail_thread(osv.AbstractModel): ], limit=1, context=context) if message_ids: message = self.pool.get('mail.message').browse(cr, uid, message_ids[0], context=context) - _logger.debug('Routing mail with Message-Id %s: direct reply to a private message: %s, custom_values: %s, uid: %s', - message_id, message.id, custom_values, uid) + _logger.info('Routing mail from %s to %s with Message-Id %s: direct reply to a private message: %s, custom_values: %s, uid: %s', + email_from, email_to, message_id, message.id, custom_values, uid) return [(message.model, message.res_id, custom_values, uid)] # 2. Look for a matching mail.alias entry @@ -521,10 +563,11 @@ class mail_thread(osv.AbstractModel): # Note: recognized partners will be added as followers anyway # user_id = self._message_find_user_id(cr, uid, message, context=context) user_id = uid - _logger.debug('No matching user_id for the alias %s', alias.alias_name) + _logger.info('No matching user_id for the alias %s', alias.alias_name) routes.append((alias.alias_model_id.model, alias.alias_force_thread_id, \ eval(alias.alias_defaults), user_id)) - _logger.debug('Routing mail with Message-Id %s: direct alias match: %r', message_id, routes) + _logger.info('Routing mail from %s to %s with Message-Id %s: direct alias match: %r', + email_from, email_to, message_id, routes) return routes # 3. Fallback to the provided parameters, if they work @@ -539,14 +582,14 @@ class mail_thread(osv.AbstractModel): except: thread_id = False assert thread_id and hasattr(model_pool, 'message_update') or hasattr(model_pool, 'message_new'), \ - "No possible route found for incoming message with Message-Id %s. " \ - "Create an appropriate mail.alias or force the destination model." % message_id + "No possible route found for incoming message from %s to %s (Message-Id %s:)." \ + "Create an appropriate mail.alias or force the destination model." % (email_from, email_to, message_id) if thread_id and not model_pool.exists(cr, uid, thread_id): _logger.warning('Received mail reply to missing document %s! Ignoring and creating new document instead for Message-Id %s', - thread_id, message_id) + thread_id, message_id) thread_id = None - _logger.debug('Routing mail with Message-Id %s: fallback to model:%s, thread_id:%s, custom_values:%s, uid:%s', - message_id, model, thread_id, custom_values, uid) + _logger.info('Routing mail from %s to %s with Message-Id %s: fallback to model:%s, thread_id:%s, custom_values:%s, uid:%s', + email_from, email_to, message_id, model, thread_id, custom_values, uid) return [(model, thread_id, custom_values, uid)] def message_process(self, cr, uid, model, message, custom_values=None, @@ -596,12 +639,24 @@ class mail_thread(osv.AbstractModel): if isinstance(message, unicode): message = message.encode('utf-8') msg_txt = email.message_from_string(message) - routes = self.message_route(cr, uid, msg_txt, model, - thread_id, custom_values, - context=context) + + # parse the message, verify we are not in a loop by checking message_id is not duplicated msg = self.message_parse(cr, uid, msg_txt, save_original=save_original, context=context) if strip_attachments: msg.pop('attachments', None) + if msg.get('message_id'): # should always be True as message_parse generate one if missing + existing_msg_ids = self.pool.get('mail.message').search(cr, SUPERUSER_ID, [ + ('message_id', '=', msg.get('message_id')), + ], context=context) + if existing_msg_ids: + _logger.info('Ignored mail from %s to %s with Message-Id %s:: found duplicated Message-Id during processing', + msg.get('from'), msg.get('to'), msg.get('message_id')) + return False + + # find possible routes for the message + routes = self.message_route(cr, uid, msg_txt, model, + thread_id, custom_values, + context=context) # postpone setting msg.partner_ids after message_post, to avoid double notifications partner_ids = msg.pop('partner_ids', []) @@ -798,7 +853,7 @@ class mail_thread(osv.AbstractModel): # as RFC2822 requires timezone offset in Date headers. stored_date = parsed_date.replace(tzinfo=pytz.utc) else: - stored_date = parsed_date.astimezone(pytz.utc) + stored_date = parsed_date.astimezone(tz=pytz.utc) except Exception: _logger.warning('Failed to parse Date header %r in incoming mail ' 'with message-id %r, assuming current date/time.', @@ -817,7 +872,7 @@ class mail_thread(osv.AbstractModel): if parent_ids: msg_dict['parent_id'] = parent_ids[0] - msg_dict['body'], msg_dict['attachments'] = self._message_extract_payload(message) + msg_dict['body'], msg_dict['attachments'] = self._message_extract_payload(message, save_original=save_original) return msg_dict #------------------------------------------------------ @@ -956,12 +1011,15 @@ class mail_thread(osv.AbstractModel): ], limit=1, context=context) if author_ids: kwargs['author_id'] = author_ids[0] + author_id = kwargs.get('author_id') + if author_id is None: # keep False values + author_id = self.pool.get('mail.message')._get_default_author(cr, uid, context=context) # 1: Handle content subtype: if plaintext, converto into HTML if content_subtype == 'plaintext': body = tools.plaintext2html(body) - # 2: Private message: add recipients (recipients and author of parent message) + # 2: Private message: add recipients (recipients and author of parent message) - current author # + legacy-code management (! we manage only 4 and 6 commands) partner_ids = set() kwargs_partner_ids = kwargs.pop('partner_ids', []) @@ -974,11 +1032,13 @@ class mail_thread(osv.AbstractModel): partner_ids.add(partner_id) else: pass # we do not manage anything else - if parent_id and model == 'mail.thread': + if parent_id and not model: parent_message = mail_message.browse(cr, uid, parent_id, context=context) - partner_ids |= set([partner.id for partner in parent_message.partner_ids]) + private_followers = set([partner.id for partner in parent_message.partner_ids]) if parent_message.author_id: - partner_ids.add(parent_message.author_id.id) + private_followers.add(parent_message.author_id.id) + private_followers -= set([author_id]) + partner_ids |= private_followers # 3. Attachments # - HACK TDE FIXME: Chatter: attachments linked to the document (not done JS-side), load the message @@ -1039,6 +1099,7 @@ class mail_thread(osv.AbstractModel): values = kwargs values.update({ + 'author_id': author_id, 'model': model, 'res_id': thread_id or False, 'body': body, diff --git a/addons/mail/static/src/css/mail.css b/addons/mail/static/src/css/mail.css index 51306727a09..934fb6b5487 100644 --- a/addons/mail/static/src/css/mail.css +++ b/addons/mail/static/src/css/mail.css @@ -568,7 +568,6 @@ text-shadow: none; width: 100%; } -.openerp .oe_followers button.oe_invite, .openerp .oe_followers button.oe_follower.oe_following{ color: white; background-color: #3465A4; @@ -626,6 +625,8 @@ height: 32px; overflow: hidden; white-space: nowrap; + text-overflow: ellipsis; + margin-right: 10px; } .openerp .oe_followers .oe_partner img{ width: 32px; diff --git a/addons/mail/static/src/css/mail_group.css b/addons/mail/static/src/css/mail_group.css index c1cefee9070..4f2b8a16dd0 100644 --- a/addons/mail/static/src/css/mail_group.css +++ b/addons/mail/static/src/css/mail_group.css @@ -14,6 +14,10 @@ padding: 0px 18px; } +.openerp .oe_form_sheetbg.openerp_mail_group_sheet .oe_avatar { + padding-top: 3px; +} + /* Resize footer width */ .openerp .oe_form div.oe_mail_group_footer { max-width: 80%; @@ -21,7 +25,7 @@ /* Resize group description */ .openerp .oe_form_sheetbg.openerp_mail_group_sheet .oe_form_field_text > textarea { - height: 40px; + height: 60px; } /* ------------------------------ */ diff --git a/addons/mail/static/src/js/mail.js b/addons/mail/static/src/js/mail.js index ad69f7e41c3..ec4feed82e2 100644 --- a/addons/mail/static/src/js/mail.js +++ b/addons/mail/static/src/js/mail.js @@ -1208,7 +1208,7 @@ openerp.mail = function (session) { this.author_id = datasets.author_id || false; this.thread_level = (datasets.thread_level+1) || 0; datasets.partner_ids = datasets.partner_ids || []; - if (datasets.author_id && ! _.contains(datasets.partner_ids, datasets.author_id) && datasets.author_id[0]) { + if (datasets.author_id && !_.contains(_.flatten(datasets.partner_ids),datasets.author_id[0]) && datasets.author_id[0]) { datasets.partner_ids.push(datasets.author_id); } this.partner_ids = datasets.partner_ids; @@ -1389,7 +1389,10 @@ openerp.mail = function (session) { if (this.options.help) { no_message.html(this.options.help); } - no_message.appendTo(this.$el); + if (!this.$el.find(".oe_view_nocontent").length) + { + no_message.appendTo(this.$el); + } }, /** @@ -1934,6 +1937,7 @@ openerp.mail = function (session) { this.$(".oe_write_full").click(function (event) { event.stopPropagation(); var action = { + name: _t('Compose Email'), type: 'ir.actions.act_window', res_model: 'mail.compose.message', view_mode: 'form', diff --git a/addons/mail/static/src/xml/mail.xml b/addons/mail/static/src/xml/mail.xml index b26ef06f5e4..db53a60cdbc 100644 --- a/addons/mail/static/src/xml/mail.xml +++ b/addons/mail/static/src/xml/mail.xml @@ -246,7 +246,11 @@ <!-- message itself --> <div class="oe_msg_content"> <h1 t-if="(widget.show_record_name or widget.subject) and !widget.thread_level" class="oe_msg_title"> - <a t-if="widget.options.show_link and widget.show_record_name" class="oe_mail_action_model" t-attf-href="#model=#{widget.model}&id=#{widget.res_id}"><t t-raw="widget.record_name"/></a><span t-if="!widget.options.show_link and widget.show_record_name"><t t-raw="widget.record_name"/></span><t t-if="widget.show_record_name">: </t> + <a t-if="widget.options.show_link and widget.show_record_name" class="oe_mail_action_model" t-attf-href="#model=#{widget.model}&id=#{widget.res_id}"> + <t t-raw="widget.record_name"/> + </a> + <span t-if="!widget.options.show_link and widget.show_record_name"><t t-raw="widget.record_name"/></span> + <t t-if="widget.show_record_name and widget.subject">: </t> <t t-if="widget.subject" t-raw="widget.subject"/> </h1> <div class="oe_msg_body"> diff --git a/addons/mail/static/src/xml/mail_followers.xml b/addons/mail/static/src/xml/mail_followers.xml index 16bef174470..f3317223f1d 100644 --- a/addons/mail/static/src/xml/mail_followers.xml +++ b/addons/mail/static/src/xml/mail_followers.xml @@ -30,7 +30,7 @@ --> <div t-name="mail.followers.partner" class='oe_partner'> <img class="oe_mail_thumbnail oe_mail_frame" t-attf-src="{record.avatar_url}"/> - <a t-attf-href="#model=res.partner&id=#{record.id}"><t t-raw="record.name"/></a> + <a t-attf-href="#model=res.partner&id=#{record.id}" t-att-title="record.name"><t t-esc="record.name"/></a> <span t-if="widget.view_is_editable" class="oe_remove_follower oe_e" title="Remove this follower" t-att-data-id="record.id">X</span> </div> diff --git a/addons/mail/tests/test_mail_features.py b/addons/mail/tests/test_mail_features.py index 2d0019c0b8a..7eea66b3b90 100644 --- a/addons/mail/tests/test_mail_features.py +++ b/addons/mail/tests/test_mail_features.py @@ -280,7 +280,8 @@ class test_mail(TestMailBase): 'message_post: mail.mail notifications should have been auto-deleted!') # Test: notifications emails: to a and b, c is email only, r is author - test_emailto = ['Administrator <a@a>', 'Bert Tartopoils <b@b>'] + # test_emailto = ['Administrator <a@a>', 'Bert Tartopoils <b@b>'] + test_emailto = ['"Followers of -Pigs-" <a@a>', '"Followers of -Pigs-" <b@b>'] self.assertEqual(len(sent_emails), 2, 'message_post: notification emails wrong number of send emails') self.assertEqual(set([m['email_to'][0] for m in sent_emails]), set(test_emailto), @@ -353,7 +354,8 @@ class test_mail(TestMailBase): self.assertFalse(self.mail_mail.search(cr, uid, [('mail_message_id', '=', msg2_id)]), 'mail.mail notifications should have been auto-deleted!') # Test: emails send by server (to a, b, c, d) - test_emailto = [u'Administrator <a@a>', u'Bert Tartopoils <b@b>', u'Carine Poilvache <c@c>', u'D\xe9d\xe9 Grosbedon <d@d>'] + # test_emailto = [u'Administrator <a@a>', u'Bert Tartopoils <b@b>', u'Carine Poilvache <c@c>', u'D\xe9d\xe9 Grosbedon <d@d>'] + test_emailto = [u'"Followers of Pigs" <a@a>', u'"Followers of Pigs" <b@b>', u'"Followers of Pigs" <c@c>', u'"Followers of Pigs" <d@d>'] # self.assertEqual(len(sent_emails), 3, 'sent_email number of sent emails incorrect') for sent_email in sent_emails: self.assertEqual(sent_email['email_from'], 'Raoul Grosbedon <r@r>', diff --git a/addons/mail/tests/test_mail_gateway.py b/addons/mail/tests/test_mail_gateway.py index eb6ba22067b..a68011298c7 100644 --- a/addons/mail/tests/test_mail_gateway.py +++ b/addons/mail/tests/test_mail_gateway.py @@ -116,8 +116,11 @@ class TestMailgateway(TestMailBase): frog_groups = format_and_process(MAIL_TEMPLATE, to='groups@example.com, other@gmail.com') sent_emails = self._build_email_kwargs_list # Test: one group created by mailgateway administrator - self.assertTrue(len(frog_groups) == 1) + self.assertEqual(len(frog_groups), 1, 'message_process: a new mail.group should have been created') frog_group = self.mail_group.browse(cr, uid, frog_groups[0]) + res = self.mail_group.perm_read(cr, uid, [frog_group.id], details=False) + self.assertEqual(res[0].get('create_uid'), uid, + 'message_process: group should have been created by uid as alias_user__id is False on the alias') # Test: one message that is the incoming email self.assertEqual(len(frog_group.message_ids), 1, 'message_process: newly created group should have the incoming email in message_ids') @@ -150,9 +153,12 @@ class TestMailgateway(TestMailBase): self._init_mock_build_email() frog_groups = format_and_process(MAIL_TEMPLATE, to='groups@example.com, other@gmail.com') sent_emails = self._build_email_kwargs_list - # Test: one group created by raoul - self.assertTrue(len(frog_groups) == 1) + # Test: one group created by Raoul + self.assertEqual(len(frog_groups), 1, 'message_process: a new mail.group should have been created') frog_group = self.mail_group.browse(cr, uid, frog_groups[0]) + res = self.mail_group.perm_read(cr, uid, [frog_group.id], details=False) + self.assertEqual(res[0].get('create_uid'), self.user_raoul_id, + 'message_process: group should have been created by alias_user_id') # Test: one message that is the incoming email self.assertEqual(len(frog_group.message_ids), 1, 'message_process: newly created group should have the incoming email in message_ids') @@ -175,8 +181,8 @@ class TestMailgateway(TestMailBase): # Do: incoming email from a known partner that is also an user that can create a mail.group self.res_users.create(cr, uid, {'partner_id': p1id, 'login': 'sylvie', 'groups_id': [(6, 0, [self.group_employee_id])]}) frog_groups = format_and_process(MAIL_TEMPLATE, to='groups@example.com, other@gmail.com') - # Test: one group created by Sylvie - self.assertTrue(len(frog_groups) == 1) + # Test: one group created by Raoul (or Sylvie maybe, if we implement it) + self.assertEqual(len(frog_groups), 1, 'message_process: a new mail.group should have been created') frog_group = self.mail_group.browse(cr, uid, frog_groups[0]) # Test: one message that is the incoming email self.assertEqual(len(frog_group.message_ids), 1, @@ -195,6 +201,7 @@ class TestMailgateway(TestMailBase): # Do: even with a wrong destination, a reply should end up in the correct thread frog_groups = format_and_process(MAIL_TEMPLATE, email_from='other@gmail.com', + msg_id='<1198923581.41972151344608186760.JavaMail.diff1@agrolait.com>', to='erroneous@example.com>', subject='Re: news', extra='In-Reply-To: <12321321-openerp-%d-mail.group@example.com>\n' % frog_group.id) # Test: no group 'Re: news' created, still only 1 Frogs group @@ -205,12 +212,30 @@ class TestMailgateway(TestMailBase): 'message_process: reply on Frogs should not have created a duplicate group with old subject') frog_group = self.mail_group.browse(cr, uid, frog_groups[0]) # Test: one new message - self.assertTrue(len(frog_group.message_ids) == 2, 'message_process: group should contain 2 messages after reply') + self.assertEqual(len(frog_group.message_ids), 2, 'message_process: group should contain 2 messages after reply') # Test: author (and not recipient) added as follower frog_follower_ids = set([p.id for p in frog_group.message_follower_ids]) self.assertEqual(frog_follower_ids, set([p1id, p2id]), 'message_process: after reply, group should have 2 followers') + # Do: due to some issue, same email goes back into the mailgateway + frog_groups = format_and_process(MAIL_TEMPLATE, email_from='other@gmail.com', + msg_id='<1198923581.41972151344608186760.JavaMail.diff1@agrolait.com>', + subject='Re: news', extra='In-Reply-To: <12321321-openerp-%d-mail.group@example.com>\n' % frog_group.id) + # Test: no group 'Re: news' created, still only 1 Frogs group + self.assertEqual(len(frog_groups), 0, + 'message_process: reply on Frogs should not have created a new group with new subject') + frog_groups = self.mail_group.search(cr, uid, [('name', '=', 'Frogs')]) + self.assertEqual(len(frog_groups), 1, + 'message_process: reply on Frogs should not have created a duplicate group with old subject') + frog_group = self.mail_group.browse(cr, uid, frog_groups[0]) + # Test: no new message + self.assertEqual(len(frog_group.message_ids), 2, 'message_process: message with already existing message_id should not have been duplicated') + # Test: message_id is still unique + msg_ids = self.mail_message.search(cr, uid, [('message_id', 'ilike', '<1198923581.41972151344608186760.JavaMail.diff1@agrolait.com>')]) + self.assertEqual(len(msg_ids), 1, + 'message_process: message with already existing message_id should not have been duplicated') + # -------------------------------------------------- # Test3: email_from and partner finding # -------------------------------------------------- @@ -223,6 +248,7 @@ class TestMailgateway(TestMailBase): # Do: post a new message, with a known partner -> duplicate emails -> partner format_and_process(MAIL_TEMPLATE, email_from='Lombrik Lubrik <test_raoul@email.com>', to='erroneous@example.com>', subject='Re: news (2)', + msg_id='<1198923581.41972151344608186760.JavaMail.new1@agrolait.com>', extra='In-Reply-To: <12321321-openerp-%d-mail.group@example.com>\n' % frog_group.id) frog_groups = self.mail_group.search(cr, uid, [('name', '=', 'Frogs')]) frog_group = self.mail_group.browse(cr, uid, frog_groups[0]) @@ -236,6 +262,7 @@ class TestMailgateway(TestMailBase): self.res_users.write(cr, uid, self.user_raoul_id, {'email': 'test_raoul@email.com'}) format_and_process(MAIL_TEMPLATE, email_from='Lombrik Lubrik <test_raoul@email.com>', to='erroneous@example.com>', subject='Re: news (3)', + msg_id='<1198923581.41972151344608186760.JavaMail.new2@agrolait.com>', extra='In-Reply-To: <12321321-openerp-%d-mail.group@example.com>\n' % frog_group.id) frog_groups = self.mail_group.search(cr, uid, [('name', '=', 'Frogs')]) frog_group = self.mail_group.browse(cr, uid, frog_groups[0]) @@ -250,6 +277,7 @@ class TestMailgateway(TestMailBase): self.res_users.write(cr, uid, self.user_raoul_id, {'email': 'test_raoul@email.com'}) format_and_process(MAIL_TEMPLATE, email_from='Lombrik Lubrik <test_raoul@email.com>', to='erroneous@example.com>', subject='Re: news (3)', + msg_id='<1198923581.41972151344608186760.JavaMail.new3@agrolait.com>', extra='In-Reply-To: <12321321-openerp-%d-mail.group@example.com>\n' % frog_group.id) frog_groups = self.mail_group.search(cr, uid, [('name', '=', 'Frogs')]) frog_group = self.mail_group.browse(cr, uid, frog_groups[0]) @@ -265,23 +293,32 @@ class TestMailgateway(TestMailBase): # Do: incoming email with model that does not accepts incoming emails must raise self.assertRaises(AssertionError, - format_and_process, - MAIL_TEMPLATE, to='noone@example.com', subject='spam', extra='', model='res.country') + format_and_process, + MAIL_TEMPLATE, + to='noone@example.com', subject='spam', extra='', model='res.country', + msg_id='<1198923581.41972151344608186760.JavaMail.new4@agrolait.com>') # Do: incoming email without model and without alias must raise self.assertRaises(AssertionError, - format_and_process, - MAIL_TEMPLATE, to='noone@example.com', subject='spam', extra='') + format_and_process, + MAIL_TEMPLATE, + to='noone@example.com', subject='spam', extra='', + msg_id='<1198923581.41972151344608186760.JavaMail.new5@agrolait.com>') # Do: incoming email with model that accepting incoming emails as fallback - frog_groups = format_and_process(MAIL_TEMPLATE, to='noone@example.com', subject='Spammy', extra='', model='mail.group') + frog_groups = format_and_process(MAIL_TEMPLATE, + to='noone@example.com', + subject='Spammy', extra='', model='mail.group', + msg_id='<1198923581.41972151344608186760.JavaMail.new6@agrolait.com>') self.assertEqual(len(frog_groups), 1, 'message_process: erroneous email but with a fallback model should have created a new mail.group') # Do: incoming email in plaintext should be stored as html - frog_groups = format_and_process(MAIL_TEMPLATE_PLAINTEXT, to='groups@example.com', subject='Frogs Return', extra='', msg_id='<deadcafe.1337@smtp.agrolait.com>') + frog_groups = format_and_process(MAIL_TEMPLATE_PLAINTEXT, + to='groups@example.com', subject='Frogs Return', extra='', + msg_id='<deadcafe.1337@smtp.agrolait.com>') # Test: one group created with one message - self.assertTrue(len(frog_groups) == 1) + self.assertEqual(len(frog_groups), 1, 'message_process: a new mail.group should have been created') frog_group = self.mail_group.browse(cr, uid, frog_groups[0]) msg = frog_group.message_ids[0] # Test: plain text content should be wrapped and stored as html @@ -305,19 +342,27 @@ class TestMailgateway(TestMailBase): # Reply to msg1, make sure the reply is properly attached using the various reply identification mechanisms # 0. Direct alias match - reply_msg1 = format(MAIL_TEMPLATE, to='Pretty Pigs <group+pigs@example.com>', extra='In-Reply-To: %s' % msg1.message_id) + reply_msg1 = format(MAIL_TEMPLATE, to='Pretty Pigs <group+pigs@example.com>', + extra='In-Reply-To: %s' % msg1.message_id, + msg_id='<1198923581.41972151344608186760.JavaMail.2@agrolait.com>') self.mail_group.message_process(cr, uid, None, reply_msg1) # 1. In-Reply-To header - reply_msg2 = format(MAIL_TEMPLATE, to='erroneous@example.com', extra='In-Reply-To: %s' % msg1.message_id) + reply_msg2 = format(MAIL_TEMPLATE, to='erroneous@example.com', + extra='In-Reply-To: %s' % msg1.message_id, + msg_id='<1198923581.41972151344608186760.JavaMail.3@agrolait.com>') self.mail_group.message_process(cr, uid, None, reply_msg2) # 2. References header - reply_msg3 = format(MAIL_TEMPLATE, to='erroneous@example.com', extra='References: <2233@a.com>\r\n\t<3edss_dsa@b.com> %s' % msg1.message_id) + reply_msg3 = format(MAIL_TEMPLATE, to='erroneous@example.com', + extra='References: <2233@a.com>\r\n\t<3edss_dsa@b.com> %s' % msg1.message_id, + msg_id='<1198923581.41972151344608186760.JavaMail.4@agrolait.com>') self.mail_group.message_process(cr, uid, None, reply_msg3) # 3. Subject contains [<ID>] + model passed to message+process -> only attached to group, but not to mail (not in msg1.child_ids) - reply_msg4 = format(MAIL_TEMPLATE, to='erroneous@example.com', extra='', subject='Re: [%s] 1' % self.group_pigs_id) + reply_msg4 = format(MAIL_TEMPLATE, to='erroneous@example.com', + extra='', subject='Re: [%s] 1' % self.group_pigs_id, + msg_id='<1198923581.41972151344608186760.JavaMail.5@agrolait.com>') self.mail_group.message_process(cr, uid, 'mail.group', reply_msg4) group_pigs.refresh() @@ -327,4 +372,55 @@ class TestMailgateway(TestMailBase): def test_20_private_discussion(self): """ Testing private discussion between partners. """ - pass + cr, uid = self.cr, self.uid + + # Do: Raoul writes to Bert and Administrator, with a thread_model in context that should not be taken into account + msg1_pids = [self.partner_admin_id, self.partner_bert_id] + msg1_id = self.mail_thread.message_post(cr, self.user_raoul_id, False, + partner_ids=msg1_pids, + subtype='mail.mt_comment', + context={'thread_model': 'mail.group'}) + + # Test: message recipients + msg = self.mail_message.browse(cr, uid, msg1_id) + msg_pids = [p.id for p in msg.partner_ids] + msg_nids = [p.id for p in msg.notified_partner_ids] + test_pids = msg1_pids + test_nids = msg1_pids + self.assertEqual(set(msg_pids), set(test_pids), + 'message_post: private discussion: incorrect recipients') + self.assertEqual(set(msg_nids), set(test_nids), + 'message_post: private discussion: incorrect notified recipients') + self.assertEqual(msg.model, False, + 'message_post: private discussion: context key "thread_model" not correctly ignored when having no res_id') + + # Do: Bert replies through mailgateway (is a customer) + msg2_id = self.mail_thread.message_post(cr, uid, False, + author_id=self.partner_bert_id, + parent_id=msg1_id, subtype='mail.mt_comment') + + # Test: message recipients + msg = self.mail_message.browse(cr, uid, msg2_id) + msg_pids = [p.id for p in msg.partner_ids] + msg_nids = [p.id for p in msg.notified_partner_ids] + test_pids = [self.partner_admin_id, self.partner_raoul_id] + test_nids = test_pids + self.assertEqual(set(msg_pids), set(test_pids), + 'message_post: private discussion: incorrect recipients when replying') + self.assertEqual(set(msg_nids), set(test_nids), + 'message_post: private discussion: incorrect notified recipients when replying') + + # Do: Administrator replies + msg3_id = self.mail_thread.message_post(cr, uid, False, + parent_id=msg2_id, subtype='mail.mt_comment') + + # Test: message recipients + msg = self.mail_message.browse(cr, uid, msg3_id) + msg_pids = [p.id for p in msg.partner_ids] + msg_nids = [p.id for p in msg.notified_partner_ids] + test_pids = [self.partner_bert_id, self.partner_raoul_id] + test_nids = test_pids + self.assertEqual(set(msg_pids), set(test_pids), + 'message_post: private discussion: incorrect recipients when replying') + self.assertEqual(set(msg_nids), set(test_nids), + 'message_post: private discussion: incorrect notified recipients when replying') diff --git a/addons/mail/wizard/mail_compose_message.py b/addons/mail/wizard/mail_compose_message.py index b259135b7b7..fea1840008c 100644 --- a/addons/mail/wizard/mail_compose_message.py +++ b/addons/mail/wizard/mail_compose_message.py @@ -175,11 +175,17 @@ class mail_compose_message(osv.TransientModel): :param int res_id: id of the document record this mail is related to """ doc_name_get = self.pool[model].name_get(cr, uid, [res_id], context=context) + record_name = False if doc_name_get: record_name = doc_name_get[0][1] - else: - record_name = False - return {'model': model, 'res_id': res_id, 'record_name': record_name} + values = { + 'model': model, + 'res_id': res_id, + 'record_name': record_name, + } + if record_name: + values['subject'] = 'Re: %s' % record_name + return values def get_message_data(self, cr, uid, message_id, context=None): """ Returns a defaults-like dict with initial values for the composition @@ -197,7 +203,7 @@ class mail_compose_message(osv.TransientModel): # create subject re_prefix = _('Re:') - reply_subject = tools.ustr(message_data.subject or '') + reply_subject = tools.ustr(message_data.subject or message_data.record_name or '') if not (reply_subject.startswith('Re:') or reply_subject.startswith(re_prefix)) and message_data.subject: reply_subject = "%s %s" % (re_prefix, reply_subject) # get partner_ids from original message diff --git a/addons/mrp/stock.py b/addons/mrp/stock.py index 1ff121c78bd..2feffee94a1 100644 --- a/addons/mrp/stock.py +++ b/addons/mrp/stock.py @@ -45,7 +45,7 @@ class StockMove(osv.osv): procurement_obj = self.pool.get('procurement.order') product_obj = self.pool.get('product.product') processed_ids = [move.id] - if move.product_id.supply_method == 'produce' and move.product_id.procure_method == 'make_to_order': + if move.product_id.supply_method == 'produce': bis = bom_obj.search(cr, uid, [ ('product_id','=',move.product_id.id), ('bom_id','=',False), diff --git a/addons/note_pad/i18n/cs.po b/addons/note_pad/i18n/cs.po new file mode 100644 index 00000000000..bb2502ee2d1 --- /dev/null +++ b/addons/note_pad/i18n/cs.po @@ -0,0 +1,28 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-03-30 09:13+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-03-31 05:27+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: note_pad +#: model:ir.model,name:note_pad.model_note_note +msgid "Note" +msgstr "" + +#. module: note_pad +#: field:note.note,note_pad_url:0 +msgid "Pad Url" +msgstr "" diff --git a/addons/plugin/plugin_handler.py b/addons/plugin/plugin_handler.py index b4b5064f2b1..c278db2f19a 100644 --- a/addons/plugin/plugin_handler.py +++ b/addons/plugin/plugin_handler.py @@ -4,7 +4,8 @@ Created on 18 oct. 2011 @author: openerp ''' -from openerp.osv import fields, osv +from openerp.osv import osv +from openerp.tools.translate import _ class plugin_handler(osv.osv_memory): _name = 'plugin.handler' @@ -29,7 +30,7 @@ class plugin_handler(osv.osv_memory): partner_ids = partner_obj.search(cr, uid, [('email', 'like', address_email)]) res_id = partner_ids and partner_ids[0] or 0 url = self._make_url(cr, uid, res_id, 'res.partner') - return ('res.partner', res_id , url) + return ('res.partner', res_id, url) def document_get(self, cr, uid, email): """ @@ -48,7 +49,7 @@ class plugin_handler(osv.osv_memory): message_id = msg.get('message_id') msg_id = False if message_id: - msg_ids = mail_message_obj.search(cr, uid, [('message_id','=', message_id)]) + msg_ids = mail_message_obj.search(cr, uid, [('message_id', '=', message_id)]) msg_id = len(msg_ids) and msg_ids[0] or False if not msg_id and parent_id: msg_id = parent_id @@ -58,7 +59,7 @@ class plugin_handler(osv.osv_memory): model = msg.model url = self._make_url(cr, uid, res_id, model) name = self.pool[model].name_get(cr, uid, [res_id])[0][1] - return (model,res_id, url,name) + return (model, res_id, url, name) def document_type(self, cr, uid, context=None): """ @@ -94,26 +95,25 @@ class plugin_handler(osv.osv_memory): model_obj = self.pool[model] msg = self.pool.get('mail.thread').message_parse(cr, uid, email) message_id = msg.get('message-id') - mail_ids = mail_message.search(cr, uid, [('message_id','=',message_id),('res_id','=',res_id),('model','=',model)]) - - if message_id and mail_ids : + mail_ids = mail_message.search(cr, uid, [('message_id', '=', message_id), ('res_id', '=', res_id), ('model', '=', model)]) + if message_id and mail_ids: mail_record = mail_message.browse(cr, uid, mail_ids)[0] res_id = mail_record.res_id - notify = "Email already pushed" + notify = _("Email already pushed") elif res_id == 0: if model == 'res.partner': - notify = 'User the Partner button to create a new partner' + notify = _('Use the Partner button to create a new partner') else: res_id = model_obj.message_process(cr, uid, model, email) - notify = "Mail successfully pushed, a new %s has been created " % model + notify = _("Mail successfully pushed, a new %s has been created.") % model else: model_obj.message_post(cr, uid, [res_id], - body= msg.get('body'), - subject= msg.get('subject'), - type= 'email', - parent_id= msg.get('parent_id'), - attachments= msg.get('attachments')) - notify = "Mail successfully pushed" + body=msg.get('body'), + subject=msg.get('subject'), + type='email', + parent_id=msg.get('parent_id'), + attachments=msg.get('attachments')) + notify = _("Mail successfully pushed") url = self._make_url(cr, uid, res_id, model) return (model, res_id, url, notify) @@ -154,16 +154,17 @@ class plugin_handler(osv.osv_memory): message_id = msg.get('message-id') push_mail = self.push_message(cr, uid, model, headers, res_id) res_id = push_mail[1] - model = push_mail[0] + model = push_mail[0] + notify = push_mail[3] for name in attachments.keys(): attachment_ids = ir_attachment_obj.search(cr, uid, [('res_model', '=', model), ('res_id', '=', res_id), ('datas_fname', '=', name)]) if attachment_ids: - attach_ids.append( attachment_ids[0]) + attach_ids.append(attachment_ids[0]) else: - vals = {"res_model": model, "res_id": res_id, "name": name, "datas" :attachments[name], "datas_fname" : name} + vals = {"res_model": model, "res_id": res_id, "name": name, "datas": attachments[name], "datas_fname": name} attach_ids.append(ir_attachment_obj.create(cr, uid, vals)) - mail_ids = mail_message.search(cr, uid, [('message_id','=',message_id),('res_id','=',res_id),('model','=',model)]) + mail_ids = mail_message.search(cr, uid, [('message_id', '=', message_id), ('res_id', '=', res_id), ('model', '=', model)]) if mail_ids: - ids = mail_message.write(cr, uid, mail_ids[0], { 'attachment_ids': [(6, 0, attach_ids)],'body':body,'body_html':body_html}) + mail_message.write(cr, uid, mail_ids[0], {'attachment_ids': [(6, 0, attach_ids)], 'body': body, 'body_html': body_html}) url = self._make_url(cr, uid, res_id, model) - return (model, res_id, url) + return (model, res_id, url, notify) diff --git a/addons/plugin_outlook/i18n/cs.po b/addons/plugin_outlook/i18n/cs.po new file mode 100644 index 00000000000..b095bfb469c --- /dev/null +++ b/addons/plugin_outlook/i18n/cs.po @@ -0,0 +1,89 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-03-31 16:52+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-04-01 05:06+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: plugin_outlook +#: field:outlook.installer,plugin32:0 +msgid "Outlook Plug-in 32bits" +msgstr "" + +#. module: plugin_outlook +#: view:sale.config.settings:0 +msgid "Download and install the plug-in" +msgstr "" + +#. module: plugin_outlook +#: model:ir.model,name:plugin_outlook.model_outlook_installer +msgid "outlook.installer" +msgstr "" + +#. module: plugin_outlook +#: view:outlook.installer:0 +msgid "MS .Net Framework 3.5 or above." +msgstr "" + +#. module: plugin_outlook +#: model:ir.actions.act_window,name:plugin_outlook.action_outlook_installer +#: model:ir.actions.act_window,name:plugin_outlook.action_outlook_wizard +#: model:ir.ui.menu,name:plugin_outlook.menu_base_config_plugins_outlook +#: view:outlook.installer:0 +msgid "Install Outlook Plug-In" +msgstr "" + +#. module: plugin_outlook +#: view:outlook.installer:0 +msgid "System requirements:" +msgstr "" + +#. module: plugin_outlook +#: view:outlook.installer:0 +msgid "title" +msgstr "" + +#. module: plugin_outlook +#: view:outlook.installer:0 +msgid "" +"Click on the link above to download the installer for either 32 or 64 bits, " +"and execute it." +msgstr "" + +#. module: plugin_outlook +#: view:outlook.installer:0 +msgid "MS Outlook 2005 or above." +msgstr "" + +#. module: plugin_outlook +#: view:outlook.installer:0 +msgid "Close" +msgstr "" + +#. module: plugin_outlook +#: field:outlook.installer,plugin64:0 +msgid "Outlook Plug-in 64bits" +msgstr "" + +#. module: plugin_outlook +#: view:outlook.installer:0 +msgid "Installation and Configuration Steps" +msgstr "" + +#. module: plugin_outlook +#: help:outlook.installer,plugin32:0 +#: help:outlook.installer,plugin64:0 +msgid "Outlook plug-in file. Save this file and install it in Outlook." +msgstr "" diff --git a/addons/plugin_outlook/static/openerp-outlook-plugin/OpenERPClient/OpenERPClient.csproj b/addons/plugin_outlook/static/openerp-outlook-plugin/OpenERPClient/OpenERPClient.csproj index 75fe271e5d6..f9ac3e31553 100644 --- a/addons/plugin_outlook/static/openerp-outlook-plugin/OpenERPClient/OpenERPClient.csproj +++ b/addons/plugin_outlook/static/openerp-outlook-plugin/OpenERPClient/OpenERPClient.csproj @@ -17,6 +17,7 @@ <UpgradeBackupLocation>
</UpgradeBackupLocation>
<OldToolsVersion>3.5</OldToolsVersion>
+ <IsWebBootstrapper>false</IsWebBootstrapper>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
@@ -29,7 +30,6 @@ <MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
- <IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
</PropertyGroup>
@@ -53,9 +53,8 @@ <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup>
- <Reference Include="CookComputing.XmlRpcV2, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
- <SpecificVersion>False</SpecificVersion>
- <HintPath>..\OpenERPOutlookPlugin\bin\Release\CookComputing.XmlRpcV2.dll</HintPath>
+ <Reference Include="CookComputing.XmlRpcV2">
+ <HintPath>..\CookComputing.XmlRpcV2.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core">
@@ -81,7 +80,7 @@ <ItemGroup>
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
<Visible>False</Visible>
- <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
+ <ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
@@ -91,7 +90,7 @@ </BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
<Visible>False</Visible>
- <ProductName>Windows Installer 3.1</ProductName>
+ <ProductName>Windows Installer 3.1</ProductName>
<Install>true</Install>
</BootstrapperPackage>
</ItemGroup>
diff --git a/addons/plugin_outlook/static/openerp-outlook-plugin/OpenERPOutlookPlugin.sln b/addons/plugin_outlook/static/openerp-outlook-plugin/OpenERPOutlookPlugin.sln index f4705664cf4..ad53769e5b4 100644 --- a/addons/plugin_outlook/static/openerp-outlook-plugin/OpenERPOutlookPlugin.sln +++ b/addons/plugin_outlook/static/openerp-outlook-plugin/OpenERPOutlookPlugin.sln @@ -1,6 +1,6 @@
-Microsoft Visual Studio Solution File, Format Version 10.00
-# Visual Studio 2008
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenERPOutlookPlugin", "OpenERPOutlookPlugin\OpenERPOutlookPlugin.csproj", "{F4B2219B-F235-400F-81B4-92F15250BBA4}"
EndProject
Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "OpenERPOutlookPluginSetup", "OpenERPOutlookPluginSetup\OpenERPOutlookPluginSetup.vdproj", "{96333293-0156-4998-9065-42721CEB0368}"
diff --git a/addons/plugin_outlook/static/openerp-outlook-plugin/OpenERPOutlookPlugin/Connect.cs b/addons/plugin_outlook/static/openerp-outlook-plugin/OpenERPOutlookPlugin/Connect.cs index 1336c7f7695..dae4db88aa2 100644 --- a/addons/plugin_outlook/static/openerp-outlook-plugin/OpenERPOutlookPlugin/Connect.cs +++ b/addons/plugin_outlook/static/openerp-outlook-plugin/OpenERPOutlookPlugin/Connect.cs @@ -303,6 +303,7 @@ namespace OpenERPOutlookPlugin foreach (outlook.MailItem mailitem in Tools.MailItems())
{
+
Object[] contact = Cache.OpenERPOutlookPlugin.RedirectPartnerPage(mailitem);
if ((int)contact[1] > 0)
diff --git a/addons/plugin_outlook/static/openerp-outlook-plugin/OpenERPOutlookPlugin/OpenERPOutlookPlugin.cs b/addons/plugin_outlook/static/openerp-outlook-plugin/OpenERPOutlookPlugin/OpenERPOutlookPlugin.cs index b057201b8d1..e1d45318ee4 100644 --- a/addons/plugin_outlook/static/openerp-outlook-plugin/OpenERPOutlookPlugin/OpenERPOutlookPlugin.cs +++ b/addons/plugin_outlook/static/openerp-outlook-plugin/OpenERPOutlookPlugin/OpenERPOutlookPlugin.cs @@ -95,7 +95,6 @@ namespace OpenERPOutlookPlugin /*
* Will open the url into the web browser.
*/
-
System.Diagnostics.Process.Start(web_url.ToString());
}
@@ -163,9 +162,16 @@ namespace OpenERPOutlookPlugin args.Add(attachments);
object push_mail = this.Connection.Execute("plugin.handler", "push_message_outlook", args.ToArray());
object[] push = (object[])push_mail;
- this.RedirectWeb(push[2].ToString());
- return true;
+ if (Convert.ToInt32(push[1]) == 0)
+ {
+ MessageBox.Show(push[3].ToString());
+ }
+ else
+ {
+ this.RedirectWeb(push[2].ToString());
+ }
+ return true;
}
public long CreatePartnerRecord(string name)
{
diff --git a/addons/plugin_outlook/static/openerp-outlook-plugin/OpenERPOutlookPluginSetup32.msi b/addons/plugin_outlook/static/openerp-outlook-plugin/OpenERPOutlookPluginSetup32.msi Binary files differindex a31471c28ba..9d9dd5d3ad3 100644 --- a/addons/plugin_outlook/static/openerp-outlook-plugin/OpenERPOutlookPluginSetup32.msi +++ b/addons/plugin_outlook/static/openerp-outlook-plugin/OpenERPOutlookPluginSetup32.msi diff --git a/addons/plugin_outlook/static/openerp-outlook-plugin/OpenERPOutlookPluginSetup64.msi b/addons/plugin_outlook/static/openerp-outlook-plugin/OpenERPOutlookPluginSetup64.msi Binary files differindex 87cac88be70..0c2fa88bb24 100644 --- a/addons/plugin_outlook/static/openerp-outlook-plugin/OpenERPOutlookPluginSetup64.msi +++ b/addons/plugin_outlook/static/openerp-outlook-plugin/OpenERPOutlookPluginSetup64.msi diff --git a/addons/point_of_sale/point_of_sale_demo.xml b/addons/point_of_sale/point_of_sale_demo.xml index 011c6d81bfc..1c61218a4cb 100644 --- a/addons/point_of_sale/point_of_sale_demo.xml +++ b/addons/point_of_sale/point_of_sale_demo.xml @@ -430,6 +430,7 @@ <field name="available_in_pos">True</field> <field name="list_price">1.49</field> <field name="name">Coca-Cola Regular 1L</field> + <field name="ean13">5449000054227</field> <field name="pos_categ_id" ref="coke"/> <field name="image">/9j/4AAQSkZJRgABAAEBLAEsAAD/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9PjsBCwoKDg0OHBYWHCgoKCgoOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIAGQAIgMBEQACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APZqYHHfEPXNS0W3sjp0zRGUvvKqD0246g+tc+InKNrHqZVhaVdy5+ljlPCfjPxBf65aW1xevLFJOqOCi8gn6cVnGrPnSPRxuW4elRlJLWx65XWfNENusizXJcMFaUFMngjYo4+Y8ZB7L34/iKW7NKjTjG3b9X5L9fXopqozMPX9Kt9YvtPtp9+AZHbbj7oA9fcrUyipbmtGvOldxdjPPhPS9G1PT7q2EiKbkK3Ixkqdp4H97ApKnFO9jWpja1SNpSOsqzlCgAoArwx77mS6JyGUJH7KOSfxP8hSAW9thd2rRZ2tkMjf3WByp/AgUASROZIwxG1v4l9D3FAD6YHLeN/FqeHFsLSMj7VqMxRSULhEAyzFQRnqB17+1IaKUnjCyaBmHiSOHaMk+SqY/wC+gaGmBHY+NLCWUr/wlUE5AztAjb/0FaSuN2J7PxvAfFNnpj3Kzw3yskcyxFMSDkAknnIyBxT2EdnTEeQ/EzzW8eRSNG7Rw6avl4GQCXbd+PSlzJM1jRqShzJNo4TVZlawmRchihzuBH86pmRz+hXH2bUN57rjHryKSA7RLl7i805rdJfNivoJI2CHghx/TNKTRpCnOeyufQtMzPMvH8ck3jWyjQqubQl2Y4CqNxJPsAP0rlrrmkkfSZI4xw1RvuvvOQ1jRb2S58mGzmmQkKD5RBZiM4xzyKy5ZR0R69OthpQvNxKFt4fZIvtV1ss4wCy7kyzD1A9O2TjJ49cP3t2yFKgp8sIJv5HQabZJb+INMiNys7M+4IsZXCkcE5789O1OEUpIxxc+fC1Go2S8/P8AI9rrtPjThvFMFtc+Kmha4SC+axQ2pkfarne+VyQQD909OcVhUScj2MvlOFHmSvHm1t6b/mcnfalqOk2k8F9ptxb3e3y0meMMm3LHgjA6uemRwOOKxcnFao9inh6NealCacd7Xs+nr28iD/hINMnu/Mj0ySaNGjWNTCPljHDLwTzjAB7jPAycnPG+wLA1oxs5pb9evQ07RpNV8R6fcxyQxrEwHkyTqZXy3zPtHT6HFVH3pI5sRy0MJOLTd+ttF2V2epW/2jz7rzs+X5o8jgfc2Lnp/tbuvP4YrojzXd++n3L9bnztTk5Ycu9tfW7/AEtt+Z458X9Xaw8ZRwTQxvFLYIUZs5U73yQR9KmpT5zuy7M3hNLO1+hx8fim5ih2pqF1GmMbUnOPyBrH2NRdT2f7Wy+erhr5pFV9eS4bDzyyn/bJP86n2M2aRznBw2/I2YPFLat4u0JIIFidbi3t9qvnOJBzxxznpWypu6b6Hj1MypqjOnFN8zbu/P7z6Lrc8c8S/aBtNuoaLegf6yKWIn/dKkf+hGkB5ZkGIY9KBobH1pgdJ8NLM6h8SdJTGRHMZT7bFLD9QKQj6epgeQftAzxCy0W3JBmMkrj2UBQf1I/KkB44n+pH0oGgi5NAHafBiWKL4jQLKQGkglVM/wB7Gf5A0CPo6mB4P8ab42/jy286FZol09Aqt2y75IpDOEuZ7CaycwwBJCOMKP6UwKWnNCs5NwhdMdMZ7ikgOi8J3UMnjrQ/sNsIdt/EC4PJBYAj8iaGB9PUxHkXx50Ca4srDXYI2cWxaCcgZ2q3Kk+2cj8RSYHj39najb6d/aD2c62bSeWJmjIRm54DdCeDQncbTTG2lle6iJhY2k0/kx+ZL5SFiq5AycdByKLgdr8H9BuNS8ZwXJhb7PYjzpHK8A4+UZ9SSD9AaSdxuLW59F1RIjKrqVdQykYIIyDQBR1nRNP13SJdL1C3EtrKACg4xjkEEdCKTApeGPBuieEYpk0i2MZuGBkd3LscdBk9vb3oSA2Y4YoQwijSPcdzbVAyfU0wH0AA/9k=</field> </record> @@ -716,6 +717,7 @@ <record id="chaudfontaine_50cl" model="product.product"> <field name="available_in_pos">True</field> <field name="list_price">0.44</field> + <field name="ean13">5449000111715</field> <field name="name">Chaudfontaine 50cl</field> <field name="pos_categ_id" ref="plain_water"/> <field name="image">/9j/4AAQSkZJRgABAAEBLAEsAAD/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9PjsBCwoKDg0OHBYWHCgoKCgoOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIAGQAJAMBEQACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APZqYHnfj34gaj4a1xdPtYU8vyVkLkckkn1+ld2EwsKsbswq1XF2Oa/4XBqwmUxwqVHVWAwf6/rXQ8DTSIVeVz2KxuGurC3uGXa0sSuR6EjNeVJWbR0rYnpDCgDjvFfhCw8Qaul1PJIJEiEeF6dSR05712Yau6cLW6nLXg5S0ZjS/DLS127pJl7jk5/Umt/rjfQy9jJPc9Ht0WK3jjQ5VVAB9gK8x7neh9AEVxN5SD1PApxVxN2M6Kzja5EsjMxJyd2TWzm7GSpJu5NfWkE6qehHGRkVMJtDnTUh1o/kAQlmYE8Fj0pT11Kh7uheFZllG/fFzChHBBOffitILRkyeqEQ9xxTAVizD5jxRawEEj7GTC7jvUYzzyadrkt2NWsTQp34O6I4yMkGrh1JkInTjiqBDj065pAQMf38YC/xin0F1NIVkWUdVuBbQxOy5UyYJ/u8HmtKUeZsipLlRQj1WFpBGJV3HoCwAP0zWrpSS2M1VVy5HOZc8AAdwwNQ1YtSuRifddQBFMgdyCw6LgHn9KbjowUtUaorA0KGsqr2O1hkFhWtF+8Z1fhOM8Q38+lWEUtoUWR5QnIz8pB/wr08LSjVk1LscdRuK0LHhi9uzqd7b3dzHMsUalWRcA5J/wAKjFwhyRcVbU0otxk02dJFJvvIdvIyc4PHSuGStFnRF3ZrVgaFLVl3WWP9qtKPxGdX4Th/Elk11p8fzJEsEnms7HBAAPAHfqK9TCVFGb63VjkqQukL4fkeTxDqIJP3IhyMdvTJ/nRiElRh8xxbdRnWWg/02PA9ea86psdNPc2KwNSrqS7rNuM4NXS+Iip8JwvimSKKxhMi7gJRhcZ5wSMj0yK9XBpuTt2OOrbQk8NKy+JNRXbjbHFngZ6Z55NTiv4EPVl0v4jOsgx9uiA9D0rz5fCzoW5qViaFe9lSKEbj944qoK7Jk0jkvFGmTahZW4trbzylwruowCVwc9cZ/OvQwdZU5O7toc1aDklZdSPwxp99aahfXN5bvH5qxhS5zkgHOOTxVYurCUIqL2uFGMlJto6W3KLex5IBOQAK4ZX5WbppM1KxNDP1faYUDlQuTkscCtKZnUa6meiyKoUF9o7A5qxaj2LqNyll/wA+9AbDLfbFfRscb5HHfJNNq8WSnaR0Fc5uVdRhaa3wq7sHp61dN2ZM1dGBftLDAipByuemRg4rqppNnJVbtYjmYyuskI81VOMEkD8hjNacqWj0MeZ3utTWsIJXlVzEyqDksx61y1Gl1Oyld62NesDcOtAAQD1FAAFA6AUBYKACgAD/2Q==</field> @@ -830,6 +832,7 @@ <record id="jupiler_33cl" model="product.product"> <field name="available_in_pos">True</field> <field name="list_price">0.77</field> + <field name="ean13">5410228142027</field> <field name="name">Jupiler 33cl</field> <field name="pos_categ_id" ref="pils"/> <field name="image">/9j/4AAQSkZJRgABAAEBLAEsAAD/2wCEAAoHBwgHBgoICAgLCgoLDhgQDg0NDh0VFhEYIx8lJCIfIiEmKzcvJik0KSEiMEExNDk7Pj4+JS5ESUM8SDc9PjsBCwoKDg0OHBYWHCgoKCgoOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O//AABEIAGQAPQMBEQACEQEDEQH/xAAfAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgv/xAC1EAACAQMDAgQDBQUEBAAAAX0BAgMABBEFEiExQQYTUWEHInEUMoGRoQgjQrHBFVLR8CQzYnKCCQoWFxgZGiUmJygpKjQ1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4eLj5OXm5+jp6vHy8/T19vf4+fr/xAAfAQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgv/xAC1EQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/APZqYGdqet2+myJE6tJK4yFXgAepNACJqrPD5reTEvbc+aVwKU2vyR7mDx7FOCxUj+dMC3Z61bzxF5LuFAOu4hcfnQBZmv444fNSSKVc4+Vuv40gH2l7Hdq20FXX7yt1FMCduq/X+hrCs7Tp6/a/9tf9df1TXUWtxHlnjvxjFDrotYbWG6jiUBw5Iyc+oNc1XEckrI9vA5OsRS5pNrsT6ZrM2q2izw6LdqgGP9HuQR+RIq41m1sYYjK1Slb2i+af/BM+58UwaTcukkWqW7scssipyfzxSdeK3TFDJ681eLi/n/wCH/hOLa/22wtbmY9gIkGfxzmhYiL2uOWT14q7cV/XoQax4pvbWJ3fT3O8/wDLWXp+A/xode3QKWVqb1kbPwv8YG/1G6sL3y0lmw0RGecdsk06VXm3IxuCVGKcT05vvJ9f6GprtKdP/F/7bLz/AM/TqvPWzKmsySQ6PdyRNtdYjg1tLYuik6kU+58838N4buSW5Us7sSWHIry5KV9T7yg6fIlE9M8JXsen+H4kKHcFy2EJH5gV2UmlE+fzCnKdZtHCeM9QF/rDPECwAxjpzWNWze56GB56VKzgzM0afyNRjlcbcHpmpgkpbmuIc50n7up0Wul9TtnjghZnK/KAh6/lW7SaPLp88HrZfMx9K8O+ILO4g1EW0losci/vJPl6kDp170owknew8RiqDg4tpu3Q+homZoYWJySASfXitat+aFv5v/bX56/j3t1Xz3cr60M6Ld/9cjWstmXQ/iR9TxS6P71vrXDI+upbGTqSkBJF4PQkVnJaHXRe6MwmoNGy3owDa7YqwyDcICD3+YVrRXvo4ce2qEj2Hw8Uj8L6YzFUBtYuTxztFejT+Beh8ljP48/8T/Mi190bTmQMCyzRbh6fOKU/hIpb/I7WH/UQf7o/lWVX46f+L/21+f8An6dVK6kGsDOkXQ/6ZGtpbF0vjXqeXaZ4f1K71CC7TTftNoJfnDFQrKDg9T9a5I05N3sfQVcZShTceazsdhqWhaBoqTakdKNwXQQpaxoH3seyqe5/kK6lSgnseJLHYiUbOTOZ8PQ21zo+owaX4PvLO8jjkMU2pxKMyH7qhm5wM+nQeppRpQjsgqY7EVLc02YGl/D3xDY6nZzSwR+XDKjM3nKTgEZNYRoz57nq1cwoPDezTbdkburo1z8MrAQW0106Jb/u4SQxKldwyBkdDz2rpirRR4uIkp1pNbNsWHUtW1Pw9LcarZRWZNxH5KRybyU3DknJ759OlKfwip7v0PUIR+4i/wB0fyqZptxt3/R+a/X06qSDVf8AkFXX/XI/yq5bFU/jXqeY6tPdJHYQQ3j2sCWrSyuHKqo8x8scdew9+BXM1JtJHuUp0qcJzmk9f0RVXSfEGsWC3OnWV89rIuY557tAz88OEJ4/M8d619k0tGcX1+M5WcUtdLLb17nHajNr2l3T292buKVeShmYE/nXLKLT1bR7sainDmjTjJeVv1sbPgDWLyfxbaRS3VwyP5iPHJITg7CeQT64rSkpRqJNnBjJUK+EnKEbNNdLNanRatb3E3w/ms4LaW4KX8kbwxEgui3DZGe3A611vY+e6lLw1Hcx+D5Eu3jEsd1FGIo5Ffy1XbgEgnBPJx71MvhNIbv0PYoT+4i91H8qUpNOPm/0ZJDqn/ILuf8Ark38qp7Dh8SPJ/EsTXel2VvE+17tUtwScLxLITk+nCn8Kzprr5HbjJWjy/3r/gjF/wCElN5pVroOq2Yc2JKQXK3PkFAOMHPB6Y5x0FanCVNZ8aXceiadp+o6ba3v+jbkmuA/nINzAHII4KhSCRzU1KfMjpweKeHldX+T/wCAxvw/lF740tLhE27mAK5zjbERn8cGs7WlFHWqiqUa89rtafM3NY0qLUXurlrPUrsxySukMEmyJs3Eg5O089z7YrZnlFvQ7c23hSbdY21mjXiYjgm80nkZ3NuPze3H0qJfCaQ+J+h69EMwxc9FB/SpnTcpRd9nf8GvluRfcS72/ZJdy7l2HK+taivY8f8AEjJNbQadE2xlvrhY+efu/uxn/eJH41nT6rzO3Gp+4+8UcncPZalCj30/2K8OS8phJSYdmOOQ3XoMHj3NaI4zIuYF1rWb+5UMIHaTyAeMsQxjTH0XAHtincVjp/hParFqF5qk3ENjAzsfQ4I/kT+VRb3jojLloyXdr/M63V4vtPw8s4xazXLS+TI0UOdzksGb6ZyeardGEo8smjI0611Kz0+7VtOj0/TmuIylv5xkkWT5Ov1HPOOtRPYunu/Q9oh/1Ef+6P5VZmNu/wDj0lz/AHDQB5JNHZ3Pis219lYnaZRMT/qpXOFb8MD8zWF46q+7PWUKzcJqN1GK+fcxNa0ud/EHkajClvDZKwIUZLrlm4Hc/Mfr+NNztp1M44duXtOW8fLr8vzMfyZ7283xwt9onYBIkB+QfwoBWdWbbsj08twsKdN1Zqzf4I7O/wDJ8MaTa6CRG2papKkt+V7LkcH3OMe/zHvW6fKknueNVjGtVnOCtFFzUvL/AOEBsvOe8SPyoQfsY/eNwOBVR+FHPW/iS9WZ+nW32XwpdqlhcWSNfRskdy2ZCMKMngdSD2qanwhT3foewwf6iP8A3R/KrM2Nuji0lPohoA8W17jVrv8A67P/AOhGuGp8TPrcD/Bj6I1LTV9L1uyjsPEJaOWJdsN8n3gPRvX/AD9auMozVpfec1bD1cPJzo6p7x/yIZfEPh7w0jjw7aSXt8wx9ruV+VPp0P5AfWrUqdPY55Ucbi/j91djlbFp9R8R29xeytLLNcKXYnk81EZ80zorYRUsO0tEdwNF1XVf7Nt4dWudP08aZE2Lfgu/RhnIxwR611Q+Feh4GI0qy9WR3nhyPw/bTrbSTSQTmAs0r7maQO2SfwIqanwipbv0PUrf/j2i/wBwfyqzNjpE3xsp/iGKAPHfEqyWus3aXNu2Gkcpu9CSQQT1riqpqTPp8DaVGPK+xjEQvKRuKR46kZNZna3NR7spSQQszE3IHJH3fyoKdSaXwk2kRxrq1kwlDN56ZXB45q6fxI5cbKToyTX9XPXNGH/Eh0//AK9Y/wD0EV2w+FHzGJ/jT/xP8yvr1jcajZx2tsm+Rpk/AZ5NE1dEUmk36HXRp5capnO0AZpkjqAKt/p1tqEJjuIY5R6SKGFJpMuFSUHeLaOUvvAmkuWJtJ4Ae9vJkfrmsnRh2O2nmuIj1T9TDn+H+kBj/p92nsyg/wBKn2MfM6Fndb+VDLXwZpFldxXC3t5K8ThgoQDJH4U404p31M6+bVasHFxSudbYwXn2WG1tLORYoY1jWS5O3gDAPv8AhWqemh5s5OcnJ9Wb9naC1j+Zt8h+82MfkPSqJLFABQAUAFAAQD1GaACgAoAKACgA/9k=</field> diff --git a/addons/point_of_sale/static/src/js/models.js b/addons/point_of_sale/static/src/js/models.js index d2cf15b54f3..660434ba53e 100644 --- a/addons/point_of_sale/static/src/js/models.js +++ b/addons/point_of_sale/static/src/js/models.js @@ -295,7 +295,8 @@ function openerp_pos_models(instance, module){ //module is instance.point_of_sal return; } //try to push an order to the server - (new instance.web.Model('pos.order')).get_func('create_from_ui')([order]) + // shadow : true is to prevent a spinner to appear in case of timeout + (new instance.web.Model('pos.order')).call('create_from_ui',[[order]],undefined,{ shadow:true }) .fail(function(unused, event){ //don't show error popup if it fails event.preventDefault(); diff --git a/addons/point_of_sale/static/src/js/widgets.js b/addons/point_of_sale/static/src/js/widgets.js index 874c387ea23..cec48dbe72f 100644 --- a/addons/point_of_sale/static/src/js/widgets.js +++ b/addons/point_of_sale/static/src/js/widgets.js @@ -794,7 +794,7 @@ function openerp_pos_widgets(instance, module){ //module is instance.point_of_sa renderElement: function() { var self = this; this._super(); - this.$('.oe_pos_synch-notification-button').click(function(){ + this.$el.click(function(){ self.pos.flush(); }); }, @@ -879,6 +879,8 @@ function openerp_pos_widgets(instance, module){ //module is instance.point_of_sa instance.web.unblockUI(); self.$('.loader').animate({opacity:0},1500,'swing',function(){self.$('.loader').hide();}); + self.pos.flush(); + }).fail(function(){ // error when loading models data from the backend instance.web.unblockUI(); return new instance.web.Model("ir.model.data").get_func("search_read")([['name', '=', 'action_pos_session_opening']], ['res_id']) diff --git a/addons/portal/portal_view.xml b/addons/portal/portal_view.xml index d56e277c3fb..1ff98bdc77f 100644 --- a/addons/portal/portal_view.xml +++ b/addons/portal/portal_view.xml @@ -21,7 +21,6 @@ <field name="params" eval=""{ 'domain': [ ('to_read', '=', True), - ('starred', '=', False), ], 'show_compose_message': False, 'show_link': False, @@ -40,6 +39,7 @@ </field> </record> + <!-- TODO: remove me in 8.0 --> <record id="action_mail_star_feeds_portal" model="ir.actions.client"> <field name="name">To-do</field> <field name="tag">mail.wall</field> @@ -67,6 +67,9 @@ </p> </field> </record> + <menuitem name="To-do" id="portal_mail_starfeeds" parent="portal_messages" + action="action_mail_star_feeds_portal" sequence="20" groups="base.group_no_one"/> + <!-- end --> <record id="action_mail_archives_feeds_portal" model="ir.actions.client"> <field name="name">Archives</field> @@ -84,7 +87,6 @@ 'show_compose_message': False, 'show_link': False, 'view_mailbox': True, - 'read_action': 'read' }""/> <field name="help" type="html"> <p> @@ -98,8 +100,6 @@ <menuitem name="Inbox" id="portal_inbox" parent="portal_messages" action="action_mail_inbox_feeds_portal" sequence="10" groups="portal.group_portal"/> - <menuitem name="To-do" id="portal_mail_starfeeds" parent="portal_messages" - action="action_mail_star_feeds_portal" sequence="20" groups="portal.group_portal"/> <menuitem name="Archives" id="portal_mail_archivesfeeds" parent="portal_messages" action="action_mail_archives_feeds_portal" sequence="30" groups="portal.group_portal"/> @@ -107,7 +107,7 @@ Create menu items that we'll leave empty for now - they'll be filled up by other portal modules. --> - <menuitem name="Quotations and Sales Orders" id="portal_orders" parent="portal_menu" sequence="20"/> + <menuitem name="Billing" id="portal_orders" parent="portal_menu" sequence="20"/> <menuitem name="After Sale Services" id="portal_after_sales" parent="portal_menu" sequence="30"/> <menuitem name="Projects" id="portal_projects" parent="portal_menu" sequence="40"/> diff --git a/addons/portal_anonymous/i18n/ru.po b/addons/portal_anonymous/i18n/ru.po new file mode 100644 index 00000000000..5ae80dfe490 --- /dev/null +++ b/addons/portal_anonymous/i18n/ru.po @@ -0,0 +1,25 @@ +# Russian translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-04-09 13:04+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Russian <ru@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-04-10 05:21+0000\n" +"X-Generator: Launchpad (build 16550)\n" + +#. module: portal_anonymous +#. openerp-web +#: code:addons/portal_anonymous/static/src/xml/portal_anonymous.xml:8 +#, python-format +msgid "Login" +msgstr "Вход" diff --git a/addons/portal_crm/i18n/cs.po b/addons/portal_crm/i18n/cs.po new file mode 100644 index 00000000000..985d487adbc --- /dev/null +++ b/addons/portal_crm/i18n/cs.po @@ -0,0 +1,546 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-03-29 18:40+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-03-30 05:27+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,type:0 +msgid "Lead" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,title:0 +msgid "Title" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,probability:0 +msgid "Success Rate (%)" +msgstr "" + +#. module: portal_crm +#: view:portal_crm.crm_contact_us:0 +msgid "Contact us" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,date_action:0 +msgid "Next Action Date" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,fax:0 +msgid "Fax" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,zip:0 +msgid "Zip" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,message_unread:0 +msgid "Unread Messages" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,company_id:0 +msgid "Company" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,day_open:0 +msgid "Days to Open" +msgstr "" + +#. module: portal_crm +#: view:portal_crm.crm_contact_us:0 +msgid "Thank you for your interest, we'll respond to your request shortly." +msgstr "" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,priority:0 +msgid "Highest" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,mobile:0 +msgid "Mobile" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,description:0 +msgid "Notes" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,message_ids:0 +msgid "Messages" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,color:0 +msgid "Color Index" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,partner_latitude:0 +msgid "Geo Latitude" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,partner_name:0 +msgid "Customer Name" +msgstr "" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,state:0 +msgid "Cancelled" +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,message_unread:0 +msgid "If checked new messages require your attention." +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,channel_id:0 +msgid "Communication channel (mail, direct, phone, ...)" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,type_id:0 +msgid "Campaign" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,ref:0 +msgid "Reference" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,date_action_next:0 +#: field:portal_crm.crm_contact_us,title_action:0 +msgid "Next Action" +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,message_summary:0 +msgid "" +"Holds the Chatter summary (number of messages, ...). This summary is " +"directly in html format in order to be inserted in kanban views." +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,partner_id:0 +msgid "Partner" +msgstr "" + +#. module: portal_crm +#: model:ir.actions.act_window,name:portal_crm.action_contact_us +msgid "Contact Us" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,name:0 +msgid "Subject" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,opt_out:0 +msgid "Opt-Out" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,priority:0 +msgid "Priority" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,state_id:0 +msgid "State" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,message_follower_ids:0 +msgid "Followers" +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,partner_id:0 +msgid "Linked partner (optional). Usually created when converting the lead." +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,payment_mode:0 +msgid "Payment Mode" +msgstr "" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,state:0 +msgid "New" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,type:0 +msgid "Type" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,email_from:0 +msgid "Email" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,channel_id:0 +msgid "Channel" +msgstr "" + +#. module: portal_crm +#: view:portal_crm.crm_contact_us:0 +msgid "Name" +msgstr "" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,priority:0 +msgid "Lowest" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,create_date:0 +msgid "Creation Date" +msgstr "" + +#. module: portal_crm +#: view:portal_crm.crm_contact_us:0 +msgid "Close" +msgstr "" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,state:0 +msgid "Pending" +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,type:0 +msgid "Type is used to separate Leads and Opportunities" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,categ_ids:0 +msgid "Categories" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,stage_id:0 +msgid "Stage" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,user_login:0 +msgid "User Login" +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,opt_out:0 +msgid "" +"If opt-out is checked, this contact has refused to receive emails or " +"unsubscribed to a campaign." +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,contact_name:0 +msgid "Contact Name" +msgstr "" + +#. module: portal_crm +#: model:ir.ui.menu,name:portal_crm.portal_company_contact +msgid "Contact" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,partner_address_email:0 +msgid "Partner Contact Email" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,planned_revenue:0 +msgid "Expected Revenue" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,task_ids:0 +msgid "Tasks" +msgstr "" + +#. module: portal_crm +#: view:portal_crm.crm_contact_us:0 +msgid "Contact form" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,company_currency:0 +msgid "Currency" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,write_date:0 +msgid "Update Date" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,date_deadline:0 +msgid "Expected Closing" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,ref2:0 +msgid "Reference 2" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,user_email:0 +msgid "User Email" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,date_open:0 +msgid "Opened" +msgstr "" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,state:0 +msgid "In Progress" +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,partner_name:0 +msgid "" +"The name of the future partner company that will be created while converting " +"the lead into opportunity" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,planned_cost:0 +msgid "Planned Costs" +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,date_deadline:0 +msgid "Estimate of the date on which the opportunity will be won." +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,email_cc:0 +msgid "" +"These email addresses will be added to the CC field of all inbound and " +"outbound emails for this record before being sent. Separate multiple email " +"addresses with a comma" +msgstr "" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,priority:0 +msgid "Low" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,date_closed:0 +#: selection:portal_crm.crm_contact_us,state:0 +msgid "Closed" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,date_assign:0 +msgid "Assignation Date" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,state:0 +msgid "Status" +msgstr "" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,priority:0 +msgid "Normal" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,email_cc:0 +msgid "Global CC" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,street2:0 +msgid "Street2" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,id:0 +msgid "ID" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,phone:0 +msgid "Phone" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,message_is_follower:0 +msgid "Is a Follower" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,active:0 +msgid "Active" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,user_id:0 +msgid "Salesperson" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,day_close:0 +msgid "Days to Close" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,company_ids:0 +msgid "Companies" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,message_summary:0 +msgid "Summary" +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,section_id:0 +msgid "" +"When sending mails, the default email address is taken from the sales team." +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,partner_address_name:0 +msgid "Partner Contact Name" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,partner_longitude:0 +msgid "Geo Longitude" +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,date_assign:0 +msgid "Last date this case was forwarded/assigned to a partner" +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,email_from:0 +msgid "Email address of the contact" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,city:0 +msgid "City" +msgstr "" + +#. module: portal_crm +#: view:portal_crm.crm_contact_us:0 +msgid "Submit" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,function:0 +msgid "Function" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,referred:0 +msgid "Referred By" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,partner_assigned_id:0 +msgid "Assigned Partner" +msgstr "" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,type:0 +msgid "Opportunity" +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,partner_assigned_id:0 +msgid "Partner this case has been forwarded/assigned to." +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,country_id:0 +msgid "Country" +msgstr "" + +#. module: portal_crm +#: view:portal_crm.crm_contact_us:0 +msgid "Thank you" +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,state:0 +msgid "" +"The Status is set to 'Draft', when a case is created. If the case is in " +"progress the Status is set to 'Open'. When the case is over, the Status is " +"set to 'Done'. If the case needs to be reviewed then the Status is set to " +"'Pending'." +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,message_ids:0 +msgid "Messages and communication history" +msgstr "" + +#. module: portal_crm +#: help:portal_crm.crm_contact_us,type_id:0 +msgid "" +"From which campaign (seminar, marketing campaign, mass mailing, ...) did " +"this contact come from?" +msgstr "" + +#. module: portal_crm +#: selection:portal_crm.crm_contact_us,priority:0 +msgid "High" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,section_id:0 +msgid "Sales Team" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,street:0 +msgid "Street" +msgstr "" + +#. module: portal_crm +#: field:portal_crm.crm_contact_us,date_action_last:0 +msgid "Last Action" +msgstr "" + +#. module: portal_crm +#: model:ir.model,name:portal_crm.model_portal_crm_crm_contact_us +msgid "Contact form for the portal" +msgstr "" diff --git a/addons/portal_hr_employees/i18n/cs.po b/addons/portal_hr_employees/i18n/cs.po new file mode 100644 index 00000000000..367029b7a38 --- /dev/null +++ b/addons/portal_hr_employees/i18n/cs.po @@ -0,0 +1,95 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:05+0000\n" +"PO-Revision-Date: 2013-03-30 09:15+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-03-31 05:28+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: portal_hr_employees +#: view:hr.employee:0 +msgid "Coach" +msgstr "" + +#. module: portal_hr_employees +#: model:ir.actions.act_window,name:portal_hr_employees.action_team +#: view:portal_crm.crm_contact_us:0 +msgid "Our Team" +msgstr "" + +#. module: portal_hr_employees +#: view:hr.employee:0 +msgid "Group By..." +msgstr "" + +#. module: portal_hr_employees +#: view:hr.employee:0 +msgid "Company" +msgstr "" + +#. module: portal_hr_employees +#: selection:hr.employee,visibility:0 +msgid "Public" +msgstr "" + +#. module: portal_hr_employees +#: help:hr.employee,visibility:0 +msgid "Employee's visibility in the portal's contact page" +msgstr "" + +#. module: portal_hr_employees +#: selection:hr.employee,visibility:0 +msgid "Private" +msgstr "" + +#. module: portal_hr_employees +#: view:hr.employee:0 +msgid "Manager" +msgstr "" + +#. module: portal_hr_employees +#: model:ir.model,name:portal_hr_employees.model_hr_employee +msgid "Employee" +msgstr "" + +#. module: portal_hr_employees +#: view:hr.employee:0 +msgid "Job" +msgstr "" + +#. module: portal_hr_employees +#: field:hr.employee,visibility:0 +msgid "Visibility" +msgstr "" + +#. module: portal_hr_employees +#: field:hr.employee,public_info:0 +msgid "Public Info" +msgstr "" + +#. module: portal_hr_employees +#: model:ir.model,name:portal_hr_employees.model_portal_crm_crm_contact_us +msgid "Contact form for the portal" +msgstr "" + +#. module: portal_hr_employees +#: view:hr.employee:0 +msgid "Department" +msgstr "" + +#. module: portal_hr_employees +#: view:hr.employee:0 +#: field:portal_crm.crm_contact_us,employee_ids:0 +msgid "Employees" +msgstr "" diff --git a/addons/portal_sale/portal_sale.py b/addons/portal_sale/portal_sale.py index a6ca616ad2f..cd3b702d3c5 100644 --- a/addons/portal_sale/portal_sale.py +++ b/addons/portal_sale/portal_sale.py @@ -59,19 +59,8 @@ class sale_order(osv.Model): assert len(ids) == 1 document = self.browse(cr, uid, ids[0], context=context) partner = document.partner_id - # TDE note: this code should be improved: used a real invite wizard instead of an ugly email if partner.id not in document.message_follower_ids: self.message_subscribe(cr, uid, ids, [partner.id], context=context) - mail_values = { - 'recipient_ids': [(4, partner.id)], - 'subject': 'Invitation to follow %s' % document.name_get()[0][1], - 'body_html': 'You have been invited to follow %s' % document.name_get()[0][1], - 'auto_delete': True, - 'type': 'email', - } - mail_obj = self.pool.get('mail.mail') - mail_id = mail_obj.create(cr, uid, mail_values, context=context) - mail_obj.send(cr, uid, [mail_id], context=context) return super(sale_order, self).action_button_confirm(cr, uid, ids, context=context) def get_signup_url(self, cr, uid, ids, context=None): diff --git a/addons/product/pricelist.py b/addons/product/pricelist.py index 73707e39807..757cce2ae95 100644 --- a/addons/product/pricelist.py +++ b/addons/product/pricelist.py @@ -374,7 +374,7 @@ class product_pricelist_item(osv.osv): result.append((line.id, line.name)) result.append((-1, _('Other Pricelist'))) - result.append((-2, _('Partner section of the product form'))) + result.append((-2, _('Supplier Prices on the product form'))) return result _name = "product.pricelist.item" diff --git a/addons/product/product.py b/addons/product/product.py index 33225c92c6f..82b37f7b9e8 100644 --- a/addons/product/product.py +++ b/addons/product/product.py @@ -588,10 +588,13 @@ class product_product(osv.osv): # Check if the product is last product of this template other_product_ids = self.search(cr, uid, [('product_tmpl_id', '=', tmpl_id), ('id', '!=', product.id)], context=context) if not other_product_ids: - unlink_product_tmpl_ids.append(tmpl_id) + unlink_product_tmpl_ids.append(tmpl_id) unlink_ids.append(product.id) + res = super(product_product, self).unlink(cr, uid, unlink_ids, context=context) + # delete templates after calling super, as deleting template could lead to deleting + # products due to ondelete='cascade' self.pool.get('product.template').unlink(cr, uid, unlink_product_tmpl_ids, context=context) - return super(product_product, self).unlink(cr, uid, unlink_ids, context=context) + return res def onchange_uom(self, cursor, user, ids, uom_id, uom_po_id): if uom_id and uom_po_id: diff --git a/addons/product/product_view.xml b/addons/product/product_view.xml index ddb1ab3809f..00e925fd6a0 100644 --- a/addons/product/product_view.xml +++ b/addons/product/product_view.xml @@ -581,6 +581,7 @@ <field name="delay"/> <field name="company_id" groups="base.group_multi_company" widget="selection"/> </group> + <p groups="product.group_purchase_pricelist" class="oe_grey">The prices below will only be taken into account when your pricelist is set as based on supplier prices.</p> <field groups="product.group_purchase_pricelist" name="pricelist_ids"> <tree editable="bottom" string="Pricelist"> <field name="min_quantity"/> diff --git a/addons/project/project.py b/addons/project/project.py index 0751865d9c4..eb328007d44 100644 --- a/addons/project/project.py +++ b/addons/project/project.py @@ -286,7 +286,6 @@ class project(osv.osv): 'type_ids': _get_type_common, 'alias_model': 'project.task', 'privacy_visibility': 'public', - 'alias_domain': False, # always hide alias during creation } # TODO: Why not using a SQL contraints ? @@ -531,11 +530,11 @@ def Project(): context = dict(context, project_creation_in_progress=True) mail_alias = self.pool.get('mail.alias') if not vals.get('alias_id') and vals.get('name', False): - vals.pop('alias_name', None) # prevent errors during copy() + alias_name = vals.pop('alias_name', None) # prevent errors during copy() alias_id = mail_alias.create_unique_alias(cr, uid, # Using '+' allows using subaddressing for those who don't # have a catchall domain setup. - {'alias_name': "project+"+short_name(vals['name'])}, + {'alias_name': alias_name or "project+"+short_name(vals['name'])}, model_name=vals.get('alias_model', 'project.task'), context=context) vals['alias_id'] = alias_id @@ -605,8 +604,7 @@ class task(base_stage, osv.osv): search_domain = [] project_id = self._resolve_project_id_from_context(cr, uid, context=context) if project_id: - search_domain += ['|', ('project_ids', '=', project_id)] - search_domain += [('id', 'in', ids)] + search_domain += [('project_ids', '=', project_id)] stage_ids = stage_obj._search(cr, uid, search_domain, order=order, access_rights_uid=access_rights_uid, context=context) result = stage_obj.name_get(cr, access_rights_uid, stage_ids, context=context) # restore order of the search @@ -889,6 +887,12 @@ class task(base_stage, osv.osv): res['fields'][f]['string'] = res['fields'][f]['string'].replace('Hours',tm) return res + def get_empty_list_help(self, cr, uid, help, context=None): + context['empty_list_help_id'] = context.get('default_project_id') + context['empty_list_help_model'] = 'project.project' + context['empty_list_help_document_name'] = _("tasks") + return super(task, self).get_empty_list_help(cr, uid, help, context=context) + # ---------------------------------------- # Case management # ---------------------------------------- diff --git a/addons/project/project_data.xml b/addons/project/project_data.xml index 025327d70b3..7bf1a623a2c 100644 --- a/addons/project/project_data.xml +++ b/addons/project/project_data.xml @@ -21,6 +21,7 @@ <record id="all_projects_account" model="account.analytic.account"> <field name="name">Projects</field> <field name="code">3</field> + <field name="type">view</field> </record> <function id="parent_project_default_set" model="ir.values" name="set" eval="('default',False,'parent_id', [('project.project', False)], all_projects_account, True, False, False, False, True)"/> diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml index 16dbe44ccc1..a016c46e0e0 100644 --- a/addons/project/project_view.xml +++ b/addons/project/project_view.xml @@ -50,16 +50,17 @@ <field name="name">Tasks</field> <field name="res_model">project.task</field> <field name="view_mode">kanban,tree,form,calendar,gantt,graph</field> - <field name="context">{'search_default_project_id': [active_id], 'default_project_id': active_id}</field> + <field name="context">{ + 'search_default_project_id': [active_id], + 'default_project_id': active_id, + }</field> <field name="search_view_id" ref="view_task_search_form"/> <field name="help" type="html"> - <p class="oe_view_nocontent_create"> - Click to create a new task. - </p><p> - OpenERP's project management allows you to manage the pipeline - of tasks in order to get things done efficiently. You can - track progress, discuss on tasks, attach documents, etc. - </p> + <p> + OpenERP's project management allows you to manage the pipeline + of tasks in order to get things done efficiently. You can + track progress, discuss on tasks, attach documents, etc. + </p> </field> </record> @@ -87,6 +88,17 @@ <h1> <field name="name" string="Project Name"/> </h1> + <div name="group_alias" + attrs="{'invisible': [('alias_domain', '=', False)]}"> + <label for="alias_id" string="Email Alias"/> + <field name="alias_id" class="oe_inline oe_read_only" required="0" nolabel="1"/> + <span name="edit_alias" class="oe_edit_only"> + <field name="alias_name" class="oe_inline" + attrs="{'required': [('alias_id', '!=', False)]}"/> + @ + <field name="alias_domain" class="oe_inline" readonly="1"/> + </span> + </div> <div name="options_active"> <field name="use_tasks" class="oe_inline"/> <label for="use_tasks"/> @@ -133,13 +145,6 @@ </page> <page string="Other Info"> <group> - <group string="Email Interface" attrs="{'invisible': [('alias_domain', '=', False)]}"> - <div> - <field name="alias_id" invisible="1" required="0"/> - <label for="alias_name" class="oe_edit_only "/> - <field name="alias_name" class="oe_inline" attrs="{'required': [('alias_id', '!=', False)]}"/>@<field name="alias_domain" class="oe_inline"/> - </div> - </group> <group string="Administration" groups="project.group_time_work_estimation_tasks"> <field name="planned_hours" widget="float_time"/> <field name="effective_hours" widget="float_time"/> @@ -231,7 +236,6 @@ <field name="color"/> <field name="task_count"/> <field name="alias_id"/> - <field name="alias_domain"/> <field name="doc_count"/> <templates> <t t-name="kanban-box"> @@ -245,8 +249,10 @@ </ul> </div> <div class="oe_kanban_content"> - <h4><field name="name"/></h4> + <div class="oe_kanban_alias" t-if="record.alias_id.value"> + <span class="oe_e">%%</span><small><field name="alias_id"/></small> + </div> <div class="oe_kanban_project_list"> <a t-if="record.use_tasks.raw_value" name="%(act_project_project_2_project_task_all)d" type="action" style="margin-right: 10px"> <span t-if="record.task_count.raw_value gt 1"><field name="task_count"/> Tasks</span> @@ -622,13 +628,11 @@ <field name="view_mode">kanban,tree,form,calendar,gantt,graph</field> <field name="search_view_id" ref="view_task_search_form"/> <field name="help" type="html"> - <p class="oe_view_nocontent_create"> - Click to create a new task. - </p><p> - OpenERP's project management allows you to manage the pipeline - of tasks in order to get things done efficiently. You can - track progress, discuss on tasks, attach documents, etc. - </p> + <p> + OpenERP's project management allows you to manage the pipeline + of tasks in order to get things done efficiently. You can + track progress, discuss on tasks, attach documents, etc. + </p> </field> </record> <record id="open_view_task_list_kanban" model="ir.actions.act_window.view"> diff --git a/addons/project_issue/i18n/cs.po b/addons/project_issue/i18n/cs.po new file mode 100644 index 00000000000..cab9361dc60 --- /dev/null +++ b/addons/project_issue/i18n/cs.po @@ -0,0 +1,984 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:04+0000\n" +"PO-Revision-Date: 2013-03-31 16:53+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-04-01 05:06+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: project_issue +#: model:project.category,name:project_issue.project_issue_category_03 +msgid "Deadly bug" +msgstr "" + +#. module: project_issue +#: help:project.config.settings,fetchmail_issue:0 +msgid "" +"Allows you to configure your incoming mail server, and create issues from " +"incoming emails." +msgstr "" + +#. module: project_issue +#: field:project.issue.report,delay_open:0 +msgid "Avg. Delay to Open" +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +#: view:project.issue.report:0 +msgid "Group By..." +msgstr "" + +#. module: project_issue +#: field:project.issue,working_hours_open:0 +msgid "Working Hours to Open the Issue" +msgstr "" + +#. module: project_issue +#: model:mail.message.subtype,description:project_issue.mt_issue_started +msgid "Issue started" +msgstr "" + +#. module: project_issue +#: field:project.issue,date_open:0 +msgid "Opened" +msgstr "" + +#. module: project_issue +#: field:project.issue.report,opening_date:0 +msgid "Date of Opening" +msgstr "" + +#. module: project_issue +#: selection:project.issue.report,month:0 +msgid "March" +msgstr "" + +#. module: project_issue +#: field:project.issue,progress:0 +msgid "Progress (%)" +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +#: field:project.issue,message_unread:0 +msgid "Unread Messages" +msgstr "" + +#. module: project_issue +#: field:project.issue,company_id:0 +#: view:project.issue.report:0 +#: field:project.issue.report,company_id:0 +msgid "Company" +msgstr "" + +#. module: project_issue +#: field:project.issue,email_cc:0 +msgid "Watchers Emails" +msgstr "" + +#. module: project_issue +#: help:project.issue,kanban_state:0 +msgid "" +"A Issue's kanban state indicates special situations affecting it:\n" +" * Normal is the default situation\n" +" * Blocked indicates something is preventing the progress of this issue\n" +" * Ready for next stage indicates the issue is ready to be pulled to the " +"next stage" +msgstr "" + +#. module: project_issue +#: help:project.issue,message_unread:0 +msgid "If checked new messages require your attention." +msgstr "" + +#. module: project_issue +#: help:account.analytic.account,use_issues:0 +msgid "Check this field if this project manages issues" +msgstr "" + +#. module: project_issue +#: field:project.issue,day_open:0 +msgid "Days to Open" +msgstr "" + +#. module: project_issue +#: code:addons/project_issue/project_issue.py:473 +#, python-format +msgid "" +"You cannot escalate this issue.\n" +"The relevant Project has not configured the Escalation Project!" +msgstr "" + +#. module: project_issue +#: constraint:project.project:0 +msgid "Error! You cannot assign escalation to the same project!" +msgstr "" + +#. module: project_issue +#: selection:project.issue,priority:0 +#: selection:project.issue.report,priority:0 +msgid "Highest" +msgstr "" + +#. module: project_issue +#: help:project.issue,inactivity_days:0 +msgid "Difference in days between last action and current date" +msgstr "" + +#. module: project_issue +#: view:project.issue.report:0 +#: field:project.issue.report,day:0 +msgid "Day" +msgstr "" + +#. module: project_issue +#: field:project.issue,days_since_creation:0 +msgid "Days since creation date" +msgstr "" + +#. module: project_issue +#: field:project.issue,task_id:0 +#: view:project.issue.report:0 +#: field:project.issue.report,task_id:0 +msgid "Task" +msgstr "" + +#. module: project_issue +#: model:mail.message.subtype,name:project_issue.mt_project_issue_stage +msgid "Issue Stage Changed" +msgstr "" + +#. module: project_issue +#: field:project.issue,message_ids:0 +msgid "Messages" +msgstr "" + +#. module: project_issue +#: field:project.issue,inactivity_days:0 +msgid "Days since last action" +msgstr "" + +#. module: project_issue +#: model:ir.model,name:project_issue.model_project_project +#: view:project.issue:0 +#: field:project.issue,project_id:0 +#: view:project.issue.report:0 +#: field:project.issue.report,project_id:0 +msgid "Project" +msgstr "" + +#. module: project_issue +#: model:ir.actions.act_window,help:project_issue.project_issue_categ_act0 +msgid "" +"<p class=\"oe_view_nocontent_create\">\n" +" Click to report a new issue.\n" +" </p><p>\n" +" The OpenERP issues tacker allows you to efficiantly manage " +"things\n" +" like internal requests, software development bugs, customer\n" +" complaints, project troubles, material breakdowns, etc.\n" +" </p>\n" +" " +msgstr "" + +#. module: project_issue +#: selection:project.issue,state:0 +#: selection:project.issue.report,state:0 +msgid "Cancelled" +msgstr "" + +#. module: project_issue +#: field:project.issue,description:0 +msgid "Private Note" +msgstr "" + +#. module: project_issue +#: field:project.issue.report,date_closed:0 +msgid "Date of Closing" +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +msgid "Issue Tracker Search" +msgstr "" + +#. module: project_issue +#: field:project.issue,color:0 +msgid "Color Index" +msgstr "" + +#. module: project_issue +#: field:project.issue.report,working_hours_open:0 +msgid "Avg. Working Hours to Open" +msgstr "" + +#. module: project_issue +#: model:ir.model,name:project_issue.model_account_analytic_account +msgid "Analytic Account" +msgstr "" + +#. module: project_issue +#: help:project.issue,message_summary:0 +msgid "" +"Holds the Chatter summary (number of messages, ...). This summary is " +"directly in html format in order to be inserted in kanban views." +msgstr "" + +#. module: project_issue +#: help:project.project,project_escalation_id:0 +msgid "" +"If any issue is escalated from the current Project, it will be listed under " +"the project selected here." +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +msgid "Extra Info" +msgstr "" + +#. module: project_issue +#: model:ir.actions.act_window,help:project_issue.action_project_issue_report +msgid "" +"This report on the project issues allows you to analyse the quality of your " +"support or after-sales services. You can track the issues per age. You can " +"analyse the time required to open or close an issue, the number of email to " +"exchange and the time spent on average by issues." +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +msgid "Edit..." +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +msgid "Responsible" +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +msgid "Statistics" +msgstr "" + +#. module: project_issue +#: field:project.issue,kanban_state:0 +msgid "Kanban State" +msgstr "" + +#. module: project_issue +#: code:addons/project_issue/project_issue.py:368 +#, python-format +msgid "Project issue <b>converted</b> to task." +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +#: field:project.issue,priority:0 +#: view:project.issue.report:0 +#: field:project.issue.report,priority:0 +msgid "Priority" +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +#: field:project.issue,version_id:0 +#: view:project.issue.report:0 +#: field:project.issue.report,version_id:0 +msgid "Version" +msgstr "" + +#. module: project_issue +#: field:project.issue,message_follower_ids:0 +msgid "Followers" +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +#: selection:project.issue,state:0 +#: view:project.issue.report:0 +msgid "New" +msgstr "" + +#. module: project_issue +#: model:ir.actions.act_window,name:project_issue.project_issue_categ_action +msgid "Issue Categories" +msgstr "" + +#. module: project_issue +#: field:project.issue,email_from:0 +msgid "Email" +msgstr "" + +#. module: project_issue +#: field:project.issue,channel_id:0 +#: field:project.issue.report,channel_id:0 +msgid "Channel" +msgstr "" + +#. module: project_issue +#: selection:project.issue,priority:0 +#: selection:project.issue.report,priority:0 +msgid "Lowest" +msgstr "" + +#. module: project_issue +#: code:addons/project_issue/project_issue.py:390 +#, python-format +msgid "%s (copy)" +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +msgid "Unassigned Issues" +msgstr "" + +#. module: project_issue +#: field:project.issue,create_date:0 +#: view:project.issue.report:0 +#: field:project.issue.report,creation_date:0 +msgid "Creation Date" +msgstr "" + +#. module: project_issue +#: model:ir.actions.act_window,name:project_issue.project_issue_version_action +#: model:ir.ui.menu,name:project_issue.menu_project_issue_version_act +msgid "Versions" +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +msgid "To Do Issues" +msgstr "" + +#. module: project_issue +#: model:ir.model,name:project_issue.model_project_issue_version +msgid "project.issue.version" +msgstr "" + +#. module: project_issue +#: field:project.config.settings,fetchmail_issue:0 +msgid "Create issues from an incoming email account " +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +#: selection:project.issue,state:0 +#: view:project.issue.report:0 +msgid "Done" +msgstr "" + +#. module: project_issue +#: selection:project.issue.report,month:0 +msgid "July" +msgstr "" + +#. module: project_issue +#: model:ir.ui.menu,name:project_issue.menu_project_issue_category_act +msgid "Categories" +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +#: field:project.issue,stage_id:0 +#: view:project.issue.report:0 +#: field:project.issue.report,stage_id:0 +msgid "Stage" +msgstr "" + +#. module: project_issue +#: model:ir.actions.act_window,name:project_issue.action_project_issue_report +#: model:ir.ui.menu,name:project_issue.menu_project_issue_report_tree +#: view:project.issue.report:0 +msgid "Issues Analysis" +msgstr "" + +#. module: project_issue +#: code:addons/project_issue/project_issue.py:507 +#, python-format +msgid "No Subject" +msgstr "" + +#. module: project_issue +#: model:ir.actions.act_window,name:project_issue.action_view_my_project_issue_tree +msgid "My Project Issues" +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +#: field:project.issue,partner_id:0 +#: view:project.issue.report:0 +#: field:project.issue.report,partner_id:0 +msgid "Contact" +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +msgid "Delete" +msgstr "" + +#. module: project_issue +#: code:addons/project_issue/project_issue.py:373 +#, python-format +msgid "Tasks" +msgstr "" + +#. module: project_issue +#: field:project.issue.report,nbr:0 +msgid "# of Issues" +msgstr "" + +#. module: project_issue +#: selection:project.issue.report,month:0 +msgid "September" +msgstr "" + +#. module: project_issue +#: selection:project.issue.report,month:0 +msgid "December" +msgstr "" + +#. module: project_issue +#: field:project.issue,categ_ids:0 +msgid "Tags" +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +msgid "Issue Tracker Tree" +msgstr "" + +#. module: project_issue +#: model:project.category,name:project_issue.project_issue_category_01 +msgid "Little problem" +msgstr "" + +#. module: project_issue +#: view:project.project:0 +msgid "creates" +msgstr "" + +#. module: project_issue +#: model:crm.case.categ,name:project_issue.feature_request_categ +msgid "Feature Requests" +msgstr "" + +#. module: project_issue +#: field:project.issue,write_date:0 +msgid "Update Date" +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +msgid "Project:" +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +msgid "Open Features" +msgstr "" + +#. module: project_issue +#: field:project.issue,date_action_next:0 +msgid "Next Action" +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +#: selection:project.issue,kanban_state:0 +msgid "Blocked" +msgstr "" + +#. module: project_issue +#: field:project.issue,user_email:0 +msgid "User Email" +msgstr "" + +#. module: project_issue +#: view:project.issue.report:0 +msgid "#Number of Project Issues" +msgstr "" + +#. module: project_issue +#: help:project.issue,channel_id:0 +msgid "Communication channel." +msgstr "" + +#. module: project_issue +#: help:project.issue,email_cc:0 +msgid "" +"These email addresses will be added to the CC field of all inbound and " +"outbound emails for this record before being sent. Separate multiple email " +"addresses with a comma" +msgstr "" + +#. module: project_issue +#: model:crm.case.categ,name:project_issue.bug_categ +msgid "Maintenance" +msgstr "" + +#. module: project_issue +#: selection:project.issue.report,state:0 +msgid "Draft" +msgstr "" + +#. module: project_issue +#: selection:project.issue,priority:0 +#: selection:project.issue.report,priority:0 +msgid "Low" +msgstr "" + +#. module: project_issue +#: field:project.issue,date_closed:0 +#: selection:project.issue.report,state:0 +msgid "Closed" +msgstr "" + +#. module: project_issue +#: field:project.issue.report,delay_close:0 +msgid "Avg. Delay to Close" +msgstr "" + +#. module: project_issue +#: selection:project.issue,state:0 +#: view:project.issue.report:0 +#: selection:project.issue.report,state:0 +msgid "Pending" +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +#: field:project.issue,state:0 +#: field:project.issue.report,state:0 +msgid "Status" +msgstr "" + +#. module: project_issue +#: view:project.issue.report:0 +msgid "#Project Issues" +msgstr "" + +#. module: project_issue +#: selection:project.issue.report,month:0 +msgid "August" +msgstr "" + +#. module: project_issue +#: selection:project.issue,kanban_state:0 +#: selection:project.issue,priority:0 +#: selection:project.issue.report,priority:0 +msgid "Normal" +msgstr "" + +#. module: project_issue +#: field:project.project,issue_count:0 +msgid "unknown" +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +msgid "Category:" +msgstr "" + +#. module: project_issue +#: selection:project.issue.report,month:0 +msgid "June" +msgstr "" + +#. module: project_issue +#: help:project.issue,message_ids:0 +msgid "Messages and communication history" +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +msgid "New Issues" +msgstr "" + +#. module: project_issue +#: field:project.issue,day_close:0 +msgid "Days to Close" +msgstr "" + +#. module: project_issue +#: field:project.issue,message_is_follower:0 +msgid "Is a Follower" +msgstr "" + +#. module: project_issue +#: help:project.issue,state:0 +msgid "" +"The status is set to 'Draft', when a case is created. " +"If the case is in progress the status is set to 'Open'. " +"When the case is over, the status is set to 'Done'. If " +"the case needs to be reviewed then the status is set " +"to 'Pending'." +msgstr "" + +#. module: project_issue +#: field:project.issue,active:0 +#: field:project.issue.version,active:0 +msgid "Active" +msgstr "" + +#. module: project_issue +#: selection:project.issue.report,month:0 +msgid "November" +msgstr "" + +#. module: project_issue +#: code:addons/project_issue/project_issue.py:473 +#, python-format +msgid "Warning!" +msgstr "" + +#. module: project_issue +#: view:project.issue.report:0 +msgid "Search" +msgstr "" + +#. module: project_issue +#: selection:project.issue.report,month:0 +msgid "October" +msgstr "" + +#. module: project_issue +#: help:project.issue,days_since_creation:0 +msgid "Difference in days between creation date and current date" +msgstr "" + +#. module: project_issue +#: selection:project.issue.report,month:0 +msgid "January" +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +msgid "Feature Tracker Tree" +msgstr "" + +#. module: project_issue +#: help:project.issue,email_from:0 +msgid "These people will receive email." +msgstr "" + +#. module: project_issue +#: field:project.issue,message_summary:0 +msgid "Summary" +msgstr "" + +#. module: project_issue +#: field:project.issue,date:0 +msgid "Date" +msgstr "" + +#. module: project_issue +#: field:project.issue,user_id:0 +#: view:project.issue.report:0 +#: field:project.issue.report,user_id:0 +msgid "Assigned to" +msgstr "" + +#. module: project_issue +#: view:project.config.settings:0 +msgid "Configure" +msgstr "" + +#. module: project_issue +#: model:mail.message.subtype,description:project_issue.mt_issue_closed +msgid "Issue closed" +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +msgid "Current Features" +msgstr "" + +#. module: project_issue +#: view:project.issue.version:0 +msgid "Issue Version" +msgstr "" + +#. module: project_issue +#: field:project.issue.version,name:0 +msgid "Version Number" +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +msgid "Cancel" +msgstr "" + +#. module: project_issue +#: selection:project.issue.report,state:0 +msgid "Open" +msgstr "" + +#. module: project_issue +#: field:account.analytic.account,use_issues:0 +#: model:ir.actions.act_window,name:project_issue.act_project_project_2_project_issue_all +#: model:ir.actions.act_window,name:project_issue.project_issue_categ_act0 +#: model:ir.ui.menu,name:project_issue.menu_project_confi +#: model:ir.ui.menu,name:project_issue.menu_project_issue_track +#: view:project.issue:0 +#: view:project.project:0 +msgid "Issues" +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +#: selection:project.issue,state:0 +msgid "In Progress" +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +#: view:project.issue.report:0 +msgid "To Do" +msgstr "" + +#. module: project_issue +#: model:ir.model,name:project_issue.model_project_issue +#: view:project.issue.report:0 +msgid "Project Issue" +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +msgid "Creation Month" +msgstr "" + +#. module: project_issue +#: help:project.issue,progress:0 +msgid "Computed as: Time Spent / Total Time." +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +#: selection:project.issue,kanban_state:0 +msgid "Ready for next stage" +msgstr "" + +#. module: project_issue +#: view:project.issue.report:0 +#: field:project.issue.report,section_id:0 +msgid "Sale Team" +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +#: view:project.issue.report:0 +#: field:project.issue.report,month:0 +msgid "Month" +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +#: field:project.issue,name:0 +#: view:project.project:0 +msgid "Issue" +msgstr "" + +#. module: project_issue +#: model:project.category,name:project_issue.project_issue_category_02 +msgid "PBCK" +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +msgid "Feature Tracker Search" +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +msgid "Description" +msgstr "" + +#. module: project_issue +#: field:project.issue,section_id:0 +msgid "Sales Team" +msgstr "" + +#. module: project_issue +#: selection:project.issue.report,month:0 +msgid "May" +msgstr "" + +#. module: project_issue +#: model:ir.model,name:project_issue.model_project_config_settings +msgid "project.config.settings" +msgstr "" + +#. module: project_issue +#: model:mail.message.subtype,name:project_issue.mt_issue_closed +#: model:mail.message.subtype,name:project_issue.mt_project_issue_closed +msgid "Issue Closed" +msgstr "" + +#. module: project_issue +#: view:project.issue.report:0 +#: field:project.issue.report,email:0 +msgid "# Emails" +msgstr "" + +#. module: project_issue +#: model:mail.message.subtype,name:project_issue.mt_issue_new +#: model:mail.message.subtype,name:project_issue.mt_project_issue_new +msgid "Issue Created" +msgstr "" + +#. module: project_issue +#: model:mail.message.subtype,name:project_issue.mt_issue_blocked +#: model:mail.message.subtype,name:project_issue.mt_project_issue_blocked +msgid "Issue Blocked" +msgstr "" + +#. module: project_issue +#: selection:project.issue.report,month:0 +msgid "February" +msgstr "" + +#. module: project_issue +#: model:mail.message.subtype,description:project_issue.mt_issue_stage +#: model:mail.message.subtype,description:project_issue.mt_project_issue_stage +msgid "Stage changed" +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +msgid "Feature description" +msgstr "" + +#. module: project_issue +#: field:project.project,project_escalation_id:0 +msgid "Project Escalation" +msgstr "" + +#. module: project_issue +#: model:ir.actions.act_window,help:project_issue.project_issue_version_action +msgid "" +"<p class=\"oe_view_nocontent_create\">\n" +" Click to add a new version.\n" +" </p><p>\n" +" Define here the different versions of your products on " +"which\n" +" you can work on issues.\n" +" </p>\n" +" " +msgstr "" + +#. module: project_issue +#: help:project.issue,section_id:0 +msgid "" +"Sales team to which Case belongs to. Define " +"Responsible user and Email account for mail gateway." +msgstr "" + +#. module: project_issue +#: view:board.board:0 +msgid "My Issues" +msgstr "" + +#. module: project_issue +#: help:project.issue.report,delay_open:0 +msgid "Number of Days to open the project issue." +msgstr "" + +#. module: project_issue +#: selection:project.issue.report,month:0 +msgid "April" +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +msgid "⇒ Escalate" +msgstr "" + +#. module: project_issue +#: view:project.issue:0 +msgid "References" +msgstr "" + +#. module: project_issue +#: model:mail.message.subtype,description:project_issue.mt_issue_new +msgid "Issue created" +msgstr "" + +#. module: project_issue +#: field:project.issue,working_hours_close:0 +msgid "Working Hours to Close the Issue" +msgstr "" + +#. module: project_issue +#: field:project.issue,id:0 +msgid "ID" +msgstr "" + +#. module: project_issue +#: model:mail.message.subtype,description:project_issue.mt_issue_blocked +msgid "Issue blocked" +msgstr "" + +#. module: project_issue +#: model:ir.model,name:project_issue.model_project_issue_report +msgid "project.issue.report" +msgstr "" + +#. module: project_issue +#: help:project.issue.report,delay_close:0 +msgid "Number of Days to close the project issue" +msgstr "" + +#. module: project_issue +#: field:project.issue.report,working_hours_close:0 +msgid "Avg. Working Hours to Close" +msgstr "" + +#. module: project_issue +#: model:mail.message.subtype,name:project_issue.mt_issue_stage +msgid "Stage Changed" +msgstr "" + +#. module: project_issue +#: selection:project.issue,priority:0 +#: selection:project.issue.report,priority:0 +msgid "High" +msgstr "" + +#. module: project_issue +#: field:project.issue,date_deadline:0 +msgid "Deadline" +msgstr "" + +#. module: project_issue +#: field:project.issue,date_action_last:0 +msgid "Last Action" +msgstr "" + +#. module: project_issue +#: view:project.issue.report:0 +#: field:project.issue.report,name:0 +msgid "Year" +msgstr "" + +#. module: project_issue +#: field:project.issue,duration:0 +msgid "Duration" +msgstr "" + +#. module: project_issue +#: model:mail.message.subtype,name:project_issue.mt_issue_started +#: model:mail.message.subtype,name:project_issue.mt_project_issue_started +msgid "Issue Started" +msgstr "" diff --git a/addons/project_issue/project_issue.py b/addons/project_issue/project_issue.py index 01dab2962f3..7aa408a99aa 100644 --- a/addons/project_issue/project_issue.py +++ b/addons/project_issue/project_issue.py @@ -137,6 +137,13 @@ class project_issue(base_stage, osv.osv): res = {} for issue in self.browse(cr, uid, ids, context=context): + + # if the working hours on the project are not defined, use default ones (8 -> 12 and 13 -> 17 * 5), represented by None + if not issue.project_id or not issue.project_id.resource_calendar_id: + working_hours = None + else: + working_hours = issue.project_id.resource_calendar_id.id + res[issue.id] = {} for field in fields: duration = 0 @@ -150,20 +157,24 @@ class project_issue(base_stage, osv.osv): ans = date_open - date_create date_until = issue.date_open #Calculating no. of working hours to open the issue - if issue.project_id.resource_calendar_id: - hours = cal_obj.interval_hours_get(cr, uid, issue.project_id.resource_calendar_id.id, + hours = cal_obj._interval_hours_get(cr, uid, working_hours, date_create, - date_open) + date_open, + timezone_from_uid=issue.user_id.id or uid, + exclude_leaves=False, + context=context) elif field in ['working_hours_close','day_close']: if issue.date_closed: date_close = datetime.strptime(issue.date_closed, "%Y-%m-%d %H:%M:%S") date_until = issue.date_closed ans = date_close - date_create #Calculating no. of working hours to close the issue - if issue.project_id.resource_calendar_id: - hours = cal_obj.interval_hours_get(cr, uid, issue.project_id.resource_calendar_id.id, - date_create, - date_close) + hours = cal_obj._interval_hours_get(cr, uid, working_hours, + date_create, + date_close, + timezone_from_uid=issue.user_id.id or uid, + exclude_leaves=False, + context=context) elif field in ['days_since_creation']: if issue.create_date: days_since_creation = datetime.today() - datetime.strptime(issue.create_date, "%Y-%m-%d %H:%M:%S") @@ -182,27 +193,12 @@ class project_issue(base_stage, osv.osv): resource_ids = res_obj.search(cr, uid, [('user_id','=',issue.user_id.id)]) if resource_ids and len(resource_ids): resource_id = resource_ids[0] - duration = float(ans.days) - if issue.project_id and issue.project_id.resource_calendar_id: - duration = float(ans.days) * 24 - - new_dates = cal_obj.interval_min_get(cr, uid, - issue.project_id.resource_calendar_id.id, - date_create, - duration, resource=resource_id) - no_days = [] - date_until = datetime.strptime(date_until, '%Y-%m-%d %H:%M:%S') - for in_time, out_time in new_dates: - if in_time.date not in no_days: - no_days.append(in_time.date) - if out_time > date_until: - break - duration = len(no_days) + duration = float(ans.days) + float(ans.seconds)/(24*3600) if field in ['working_hours_open','working_hours_close']: res[issue.id][field] = hours - else: - res[issue.id][field] = abs(float(duration)) + elif field in ['day_open','day_close']: + res[issue.id][field] = duration return res @@ -420,6 +416,12 @@ class project_issue(base_stage, osv.osv): self.write(cr, uid, ids, {'date_open': False, 'date_closed': False}) return res + def get_empty_list_help(self, cr, uid, help, context=None): + context['empty_list_help_model'] = 'project.project' + context['empty_list_help_id'] = context.get('default_project_id') + context['empty_list_help_document_name'] = _("issues") + return super(project_issue, self).get_empty_list_help(cr, uid, help, context=context) + # ------------------------------------------------------- # Stage management # ------------------------------------------------------- @@ -567,7 +569,8 @@ class project_issue(base_stage, osv.osv): return res -class project(osv.osv): + +class project(osv.Model): _inherit = "project.project" def _get_alias_models(self, cr, uid, context=None): @@ -582,7 +585,9 @@ class project(osv.osv): return res _columns = { - 'project_escalation_id' : fields.many2one('project.project','Project Escalation', help='If any issue is escalated from the current Project, it will be listed under the project selected here.', states={'close':[('readonly',True)], 'cancelled':[('readonly',True)]}), + 'project_escalation_id': fields.many2one('project.project', 'Project Escalation', + help='If any issue is escalated from the current Project, it will be listed under the project selected here.', + states={'close': [('readonly', True)], 'cancelled': [('readonly', True)]}), 'issue_count': fields.function(_issue_count, type='integer', string="Unclosed Issues"), } @@ -597,14 +602,13 @@ class project(osv.osv): (_check_escalation, 'Error! You cannot assign escalation to the same project!', ['project_escalation_id']) ] -project() -class account_analytic_account(osv.osv): +class account_analytic_account(osv.Model): _inherit = 'account.analytic.account' _description = 'Analytic Account' _columns = { - 'use_issues' : fields.boolean('Issues', help="Check this field if this project manages issues"), + 'use_issues': fields.boolean('Issues', help="Check this field if this project manages issues"), } def on_change_template(self, cr, uid, ids, template_id, context=None): @@ -615,16 +619,34 @@ class account_analytic_account(osv.osv): return res def _trigger_project_creation(self, cr, uid, vals, context=None): - if context is None: context = {} + if context is None: + context = {} res = super(account_analytic_account, self)._trigger_project_creation(cr, uid, vals, context=context) return res or (vals.get('use_issues') and not 'project_creation_in_progress' in context) -account_analytic_account() -class project_project(osv.osv): +class project_project(osv.Model): _inherit = 'project.project' + _defaults = { 'use_issues': True } + def _check_create_write_values(self, cr, uid, vals, context=None): + """ Perform some check on values given to create or write. """ + # Handle use_tasks / use_issues: if only one is checked, alias should take the same model + if vals.get('use_tasks') and not vals.get('use_issues'): + vals['alias_model'] = 'project.task' + elif vals.get('use_issues') and not vals.get('use_tasks'): + vals['alias_model'] = 'project.issue' + + def create(self, cr, uid, vals, context=None): + self._check_create_write_values(cr, uid, vals, context=context) + return super(project_project, self).create(cr, uid, vals, context=context) + + def write(self, cr, uid, ids, vals, context=None): + self._check_create_write_values(cr, uid, vals, context=context) + return super(project_project, self).write(cr, uid, ids, vals, context=context) + + # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/project_issue/project_issue_menu.xml b/addons/project_issue/project_issue_menu.xml index 78841f56156..308b4884844 100644 --- a/addons/project_issue/project_issue_menu.xml +++ b/addons/project_issue/project_issue_menu.xml @@ -14,13 +14,11 @@ <field name="domain" eval=""/> <field name="search_view_id" ref="view_project_issue_filter"/> <field name="help" type="html"> - <p class="oe_view_nocontent_create"> - Click to report a new issue. - </p><p> - The OpenERP issues tacker allows you to efficiantly manage things - like internal requests, software development bugs, customer - complaints, project troubles, material breakdowns, etc. - </p> + <p> + The OpenERP issues tacker allows you to efficiantly manage things + like internal requests, software development bugs, customer + complaints, project troubles, material breakdowns, etc. + </p> </field> </record> diff --git a/addons/project_issue/project_issue_view.xml b/addons/project_issue/project_issue_view.xml index 500a1376422..f888ff9da77 100644 --- a/addons/project_issue/project_issue_view.xml +++ b/addons/project_issue/project_issue_view.xml @@ -302,7 +302,18 @@ <field name="view_type">form</field> <field name="name">Issues</field> <field name="view_mode">kanban,tree,form,calendar,graph</field> - <field name="context">{'search_default_project_id': [active_id], 'default_project_id': active_id}</field> + <field name="context">{ + 'search_default_project_id': [active_id], + 'default_project_id': active_id, + } + </field> + <field name="help" type="html"> + <p> + The OpenERP issues tacker allows you to efficiantly manage things + like internal requests, software development bugs, customer + complaints, project troubles, material breakdowns, etc. + </p> + </field> </record> <!-- Project --> @@ -324,9 +335,18 @@ <field name="priority" position="before"> <field name="project_escalation_id"/> </field> - <field name="alias_domain" position="after"> - <label for="alias_model" class="oe_edit_only" string="creates"/><field name="alias_model" class="oe_edit_only oe_inline"/> - </field> + <xpath expr='//span[@name="edit_alias"]' position='replace'> + <span class="oe_edit_only" name="edit_alias"> + <field name="alias_name" class="oe_inline" attrs="{'required': [('alias_id', '!=', False)]}"/> + @ + <field class="oe_inline" name="alias_domain"/> + <span class="oe_inline" + attrs="{'invisible': ['|', ('use_issues', '!=', True), ('use_tasks', '!=', True)]}"> + <label for="alias_model" string="creates"/> + <field name="alias_model" class="oe_inline"/> + </span> + </span> + </xpath> </field> </record> diff --git a/addons/project_issue/report/project_issue_report.py b/addons/project_issue/report/project_issue_report.py index a5eb903a742..199a971c4ad 100644 --- a/addons/project_issue/report/project_issue_report.py +++ b/addons/project_issue/report/project_issue_report.py @@ -63,9 +63,9 @@ class project_issue_report(osv.osv): 'project_id':fields.many2one('project.project', 'Project',readonly=True), 'version_id': fields.many2one('project.issue.version', 'Version'), 'user_id' : fields.many2one('res.users', 'Assigned to',readonly=True), - 'partner_id': fields.many2one('res.partner','Contact',domain="[('object_id.model', '=', 'project.issue')]"), + 'partner_id': fields.many2one('res.partner','Contact'), 'channel_id': fields.many2one('crm.case.channel', 'Channel',readonly=True), - 'task_id': fields.many2one('project.task', 'Task',domain="[('object_id.model', '=', 'project.issue')]" ), + 'task_id': fields.many2one('project.task', 'Task'), 'email': fields.integer('# Emails', size=128, readonly=True), } @@ -96,8 +96,8 @@ class project_issue_report(osv.osv): c.channel_id, c.task_id, date_trunc('day',c.create_date) as create_date, - extract('epoch' from (c.date_open-c.create_date))/(3600*24) as delay_open, - extract('epoch' from (c.date_closed-c.date_open))/(3600*24) as delay_close, + c.day_open as delay_open, + c.day_close as delay_close, (SELECT count(id) FROM mail_message WHERE model='project.issue' AND res_id=c.id) AS email FROM diff --git a/addons/project_issue/report/project_issue_report_view.xml b/addons/project_issue/report/project_issue_report_view.xml index 47ea91fad5f..e56c6612e0d 100644 --- a/addons/project_issue/report/project_issue_report_view.xml +++ b/addons/project_issue/report/project_issue_report_view.xml @@ -14,7 +14,7 @@ <field name="version_id" string="Version" invisible="1"/> <field name="priority" invisible="1"/> <field name="company_id" invisible="1" groups="base.group_multi_company"/> - <field name="section_id" invisible="1"/> + <field name="section_id" invisible="1" groups="base.group_multi_salesteams"/> <field name="user_id" invisible="1"/> <field name="channel_id" invisible="1"/> <field name="partner_id" invisible="1"/> diff --git a/addons/project_issue_sheet/i18n/cs.po b/addons/project_issue_sheet/i18n/cs.po new file mode 100644 index 00000000000..606e4246807 --- /dev/null +++ b/addons/project_issue_sheet/i18n/cs.po @@ -0,0 +1,72 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:06+0000\n" +"PO-Revision-Date: 2013-03-31 16:53+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-04-01 05:06+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: project_issue_sheet +#: code:addons/project_issue_sheet/project_issue_sheet.py:57 +#, python-format +msgid "The Analytic Account is pending !" +msgstr "" + +#. module: project_issue_sheet +#: model:ir.model,name:project_issue_sheet.model_account_analytic_line +msgid "Analytic Line" +msgstr "" + +#. module: project_issue_sheet +#: model:ir.model,name:project_issue_sheet.model_project_issue +msgid "Project Issue" +msgstr "" + +#. module: project_issue_sheet +#: model:ir.model,name:project_issue_sheet.model_hr_analytic_timesheet +msgid "Timesheet Line" +msgstr "" + +#. module: project_issue_sheet +#: view:project.issue:0 +msgid "on_change_project(project_id)" +msgstr "" + +#. module: project_issue_sheet +#: code:addons/project_issue_sheet/project_issue_sheet.py:57 +#: field:project.issue,analytic_account_id:0 +#, python-format +msgid "Analytic Account" +msgstr "" + +#. module: project_issue_sheet +#: view:project.issue:0 +msgid "Worklogs" +msgstr "" + +#. module: project_issue_sheet +#: field:account.analytic.line,create_date:0 +msgid "Create Date" +msgstr "" + +#. module: project_issue_sheet +#: view:project.issue:0 +#: field:project.issue,timesheet_ids:0 +msgid "Timesheets" +msgstr "" + +#. module: project_issue_sheet +#: field:hr.analytic.timesheet,issue_id:0 +msgid "Issue" +msgstr "" diff --git a/addons/project_long_term/i18n/cs.po b/addons/project_long_term/i18n/cs.po new file mode 100644 index 00000000000..fb1fb15f3a2 --- /dev/null +++ b/addons/project_long_term/i18n/cs.po @@ -0,0 +1,502 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:06+0000\n" +"PO-Revision-Date: 2013-03-31 16:54+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-04-01 05:06+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: project_long_term +#: help:project.phase,constraint_date_end:0 +msgid "force the phase to finish before this date" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +#: selection:project.phase,state:0 +msgid "In Progress" +msgstr "" + +#. module: project_long_term +#: field:account.analytic.account,use_phases:0 +#: model:ir.actions.act_window,name:project_long_term.act_project_phases +#: view:project.project:0 +msgid "Phases" +msgstr "" + +#. module: project_long_term +#: model:ir.actions.act_window,name:project_long_term.act_resouce_allocation +#: model:ir.ui.menu,name:project_long_term.menu_resouce_allocation +#: view:project.phase:0 +#: view:project.user.allocation:0 +msgid "Team Planning" +msgstr "" + +#. module: project_long_term +#: field:project.phase,user_ids:0 +msgid "Assigned Users" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +#: field:project.phase,next_phase_ids:0 +msgid "Next Phases" +msgstr "" + +#. module: project_long_term +#: model:ir.model,name:project_long_term.model_project_user_allocation +msgid "Phase User Allocation" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Project's Tasks" +msgstr "" + +#. module: project_long_term +#: model:ir.actions.act_window,help:project_long_term.action_project_compute_phases +msgid "" +"To schedule phases of all or a specified project. It then open a gantt " +"view.\n" +" " +msgstr "" + +#. module: project_long_term +#: field:project.phase,task_ids:0 +msgid "Project Tasks" +msgstr "" + +#. module: project_long_term +#: model:ir.actions.act_window,name:project_long_term.action_project_compute_phases +#: model:ir.ui.menu,name:project_long_term.menu_compute_phase +#: view:project.compute.phases:0 +msgid "Schedule Phases" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +#: field:project.phase,state:0 +msgid "Status" +msgstr "" + +#. module: project_long_term +#: field:project.compute.phases,target_project:0 +msgid "Action" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Start Phase" +msgstr "" + +#. module: project_long_term +#: model:ir.model,name:project_long_term.model_project_task +msgid "Task" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Draft" +msgstr "" + +#. module: project_long_term +#: view:project.compute.phases:0 +#: view:project.compute.tasks:0 +msgid "C_ompute" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +#: selection:project.phase,state:0 +msgid "New" +msgstr "" + +#. module: project_long_term +#: field:project.phase,product_uom:0 +msgid "Duration Unit of Measure" +msgstr "" + +#. module: project_long_term +#: model:ir.ui.menu,name:project_long_term.menu_view_resource_calendar_leaves +msgid "Resource Leaves" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +#: selection:project.phase,state:0 +msgid "Pending" +msgstr "" + +#. module: project_long_term +#: help:project.phase,progress:0 +msgid "Computed based on related tasks" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "In Progress Phases" +msgstr "" + +#. module: project_long_term +#: code:addons/project_long_term/project_long_term.py:140 +#, python-format +msgid "%s (copy)" +msgstr "" + +#. module: project_long_term +#: code:addons/project_long_term/wizard/project_compute_phases.py:48 +#, python-format +msgid "Please specify a project to schedule." +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +#: view:project.user.allocation:0 +msgid "Group By..." +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Remaining Hours" +msgstr "" + +#. module: project_long_term +#: field:project.phase,constraint_date_start:0 +msgid "Minimum Start Date" +msgstr "" + +#. module: project_long_term +#: help:project.phase,product_uom:0 +msgid "" +"Unit of Measure (Unit of Measure) is the unit of measurement for Duration" +msgstr "" + +#. module: project_long_term +#: help:project.phase,user_ids:0 +msgid "" +"The resources on the project can be computed automatically by the scheduler." +msgstr "" + +#. module: project_long_term +#: field:project.phase,sequence:0 +msgid "Sequence" +msgstr "" + +#. module: project_long_term +#: help:account.analytic.account,use_phases:0 +msgid "Check this field if you plan to use phase-based scheduling" +msgstr "" + +#. module: project_long_term +#: help:project.phase,state:0 +msgid "" +"If the phase is created the status 'Draft'.\n" +" If the phase is started, the status becomes 'In Progress'.\n" +" If review is needed the phase is in 'Pending' status. " +" \n" +" If the phase is over, the status is set to 'Done'." +msgstr "" + +#. module: project_long_term +#: field:project.phase,progress:0 +msgid "Progress" +msgstr "" + +#. module: project_long_term +#: model:ir.ui.menu,name:project_long_term.menu_pm_users_project1 +#: model:ir.ui.menu,name:project_long_term.menu_view_resource +msgid "Resources" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "My Projects" +msgstr "" + +#. module: project_long_term +#: view:project.project:0 +#: view:project.user.allocation:0 +msgid "Phase" +msgstr "" + +#. module: project_long_term +#: help:project.phase,duration:0 +msgid "By default in days" +msgstr "" + +#. module: project_long_term +#: model:ir.ui.menu,name:project_long_term.menu_view_resource_calendar +msgid "Working Time" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Pending Phases" +msgstr "" + +#. module: project_long_term +#: help:project.user.allocation,date_start:0 +msgid "Starting Date" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Related Tasks" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Start Month" +msgstr "" + +#. module: project_long_term +#: field:project.phase,date_end:0 +#: field:project.user.allocation,date_end:0 +msgid "End Date" +msgstr "" + +#. module: project_long_term +#: model:ir.model,name:project_long_term.model_project_compute_tasks +msgid "Project Compute Tasks" +msgstr "" + +#. module: project_long_term +#: model:ir.actions.act_window,help:project_long_term.act_project_phase +msgid "" +"A project can be split into the different phases. For each phase, you can " +"define your users allocation, describe different tasks and link your phase " +"to previous and next phases, add date constraints for the automated " +"scheduling. Use the long term planning in order to planify your available " +"users, convert your phases into a series of tasks when you start working on " +"the project." +msgstr "" + +#. module: project_long_term +#: selection:project.compute.phases,target_project:0 +msgid "Compute a Single Project" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +#: field:project.phase,previous_phase_ids:0 +msgid "Previous Phases" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "New Phases" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Tasks Details" +msgstr "" + +#. module: project_long_term +#: field:project.project,phase_count:0 +msgid "Open Phases" +msgstr "" + +#. module: project_long_term +#: help:project.phase,date_end:0 +msgid "" +" It's computed by the scheduler according to the start date and the duration." +msgstr "" + +#. module: project_long_term +#: constraint:project.phase:0 +msgid "Loops in phases not allowed" +msgstr "" + +#. module: project_long_term +#: view:project.user.allocation:0 +#: field:project.user.allocation,user_id:0 +msgid "User" +msgstr "" + +#. module: project_long_term +#: model:ir.model,name:project_long_term.model_project_project +#: field:project.compute.phases,project_id:0 +#: field:project.compute.tasks,project_id:0 +#: view:project.phase:0 +#: field:project.phase,project_id:0 +#: view:project.task:0 +#: view:project.user.allocation:0 +#: field:project.user.allocation,project_id:0 +msgid "Project" +msgstr "" + +#. module: project_long_term +#: view:project.compute.phases:0 +#: view:project.compute.tasks:0 +msgid "Cancel" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Project Users" +msgstr "" + +#. module: project_long_term +#: model:ir.model,name:project_long_term.model_project_phase +#: view:project.phase:0 +#: view:project.task:0 +#: field:project.task,phase_id:0 +#: field:project.user.allocation,phase_id:0 +msgid "Project Phase" +msgstr "" + +#. module: project_long_term +#: model:ir.ui.menu,name:project_long_term.menu_phase_schedule +msgid "Scheduling" +msgstr "" + +#. module: project_long_term +#: constraint:project.phase:0 +msgid "Phase start-date must be lower than phase end-date." +msgstr "" + +#. module: project_long_term +#: selection:project.phase,state:0 +msgid "Cancelled" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Total Hours" +msgstr "" + +#. module: project_long_term +#: model:ir.model,name:project_long_term.model_project_compute_phases +msgid "Project Compute Phases" +msgstr "" + +#. module: project_long_term +#: field:project.phase,date_start:0 +#: field:project.user.allocation,date_start:0 +msgid "Start Date" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Constraints" +msgstr "" + +#. module: project_long_term +#: help:project.phase,sequence:0 +msgid "Gives the sequence order when displaying a list of phases." +msgstr "" + +#. module: project_long_term +#: model:ir.actions.act_window,name:project_long_term.project_phase_task_list +msgid "Tasks" +msgstr "" + +#. module: project_long_term +#: help:project.user.allocation,date_end:0 +msgid "Ending Date" +msgstr "" + +#. module: project_long_term +#: code:addons/project_long_term/wizard/project_compute_phases.py:48 +#, python-format +msgid "Error!" +msgstr "" + +#. module: project_long_term +#: help:project.phase,date_start:0 +msgid "" +"It's computed by the scheduler according the project date or the end date of " +"the previous phase." +msgstr "" + +#. module: project_long_term +#: model:ir.actions.act_window,name:project_long_term.act_project_phase +#: model:ir.actions.act_window,name:project_long_term.act_project_phase_list +#: model:ir.ui.menu,name:project_long_term.menu_project_phase +#: model:ir.ui.menu,name:project_long_term.menu_project_phase_list +#: view:project.phase:0 +#: field:project.project,phase_ids:0 +msgid "Project Phases" +msgstr "" + +#. module: project_long_term +#: help:project.phase,constraint_date_start:0 +msgid "force the phase to start after this date" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +msgid "Month" +msgstr "" + +#. module: project_long_term +#: model:ir.model,name:project_long_term.model_account_analytic_account +msgid "Analytic Account" +msgstr "" + +#. module: project_long_term +#: field:project.phase,constraint_date_end:0 +msgid "Deadline" +msgstr "" + +#. module: project_long_term +#: view:project.user.allocation:0 +msgid "Project User Allocation" +msgstr "" + +#. module: project_long_term +#: model:ir.actions.act_window,name:project_long_term.action_project_compute_tasks +#: model:ir.ui.menu,name:project_long_term.menu_compute_tasks +#: view:project.compute.tasks:0 +msgid "Schedule Tasks" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +#: selection:project.phase,state:0 +msgid "Done" +msgstr "" + +#. module: project_long_term +#: selection:project.compute.phases,target_project:0 +msgid "Compute All My Projects" +msgstr "" + +#. module: project_long_term +#: field:project.phase,user_force_ids:0 +msgid "Force Assigned Users" +msgstr "" + +#. module: project_long_term +#: view:project.phase:0 +#: field:project.phase,duration:0 +msgid "Duration" +msgstr "" + +#. module: project_long_term +#: view:project.user.allocation:0 +msgid "Users" +msgstr "" + +#. module: project_long_term +#: field:project.phase,name:0 +msgid "Name" +msgstr "" + +#. module: project_long_term +#: view:project.compute.phases:0 +#: view:project.compute.tasks:0 +msgid "or" +msgstr "" diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py index 7d73b0169ed..e9f5d251a95 100644 --- a/addons/purchase/purchase.py +++ b/addons/purchase/purchase.py @@ -426,6 +426,7 @@ class purchase_order(osv.osv): 'default_composition_mode': 'comment', }) return { + 'name': _('Compose Email'), 'type': 'ir.actions.act_window', 'view_type': 'form', 'view_mode': 'form', diff --git a/addons/purchase/res_config.py b/addons/purchase/res_config.py index b773c57adb1..f5f2dfcdda5 100644 --- a/addons/purchase/res_config.py +++ b/addons/purchase/res_config.py @@ -65,6 +65,11 @@ Example: Product: this product is deprecated, do not purchase more than 5. 'default_invoice_method': 'manual', } + def onchange_purchase_analytic_plans(self, cr, uid, ids, module_purchase_analytic_plans, context=None): + """ change group_analytic_account_for_purchases following module_purchase_analytic_plans """ + if not module_purchase_analytic_plans: + return {} + return {'value': {'group_analytic_account_for_purchases': module_purchase_analytic_plans}} @@ -81,6 +86,8 @@ class account_config_settings(osv.osv_memory): def onchange_purchase_analytic_plans(self, cr, uid, ids, module_purchase_analytic_plans, context=None): """ change group_analytic_account_for_purchases following module_purchase_analytic_plans """ + if not module_purchase_analytic_plans: + return {} return {'value': {'group_analytic_account_for_purchases': module_purchase_analytic_plans}} # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/purchase/res_config_view.xml b/addons/purchase/res_config_view.xml index 7f1cfc64f39..276dc892392 100644 --- a/addons/purchase/res_config_view.xml +++ b/addons/purchase/res_config_view.xml @@ -67,7 +67,7 @@ <label for="module_purchase_requisition"/> </div> <div> - <field name="module_purchase_analytic_plans" class="oe_inline"/> + <field name="module_purchase_analytic_plans" on_change="onchange_purchase_analytic_plans(module_purchase_analytic_plans, context)" class="oe_inline"/> <label for="module_purchase_analytic_plans"/> </div> <div> @@ -109,7 +109,7 @@ <label for="group_analytic_account_for_purchases"/> </div> <div> - <field name="module_purchase_analytic_plans" on_change="onchange_purchase_analytic_plans(module_purchase_analytic_plans)" class="oe_inline"/> + <field name="module_purchase_analytic_plans" on_change="onchange_purchase_analytic_plans(module_purchase_analytic_plans, context)" class="oe_inline"/> <label for="module_purchase_analytic_plans"/> </div> </xpath> diff --git a/addons/purchase_double_validation/i18n/cs.po b/addons/purchase_double_validation/i18n/cs.po new file mode 100644 index 00000000000..70256f5adc4 --- /dev/null +++ b/addons/purchase_double_validation/i18n/cs.po @@ -0,0 +1,49 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:06+0000\n" +"PO-Revision-Date: 2013-03-31 16:54+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-04-01 05:06+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: purchase_double_validation +#: model:ir.model,name:purchase_double_validation.model_purchase_config_settings +msgid "purchase.config.settings" +msgstr "" + +#. module: purchase_double_validation +#: view:purchase.order:0 +msgid "Purchase orders which are not approved yet." +msgstr "" + +#. module: purchase_double_validation +#: field:purchase.config.settings,limit_amount:0 +msgid "limit to require a second approval" +msgstr "" + +#. module: purchase_double_validation +#: view:board.board:0 +#: model:ir.actions.act_window,name:purchase_double_validation.purchase_waiting +msgid "Purchase Orders Waiting Approval" +msgstr "" + +#. module: purchase_double_validation +#: view:purchase.order:0 +msgid "To Approve" +msgstr "" + +#. module: purchase_double_validation +#: help:purchase.config.settings,limit_amount:0 +msgid "Amount after which validation of purchase is required." +msgstr "" diff --git a/addons/purchase_requisition/i18n/cs.po b/addons/purchase_requisition/i18n/cs.po new file mode 100644 index 00000000000..ab1ba503fe7 --- /dev/null +++ b/addons/purchase_requisition/i18n/cs.po @@ -0,0 +1,473 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:06+0000\n" +"PO-Revision-Date: 2013-03-31 16:55+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-04-01 05:06+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Request a Quotation" +msgstr "" + +#. module: purchase_requisition +#: selection:purchase.requisition,exclusive:0 +msgid "Multiple Requisitions" +msgstr "" + +#. module: purchase_requisition +#: field:purchase.requisition.line,product_uom_id:0 +msgid "Product Unit of Measure" +msgstr "" + +#. module: purchase_requisition +#: model:ir.actions.act_window,help:purchase_requisition.action_purchase_requisition +msgid "" +"<p class=\"oe_view_nocontent_create\">\n" +" Click to start a new purchase requisition process. \n" +" </p><p>\n" +" A purchase requisition is the step before a request for " +"quotation.\n" +" In a purchase requisition (or purchase tender), you can record " +"the\n" +" products you need to buy and trigger the creation of RfQs to\n" +" suppliers. After the negotiation, once you have reviewed all " +"the\n" +" supplier's offers, you can validate some and cancel others.\n" +" </p>\n" +" " +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +#: field:purchase.requisition,user_id:0 +msgid "Responsible" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +#: field:purchase.requisition,state:0 +msgid "Status" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Send to Suppliers" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Group By..." +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +#: selection:purchase.requisition,state:0 +msgid "Purchase Done" +msgstr "" + +#. module: purchase_requisition +#: field:purchase.requisition,message_follower_ids:0 +msgid "Followers" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Purchase Requisition in negociation" +msgstr "" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +#: field:purchase.requisition.partner,partner_id:0 +msgid "Supplier" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +#: selection:purchase.requisition,state:0 +msgid "New" +msgstr "" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +msgid "Product Detail" +msgstr "" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +msgid "Qty" +msgstr "" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +msgid "Type" +msgstr "" + +#. module: purchase_requisition +#: model:ir.actions.act_window,name:purchase_requisition.action_purchase_requisition_partner +#: model:ir.actions.report.xml,name:purchase_requisition.report_purchase_requisition +#: model:ir.model,name:purchase_requisition.model_purchase_requisition +#: model:ir.module.category,name:purchase_requisition.module_category_purchase_requisition +#: field:product.product,purchase_requisition:0 +#: field:purchase.order,requisition_id:0 +#: view:purchase.requisition:0 +#: field:purchase.requisition.line,requisition_id:0 +#: view:purchase.requisition.partner:0 +msgid "Purchase Requisition" +msgstr "" + +#. module: purchase_requisition +#: model:ir.model,name:purchase_requisition.model_purchase_requisition_line +msgid "Purchase Requisition Line" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.order:0 +msgid "Purchase Orders with requisition" +msgstr "" + +#. module: purchase_requisition +#: model:ir.model,name:purchase_requisition.model_product_product +#: field:purchase.requisition.line,product_id:0 +msgid "Product" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Quotations" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Terms and Conditions" +msgstr "" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +#: field:purchase.requisition,description:0 +msgid "Description" +msgstr "" + +#. module: purchase_requisition +#: field:purchase.requisition,message_unread:0 +msgid "Unread Messages" +msgstr "" + +#. module: purchase_requisition +#: field:purchase.requisition,company_id:0 +#: field:purchase.requisition.line,company_id:0 +msgid "Company" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition.partner:0 +msgid "Create Quotation" +msgstr "" + +#. module: purchase_requisition +#: help:purchase.requisition,message_ids:0 +msgid "Messages and communication history" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Approved by Supplier" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition.partner:0 +msgid "or" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Reset to Draft" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Current Purchase Requisition" +msgstr "" + +#. module: purchase_requisition +#: model:res.groups,name:purchase_requisition.group_purchase_requisition_user +msgid "User" +msgstr "" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +msgid "Order Reference" +msgstr "" + +#. module: purchase_requisition +#: field:purchase.requisition,message_is_follower:0 +msgid "Is a Follower" +msgstr "" + +#. module: purchase_requisition +#: field:purchase.requisition.line,product_qty:0 +msgid "Quantity" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Unassigned Requisition" +msgstr "" + +#. module: purchase_requisition +#: model:ir.actions.act_window,name:purchase_requisition.action_purchase_requisition +#: model:ir.ui.menu,name:purchase_requisition.menu_purchase_requisition_pro_mgt +msgid "Purchase Requisitions" +msgstr "" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +msgid "Quotation Detail" +msgstr "" + +#. module: purchase_requisition +#: code:addons/purchase_requisition/purchase_requisition.py:134 +#, python-format +msgid "" +"You have already one %s purchase order for this partner, you must cancel " +"this purchase order to create a new quotation." +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "End Date" +msgstr "" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +#: field:purchase.requisition,name:0 +msgid "Requisition Reference" +msgstr "" + +#. module: purchase_requisition +#: field:purchase.requisition,line_ids:0 +msgid "Products to Purchase" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +#: selection:purchase.requisition,state:0 +msgid "Sent to Suppliers" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Search Purchase Requisition" +msgstr "" + +#. module: purchase_requisition +#: code:addons/purchase_requisition/wizard/purchase_requisition_partner.py:41 +#, python-format +msgid "No Product in Tender." +msgstr "" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +msgid "Date Ordered" +msgstr "" + +#. module: purchase_requisition +#: field:purchase.requisition,message_ids:0 +msgid "Messages" +msgstr "" + +#. module: purchase_requisition +#: help:purchase.requisition,exclusive:0 +msgid "" +"Purchase Requisition (exclusive): On the confirmation of a purchase order, " +"it cancels the remaining purchase order.\n" +"Purchase Requisition(Multiple): It allows to have multiple purchase " +"orders.On confirmation of a purchase order it does not cancel the remaining " +"orders" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Cancel Purchase Order" +msgstr "" + +#. module: purchase_requisition +#: model:ir.model,name:purchase_requisition.model_purchase_order +#: view:purchase.requisition:0 +msgid "Purchase Order" +msgstr "" + +#. module: purchase_requisition +#: field:purchase.requisition,origin:0 +msgid "Source Document" +msgstr "" + +#. module: purchase_requisition +#: code:addons/purchase_requisition/wizard/purchase_requisition_partner.py:41 +#, python-format +msgid "Error!" +msgstr "" + +#. module: purchase_requisition +#: field:purchase.requisition,exclusive:0 +msgid "Requisition Type" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "New Purchase Requisition" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Products" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Order Date" +msgstr "" + +#. module: purchase_requisition +#: selection:purchase.requisition,state:0 +msgid "Cancelled" +msgstr "" + +#. module: purchase_requisition +#: model:ir.model,name:purchase_requisition.model_purchase_requisition_partner +msgid "Purchase Requisition Partner" +msgstr "" + +#. module: purchase_requisition +#: help:purchase.requisition,message_unread:0 +msgid "If checked new messages require your attention." +msgstr "" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +msgid "Purchase for Requisitions" +msgstr "" + +#. module: purchase_requisition +#: model:ir.actions.act_window,name:purchase_requisition.act_res_partner_2_purchase_order +msgid "Purchase orders" +msgstr "" + +#. module: purchase_requisition +#: field:purchase.requisition,date_end:0 +msgid "Requisition Deadline" +msgstr "" + +#. module: purchase_requisition +#: field:purchase.requisition,message_summary:0 +msgid "Summary" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Reference" +msgstr "" + +#. module: purchase_requisition +#: model:ir.model,name:purchase_requisition.model_procurement_order +msgid "Procurement" +msgstr "" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +#: view:purchase.requisition:0 +msgid "Source" +msgstr "" + +#. module: purchase_requisition +#: field:purchase.requisition,warehouse_id:0 +msgid "Warehouse" +msgstr "" + +#. module: purchase_requisition +#: field:procurement.order,requisition_id:0 +msgid "Latest Requisition" +msgstr "" + +#. module: purchase_requisition +#: model:res.groups,name:purchase_requisition.group_purchase_requisition_manager +msgid "Manager" +msgstr "" + +#. module: purchase_requisition +#: selection:purchase.requisition,exclusive:0 +msgid "Purchase Requisition (exclusive)" +msgstr "" + +#. module: purchase_requisition +#: help:purchase.requisition,message_summary:0 +msgid "" +"Holds the Chatter summary (number of messages, ...). This summary is " +"directly in html format in order to be inserted in kanban views." +msgstr "" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +msgid "Product UoM" +msgstr "" + +#. module: purchase_requisition +#: code:addons/purchase_requisition/purchase_requisition.py:134 +#, python-format +msgid "Warning!" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Confirm Purchase Order" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition.partner:0 +msgid "Cancel" +msgstr "" + +#. module: purchase_requisition +#: report:purchase.requisition:0 +#: field:purchase.requisition,date_start:0 +msgid "Requisition Date" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Start Date" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.requisition:0 +msgid "Unassigned" +msgstr "" + +#. module: purchase_requisition +#: view:purchase.order:0 +msgid "Requisition" +msgstr "" + +#. module: purchase_requisition +#: help:product.product,purchase_requisition:0 +msgid "" +"Check this box to generates purchase requisition instead of generating " +"requests for quotation from procurement." +msgstr "" + +#. module: purchase_requisition +#: field:purchase.requisition,purchase_ids:0 +msgid "Purchase Orders" +msgstr "" diff --git a/addons/report_webkit/i18n/cs.po b/addons/report_webkit/i18n/cs.po new file mode 100644 index 00000000000..bacda6d4bdf --- /dev/null +++ b/addons/report_webkit/i18n/cs.po @@ -0,0 +1,517 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:06+0000\n" +"PO-Revision-Date: 2013-03-31 16:55+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-04-01 05:06+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: report_webkit +#: view:ir.actions.report.xml:0 +msgid "Webkit Template (used if Report File is not found)" +msgstr "" + +#. module: report_webkit +#: selection:ir.header_webkit,format:0 +msgid "Tabloid 29 279.4 x 431.8 mm" +msgstr "" + +#. module: report_webkit +#: selection:ir.header_webkit,format:0 +msgid "Ledger 28 431.8 x 279.4 mm" +msgstr "" + +#. module: report_webkit +#: code:addons/report_webkit/webkit_report.py:233 +#, python-format +msgid "No header defined for this Webkit report!" +msgstr "" + +#. module: report_webkit +#: help:ir.header_img,type:0 +msgid "Image type(png,gif,jpeg)" +msgstr "" + +#. module: report_webkit +#: help:ir.actions.report.xml,precise_mode:0 +msgid "" +"This mode allow more precise element " +" position as each object is printed on a separate HTML. " +" but memory and disk " +"usage is wider" +msgstr "" + +#. module: report_webkit +#: selection:ir.header_webkit,format:0 +msgid "Executive 4 7.5 x 10 inches, 190.5 x 254 mm" +msgstr "" + +#. module: report_webkit +#: field:ir.header_img,company_id:0 +#: field:ir.header_webkit,company_id:0 +msgid "Company" +msgstr "" + +#. module: report_webkit +#: code:addons/report_webkit/webkit_report.py:234 +#, python-format +msgid "Please set a header in company settings." +msgstr "" + +#. module: report_webkit +#: selection:ir.header_webkit,format:0 +msgid "DLE 26 110 x 220 mm" +msgstr "" + +#. module: report_webkit +#: selection:ir.header_webkit,format:0 +msgid "B7 21 88 x 125 mm" +msgstr "" + +#. module: report_webkit +#: view:res.company:0 +msgid "Headers" +msgstr "" + +#. module: report_webkit +#: help:ir.header_img,name:0 +msgid "Name of Image" +msgstr "" + +#. module: report_webkit +#: model:ir.actions.act_window,name:report_webkit.action_header_webkit +#: model:ir.ui.menu,name:report_webkit.menu_header_webkit +msgid "Webkit Headers/Footers" +msgstr "" + +#. module: report_webkit +#: selection:ir.header_webkit,format:0 +msgid "Legal 3 8.5 x 14 inches, 215.9 x 355.6 mm" +msgstr "" + +#. module: report_webkit +#: model:ir.model,name:report_webkit.model_ir_header_webkit +msgid "ir.header_webkit" +msgstr "" + +#. module: report_webkit +#: selection:ir.header_webkit,format:0 +msgid "A4 0 210 x 297 mm, 8.26 x 11.69 inches" +msgstr "" + +#. module: report_webkit +#: code:addons/report_webkit/webkit_report.py:176 +#, python-format +msgid "Webkit error" +msgstr "" + +#. module: report_webkit +#: selection:ir.header_webkit,format:0 +msgid "B2 17 500 x 707 mm" +msgstr "" + +#. module: report_webkit +#: code:addons/report_webkit/webkit_report.py:260 +#: code:addons/report_webkit/webkit_report.py:271 +#: code:addons/report_webkit/webkit_report.py:280 +#: code:addons/report_webkit/webkit_report.py:293 +#: code:addons/report_webkit/webkit_report.py:304 +#, python-format +msgid "Webkit render!" +msgstr "" + +#. module: report_webkit +#: model:ir.model,name:report_webkit.model_ir_header_img +msgid "ir.header_img" +msgstr "" + +#. module: report_webkit +#: field:ir.actions.report.xml,precise_mode:0 +msgid "Precise Mode" +msgstr "" + +#. module: report_webkit +#: code:addons/report_webkit/webkit_report.py:96 +#, python-format +msgid "" +"Please install executable on your system (sudo apt-get install wkhtmltopdf) " +"or download it from here: " +"http://code.google.com/p/wkhtmltopdf/downloads/list and set the path in the " +"ir.config_parameter with the webkit_path key.Minimal version is 0.9.9" +msgstr "" + +#. module: report_webkit +#: selection:ir.header_webkit,format:0 +msgid "A0 5 841 x 1189 mm" +msgstr "" + +#. module: report_webkit +#: selection:ir.header_webkit,format:0 +msgid "C5E 24 163 x 229 mm" +msgstr "" + +#. module: report_webkit +#: field:ir.header_img,type:0 +msgid "Type" +msgstr "" + +#. module: report_webkit +#: code:addons/report_webkit/wizard/report_webkit_actions.py:133 +#, python-format +msgid "Client Actions Connections" +msgstr "" + +#. module: report_webkit +#: field:res.company,header_image:0 +msgid "Available Images" +msgstr "" + +#. module: report_webkit +#: field:ir.header_webkit,html:0 +msgid "webkit header" +msgstr "" + +#. module: report_webkit +#: selection:ir.header_webkit,format:0 +msgid "B1 15 707 x 1000 mm" +msgstr "" + +#. module: report_webkit +#: selection:ir.header_webkit,format:0 +msgid "A1 6 594 x 841 mm" +msgstr "" + +#. module: report_webkit +#: help:ir.actions.report.xml,webkit_header:0 +msgid "The header linked to the report" +msgstr "" + +#. module: report_webkit +#: code:addons/report_webkit/webkit_report.py:95 +#, python-format +msgid "Wkhtmltopdf library path is not set" +msgstr "" + +#. module: report_webkit +#: view:ir.actions.report.xml:0 +#: view:res.company:0 +msgid "Webkit" +msgstr "" + +#. module: report_webkit +#: help:ir.header_webkit,format:0 +msgid "Select Proper Paper size" +msgstr "" + +#. module: report_webkit +#: selection:ir.header_webkit,format:0 +msgid "B5 1 176 x 250 mm, 6.93 x 9.84 inches" +msgstr "" + +#. module: report_webkit +#: selection:ir.header_webkit,format:0 +msgid "A7 11 74 x 105 mm" +msgstr "" + +#. module: report_webkit +#: selection:ir.header_webkit,format:0 +msgid "A6 10 105 x 148 mm" +msgstr "" + +#. module: report_webkit +#: help:ir.actions.report.xml,report_webkit_data:0 +msgid "This template will be used if the main report file is not found" +msgstr "" + +#. module: report_webkit +#: selection:ir.header_webkit,format:0 +msgid "Folio 27 210 x 330 mm" +msgstr "" + +#. module: report_webkit +#: field:ir.header_webkit,margin_top:0 +msgid "Top Margin (mm)" +msgstr "" + +#. module: report_webkit +#: view:report.webkit.actions:0 +msgid "_Ok" +msgstr "" + +#. module: report_webkit +#: help:report.webkit.actions,print_button:0 +msgid "" +"Check this to add a Print action for this Report in the sidebar of the " +"corresponding document types" +msgstr "" + +#. module: report_webkit +#: selection:ir.header_webkit,format:0 +msgid "B3 18 353 x 500 mm" +msgstr "" + +#. module: report_webkit +#: field:ir.actions.report.xml,webkit_header:0 +msgid "Webkit Header" +msgstr "" + +#. module: report_webkit +#: help:ir.actions.report.xml,webkit_debug:0 +msgid "Enable the webkit engine debugger" +msgstr "" + +#. module: report_webkit +#: field:ir.header_img,img:0 +msgid "Image" +msgstr "" + +#. module: report_webkit +#: view:ir.header_img:0 +msgid "Header Image" +msgstr "" + +#. module: report_webkit +#: field:res.company,header_webkit:0 +msgid "Available html" +msgstr "" + +#. module: report_webkit +#: help:report.webkit.actions,open_action:0 +msgid "" +"Check this to view the newly added internal print action after creating it " +"(technical view) " +msgstr "" + +#. module: report_webkit +#: view:res.company:0 +msgid "Images" +msgstr "" + +#. module: report_webkit +#: selection:ir.header_webkit,orientation:0 +msgid "Portrait" +msgstr "" + +#. module: report_webkit +#: view:report.webkit.actions:0 +msgid "or" +msgstr "" + +#. module: report_webkit +#: selection:ir.header_webkit,orientation:0 +msgid "Landscape" +msgstr "" + +#. module: report_webkit +#: selection:ir.header_webkit,format:0 +msgid "B8 22 62 x 88 mm" +msgstr "" + +#. module: report_webkit +#: code:addons/report_webkit/webkit_report.py:177 +#, python-format +msgid "The command 'wkhtmltopdf' failed with error code = %s. Message: %s" +msgstr "" + +#. module: report_webkit +#: selection:ir.header_webkit,format:0 +msgid "A2 7 420 x 594 mm" +msgstr "" + +#. module: report_webkit +#: field:report.webkit.actions,print_button:0 +msgid "Add print button" +msgstr "" + +#. module: report_webkit +#: selection:ir.header_webkit,format:0 +msgid "A9 13 37 x 52 mm" +msgstr "" + +#. module: report_webkit +#: model:ir.model,name:report_webkit.model_res_company +msgid "Companies" +msgstr "" + +#. module: report_webkit +#: field:ir.header_webkit,margin_bottom:0 +msgid "Bottom Margin (mm)" +msgstr "" + +#. module: report_webkit +#: model:ir.model,name:report_webkit.model_report_webkit_actions +msgid "Webkit Actions" +msgstr "" + +#. module: report_webkit +#: field:report.webkit.actions,open_action:0 +msgid "Open added action" +msgstr "" + +#. module: report_webkit +#: field:ir.header_webkit,margin_right:0 +msgid "Right Margin (mm)" +msgstr "" + +#. module: report_webkit +#: code:addons/report_webkit/webkit_report.py:228 +#, python-format +msgid "Webkit report template not found!" +msgstr "" + +#. module: report_webkit +#: field:ir.header_webkit,orientation:0 +msgid "Orientation" +msgstr "" + +#. module: report_webkit +#: selection:ir.header_webkit,format:0 +msgid "B6 20 125 x 176 mm" +msgstr "" + +#. module: report_webkit +#: help:ir.header_webkit,html:0 +msgid "Set Webkit Report Header" +msgstr "" + +#. module: report_webkit +#: field:ir.header_webkit,format:0 +msgid "Paper size" +msgstr "" + +#. module: report_webkit +#: selection:ir.header_webkit,format:0 +msgid ":B10 16 31 x 44 mm" +msgstr "" + +#. module: report_webkit +#: view:report.webkit.actions:0 +msgid "Cancel" +msgstr "" + +#. module: report_webkit +#: field:ir.header_webkit,css:0 +msgid "Header CSS" +msgstr "" + +#. module: report_webkit +#: selection:ir.header_webkit,format:0 +msgid "B4 19 250 x 353 mm" +msgstr "" + +#. module: report_webkit +#: model:ir.actions.act_window,name:report_webkit.action_header_img +#: model:ir.ui.menu,name:report_webkit.menu_header_img +msgid "Webkit Logos" +msgstr "" + +#. module: report_webkit +#: code:addons/report_webkit/webkit_report.py:172 +#, python-format +msgid "No diagnosis message was provided" +msgstr "" + +#. module: report_webkit +#: selection:ir.header_webkit,format:0 +msgid "A3 8 297 x 420 mm" +msgstr "" + +#. module: report_webkit +#: field:ir.actions.report.xml,report_webkit_data:0 +msgid "Webkit Template" +msgstr "" + +#. module: report_webkit +#: field:ir.header_webkit,footer_html:0 +msgid "webkit footer" +msgstr "" + +#. module: report_webkit +#: field:ir.actions.report.xml,webkit_debug:0 +msgid "Webkit debug" +msgstr "" + +#. module: report_webkit +#: selection:ir.header_webkit,format:0 +msgid "Letter 2 8.5 x 11 inches, 215.9 x 279.4 mm" +msgstr "" + +#. module: report_webkit +#: selection:ir.header_webkit,format:0 +msgid "B0 14 1000 x 1414 mm" +msgstr "" + +#. module: report_webkit +#: field:ir.header_img,name:0 +#: field:ir.header_webkit,name:0 +msgid "Name" +msgstr "" + +#. module: report_webkit +#: selection:ir.header_webkit,format:0 +msgid "A5 9 148 x 210 mm" +msgstr "" + +#. module: report_webkit +#: selection:ir.header_webkit,format:0 +msgid "A8 12 52 x 74 mm" +msgstr "" + +#. module: report_webkit +#: model:ir.actions.act_window,name:report_webkit.wizard_ofdo_report_actions +#: view:report.webkit.actions:0 +msgid "Add Print Buttons" +msgstr "" + +#. module: report_webkit +#: selection:ir.header_webkit,format:0 +msgid "Comm10E 25 105 x 241 mm, U.S. Common 10 Envelope" +msgstr "" + +#. module: report_webkit +#: field:ir.header_webkit,margin_left:0 +msgid "Left Margin (mm)" +msgstr "" + +#. module: report_webkit +#: code:addons/report_webkit/webkit_report.py:228 +#, python-format +msgid "Error!" +msgstr "" + +#. module: report_webkit +#: help:ir.header_webkit,footer_html:0 +msgid "Set Webkit Report Footer." +msgstr "" + +#. module: report_webkit +#: selection:ir.header_webkit,format:0 +msgid "B9 23 33 x 62 mm" +msgstr "" + +#. module: report_webkit +#: model:ir.model,name:report_webkit.model_ir_actions_report_xml +msgid "ir.actions.report.xml" +msgstr "" + +#. module: report_webkit +#: code:addons/report_webkit/webkit_report.py:174 +#, python-format +msgid "The following diagnosis message was provided:\n" +msgstr "" + +#. module: report_webkit +#: view:ir.header_webkit:0 +msgid "HTML Header" +msgstr "" diff --git a/addons/resource/resource.py b/addons/resource/resource.py index 727ca93d7c9..73a6e2a3ec8 100644 --- a/addons/resource/resource.py +++ b/addons/resource/resource.py @@ -19,7 +19,9 @@ # ############################################################################## +import pytz from datetime import datetime, timedelta +from dateutil import rrule import math from faces import * from openerp.osv import fields, osv @@ -212,45 +214,108 @@ class resource_calendar(osv.osv): @return : Total number of working hours based dt_from and dt_end and resource if supplied. """ - if not id: - return 0.0 - dt_leave = self._get_leaves(cr, uid, id, resource) - hours = 0.0 - - current_hour = dt_from.hour - - while (dt_from <= dt_to): - cr.execute("select hour_from,hour_to from resource_calendar_attendance where dayofweek='%s' and calendar_id=%s order by hour_from", (dt_from.weekday(),id)) - der = cr.fetchall() - for (hour_from,hour_to) in der: - if hours != 0.0:#For first time of the loop only,hours will be 0 - current_hour = hour_from - leave_flag = False - if (hour_to>=current_hour): - dt_check = dt_from.strftime('%Y-%m-%d') - for leave in dt_leave: - if dt_check == leave: - dt_check = datetime.strptime(dt_check, "%Y-%m-%d") + timedelta(days=1) - leave_flag = True - - if leave_flag: - break - else: - d1 = dt_from - d2 = datetime(dt_from.year, dt_from.month, dt_from.day, int(math.floor(hour_to)), int((hour_to%1) * 60)) + return self._interval_hours_get(cr, uid, id, dt_from, dt_to, resource_id=resource) - if hours != 0.0:#For first time of the loop only,hours will be 0 - d1 = datetime(dt_from.year, dt_from.month, dt_from.day, int(math.floor(current_hour)), int((current_hour%1) * 60)) - - if dt_from.day == dt_to.day: - if hour_from <= dt_to.hour <= hour_to: - d2 = dt_to - dt_from = d2 - hours += (d2-d1).seconds - dt_from = datetime(dt_from.year, dt_from.month, dt_from.day, int(math.floor(current_hour)), int((current_hour%1) * 60)) + timedelta(days=1) - current_hour = 0.0 + def _interval_hours_get(self, cr, uid, id, dt_from, dt_to, resource_id=False, timezone_from_uid=None, exclude_leaves=True, context=None): + """ Calculates the Total Working hours based on given start_date to + end_date, If resource id is supplied that it will consider the source + leaves also in calculating the hours. - return (hours/3600) + @param dt_from : date start to calculate hours + @param dt_end : date end to calculate hours + @param resource_id: optional resource id, If given resource leave will be + considered. + @param timezone_from_uid: optional uid, if given we will considerer + working hours in that user timezone + @param exclude_leaves: optionnal, if set to True (default) we will exclude + resource leaves from working hours + @param context: current request context + @return : Total number of working hours based dt_from and dt_end and + resource if supplied. + """ + utc_tz = pytz.timezone('UTC') + local_tz = utc_tz + + if timezone_from_uid: + users_obj = self.pool.get('res.users') + user_timezone = users_obj.browse(cr, uid, timezone_from_uid, context=context).partner_id.tz + if user_timezone: + try: + local_tz = pytz.timezone(user_timezone) + except pytz.UnknownTimeZoneError: + pass # fallback to UTC as local timezone + + def utc_to_local_zone(naive_datetime): + utc_dt = utc_tz.localize(naive_datetime, is_dst=False) + return utc_dt.astimezone(local_tz) + + def float_time_convert(float_val): + factor = float_val < 0 and -1 or 1 + val = abs(float_val) + return (factor * int(math.floor(val)), int(round((val % 1) * 60))) + + # Get slots hours per day + # {day_of_week: [(8, 12), (13, 17), ...], ...} + hours_range_per_weekday = {} + if id: + cr.execute("select dayofweek, hour_from,hour_to from resource_calendar_attendance where calendar_id=%s order by hour_from", (id,)) + for weekday, hour_from, hour_to in cr.fetchall(): + weekday = int(weekday) + hours_range_per_weekday.setdefault(weekday, []) + hours_range_per_weekday[weekday].append((hour_from, hour_to)) + else: + # considering default working hours (Monday -> Friday, 8 -> 12, 13 -> 17) + for weekday in range(5): + hours_range_per_weekday[weekday] = [(8, 12), (13, 17)] + + ## Interval between dt_from - dt_to + ## + ## dt_from dt_to + ## =============|==================|============ + ## [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] + ## + ## [ : start of range + ## ] : end of range + ## + ## case 1: range end before interval start (skip) + ## case 2: range overlap interval start (fit start to internal) + ## case 3: range within interval + ## case 4: range overlap interval end (fit end to interval) + ## case 5: range start after interval end (skip) + + interval_start = utc_to_local_zone(dt_from) + interval_end = utc_to_local_zone(dt_to) + hours_timedelta = timedelta() + + # Get leaves for requested resource + dt_leaves = set([]) + if exclude_leaves and id: + dt_leaves = set(self._get_leaves(cr, uid, id, resource=resource_id)) + + for day in rrule.rrule(rrule.DAILY, dtstart=interval_start, + until=interval_end+timedelta(days=1), + byweekday=hours_range_per_weekday.keys()): + if exclude_leaves and day.strftime('%Y-%m-%d') in dt_leaves: + # XXX: futher improve leave management to allow for partial day leave + continue + for (range_from, range_to) in hours_range_per_weekday.get(day.weekday(), []): + range_from_hour, range_from_min = float_time_convert(range_from) + range_to_hour, range_to_min = float_time_convert(range_to) + daytime_start = local_tz.localize(day.replace(hour=range_from_hour, minute=range_from_min, second=0, tzinfo=None)) + daytime_end = local_tz.localize(day.replace(hour=range_to_hour, minute=range_to_min, second=0, tzinfo=None)) + + # case 1 & 5: time range out of interval + if daytime_end < interval_start or daytime_start > interval_end: + continue + # case 2 & 4: adjust start, end to fit within interval + daytime_start = max(daytime_start, interval_start) + daytime_end = min(daytime_end, interval_end) + + # case 2+, 4+, 3 + hours_timedelta += (daytime_end - daytime_start) + + # return timedelta converted to hours + return (hours_timedelta.days * 24.0 + hours_timedelta.seconds / 3600.0) resource_calendar() diff --git a/addons/resource/test/resource.yml b/addons/resource/test/resource.yml index 5b7fa108101..28604518b7b 100644 --- a/addons/resource/test/resource.yml +++ b/addons/resource/test/resource.yml @@ -40,12 +40,13 @@ I check Actual working hours on resource 'Developer' from this week - !python {model: resource.calendar}: | - from datetime import datetime, timedelta + from datetime import datetime + from dateutil.relativedelta import relativedelta now = datetime.now() - dt_from = now - timedelta(days=now.weekday()) - dt_to = dt_from+ timedelta(days=6) + dt_from = now - relativedelta(days=now.weekday(), hour=8, minute=30) + dt_to = dt_from + relativedelta(days=6, hour=17) hours = self.interval_hours_get(cr, uid, ref('timesheet_group1'), dt_from, dt_to, resource=ref('resource_developer')) - assert hours > 27 , 'Invalid Total Week working hour calculated' + assert hours > 27 , 'Invalid Total Week working hour calculated, got %r, expected > 27' % hours - Project Analysis work is of 20 hours which will start from Week start so i will calculate working schedule for resource Analyst for the same. - diff --git a/addons/sale/res_config.py b/addons/sale/res_config.py index 6548591da1e..ec2307ca983 100644 --- a/addons/sale/res_config.py +++ b/addons/sale/res_config.py @@ -143,6 +143,8 @@ class account_config_settings(osv.osv_memory): def onchange_sale_analytic_plans(self, cr, uid, ids, module_sale_analytic_plans, context=None): """ change group_analytic_account_for_sales following module_sale_analytic_plans """ + if not module_sale_analytic_plans: + return {} return {'value': {'group_analytic_account_for_sales': module_sale_analytic_plans}} # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/sale/sale.py b/addons/sale/sale.py index 5ee22f3c569..d1b4236cd4e 100644 --- a/addons/sale/sale.py +++ b/addons/sale/sale.py @@ -543,6 +543,9 @@ class sale_order(osv.osv): invoice_ref += o.name + '|' self.write(cr, uid, [o.id], {'state': 'progress'}) cr.execute('insert into sale_order_invoice_rel (order_id,invoice_id) values (%s,%s)', (o.id, res)) + #remove last '|' in invoice_ref + if len(invoice_ref) >= 1: + invoice_ref = invoice_ref[:-1] invoice.write(cr, uid, [res], {'origin': invoice_ref, 'name': invoice_ref}) else: for order, il in val: diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml index e3a393666b4..9a4866d14f1 100644 --- a/addons/sale/sale_view.xml +++ b/addons/sale/sale_view.xml @@ -328,19 +328,24 @@ <field name="view_type">form</field> <field name="view_mode">tree,form,calendar,graph</field> <field name="search_view_id" ref="view_sales_order_filter"/> - <field name="context">{'show_address': 1}</field> - <field name="domain">[('state','not in',('draft','sent','cancel'))]</field> + <field name="context">{ + 'show_address': 1, + 'search_default_my_sale_orders_filter': 1 + } + </field> + <field name="domain">[('state', 'not in', ('draft', 'sent', 'cancel'))]</field> <field name="help" type="html"> - <p class="oe_view_nocontent_create"> - Click to create a quotation that can be converted into a sales - order. - </p><p> - OpenERP will help you efficiently handle the complete sales flow: - quotation, sales order, delivery, invoicing and payment. - </p> + <p class="oe_view_nocontent_create"> + Click to create a quotation that can be converted into a sales + order. + </p><p> + OpenERP will help you efficiently handle the complete sales flow: + quotation, sales order, delivery, invoicing and payment. + </p> </field> </record> - <menuitem action="action_orders" id="menu_sale_order" parent="base.menu_sales" sequence="5" groups="base.group_sale_salesman,base.group_sale_manager"/> + + <menuitem action="action_orders" id="menu_sale_order" parent="base.menu_sales" sequence="6" groups="base.group_sale_salesman,base.group_sale_manager"/> <record id="action_orders_exception" model="ir.actions.act_window"> <field name="name">Sales in Exception</field> @@ -371,7 +376,7 @@ <field name="view_type">form</field> <field name="view_id" ref="view_quotation_tree"/> <field name="view_mode">tree,form,calendar,graph</field> - <field name="context">{'show_address': 1}</field> + <field name="context">{'show_address': 1, 'search_default_my_sale_orders_filter': 1}</field> <field name="domain">[('state','in',('draft','sent','cancel'))]</field> <field name="search_view_id" ref="view_sales_order_filter"/> <field name="help" type="html"> @@ -390,8 +395,8 @@ </record> <menuitem id="menu_sale_quotations" - action="action_quotations" parent="base.menu_sales" - sequence="4"/> + action="action_quotations" parent="base.menu_sales" + sequence="5"/> <record id="action_order_tree" model="ir.actions.act_window"> <field name="name">Old Quotations</field> diff --git a/addons/sale/wizard/sale_line_invoice.py b/addons/sale/wizard/sale_line_invoice.py index 8bb52b12c1e..656e21a2963 100644 --- a/addons/sale/wizard/sale_line_invoice.py +++ b/addons/sale/wizard/sale_line_invoice.py @@ -25,6 +25,7 @@ from openerp.tools.translate import _ class sale_order_line_make_invoice(osv.osv_memory): _name = "sale.order.line.make.invoice" _description = "Sale OrderLine Make_invoice" + def make_invoices(self, cr, uid, ids, context=None): """ To make invoices. @@ -81,34 +82,30 @@ class sale_order_line_make_invoice(osv.osv_memory): sales_order_obj = self.pool.get('sale.order') for line in sales_order_line_obj.browse(cr, uid, context.get('active_ids', []), context=context): if (not line.invoiced) and (line.state not in ('draft', 'cancel')): - if not line.order_id.id in invoices: - invoices[line.order_id.id] = [] - line_id = sales_order_line_obj.invoice_line_create(cr, uid, - [line.id]) + if not line.order_id in invoices: + invoices[line.order_id] = [] + line_id = sales_order_line_obj.invoice_line_create(cr, uid, [line.id]) for lid in line_id: - invoices[line.order_id.id].append((line, lid)) - for result in invoices.values(): - order = result[0][0].order_id - il = map(lambda x: x[1], result) + invoices[line.order_id].append(lid) + for order, il in invoices.items(): res = make_invoice(order, il) cr.execute('INSERT INTO sale_order_invoice_rel \ (order_id,invoice_id) values (%s,%s)', (order.id, res)) - flag = True - data_sale = sales_order_obj.browse(cr, uid, line.order_id.id, context=context) sales_order_obj.message_post(cr, uid, [order.id], body=_("Invoice created"), context=context) + data_sale = sales_order_obj.browse(cr, uid, order.id, context=context) for line in data_sale.order_line: if not line.invoiced: flag = False break if flag: - sales_order_obj.signal_manual_invoice(cr, uid, [line.order_id.id]) - sales_order_obj.write(cr, uid, [line.order_id.id], {'state': 'progress'}) + wf_service.trg_validate(uid, 'sale.order', order.id, 'manual_invoice', cr) + sales_order_obj.write(cr, uid, [order.id], {'state': 'progress'}) if not invoices: raise osv.except_osv(_('Warning!'), _('Invoice cannot be created for this Sales Order Line due to one of the following reasons:\n1.The state of this sales order line is either "draft" or "cancel"!\n2.The Sales Order Line is Invoiced!')) if context.get('open_invoices', False): - return self.open_invoices( cr, uid, ids, res, context=context) + return self.open_invoices(cr, uid, ids, res, context=context) return {'type': 'ir.actions.act_window_close'} def open_invoices(self, cr, uid, ids, invoice_ids, context=None): @@ -118,7 +115,7 @@ class sale_order_line_make_invoice(osv.osv_memory): form_id = form_res and form_res[1] or False tree_res = ir_model_data.get_object_reference(cr, uid, 'account', 'invoice_tree') tree_id = tree_res and tree_res[1] or False - + return { 'name': _('Invoice'), 'view_type': 'form', diff --git a/addons/sale/wizard/sale_make_invoice.py b/addons/sale/wizard/sale_make_invoice.py index 0898dad21b1..47716018caa 100644 --- a/addons/sale/wizard/sale_make_invoice.py +++ b/addons/sale/wizard/sale_make_invoice.py @@ -39,7 +39,7 @@ class sale_make_invoice(osv.osv_memory): record_id = context and context.get('active_id', False) order = self.pool.get('sale.order').browse(cr, uid, record_id, context=context) if order.state == 'draft': - raise osv.except_osv(_('Warning!'),'You cannot create invoice when sales order is not confirmed.') + raise osv.except_osv(_('Warning!'), _('You cannot create invoice when sales order is not confirmed.')) return False def make_invoices(self, cr, uid, ids, context=None): @@ -50,8 +50,11 @@ class sale_make_invoice(osv.osv_memory): if context is None: context = {} data = self.read(cr, uid, ids)[0] - order_obj.action_invoice_create(cr, uid, context.get(('active_ids'), []), data['grouped'], date_invoice = data['invoice_date']) - order_obj.signal_manual_invoice(cr, uid, context.get(('active_ids'), [])) + for sale_order in order_obj.browse(cr, uid, context.get(('active_ids'), []), context=context): + if sale_order.state != 'manual': + raise osv.except_osv(_('Warning!'), _("You shouldn't manually invoice the following sale order %s") % (sale_order.name)) + + order_obj.action_invoice_create(cr, uid, context.get(('active_ids'), []), data['grouped'], date_invoice=data['invoice_date']) for o in order_obj.browse(cr, uid, context.get(('active_ids'), []), context=context): for i in o.invoice_ids: @@ -60,7 +63,7 @@ class sale_make_invoice(osv.osv_memory): result = mod_obj.get_object_reference(cr, uid, 'account', 'action_invoice_tree1') id = result and result[1] or False result = act_obj.read(cr, uid, [id], context=context)[0] - result['domain'] = "[('id','in', ["+','.join(map(str,newinv))+"])]" + result['domain'] = "[('id','in', [" + ','.join(map(str, newinv)) + "])]" return result diff --git a/addons/sale/wizard/sale_make_invoice.xml b/addons/sale/wizard/sale_make_invoice.xml index ced64a0f79d..de680feb049 100644 --- a/addons/sale/wizard/sale_make_invoice.xml +++ b/addons/sale/wizard/sale_make_invoice.xml @@ -6,16 +6,16 @@ <field name="model">sale.make.invoice</field> <field name="arch" type="xml"> <form string="Create invoices" version="7.0"> - <header> - <button name="make_invoices" string="Create Invoices" type="object" class="oe_highlight" /> - or - <button string="Cancel" class="oe_link" special="cancel" /> - </header> <separator colspan="4" string="Do you really want to create the invoice(s)?" /> <group> <field name="grouped"/> <field name="invoice_date"/> </group> + <footer> + <button name="make_invoices" string="Create Invoices" type="object" class="oe_highlight"/> + or + <button string="Cancel" class="oe_link" special="cancel" /> + </footer> </form> </field> </record> diff --git a/addons/sale_crm/report/sale_crm_account_invoice_report_view.xml b/addons/sale_crm/report/sale_crm_account_invoice_report_view.xml index 41166d56713..983701d9690 100644 --- a/addons/sale_crm/report/sale_crm_account_invoice_report_view.xml +++ b/addons/sale_crm/report/sale_crm_account_invoice_report_view.xml @@ -10,7 +10,7 @@ <field name="arch" type="xml"> <data> <xpath expr="//field[@name='date']" position="after"> - <field name="section_id"/> + <field name="section_id" groups="base.group_multi_salesteams"/> </xpath> </data> </field> diff --git a/addons/sale_crm/sale_crm.py b/addons/sale_crm/sale_crm.py index 1f3f85d5ed1..3177aec4c5f 100644 --- a/addons/sale_crm/sale_crm.py +++ b/addons/sale_crm/sale_crm.py @@ -19,8 +19,10 @@ # ############################################################################## +from datetime import datetime from openerp.osv import osv, fields + class sale_order(osv.osv): _inherit = 'sale.order' _columns = { @@ -30,19 +32,49 @@ class sale_order(osv.osv): } +class crm_case_section(osv.osv): + _inherit = 'crm.case.section' + + def _get_sum_month_invoice(self, cr, uid, ids, field_name, arg, context=None): + res = dict.fromkeys(ids, 0) + obj = self.pool.get('account.invoice.report') + when = datetime.today() + for section_id in ids: + invoice_ids = obj.search(cr, uid, [("section_id", "=", section_id), ('state', 'not in', ['draft', 'cancel']), ('year', '=', when.year), ('month', '=', when.month > 9 and when.month or "0%s" % when.month)], context=context) + for invoice in obj.browse(cr, uid, invoice_ids, context=context): + res[section_id] += invoice.price_total + return res + + _columns = { + 'quotation_ids': fields.one2many('sale.order', 'section_id', + string='Quotations', readonly=True, + domain=[('state', 'in', ['draft', 'sent', 'cancel'])]), + 'sale_order_ids': fields.one2many('sale.order', 'section_id', + string='Sale Orders', readonly=True, + domain=[('state', 'not in', ['draft', 'sent', 'cancel'])]), + 'invoice_ids': fields.one2many('account.invoice', 'section_id', + string='Invoices', readonly=True, + domain=[('state', 'not in', ['draft', 'cancel'])]), + 'sum_month_invoice': fields.function(_get_sum_month_invoice, + string='Total invoiced this month', + type='integer', readonly=True), + } + + class res_users(osv.Model): _inherit = 'res.users' _columns = { 'default_section_id': fields.many2one('crm.case.section', 'Default Sales Team'), } + class account_invoice(osv.osv): _inherit = 'account.invoice' _columns = { 'section_id': fields.many2one('crm.case.section', 'Sales Team'), } _defaults = { - 'section_id': lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).default_section_id.id or False, + 'section_id': lambda self, cr, uid, c=None: self.pool.get('res.users').browse(cr, uid, uid, c).default_section_id.id or False, } # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/sale_crm/sale_crm_view.xml b/addons/sale_crm/sale_crm_view.xml index 0b5fce2f5cd..f8b4228334e 100644 --- a/addons/sale_crm/sale_crm_view.xml +++ b/addons/sale_crm/sale_crm_view.xml @@ -22,7 +22,7 @@ <field name="inherit_id" ref="sale.view_order_form"/> <field name="arch" type="xml"> <field name="user_id" position="after"> - <field name="section_id" widget="selection"/> + <field name="section_id" widget="selection" groups="base.group_multi_salesteams"/> <field name="categ_ids" widget="many2many_tags"/> </field> </field> @@ -41,7 +41,7 @@ help="My Sales Team(s)"/> </xpath> <xpath expr="//field[@name='user_id']" position="after"> - <field name="section_id" string="Sales Team"/> + <field name="section_id" string="Sales Team" groups="base.group_multi_salesteams"/> </xpath> </field> </record> @@ -53,18 +53,22 @@ <field name="inherit_id" ref="account.invoice_tree"/> <field name="arch" type="xml"> <data> - <xpath expr="//field[@name='date_invoice']" position="after"> - <field name="section_id" invisible="1"/> + <xpath expr="//field[@name='user_id']" position="after"> + <field name="section_id" string="Sales Team" groups="base.group_multi_salesteams"/> </xpath> </data> </field> </record> + <!-- Update account invoice search view!--> <record id="account_invoice_groupby_inherit" model="ir.ui.view"> <field name="name">account.invoice.groupby</field> <field name="model">account.invoice</field> <field name="inherit_id" ref="account.view_account_invoice_filter"/> <field name="arch" type="xml"> + <xpath expr="//field[@name='user_id']" position="after"> + <field name="section_id"/> + </xpath> <xpath expr="//group/filter[@string='Due Date']" position="after"> <filter string="Sales Team" domain="[]" context="{'group_by':'section_id'}"/> </xpath> @@ -79,7 +83,7 @@ <field name="arch" type="xml"> <data> <xpath expr="//field[@name='user_id']" position="after"> - <field name="section_id"/> + <field name="section_id" groups="base.group_multi_salesteams"/> </xpath> </data> </field> @@ -113,5 +117,132 @@ </field> </record> + <!-- search by Salesteams --> + + <record id="action_orders_salesteams" model="ir.actions.act_window"> + <field name="name">Sales Orders</field> + <field name="type">ir.actions.act_window</field> + <field name="res_model">sale.order</field> + <field name="view_type">form</field> + <field name="view_mode">tree,form,calendar,graph</field> + <field name="search_view_id" ref="sale.view_sales_order_filter"/> + <field name="domain">[('state','not in',('draft','sent','cancel'))]</field> + <field name="context">{ + 'search_default_section_id': [active_id], + 'default_section_id': active_id, + 'search_default_my_sale_orders_filter': 1, + } + </field> + <field name="help" type="html"> + <p class="oe_view_nocontent_create"> + Click to create a quotation that can be converted into a sales + order. + </p><p> + OpenERP will help you efficiently handle the complete sales flow: + quotation, sales order, delivery, invoicing and payment. + </p> + </field> + </record> + + <record id="action_quotations_salesteams" model="ir.actions.act_window"> + <field name="name">Quotations</field> + <field name="type">ir.actions.act_window</field> + <field name="res_model">sale.order</field> + <field name="view_type">form</field> + <field name="view_id" ref="sale.view_quotation_tree"/> + <field name="view_mode">tree,form,calendar,graph</field> + <field name="context">{ + 'search_default_section_id': [active_id], + 'default_section_id': active_id, 'show_address': 1, + 'search_default_my_sale_orders_filter': 1 + } + </field> + <field name="domain">[('state','in',('draft','sent','cancel'))]</field> + <field name="search_view_id" ref="sale.view_sales_order_filter"/> + <field name="help" type="html"> + <p class="oe_view_nocontent_create"> + Click to create a quotation, the first step of a new sale. + </p><p> + OpenERP will help you handle efficiently the complete sale flow: + from the quotation to the sales order, the + delivery, the invoicing and the payment collection. + </p><p> + The social feature helps you organize discussions on each sales + order, and allow your customers to keep track of the evolution + of the sales order. + </p> + </field> + </record> + + <record id="action_invoice_salesteams" model="ir.actions.act_window"> + <field name="name">Invoices</field> + <field name="res_model">account.invoice</field> + <field name="view_type">form</field> + <field name="view_mode">tree,form,calendar,graph</field> + <field name="view_id" ref="account.invoice_tree"/> + <field name="domain">[ + ('state', 'not in', ['draft', 'cancel']), + ('type', '=', 'out_invoice')]</field> + <field name="context">{ + 'search_default_section_id': [active_id], + 'default_section_id': active_id}, + 'default_type':'out_invoice', + 'type':'out_invoice', + 'journal_type': 'sale', + } + </field> + <field name="search_view_id" ref="account.view_account_invoice_filter"/> + </record> + + <record id="action_invoice_salesteams_view_tree" model="ir.actions.act_window.view"> + <field name="sequence">1</field> + <field name="view_mode">tree</field> + <field name="act_window_id" ref="sale_crm.action_invoice_salesteams"/> + </record> + + <record id="action_invoice_salesteams_view_form" model="ir.actions.act_window.view"> + <field name="sequence">2</field> + <field name="view_mode">form</field> + <field name="view_id" ref="account.invoice_form"/> + <field name="act_window_id" ref="sale_crm.action_invoice_salesteams"/> + </record> + + <record id="crm_case_section_salesteams_view_kanban" model="ir.ui.view"> + <field name="name">crm.case.section.kanban</field> + <field name="model">crm.case.section</field> + <field name="inherit_id" ref="crm.crm_case_section_salesteams_view_kanban"/> + <field name="arch" type="xml"> + <data> + <xpath expr="//field[@name='open_opportunity_ids']" position="after"> + <field name="quotation_ids"/> + <field name="sale_order_ids"/> + <field name="invoice_ids"/> + </xpath> + <xpath expr="//div[@class='oe_items_list']" position="inside"> + <a name="%(action_quotations_salesteams)d" type="action"> + <t t-raw="record.quotation_ids.raw_value.length"/> + <t t-if="record.quotation_ids.raw_value.length >= 2">Quotations</t> + <t t-if="record.quotation_ids.raw_value.length < 2">Quotation</t> + </a> + <a name="%(action_orders_salesteams)d" type="action"> + <t t-raw="record.sale_order_ids.raw_value.length"/> + <t t-if="record.sale_order_ids.raw_value.length >= 2">Sales Orders</t> + <t t-if="record.sale_order_ids.raw_value.length < 2">Sales Order</t> + </a> + <a name="%(action_invoice_salesteams)d" type="action" groups="account.group_account_invoice"> + <t t-raw="record.invoice_ids.raw_value.length"/> + <t t-if="record.invoice_ids.raw_value.length >= 2">Invoices</t> + <t t-if="record.invoice_ids.raw_value.length < 2">Invoice</t> + </a> + </xpath> + <xpath expr="//div[@class='oe_items_list']" position="after"> + <div class="oe_center"> + <div class="oe_sum"><field name="sum_month_invoice"/></div> + <div class="oe_subsum">Invoiced this month</div> + </div> + </xpath> + </data> + </field> + </record> </data> </openerp> diff --git a/addons/sale_margin/i18n/cs.po b/addons/sale_margin/i18n/cs.po new file mode 100644 index 00000000000..dd01e0973bc --- /dev/null +++ b/addons/sale_margin/i18n/cs.po @@ -0,0 +1,46 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:06+0000\n" +"PO-Revision-Date: 2013-03-30 12:41+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-03-31 05:27+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: sale_margin +#: field:sale.order.line,purchase_price:0 +msgid "Cost Price" +msgstr "" + +#. module: sale_margin +#: model:ir.model,name:sale_margin.model_sale_order +msgid "Sales Order" +msgstr "" + +#. module: sale_margin +#: field:sale.order,margin:0 +#: field:sale.order.line,margin:0 +msgid "Margin" +msgstr "" + +#. module: sale_margin +#: model:ir.model,name:sale_margin.model_sale_order_line +msgid "Sales Order Line" +msgstr "" + +#. module: sale_margin +#: help:sale.order,margin:0 +msgid "" +"It gives profitability by calculating the difference between the Unit Price " +"and the cost price." +msgstr "" diff --git a/addons/sale_mrp/i18n/cs.po b/addons/sale_mrp/i18n/cs.po new file mode 100644 index 00000000000..78ae9292dbd --- /dev/null +++ b/addons/sale_mrp/i18n/cs.po @@ -0,0 +1,43 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:06+0000\n" +"PO-Revision-Date: 2013-03-30 12:41+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-03-31 05:27+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: sale_mrp +#: model:ir.model,name:sale_mrp.model_mrp_production +msgid "Manufacturing Order" +msgstr "" + +#. module: sale_mrp +#: help:mrp.production,sale_name:0 +msgid "Indicate the name of sales order." +msgstr "" + +#. module: sale_mrp +#: help:mrp.production,sale_ref:0 +msgid "Indicate the Customer Reference from sales order." +msgstr "" + +#. module: sale_mrp +#: field:mrp.production,sale_ref:0 +msgid "Sale Reference" +msgstr "" + +#. module: sale_mrp +#: field:mrp.production,sale_name:0 +msgid "Sale Name" +msgstr "" diff --git a/addons/sale_order_dates/i18n/cs.po b/addons/sale_order_dates/i18n/cs.po new file mode 100644 index 00000000000..a1583d48efe --- /dev/null +++ b/addons/sale_order_dates/i18n/cs.po @@ -0,0 +1,58 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:06+0000\n" +"PO-Revision-Date: 2013-03-30 12:41+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-03-31 05:27+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: sale_order_dates +#: view:sale.order:0 +msgid "Dates" +msgstr "" + +#. module: sale_order_dates +#: field:sale.order,commitment_date:0 +msgid "Commitment Date" +msgstr "" + +#. module: sale_order_dates +#: field:sale.order,effective_date:0 +msgid "Effective Date" +msgstr "" + +#. module: sale_order_dates +#: help:sale.order,effective_date:0 +msgid "Date on which picking is created." +msgstr "" + +#. module: sale_order_dates +#: help:sale.order,requested_date:0 +msgid "Date requested by the customer for the sale." +msgstr "" + +#. module: sale_order_dates +#: field:sale.order,requested_date:0 +msgid "Requested Date" +msgstr "" + +#. module: sale_order_dates +#: model:ir.model,name:sale_order_dates.model_sale_order +msgid "Sales Order" +msgstr "" + +#. module: sale_order_dates +#: help:sale.order,commitment_date:0 +msgid "Committed date for delivery." +msgstr "" diff --git a/addons/stock/wizard/stock_traceability.py b/addons/stock/wizard/stock_traceability.py index 123a76acd43..8d5fd1ed10d 100644 --- a/addons/stock/wizard/stock_traceability.py +++ b/addons/stock/wizard/stock_traceability.py @@ -53,6 +53,7 @@ class action_traceability(osv.osv_memory): 'domain': "[('id','in',["+','.join(map(str, ids))+"])]", 'name': ((type1=='move_history_ids2') and _('Upstream Traceability')) or _('Downstream Traceability'), 'view_mode': 'tree', + 'view_type': 'tree', 'res_model': 'stock.move', 'field_parent': type1, 'view_id': (view_id,'View'), diff --git a/addons/web_linkedin/i18n/cs.po b/addons/web_linkedin/i18n/cs.po new file mode 100644 index 00000000000..6057606cdf4 --- /dev/null +++ b/addons/web_linkedin/i18n/cs.po @@ -0,0 +1,137 @@ +# Czech translation for openobject-addons +# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013 +# This file is distributed under the same license as the openobject-addons package. +# FIRST AUTHOR <EMAIL@ADDRESS>, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: openobject-addons\n" +"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" +"POT-Creation-Date: 2012-12-21 17:06+0000\n" +"PO-Revision-Date: 2013-03-30 21:01+0000\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: Czech <cs@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Launchpad-Export-Date: 2013-03-31 05:28+0000\n" +"X-Generator: Launchpad (build 16546)\n" + +#. module: web_linkedin +#: view:sale.config.settings:0 +msgid "here:" +msgstr "" + +#. module: web_linkedin +#: field:sale.config.settings,api_key:0 +msgid "API Key" +msgstr "" + +#. module: web_linkedin +#. openerp-web +#: code:addons/web_linkedin/static/src/js/linkedin.js:249 +#, python-format +msgid "No results found" +msgstr "" + +#. module: web_linkedin +#. openerp-web +#: code:addons/web_linkedin/static/src/js/linkedin.js:84 +#, python-format +msgid "Ok" +msgstr "" + +#. module: web_linkedin +#: view:sale.config.settings:0 +msgid "Log into LinkedIn." +msgstr "" + +#. module: web_linkedin +#. openerp-web +#: code:addons/web_linkedin/static/src/xml/linkedin.xml:13 +#, python-format +msgid "People" +msgstr "" + +#. module: web_linkedin +#: model:ir.model,name:web_linkedin.model_sale_config_settings +msgid "sale.config.settings" +msgstr "" + +#. module: web_linkedin +#: field:sale.config.settings,server_domain:0 +msgid "unknown" +msgstr "" + +#. module: web_linkedin +#: view:sale.config.settings:0 +msgid "https://www.linkedin.com/secure/developer" +msgstr "" + +#. module: web_linkedin +#. openerp-web +#: code:addons/web_linkedin/static/src/xml/linkedin.xml:15 +#, python-format +msgid "Companies" +msgstr "" + +#. module: web_linkedin +#: view:sale.config.settings:0 +msgid "API key" +msgstr "" + +#. module: web_linkedin +#: view:sale.config.settings:0 +msgid "Copy the" +msgstr "" + +#. module: web_linkedin +#. openerp-web +#: code:addons/web_linkedin/static/src/js/linkedin.js:181 +#, python-format +msgid "LinkedIn search" +msgstr "" + +#. module: web_linkedin +#. openerp-web +#: code:addons/web_linkedin/static/src/xml/linkedin.xml:31 +#, python-format +msgid "" +"LinkedIn access was not enabled on this server.\n" +" Please ask your administrator to configure it in Settings > " +"Configuration > Sales > Social Network Integration." +msgstr "" + +#. module: web_linkedin +#: view:sale.config.settings:0 +msgid "" +"To use the LinkedIn module with this database, an API Key is required. " +"Please follow this procedure:" +msgstr "" + +#. module: web_linkedin +#. openerp-web +#: code:addons/web_linkedin/static/src/js/linkedin.js:82 +#, python-format +msgid "LinkedIn is not enabled" +msgstr "" + +#. module: web_linkedin +#: view:sale.config.settings:0 +msgid "Add a new application and fill the form:" +msgstr "" + +#. module: web_linkedin +#: view:sale.config.settings:0 +msgid "Go to this URL:" +msgstr "" + +#. module: web_linkedin +#: view:sale.config.settings:0 +msgid "The programming tool is Javascript" +msgstr "" + +#. module: web_linkedin +#: view:sale.config.settings:0 +msgid "JavaScript API Domain:" +msgstr "" |
