[Merge] Merge with main branch.
bzr revid: mdi@tinyerp.com-20120601094937-575f84vxwljlgkpv bzr revid: mdi@tinyerp.com-20120601123900-0ozu8nlq02upa8xb bzr revid: mdi@tinyerp.com-20120601124121-oz0cr3gv4acejs7b
This commit is contained in:
commit
e98eb11510
|
@ -132,8 +132,6 @@
|
||||||
<field name="amount_untaxed" sum="Untaxed Amount"/>
|
<field name="amount_untaxed" sum="Untaxed Amount"/>
|
||||||
<field name="amount_total" sum="Total Amount"/>
|
<field name="amount_total" sum="Total Amount"/>
|
||||||
<field name="state"/>
|
<field name="state"/>
|
||||||
|
|
||||||
<button name="invoice_open" states="draft,proforma2" string="Approve" icon="terp-camera_test"/>
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
|
@ -131,8 +131,6 @@
|
||||||
<field name="special"/>
|
<field name="special"/>
|
||||||
<field name="company_id" groups="base.group_multi_company"/>
|
<field name="company_id" groups="base.group_multi_company"/>
|
||||||
<field name="state"/>
|
<field name="state"/>
|
||||||
<button name="action_draft" states="done" string="Set to Draft" type="object" icon="terp-document-new" groups="account.group_account_manager"/>
|
|
||||||
<button name="%(action_account_period_close)d" states="draft" string="Close Period" type="action" icon="terp-camera_test"/>
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
@ -569,8 +567,6 @@
|
||||||
<field name="balance_end_real"/>
|
<field name="balance_end_real"/>
|
||||||
<field name="balance_end" invisible="1"/>
|
<field name="balance_end" invisible="1"/>
|
||||||
<field name="state"/>
|
<field name="state"/>
|
||||||
<button type="object" string="Cancel" name="button_cancel" states="confirm" icon="gtk-cancel"/>
|
|
||||||
<button type="object" string="Confirm" name="button_confirm_bank" states="draft" icon="terp-camera_test"/>
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
@ -1356,7 +1352,6 @@
|
||||||
<field name="amount" sum="Total Amount"/>
|
<field name="amount" sum="Total Amount"/>
|
||||||
<field name="to_check"/>
|
<field name="to_check"/>
|
||||||
<field name="state"/>
|
<field name="state"/>
|
||||||
<button name="button_validate" states="draft" string="Approve" type="object" icon="terp-camera_test"/>
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
@ -2627,9 +2622,6 @@ action = pool.get('res.config').next(cr, uid, [], context)
|
||||||
<field name="balance_end_real"/>
|
<field name="balance_end_real"/>
|
||||||
<field name="balance_end"/>
|
<field name="balance_end"/>
|
||||||
<field name="state"/>
|
<field name="state"/>
|
||||||
<button type="object" string="Cancel" name="button_cancel" states="confirm" icon="gtk-cancel"/>
|
|
||||||
<button type="object" string="Open" name="button_open" states="draft" icon="terp-camera_test"/>
|
|
||||||
<button type="object" string="Confirm" name="button_confirm_bank" states="open" icon="terp-gtk-go-back-rtl"/>
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
|
@ -8,14 +8,14 @@ msgstr ""
|
||||||
"Project-Id-Version: openobject-addons\n"
|
"Project-Id-Version: openobject-addons\n"
|
||||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"POT-Creation-Date: 2012-02-08 00:35+0000\n"
|
"POT-Creation-Date: 2012-02-08 00:35+0000\n"
|
||||||
"PO-Revision-Date: 2012-05-29 21:49+0000\n"
|
"PO-Revision-Date: 2012-06-01 01:29+0000\n"
|
||||||
"Last-Translator: Akira Hiyama <Unknown>\n"
|
"Last-Translator: Akira Hiyama <Unknown>\n"
|
||||||
"Language-Team: Japanese <ja@li.org>\n"
|
"Language-Team: Japanese <ja@li.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2012-05-30 05:21+0000\n"
|
"X-Launchpad-Export-Date: 2012-06-01 05:33+0000\n"
|
||||||
"X-Generator: Launchpad (build 15316)\n"
|
"X-Generator: Launchpad (build 15342)\n"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: view:account.invoice.report:0
|
#: view:account.invoice.report:0
|
||||||
|
@ -1662,7 +1662,7 @@ msgstr "切り離された仕訳帳順序"
|
||||||
#. module: account
|
#. module: account
|
||||||
#: view:account.invoice:0
|
#: view:account.invoice:0
|
||||||
msgid "Responsible"
|
msgid "Responsible"
|
||||||
msgstr "責任担当"
|
msgstr "担当"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: model:ir.actions.act_window,name:account.action_report_account_type_sales_tree_all
|
#: model:ir.actions.act_window,name:account.action_report_account_type_sales_tree_all
|
||||||
|
@ -1679,7 +1679,7 @@ msgstr "請求書のキャンセル:現在の請求書をキャンセルする
|
||||||
#. module: account
|
#. module: account
|
||||||
#: model:ir.ui.menu,name:account.periodical_processing_invoicing
|
#: model:ir.ui.menu,name:account.periodical_processing_invoicing
|
||||||
msgid "Invoicing"
|
msgid "Invoicing"
|
||||||
msgstr "請求"
|
msgstr "請求中"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: code:addons/account/report/account_partner_balance.py:115
|
#: code:addons/account/report/account_partner_balance.py:115
|
||||||
|
@ -2615,7 +2615,7 @@ msgstr "銀行消し込み"
|
||||||
#. module: account
|
#. module: account
|
||||||
#: report:account.invoice:0
|
#: report:account.invoice:0
|
||||||
msgid "Disc.(%)"
|
msgid "Disc.(%)"
|
||||||
msgstr "ディスク(%)"
|
msgstr "割引(%)"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: report:account.general.ledger:0
|
#: report:account.general.ledger:0
|
||||||
|
@ -4445,7 +4445,7 @@ msgstr ""
|
||||||
#: view:account.tax:0
|
#: view:account.tax:0
|
||||||
#: view:account.tax.template:0
|
#: view:account.tax.template:0
|
||||||
msgid "Keep empty to use the income account"
|
msgid "Keep empty to use the income account"
|
||||||
msgstr "損益勘定を使うためは空のままとして下さい。"
|
msgstr "収益勘定を使うためは空のままとして下さい。"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: code:addons/account/account.py:3299
|
#: code:addons/account/account.py:3299
|
||||||
|
@ -5300,7 +5300,7 @@ msgstr "年度エントリー仕訳帳の末尾"
|
||||||
#: code:addons/account/wizard/account_move_journal.py:63
|
#: code:addons/account/wizard/account_move_journal.py:63
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Configuration Error !"
|
msgid "Configuration Error !"
|
||||||
msgstr "設定エラー。"
|
msgstr "設定エラーです。"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: field:account.payment.term.line,value_amount:0
|
#: field:account.payment.term.line,value_amount:0
|
||||||
|
@ -5592,7 +5592,7 @@ msgstr "買掛金合計"
|
||||||
#: model:account.account.type,name:account.data_account_type_income
|
#: model:account.account.type,name:account.data_account_type_income
|
||||||
#: model:account.financial.report,name:account.account_financial_report_income0
|
#: model:account.financial.report,name:account.account_financial_report_income0
|
||||||
msgid "Income"
|
msgid "Income"
|
||||||
msgstr "収益"
|
msgstr "収入"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: selection:account.bank.statement.line,type:0
|
#: selection:account.bank.statement.line,type:0
|
||||||
|
@ -5888,7 +5888,7 @@ msgstr "サブスクリプション期間中"
|
||||||
#. module: account
|
#. module: account
|
||||||
#: report:account.invoice:0
|
#: report:account.invoice:0
|
||||||
msgid "Fiscal Position Remark :"
|
msgid "Fiscal Position Remark :"
|
||||||
msgstr "会計ポジション注釈:"
|
msgstr "会計ポジションの注釈:"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: view:analytic.entries.report:0
|
#: view:analytic.entries.report:0
|
||||||
|
@ -8156,7 +8156,7 @@ msgstr "一部が支払済の請求書のキャンセルはできません。ま
|
||||||
#. module: account
|
#. module: account
|
||||||
#: field:account.chart.template,property_account_income_categ:0
|
#: field:account.chart.template,property_account_income_categ:0
|
||||||
msgid "Income Category Account"
|
msgid "Income Category Account"
|
||||||
msgstr "収益分類のアカウント"
|
msgstr "収入分類のアカウント"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: field:account.account,adjusted_balance:0
|
#: field:account.account,adjusted_balance:0
|
||||||
|
@ -9454,7 +9454,7 @@ msgstr ""
|
||||||
#. module: account
|
#. module: account
|
||||||
#: view:account.analytic.account:0
|
#: view:account.analytic.account:0
|
||||||
msgid "Pending"
|
msgid "Pending"
|
||||||
msgstr "保留"
|
msgstr "保留中"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: model:process.transition,name:account.process_transition_analyticinvoice0
|
#: model:process.transition,name:account.process_transition_analyticinvoice0
|
||||||
|
|
|
@ -7,14 +7,14 @@ msgstr ""
|
||||||
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
||||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||||
"POT-Creation-Date: 2012-02-08 00:35+0000\n"
|
"POT-Creation-Date: 2012-02-08 00:35+0000\n"
|
||||||
"PO-Revision-Date: 2012-05-10 17:57+0000\n"
|
"PO-Revision-Date: 2012-05-31 15:04+0000\n"
|
||||||
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
|
"Last-Translator: ThinkOpen Solutions <Unknown>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2012-05-11 04:51+0000\n"
|
"X-Launchpad-Export-Date: 2012-06-01 05:33+0000\n"
|
||||||
"X-Generator: Launchpad (build 15225)\n"
|
"X-Generator: Launchpad (build 15342)\n"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: view:account.invoice.report:0
|
#: view:account.invoice.report:0
|
||||||
|
@ -93,7 +93,7 @@ msgstr "Antiguidade de saldos de clientes até hoje."
|
||||||
#. module: account
|
#. module: account
|
||||||
#: model:process.transition,name:account.process_transition_invoiceimport0
|
#: model:process.transition,name:account.process_transition_invoiceimport0
|
||||||
msgid "Import from invoice or payment"
|
msgid "Import from invoice or payment"
|
||||||
msgstr "Importar da fatura ou do pagamento"
|
msgstr "Importar da fatura ou pagamento"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: model:ir.model,name:account.model_wizard_multi_charts_accounts
|
#: model:ir.model,name:account.model_wizard_multi_charts_accounts
|
||||||
|
@ -274,7 +274,7 @@ msgstr ""
|
||||||
#. module: account
|
#. module: account
|
||||||
#: report:account.overdue:0
|
#: report:account.overdue:0
|
||||||
msgid "Sub-Total :"
|
msgid "Sub-Total :"
|
||||||
msgstr "Sub-total :"
|
msgstr "Sub-Total :"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: model:ir.actions.act_window,name:account.action_account_use_model_create_entry
|
#: model:ir.actions.act_window,name:account.action_account_use_model_create_entry
|
||||||
|
@ -404,12 +404,12 @@ msgstr "account.bank.accounts.wizard"
|
||||||
#: field:account.move.line,date_created:0
|
#: field:account.move.line,date_created:0
|
||||||
#: field:account.move.reconcile,create_date:0
|
#: field:account.move.reconcile,create_date:0
|
||||||
msgid "Creation date"
|
msgid "Creation date"
|
||||||
msgstr "Data de criação"
|
msgstr "Data da Criação"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: selection:account.journal,type:0
|
#: selection:account.journal,type:0
|
||||||
msgid "Purchase Refund"
|
msgid "Purchase Refund"
|
||||||
msgstr "Nota de Crédito de Compras"
|
msgstr "Reembolso da Compra"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: selection:account.journal,type:0
|
#: selection:account.journal,type:0
|
||||||
|
@ -686,7 +686,7 @@ msgstr "Fechar periodo"
|
||||||
#. module: account
|
#. module: account
|
||||||
#: model:ir.model,name:account.model_account_common_partner_report
|
#: model:ir.model,name:account.model_account_common_partner_report
|
||||||
msgid "Account Common Partner Report"
|
msgid "Account Common Partner Report"
|
||||||
msgstr "Relatório Comum de Conta de Paceiros"
|
msgstr "Relatório Comum de Conta de Parceiros"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: field:account.fiscalyear.close,period_id:0
|
#: field:account.fiscalyear.close,period_id:0
|
||||||
|
@ -715,7 +715,7 @@ msgstr "Todos os movimentos a conciliar devem ser da mesma empresa."
|
||||||
#: model:ir.actions.act_window,name:account.action_aged_receivable
|
#: model:ir.actions.act_window,name:account.action_aged_receivable
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Receivable Accounts"
|
msgid "Receivable Accounts"
|
||||||
msgstr "Contas a receber"
|
msgstr "Contas a Receber"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: constraint:account.move.line:0
|
#: constraint:account.move.line:0
|
||||||
|
@ -873,6 +873,10 @@ msgid ""
|
||||||
"or Loss you'd realized if those transactions were ended today. Only for "
|
"or Loss you'd realized if those transactions were ended today. Only for "
|
||||||
"accounts having a secondary currency set."
|
"accounts having a secondary currency set."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Ao fazer transações multi-moeda, pode perder ou ganhar alguma quantia devida "
|
||||||
|
"a alterações da taxa de câmbio. Este menu dá uma previsão do ganho ou perda "
|
||||||
|
"que percebeu se essas transações foram terminadas hoje. Somente para contas "
|
||||||
|
"com um conjunto moeda secundária."
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: selection:account.entries.report,month:0
|
#: selection:account.entries.report,month:0
|
||||||
|
@ -881,7 +885,7 @@ msgstr ""
|
||||||
#: selection:report.account.sales,month:0
|
#: selection:report.account.sales,month:0
|
||||||
#: selection:report.account_type.sales,month:0
|
#: selection:report.account_type.sales,month:0
|
||||||
msgid "September"
|
msgid "September"
|
||||||
msgstr "setembro"
|
msgstr "Setembro"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: selection:account.subscription,period_type:0
|
#: selection:account.subscription,period_type:0
|
||||||
|
@ -1000,7 +1004,7 @@ msgstr "Responsabilidade"
|
||||||
#. module: account
|
#. module: account
|
||||||
#: view:account.entries.report:0
|
#: view:account.entries.report:0
|
||||||
msgid "Extended Filters..."
|
msgid "Extended Filters..."
|
||||||
msgstr "Filtros Extendidos..."
|
msgstr "Filtros Avançados..."
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: model:ir.ui.menu,name:account.menu_account_central_journal
|
#: model:ir.ui.menu,name:account.menu_account_central_journal
|
||||||
|
@ -1157,7 +1161,7 @@ msgstr "Em disputa"
|
||||||
#: model:ir.actions.act_window,name:account.action_view_bank_statement_tree
|
#: model:ir.actions.act_window,name:account.action_view_bank_statement_tree
|
||||||
#: model:ir.ui.menu,name:account.journal_cash_move_lines
|
#: model:ir.ui.menu,name:account.journal_cash_move_lines
|
||||||
msgid "Cash Registers"
|
msgid "Cash Registers"
|
||||||
msgstr "Registos de Caixa"
|
msgstr "Caixa Registadora"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: report:account.analytic.account.journal:0
|
#: report:account.analytic.account.journal:0
|
||||||
|
@ -1289,7 +1293,7 @@ msgid ""
|
||||||
"You can not use this general account in this journal, check the tab 'Entry "
|
"You can not use this general account in this journal, check the tab 'Entry "
|
||||||
"Controls' on the related journal !"
|
"Controls' on the related journal !"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Não pode usar esta conta geral nesta diário, verificar 'Controles de "
|
"Não pode usar esta conta geral neste diário, verificar 'Controles de "
|
||||||
"Entrada' do guia do diário relacionado!"
|
"Entrada' do guia do diário relacionado!"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
|
@ -1434,7 +1438,7 @@ msgstr "Saldo de abertura"
|
||||||
#. module: account
|
#. module: account
|
||||||
#: view:account.invoice:0
|
#: view:account.invoice:0
|
||||||
msgid "Reset to Draft"
|
msgid "Reset to Draft"
|
||||||
msgstr "Voltar a rascunho"
|
msgstr "Redefinir para rascunho"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: view:wizard.multi.charts.accounts:0
|
#: view:wizard.multi.charts.accounts:0
|
||||||
|
@ -1518,7 +1522,7 @@ msgstr "Calcular impostos"
|
||||||
#: field:account.chart.template,code_digits:0
|
#: field:account.chart.template,code_digits:0
|
||||||
#: field:wizard.multi.charts.accounts,code_digits:0
|
#: field:wizard.multi.charts.accounts,code_digits:0
|
||||||
msgid "# of Digits"
|
msgid "# of Digits"
|
||||||
msgstr "Nº de dígitos"
|
msgstr "# de Dígitos"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: field:account.journal,entry_posted:0
|
#: field:account.journal,entry_posted:0
|
||||||
|
@ -1529,7 +1533,7 @@ msgstr "Saltar o estado \"Rascunho\" para lançamentos manuais"
|
||||||
#: view:account.invoice.report:0
|
#: view:account.invoice.report:0
|
||||||
#: field:account.invoice.report,price_total:0
|
#: field:account.invoice.report,price_total:0
|
||||||
msgid "Total Without Tax"
|
msgid "Total Without Tax"
|
||||||
msgstr "Total, com taxas"
|
msgstr "Total sem Impostos"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: model:ir.actions.act_window,help:account.action_move_journal_line
|
#: model:ir.actions.act_window,help:account.action_move_journal_line
|
||||||
|
@ -1547,7 +1551,7 @@ msgstr ""
|
||||||
#. module: account
|
#. module: account
|
||||||
#: view:account.entries.report:0
|
#: view:account.entries.report:0
|
||||||
msgid "# of Entries "
|
msgid "# of Entries "
|
||||||
msgstr "Nº. de movimentos "
|
msgstr "# de Entradas "
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: help:account.fiscal.position,active:0
|
#: help:account.fiscal.position,active:0
|
||||||
|
@ -1652,7 +1656,7 @@ msgstr "Conta de imposto para notas de crédito"
|
||||||
#: view:account.bank.statement:0
|
#: view:account.bank.statement:0
|
||||||
#: field:account.bank.statement,line_ids:0
|
#: field:account.bank.statement,line_ids:0
|
||||||
msgid "Statement lines"
|
msgid "Statement lines"
|
||||||
msgstr "Linhas de extrato"
|
msgstr "Linhas do extrato"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: model:ir.actions.act_window,help:account.action_bank_statement_tree
|
#: model:ir.actions.act_window,help:account.action_bank_statement_tree
|
||||||
|
@ -1681,7 +1685,7 @@ msgstr "Data/Código"
|
||||||
#: view:analytic.entries.report:0
|
#: view:analytic.entries.report:0
|
||||||
#: field:analytic.entries.report,general_account_id:0
|
#: field:analytic.entries.report,general_account_id:0
|
||||||
msgid "General Account"
|
msgid "General Account"
|
||||||
msgstr "Contas gerais"
|
msgstr "Conta Geral"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: field:res.partner,debit_limit:0
|
#: field:res.partner,debit_limit:0
|
||||||
|
@ -1730,8 +1734,8 @@ msgid ""
|
||||||
"Cancel Invoice: Creates the refund invoice, validate and reconcile it to "
|
"Cancel Invoice: Creates the refund invoice, validate and reconcile it to "
|
||||||
"cancel the current invoice."
|
"cancel the current invoice."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Anular fatura: Cria uma nota de crédito, valida-a e aloca-a à fatura atual, "
|
"Cancelar fatura: Cria uma nota de crédito, valida-a e aloca-a à fatura "
|
||||||
"Ficando as duas no estado pago."
|
"atual, Ficando as duas no estado pago."
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: model:ir.ui.menu,name:account.periodical_processing_invoicing
|
#: model:ir.ui.menu,name:account.periodical_processing_invoicing
|
||||||
|
@ -1865,7 +1869,7 @@ msgstr "Erro!"
|
||||||
#. module: account
|
#. module: account
|
||||||
#: sql_constraint:account.move.line:0
|
#: sql_constraint:account.move.line:0
|
||||||
msgid "Wrong credit or debit value in accounting entry !"
|
msgid "Wrong credit or debit value in accounting entry !"
|
||||||
msgstr "Valor de crédito ou débito errado no movimento contabilístico !"
|
msgstr "Valor de Crédito ou débito errado na entrada de contabilidade!"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: view:account.invoice.report:0
|
#: view:account.invoice.report:0
|
||||||
|
@ -1898,7 +1902,7 @@ msgstr "Baseado em"
|
||||||
#: field:account.invoice,move_id:0
|
#: field:account.invoice,move_id:0
|
||||||
#: field:account.invoice,move_name:0
|
#: field:account.invoice,move_name:0
|
||||||
msgid "Journal Entry"
|
msgid "Journal Entry"
|
||||||
msgstr "Lançamento de diário"
|
msgstr "Entradas no diário"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: view:account.tax:0
|
#: view:account.tax:0
|
||||||
|
@ -1932,7 +1936,7 @@ msgstr "Venda / Compra Diário"
|
||||||
#. module: account
|
#. module: account
|
||||||
#: view:account.analytic.account:0
|
#: view:account.analytic.account:0
|
||||||
msgid "Analytic account"
|
msgid "Analytic account"
|
||||||
msgstr "Conta analítica"
|
msgstr "Conta Analítica"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: code:addons/account/account_bank_statement.py:339
|
#: code:addons/account/account_bank_statement.py:339
|
||||||
|
@ -2045,7 +2049,7 @@ msgstr ""
|
||||||
#: view:account.invoice:0
|
#: view:account.invoice:0
|
||||||
#: view:report.invoice.created:0
|
#: view:report.invoice.created:0
|
||||||
msgid "Untaxed Amount"
|
msgid "Untaxed Amount"
|
||||||
msgstr "Valor sem Impostos"
|
msgstr "Montante sem Impostos"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: help:account.tax,active:0
|
#: help:account.tax,active:0
|
||||||
|
@ -2053,7 +2057,7 @@ msgid ""
|
||||||
"If the active field is set to False, it will allow you to hide the tax "
|
"If the active field is set to False, it will allow you to hide the tax "
|
||||||
"without removing it."
|
"without removing it."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Se o campo activo for definido como 'Falso', ele permitirá que oculte o "
|
"Se o campo ativo for definido como 'Falso', ele permitirá que oculte o "
|
||||||
"imposto sem o remover."
|
"imposto sem o remover."
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
|
@ -2123,7 +2127,7 @@ msgstr "Importar da fatura"
|
||||||
#: selection:report.account.sales,month:0
|
#: selection:report.account.sales,month:0
|
||||||
#: selection:report.account_type.sales,month:0
|
#: selection:report.account_type.sales,month:0
|
||||||
msgid "January"
|
msgid "January"
|
||||||
msgstr "janeiro"
|
msgstr "Janeiro"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: view:account.journal:0
|
#: view:account.journal:0
|
||||||
|
@ -2261,7 +2265,7 @@ msgstr "ECNJ"
|
||||||
#: view:account.subscription:0
|
#: view:account.subscription:0
|
||||||
#: selection:account.subscription,state:0
|
#: selection:account.subscription,state:0
|
||||||
msgid "Running"
|
msgid "Running"
|
||||||
msgstr "Em execução"
|
msgstr "Em Funcionamento"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: view:account.chart.template:0
|
#: view:account.chart.template:0
|
||||||
|
@ -2307,7 +2311,7 @@ msgstr "# de Qt. de Artigos "
|
||||||
#. module: account
|
#. module: account
|
||||||
#: model:ir.model,name:account.model_product_template
|
#: model:ir.model,name:account.model_product_template
|
||||||
msgid "Product Template"
|
msgid "Product Template"
|
||||||
msgstr "Template Artigo"
|
msgstr "Template do Artigo"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: report:account.account.balance:0
|
#: report:account.account.balance:0
|
||||||
|
@ -2505,7 +2509,7 @@ msgstr "Progresso de 30% ao fim de 30 dias"
|
||||||
#. module: account
|
#. module: account
|
||||||
#: view:account.entries.report:0
|
#: view:account.entries.report:0
|
||||||
msgid "Unreconciled entries"
|
msgid "Unreconciled entries"
|
||||||
msgstr "Movimentos Dereconciliado"
|
msgstr "Movimentos Desreconciliados"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: field:account.invoice.tax,base_code_id:0
|
#: field:account.invoice.tax,base_code_id:0
|
||||||
|
@ -2606,7 +2610,7 @@ msgstr ""
|
||||||
#. module: account
|
#. module: account
|
||||||
#: view:account.analytic.cost.ledger.journal.report:0
|
#: view:account.analytic.cost.ledger.journal.report:0
|
||||||
msgid "Select period"
|
msgid "Select period"
|
||||||
msgstr "Seleccione o período"
|
msgstr "Selecione o período"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: model:ir.ui.menu,name:account.menu_account_pp_statements
|
#: model:ir.ui.menu,name:account.menu_account_pp_statements
|
||||||
|
@ -2679,7 +2683,7 @@ msgstr "Erro de Configuração!"
|
||||||
#. module: account
|
#. module: account
|
||||||
#: field:account.invoice.report,price_average:0
|
#: field:account.invoice.report,price_average:0
|
||||||
msgid "Average Price"
|
msgid "Average Price"
|
||||||
msgstr "Preço médio"
|
msgstr "Preço Médio"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: report:account.overdue:0
|
#: report:account.overdue:0
|
||||||
|
@ -2824,8 +2828,8 @@ msgid ""
|
||||||
"always skipping that state."
|
"always skipping that state."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Marque esta caixa se não pretende que os novos movimentos do diário passem "
|
"Marque esta caixa se não pretende que os novos movimentos do diário passem "
|
||||||
"através do estado \"rascunho\" e vão directamente para o estado "
|
"através do estado 'rascunho' e vão diretamente para o estado 'Publicado' sem "
|
||||||
"\"Publicado\" sem qualquer validação manual.\n"
|
"qualquer validação manual.\n"
|
||||||
"Note que os movimentos do diário que são automaticamente criados pelo "
|
"Note que os movimentos do diário que são automaticamente criados pelo "
|
||||||
"sistema também ignoram este estado."
|
"sistema também ignoram este estado."
|
||||||
|
|
||||||
|
@ -2949,7 +2953,7 @@ msgstr "Obrigatório"
|
||||||
#: field:product.category,property_account_expense_categ:0
|
#: field:product.category,property_account_expense_categ:0
|
||||||
#: field:product.template,property_account_expense:0
|
#: field:product.template,property_account_expense:0
|
||||||
msgid "Expense Account"
|
msgid "Expense Account"
|
||||||
msgstr "Conta de gastos"
|
msgstr "Conta de Despesas"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: help:account.invoice,period_id:0
|
#: help:account.invoice,period_id:0
|
||||||
|
@ -2999,7 +3003,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"A data de maturidade dos movimentos gerados por este modelo. Pode escolher "
|
"A data de maturidade dos movimentos gerados por este modelo. Pode escolher "
|
||||||
"entre a data de criação ou a data de criação dos movimentos mais os termos "
|
"entre a data de criação ou a data de criação dos movimentos mais os termos "
|
||||||
"de pagamento dos Paceiros."
|
"de pagamento dos Parceiros."
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: model:ir.ui.menu,name:account.menu_finance_accounting
|
#: model:ir.ui.menu,name:account.menu_finance_accounting
|
||||||
|
@ -3023,7 +3027,7 @@ msgstr "Lucro e prejuízo"
|
||||||
#: model:ir.model,name:account.model_account_fiscal_position
|
#: model:ir.model,name:account.model_account_fiscal_position
|
||||||
#: field:res.partner,property_account_position:0
|
#: field:res.partner,property_account_position:0
|
||||||
msgid "Fiscal Position"
|
msgid "Fiscal Position"
|
||||||
msgstr "Posição fiscal"
|
msgstr "Posição Fiscal"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: code:addons/account/account_invoice.py:735
|
#: code:addons/account/account_invoice.py:735
|
||||||
|
@ -3044,7 +3048,7 @@ msgstr "Um parceiro por página"
|
||||||
#: field:account.account,child_parent_ids:0
|
#: field:account.account,child_parent_ids:0
|
||||||
#: field:account.account.template,child_parent_ids:0
|
#: field:account.account.template,child_parent_ids:0
|
||||||
msgid "Children"
|
msgid "Children"
|
||||||
msgstr "Contas-filho"
|
msgstr "Descendentes"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: selection:account.invoice,type:0
|
#: selection:account.invoice,type:0
|
||||||
|
@ -3097,7 +3101,7 @@ msgstr "Transação a dinheiro"
|
||||||
#. module: account
|
#. module: account
|
||||||
#: view:res.partner:0
|
#: view:res.partner:0
|
||||||
msgid "Bank account"
|
msgid "Bank account"
|
||||||
msgstr "Conta bancária"
|
msgstr "Conta Bancária"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: field:account.chart.template,tax_template_ids:0
|
#: field:account.chart.template,tax_template_ids:0
|
||||||
|
@ -3190,7 +3194,7 @@ msgstr "BNK"
|
||||||
#. module: account
|
#. module: account
|
||||||
#: field:account.move.line,analytic_lines:0
|
#: field:account.move.line,analytic_lines:0
|
||||||
msgid "Analytic lines"
|
msgid "Analytic lines"
|
||||||
msgstr "Linhas da analítica"
|
msgstr "Linhas analíticas"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: view:account.invoice:0
|
#: view:account.invoice:0
|
||||||
|
@ -3220,7 +3224,7 @@ msgstr "Começa em"
|
||||||
#. module: account
|
#. module: account
|
||||||
#: model:ir.model,name:account.model_account_partner_ledger
|
#: model:ir.model,name:account.model_account_partner_ledger
|
||||||
msgid "Account Partner Ledger"
|
msgid "Account Partner Ledger"
|
||||||
msgstr "Balancete de Contas de Terceiro"
|
msgstr "Balancete de Contas do Parceiro"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: help:account.journal.column,sequence:0
|
#: help:account.journal.column,sequence:0
|
||||||
|
@ -8774,7 +8778,7 @@ msgstr "Diário de Compra"
|
||||||
#: view:account.invoice.refund:0
|
#: view:account.invoice.refund:0
|
||||||
msgid "Refund Invoice: Creates the refund invoice, ready for editing."
|
msgid "Refund Invoice: Creates the refund invoice, ready for editing."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Nota de crédito: Emite uma nota de crédito, para ser editada / confirmada à "
|
"Estornar fatura: Emite uma nota de crédito, para ser editada / confirmada à "
|
||||||
"mão."
|
"mão."
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
|
@ -10690,7 +10694,7 @@ msgstr ""
|
||||||
#. module: account
|
#. module: account
|
||||||
#: view:account.payment.term:0
|
#: view:account.payment.term:0
|
||||||
msgid "Description on Invoices"
|
msgid "Description on Invoices"
|
||||||
msgstr ""
|
msgstr "Descrição de Faturas"
|
||||||
|
|
||||||
#. module: account
|
#. module: account
|
||||||
#: model:ir.model,name:account.model_account_analytic_chart
|
#: model:ir.model,name:account.model_account_analytic_chart
|
||||||
|
|
|
@ -7,25 +7,25 @@ msgstr ""
|
||||||
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
||||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||||
"POT-Creation-Date: 2012-02-08 00:35+0000\n"
|
"POT-Creation-Date: 2012-02-08 00:35+0000\n"
|
||||||
"PO-Revision-Date: 2010-12-09 09:33+0000\n"
|
"PO-Revision-Date: 2012-05-31 15:05+0000\n"
|
||||||
"Last-Translator: OpenERP Administrators <Unknown>\n"
|
"Last-Translator: Marcelo Almeida <Unknown>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2012-02-09 06:32+0000\n"
|
"X-Launchpad-Export-Date: 2012-06-01 05:33+0000\n"
|
||||||
"X-Generator: Launchpad (build 14763)\n"
|
"X-Generator: Launchpad (build 15342)\n"
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: field:account.analytic.account,revenue_per_hour:0
|
#: field:account.analytic.account,revenue_per_hour:0
|
||||||
msgid "Revenue per Time (real)"
|
msgid "Revenue per Time (real)"
|
||||||
msgstr ""
|
msgstr "Receita por hora (real)"
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: help:account.analytic.account,remaining_ca:0
|
#: help:account.analytic.account,remaining_ca:0
|
||||||
msgid "Computed using the formula: Max Invoice Price - Invoiced Amount."
|
msgid "Computed using the formula: Max Invoice Price - Invoiced Amount."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Processado com a fórmula: Preço Máximo da Factura - Montante Facturado."
|
"Calculado utilizando a fórmula: Valor Máximo da Fatura - Valor da Fatura"
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: help:account.analytic.account,last_worked_date:0
|
#: help:account.analytic.account,last_worked_date:0
|
||||||
|
@ -38,11 +38,13 @@ msgid ""
|
||||||
"The contracts to be renewed because the deadline is passed or the working "
|
"The contracts to be renewed because the deadline is passed or the working "
|
||||||
"hours are higher than the allocated hours"
|
"hours are higher than the allocated hours"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Os contratos a serem renovados, porque o prazo é passado ou as horas de "
|
||||||
|
"trabalho são maiores do que as horas atribuídas"
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: view:account.analytic.account:0
|
#: view:account.analytic.account:0
|
||||||
msgid "Pending contracts to renew with your customer"
|
msgid "Pending contracts to renew with your customer"
|
||||||
msgstr ""
|
msgstr "Contratos pendentes de renovação com o seu cliente"
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: help:account.analytic.account,hours_qtt_non_invoiced:0
|
#: help:account.analytic.account,hours_qtt_non_invoiced:0
|
||||||
|
@ -50,31 +52,33 @@ msgid ""
|
||||||
"Number of time (hours/days) (from journal of type 'general') that can be "
|
"Number of time (hours/days) (from journal of type 'general') that can be "
|
||||||
"invoiced if you invoice based on analytic account."
|
"invoiced if you invoice based on analytic account."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Número de tempo (horas ou dias) (de Diário do tipo 'geral') que podem ser "
|
||||||
|
"faturados, se fatura com base na conta analítica"
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: view:account.analytic.account:0
|
#: view:account.analytic.account:0
|
||||||
msgid "Analytic Accounts with a past deadline in one month."
|
msgid "Analytic Accounts with a past deadline in one month."
|
||||||
msgstr ""
|
msgstr "Contas Analíticas com um prazo limite ultrapassando um mês."
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: view:account.analytic.account:0
|
#: view:account.analytic.account:0
|
||||||
msgid "Group By..."
|
msgid "Group By..."
|
||||||
msgstr ""
|
msgstr "Grupo por..."
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: view:account.analytic.account:0
|
#: view:account.analytic.account:0
|
||||||
msgid "End Date"
|
msgid "End Date"
|
||||||
msgstr ""
|
msgstr "Data final"
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: view:account.analytic.account:0
|
#: view:account.analytic.account:0
|
||||||
msgid "Create Invoice"
|
msgid "Create Invoice"
|
||||||
msgstr ""
|
msgstr "Criar Fatura"
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: field:account.analytic.account,last_invoice_date:0
|
#: field:account.analytic.account,last_invoice_date:0
|
||||||
msgid "Last Invoice Date"
|
msgid "Last Invoice Date"
|
||||||
msgstr "Data da última factura"
|
msgstr "Data da última fatura"
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: help:account.analytic.account,theorical_margin:0
|
#: help:account.analytic.account,theorical_margin:0
|
||||||
|
@ -87,16 +91,18 @@ msgid ""
|
||||||
"Number of time you spent on the analytic account (from timesheet). It "
|
"Number of time you spent on the analytic account (from timesheet). It "
|
||||||
"computes quantities on all journal of type 'general'."
|
"computes quantities on all journal of type 'general'."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Número de tempo que gastou na conta analítica (da folha de horas). Ele "
|
||||||
|
"calcula quantidades em todos os Diários do tipo 'geral'."
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: view:account.analytic.account:0
|
#: view:account.analytic.account:0
|
||||||
msgid "Contracts in progress"
|
msgid "Contracts in progress"
|
||||||
msgstr ""
|
msgstr "Contractos em progresso"
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: field:account.analytic.account,is_overdue_quantity:0
|
#: field:account.analytic.account,is_overdue_quantity:0
|
||||||
msgid "Overdue Quantity"
|
msgid "Overdue Quantity"
|
||||||
msgstr ""
|
msgstr "Quantidade em atraso"
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: model:ir.actions.act_window,help:account_analytic_analysis.action_account_analytic_overdue
|
#: model:ir.actions.act_window,help:account_analytic_analysis.action_account_analytic_overdue
|
||||||
|
@ -108,6 +114,12 @@ msgid ""
|
||||||
"pending accounts and reopen or close the according to the negotiation with "
|
"pending accounts and reopen or close the according to the negotiation with "
|
||||||
"the customer."
|
"the customer."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Vai encontrar aqui os contratos a serem renovados, porque o prazo é passado "
|
||||||
|
"ou as horas de trabalho são maiores do que as horas atribuídas. OpenERP "
|
||||||
|
"define automaticamente essas contas analíticas para o estado pendente, a fim "
|
||||||
|
"de emitir um aviso durante a gravação da folha de horas. Vendedores devem "
|
||||||
|
"rever todas as contas pendentes e reabrir ou fechar o acordo com a "
|
||||||
|
"negociação com o cliente."
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: field:account.analytic.account,ca_theorical:0
|
#: field:account.analytic.account,ca_theorical:0
|
||||||
|
@ -117,7 +129,7 @@ msgstr "Retorno Teórico"
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: field:account.analytic.account,hours_qtt_non_invoiced:0
|
#: field:account.analytic.account,hours_qtt_non_invoiced:0
|
||||||
msgid "Uninvoiced Time"
|
msgid "Uninvoiced Time"
|
||||||
msgstr ""
|
msgstr "Tempo não faturado"
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: help:account.analytic.account,last_worked_invoiced_date:0
|
#: help:account.analytic.account,last_worked_invoiced_date:0
|
||||||
|
@ -125,13 +137,13 @@ msgid ""
|
||||||
"If invoice from the costs, this is the date of the latest work or cost that "
|
"If invoice from the costs, this is the date of the latest work or cost that "
|
||||||
"have been invoiced."
|
"have been invoiced."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Se facturado dos custos, esta é a data do último trabalho ou dos custos que "
|
"Se faturado dos custos, esta é a data do último trabalho ou dos custos que "
|
||||||
"foram facturados."
|
"foram faturados."
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: view:account.analytic.account:0
|
#: view:account.analytic.account:0
|
||||||
msgid "To Renew"
|
msgid "To Renew"
|
||||||
msgstr ""
|
msgstr "Para renovar"
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: field:account.analytic.account,last_worked_date:0
|
#: field:account.analytic.account,last_worked_date:0
|
||||||
|
@ -141,24 +153,26 @@ msgstr "Data do Último Custo/Trabalho"
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: field:account.analytic.account,hours_qtt_invoiced:0
|
#: field:account.analytic.account,hours_qtt_invoiced:0
|
||||||
msgid "Invoiced Time"
|
msgid "Invoiced Time"
|
||||||
msgstr ""
|
msgstr "Tempo faturado"
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: view:account.analytic.account:0
|
#: view:account.analytic.account:0
|
||||||
msgid ""
|
msgid ""
|
||||||
"A contract in OpenERP is an analytic account having a partner set on it."
|
"A contract in OpenERP is an analytic account having a partner set on it."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Um contrato em OpenERP é um relato analítico a ter num conjunto parceiro "
|
||||||
|
"sobre ele."
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: field:account.analytic.account,remaining_hours:0
|
#: field:account.analytic.account,remaining_hours:0
|
||||||
msgid "Remaining Time"
|
msgid "Remaining Time"
|
||||||
msgstr ""
|
msgstr "Tempo Restante"
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: model:ir.actions.act_window,name:account_analytic_analysis.action_account_analytic_overdue
|
#: model:ir.actions.act_window,name:account_analytic_analysis.action_account_analytic_overdue
|
||||||
#: model:ir.ui.menu,name:account_analytic_analysis.menu_action_account_analytic_overdue
|
#: model:ir.ui.menu,name:account_analytic_analysis.menu_action_account_analytic_overdue
|
||||||
msgid "Contracts to Renew"
|
msgid "Contracts to Renew"
|
||||||
msgstr ""
|
msgstr "Contratos para renovar"
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: field:account.analytic.account,theorical_margin:0
|
#: field:account.analytic.account,theorical_margin:0
|
||||||
|
@ -168,7 +182,7 @@ msgstr "Margem Teórica"
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: view:account.analytic.account:0
|
#: view:account.analytic.account:0
|
||||||
msgid " +1 Month"
|
msgid " +1 Month"
|
||||||
msgstr ""
|
msgstr " +1 mês"
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: help:account.analytic.account,ca_theorical:0
|
#: help:account.analytic.account,ca_theorical:0
|
||||||
|
@ -177,29 +191,29 @@ msgid ""
|
||||||
"if all these costs have been invoiced at the normal sale price provided by "
|
"if all these costs have been invoiced at the normal sale price provided by "
|
||||||
"the pricelist."
|
"the pricelist."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Baseado nos custos que teve no projecto, qual é que seria o rendimento se "
|
"Baseado nos custos que teve no projeto, qual é que seria o rendimento se "
|
||||||
"todos estes custos fossem facturados ao preço normal da venda fornecidos "
|
"todos estes custos fossem faturados ao preço normal da venda fornecidos pela "
|
||||||
"pela tabela de preço."
|
"tabela de preço."
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: view:account.analytic.account:0
|
#: view:account.analytic.account:0
|
||||||
msgid "Pending"
|
msgid "Pending"
|
||||||
msgstr ""
|
msgstr "Pendente"
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: field:account.analytic.account,ca_to_invoice:0
|
#: field:account.analytic.account,ca_to_invoice:0
|
||||||
msgid "Uninvoiced Amount"
|
msgid "Uninvoiced Amount"
|
||||||
msgstr "Montante não Facturado"
|
msgstr "Montante não Faturado"
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: help:account.analytic.account,real_margin:0
|
#: help:account.analytic.account,real_margin:0
|
||||||
msgid "Computed using the formula: Invoiced Amount - Total Costs."
|
msgid "Computed using the formula: Invoiced Amount - Total Costs."
|
||||||
msgstr "Processado ao utilizar a fórmula: Montante Facturado - Custo Total."
|
msgstr "Processado ao utilizar a fórmula: Montante Faturado - Custo Total."
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: view:account.analytic.account:0
|
#: view:account.analytic.account:0
|
||||||
msgid "Parent"
|
msgid "Parent"
|
||||||
msgstr ""
|
msgstr "Ascendente"
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: field:account.analytic.account,user_ids:0
|
#: field:account.analytic.account,user_ids:0
|
||||||
|
@ -221,17 +235,17 @@ msgstr "Resumo de horas por utilizador"
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: field:account.analytic.account,ca_invoiced:0
|
#: field:account.analytic.account,ca_invoiced:0
|
||||||
msgid "Invoiced Amount"
|
msgid "Invoiced Amount"
|
||||||
msgstr "Montante Facturado"
|
msgstr "Montante Faturado"
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: field:account.analytic.account,last_worked_invoiced_date:0
|
#: field:account.analytic.account,last_worked_invoiced_date:0
|
||||||
msgid "Date of Last Invoiced Cost"
|
msgid "Date of Last Invoiced Cost"
|
||||||
msgstr "Data do Último Custo Facturado"
|
msgstr "Data do Último Custo Faturado"
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: view:account.analytic.account:0
|
#: view:account.analytic.account:0
|
||||||
msgid "Contract"
|
msgid "Contract"
|
||||||
msgstr ""
|
msgstr "Contrato"
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: field:account.analytic.account,real_margin_rate:0
|
#: field:account.analytic.account,real_margin_rate:0
|
||||||
|
@ -246,7 +260,7 @@ msgstr "Margem Real"
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: help:account.analytic.account,ca_invoiced:0
|
#: help:account.analytic.account,ca_invoiced:0
|
||||||
msgid "Total customer invoiced amount for this account."
|
msgid "Total customer invoiced amount for this account."
|
||||||
msgstr "Montante da facturação total do cliente para esta conta"
|
msgstr "Montante da faturação total do cliente para esta conta"
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: model:ir.model,name:account_analytic_analysis.model_account_analytic_analysis_summary_month
|
#: model:ir.model,name:account_analytic_analysis.model_account_analytic_analysis_summary_month
|
||||||
|
@ -266,7 +280,7 @@ msgstr "Receita Restante"
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: help:account.analytic.account,remaining_hours:0
|
#: help:account.analytic.account,remaining_hours:0
|
||||||
msgid "Computed using the formula: Maximum Time - Total Time"
|
msgid "Computed using the formula: Maximum Time - Total Time"
|
||||||
msgstr ""
|
msgstr "Cálculo utilizando a fórmula: Tempo máximo - Tempo Total"
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: help:account.analytic.account,hours_qtt_invoiced:0
|
#: help:account.analytic.account,hours_qtt_invoiced:0
|
||||||
|
@ -274,6 +288,8 @@ msgid ""
|
||||||
"Number of time (hours/days) that can be invoiced plus those that already "
|
"Number of time (hours/days) that can be invoiced plus those that already "
|
||||||
"have been invoiced."
|
"have been invoiced."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Número de tempo (horas ou dias) que pode ser faturado mais aqueles que já "
|
||||||
|
"tenham sido faturados."
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: help:account.analytic.account,ca_to_invoice:0
|
#: help:account.analytic.account,ca_to_invoice:0
|
||||||
|
@ -281,13 +297,13 @@ msgid ""
|
||||||
"If invoice from analytic account, the remaining amount you can invoice to "
|
"If invoice from analytic account, the remaining amount you can invoice to "
|
||||||
"the customer based on the total costs."
|
"the customer based on the total costs."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Se facturado a partir da conta analítica, o montante restante que pode "
|
"Se faturado a partir da conta analítica, o montante restante que pode "
|
||||||
"facturar ao cliente baseado nos custos totais."
|
"faturar ao cliente baseado nos custos totais."
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: help:account.analytic.account,revenue_per_hour:0
|
#: help:account.analytic.account,revenue_per_hour:0
|
||||||
msgid "Computed using the formula: Invoiced Amount / Total Time"
|
msgid "Computed using the formula: Invoiced Amount / Total Time"
|
||||||
msgstr ""
|
msgstr "Calculado através da fórmula: Valor faturado / Tempo Total"
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: field:account.analytic.account,total_cost:0
|
#: field:account.analytic.account,total_cost:0
|
||||||
|
@ -312,38 +328,38 @@ msgstr "Conta Analítica"
|
||||||
#: model:ir.actions.act_window,name:account_analytic_analysis.action_account_analytic_overdue_all
|
#: model:ir.actions.act_window,name:account_analytic_analysis.action_account_analytic_overdue_all
|
||||||
#: model:ir.ui.menu,name:account_analytic_analysis.menu_action_account_analytic_overdue_all
|
#: model:ir.ui.menu,name:account_analytic_analysis.menu_action_account_analytic_overdue_all
|
||||||
msgid "Contracts"
|
msgid "Contracts"
|
||||||
msgstr ""
|
msgstr "Contractos"
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: view:account.analytic.account:0
|
#: view:account.analytic.account:0
|
||||||
msgid "Manager"
|
msgid "Manager"
|
||||||
msgstr ""
|
msgstr "Gestor"
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: model:ir.actions.act_window,name:account_analytic_analysis.action_hr_tree_invoiced_all
|
#: model:ir.actions.act_window,name:account_analytic_analysis.action_hr_tree_invoiced_all
|
||||||
#: model:ir.ui.menu,name:account_analytic_analysis.menu_action_hr_tree_invoiced_all
|
#: model:ir.ui.menu,name:account_analytic_analysis.menu_action_hr_tree_invoiced_all
|
||||||
msgid "All Uninvoiced Entries"
|
msgid "All Uninvoiced Entries"
|
||||||
msgstr "Todas os Movimentos não Facturados"
|
msgstr "Todos os Movimentos não Faturados"
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: help:account.analytic.account,last_invoice_date:0
|
#: help:account.analytic.account,last_invoice_date:0
|
||||||
msgid "If invoice from the costs, this is the date of the latest invoiced."
|
msgid "If invoice from the costs, this is the date of the latest invoiced."
|
||||||
msgstr ""
|
msgstr "Se for fatura dos custos, esta é a data da última faturada."
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: view:account.analytic.account:0
|
#: view:account.analytic.account:0
|
||||||
msgid "Associated Partner"
|
msgid "Associated Partner"
|
||||||
msgstr ""
|
msgstr "Parceiro associado"
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: view:account.analytic.account:0
|
#: view:account.analytic.account:0
|
||||||
msgid "Open"
|
msgid "Open"
|
||||||
msgstr ""
|
msgstr "Abrir"
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: view:account.analytic.account:0
|
#: view:account.analytic.account:0
|
||||||
msgid "Contracts that are not assigned to an account manager."
|
msgid "Contracts that are not assigned to an account manager."
|
||||||
msgstr ""
|
msgstr "Contratos que não são atribuídos a um gestor de conta."
|
||||||
|
|
||||||
#. module: account_analytic_analysis
|
#. module: account_analytic_analysis
|
||||||
#: field:account.analytic.account,hours_quantity:0
|
#: field:account.analytic.account,hours_quantity:0
|
||||||
|
@ -358,18 +374,12 @@ msgid ""
|
||||||
"Total of costs for this account. It includes real costs (from invoices) and "
|
"Total of costs for this account. It includes real costs (from invoices) and "
|
||||||
"indirect costs, like time spent on timesheets."
|
"indirect costs, like time spent on timesheets."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Total de custos para esta conta. Que inclui custos reais (das facturas) e "
|
"Total de custos para esta conta. Que inclui custos reais (das faturas) e "
|
||||||
"custos indirectos, como o tempo gasto em folha de horas."
|
"custos indirectos, como o tempo gasto em folha de horas."
|
||||||
|
|
||||||
#~ msgid "Invoicing"
|
#~ msgid "Invoicing"
|
||||||
#~ msgstr "Facturação"
|
#~ msgstr "Facturação"
|
||||||
|
|
||||||
#~ msgid ""
|
|
||||||
#~ "Number of hours that can be invoiced plus those that already have been "
|
|
||||||
#~ "invoiced."
|
|
||||||
#~ msgstr ""
|
|
||||||
#~ "Número de horas que podem ser facturadas mais as que já foram facturadas."
|
|
||||||
|
|
||||||
#~ msgid "Hours summary by user"
|
#~ msgid "Hours summary by user"
|
||||||
#~ msgstr "Resumo de horas por utilizador"
|
#~ msgstr "Resumo de horas por utilizador"
|
||||||
|
|
||||||
|
@ -505,7 +515,15 @@ msgstr ""
|
||||||
#~ "Pode também ver o relatório sumário de contas analíticas\n"
|
#~ "Pode também ver o relatório sumário de contas analíticas\n"
|
||||||
#~ "por utilizador bem como por mês.\n"
|
#~ "por utilizador bem como por mês.\n"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Number of hours that can be invoiced plus those that already have been "
|
||||||
|
#~ "invoiced."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Número de horas que podem ser facturadas mais aquelas que já tenham sido "
|
||||||
|
#~ "facturadas."
|
||||||
|
|
||||||
#~ msgid ""
|
#~ msgid ""
|
||||||
#~ "Error! The currency has to be the same as the currency of the selected "
|
#~ "Error! The currency has to be the same as the currency of the selected "
|
||||||
#~ "company"
|
#~ "company"
|
||||||
#~ msgstr "Erro! A divisa tem que ser a mesma que a da empresa seleccionada"
|
#~ msgstr ""
|
||||||
|
#~ "Erro! A divisa tem que ser a mesma que a divisa da empresa seleccionada"
|
||||||
|
|
|
@ -8,14 +8,14 @@ msgstr ""
|
||||||
"Project-Id-Version: openobject-addons\n"
|
"Project-Id-Version: openobject-addons\n"
|
||||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"POT-Creation-Date: 2012-02-08 00:35+0000\n"
|
"POT-Creation-Date: 2012-02-08 00:35+0000\n"
|
||||||
"PO-Revision-Date: 2012-05-29 06:22+0000\n"
|
"PO-Revision-Date: 2012-05-31 06:16+0000\n"
|
||||||
"Last-Translator: Akira Hiyama <Unknown>\n"
|
"Last-Translator: Akira Hiyama <Unknown>\n"
|
||||||
"Language-Team: Japanese <ja@li.org>\n"
|
"Language-Team: Japanese <ja@li.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2012-05-30 05:21+0000\n"
|
"X-Launchpad-Export-Date: 2012-06-01 05:33+0000\n"
|
||||||
"X-Generator: Launchpad (build 15316)\n"
|
"X-Generator: Launchpad (build 15342)\n"
|
||||||
|
|
||||||
#. module: account_anglo_saxon
|
#. module: account_anglo_saxon
|
||||||
#: sql_constraint:purchase.order:0
|
#: sql_constraint:purchase.order:0
|
||||||
|
@ -35,7 +35,7 @@ msgstr "製品分類"
|
||||||
#. module: account_anglo_saxon
|
#. module: account_anglo_saxon
|
||||||
#: sql_constraint:stock.picking:0
|
#: sql_constraint:stock.picking:0
|
||||||
msgid "Reference must be unique per Company!"
|
msgid "Reference must be unique per Company!"
|
||||||
msgstr "参照は会社内で固有でなければいけません"
|
msgstr "参照は会社ごとにユニークでなければいけません。"
|
||||||
|
|
||||||
#. module: account_anglo_saxon
|
#. module: account_anglo_saxon
|
||||||
#: constraint:product.category:0
|
#: constraint:product.category:0
|
||||||
|
|
|
@ -8,14 +8,14 @@ msgstr ""
|
||||||
"Project-Id-Version: openobject-addons\n"
|
"Project-Id-Version: openobject-addons\n"
|
||||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
|
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
|
||||||
"PO-Revision-Date: 2011-12-10 11:58+0000\n"
|
"PO-Revision-Date: 2012-05-31 15:07+0000\n"
|
||||||
"Last-Translator: Paulino Ascenção <Unknown>\n"
|
"Last-Translator: ThinkOpen Solutions <Unknown>\n"
|
||||||
"Language-Team: Portuguese <pt@li.org>\n"
|
"Language-Team: Portuguese <pt@li.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2012-05-11 05:15+0000\n"
|
"X-Launchpad-Export-Date: 2012-06-01 05:33+0000\n"
|
||||||
"X-Generator: Launchpad (build 15225)\n"
|
"X-Generator: Launchpad (build 15342)\n"
|
||||||
|
|
||||||
#. module: account_asset
|
#. module: account_asset
|
||||||
#: view:account.asset.asset:0
|
#: view:account.asset.asset:0
|
||||||
|
@ -439,7 +439,7 @@ msgstr "Método tempo"
|
||||||
#. module: account_asset
|
#. module: account_asset
|
||||||
#: view:account.asset.category:0
|
#: view:account.asset.category:0
|
||||||
msgid "Analytic Information"
|
msgid "Analytic Information"
|
||||||
msgstr ""
|
msgstr "Informação Analitica"
|
||||||
|
|
||||||
#. module: account_asset
|
#. module: account_asset
|
||||||
#: view:asset.modify:0
|
#: view:asset.modify:0
|
||||||
|
@ -620,7 +620,7 @@ msgstr "Prorata Temporis"
|
||||||
#. module: account_asset
|
#. module: account_asset
|
||||||
#: view:account.asset.category:0
|
#: view:account.asset.category:0
|
||||||
msgid "Accounting Information"
|
msgid "Accounting Information"
|
||||||
msgstr ""
|
msgstr "Informação contabilística"
|
||||||
|
|
||||||
#. module: account_asset
|
#. module: account_asset
|
||||||
#: model:ir.model,name:account_asset.model_account_invoice
|
#: model:ir.model,name:account_asset.model_account_invoice
|
||||||
|
|
|
@ -8,14 +8,14 @@ msgstr ""
|
||||||
"Project-Id-Version: openobject-addons\n"
|
"Project-Id-Version: openobject-addons\n"
|
||||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"POT-Creation-Date: 2012-02-08 00:35+0000\n"
|
"POT-Creation-Date: 2012-02-08 00:35+0000\n"
|
||||||
"PO-Revision-Date: 2012-04-17 09:03+0000\n"
|
"PO-Revision-Date: 2012-06-01 04:42+0000\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: Jalpesh Patel(OpenERP) <pja@tinyerp.com>\n"
|
||||||
"Language-Team: Gujarati <gu@li.org>\n"
|
"Language-Team: Gujarati <gu@li.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2012-04-18 04:42+0000\n"
|
"X-Launchpad-Export-Date: 2012-06-01 05:33+0000\n"
|
||||||
"X-Generator: Launchpad (build 15108)\n"
|
"X-Generator: Launchpad (build 15342)\n"
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: view:account.bank.statement.line:0
|
#: view:account.bank.statement.line:0
|
||||||
|
@ -42,7 +42,7 @@ msgstr ""
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: field:account.bank.statement.line.global,parent_id:0
|
#: field:account.bank.statement.line.global,parent_id:0
|
||||||
msgid "Parent Code"
|
msgid "Parent Code"
|
||||||
msgstr "પેરેંટ કોડ"
|
msgstr "પિતૃ સંકેત"
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: view:account.bank.statement.line:0
|
#: view:account.bank.statement.line:0
|
||||||
|
@ -64,7 +64,7 @@ msgstr ""
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: view:account.bank.statement.line:0
|
#: view:account.bank.statement.line:0
|
||||||
msgid "Group By..."
|
msgid "Group By..."
|
||||||
msgstr "ગ્રુપ દ્વારા..."
|
msgstr "સમૂહ દ્વારા"
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: field:account.bank.statement.line,state:0
|
#: field:account.bank.statement.line,state:0
|
||||||
|
@ -80,25 +80,25 @@ msgstr "કાચું"
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: view:account.bank.statement.line:0
|
#: view:account.bank.statement.line:0
|
||||||
msgid "Statement"
|
msgid "Statement"
|
||||||
msgstr "વિધાન"
|
msgstr "નિવેદન"
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: view:confirm.statement.line:0
|
#: view:confirm.statement.line:0
|
||||||
#: model:ir.actions.act_window,name:account_bank_statement_extensions.action_confirm_statement_line
|
#: 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
|
#: model:ir.model,name:account_bank_statement_extensions.model_confirm_statement_line
|
||||||
msgid "Confirm selected statement lines"
|
msgid "Confirm selected statement lines"
|
||||||
msgstr ""
|
msgstr "પસંદ કરેલ નિવેદન લીટીઓ ખાતરી કરો"
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: report:bank.statement.balance.report:0
|
#: report:bank.statement.balance.report:0
|
||||||
#: model:ir.actions.report.xml,name:account_bank_statement_extensions.bank_statement_balance_report
|
#: model:ir.actions.report.xml,name:account_bank_statement_extensions.bank_statement_balance_report
|
||||||
msgid "Bank Statement Balances Report"
|
msgid "Bank Statement Balances Report"
|
||||||
msgstr ""
|
msgstr "બેન્ક નિવેદન સિલક અહેવાલ"
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: view:cancel.statement.line:0
|
#: view:cancel.statement.line:0
|
||||||
msgid "Cancel Lines"
|
msgid "Cancel Lines"
|
||||||
msgstr ""
|
msgstr "લીટીઓ રદ કરો"
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: view:account.bank.statement.line.global:0
|
#: view:account.bank.statement.line.global:0
|
||||||
|
@ -109,7 +109,7 @@ msgstr ""
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: view:confirm.statement.line:0
|
#: view:confirm.statement.line:0
|
||||||
msgid "Confirm Lines"
|
msgid "Confirm Lines"
|
||||||
msgstr ""
|
msgstr "લીટીઓ પુષ્ટિ કરો"
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: code:addons/account_bank_statement_extensions/account_bank_statement.py:130
|
#: code:addons/account_bank_statement_extensions/account_bank_statement.py:130
|
||||||
|
@ -134,33 +134,33 @@ msgstr "રોજનામું"
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: view:account.bank.statement.line:0
|
#: view:account.bank.statement.line:0
|
||||||
msgid "Confirmed Statement Lines."
|
msgid "Confirmed Statement Lines."
|
||||||
msgstr ""
|
msgstr "પુષ્ટિ નિવેદન આવેલ લીટીઓ."
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: view:account.bank.statement.line:0
|
#: view:account.bank.statement.line:0
|
||||||
msgid "Credit Transactions."
|
msgid "Credit Transactions."
|
||||||
msgstr ""
|
msgstr "ધિરાણ વ્યવહારો."
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: model:ir.actions.act_window,help:account_bank_statement_extensions.action_cancel_statement_line
|
#: model:ir.actions.act_window,help:account_bank_statement_extensions.action_cancel_statement_line
|
||||||
msgid "cancel selected statement lines."
|
msgid "cancel selected statement lines."
|
||||||
msgstr ""
|
msgstr "પસંદ કરેલ લીટીઓની નિવેદન રદ કરો."
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: field:account.bank.statement.line,counterparty_number:0
|
#: field:account.bank.statement.line,counterparty_number:0
|
||||||
msgid "Counterparty Number"
|
msgid "Counterparty Number"
|
||||||
msgstr ""
|
msgstr "પ્રતિકૂળ સંખ્યા"
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: view:account.bank.statement.line.global:0
|
#: view:account.bank.statement.line.global:0
|
||||||
msgid "Transactions"
|
msgid "Transactions"
|
||||||
msgstr ""
|
msgstr "વ્યવહારો"
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: code:addons/account_bank_statement_extensions/account_bank_statement.py:130
|
#: code:addons/account_bank_statement_extensions/account_bank_statement.py:130
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Warning"
|
msgid "Warning"
|
||||||
msgstr ""
|
msgstr "ચેતવણી"
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: report:bank.statement.balance.report:0
|
#: report:bank.statement.balance.report:0
|
||||||
|
@ -170,7 +170,7 @@ msgstr ""
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: report:bank.statement.balance.report:0
|
#: report:bank.statement.balance.report:0
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr ""
|
msgstr "તારીખ"
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: view:account.bank.statement.line:0
|
#: view:account.bank.statement.line:0
|
||||||
|
@ -181,17 +181,17 @@ msgstr ""
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: view:account.bank.statement.line:0
|
#: view:account.bank.statement.line:0
|
||||||
msgid "Debit Transactions."
|
msgid "Debit Transactions."
|
||||||
msgstr ""
|
msgstr "ઉધાર વ્યવહારો."
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: view:account.bank.statement.line:0
|
#: view:account.bank.statement.line:0
|
||||||
msgid "Extended Filters..."
|
msgid "Extended Filters..."
|
||||||
msgstr ""
|
msgstr "વિસ્તૃત ગાળકો ..."
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: view:confirm.statement.line:0
|
#: view:confirm.statement.line:0
|
||||||
msgid "Confirmed lines cannot be changed anymore."
|
msgid "Confirmed lines cannot be changed anymore."
|
||||||
msgstr ""
|
msgstr "પુષ્ટિ લીટીઓ હવે બદલી શકાતી નથી"
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: constraint:res.partner.bank:0
|
#: constraint:res.partner.bank:0
|
||||||
|
@ -204,47 +204,47 @@ msgstr ""
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: field:account.bank.statement.line,val_date:0
|
#: field:account.bank.statement.line,val_date:0
|
||||||
msgid "Valuta Date"
|
msgid "Valuta Date"
|
||||||
msgstr ""
|
msgstr "ચલણ તારીખો"
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: model:ir.actions.act_window,help:account_bank_statement_extensions.action_confirm_statement_line
|
#: model:ir.actions.act_window,help:account_bank_statement_extensions.action_confirm_statement_line
|
||||||
msgid "Confirm selected statement lines."
|
msgid "Confirm selected statement lines."
|
||||||
msgstr ""
|
msgstr "પસંદ નિવેદન લીટીઓ ખાતરી કરો."
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: view:cancel.statement.line:0
|
#: view:cancel.statement.line:0
|
||||||
msgid "Are you sure you want to cancel the selected Bank Statement lines ?"
|
msgid "Are you sure you want to cancel the selected Bank Statement lines ?"
|
||||||
msgstr ""
|
msgstr "શું તમે ખરેખર પસંદિત બેન્ક નિવેદન લાઇન્સ રદ કરવા માંગો છો?"
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: report:bank.statement.balance.report:0
|
#: report:bank.statement.balance.report:0
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr ""
|
msgstr "નામ"
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: selection:account.bank.statement.line.global,type:0
|
#: selection:account.bank.statement.line.global,type:0
|
||||||
msgid "ISO 20022"
|
msgid "ISO 20022"
|
||||||
msgstr ""
|
msgstr "ISO 20022"
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: view:account.bank.statement.line:0
|
#: view:account.bank.statement.line:0
|
||||||
msgid "Notes"
|
msgid "Notes"
|
||||||
msgstr ""
|
msgstr "નોંધ"
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: selection:account.bank.statement.line.global,type:0
|
#: selection:account.bank.statement.line.global,type:0
|
||||||
msgid "Manual"
|
msgid "Manual"
|
||||||
msgstr ""
|
msgstr "માર્ગદર્શિકા"
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: view:account.bank.statement.line:0
|
#: view:account.bank.statement.line:0
|
||||||
msgid "Credit"
|
msgid "Credit"
|
||||||
msgstr ""
|
msgstr "જમા"
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: field:account.bank.statement.line.global,amount:0
|
#: field:account.bank.statement.line.global,amount:0
|
||||||
msgid "Amount"
|
msgid "Amount"
|
||||||
msgstr ""
|
msgstr "કિંમત"
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: view:account.bank.statement.line:0
|
#: view:account.bank.statement.line:0
|
||||||
|
@ -254,7 +254,7 @@ msgstr ""
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: field:account.bank.statement.line,counterparty_currency:0
|
#: field:account.bank.statement.line,counterparty_currency:0
|
||||||
msgid "Counterparty Currency"
|
msgid "Counterparty Currency"
|
||||||
msgstr ""
|
msgstr "પ્રતિકૂળ ચલણ"
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: field:account.bank.statement.line,counterparty_bic:0
|
#: field:account.bank.statement.line,counterparty_bic:0
|
||||||
|
@ -269,7 +269,7 @@ msgstr ""
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: view:confirm.statement.line:0
|
#: view:confirm.statement.line:0
|
||||||
msgid "Are you sure you want to confirm the selected Bank Statement lines ?"
|
msgid "Are you sure you want to confirm the selected Bank Statement lines ?"
|
||||||
msgstr ""
|
msgstr "શું તમે ખરેખર પસંદિત બેન્ક નિવેદન લાઇન્સ ખાતરી કરવા માંગો છો?"
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: constraint:account.bank.statement.line:0
|
#: constraint:account.bank.statement.line:0
|
||||||
|
@ -288,7 +288,7 @@ msgstr ""
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: view:account.bank.statement.line:0
|
#: view:account.bank.statement.line:0
|
||||||
msgid "Draft Statement Lines."
|
msgid "Draft Statement Lines."
|
||||||
msgstr ""
|
msgstr "કાચું નિવેદન લીટીઓ."
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: view:account.bank.statement.line:0
|
#: view:account.bank.statement.line:0
|
||||||
|
@ -298,27 +298,27 @@ msgstr ""
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: model:ir.model,name:account_bank_statement_extensions.model_account_bank_statement_line
|
#: model:ir.model,name:account_bank_statement_extensions.model_account_bank_statement_line
|
||||||
msgid "Bank Statement Line"
|
msgid "Bank Statement Line"
|
||||||
msgstr ""
|
msgstr "બેન્ક વિધાન લીટી"
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: field:account.bank.statement.line.global,code:0
|
#: field:account.bank.statement.line.global,code:0
|
||||||
msgid "Code"
|
msgid "Code"
|
||||||
msgstr ""
|
msgstr "સંકેત"
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: field:account.bank.statement.line,counterparty_name:0
|
#: field:account.bank.statement.line,counterparty_name:0
|
||||||
msgid "Counterparty Name"
|
msgid "Counterparty Name"
|
||||||
msgstr ""
|
msgstr "પ્રતિકૂળ નામ"
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: field:account.bank.statement.line.global,name:0
|
#: field:account.bank.statement.line.global,name:0
|
||||||
msgid "Communication"
|
msgid "Communication"
|
||||||
msgstr ""
|
msgstr "સંચાર"
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: model:ir.model,name:account_bank_statement_extensions.model_res_partner_bank
|
#: model:ir.model,name:account_bank_statement_extensions.model_res_partner_bank
|
||||||
msgid "Bank Accounts"
|
msgid "Bank Accounts"
|
||||||
msgstr ""
|
msgstr "બેંક હિસાબી"
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: constraint:account.bank.statement:0
|
#: constraint:account.bank.statement:0
|
||||||
|
@ -328,24 +328,24 @@ msgstr ""
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: model:ir.model,name:account_bank_statement_extensions.model_account_bank_statement
|
#: model:ir.model,name:account_bank_statement_extensions.model_account_bank_statement
|
||||||
msgid "Bank Statement"
|
msgid "Bank Statement"
|
||||||
msgstr ""
|
msgstr "બેન્ક સ્ટેટમેન્ટ"
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: view:account.bank.statement.line:0
|
#: view:account.bank.statement.line:0
|
||||||
msgid "Statement Line"
|
msgid "Statement Line"
|
||||||
msgstr ""
|
msgstr "વિધાન લીટી"
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: sql_constraint:account.bank.statement.line.global:0
|
#: sql_constraint:account.bank.statement.line.global:0
|
||||||
msgid "The code must be unique !"
|
msgid "The code must be unique !"
|
||||||
msgstr ""
|
msgstr "કોડ અજોડ હોવું જ જોઈએ!"
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: field:account.bank.statement.line.global,bank_statement_line_ids:0
|
#: 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.actions.act_window,name:account_bank_statement_extensions.action_bank_statement_line
|
||||||
#: model:ir.ui.menu,name:account_bank_statement_extensions.bank_statement_line
|
#: model:ir.ui.menu,name:account_bank_statement_extensions.bank_statement_line
|
||||||
msgid "Bank Statement Lines"
|
msgid "Bank Statement Lines"
|
||||||
msgstr ""
|
msgstr "બેંક વિધાન લીટીઓ"
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: view:account.bank.statement.line.global:0
|
#: view:account.bank.statement.line.global:0
|
||||||
|
@ -356,17 +356,17 @@ msgstr ""
|
||||||
#: view:cancel.statement.line:0
|
#: view:cancel.statement.line:0
|
||||||
#: view:confirm.statement.line:0
|
#: view:confirm.statement.line:0
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr ""
|
msgstr "રદ કરો"
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: view:account.bank.statement.line:0
|
#: view:account.bank.statement.line:0
|
||||||
msgid "Statement Lines"
|
msgid "Statement Lines"
|
||||||
msgstr ""
|
msgstr "વિધાન લીટીઓ"
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: view:account.bank.statement.line:0
|
#: view:account.bank.statement.line:0
|
||||||
msgid "Total Amount"
|
msgid "Total Amount"
|
||||||
msgstr ""
|
msgstr "કુલ રકમ"
|
||||||
|
|
||||||
#. module: account_bank_statement_extensions
|
#. module: account_bank_statement_extensions
|
||||||
#: field:account.bank.statement.line,globalisation_id:0
|
#: field:account.bank.statement.line,globalisation_id:0
|
||||||
|
|
|
@ -8,14 +8,14 @@ msgstr ""
|
||||||
"Project-Id-Version: openobject-addons\n"
|
"Project-Id-Version: openobject-addons\n"
|
||||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"POT-Creation-Date: 2012-02-08 00:35+0000\n"
|
"POT-Creation-Date: 2012-02-08 00:35+0000\n"
|
||||||
"PO-Revision-Date: 2010-12-20 19:21+0000\n"
|
"PO-Revision-Date: 2012-05-31 15:12+0000\n"
|
||||||
"Last-Translator: Rui Franco (multibase.pt) <Unknown>\n"
|
"Last-Translator: ThinkOpen Solutions <Unknown>\n"
|
||||||
"Language-Team: Portuguese <pt@li.org>\n"
|
"Language-Team: Portuguese <pt@li.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2012-05-11 05:09+0000\n"
|
"X-Launchpad-Export-Date: 2012-06-01 05:33+0000\n"
|
||||||
"X-Generator: Launchpad (build 15225)\n"
|
"X-Generator: Launchpad (build 15342)\n"
|
||||||
|
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:account.coda.trans.code,description:account_coda.actcc_09_21
|
#: model:account.coda.trans.code,description:account_coda.actcc_09_21
|
||||||
|
@ -1780,6 +1780,8 @@ msgstr "Pagamentos de salários coletivos"
|
||||||
#: model:account.coda.trans.code,comment:account_coda.actcc_80_17
|
#: model:account.coda.trans.code,comment:account_coda.actcc_80_17
|
||||||
msgid "Collected for unsealed deposit of securities, and other parcels"
|
msgid "Collected for unsealed deposit of securities, and other parcels"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Recolhidos para o depósito de valores mobiliários sem lacre, e outras "
|
||||||
|
"parcelas"
|
||||||
|
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:account.coda.comm.type,description:account_coda.acct_004
|
#: model:account.coda.comm.type,description:account_coda.acct_004
|
||||||
|
@ -1853,7 +1855,7 @@ msgstr "Documentário de taxas gerais de crédito"
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:account.coda.trans.code,description:account_coda.actcc_80_25
|
#: model:account.coda.trans.code,description:account_coda.actcc_80_25
|
||||||
msgid "Renting of direct debit box"
|
msgid "Renting of direct debit box"
|
||||||
msgstr ""
|
msgstr "Locação de caixa de débito direto"
|
||||||
|
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:account.coda.trans.code,description:account_coda.actcc_11_52
|
#: model:account.coda.trans.code,description:account_coda.actcc_11_52
|
||||||
|
@ -1871,6 +1873,9 @@ msgid ""
|
||||||
"globalisation of which this record is the first.\n"
|
"globalisation of which this record is the first.\n"
|
||||||
"The same code will be repeated at the end of the globalisation."
|
"The same code will be repeated at the end of the globalisation."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"O valor que é mencionado (1 a 9), especifica o nível de hierarquia da "
|
||||||
|
"globalização do que este disco é o primeiro.\n"
|
||||||
|
"O mesmo código será repetido no final da globalização."
|
||||||
|
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: field:coda.bank.account,description2:0
|
#: field:coda.bank.account,description2:0
|
||||||
|
@ -1880,7 +1885,7 @@ msgstr "Descrição da Conta Secundária"
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:account.coda.trans.category,description:account_coda.actrca_211
|
#: model:account.coda.trans.category,description:account_coda.actrca_211
|
||||||
msgid "Credit arrangement fee | Additional credit arrangement fee"
|
msgid "Credit arrangement fee | Additional credit arrangement fee"
|
||||||
msgstr ""
|
msgstr "Taxa de arranjo de Crédito | taxa de arranjo de crédito adicional"
|
||||||
|
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: view:coda.bank.statement:0
|
#: view:coda.bank.statement:0
|
||||||
|
@ -1925,7 +1930,7 @@ msgstr ""
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:account.coda.trans.category,description:account_coda.actrca_035
|
#: model:account.coda.trans.category,description:account_coda.actrca_035
|
||||||
msgid "Charges foreign documentary bill"
|
msgid "Charges foreign documentary bill"
|
||||||
msgstr ""
|
msgstr "Encargos conta documentário estrangeiro"
|
||||||
|
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:account.coda.trans.code,comment:account_coda.actcc_80_39
|
#: model:account.coda.trans.code,comment:account_coda.actcc_80_39
|
||||||
|
@ -2191,6 +2196,8 @@ msgid ""
|
||||||
"Credit transfer or cash payment with reconstituted structured format "
|
"Credit transfer or cash payment with reconstituted structured format "
|
||||||
"communication"
|
"communication"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Transferência de crédito ou pagamento em dinheiro com a comunicação "
|
||||||
|
"reconstituída do formato estruturado"
|
||||||
|
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:account.coda.trans.code,description:account_coda.actcc_07_86
|
#: model:account.coda.trans.code,description:account_coda.actcc_07_86
|
||||||
|
@ -2279,7 +2286,7 @@ msgstr "Pesquisar Extratos Bancários CODA"
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:account.coda.trans.category,description:account_coda.actrca_410
|
#: model:account.coda.trans.category,description:account_coda.actrca_410
|
||||||
msgid "Reclamation charges"
|
msgid "Reclamation charges"
|
||||||
msgstr ""
|
msgstr "Taxas de Contestação"
|
||||||
|
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:ir.actions.act_window,help:account_coda.action_coda_bank_statements
|
#: model:ir.actions.act_window,help:account_coda.action_coda_bank_statements
|
||||||
|
@ -2347,7 +2354,7 @@ msgstr "Assistente em estado incorreto. Por favor, clique no botão Cancelar!"
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:account.coda.trans.category,description:account_coda.actrca_418
|
#: model:account.coda.trans.category,description:account_coda.actrca_418
|
||||||
msgid "Endorsement commission"
|
msgid "Endorsement commission"
|
||||||
msgstr ""
|
msgstr "Comissão de Averbamento"
|
||||||
|
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:account.coda.trans.category,description:account_coda.actrca_005
|
#: model:account.coda.trans.category,description:account_coda.actrca_005
|
||||||
|
@ -2381,6 +2388,10 @@ msgid ""
|
||||||
"credit transfers with a structured communication As a matter of principle, "
|
"credit transfers with a structured communication As a matter of principle, "
|
||||||
"this type will also be used when no detailed data (type 6 or 7) is following."
|
"this type will also be used when no detailed data (type 6 or 7) is following."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Montante foi totalizado pelo banco; por exemplo, : O montante total de uma "
|
||||||
|
"série de transferências de crédito com uma comunicação estruturada como uma "
|
||||||
|
"questão de princípio, este tipo também será usado quando nenhum dado "
|
||||||
|
"detalhado (tipo 6 ou 7) está a seguir."
|
||||||
|
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:account.coda.trans.code,description:account_coda.actcc_03_37
|
#: model:account.coda.trans.code,description:account_coda.actcc_03_37
|
||||||
|
@ -2400,7 +2411,7 @@ msgstr "Levantamento de dinheiro pela sua filial ou agentes"
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:account.coda.trans.category,description:account_coda.actrca_049
|
#: model:account.coda.trans.category,description:account_coda.actrca_049
|
||||||
msgid "Fiscal stamps/stamp duty"
|
msgid "Fiscal stamps/stamp duty"
|
||||||
msgstr ""
|
msgstr "Selos fiscais / imposto de selo"
|
||||||
|
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:account.coda.trans.code,comment:account_coda.actcc_03_58
|
#: model:account.coda.trans.code,comment:account_coda.actcc_03_58
|
||||||
|
@ -2414,7 +2425,7 @@ msgstr ""
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: view:account.coda.import:0
|
#: view:account.coda.import:0
|
||||||
msgid "Select Your File :"
|
msgid "Select Your File :"
|
||||||
msgstr ""
|
msgstr "Selecione o seu ficheiro:"
|
||||||
|
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:account.coda.trans.code,description:account_coda.actcc_80_06
|
#: model:account.coda.trans.code,description:account_coda.actcc_80_06
|
||||||
|
@ -2485,7 +2496,7 @@ msgstr "Pesquisar ficheiros CODA"
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:account.coda.trans.code,description:account_coda.actcc_07_52
|
#: model:account.coda.trans.code,description:account_coda.actcc_07_52
|
||||||
msgid "Remittance of commercial paper - credit under usual reserve"
|
msgid "Remittance of commercial paper - credit under usual reserve"
|
||||||
msgstr ""
|
msgstr "Remessa de papel comercial - crédito sob reserva habitual"
|
||||||
|
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: help:coda.bank.account,active:0
|
#: help:coda.bank.account,active:0
|
||||||
|
@ -2499,7 +2510,7 @@ msgstr ""
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:account.coda.trans.code,comment:account_coda.actcc_07_54
|
#: model:account.coda.trans.code,comment:account_coda.actcc_07_54
|
||||||
msgid "Among other things advances or promissory notes"
|
msgid "Among other things advances or promissory notes"
|
||||||
msgstr ""
|
msgstr "Entre outras coisas avanços ou notas promissórias"
|
||||||
|
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:account.coda.trans.code,description:account_coda.actcc_80_10
|
#: model:account.coda.trans.code,description:account_coda.actcc_80_10
|
||||||
|
@ -2543,7 +2554,7 @@ msgstr "Para os profissionais, tais como seguros e corretores"
|
||||||
#: model:account.coda.trans.code,comment:account_coda.actcc_80_19
|
#: model:account.coda.trans.code,comment:account_coda.actcc_80_19
|
||||||
msgid ""
|
msgid ""
|
||||||
"Collected for securities, gold, pass-books, etc. placed in safe custody"
|
"Collected for securities, gold, pass-books, etc. placed in safe custody"
|
||||||
msgstr ""
|
msgstr "Títulos Coletados, ouro, passa-livros, etc. colocados sob custódia"
|
||||||
|
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:account.coda.trans.code,comment:account_coda.actcc_09_19
|
#: model:account.coda.trans.code,comment:account_coda.actcc_09_19
|
||||||
|
@ -2551,6 +2562,8 @@ msgid ""
|
||||||
"Used in case of payments accepted under reserve of count, result of "
|
"Used in case of payments accepted under reserve of count, result of "
|
||||||
"overcrediting"
|
"overcrediting"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Usado no caso de pagamentos aceites com reserva de contagem, resultado sobre "
|
||||||
|
"crédito"
|
||||||
|
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: code:addons/account_coda/wizard/account_coda_import.py:630
|
#: code:addons/account_coda/wizard/account_coda_import.py:630
|
||||||
|
@ -2597,7 +2610,7 @@ msgstr "Comissão para as despesas de manutenção"
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:account.coda.trans.code,description:account_coda.actcc_11_03
|
#: model:account.coda.trans.code,description:account_coda.actcc_11_03
|
||||||
msgid "Subscription to securities"
|
msgid "Subscription to securities"
|
||||||
msgstr ""
|
msgstr "Subscrição de valores"
|
||||||
|
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:account.coda.trans.category,description:account_coda.actrca_425
|
#: model:account.coda.trans.category,description:account_coda.actrca_425
|
||||||
|
@ -2659,6 +2672,7 @@ msgstr "Bonificação de juros"
|
||||||
#: model:account.coda.trans.code,description:account_coda.actcf_41
|
#: model:account.coda.trans.code,description:account_coda.actcf_41
|
||||||
msgid "International credit transfers - non-SEPA credit transfers"
|
msgid "International credit transfers - non-SEPA credit transfers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Transferências internacionais de crédito - transferências de crédito não SEPA"
|
||||||
|
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:account.coda.trans.code,comment:account_coda.actcc_03_87
|
#: model:account.coda.trans.code,comment:account_coda.actcc_03_87
|
||||||
|
@ -2856,6 +2870,7 @@ msgstr ""
|
||||||
#: model:account.coda.trans.code,description:account_coda.actcf_35
|
#: model:account.coda.trans.code,description:account_coda.actcf_35
|
||||||
msgid "Closing (periodical settlements for interest, costs,…)"
|
msgid "Closing (periodical settlements for interest, costs,…)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Encerramento (estabelecimentos periódicos relativos aos juros, custos, ...)"
|
||||||
|
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:account.coda.trans.code,description:account_coda.actcc_04_51
|
#: model:account.coda.trans.code,description:account_coda.actcc_04_51
|
||||||
|
@ -3057,6 +3072,8 @@ msgid ""
|
||||||
"Costs charged for calculating the amount of the tax to be paid (e.g. "
|
"Costs charged for calculating the amount of the tax to be paid (e.g. "
|
||||||
"Fiscomat)."
|
"Fiscomat)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Custos cobrados para o cálculo do montante do imposto a ser pago (Fiscomat "
|
||||||
|
"por exemplo)."
|
||||||
|
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:account.coda.trans.category,description:account_coda.actrca_014
|
#: model:account.coda.trans.category,description:account_coda.actrca_014
|
||||||
|
@ -3181,7 +3198,7 @@ msgstr "Subsídio"
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:account.coda.trans.code,description:account_coda.actcc_04_06
|
#: model:account.coda.trans.code,description:account_coda.actcc_04_06
|
||||||
msgid "Payment with tank card"
|
msgid "Payment with tank card"
|
||||||
msgstr ""
|
msgstr "Pagamento com cartão de depósito"
|
||||||
|
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:account.coda.comm.type,description:account_coda.acct_107
|
#: model:account.coda.comm.type,description:account_coda.acct_107
|
||||||
|
@ -3496,13 +3513,14 @@ msgstr "Licitações"
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:account.coda.trans.code,description:account_coda.actcc_43_07
|
#: model:account.coda.trans.code,description:account_coda.actcc_43_07
|
||||||
msgid "Unpaid foreign cheque"
|
msgid "Unpaid foreign cheque"
|
||||||
msgstr ""
|
msgstr "Cheque estrangeiro Não remunerado"
|
||||||
|
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:account.coda.trans.code,comment:account_coda.actcc_11_03
|
#: model:account.coda.trans.code,comment:account_coda.actcc_11_03
|
||||||
msgid ""
|
msgid ""
|
||||||
"Bonds, shares, tap issues of CDs, with or without payment of interest, etc."
|
"Bonds, shares, tap issues of CDs, with or without payment of interest, etc."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Obrigações, ações, questões de CDs, com ou sem pagamento de juros, etc"
|
||||||
|
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:account.coda.trans.code,description:account_coda.actcc_09_66
|
#: model:account.coda.trans.code,description:account_coda.actcc_09_66
|
||||||
|
@ -3512,7 +3530,7 @@ msgstr "Resgate de cupões de gasolina"
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:account.coda.trans.category,description:account_coda.actrca_058
|
#: model:account.coda.trans.category,description:account_coda.actrca_058
|
||||||
msgid "Capital premium"
|
msgid "Capital premium"
|
||||||
msgstr ""
|
msgstr "Prémio Capital"
|
||||||
|
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:account.coda.trans.code,description:account_coda.actcc_11_15
|
#: model:account.coda.trans.code,description:account_coda.actcc_11_15
|
||||||
|
@ -3528,7 +3546,7 @@ msgstr "Moeda da contraparte"
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:account.coda.trans.category,description:account_coda.actrca_202
|
#: model:account.coda.trans.category,description:account_coda.actrca_202
|
||||||
msgid "Advising commission | Additional advising commission"
|
msgid "Advising commission | Additional advising commission"
|
||||||
msgstr ""
|
msgstr "Comissões da Assessoria | comissão adicional aconselhada"
|
||||||
|
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: field:coda.bank.account,find_partner:0
|
#: field:coda.bank.account,find_partner:0
|
||||||
|
@ -3736,6 +3754,8 @@ msgstr "Pagamento do cheque"
|
||||||
#: model:account.coda.trans.code,comment:account_coda.actcc_43_07
|
#: model:account.coda.trans.code,comment:account_coda.actcc_43_07
|
||||||
msgid "Foreign cheque remitted for collection that returns unpaid"
|
msgid "Foreign cheque remitted for collection that returns unpaid"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
"Cheques estrangeiros remetidos para a recolha que retorna como não "
|
||||||
|
"remunerados"
|
||||||
|
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:account.coda.trans.code,comment:account_coda.actcc_80_07
|
#: model:account.coda.trans.code,comment:account_coda.actcc_80_07
|
||||||
|
@ -3982,7 +4002,7 @@ msgstr "Custos de ATM no estrangeiro"
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:account.coda.trans.category,description:account_coda.actrca_018
|
#: model:account.coda.trans.category,description:account_coda.actrca_018
|
||||||
msgid "Tental guarantee charges"
|
msgid "Tental guarantee charges"
|
||||||
msgstr ""
|
msgstr "Tental taxas de garantia"
|
||||||
|
|
||||||
#. module: account_coda
|
#. module: account_coda
|
||||||
#: model:account.coda.trans.category,description:account_coda.actrca_430
|
#: model:account.coda.trans.category,description:account_coda.actrca_430
|
||||||
|
|
|
@ -18,8 +18,7 @@
|
||||||
<field name="balance" sum="Balance"/>
|
<field name="balance" sum="Balance"/>
|
||||||
<field name="company_id" groups="base.group_multi_company"/>
|
<field name="company_id" groups="base.group_multi_company"/>
|
||||||
<field name="blocked" invisible="1" />
|
<field name="blocked" invisible="1" />
|
||||||
<field name="period_id" invisible="1" />
|
<field name="period_id" invisible="1" />
|
||||||
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
|
@ -193,9 +193,6 @@
|
||||||
<field name="date_done"/>
|
<field name="date_done"/>
|
||||||
<field name="total"/>
|
<field name="total"/>
|
||||||
<field name="state"/>
|
<field name="state"/>
|
||||||
<button name="cancel" states="draft,open" string="Cancel" icon="gtk-cancel"/>
|
|
||||||
<button name="open" states="draft" string="Confirm Payments" icon="gtk-apply"/>
|
|
||||||
<button name="set_done" states="open" string="Make Payments" type ="object" icon="gtk-execute"/>
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
|
@ -17,7 +17,6 @@
|
||||||
<field name="amount" sum="Total Amount"/>
|
<field name="amount" sum="Total Amount"/>
|
||||||
<field name="audit"/>
|
<field name="audit"/>
|
||||||
<field name="state"/>
|
<field name="state"/>
|
||||||
<button name="proforma_voucher" string="Post" states="draft" icon="terp-document-new"/>
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,112 @@
|
||||||
|
# Gujarati translation for openobject-addons
|
||||||
|
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||||
|
# This file is distributed under the same license as the openobject-addons package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openobject-addons\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
|
||||||
|
"PO-Revision-Date: 2012-05-31 11:08+0000\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: Gujarati <gu@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-06-01 05:33+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 15342)\n"
|
||||||
|
|
||||||
|
#. #-#-#-#-# auth_openid.pot (OpenERP Server 6.1rc1) #-#-#-#-#
|
||||||
|
#. module: auth_openid
|
||||||
|
#. #-#-#-#-# auth_openid.pot.web (PROJECT VERSION) #-#-#-#-#
|
||||||
|
#. openerp-web
|
||||||
|
#: view:res.users:0
|
||||||
|
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:12
|
||||||
|
msgid "OpenID"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. #-#-#-#-# auth_openid.pot (OpenERP Server 6.1rc1) #-#-#-#-#
|
||||||
|
#. module: auth_openid
|
||||||
|
#. #-#-#-#-# auth_openid.pot.web (PROJECT VERSION) #-#-#-#-#
|
||||||
|
#. openerp-web
|
||||||
|
#: field:res.users,openid_url:0
|
||||||
|
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:47
|
||||||
|
msgid "OpenID URL"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: auth_openid
|
||||||
|
#: help:res.users,openid_email:0
|
||||||
|
msgid "Used for disambiguation in case of a shared OpenID URL"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: auth_openid
|
||||||
|
#: sql_constraint:res.users:0
|
||||||
|
msgid "You can not have two users with the same login !"
|
||||||
|
msgstr "તમે બે વપરાશકર્તાઓને એક જ લોગીન ન કરી શકો!"
|
||||||
|
|
||||||
|
#. module: auth_openid
|
||||||
|
#: field:res.users,openid_email:0
|
||||||
|
msgid "OpenID Email"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: auth_openid
|
||||||
|
#: constraint:res.users:0
|
||||||
|
msgid "The chosen company is not in the allowed companies for this user"
|
||||||
|
msgstr "પસંદ કરેલ કંપની માન્ય કંપનીઓમાં આ વપરાશકર્તા માટે નથી"
|
||||||
|
|
||||||
|
#. module: auth_openid
|
||||||
|
#: field:res.users,openid_key:0
|
||||||
|
msgid "OpenID Key"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: auth_openid
|
||||||
|
#: model:ir.model,name:auth_openid.model_res_users
|
||||||
|
msgid "res.users"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:8
|
||||||
|
msgid "Password"
|
||||||
|
msgstr "પાસવર્ડ"
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:9
|
||||||
|
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:10
|
||||||
|
msgid "Google"
|
||||||
|
msgstr "ગુગલ"
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:10
|
||||||
|
msgid "Google Apps"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:11
|
||||||
|
msgid "Launchpad"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:20
|
||||||
|
msgid "Google Apps Domain:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:24
|
||||||
|
msgid "Username:"
|
||||||
|
msgstr "વપરાશકર્તાનું નામ:"
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:28
|
||||||
|
msgid "OpenID URL:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:35
|
||||||
|
msgid "Google Apps Domain"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. openerp-web
|
||||||
|
#: /home/odo/repositories/addons/trunk/auth_openid/static/src/xml/auth_openid.xml:41
|
||||||
|
msgid "Username"
|
||||||
|
msgstr "વપરાશકર્તા નામ"
|
|
@ -85,21 +85,6 @@
|
||||||
<field name="cutype" string="Invitation Type"/>
|
<field name="cutype" string="Invitation Type"/>
|
||||||
<field name="state" />
|
<field name="state" />
|
||||||
<field name="rsvp" string="Required to Join"/>
|
<field name="rsvp" string="Required to Join"/>
|
||||||
<button name="do_tentative" states="needs-action,declined,accepted"
|
|
||||||
string="Uncertain" type="object"
|
|
||||||
icon="terp-crm" />
|
|
||||||
<button name="do_accept" string="Accept"
|
|
||||||
states="needs-action,tentative,declined"
|
|
||||||
type="object" icon="gtk-apply" />
|
|
||||||
<button name="do_decline" string="Decline"
|
|
||||||
states="needs-action,tentative,accepted"
|
|
||||||
type="object" icon="gtk-cancel" />
|
|
||||||
<button
|
|
||||||
name="%(base_calendar.action_view_calendar_invite_attendee_wizard)d"
|
|
||||||
string="Delegate" type="action"
|
|
||||||
icon="gtk-sort-descending"
|
|
||||||
states="needs-action,tentative,declined,accepted"
|
|
||||||
context="{'model' : 'calendar.attendee', 'attendee_field' : 'child_ids'}" />
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
|
@ -0,0 +1,282 @@
|
||||||
|
# Gujarati translation for openobject-addons
|
||||||
|
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||||
|
# This file is distributed under the same license as the openobject-addons package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openobject-addons\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||||
|
"PO-Revision-Date: 2012-05-31 11:08+0000\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: Gujarati <gu@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-06-01 05:32+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 15342)\n"
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: field:user.preferences.config,menu_tips:0
|
||||||
|
msgid "Display Tips"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: selection:base.setup.terminology,partner:0
|
||||||
|
msgid "Guest"
|
||||||
|
msgstr "અતિથિ"
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: model:ir.model,name:base_setup.model_product_installer
|
||||||
|
msgid "product.installer"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: selection:product.installer,customers:0
|
||||||
|
msgid "Create"
|
||||||
|
msgstr "બનાવો"
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: selection:base.setup.terminology,partner:0
|
||||||
|
msgid "Member"
|
||||||
|
msgstr "સભ્ય"
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: field:migrade.application.installer.modules,sync_google_contact:0
|
||||||
|
msgid "Sync Google Contact"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: help:user.preferences.config,context_tz:0
|
||||||
|
msgid ""
|
||||||
|
"Set default for new user's timezone, used to perform timezone conversions "
|
||||||
|
"between the server and the client."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: selection:product.installer,customers:0
|
||||||
|
msgid "Import"
|
||||||
|
msgstr "આયાત કરો"
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: selection:base.setup.terminology,partner:0
|
||||||
|
msgid "Donor"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: model:ir.actions.act_window,name:base_setup.action_base_setup_company
|
||||||
|
msgid "Set Company Header and Footer"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: model:ir.actions.act_window,help:base_setup.action_base_setup_company
|
||||||
|
msgid ""
|
||||||
|
"Fill in your company data (address, logo, bank accounts) so that it's "
|
||||||
|
"printed on your reports. You can click on the button 'Preview Header' in "
|
||||||
|
"order to check the header/footer of PDF documents."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: field:product.installer,customers:0
|
||||||
|
msgid "Customers"
|
||||||
|
msgstr "ગ્રાહકો"
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: selection:user.preferences.config,view:0
|
||||||
|
msgid "Extended"
|
||||||
|
msgstr "વિસ્તૃત"
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: selection:base.setup.terminology,partner:0
|
||||||
|
msgid "Patient"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: model:ir.actions.act_window,help:base_setup.action_import_create_installer
|
||||||
|
msgid ""
|
||||||
|
"Create or Import Customers and their contacts manually from this form or "
|
||||||
|
"you can import your existing partners by CSV spreadsheet from \"Import "
|
||||||
|
"Data\" wizard"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: view:user.preferences.config:0
|
||||||
|
msgid "Define Users's Preferences"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: model:ir.actions.act_window,name:base_setup.action_user_preferences_config_form
|
||||||
|
msgid "Define default users preferences"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: help:migrade.application.installer.modules,import_saleforce:0
|
||||||
|
msgid "For Import Saleforce"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: help:migrade.application.installer.modules,quickbooks_ippids:0
|
||||||
|
msgid "For Quickbooks Ippids"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: help:user.preferences.config,view:0
|
||||||
|
msgid ""
|
||||||
|
"If you use OpenERP for the first time we strongly advise you to select the "
|
||||||
|
"simplified interface, which has less features but is easier. You can always "
|
||||||
|
"switch later from the user preferences."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: view:base.setup.terminology:0
|
||||||
|
#: view:user.preferences.config:0
|
||||||
|
msgid "res_config_contents"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: field:user.preferences.config,view:0
|
||||||
|
msgid "Interface"
|
||||||
|
msgstr "ઇન્ટરફેસ"
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: model:ir.model,name:base_setup.model_migrade_application_installer_modules
|
||||||
|
msgid "migrade.application.installer.modules"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: view:base.setup.terminology:0
|
||||||
|
msgid ""
|
||||||
|
"You can use this wizard to change the terminologies for customers in the "
|
||||||
|
"whole application."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: selection:base.setup.terminology,partner:0
|
||||||
|
msgid "Tenant"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: selection:base.setup.terminology,partner:0
|
||||||
|
msgid "Customer"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: field:user.preferences.config,context_lang:0
|
||||||
|
msgid "Language"
|
||||||
|
msgstr "ભાષા"
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: help:user.preferences.config,context_lang:0
|
||||||
|
msgid ""
|
||||||
|
"Sets default language for the all user interface, when UI translations are "
|
||||||
|
"available. If you want to Add new Language, you can add it from 'Load an "
|
||||||
|
"Official Translation' wizard from 'Administration' menu."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: view:user.preferences.config:0
|
||||||
|
msgid ""
|
||||||
|
"This will set the default preferences for new users and update all existing "
|
||||||
|
"ones. Afterwards, users are free to change those values on their own user "
|
||||||
|
"preference form."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: field:base.setup.terminology,partner:0
|
||||||
|
msgid "How do you call a Customer"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: field:migrade.application.installer.modules,quickbooks_ippids:0
|
||||||
|
msgid "Quickbooks Ippids"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: selection:base.setup.terminology,partner:0
|
||||||
|
msgid "Client"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: field:migrade.application.installer.modules,import_saleforce:0
|
||||||
|
msgid "Import Saleforce"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: field:user.preferences.config,context_tz:0
|
||||||
|
msgid "Timezone"
|
||||||
|
msgstr "ટાઈમઝોન"
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: model:ir.actions.act_window,name:base_setup.action_partner_terminology_config_form
|
||||||
|
msgid "Use another word to say \"Customer\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: model:ir.model,name:base_setup.model_base_setup_terminology
|
||||||
|
msgid "base.setup.terminology"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: help:user.preferences.config,menu_tips:0
|
||||||
|
msgid ""
|
||||||
|
"Check out this box if you want to always display tips on each menu action"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: field:base.setup.terminology,config_logo:0
|
||||||
|
#: field:migrade.application.installer.modules,config_logo:0
|
||||||
|
#: field:product.installer,config_logo:0
|
||||||
|
#: field:user.preferences.config,config_logo:0
|
||||||
|
msgid "Image"
|
||||||
|
msgstr "ચિત્ર"
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: model:ir.model,name:base_setup.model_user_preferences_config
|
||||||
|
msgid "user.preferences.config"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: model:ir.actions.act_window,name:base_setup.action_config_access_other_user
|
||||||
|
msgid "Create Additional Users"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: model:ir.actions.act_window,name:base_setup.action_import_create_installer
|
||||||
|
msgid "Create or Import Customers"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: field:migrade.application.installer.modules,import_sugarcrm:0
|
||||||
|
msgid "Import Sugarcrm"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: help:product.installer,customers:0
|
||||||
|
msgid "Import or create customers"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: selection:user.preferences.config,view:0
|
||||||
|
msgid "Simplified"
|
||||||
|
msgstr "સરળ"
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: help:migrade.application.installer.modules,import_sugarcrm:0
|
||||||
|
msgid "For Import Sugarcrm"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: selection:base.setup.terminology,partner:0
|
||||||
|
msgid "Partner"
|
||||||
|
msgstr "ભાગીદાર"
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: view:base.setup.terminology:0
|
||||||
|
msgid "Specify Your Terminology"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: base_setup
|
||||||
|
#: help:migrade.application.installer.modules,sync_google_contact:0
|
||||||
|
msgid "For Sync Google Contact"
|
||||||
|
msgstr ""
|
|
@ -0,0 +1,25 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##############################################################################
|
||||||
|
#
|
||||||
|
# OpenERP, Open Source Management Solution
|
||||||
|
# Copyright (C) 2012-today OpenERP SA (<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/>.
|
||||||
|
#
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
import base_state
|
||||||
|
import base_stage
|
||||||
|
|
||||||
|
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
|
@ -0,0 +1,42 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##############################################################################
|
||||||
|
#
|
||||||
|
# OpenERP, Open Source Management Solution
|
||||||
|
# Copyright (C) 2012-today OpenERP SA (<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/>.
|
||||||
|
#
|
||||||
|
##############################################################################
|
||||||
|
|
||||||
|
{
|
||||||
|
'name': 'State/Stage Management',
|
||||||
|
'version': '1.0',
|
||||||
|
'category': 'Hidden',
|
||||||
|
'description': """
|
||||||
|
This module handles state and stage. It is derived from the crm_base and
|
||||||
|
crm_case classes from crm.
|
||||||
|
|
||||||
|
* ``base_state``: state management
|
||||||
|
* ``base_stage``: stage management
|
||||||
|
""",
|
||||||
|
'author': 'OpenERP SA',
|
||||||
|
'website': 'http://www.openerp.com',
|
||||||
|
'depends': ['base'],
|
||||||
|
'init_xml': [],
|
||||||
|
'update_xml': [],
|
||||||
|
'demo_xml': [],
|
||||||
|
'installable': True,
|
||||||
|
'auto_install': False,
|
||||||
|
}
|
||||||
|
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
|
@ -0,0 +1,432 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##############################################################################
|
||||||
|
#
|
||||||
|
# OpenERP, Open Source Management Solution
|
||||||
|
# Copyright (C) 2004-today OpenERP SA (<http://www.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 osv import fields
|
||||||
|
from tools.translate import _
|
||||||
|
|
||||||
|
class base_stage(object):
|
||||||
|
""" Base utility mixin class for objects willing to manage their stages.
|
||||||
|
Object that inherit from this class should inherit from mailgate.thread
|
||||||
|
to have access to the mail gateway, as well as Chatter. Objects
|
||||||
|
subclassing this class should define the following colums:
|
||||||
|
- ``date_open`` (datetime field)
|
||||||
|
- ``date_closed`` (datetime field)
|
||||||
|
- ``user_id`` (many2one to res.users)
|
||||||
|
- ``partner_id`` (many2one to res.partner)
|
||||||
|
- ``stage_id`` (many2one to a stage definition model)
|
||||||
|
- ``state`` (selection field, related to the stage_id.state)
|
||||||
|
"""
|
||||||
|
|
||||||
|
def _get_default_partner(self, cr, uid, context=None):
|
||||||
|
""" Gives id of partner for current user
|
||||||
|
:param context: if portal not in context returns False
|
||||||
|
"""
|
||||||
|
if context is None:
|
||||||
|
context = {}
|
||||||
|
if not context or not context.get('portal'):
|
||||||
|
return False
|
||||||
|
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
|
||||||
|
if hasattr(user, 'partner_address_id') and user.partner_address_id:
|
||||||
|
return user.partner_address_id
|
||||||
|
return user.company_id.partner_id.id
|
||||||
|
|
||||||
|
def _get_default_email(self, cr, uid, context=None):
|
||||||
|
""" Gives default email address for current user
|
||||||
|
:param context: if portal not in context returns False
|
||||||
|
"""
|
||||||
|
if context is None:
|
||||||
|
context = {}
|
||||||
|
if not context or not context.get('portal'):
|
||||||
|
return False
|
||||||
|
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
|
||||||
|
return user.user_email
|
||||||
|
|
||||||
|
def _get_default_user(self, cr, uid, context=None):
|
||||||
|
""" Gives current user id
|
||||||
|
:param context: if portal not in context returns False
|
||||||
|
"""
|
||||||
|
if context is None:
|
||||||
|
context = {}
|
||||||
|
if not context or not context.get('portal'):
|
||||||
|
return False
|
||||||
|
return uid
|
||||||
|
|
||||||
|
def onchange_partner_address_id(self, cr, uid, ids, add, email=False):
|
||||||
|
""" This function returns value of partner email based on Partner Address
|
||||||
|
:param add: Id of Partner's address
|
||||||
|
:param email: Partner's email ID
|
||||||
|
"""
|
||||||
|
data = {'value': {'email_from': False, 'phone':False}}
|
||||||
|
if add:
|
||||||
|
address = self.pool.get('res.partner').browse(cr, uid, add)
|
||||||
|
data['value'] = {'email_from': address and address.email or False ,
|
||||||
|
'phone': address and address.phone or False}
|
||||||
|
if 'phone' not in self._columns:
|
||||||
|
del data['value']['phone']
|
||||||
|
return data
|
||||||
|
|
||||||
|
def onchange_partner_id(self, cr, uid, ids, part, email=False):
|
||||||
|
""" This function returns value of partner address based on partner
|
||||||
|
:param part: Partner's id
|
||||||
|
:param email: Partner's email ID
|
||||||
|
"""
|
||||||
|
data={}
|
||||||
|
if part:
|
||||||
|
addr = self.pool.get('res.partner').address_get(cr, uid, [part], ['contact'])
|
||||||
|
data.update(self.onchange_partner_address_id(cr, uid, ids, addr['contact'])['value'])
|
||||||
|
return {'value': data}
|
||||||
|
|
||||||
|
def _get_default_section_id(self, cr, uid, context=None):
|
||||||
|
""" Gives default section """
|
||||||
|
return False
|
||||||
|
|
||||||
|
def _get_default_stage_id(self, cr, uid, context=None):
|
||||||
|
""" Gives default stage_id """
|
||||||
|
return self.stage_find(cr, uid, [], None, [('state', '=', 'draft')], context=context)
|
||||||
|
|
||||||
|
def stage_find(self, cr, uid, cases, section_id, domain=[], order='sequence', context=None):
|
||||||
|
""" Find stage, with a given (optional) domain on the search,
|
||||||
|
ordered by the order parameter. If several stages match the
|
||||||
|
search criterions, the first one will be returned, according
|
||||||
|
to the requested search order.
|
||||||
|
This method is meant to be overriden by subclasses. That way
|
||||||
|
specific behaviors can be achieved for every class inheriting
|
||||||
|
from base_stage.
|
||||||
|
|
||||||
|
:param cases: browse_record of cases
|
||||||
|
:param section_id: section limitating the search, given for
|
||||||
|
a generic search (for example default search).
|
||||||
|
A section models concepts such as Sales team
|
||||||
|
(for CRM), ou departments (for HR).
|
||||||
|
:param domain: a domain on the search of stages
|
||||||
|
:param order: order of the search
|
||||||
|
"""
|
||||||
|
return False
|
||||||
|
|
||||||
|
def stage_set_with_state_name(self, cr, uid, cases, state_name, context=None):
|
||||||
|
""" Set a new stage, with a state_name instead of a stage_id
|
||||||
|
:param cases: browse_record of cases
|
||||||
|
"""
|
||||||
|
if isinstance(cases, (int, long)):
|
||||||
|
cases = self.browse(cr, uid, cases, context=context)
|
||||||
|
for case in cases:
|
||||||
|
stage_id = self.stage_find(cr, uid, [case], None, [('state', '=', state_name)], context=context)
|
||||||
|
if stage_id:
|
||||||
|
self.stage_set(cr, uid, [case.id], stage_id, context=context)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def stage_set(self, cr, uid, ids, stage_id, context=None):
|
||||||
|
""" Set the new stage. This methods is the right method to call
|
||||||
|
when changing states. It also checks whether an onchange is
|
||||||
|
defined, and execute it.
|
||||||
|
"""
|
||||||
|
value = {}
|
||||||
|
if hasattr(self, 'onchange_stage_id'):
|
||||||
|
value = self.onchange_stage_id(cr, uid, ids, stage_id, context=context)['value']
|
||||||
|
value['stage_id'] = stage_id
|
||||||
|
self.stage_set_send_note(cr, uid, ids, stage_id, context=context)
|
||||||
|
return self.write(cr, uid, ids, value, context=context)
|
||||||
|
|
||||||
|
def stage_change(self, cr, uid, ids, op, order, context=None):
|
||||||
|
""" Change the stage and take the next one, based on a condition
|
||||||
|
writen for the 'sequence' field and an operator. This methods
|
||||||
|
checks whether the case has a current stage, and takes its
|
||||||
|
sequence. Otherwise, a default 0 sequence is chosen and this
|
||||||
|
method will therefore choose the first available stage.
|
||||||
|
For example if op is '>' and current stage has a sequence of
|
||||||
|
10, this will call stage_find, with [('sequence', '>', '10')].
|
||||||
|
"""
|
||||||
|
for case in self.browse(cr, uid, ids, context=context):
|
||||||
|
seq = 0
|
||||||
|
if case.stage_id:
|
||||||
|
seq = case.stage_id.sequence or 0
|
||||||
|
section_id = None
|
||||||
|
next_stage_id = self.stage_find(cr, uid, [case], None, [('sequence', op, seq)],order, context=context)
|
||||||
|
if next_stage_id:
|
||||||
|
return self.stage_set(cr, uid, [case.id], next_stage_id, context=context)
|
||||||
|
return False
|
||||||
|
|
||||||
|
def stage_next(self, cr, uid, ids, context=None):
|
||||||
|
""" This function computes next stage for case from its current stage
|
||||||
|
using available stage for that case type
|
||||||
|
"""
|
||||||
|
return self.stage_change(cr, uid, ids, '>','sequence', context)
|
||||||
|
|
||||||
|
def stage_previous(self, cr, uid, ids, context=None):
|
||||||
|
""" This function computes previous stage for case from its current
|
||||||
|
stage using available stage for that case type
|
||||||
|
"""
|
||||||
|
return self.stage_change(cr, uid, ids, '<', 'sequence desc', context)
|
||||||
|
|
||||||
|
def copy(self, cr, uid, id, default=None, context=None):
|
||||||
|
""" Overrides orm copy method to avoid copying messages,
|
||||||
|
as well as date_closed and date_open columns if they
|
||||||
|
exist."""
|
||||||
|
if default is None:
|
||||||
|
default = {}
|
||||||
|
|
||||||
|
if hasattr(self, '_columns'):
|
||||||
|
if self._columns.get('date_closed'):
|
||||||
|
default.update({ 'date_closed': False, })
|
||||||
|
if self._columns.get('date_open'):
|
||||||
|
default.update({ 'date_open': False })
|
||||||
|
return super(base_stage, self).copy(cr, uid, id, default, context=context)
|
||||||
|
|
||||||
|
def case_escalate(self, cr, uid, ids, context=None):
|
||||||
|
""" Escalates case to parent level """
|
||||||
|
cases = self.browse(cr, uid, ids, context=context)
|
||||||
|
cases[0].state # fill browse record cache, for _action having old and new values
|
||||||
|
for case in cases:
|
||||||
|
data = {'active': True}
|
||||||
|
if case.section_id.parent_id:
|
||||||
|
data['section_id'] = case.section_id.parent_id.id
|
||||||
|
if case.section_id.parent_id.change_responsible:
|
||||||
|
if case.section_id.parent_id.user_id:
|
||||||
|
data['user_id'] = case.section_id.parent_id.user_id.id
|
||||||
|
else:
|
||||||
|
raise osv.except_osv(_('Error !'), _('You can not escalate, you are already at the top level regarding your sales-team category.'))
|
||||||
|
self.write(cr, uid, [case.id], data, context=context)
|
||||||
|
case.case_escalate_send_note(case.section_id.parent_id, context=context)
|
||||||
|
cases = self.browse(cr, uid, ids, context=context)
|
||||||
|
self._action(cr, uid, cases, 'escalate', context=context)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def case_open(self, cr, uid, ids, context=None):
|
||||||
|
""" Opens case """
|
||||||
|
cases = self.browse(cr, uid, ids, context=context)
|
||||||
|
for case in cases:
|
||||||
|
data = {'active': True}
|
||||||
|
if case.stage_id and case.stage_id.state == 'draft':
|
||||||
|
data['date_open'] = fields.datetime.now()
|
||||||
|
if not case.user_id:
|
||||||
|
data['user_id'] = uid
|
||||||
|
self.case_set(cr, uid, [case.id], 'open', data, context=context)
|
||||||
|
self.case_open_send_note(cr, uid, [case.id], context=context)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def case_close(self, cr, uid, ids, context=None):
|
||||||
|
""" Closes case """
|
||||||
|
self.case_set(cr, uid, ids, 'done', {'active': True, 'date_closed': fields.datetime.now()}, context=context)
|
||||||
|
self.case_close_send_note(cr, uid, ids, context=context)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def case_cancel(self, cr, uid, ids, context=None):
|
||||||
|
""" Cancels case """
|
||||||
|
self.case_set(cr, uid, ids, 'cancel', {'active': True}, context=context)
|
||||||
|
self.case_cancel_send_note(cr, uid, ids, context=context)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def case_pending(self, cr, uid, ids, context=None):
|
||||||
|
""" Set case as pending """
|
||||||
|
self.case_set(cr, uid, ids, 'pending', {'active': True}, context=context)
|
||||||
|
self.case_pending_send_note(cr, uid, ids, context=context)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def case_reset(self, cr, uid, ids, context=None):
|
||||||
|
""" Resets case as draft """
|
||||||
|
self.case_set(cr, uid, ids, 'draft', {'active': True}, context=context)
|
||||||
|
self.case_reset_send_note(cr, uid, ids, context=context)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def case_set(self, cr, uid, ids, new_state_name=None, values_to_update=None, new_stage_id=None, context=None):
|
||||||
|
""" Generic method for setting case. This methods wraps the update
|
||||||
|
of the record, as well as call to _action and browse_record
|
||||||
|
case setting to fill the cache.
|
||||||
|
|
||||||
|
:params new_state_name: the new state of the record; this method
|
||||||
|
will call ``stage_set_with_state_name``
|
||||||
|
that will find the stage matching the
|
||||||
|
new state, using the ``stage_find`` method.
|
||||||
|
:params new_stage_id: alternatively, you may directly give the
|
||||||
|
new stage of the record
|
||||||
|
:params state_name: the new value of the state, such as
|
||||||
|
'draft' or 'close'.
|
||||||
|
:params update_values: values that will be added with the state
|
||||||
|
update when writing values to the record.
|
||||||
|
"""
|
||||||
|
cases = self.browse(cr, uid, ids, context=context)
|
||||||
|
cases[0].state # fill browse record cache, for _action having old and new values
|
||||||
|
# 1. update the stage
|
||||||
|
if new_state_name:
|
||||||
|
self.stage_set_with_state_name(cr, uid, cases, new_state_name, context=context)
|
||||||
|
elif not (new_stage_id is None):
|
||||||
|
self.stage_set(cr, uid, ids, new_stage_id, context=context)
|
||||||
|
# 2. update values
|
||||||
|
if values_to_update:
|
||||||
|
self.write(cr, uid, ids, values_to_update, context=context)
|
||||||
|
# 3. call _action for base action rule
|
||||||
|
if new_state_name:
|
||||||
|
self._action(cr, uid, cases, new_state_name, context=context)
|
||||||
|
elif not (new_stage_id is None):
|
||||||
|
new_state_name = self.read(cr, uid, ids, ['state'], context=context)[0]['state']
|
||||||
|
self._action(cr, uid, cases, new_state_name, context=context)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def _action(self, cr, uid, cases, state_to, scrit=None, context=None):
|
||||||
|
if context is None:
|
||||||
|
context = {}
|
||||||
|
context['state_to'] = state_to
|
||||||
|
rule_obj = self.pool.get('base.action.rule')
|
||||||
|
if not rule_obj:
|
||||||
|
return True
|
||||||
|
model_obj = self.pool.get('ir.model')
|
||||||
|
model_ids = model_obj.search(cr, uid, [('model','=',self._name)], context=context)
|
||||||
|
rule_ids = rule_obj.search(cr, uid, [('model_id','=',model_ids[0])], context=context)
|
||||||
|
return rule_obj._action(cr, uid, rule_ids, cases, scrit=scrit, context=context)
|
||||||
|
|
||||||
|
def remind_partner(self, cr, uid, ids, context=None, attach=False):
|
||||||
|
return self.remind_user(cr, uid, ids, context, attach,
|
||||||
|
destination=False)
|
||||||
|
|
||||||
|
def remind_user(self, cr, uid, ids, context=None, attach=False, destination=True):
|
||||||
|
mail_message = self.pool.get('mail.message')
|
||||||
|
for case in self.browse(cr, uid, ids, context=context):
|
||||||
|
if not destination and not case.email_from:
|
||||||
|
return False
|
||||||
|
if not case.user_id.user_email:
|
||||||
|
return False
|
||||||
|
if destination and case.section_id.user_id:
|
||||||
|
case_email = case.section_id.user_id.user_email
|
||||||
|
else:
|
||||||
|
case_email = case.user_id.user_email
|
||||||
|
|
||||||
|
src = case_email
|
||||||
|
dest = case.user_id.user_email or ""
|
||||||
|
body = case.description or ""
|
||||||
|
for message in case.message_ids:
|
||||||
|
if message.email_from and message.body_text:
|
||||||
|
body = message.body_text
|
||||||
|
break
|
||||||
|
|
||||||
|
if not destination:
|
||||||
|
src, dest = dest, case.email_from
|
||||||
|
if body and case.user_id.signature:
|
||||||
|
if body:
|
||||||
|
body += '\n\n%s' % (case.user_id.signature)
|
||||||
|
else:
|
||||||
|
body = '\n\n%s' % (case.user_id.signature)
|
||||||
|
|
||||||
|
body = self.format_body(body)
|
||||||
|
|
||||||
|
attach_to_send = {}
|
||||||
|
|
||||||
|
if attach:
|
||||||
|
attach_ids = self.pool.get('ir.attachment').search(cr, uid, [('res_model', '=', self._name), ('res_id', '=', case.id)])
|
||||||
|
attach_to_send = self.pool.get('ir.attachment').read(cr, uid, attach_ids, ['datas_fname', 'datas'])
|
||||||
|
attach_to_send = dict(map(lambda x: (x['datas_fname'], base64.decodestring(x['datas'])), attach_to_send))
|
||||||
|
|
||||||
|
# Send an email
|
||||||
|
subject = "Reminder: [%s] %s" % (str(case.id), case.name, )
|
||||||
|
mail_message.schedule_with_attach(cr, uid,
|
||||||
|
src,
|
||||||
|
[dest],
|
||||||
|
subject,
|
||||||
|
body,
|
||||||
|
model=self._name,
|
||||||
|
reply_to=case.section_id.reply_to,
|
||||||
|
res_id=case.id,
|
||||||
|
attachments=attach_to_send,
|
||||||
|
context=context
|
||||||
|
)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def _check(self, cr, uid, ids=False, context=None):
|
||||||
|
""" Function called by the scheduler to process cases for date actions.
|
||||||
|
Must be overriden by inheriting classes.
|
||||||
|
"""
|
||||||
|
return True
|
||||||
|
|
||||||
|
def format_body(self, body):
|
||||||
|
return self.pool.get('base.action.rule').format_body(body)
|
||||||
|
|
||||||
|
def format_mail(self, obj, body):
|
||||||
|
return self.pool.get('base.action.rule').format_mail(obj, body)
|
||||||
|
|
||||||
|
def message_thread_followers(self, cr, uid, ids, context=None):
|
||||||
|
res = {}
|
||||||
|
for case in self.browse(cr, uid, ids, context=context):
|
||||||
|
l=[]
|
||||||
|
if case.email_cc:
|
||||||
|
l.append(case.email_cc)
|
||||||
|
if case.user_id and case.user_id.user_email:
|
||||||
|
l.append(case.user_id.user_email)
|
||||||
|
res[case.id] = l
|
||||||
|
return res
|
||||||
|
|
||||||
|
# ******************************
|
||||||
|
# Notifications
|
||||||
|
# ******************************
|
||||||
|
|
||||||
|
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
|
||||||
|
""" Default prefix for notifications. For example: "%s has been
|
||||||
|
<b>closed</b>.". As several models will inherit from base_stage,
|
||||||
|
this method returns a void string. Class using base_stage
|
||||||
|
will have to override this method to define the prefix they
|
||||||
|
want to display.
|
||||||
|
"""
|
||||||
|
return ''
|
||||||
|
|
||||||
|
def stage_set_send_note(self, cr, uid, ids, stage_id, context=None):
|
||||||
|
""" Send a notification when the stage changes. This method has
|
||||||
|
to be overriden, because each document will have its particular
|
||||||
|
behavior and/or stage model (such as project.task.type or
|
||||||
|
crm.case.stage).
|
||||||
|
"""
|
||||||
|
return True
|
||||||
|
|
||||||
|
def case_open_send_note(self, cr, uid, ids, context=None):
|
||||||
|
for id in ids:
|
||||||
|
msg = _('%s has been <b>opened</b>.') % (self.case_get_note_msg_prefix(cr, uid, id, context=context))
|
||||||
|
self.message_append_note(cr, uid, [id], body=msg, context=context)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def case_close_send_note(self, cr, uid, ids, context=None):
|
||||||
|
for id in ids:
|
||||||
|
msg = _('%s has been <b>closed</b>.') % (self.case_get_note_msg_prefix(cr, uid, id, context=context))
|
||||||
|
self.message_append_note(cr, uid, [id], body=msg, context=context)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def case_cancel_send_note(self, cr, uid, ids, context=None):
|
||||||
|
for id in ids:
|
||||||
|
msg = _('%s has been <b>canceled</b>.') % (self.case_get_note_msg_prefix(cr, uid, id, context=context))
|
||||||
|
self.message_append_note(cr, uid, [id], body=msg, context=context)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def case_pending_send_note(self, cr, uid, ids, context=None):
|
||||||
|
for id in ids:
|
||||||
|
msg = _('%s is now <b>pending</b>.') % (self.case_get_note_msg_prefix(cr, uid, id, context=context))
|
||||||
|
self.message_append_note(cr, uid, [id], body=msg, context=context)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def case_reset_send_note(self, cr, uid, ids, context=None):
|
||||||
|
for id in ids:
|
||||||
|
msg = _('%s has been <b>renewed</b>.') % (self.case_get_note_msg_prefix(cr, uid, id, context=context))
|
||||||
|
self.message_append_note(cr, uid, [id], body=msg, context=context)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def case_escalate_send_note(self, cr, uid, ids, new_section=None, context=None):
|
||||||
|
for id in ids:
|
||||||
|
if new_section:
|
||||||
|
msg = '%s has been <b>escalated</b> to <b>%s</b>.' % (self.case_get_note_msg_prefix(cr, uid, id, context=context), new_section.name)
|
||||||
|
else:
|
||||||
|
msg = '%s has been <b>escalated</b>.' % (self.case_get_note_msg_prefix(cr, uid, id, context=context))
|
||||||
|
self.message_append_note(cr, uid, [id], 'System Notification', msg, context=context)
|
||||||
|
return True
|
|
@ -0,0 +1,194 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
##############################################################################
|
||||||
|
#
|
||||||
|
# OpenERP, Open Source Management Solution
|
||||||
|
# Copyright (C) 2004-today OpenERP SA (<http://www.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 osv import fields
|
||||||
|
from tools.translate import _
|
||||||
|
|
||||||
|
class base_state(object):
|
||||||
|
""" Base utility mixin class for objects willing to manage their state.
|
||||||
|
Object subclassing this class should define the following colums:
|
||||||
|
- ``date_open`` (datetime field)
|
||||||
|
- ``date_closed`` (datetime field)
|
||||||
|
- ``user_id`` (many2one to res.users)
|
||||||
|
- ``partner_id`` (many2one to res.partner)
|
||||||
|
- ``state`` (selection field)
|
||||||
|
"""
|
||||||
|
|
||||||
|
def _get_default_partner(self, cr, uid, context=None):
|
||||||
|
""" Gives id of partner for current user
|
||||||
|
:param context: if portal not in context returns False
|
||||||
|
"""
|
||||||
|
if context is None:
|
||||||
|
context = {}
|
||||||
|
if not context or not context.get('portal'):
|
||||||
|
return False
|
||||||
|
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
|
||||||
|
if hasattr(user, 'partner_address_id') and user.partner_address_id:
|
||||||
|
return user.partner_address_id
|
||||||
|
return user.company_id.partner_id.id
|
||||||
|
|
||||||
|
def _get_default_email(self, cr, uid, context=None):
|
||||||
|
""" Gives default email address for current user
|
||||||
|
:param context: if portal not in context returns False
|
||||||
|
"""
|
||||||
|
if context is None:
|
||||||
|
context = {}
|
||||||
|
if not context or not context.get('portal'):
|
||||||
|
return False
|
||||||
|
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
|
||||||
|
return user.user_email
|
||||||
|
|
||||||
|
def _get_default_user(self, cr, uid, context=None):
|
||||||
|
""" Gives current user id
|
||||||
|
:param context: if portal not in context returns False
|
||||||
|
"""
|
||||||
|
if context is None:
|
||||||
|
context = {}
|
||||||
|
if not context or not context.get('portal'):
|
||||||
|
return False
|
||||||
|
return uid
|
||||||
|
|
||||||
|
def onchange_partner_address_id(self, cr, uid, ids, add, email=False):
|
||||||
|
""" This function returns value of partner email based on Partner Address
|
||||||
|
:param add: Id of Partner's address
|
||||||
|
:param email: Partner's email ID
|
||||||
|
"""
|
||||||
|
data = {'value': {'email_from': False, 'phone':False}}
|
||||||
|
if add:
|
||||||
|
address = self.pool.get('res.partner').browse(cr, uid, add)
|
||||||
|
data['value'] = {'email_from': address and address.email or False ,
|
||||||
|
'phone': address and address.phone or False}
|
||||||
|
if 'phone' not in self._columns:
|
||||||
|
del data['value']['phone']
|
||||||
|
return data
|
||||||
|
|
||||||
|
def onchange_partner_id(self, cr, uid, ids, part, email=False):
|
||||||
|
""" This function returns value of partner address based on partner
|
||||||
|
:param part: Partner's id
|
||||||
|
:param email: Partner's email ID
|
||||||
|
"""
|
||||||
|
data={}
|
||||||
|
if part:
|
||||||
|
addr = self.pool.get('res.partner').address_get(cr, uid, [part], ['contact'])
|
||||||
|
data.update(self.onchange_partner_address_id(cr, uid, ids, addr['contact'])['value'])
|
||||||
|
return {'value': data}
|
||||||
|
|
||||||
|
def case_open(self, cr, uid, ids, context=None):
|
||||||
|
""" Opens case """
|
||||||
|
cases = self.browse(cr, uid, ids, context=context)
|
||||||
|
for case in cases:
|
||||||
|
values = {'active': True}
|
||||||
|
if case.state == 'draft':
|
||||||
|
values['date_open'] = fields.datetime.now()
|
||||||
|
if not case.user_id:
|
||||||
|
values['user_id'] = uid
|
||||||
|
self.case_set(cr, uid, [case.id], 'open', values, context=context)
|
||||||
|
self.case_open_send_note(cr, uid, [case.id], context=context)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def case_close(self, cr, uid, ids, context=None):
|
||||||
|
""" Closes case """
|
||||||
|
self.case_set(cr, uid, ids, 'done', {'date_closed': fields.datetime.now()}, context=context)
|
||||||
|
self.case_close_send_note(cr, uid, ids, context=context)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def case_cancel(self, cr, uid, ids, context=None):
|
||||||
|
""" Cancels case """
|
||||||
|
self.case_set(cr, uid, ids, 'cancel', {'active': True}, context=context)
|
||||||
|
self.case_cancel_send_note(cr, uid, ids, context=context)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def case_pending(self, cr, uid, ids, context=None):
|
||||||
|
""" Sets case as pending """
|
||||||
|
self.case_set(cr, uid, ids, 'pending', {'active': True}, context=context)
|
||||||
|
self.case_pending_send_note(cr, uid, ids, context=context)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def case_reset(self, cr, uid, ids, context=None):
|
||||||
|
""" Resets case as draft """
|
||||||
|
self.case_set(cr, uid, ids, 'draft', {'active': True}, context=context)
|
||||||
|
self.case_reset_send_note(cr, uid, ids, context=context)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def case_set(self, cr, uid, ids, state_name, update_values=None, context=None):
|
||||||
|
""" Generic method for setting case. This methods wraps the update
|
||||||
|
of the record, as well as call to _action and browse_record
|
||||||
|
case setting to fill the cache.
|
||||||
|
|
||||||
|
:params: state_name: the new value of the state, such as
|
||||||
|
'draft' or 'close'.
|
||||||
|
:params: update_values: values that will be added with the state
|
||||||
|
update when writing values to the record.
|
||||||
|
"""
|
||||||
|
cases = self.browse(cr, uid, ids, context=context)
|
||||||
|
cases[0].state # fill browse record cache, for _action having old and new values
|
||||||
|
if update_values is None:
|
||||||
|
update_values = {}
|
||||||
|
update_values['state'] = state_name
|
||||||
|
self.write(cr, uid, ids, update_values, context=context)
|
||||||
|
self._action(cr, uid, cases, state_name, context=context)
|
||||||
|
|
||||||
|
def _action(self, cr, uid, cases, state_to, scrit=None, context=None):
|
||||||
|
if context is None:
|
||||||
|
context = {}
|
||||||
|
context['state_to'] = state_to
|
||||||
|
rule_obj = self.pool.get('base.action.rule')
|
||||||
|
model_obj = self.pool.get('ir.model')
|
||||||
|
model_ids = model_obj.search(cr, uid, [('model','=',self._name)])
|
||||||
|
rule_ids = rule_obj.search(cr, uid, [('model_id','=',model_ids[0])])
|
||||||
|
return rule_obj._action(cr, uid, rule_ids, cases, scrit=scrit, context=context)
|
||||||
|
|
||||||
|
# ******************************
|
||||||
|
# Notifications
|
||||||
|
# ******************************
|
||||||
|
|
||||||
|
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
|
||||||
|
return ''
|
||||||
|
|
||||||
|
def case_open_send_note(self, cr, uid, ids, context=None):
|
||||||
|
for id in ids:
|
||||||
|
msg = _('%s has been <b>opened</b>.') % (self.case_get_note_msg_prefix(cr, uid, id, context=context))
|
||||||
|
self.message_append_note(cr, uid, [id], body=msg, context=context)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def case_close_send_note(self, cr, uid, ids, context=None):
|
||||||
|
for id in ids:
|
||||||
|
msg = _('%s has been <b>closed</b>.') % (self.case_get_note_msg_prefix(cr, uid, id, context=context))
|
||||||
|
self.message_append_note(cr, uid, [id], body=msg, context=context)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def case_cancel_send_note(self, cr, uid, ids, context=None):
|
||||||
|
for id in ids:
|
||||||
|
msg = _('%s has been <b>canceled</b>.') % (self.case_get_note_msg_prefix(cr, uid, id, context=context))
|
||||||
|
self.message_append_note(cr, uid, [id], body=msg, context=context)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def case_pending_send_note(self, cr, uid, ids, context=None):
|
||||||
|
for id in ids:
|
||||||
|
msg = _('%s is now <b>pending</b>.') % (self.case_get_note_msg_prefix(cr, uid, id, context=context))
|
||||||
|
self.message_append_note(cr, uid, [id], body=msg, context=context)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def case_reset_send_note(self, cr, uid, ids, context=None):
|
||||||
|
for id in ids:
|
||||||
|
msg = _('%s has been <b>renewed</b>.') % (self.case_get_note_msg_prefix(cr, uid, id, context=context))
|
||||||
|
self.message_append_note(cr, uid, [id], body=msg, context=context)
|
||||||
|
return True
|
|
@ -0,0 +1,348 @@
|
||||||
|
# Gujarati translation for openobject-addons
|
||||||
|
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||||
|
# This file is distributed under the same license as the openobject-addons package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openobject-addons\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||||
|
"PO-Revision-Date: 2012-05-31 11:09+0000\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: Gujarati <gu@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-06-01 05:33+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 15342)\n"
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: view:res.log.report:0
|
||||||
|
msgid " Year "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: model:ir.model,name:board.model_board_menu_create
|
||||||
|
msgid "Menu Create"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: view:board.menu.create:0
|
||||||
|
msgid "Menu Information"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: view:res.users:0
|
||||||
|
msgid "Latest Connections"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: view:res.log.report:0
|
||||||
|
msgid "Log created in last month"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: view:board.board:0
|
||||||
|
#: model:ir.actions.act_window,name:board.open_board_administration_form
|
||||||
|
msgid "Administration Dashboard"
|
||||||
|
msgstr "સંચાલન ડેશબોર્ડ"
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: view:res.log.report:0
|
||||||
|
msgid "Group By..."
|
||||||
|
msgstr "ગ્રુપ દ્વારા..."
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: view:res.log.report:0
|
||||||
|
msgid "Log created in current year"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: model:ir.model,name:board.model_board_board
|
||||||
|
msgid "Board"
|
||||||
|
msgstr "બૉર્ડ"
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: field:board.menu.create,menu_name:0
|
||||||
|
msgid "Menu Name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: model:ir.actions.act_window,name:board.board_weekly_res_log_report_action
|
||||||
|
#: view:res.log.report:0
|
||||||
|
msgid "Weekly Global Activity"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: field:board.board.line,name:0
|
||||||
|
msgid "Title"
|
||||||
|
msgstr "શીર્ષક"
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: field:res.log.report,nbr:0
|
||||||
|
msgid "# of Entries"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: view:res.log.report:0
|
||||||
|
#: field:res.log.report,month:0
|
||||||
|
msgid "Month"
|
||||||
|
msgstr "મહિનો"
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: view:res.log.report:0
|
||||||
|
msgid "Log created in current month"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: model:ir.actions.act_window,name:board.board_monthly_res_log_report_action
|
||||||
|
#: view:res.log.report:0
|
||||||
|
msgid "Monthly Activity per Document"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: view:board.board:0
|
||||||
|
msgid "Configuration Overview"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: model:ir.actions.act_window,name:board.action_view_board_list_form
|
||||||
|
#: model:ir.ui.menu,name:board.menu_view_board_form
|
||||||
|
msgid "Dashboard Definition"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: selection:res.log.report,month:0
|
||||||
|
msgid "March"
|
||||||
|
msgstr "માર્ચ"
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: selection:res.log.report,month:0
|
||||||
|
msgid "August"
|
||||||
|
msgstr "ઑગસ્ટ"
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: model:ir.actions.act_window,name:board.action_user_connection_tree
|
||||||
|
msgid "User Connections"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: field:res.log.report,creation_date:0
|
||||||
|
msgid "Creation Date"
|
||||||
|
msgstr "સર્જન તારીખ"
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: view:res.log.report:0
|
||||||
|
msgid "Log Analysis"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: field:res.log.report,res_model:0
|
||||||
|
msgid "Object"
|
||||||
|
msgstr "વસ્તુ"
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: selection:res.log.report,month:0
|
||||||
|
msgid "June"
|
||||||
|
msgstr "જૂન"
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: field:board.board,line_ids:0
|
||||||
|
msgid "Action Views"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: model:ir.model,name:board.model_res_log_report
|
||||||
|
msgid "Log Report"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: code:addons/board/wizard/board_menu_create.py:46
|
||||||
|
#, python-format
|
||||||
|
msgid "Please Insert Dashboard View(s) !"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: selection:res.log.report,month:0
|
||||||
|
msgid "July"
|
||||||
|
msgstr "જુલાઈ"
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: view:res.log.report:0
|
||||||
|
#: field:res.log.report,day:0
|
||||||
|
msgid "Day"
|
||||||
|
msgstr "દિવસ"
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: view:board.menu.create:0
|
||||||
|
msgid "Create Menu For Dashboard"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: selection:res.log.report,month:0
|
||||||
|
msgid "February"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: selection:res.log.report,month:0
|
||||||
|
msgid "October"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: model:ir.model,name:board.model_board_board_line
|
||||||
|
msgid "Board Line"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: field:board.menu.create,menu_parent_id:0
|
||||||
|
msgid "Parent Menu"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: view:res.log.report:0
|
||||||
|
msgid " Month-1 "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: selection:res.log.report,month:0
|
||||||
|
msgid "January"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: view:board.board:0
|
||||||
|
msgid "Users"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: selection:res.log.report,month:0
|
||||||
|
msgid "November"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: help:board.board.line,sequence:0
|
||||||
|
msgid ""
|
||||||
|
"Gives the sequence order when displaying a list of "
|
||||||
|
"board lines."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: selection:res.log.report,month:0
|
||||||
|
msgid "April"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: view:board.board:0
|
||||||
|
#: field:board.board,name:0
|
||||||
|
#: field:board.board.line,board_id:0
|
||||||
|
#: model:ir.ui.menu,name:board.menu_dasboard
|
||||||
|
msgid "Dashboard"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: code:addons/board/wizard/board_menu_create.py:45
|
||||||
|
#, python-format
|
||||||
|
msgid "User Error!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: field:board.board.line,action_id:0
|
||||||
|
msgid "Action"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: field:board.board.line,position:0
|
||||||
|
msgid "Position"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: view:res.log.report:0
|
||||||
|
msgid "Model"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: model:ir.actions.act_window,name:board.board_homepage_action
|
||||||
|
msgid "Home Page"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: model:ir.actions.act_window,name:board.action_latest_activities_tree
|
||||||
|
msgid "Latest Activities"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: selection:board.board.line,position:0
|
||||||
|
msgid "Left"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: field:board.board,view_id:0
|
||||||
|
msgid "Board View"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: selection:board.board.line,position:0
|
||||||
|
msgid "Right"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: field:board.board.line,width:0
|
||||||
|
msgid "Width"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: view:res.log.report:0
|
||||||
|
msgid " Month "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: field:board.board.line,sequence:0
|
||||||
|
msgid "Sequence"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: selection:res.log.report,month:0
|
||||||
|
msgid "September"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: selection:res.log.report,month:0
|
||||||
|
msgid "December"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: view:board.board:0
|
||||||
|
#: view:board.menu.create:0
|
||||||
|
msgid "Create Menu"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: field:board.board.line,height:0
|
||||||
|
msgid "Height"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: model:ir.actions.act_window,name:board.action_board_menu_create
|
||||||
|
msgid "Create Board Menu"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: selection:res.log.report,month:0
|
||||||
|
msgid "May"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: view:res.log.report:0
|
||||||
|
#: field:res.log.report,name:0
|
||||||
|
msgid "Year"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: view:board.menu.create:0
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: board
|
||||||
|
#: view:board.board:0
|
||||||
|
msgid "Dashboard View"
|
||||||
|
msgstr ""
|
|
@ -8,14 +8,14 @@ msgstr ""
|
||||||
"Project-Id-Version: openobject-addons\n"
|
"Project-Id-Version: openobject-addons\n"
|
||||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||||
"PO-Revision-Date: 2012-05-10 17:59+0000\n"
|
"PO-Revision-Date: 2012-05-31 15:16+0000\n"
|
||||||
"Last-Translator: Raphael Collet (OpenERP) <Unknown>\n"
|
"Last-Translator: ThinkOpen Solutions <Unknown>\n"
|
||||||
"Language-Team: Portuguese <pt@li.org>\n"
|
"Language-Team: Portuguese <pt@li.org>\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2012-05-11 05:13+0000\n"
|
"X-Launchpad-Export-Date: 2012-06-01 05:33+0000\n"
|
||||||
"X-Generator: Launchpad (build 15225)\n"
|
"X-Generator: Launchpad (build 15342)\n"
|
||||||
|
|
||||||
#. module: caldav
|
#. module: caldav
|
||||||
#: view:basic.calendar:0
|
#: view:basic.calendar:0
|
||||||
|
@ -672,7 +672,7 @@ msgstr ""
|
||||||
#. module: caldav
|
#. module: caldav
|
||||||
#: view:caldav.browse:0
|
#: view:caldav.browse:0
|
||||||
msgid "Browse Caldav"
|
msgid "Browse Caldav"
|
||||||
msgstr ""
|
msgstr "Pesquisa Caldav"
|
||||||
|
|
||||||
#. module: caldav
|
#. module: caldav
|
||||||
#: field:user.preference,host_name:0
|
#: field:user.preference,host_name:0
|
||||||
|
|
|
@ -57,6 +57,7 @@ Creates a dashboard for CRM that includes:
|
||||||
'depends': [
|
'depends': [
|
||||||
'base_action_rule',
|
'base_action_rule',
|
||||||
'base_setup',
|
'base_setup',
|
||||||
|
'base_status',
|
||||||
'process',
|
'process',
|
||||||
'mail',
|
'mail',
|
||||||
'base_calendar',
|
'base_calendar',
|
||||||
|
@ -66,7 +67,6 @@ Creates a dashboard for CRM that includes:
|
||||||
],
|
],
|
||||||
'init_xml': [
|
'init_xml': [
|
||||||
'crm_data.xml',
|
'crm_data.xml',
|
||||||
'crm_meeting_data.xml',
|
|
||||||
'crm_lead_data.xml',
|
'crm_lead_data.xml',
|
||||||
'crm_meeting_data.xml',
|
'crm_meeting_data.xml',
|
||||||
'crm_phonecall_data.xml',
|
'crm_phonecall_data.xml',
|
||||||
|
|
|
@ -11,27 +11,10 @@
|
||||||
<field name="name" string="Opportunity"/>
|
<field name="name" string="Opportunity"/>
|
||||||
<field name="partner_id" string="Customer"/>
|
<field name="partner_id" string="Customer"/>
|
||||||
<field name="stage_id"/>
|
<field name="stage_id"/>
|
||||||
<button name="stage_previous" string="Previous Stage"
|
|
||||||
states="open,pending" type="object" icon="gtk-go-back" />
|
|
||||||
<button name="stage_next" string="Next Stage"
|
|
||||||
states="open,pending" type="object"
|
|
||||||
icon="gtk-go-forward" />
|
|
||||||
<field name="planned_revenue" sum="Total of Planned Revenue"/>
|
<field name="planned_revenue" sum="Total of Planned Revenue"/>
|
||||||
<field name="probability" widget="progressbar" avg="Avg. of Probability"/>
|
<field name="probability" widget="progressbar" avg="Avg. of Probability"/>
|
||||||
<field name="date_deadline" invisible="1"/>
|
<field name="date_deadline" invisible="1"/>
|
||||||
<field name="state"/>
|
<field name="state" groups="base.group_no_one"/>
|
||||||
<button name="case_open" string="Open"
|
|
||||||
states="draft,pending" type="object"
|
|
||||||
icon="gtk-go-forward" />
|
|
||||||
<button name="case_pending" string="Pending"
|
|
||||||
states="open,draft" type="object"
|
|
||||||
icon="gtk-media-pause" />
|
|
||||||
<button name="case_mark_lost" string="Lost"
|
|
||||||
states="open,pending" type="object"
|
|
||||||
icon="gtk-cancel" />
|
|
||||||
<button name="case_close" string="Won"
|
|
||||||
states="open,draft,pending" type="object"
|
|
||||||
icon="gtk-apply" />
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
##############################################################################
|
##############################################################################
|
||||||
#
|
#
|
||||||
# OpenERP, Open Source Management Solution
|
# OpenERP, Open Source Management Solution
|
||||||
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
|
# Copyright (C) 2004-today OpenERP SA (<http://www.openerp.com>)
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
@ -19,12 +19,11 @@
|
||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
import time
|
|
||||||
import base64
|
import base64
|
||||||
import tools
|
import time
|
||||||
|
|
||||||
from osv import fields
|
from osv import fields
|
||||||
from osv import osv
|
from osv import osv
|
||||||
|
import tools
|
||||||
from tools.translate import _
|
from tools.translate import _
|
||||||
|
|
||||||
MAX_LEVEL = 15
|
MAX_LEVEL = 15
|
||||||
|
@ -57,8 +56,11 @@ class crm_case_channel(osv.osv):
|
||||||
}
|
}
|
||||||
|
|
||||||
class crm_case_stage(osv.osv):
|
class crm_case_stage(osv.osv):
|
||||||
""" Stage of case """
|
""" Model for case stages. This models the main stages of a document
|
||||||
|
management flow. Main CRM objects (leads, opportunities, project
|
||||||
|
issues, ...) will now use only stages, instead of state and stages.
|
||||||
|
Stages are for example used to display the kanban view of records.
|
||||||
|
"""
|
||||||
_name = "crm.case.stage"
|
_name = "crm.case.stage"
|
||||||
_description = "Stage of case"
|
_description = "Stage of case"
|
||||||
_rec_name = 'name'
|
_rec_name = 'name'
|
||||||
|
@ -66,22 +68,34 @@ class crm_case_stage(osv.osv):
|
||||||
|
|
||||||
_columns = {
|
_columns = {
|
||||||
'name': fields.char('Stage Name', size=64, required=True, translate=True),
|
'name': fields.char('Stage Name', size=64, required=True, translate=True),
|
||||||
'sequence': fields.integer('Sequence', help="Used to order stages."),
|
'sequence': fields.integer('Sequence', help="Used to order stages. Lower is better."),
|
||||||
'probability': fields.float('Probability (%)', required=True, help="This percentage depicts the default/average probability of the Case for this stage to be a success"),
|
'probability': fields.float('Probability (%)', required=True, help="This percentage depicts the default/average probability of the Case for this stage to be a success"),
|
||||||
'on_change': fields.boolean('Change Probability Automatically', help="Setting this stage will change the probability automatically on the opportunity."),
|
'on_change': fields.boolean('Change Probability Automatically', help="Setting this stage will change the probability automatically on the opportunity."),
|
||||||
'requirements': fields.text('Requirements'),
|
'requirements': fields.text('Requirements'),
|
||||||
'section_ids':fields.many2many('crm.case.section', 'section_stage_rel', 'stage_id', 'section_id', 'Sections'),
|
'section_ids':fields.many2many('crm.case.section', 'section_stage_rel', 'stage_id', 'section_id', string='Sections',
|
||||||
'case_default': fields.boolean('Common to All Teams', help="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."),
|
help="Link between stages and sales teams. When set, this limitate the current stage to the selected sales teams."),
|
||||||
|
'state': fields.selection(AVAILABLE_STATES, 'State', required=True, help="The related state for the stage. The state of your document will automatically change regarding the selected stage. For example, if a stage is related to the state 'Close', when your document reaches this stage, it will be automatically have the 'closed' state."),
|
||||||
|
'case_default': fields.boolean('Common to All Teams',
|
||||||
|
help="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."),
|
||||||
|
'fold': fields.boolean('Hide in Views when Empty',
|
||||||
|
help="This stage is not visible, for example in status bar or kanban view, when there are no records in that stage to display."),
|
||||||
|
'type': fields.selection([ ('lead','Lead'),
|
||||||
|
('opportunity', 'Opportunity'),
|
||||||
|
('both', 'Both')],
|
||||||
|
string='Type', size=16, required=True,
|
||||||
|
help="This field is used to distinguish stages related to Leads from stages related to Opportunities, or to specify stages available for both types."),
|
||||||
}
|
}
|
||||||
|
|
||||||
_defaults = {
|
_defaults = {
|
||||||
'sequence': lambda *args: 1,
|
'sequence': lambda *args: 1,
|
||||||
'probability': lambda *args: 0.0,
|
'probability': lambda *args: 0.0,
|
||||||
|
'state': 'draft',
|
||||||
|
'fold': False,
|
||||||
|
'type': 'both',
|
||||||
}
|
}
|
||||||
|
|
||||||
class crm_case_section(osv.osv):
|
class crm_case_section(osv.osv):
|
||||||
"""Sales Team"""
|
""" Model for sales teams. """
|
||||||
|
|
||||||
_name = "crm.case.section"
|
_name = "crm.case.section"
|
||||||
_description = "Sales Teams"
|
_description = "Sales Teams"
|
||||||
_order = "complete_name"
|
_order = "complete_name"
|
||||||
|
@ -107,6 +121,7 @@ class crm_case_section(osv.osv):
|
||||||
'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'),
|
'stage_ids': fields.many2many('crm.case.stage', 'section_stage_rel', 'section_id', 'stage_id', 'Stages'),
|
||||||
}
|
}
|
||||||
|
|
||||||
def _get_stage_common(self, cr, uid, context):
|
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
|
return ids
|
||||||
|
@ -171,429 +186,6 @@ class crm_case_resource_type(osv.osv):
|
||||||
'section_id': fields.many2one('crm.case.section', 'Sales Team'),
|
'section_id': fields.many2one('crm.case.section', 'Sales Team'),
|
||||||
}
|
}
|
||||||
|
|
||||||
class crm_base(object):
|
|
||||||
""" Base utility mixin class for crm objects,
|
|
||||||
Object subclassing this should define colums:
|
|
||||||
date_open
|
|
||||||
date_closed
|
|
||||||
user_id
|
|
||||||
partner_id
|
|
||||||
"""
|
|
||||||
def _get_default_partner_address(self, cr, uid, context=None):
|
|
||||||
"""Gives id of default address for current user
|
|
||||||
:param context: if portal in context is false return false anyway
|
|
||||||
"""
|
|
||||||
if context is None:
|
|
||||||
context = {}
|
|
||||||
if not context.get('portal'):
|
|
||||||
return False
|
|
||||||
# was user.address_id.id, but address_id has been removed
|
|
||||||
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
|
|
||||||
if hasattr(user, 'partner_address_id') and user.partner_address_id:
|
|
||||||
return user.partner_address_id
|
|
||||||
return False
|
|
||||||
|
|
||||||
def _get_default_partner(self, cr, uid, context=None):
|
|
||||||
"""Gives id of partner for current user
|
|
||||||
:param context: if portal in context is false return false anyway
|
|
||||||
"""
|
|
||||||
if context is None:
|
|
||||||
context = {}
|
|
||||||
if not context.get('portal', False):
|
|
||||||
return False
|
|
||||||
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
|
|
||||||
if hasattr(user, 'partner_address_id') and user.partner_address_id:
|
|
||||||
return user.partner_address_id
|
|
||||||
return user.company_id.partner_id.id
|
|
||||||
|
|
||||||
def _get_default_email(self, cr, uid, context=None):
|
|
||||||
"""Gives default email address for current user
|
|
||||||
:param context: if portal in context is false return false anyway
|
|
||||||
"""
|
|
||||||
if not context.get('portal', False):
|
|
||||||
return False
|
|
||||||
user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
|
|
||||||
return user.user_email
|
|
||||||
|
|
||||||
def _get_default_user(self, cr, uid, context=None):
|
|
||||||
"""Gives current user id
|
|
||||||
:param context: if portal in context is false return false anyway
|
|
||||||
"""
|
|
||||||
if context and context.get('portal', False):
|
|
||||||
return False
|
|
||||||
return uid
|
|
||||||
|
|
||||||
def _get_section(self, cr, uid, context=None):
|
|
||||||
return False
|
|
||||||
|
|
||||||
def onchange_partner_address_id(self, cr, uid, ids, add, email=False):
|
|
||||||
"""This function returns value of partner email based on Partner Address
|
|
||||||
:param ids: List of case IDs
|
|
||||||
:param add: Id of Partner's address
|
|
||||||
:param email: Partner's email ID
|
|
||||||
"""
|
|
||||||
data = {'value': {'email_from': False, 'phone':False}}
|
|
||||||
if add:
|
|
||||||
address = self.pool.get('res.partner').browse(cr, uid, add)
|
|
||||||
data['value'] = {'email_from': address and address.email or False ,
|
|
||||||
'phone': address and address.phone or False}
|
|
||||||
if 'phone' not in self._columns:
|
|
||||||
del data['value']['phone']
|
|
||||||
return data
|
|
||||||
|
|
||||||
def onchange_partner_id(self, cr, uid, ids, part, email=False):
|
|
||||||
"""This function returns value of partner address based on partner
|
|
||||||
:param ids: List of case IDs
|
|
||||||
:param part: Partner's id
|
|
||||||
:param email: Partner's email ID
|
|
||||||
"""
|
|
||||||
data={}
|
|
||||||
if part:
|
|
||||||
addr = self.pool.get('res.partner').address_get(cr, uid, [part], ['contact'])
|
|
||||||
data.update(self.onchange_partner_address_id(cr, uid, ids, addr['contact'])['value'])
|
|
||||||
return {'value': data}
|
|
||||||
|
|
||||||
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
|
|
||||||
return ''
|
|
||||||
|
|
||||||
def case_open_send_note(self, cr, uid, ids, context=None):
|
|
||||||
for id in ids:
|
|
||||||
msg = '%s has been <b>opened</b>.' % (self.case_get_note_msg_prefix(cr, uid, id, context=context))
|
|
||||||
self.message_append_note(cr, uid, [id], body=msg, context=context)
|
|
||||||
return True
|
|
||||||
|
|
||||||
def case_close_send_note(self, cr, uid, ids, context=None):
|
|
||||||
for id in ids:
|
|
||||||
msg = '%s has been <b>closed</b>.'% (self.case_get_note_msg_prefix(cr, uid, id, context=context))
|
|
||||||
self.message_append_note(cr, uid, [id], body=msg, context=context)
|
|
||||||
return True
|
|
||||||
|
|
||||||
def case_cancel_send_note(self, cr, uid, ids, context=None):
|
|
||||||
for id in ids:
|
|
||||||
msg = '%s has been <b>canceled</b>.' % (self.case_get_note_msg_prefix(cr, uid, id, context=context))
|
|
||||||
self.message_append_note(cr, uid, [id], body=msg, context=context)
|
|
||||||
return True
|
|
||||||
|
|
||||||
def case_pending_send_note(self, cr, uid, ids, context=None):
|
|
||||||
for id in ids:
|
|
||||||
msg = '%s is now <b>pending</b>.' % (self.case_get_note_msg_prefix(cr, uid, id, context=context))
|
|
||||||
self.message_append_note(cr, uid, [id], body=msg, context=context)
|
|
||||||
return True
|
|
||||||
|
|
||||||
def case_reset_send_note(self, cr, uid, ids, context=None):
|
|
||||||
for id in ids:
|
|
||||||
msg = '%s has been <b>renewed</b>.' % (self.case_get_note_msg_prefix(cr, uid, id, context=context))
|
|
||||||
self.message_append_note(cr, uid, [id], body=msg, context=context)
|
|
||||||
return True
|
|
||||||
|
|
||||||
def case_open(self, cr, uid, ids, context=None):
|
|
||||||
"""Opens Case
|
|
||||||
:param ids: List of case Ids
|
|
||||||
"""
|
|
||||||
cases = self.browse(cr, uid, ids)
|
|
||||||
for case in cases:
|
|
||||||
data = {'state': 'open', 'active': True}
|
|
||||||
if not case.user_id:
|
|
||||||
data['user_id'] = uid
|
|
||||||
self.write(cr, uid, [case.id], data)
|
|
||||||
self.case_open_send_note(cr, uid, ids, context=context)
|
|
||||||
self._action(cr, uid, cases, 'open')
|
|
||||||
|
|
||||||
return True
|
|
||||||
|
|
||||||
def case_close(self, cr, uid, ids, context=None):
|
|
||||||
"""Closes Case
|
|
||||||
:param ids: List of case Ids
|
|
||||||
"""
|
|
||||||
cases = self.browse(cr, uid, ids)
|
|
||||||
cases[0].state # to fill the browse record cache
|
|
||||||
self.write(cr, uid, ids, {'state': 'done', 'date_closed': time.strftime('%Y-%m-%d %H:%M:%S'), })
|
|
||||||
# We use the cache of cases to keep the old case state
|
|
||||||
self.case_close_send_note(cr, uid, ids, context=context)
|
|
||||||
self._action(cr, uid, cases, 'done')
|
|
||||||
return True
|
|
||||||
|
|
||||||
def case_cancel(self, cr, uid, ids, context=None):
|
|
||||||
"""Cancels Case
|
|
||||||
:param ids: List of case Ids
|
|
||||||
"""
|
|
||||||
cases = self.browse(cr, uid, ids)
|
|
||||||
cases[0].state # to fill the browse record cache
|
|
||||||
self.write(cr, uid, ids, {'state': 'cancel', 'active': True})
|
|
||||||
# We use the cache of cases to keep the old case state
|
|
||||||
self.case_cancel_send_note(cr, uid, ids, context=context)
|
|
||||||
self._action(cr, uid, cases, 'cancel')
|
|
||||||
return True
|
|
||||||
|
|
||||||
def case_pending(self, cr, uid, ids, context=None):
|
|
||||||
"""Marks case as pending
|
|
||||||
:param ids: List of case Ids
|
|
||||||
"""
|
|
||||||
cases = self.browse(cr, uid, ids)
|
|
||||||
cases[0].state # to fill the browse record cache
|
|
||||||
self.write(cr, uid, ids, {'state': 'pending', 'active': True})
|
|
||||||
self.case_pending_send_note(cr, uid, ids, context=context)
|
|
||||||
self._action(cr, uid, cases, 'pending')
|
|
||||||
return True
|
|
||||||
|
|
||||||
def case_reset(self, cr, uid, ids, context=None):
|
|
||||||
"""Resets case as draft
|
|
||||||
:param ids: List of case Ids
|
|
||||||
"""
|
|
||||||
cases = self.browse(cr, uid, ids)
|
|
||||||
cases[0].state # to fill the browse record cache
|
|
||||||
self.write(cr, uid, ids, {'state': 'draft', 'active': True})
|
|
||||||
self.case_reset_send_note(cr, uid, ids, context=context)
|
|
||||||
self._action(cr, uid, cases, 'draft')
|
|
||||||
return True
|
|
||||||
|
|
||||||
def _action(self, cr, uid, cases, state_to, scrit=None, context=None):
|
|
||||||
if context is None:
|
|
||||||
context = {}
|
|
||||||
context['state_to'] = state_to
|
|
||||||
rule_obj = self.pool.get('base.action.rule')
|
|
||||||
model_obj = self.pool.get('ir.model')
|
|
||||||
model_ids = model_obj.search(cr, uid, [('model','=',self._name)])
|
|
||||||
rule_ids = rule_obj.search(cr, uid, [('model_id','=',model_ids[0])])
|
|
||||||
return rule_obj._action(cr, uid, rule_ids, cases, scrit=scrit, context=context)
|
|
||||||
|
|
||||||
class crm_case(crm_base):
|
|
||||||
""" A simple python class to be used for common functions
|
|
||||||
Object that inherit from this class should inherit from mailgate.thread
|
|
||||||
And need a stage_id field
|
|
||||||
And object that inherit (orm inheritance) from a class the overwrite copy
|
|
||||||
"""
|
|
||||||
|
|
||||||
def stage_find(self, cr, uid, section_id, domain=[], order='sequence'):
|
|
||||||
domain = list(domain)
|
|
||||||
if section_id:
|
|
||||||
domain.append(('section_ids', '=', section_id))
|
|
||||||
stage_ids = self.pool.get('crm.case.stage').search(cr, uid, domain, order=order)
|
|
||||||
if stage_ids:
|
|
||||||
return stage_ids[0]
|
|
||||||
return False
|
|
||||||
|
|
||||||
def stage_set(self, cr, uid, ids, stage_id, context=None):
|
|
||||||
value = {}
|
|
||||||
if hasattr(self,'onchange_stage_id'):
|
|
||||||
value = self.onchange_stage_id(cr, uid, ids, stage_id)['value']
|
|
||||||
value['stage_id'] = stage_id
|
|
||||||
return self.write(cr, uid, ids, value, context=context)
|
|
||||||
|
|
||||||
def stage_change(self, cr, uid, ids, op, order, context=None):
|
|
||||||
if context is None:
|
|
||||||
context = {}
|
|
||||||
for case in self.browse(cr, uid, ids, context=context):
|
|
||||||
seq = 0
|
|
||||||
if case.stage_id:
|
|
||||||
seq = case.stage_id.sequence
|
|
||||||
section_id = None
|
|
||||||
if case.section_id:
|
|
||||||
section_id = case.section_id.id
|
|
||||||
next_stage_id = self.stage_find(cr, uid, section_id, [('sequence',op,seq)],order)
|
|
||||||
if next_stage_id:
|
|
||||||
return self.stage_set(cr, uid, [case.id], next_stage_id, context=context)
|
|
||||||
return False
|
|
||||||
|
|
||||||
def stage_next(self, cr, uid, ids, context=None):
|
|
||||||
"""This function computes next stage for case from its current stage
|
|
||||||
using available stage for that case type
|
|
||||||
"""
|
|
||||||
return self.stage_change(cr, uid, ids, '>','sequence', context)
|
|
||||||
|
|
||||||
def stage_previous(self, cr, uid, ids, context=None):
|
|
||||||
"""This function computes previous stage for case from its current
|
|
||||||
stage using available stage for that case type
|
|
||||||
"""
|
|
||||||
return self.stage_change(cr, uid, ids, '<', 'sequence desc', context)
|
|
||||||
|
|
||||||
def copy(self, cr, uid, id, default=None, context=None):
|
|
||||||
"""Overrides orm copy method to avoid copying messages,
|
|
||||||
as well as date_closed and date_open columns if they
|
|
||||||
exist."""
|
|
||||||
if default is None:
|
|
||||||
default = {}
|
|
||||||
|
|
||||||
default.update({ 'message_ids': [], })
|
|
||||||
if hasattr(self, '_columns'):
|
|
||||||
if self._columns.get('date_closed'):
|
|
||||||
default.update({ 'date_closed': False, })
|
|
||||||
if self._columns.get('date_open'):
|
|
||||||
default.update({ 'date_open': False })
|
|
||||||
return super(crm_case, self).copy(cr, uid, id, default, context=context)
|
|
||||||
|
|
||||||
def case_escalate_send_note(self, cr, uid, ids, new_section=None, context=None):
|
|
||||||
for id in ids:
|
|
||||||
if new_section:
|
|
||||||
msg = '%s has been <b>escalated</b> to <b>%s</b>.' % (self.case_get_note_msg_prefix(cr, uid, id, context=context), new_section.name)
|
|
||||||
else:
|
|
||||||
msg = '%s has been <b>escalated</b>.' % (self.case_get_note_msg_prefix(cr, uid, id, context=context))
|
|
||||||
self.message_append_note(cr, uid, [id], 'System Notification', msg, context=context)
|
|
||||||
return True
|
|
||||||
|
|
||||||
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
|
|
||||||
return ''
|
|
||||||
|
|
||||||
def case_open(self, cr, uid, ids, context=None):
|
|
||||||
"""Opens Case"""
|
|
||||||
cases = self.browse(cr, uid, ids)
|
|
||||||
for case in cases:
|
|
||||||
data = {'state': 'open', 'active': True }
|
|
||||||
if not case.user_id:
|
|
||||||
data['user_id'] = uid
|
|
||||||
self.write(cr, uid, [case.id], data)
|
|
||||||
self.case_open_send_note(cr, uid, ids, context=context)
|
|
||||||
self._action(cr, uid, cases, 'open')
|
|
||||||
return True
|
|
||||||
|
|
||||||
def case_close(self, cr, uid, ids, context=None):
|
|
||||||
"""Closes Case"""
|
|
||||||
cases = self.browse(cr, uid, ids)
|
|
||||||
cases[0].state # to fill the browse record cache
|
|
||||||
self.write(cr, uid, ids, {'state': 'done',
|
|
||||||
'date_closed': time.strftime('%Y-%m-%d %H:%M:%S'),
|
|
||||||
})
|
|
||||||
#
|
|
||||||
# We use the cache of cases to keep the old case state
|
|
||||||
#
|
|
||||||
self.case_close_send_note(cr, uid, ids, context=context)
|
|
||||||
self._action(cr, uid, cases, 'done')
|
|
||||||
return True
|
|
||||||
|
|
||||||
def case_escalate(self, cr, uid, ids, context=None):
|
|
||||||
"""Escalates case to parent level"""
|
|
||||||
cases = self.browse(cr, uid, ids)
|
|
||||||
for case in cases:
|
|
||||||
data = {'active': True}
|
|
||||||
if case.section_id.parent_id:
|
|
||||||
data['section_id'] = case.section_id.parent_id.id
|
|
||||||
if case.section_id.parent_id.change_responsible:
|
|
||||||
if case.section_id.parent_id.user_id:
|
|
||||||
data['user_id'] = case.section_id.parent_id.user_id.id
|
|
||||||
else:
|
|
||||||
raise osv.except_osv(_('Error !'), _('You can not escalate, you are already at the top level regarding your sales-team category.'))
|
|
||||||
self.write(cr, uid, [case.id], data)
|
|
||||||
case.case_escalate_send_note(case.section_id.parent_id)
|
|
||||||
cases = self.browse(cr, uid, ids)
|
|
||||||
self._action(cr, uid, cases, 'escalate')
|
|
||||||
return True
|
|
||||||
|
|
||||||
def case_cancel(self, cr, uid, ids, context=None):
|
|
||||||
"""Cancels Case"""
|
|
||||||
cases = self.browse(cr, uid, ids)
|
|
||||||
cases[0].state # to fill the browse record cache
|
|
||||||
self.write(cr, uid, ids, {'state': 'cancel',
|
|
||||||
'active': True})
|
|
||||||
self.case_cancel_send_note(cr, uid, ids, context=context)
|
|
||||||
self._action(cr, uid, cases, 'cancel')
|
|
||||||
return True
|
|
||||||
|
|
||||||
def case_pending(self, cr, uid, ids, context=None):
|
|
||||||
"""Marks case as pending"""
|
|
||||||
cases = self.browse(cr, uid, ids)
|
|
||||||
cases[0].state # to fill the browse record cache
|
|
||||||
self.write(cr, uid, ids, {'state': 'pending', 'active': True})
|
|
||||||
self.case_pending_send_note(cr, uid, ids, context=context)
|
|
||||||
self._action(cr, uid, cases, 'pending')
|
|
||||||
return True
|
|
||||||
|
|
||||||
def case_reset(self, cr, uid, ids, context=None):
|
|
||||||
"""Resets case as draft"""
|
|
||||||
state = 'draft'
|
|
||||||
cases = self.browse(cr, uid, ids)
|
|
||||||
cases[0].state # to fill the browse record cache
|
|
||||||
self.write(cr, uid, ids, {'state': state, 'active': True})
|
|
||||||
self.case_reset_send_note(cr, uid, ids, context=context)
|
|
||||||
self._action(cr, uid, cases, state)
|
|
||||||
return True
|
|
||||||
|
|
||||||
def remind_partner(self, cr, uid, ids, context=None, attach=False):
|
|
||||||
return self.remind_user(cr, uid, ids, context, attach,
|
|
||||||
destination=False)
|
|
||||||
|
|
||||||
def remind_user(self, cr, uid, ids, context=None, attach=False, destination=True):
|
|
||||||
mail_message = self.pool.get('mail.message')
|
|
||||||
for case in self.browse(cr, uid, ids, context=context):
|
|
||||||
if not destination and not case.email_from:
|
|
||||||
return False
|
|
||||||
if not case.user_id.user_email:
|
|
||||||
return False
|
|
||||||
if destination and case.section_id.user_id:
|
|
||||||
case_email = case.section_id.user_id.user_email
|
|
||||||
else:
|
|
||||||
case_email = case.user_id.user_email
|
|
||||||
|
|
||||||
src = case_email
|
|
||||||
dest = case.user_id.user_email or ""
|
|
||||||
body = case.description or ""
|
|
||||||
for message in case.message_ids:
|
|
||||||
if message.email_from and message.body_text:
|
|
||||||
body = message.body_text
|
|
||||||
break
|
|
||||||
|
|
||||||
if not destination:
|
|
||||||
src, dest = dest, case.email_from
|
|
||||||
if body and case.user_id.signature:
|
|
||||||
if body:
|
|
||||||
body += '\n\n%s' % (case.user_id.signature)
|
|
||||||
else:
|
|
||||||
body = '\n\n%s' % (case.user_id.signature)
|
|
||||||
|
|
||||||
body = self.format_body(body)
|
|
||||||
|
|
||||||
attach_to_send = {}
|
|
||||||
|
|
||||||
if attach:
|
|
||||||
attach_ids = self.pool.get('ir.attachment').search(cr, uid, [('res_model', '=', self._name), ('res_id', '=', case.id)])
|
|
||||||
attach_to_send = self.pool.get('ir.attachment').read(cr, uid, attach_ids, ['datas_fname', 'datas'])
|
|
||||||
attach_to_send = dict(map(lambda x: (x['datas_fname'], base64.decodestring(x['datas'])), attach_to_send))
|
|
||||||
|
|
||||||
# Send an email
|
|
||||||
subject = "Reminder: [%s] %s" % (str(case.id), case.name, )
|
|
||||||
mail_message.schedule_with_attach(cr, uid,
|
|
||||||
src,
|
|
||||||
[dest],
|
|
||||||
subject,
|
|
||||||
body,
|
|
||||||
model=self._name,
|
|
||||||
reply_to=case.section_id.reply_to,
|
|
||||||
res_id=case.id,
|
|
||||||
attachments=attach_to_send,
|
|
||||||
context=context
|
|
||||||
)
|
|
||||||
return True
|
|
||||||
|
|
||||||
def _check(self, cr, uid, ids=False, context=None):
|
|
||||||
"""Function called by the scheduler to process cases for date actions
|
|
||||||
Only works on not done and cancelled cases
|
|
||||||
"""
|
|
||||||
cr.execute('select * from crm_case \
|
|
||||||
where (date_action_last<%s or date_action_last is null) \
|
|
||||||
and (date_action_next<=%s or date_action_next is null) \
|
|
||||||
and state not in (\'cancel\',\'done\')',
|
|
||||||
(time.strftime("%Y-%m-%d %H:%M:%S"),
|
|
||||||
time.strftime('%Y-%m-%d %H:%M:%S')))
|
|
||||||
|
|
||||||
ids2 = map(lambda x: x[0], cr.fetchall() or [])
|
|
||||||
cases = self.browse(cr, uid, ids2, context=context)
|
|
||||||
return self._action(cr, uid, cases, False, context=context)
|
|
||||||
|
|
||||||
def format_body(self, body):
|
|
||||||
return self.pool.get('base.action.rule').format_body(body)
|
|
||||||
|
|
||||||
def format_mail(self, obj, body):
|
|
||||||
return self.pool.get('base.action.rule').format_mail(obj, body)
|
|
||||||
|
|
||||||
def message_thread_followers(self, cr, uid, ids, context=None):
|
|
||||||
res = {}
|
|
||||||
for case in self.browse(cr, uid, ids, context=context):
|
|
||||||
l=[]
|
|
||||||
if case.email_cc:
|
|
||||||
l.append(case.email_cc)
|
|
||||||
if case.user_id and case.user_id.user_email:
|
|
||||||
l.append(case.user_id.user_email)
|
|
||||||
res[case.id] = l
|
|
||||||
return res
|
|
||||||
|
|
||||||
def _links_get(self, cr, uid, context=None):
|
def _links_get(self, cr, uid, context=None):
|
||||||
"""Gets links value for reference field"""
|
"""Gets links value for reference field"""
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
##############################################################################
|
##############################################################################
|
||||||
#
|
#
|
||||||
# OpenERP, Open Source Management Solution
|
# OpenERP, Open Source Management Solution
|
||||||
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
|
# Copyright (C) 2004-today OpenERP SA (<http://www.openerp.com>)
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
@ -19,15 +19,15 @@
|
||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
from osv import fields, osv
|
|
||||||
from datetime import datetime
|
|
||||||
import crm
|
|
||||||
import time
|
|
||||||
from tools.translate import _
|
|
||||||
from crm import crm_case
|
|
||||||
import binascii
|
import binascii
|
||||||
import tools
|
from base_status.base_stage import base_stage
|
||||||
|
import crm
|
||||||
|
from datetime import datetime
|
||||||
from mail.mail_message import to_email
|
from mail.mail_message import to_email
|
||||||
|
from osv import fields, osv
|
||||||
|
import time
|
||||||
|
import tools
|
||||||
|
from tools.translate import _
|
||||||
|
|
||||||
CRM_LEAD_PENDING_STATES = (
|
CRM_LEAD_PENDING_STATES = (
|
||||||
crm.AVAILABLE_STATES[2][0], # Cancelled
|
crm.AVAILABLE_STATES[2][0], # Cancelled
|
||||||
|
@ -35,22 +35,68 @@ CRM_LEAD_PENDING_STATES = (
|
||||||
crm.AVAILABLE_STATES[4][0], # Pending
|
crm.AVAILABLE_STATES[4][0], # Pending
|
||||||
)
|
)
|
||||||
|
|
||||||
class crm_lead(crm_case, osv.osv):
|
class crm_lead(base_stage, osv.osv):
|
||||||
""" CRM Lead Case """
|
""" CRM Lead Case """
|
||||||
_name = "crm.lead"
|
_name = "crm.lead"
|
||||||
_description = "Lead/Opportunity"
|
_description = "Lead/Opportunity"
|
||||||
_order = "priority,date_action,id desc"
|
_order = "priority,date_action,id desc"
|
||||||
_inherit = ['ir.needaction_mixin', 'mail.thread','res.partner']
|
_inherit = ['ir.needaction_mixin', 'mail.thread','res.partner']
|
||||||
|
|
||||||
|
def _get_default_section_id(self, cr, uid, context=None):
|
||||||
|
""" Gives default section by checking if present in the context """
|
||||||
|
return (self._resolve_section_id_from_context(cr, uid, context=context) or False)
|
||||||
|
|
||||||
|
def _get_default_stage_id(self, cr, uid, context=None):
|
||||||
|
""" Gives default stage_id """
|
||||||
|
section_id = self._get_default_section_id(cr, uid, context=context)
|
||||||
|
return self.stage_find(cr, uid, [], section_id, [('state', '=', 'draft'), ('type', '=', 'both')], context=context)
|
||||||
|
|
||||||
|
def _resolve_section_id_from_context(self, cr, uid, context=None):
|
||||||
|
""" Returns ID of section based on the value of 'section_id'
|
||||||
|
context key, or None if it cannot be resolved to a single
|
||||||
|
Sales Team.
|
||||||
|
"""
|
||||||
|
if context is None:
|
||||||
|
context = {}
|
||||||
|
if type(context.get('default_section_id')) in (int, long):
|
||||||
|
return context.get('default_section_id')
|
||||||
|
if isinstance(context.get('default_section_id'), basestring):
|
||||||
|
section_name = context['default_section_id']
|
||||||
|
section_ids = self.pool.get('crm.case.section').name_search(cr, uid, name=section_name, context=context)
|
||||||
|
if len(section_ids) == 1:
|
||||||
|
return int(section_ids[0][0])
|
||||||
|
return None
|
||||||
|
|
||||||
|
def _resolve_type_from_context(self, cr, uid, context=None):
|
||||||
|
""" Returns the type (lead or opportunity) from the type context
|
||||||
|
key. Returns None if it cannot be resolved.
|
||||||
|
"""
|
||||||
|
if context is None:
|
||||||
|
context = {}
|
||||||
|
return context.get('default_type')
|
||||||
|
|
||||||
def _read_group_stage_ids(self, cr, uid, ids, domain, read_group_order=None, access_rights_uid=None, context=None):
|
def _read_group_stage_ids(self, cr, uid, ids, domain, read_group_order=None, access_rights_uid=None, context=None):
|
||||||
access_rights_uid = access_rights_uid or uid
|
access_rights_uid = access_rights_uid or uid
|
||||||
stage_obj = self.pool.get('crm.case.stage')
|
stage_obj = self.pool.get('crm.case.stage')
|
||||||
order = stage_obj._order
|
order = stage_obj._order
|
||||||
|
# lame hack to allow reverting search, should just work in the trivial case
|
||||||
if read_group_order == 'stage_id desc':
|
if read_group_order == 'stage_id desc':
|
||||||
# lame hack to allow reverting search, should just work in the trivial case
|
|
||||||
order = "%s desc" % order
|
order = "%s desc" % order
|
||||||
stage_ids = stage_obj._search(cr, uid, ['|', ('id','in',ids),('case_default','=',1)], order=order,
|
# retrieve section_id from the context and write the domain
|
||||||
access_rights_uid=access_rights_uid, context=context)
|
# - ('id', 'in', 'ids'): add columns that should be present
|
||||||
|
# - OR ('case_default', '=', True), ('fold', '=', False): add default columns that are not folded
|
||||||
|
# - OR ('section_ids', '=', section_id), ('fold', '=', False) if section_id: add section columns that are not folded
|
||||||
|
search_domain = []
|
||||||
|
section_id = self._resolve_section_id_from_context(cr, uid, context=context)
|
||||||
|
if section_id:
|
||||||
|
search_domain += ['|', '&', ('section_ids', '=', section_id), ('fold', '=', False)]
|
||||||
|
search_domain += ['|', ('id', 'in', ids), '&', ('case_default', '=', True), ('fold', '=', False)]
|
||||||
|
# retrieve type from the context (if set: choose 'type' or 'both')
|
||||||
|
type = self._resolve_type_from_context(cr, uid, context=context)
|
||||||
|
if type:
|
||||||
|
search_domain += ['|', ('type', '=', type), ('type', '=', 'both')]
|
||||||
|
# perform search
|
||||||
|
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)
|
result = stage_obj.name_get(cr, access_rights_uid, stage_ids, context=context)
|
||||||
# restore order of the search
|
# restore order of the search
|
||||||
result.sort(lambda x,y: cmp(stage_ids.index(x[0]), stage_ids.index(y[0])))
|
result.sort(lambda x,y: cmp(stage_ids.index(x[0]), stage_ids.index(y[0])))
|
||||||
|
@ -154,7 +200,6 @@ class crm_lead(crm_case, osv.osv):
|
||||||
'email_cc': fields.text('Global CC', size=252 , help="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"),
|
'email_cc': fields.text('Global CC', size=252 , help="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"),
|
||||||
'description': fields.text('Notes'),
|
'description': fields.text('Notes'),
|
||||||
'write_date': fields.datetime('Update Date' , readonly=True),
|
'write_date': fields.datetime('Update Date' , readonly=True),
|
||||||
|
|
||||||
'categ_id': fields.many2one('crm.case.categ', 'Category', \
|
'categ_id': fields.many2one('crm.case.categ', 'Category', \
|
||||||
domain="['|',('section_id','=',section_id),('section_id','=',False), ('object_id.model', '=', 'crm.lead')]"),
|
domain="['|',('section_id','=',section_id),('section_id','=',False), ('object_id.model', '=', 'crm.lead')]"),
|
||||||
'type_id': fields.many2one('crm.case.resource.type', 'Campaign', \
|
'type_id': fields.many2one('crm.case.resource.type', 'Campaign', \
|
||||||
|
@ -167,7 +212,8 @@ class crm_lead(crm_case, osv.osv):
|
||||||
'type':fields.selection([ ('lead','Lead'), ('opportunity','Opportunity'), ],'Type', help="Type is used to separate Leads and Opportunities"),
|
'type':fields.selection([ ('lead','Lead'), ('opportunity','Opportunity'), ],'Type', help="Type is used to separate Leads and Opportunities"),
|
||||||
'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority', select=True),
|
'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority', select=True),
|
||||||
'date_closed': fields.datetime('Closed', readonly=True),
|
'date_closed': fields.datetime('Closed', readonly=True),
|
||||||
'stage_id': fields.many2one('crm.case.stage', 'Stage', domain="[('section_ids', '=', section_id)]"),
|
'stage_id': fields.many2one('crm.case.stage', 'Stage',
|
||||||
|
domain="['&', '|', ('section_ids', '=', section_id), ('case_default', '=', True), '|', ('type', '=', type), ('type', '=', 'both')]"),
|
||||||
'user_id': fields.many2one('res.users', 'Salesperson'),
|
'user_id': fields.many2one('res.users', 'Salesperson'),
|
||||||
'referred': fields.char('Referred By', size=64),
|
'referred': fields.char('Referred By', size=64),
|
||||||
'date_open': fields.datetime('Opened', readonly=True),
|
'date_open': fields.datetime('Opened', readonly=True),
|
||||||
|
@ -175,11 +221,13 @@ class crm_lead(crm_case, osv.osv):
|
||||||
multi='day_open', type="float", store=True),
|
multi='day_open', type="float", store=True),
|
||||||
'day_close': fields.function(_compute_day, string='Days to Close', \
|
'day_close': fields.function(_compute_day, string='Days to Close', \
|
||||||
multi='day_close', type="float", store=True),
|
multi='day_close', type="float", store=True),
|
||||||
'state': fields.selection(crm.AVAILABLE_STATES, 'Status', size=16, readonly=True,
|
'state': fields.related('stage_id', 'state', type="selection", store=True,
|
||||||
help='The state is set to \'Draft\', when a case is created.\
|
selection=crm.AVAILABLE_STATES, string="State", readonly=True,
|
||||||
\nIf the case is in progress the state is set to \'In progress\'.\
|
help='The state is set to \'Draft\', when a case is created.\
|
||||||
\nWhen the case is over, the state is set to \'Done\'.\
|
If the case is in progress the state is set to \'Open\'.\
|
||||||
\nIf the case needs to be reviewed then the state is set to \'Pending\'.'),
|
When the case is over, the state is set to \'Done\'.\
|
||||||
|
If the case needs to be reviewed then the state is \
|
||||||
|
set to \'Pending\'.'),
|
||||||
'message_ids': fields.one2many('mail.message', 'res_id', 'Messages', domain=[('model','=',_name)]),
|
'message_ids': fields.one2many('mail.message', 'res_id', 'Messages', domain=[('model','=',_name)]),
|
||||||
'subjects': fields.function(_get_email_subject, fnct_search=_history_search, string='Subject of Email', type='char', size=64),
|
'subjects': fields.function(_get_email_subject, fnct_search=_history_search, string='Subject of Email', type='char', size=64),
|
||||||
|
|
||||||
|
@ -192,23 +240,21 @@ class crm_lead(crm_case, osv.osv):
|
||||||
'date_deadline': fields.date('Expected Closing'),
|
'date_deadline': fields.date('Expected Closing'),
|
||||||
'date_action': fields.date('Next Action Date', select=True),
|
'date_action': fields.date('Next Action Date', select=True),
|
||||||
'title_action': fields.char('Next Action', size=64),
|
'title_action': fields.char('Next Action', size=64),
|
||||||
'stage_id': fields.many2one('crm.case.stage', 'Stage', domain="[('section_ids', '=', section_id)]"),
|
|
||||||
'color': fields.integer('Color Index'),
|
'color': fields.integer('Color Index'),
|
||||||
'partner_address_name': fields.related('partner_id', 'name', type='char', string='Partner Contact Name', readonly=True),
|
'partner_address_name': fields.related('partner_id', 'name', type='char', string='Partner Contact Name', readonly=True),
|
||||||
'partner_address_email': fields.related('partner_id', 'email', type='char', string='Partner Contact Email', readonly=True),
|
'partner_address_email': fields.related('partner_id', 'email', type='char', string='Partner Contact Email', readonly=True),
|
||||||
'company_currency': fields.related('company_id', 'currency_id', 'symbol', type='char', string='Company Currency', readonly=True),
|
'company_currency': fields.related('company_id', 'currency_id', 'symbol', type='char', string='Company Currency', readonly=True),
|
||||||
'user_email': fields.related('user_id', 'user_email', type='char', string='User Email', readonly=True),
|
'user_email': fields.related('user_id', 'user_email', type='char', string='User Email', readonly=True),
|
||||||
'user_login': fields.related('user_id', 'login', type='char', string='User Login', readonly=True),
|
'user_login': fields.related('user_id', 'login', type='char', string='User Login', readonly=True),
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_defaults = {
|
_defaults = {
|
||||||
'active': lambda *a: 1,
|
'active': 1,
|
||||||
'user_id': crm_case._get_default_user,
|
'type': 'lead',
|
||||||
'email_from': crm_case._get_default_email,
|
'user_id': lambda s, cr, uid, c: s._get_default_user(cr, uid, c),
|
||||||
'state': lambda *a: 'draft',
|
'email_from': lambda s, cr, uid, c: s._get_default_email(cr, uid, c),
|
||||||
'type': lambda *a: 'lead',
|
'stage_id': lambda s, cr, uid, c: s._get_default_stage_id(cr, uid, c),
|
||||||
'section_id': crm_case._get_section,
|
'section_id': lambda s, cr, uid, c: s._get_default_section_id(cr, uid, c),
|
||||||
'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.lead', context=c),
|
'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.lead', context=c),
|
||||||
'priority': lambda *a: crm.AVAILABLE_PRIORITIES[2][0],
|
'priority': lambda *a: crm.AVAILABLE_PRIORITIES[2][0],
|
||||||
'color': 0,
|
'color': 0,
|
||||||
|
@ -241,95 +287,104 @@ class crm_lead(crm_case, osv.osv):
|
||||||
return {'value':{}}
|
return {'value':{}}
|
||||||
return {'value':{'probability': stage.probability}}
|
return {'value':{'probability': stage.probability}}
|
||||||
|
|
||||||
def stage_find_percent(self, cr, uid, percent, section_id):
|
def _check(self, cr, uid, ids=False, context=None):
|
||||||
""" Return the first stage with a probability == percent
|
""" Override of the base.stage method.
|
||||||
|
Function called by the scheduler to process cases for date actions
|
||||||
|
Only works on not done and cancelled cases
|
||||||
"""
|
"""
|
||||||
stage_pool = self.pool.get('crm.case.stage')
|
cr.execute('select * from crm_case \
|
||||||
if section_id :
|
where (date_action_last<%s or date_action_last is null) \
|
||||||
ids = stage_pool.search(cr, uid, [("probability", '=', percent), ("section_ids", 'in', [section_id])])
|
and (date_action_next<=%s or date_action_next is null) \
|
||||||
else :
|
and state not in (\'cancel\',\'done\')',
|
||||||
ids = stage_pool.search(cr, uid, [("probability", '=', percent)])
|
(time.strftime("%Y-%m-%d %H:%M:%S"),
|
||||||
|
time.strftime('%Y-%m-%d %H:%M:%S')))
|
||||||
|
|
||||||
if ids:
|
ids2 = map(lambda x: x[0], cr.fetchall() or [])
|
||||||
return ids[0]
|
cases = self.browse(cr, uid, ids2, context=context)
|
||||||
|
return self._action(cr, uid, cases, False, context=context)
|
||||||
|
|
||||||
|
def stage_find(self, cr, uid, cases, section_id, domain=[], order='sequence', context=None):
|
||||||
|
""" Override of the base.stage method
|
||||||
|
Parameter of the stage search taken from the lead:
|
||||||
|
- type: stage type must be the same or 'both'
|
||||||
|
- section_id: if set, stages must belong to this section or
|
||||||
|
be a default stage; if not set, stages must be default
|
||||||
|
stages
|
||||||
|
"""
|
||||||
|
if isinstance(cases, (int, long)):
|
||||||
|
cases = self.browse(cr, uid, cases, context=context)
|
||||||
|
# collect all section_ids
|
||||||
|
section_ids = []
|
||||||
|
types = ['both']
|
||||||
|
if section_id:
|
||||||
|
section_ids.append(section_id)
|
||||||
|
for lead in cases:
|
||||||
|
if lead.section_id:
|
||||||
|
section_ids.append(lead.section_id.id)
|
||||||
|
if lead.type not in types:
|
||||||
|
types.append(lead.type)
|
||||||
|
# OR all section_ids and OR with case_default
|
||||||
|
search_domain = []
|
||||||
|
if section_ids:
|
||||||
|
search_domain += [('|')] * len(section_ids)
|
||||||
|
for section_id in section_ids:
|
||||||
|
search_domain.append(('section_ids', '=', section_id))
|
||||||
|
search_domain.append(('case_default', '=', True))
|
||||||
|
# AND with cases types
|
||||||
|
search_domain.append(('type', 'in', types))
|
||||||
|
# AND with the domain in parameter
|
||||||
|
search_domain += list(domain)
|
||||||
|
# perform search, return the first found
|
||||||
|
stage_ids = self.pool.get('crm.case.stage').search(cr, uid, search_domain, order=order, context=context)
|
||||||
|
if stage_ids:
|
||||||
|
return stage_ids[0]
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def stage_find_lost(self, cr, uid, section_id):
|
|
||||||
return self.stage_find_percent(cr, uid, 0.0, section_id)
|
|
||||||
|
|
||||||
def stage_find_won(self, cr, uid, section_id):
|
|
||||||
return self.stage_find_percent(cr, uid, 100.0, section_id)
|
|
||||||
|
|
||||||
def case_open(self, cr, uid, ids, context=None):
|
|
||||||
for lead in self.browse(cr, uid, ids, context=context):
|
|
||||||
if lead.state == 'draft':
|
|
||||||
value = {'date_open': time.strftime('%Y-%m-%d %H:%M:%S')}
|
|
||||||
self.write(cr, uid, [lead.id], value)
|
|
||||||
if lead.type == 'opportunity' and not lead.stage_id:
|
|
||||||
stage_id = self.stage_find(cr, uid, lead.section_id.id or False, [('sequence','>',0)])
|
|
||||||
if stage_id:
|
|
||||||
self.stage_set(cr, uid, [lead.id], stage_id)
|
|
||||||
res = super(crm_lead, self).case_open(cr, uid, ids, context)
|
|
||||||
return res
|
|
||||||
|
|
||||||
def case_close(self, cr, uid, ids, context=None):
|
|
||||||
res = super(crm_lead, self).case_close(cr, uid, ids, context)
|
|
||||||
self.write(cr, uid, ids, {'date_closed': time.strftime('%Y-%m-%d %H:%M:%S')})
|
|
||||||
return res
|
|
||||||
|
|
||||||
def case_cancel(self, cr, uid, ids, context=None):
|
def case_cancel(self, cr, uid, ids, context=None):
|
||||||
"""Overrides cancel for crm_case for setting probability
|
""" Overrides case_cancel from base_stage to set probability """
|
||||||
"""
|
res = super(crm_lead, self).case_cancel(cr, uid, ids, context=context)
|
||||||
res = super(crm_lead, self).case_cancel(cr, uid, ids, context)
|
self.write(cr, uid, ids, {'probability' : 0.0}, context=context)
|
||||||
self.write(cr, uid, ids, {'probability' : 0.0})
|
|
||||||
return res
|
return res
|
||||||
|
|
||||||
def case_reset(self, cr, uid, ids, context=None):
|
def case_reset(self, cr, uid, ids, context=None):
|
||||||
"""Overrides reset as draft in order to set the stage field as empty
|
""" Overrides case_reset from base_stage to set probability """
|
||||||
"""
|
res = super(crm_lead, self).case_reset(cr, uid, ids, context=context)
|
||||||
res = super(crm_lead, self).case_reset(cr, uid, ids, context)
|
self.write(cr, uid, ids, {'probability': 0.0}, context=context)
|
||||||
self.write(cr, uid, ids, {'stage_id': False, 'probability': 0.0})
|
|
||||||
return res
|
return res
|
||||||
|
|
||||||
def case_mark_lost(self, cr, uid, ids, context=None):
|
def case_mark_lost(self, cr, uid, ids, context=None):
|
||||||
"""Mark the case as lost: state = done and probability = 0%
|
""" Mark the case as lost: state=cancel and probability=0 """
|
||||||
"""
|
|
||||||
res = super(crm_lead, self).case_close(cr, uid, ids, context)
|
|
||||||
self.write(cr, uid, ids, {'probability' : 0.0})
|
|
||||||
for lead in self.browse(cr, uid, ids):
|
for lead in self.browse(cr, uid, ids):
|
||||||
stage_id = self.stage_find_lost(cr, uid, lead.section_id.id or False)
|
stage_id = self.stage_find(cr, uid, [lead], lead.section_id.id or False, [('probability', '=', 0.0)], context=context)
|
||||||
if stage_id:
|
if stage_id:
|
||||||
self.stage_set(cr, uid, [lead.id], stage_id)
|
self.case_set(cr, uid, [lead.id], values_to_update={'probability': 0.0}, new_stage_id=stage_id, context=context)
|
||||||
return res
|
self.case_mark_lost_send_note(cr, uid, ids, context=context)
|
||||||
|
return True
|
||||||
|
|
||||||
def case_mark_won(self, cr, uid, ids, context=None):
|
def case_mark_won(self, cr, uid, ids, context=None):
|
||||||
"""Mark the case as lost: state = done and probability = 0%
|
""" Mark the case as lost: state=done and probability=100 """
|
||||||
"""
|
|
||||||
res = super(crm_lead, self).case_close(cr, uid, ids, context=None)
|
|
||||||
self.write(cr, uid, ids, {'probability' : 100.0})
|
|
||||||
for lead in self.browse(cr, uid, ids):
|
for lead in self.browse(cr, uid, ids):
|
||||||
stage_id = self.stage_find_won(cr, uid, lead.section_id.id or False)
|
stage_id = self.stage_find(cr, uid, [lead], lead.section_id.id or False, [('probability', '=', 100.0)], context=context)
|
||||||
if stage_id:
|
if stage_id:
|
||||||
self.stage_set(cr, uid, [lead.id], stage_id)
|
self.case_set(cr, uid, [lead.id], values_to_update={'probability': 100.0}, new_stage_id=stage_id, context=context)
|
||||||
self.case_mark_won_send_note(cr, uid, [lead.id], context=context)
|
self.case_mark_won_send_note(cr, uid, ids, context=context)
|
||||||
return res
|
return True
|
||||||
|
|
||||||
def set_priority(self, cr, uid, ids, priority):
|
def set_priority(self, cr, uid, ids, priority):
|
||||||
"""Set lead priority
|
""" Set lead priority
|
||||||
"""
|
"""
|
||||||
return self.write(cr, uid, ids, {'priority' : priority})
|
return self.write(cr, uid, ids, {'priority' : priority})
|
||||||
|
|
||||||
def set_high_priority(self, cr, uid, ids, context=None):
|
def set_high_priority(self, cr, uid, ids, context=None):
|
||||||
"""Set lead priority to high
|
""" Set lead priority to high
|
||||||
"""
|
"""
|
||||||
return self.set_priority(cr, uid, ids, '1')
|
return self.set_priority(cr, uid, ids, '1')
|
||||||
|
|
||||||
def set_normal_priority(self, cr, uid, ids, context=None):
|
def set_normal_priority(self, cr, uid, ids, context=None):
|
||||||
"""Set lead priority to normal
|
""" Set lead priority to normal
|
||||||
"""
|
"""
|
||||||
return self.set_priority(cr, uid, ids, '3')
|
return self.set_priority(cr, uid, ids, '3')
|
||||||
|
|
||||||
|
|
||||||
def _merge_data(self, cr, uid, ids, oldest, fields, context=None):
|
def _merge_data(self, cr, uid, ids, oldest, fields, context=None):
|
||||||
# prepare opportunity data into dictionary for merging
|
# prepare opportunity data into dictionary for merging
|
||||||
opportunities = self.browse(cr, uid, ids, context=context)
|
opportunities = self.browse(cr, uid, ids, context=context)
|
||||||
|
@ -807,22 +862,12 @@ class crm_lead(crm_case, osv.osv):
|
||||||
"You should better cancel it, instead of deleting it.") % lead.name)
|
"You should better cancel it, instead of deleting it.") % lead.name)
|
||||||
return super(crm_lead, self).unlink(cr, uid, ids, context)
|
return super(crm_lead, self).unlink(cr, uid, ids, context)
|
||||||
|
|
||||||
|
|
||||||
def write(self, cr, uid, ids, vals, context=None):
|
def write(self, cr, uid, ids, vals, context=None):
|
||||||
if not context:
|
if vals.get('stage_id') and not vals.get('probability'):
|
||||||
context = {}
|
|
||||||
|
|
||||||
if 'date_closed' in vals:
|
|
||||||
return super(crm_lead,self).write(cr, uid, ids, vals, context=context)
|
|
||||||
|
|
||||||
if vals.get('stage_id'):
|
|
||||||
stage = self.pool.get('crm.case.stage').browse(cr, uid, vals['stage_id'], context=context)
|
|
||||||
# change probability of lead(s) if required by stage
|
# change probability of lead(s) if required by stage
|
||||||
if not vals.get('probability') and stage.on_change:
|
stage = self.pool.get('crm.case.stage').browse(cr, uid, vals['stage_id'], context=context)
|
||||||
|
if stage.on_change:
|
||||||
vals['probability'] = stage.probability
|
vals['probability'] = stage.probability
|
||||||
for case in self.browse(cr, uid, ids, context=context):
|
|
||||||
message = _("Stage changed to <b>%s</b>.") % (stage.name)
|
|
||||||
case.message_append_note(body=message)
|
|
||||||
return super(crm_lead,self).write(cr, uid, ids, vals, context)
|
return super(crm_lead,self).write(cr, uid, ids, vals, context)
|
||||||
|
|
||||||
# ----------------------------------------
|
# ----------------------------------------
|
||||||
|
@ -837,6 +882,11 @@ class crm_lead(crm_case, osv.osv):
|
||||||
sub_ids.append(obj.user_id.id)
|
sub_ids.append(obj.user_id.id)
|
||||||
return self.pool.get('res.users').read(cr, uid, sub_ids, context=context)
|
return self.pool.get('res.users').read(cr, uid, sub_ids, context=context)
|
||||||
|
|
||||||
|
def stage_set_send_note(self, cr, uid, ids, stage_id, context=None):
|
||||||
|
""" Override of the (void) default notification method. """
|
||||||
|
stage_name = self.pool.get('crm.case.stage').name_get(cr, uid, [stage_id], context=context)[0][1]
|
||||||
|
return self.message_append_note(cr, uid, ids, body= _("Stage changed to <b>%s</b>.") % (stage_name), context=context)
|
||||||
|
|
||||||
def case_get_note_msg_prefix(self, cr, uid, lead, context=None):
|
def case_get_note_msg_prefix(self, cr, uid, lead, context=None):
|
||||||
if isinstance(lead, (int, long)):
|
if isinstance(lead, (int, long)):
|
||||||
lead = self.browse(cr, uid, [lead], context=context)[0]
|
lead = self.browse(cr, uid, [lead], context=context)[0]
|
||||||
|
|
|
@ -3,47 +3,81 @@
|
||||||
<data noupdate="1">
|
<data noupdate="1">
|
||||||
|
|
||||||
<!-- Crm stages -->
|
<!-- Crm stages -->
|
||||||
<record model="crm.case.stage" id="stage_lead6">
|
|
||||||
<field name="name">Lost</field>
|
|
||||||
<field eval="1" name="case_default"/>
|
|
||||||
<field eval="'0'" name="probability"/>
|
|
||||||
<field eval="'0'" name="sequence"/>
|
|
||||||
</record>
|
|
||||||
<record model="crm.case.stage" id="stage_lead1">
|
<record model="crm.case.stage" id="stage_lead1">
|
||||||
<field name="name">New</field>
|
<field name="name">New</field>
|
||||||
<field eval="1" name="case_default"/>
|
<field eval="1" name="case_default"/>
|
||||||
|
<field name="state">draft</field>
|
||||||
<field eval="'10'" name="probability"/>
|
<field eval="'10'" name="probability"/>
|
||||||
<field eval="'11'" name="sequence"/>
|
<field eval="'10'" name="sequence"/>
|
||||||
|
<field name="type">both</field>
|
||||||
</record>
|
</record>
|
||||||
<record model="crm.case.stage" id="stage_lead2">
|
<record model="crm.case.stage" id="stage_lead2">
|
||||||
<field name="name">Qualification</field>
|
<field name="name">Opportunity</field>
|
||||||
<field eval="1" name="case_default"/>
|
<field eval="1" name="case_default"/>
|
||||||
|
<field name="state">open</field>
|
||||||
<field eval="'20'" name="probability"/>
|
<field eval="'20'" name="probability"/>
|
||||||
<field eval="'12'" name="sequence"/>
|
<field eval="'11'" name="sequence"/>
|
||||||
|
<field name="type">lead</field>
|
||||||
</record>
|
</record>
|
||||||
<record model="crm.case.stage" id="stage_lead3">
|
<record model="crm.case.stage" id="stage_lead3">
|
||||||
<field name="name">Proposition</field>
|
<field name="name">Qualification</field>
|
||||||
<field eval="1" name="case_default"/>
|
<field eval="1" name="case_default"/>
|
||||||
<field eval="'40'" name="probability"/>
|
<field name="state">open</field>
|
||||||
<field eval="'13'" name="sequence"/>
|
<field eval="'20'" name="probability"/>
|
||||||
|
<field eval="'12'" name="sequence"/>
|
||||||
|
<field name="type">opportunity</field>
|
||||||
</record>
|
</record>
|
||||||
<record model="crm.case.stage" id="stage_lead4">
|
<record model="crm.case.stage" id="stage_lead4">
|
||||||
<field name="name">Negotiation</field>
|
<field name="name">Proposition</field>
|
||||||
<field eval="1" name="case_default"/>
|
<field eval="1" name="case_default"/>
|
||||||
<field eval="'60'" name="probability"/>
|
<field name="state">open</field>
|
||||||
<field eval="'14'" name="sequence"/>
|
<field eval="'40'" name="probability"/>
|
||||||
|
<field eval="'13'" name="sequence"/>
|
||||||
|
<field name="type">opportunity</field>
|
||||||
</record>
|
</record>
|
||||||
<record model="crm.case.stage" id="stage_lead5">
|
<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 name="type">opportunity</field>
|
||||||
|
</record>
|
||||||
|
<record model="crm.case.stage" id="stage_lead6">
|
||||||
<field name="name">Won</field>
|
<field name="name">Won</field>
|
||||||
<field eval="1" name="case_default"/>
|
<field eval="1" name="case_default"/>
|
||||||
|
<field name="state">done</field>
|
||||||
<field eval="'100'" name="probability"/>
|
<field eval="'100'" name="probability"/>
|
||||||
<field eval="'15'" name="sequence"/>
|
<field eval="'15'" name="sequence"/>
|
||||||
<field eval="1" name="on_change"/>
|
<field eval="1" name="on_change"/>
|
||||||
|
<field name="type">opportunity</field>
|
||||||
</record>
|
</record>
|
||||||
|
<record model="crm.case.stage" id="stage_lead7">
|
||||||
|
<field name="name">Dead</field>
|
||||||
|
<field eval="1" name="case_default"/>
|
||||||
|
<field eval="True" 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 name="state">cancel</field>
|
||||||
|
<field eval="'0'" name="probability"/>
|
||||||
|
<field eval="'17'" name="sequence"/>
|
||||||
|
<field name="type">opportunity</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
<record model="crm.case.section" id="section_sales_department">
|
<record model="crm.case.section" id="section_sales_department">
|
||||||
<field name="name">Sales Department</field>
|
<field name="name">Sales Department</field>
|
||||||
<field name="code">Sales</field>
|
<field name="code">Sales</field>
|
||||||
<field name="stage_ids" eval="[(4, ref('stage_lead1')), (4, ref('stage_lead2')), (4, ref('stage_lead3')), (4, ref('stage_lead4')), (4, ref('stage_lead5')), (4, ref('stage_lead6'))]"/>
|
<field name="stage_ids" eval="[ (4, ref('stage_lead1')), (4, ref('stage_lead2')),
|
||||||
|
(4, ref('stage_lead3')), (4, ref('stage_lead4')),
|
||||||
|
(4, ref('stage_lead5')), (4, ref('stage_lead6')),
|
||||||
|
(4, ref('stage_lead7')), (4, ref('stage_lead8'))]"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<!-- Crm campain -->
|
<!-- Crm campain -->
|
||||||
|
|
|
@ -8,14 +8,13 @@
|
||||||
<field name="type">lead</field>
|
<field name="type">lead</field>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field eval="'The Oil Company'" name="partner_name"/>
|
<field eval="'The Oil Company'" name="partner_name"/>
|
||||||
<field eval="'draft'" name="state"/>
|
|
||||||
<field name="section_id" ref="crm.section_sales_marketing_department"/>
|
<field name="section_id" ref="crm.section_sales_marketing_department"/>
|
||||||
<field eval="'Luc Latour'" name="contact_name"/>
|
<field eval="'Luc Latour'" name="contact_name"/>
|
||||||
<field name="title" ref="base.res_partner_title_sir"/>
|
<field name="title" ref="base.res_partner_title_sir"/>
|
||||||
<field eval="'Training Manager'" name="function"/>
|
<field eval="'Training Manager'" name="function"/>
|
||||||
<field eval="'Paris'" name="city"/>
|
<field eval="'Paris'" name="city"/>
|
||||||
<field name="country_id" ref="base.fr"/>
|
<field name="country_id" ref="base.fr"/>
|
||||||
<field eval="'luc.latour@oilcompany.fr'" name="email_from"/>
|
<field eval="'luc.latour@oilcompany.fr'" name="email_from"/>
|
||||||
<field eval="'0033 621 782-0636'" name="mobile"/>
|
<field eval="'0033 621 782-0636'" name="mobile"/>
|
||||||
<field eval="1" name="active"/>
|
<field eval="1" name="active"/>
|
||||||
<field name="stage_id" ref="crm.stage_lead1"/>
|
<field name="stage_id" ref="crm.stage_lead1"/>
|
||||||
|
@ -29,18 +28,17 @@
|
||||||
<field name="type">lead</field>
|
<field name="type">lead</field>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field eval="'Le Club SARL'" name="partner_name"/>
|
<field eval="'Le Club SARL'" name="partner_name"/>
|
||||||
<field eval="'Marc Dufour'" name="contact_name"/>
|
<field eval="'Marc Dufour'" name="contact_name"/>
|
||||||
<field name="title" ref="base.res_partner_title_sir"/>
|
<field name="title" ref="base.res_partner_title_sir"/>
|
||||||
<field eval="'Purchase Manager'" name="function"/>
|
<field eval="'Purchase Manager'" name="function"/>
|
||||||
<field eval="'Bordeaux'" name="city"/>
|
<field eval="'Bordeaux'" name="city"/>
|
||||||
<field name="country_id" ref="base.fr"/>
|
<field name="country_id" ref="base.fr"/>
|
||||||
<field eval="'md@leclub.fr'" name="email_from"/>
|
<field eval="'md@leclub.fr'" name="email_from"/>
|
||||||
<field eval="'draft'" name="state"/>
|
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field eval="'(392) 895-7917'" name="mobile"/>
|
<field eval="'(392) 895-7917'" name="mobile"/>
|
||||||
<field eval="1" name="active"/>
|
<field eval="1" name="active"/>
|
||||||
<field name="categ_id" ref="crm.categ_oppor2"/>
|
<field name="categ_id" ref="crm.categ_oppor2"/>
|
||||||
<field name="stage_id" ref="crm.stage_lead2"/>
|
<field name="stage_id" ref="crm.stage_lead1"/>
|
||||||
<field eval="'Interest in Your New Product'" name="name"/>
|
<field eval="'Interest in Your New Product'" name="name"/>
|
||||||
<field eval="'(956) 293-2595'" name="phone"/>
|
<field eval="'(956) 293-2595'" name="phone"/>
|
||||||
</record>
|
</record>
|
||||||
|
@ -50,15 +48,14 @@
|
||||||
<field name="type">lead</field>
|
<field name="type">lead</field>
|
||||||
<field name="user_id" ref="base.user_demo"/>
|
<field name="user_id" ref="base.user_demo"/>
|
||||||
<field eval="'The Kompany'" name="partner_name"/>
|
<field eval="'The Kompany'" name="partner_name"/>
|
||||||
<field eval="'John Miller'" name="contact_name"/>
|
<field eval="'John Miller'" name="contact_name"/>
|
||||||
<field eval="'New-York'" name="city"/>
|
<field eval="'New-York'" name="city"/>
|
||||||
<field name="country_id" ref="base.us"/>
|
<field name="country_id" ref="base.us"/>
|
||||||
<field eval="'draft'" name="state"/>
|
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field eval="'(820) 167-3208'" name="mobile"/>
|
<field eval="'(820) 167-3208'" name="mobile"/>
|
||||||
<field eval="1" name="active"/>
|
<field eval="1" name="active"/>
|
||||||
<field name="categ_id" ref="crm.categ_oppor4"/>
|
<field name="categ_id" ref="crm.categ_oppor4"/>
|
||||||
<field name="stage_id" ref="crm.stage_lead2"/>
|
<field name="stage_id" ref="crm.stage_lead1"/>
|
||||||
<field eval="'Need Info about Web Design'" name="name"/>
|
<field eval="'Need Info about Web Design'" name="name"/>
|
||||||
<field eval="'(079) 681-2139'" name="phone"/>
|
<field eval="'(079) 681-2139'" name="phone"/>
|
||||||
<field eval="'contact@thkompany.com'" name="email_from"/>
|
<field eval="'contact@thkompany.com'" name="email_from"/>
|
||||||
|
@ -68,10 +65,9 @@
|
||||||
<field eval="'3'" name="priority"/>
|
<field eval="'3'" name="priority"/>
|
||||||
<field name="type">lead</field>
|
<field name="type">lead</field>
|
||||||
<field eval="'The Gas Company'" name="partner_name"/>
|
<field eval="'The Gas Company'" name="partner_name"/>
|
||||||
<field eval="'Henry Mc Coy'" name="contact_name"/>
|
<field eval="'Henry Mc Coy'" name="contact_name"/>
|
||||||
<field eval="'London'" name="city"/>
|
<field eval="'London'" name="city"/>
|
||||||
<field name="country_id" ref="base.uk"/>
|
<field name="country_id" ref="base.uk"/>
|
||||||
<field eval="'draft'" name="state"/>
|
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field eval="'(077) 582-4035'" name="mobile"/>
|
<field eval="'(077) 582-4035'" name="mobile"/>
|
||||||
<field eval="1" name="active"/>
|
<field eval="1" name="active"/>
|
||||||
|
@ -87,16 +83,15 @@
|
||||||
<field name="type">lead</field>
|
<field name="type">lead</field>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field eval="'Stonage IT'" name="partner_name"/>
|
<field eval="'Stonage IT'" name="partner_name"/>
|
||||||
<field eval="'Carrie Helle'" name="contact_name"/>
|
<field eval="'Carrie Helle'" name="contact_name"/>
|
||||||
<field eval="'Purchase Manager'" name="function"/>
|
<field eval="'Purchase Manager'" name="function"/>
|
||||||
<field eval="'Bruxelles'" name="city"/>
|
<field eval="'Bruxelles'" name="city"/>
|
||||||
<field name="country_id" ref="base.be"/>
|
<field name="country_id" ref="base.be"/>
|
||||||
<field eval="'draft'" name="state"/>
|
|
||||||
<field name="section_id" ref="crm.section_sales_marketing_department"/>
|
<field name="section_id" ref="crm.section_sales_marketing_department"/>
|
||||||
<field eval="'(333) 715-1450'" name="mobile"/>
|
<field eval="'(333) 715-1450'" name="mobile"/>
|
||||||
<field eval="1" name="active"/>
|
<field eval="1" name="active"/>
|
||||||
<field name="categ_id" ref="crm.categ_oppor1"/>
|
<field name="categ_id" ref="crm.categ_oppor1"/>
|
||||||
<field name="stage_id" ref="crm.stage_lead2"/>
|
<field name="stage_id" ref="crm.stage_lead1"/>
|
||||||
<field eval="'Need a Quotation for PC1'" name="name"/>
|
<field eval="'Need a Quotation for PC1'" name="name"/>
|
||||||
<field eval="'(855) 924-4364'" name="phone"/>
|
<field eval="'(855) 924-4364'" name="phone"/>
|
||||||
<field eval="'helle@stonageit.be'" name="email_from"/>
|
<field eval="'helle@stonageit.be'" name="email_from"/>
|
||||||
|
@ -110,15 +105,14 @@
|
||||||
<field name="type">lead</field>
|
<field name="type">lead</field>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field eval="'Opensides'" name="partner_name"/>
|
<field eval="'Opensides'" name="partner_name"/>
|
||||||
<field eval="'Tina Pinero'" name="contact_name"/>
|
<field eval="'Tina Pinero'" name="contact_name"/>
|
||||||
<field eval="'Consultant'" name="function"/>
|
<field eval="'Consultant'" name="function"/>
|
||||||
<field eval="'Roma'" name="city"/>
|
<field eval="'Roma'" name="city"/>
|
||||||
<field name="country_id" ref="base.it"/>
|
<field name="country_id" ref="base.it"/>
|
||||||
<field eval="'draft'" name="state"/>
|
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field eval="'(468) 017-2684'" name="mobile"/>
|
<field eval="'(468) 017-2684'" name="mobile"/>
|
||||||
<field name="categ_id" ref="crm.categ_oppor8"/>
|
<field name="categ_id" ref="crm.categ_oppor8"/>
|
||||||
<field name="stage_id" ref="crm.stage_lead6"/>
|
<field name="stage_id" ref="crm.stage_lead1"/>
|
||||||
<field eval="'Need Info about your Services'" name="name"/>
|
<field eval="'Need Info about your Services'" name="name"/>
|
||||||
<field eval="'(373) 907-1009'" name="phone"/>
|
<field eval="'(373) 907-1009'" name="phone"/>
|
||||||
<field eval="'info@opensides.be'" name="email_from"/>
|
<field eval="'info@opensides.be'" name="email_from"/>
|
||||||
|
@ -130,15 +124,14 @@
|
||||||
<field name="type">lead</field>
|
<field name="type">lead</field>
|
||||||
<field name="user_id" ref="base.user_demo"/>
|
<field name="user_id" ref="base.user_demo"/>
|
||||||
<field eval="'Gardner Group'" name="partner_name"/>
|
<field eval="'Gardner Group'" name="partner_name"/>
|
||||||
<field eval="'Wendi Baltz'" name="contact_name"/>
|
<field eval="'Wendi Baltz'" name="contact_name"/>
|
||||||
<field eval="'Journalist'" name="function"/>
|
<field eval="'Journalist'" name="function"/>
|
||||||
<field eval="'Kiev'" name="city"/>
|
<field eval="'Kiev'" name="city"/>
|
||||||
<field name="country_id" ref="base.ua"/>
|
<field name="country_id" ref="base.ua"/>
|
||||||
<field eval="'draft'" name="state"/>
|
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field eval="'(463) 014-1208'" name="mobile"/>
|
<field eval="'(463) 014-1208'" name="mobile"/>
|
||||||
<field name="categ_id" ref="crm.categ_oppor4"/>
|
<field name="categ_id" ref="crm.categ_oppor4"/>
|
||||||
<field name="stage_id" ref="crm.stage_lead2"/>
|
<field name="stage_id" ref="crm.stage_lead1"/>
|
||||||
<field eval="'Info about Your Company ?'" name="name"/>
|
<field eval="'Info about Your Company ?'" name="name"/>
|
||||||
<field eval="'(282) 603-7489'" name="phone"/>
|
<field eval="'(282) 603-7489'" name="phone"/>
|
||||||
</record>
|
</record>
|
||||||
|
@ -149,17 +142,16 @@
|
||||||
<field name="type">lead</field>
|
<field name="type">lead</field>
|
||||||
<field name="user_id" ref="base.user_demo"/>
|
<field name="user_id" ref="base.user_demo"/>
|
||||||
<field eval="'Survey'" name="name"/>
|
<field eval="'Survey'" name="name"/>
|
||||||
<field eval="'open'" name="state"/>
|
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field name="categ_id" ref="crm.categ_oppor6"/>
|
<field name="categ_id" ref="crm.categ_oppor6"/>
|
||||||
<field name="stage_id" ref="crm.stage_lead1"/>
|
<field name="stage_id" ref="crm.stage_lead1"/>
|
||||||
<field eval="'Survey Expert'" name="partner_name"/>
|
<field eval="'Survey Expert'" name="partner_name"/>
|
||||||
<field eval="'John Smith'" name="contact_name"/>
|
<field eval="'John Smith'" name="contact_name"/>
|
||||||
<field eval="'Sales'" name="function"/>
|
<field eval="'Sales'" name="function"/>
|
||||||
<field eval="'Cambridge'" name="city"/>
|
<field eval="'Cambridge'" name="city"/>
|
||||||
<field name="country_id" ref="base.uk"/>
|
<field name="country_id" ref="base.uk"/>
|
||||||
<field eval="'smith_john@gmail.com'" name="email_from"/>
|
<field eval="'smith_john@gmail.com'" name="email_from"/>
|
||||||
<field eval="'(282) 596-8584'" name="phone"/>
|
<field eval="'(282) 596-8584'" name="phone"/>
|
||||||
</record>
|
</record>
|
||||||
<record id="crm_case_business_card0" model="crm.lead">
|
<record id="crm_case_business_card0" model="crm.lead">
|
||||||
<field eval="1" name="active"/>
|
<field eval="1" name="active"/>
|
||||||
|
@ -168,17 +160,16 @@
|
||||||
<field name="type">lead</field>
|
<field name="type">lead</field>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field eval="'Partnership'" name="name"/>
|
<field eval="'Partnership'" name="name"/>
|
||||||
<field eval="'open'" name="state"/>
|
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field name="categ_id" ref="crm.categ_oppor5"/>
|
<field name="categ_id" ref="crm.categ_oppor5"/>
|
||||||
<field name="stage_id" ref="crm.stage_lead1"/>
|
<field name="stage_id" ref="crm.stage_lead1"/>
|
||||||
<field eval="'Marketing Business'" name="partner_name"/>
|
<field eval="'Marketing Business'" name="partner_name"/>
|
||||||
<field eval="'Laure Smith'" name="contact_name"/>
|
<field eval="'Laure Smith'" name="contact_name"/>
|
||||||
<field eval="'Sales'" name="function"/>
|
<field eval="'Sales'" name="function"/>
|
||||||
<field eval="'Oxford'" name="city"/>
|
<field eval="'Oxford'" name="city"/>
|
||||||
<field name="country_id" ref="base.uk"/>
|
<field name="country_id" ref="base.uk"/>
|
||||||
<field eval="'l.smith@marketing-business.com'" name="email_from"/>
|
<field eval="'l.smith@marketing-business.com'" name="email_from"/>
|
||||||
<field eval="'(252) 578-7894'" name="phone"/>
|
<field eval="'(252) 578-7894'" name="phone"/>
|
||||||
</record>
|
</record>
|
||||||
<record id="crm_case_imported_contact0" model="crm.lead">
|
<record id="crm_case_imported_contact0" model="crm.lead">
|
||||||
<field eval="1" name="active"/>
|
<field eval="1" name="active"/>
|
||||||
|
@ -186,9 +177,8 @@
|
||||||
<field eval="'2'" name="priority"/>
|
<field eval="'2'" name="priority"/>
|
||||||
<field name="type">lead</field>
|
<field name="type">lead</field>
|
||||||
<field eval="'Info'" name="name"/>
|
<field eval="'Info'" name="name"/>
|
||||||
<field eval="'cancel'" name="state"/>
|
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field name="stage_id" ref="crm.stage_lead2"/>
|
<field name="stage_id" ref="crm.stage_lead1"/>
|
||||||
<field eval="'Business Group'" name="partner_name"/>
|
<field eval="'Business Group'" name="partner_name"/>
|
||||||
</record>
|
</record>
|
||||||
<record id="crm_case_employee0" model="crm.lead">
|
<record id="crm_case_employee0" model="crm.lead">
|
||||||
|
@ -198,12 +188,11 @@
|
||||||
<field name="type">lead</field>
|
<field name="type">lead</field>
|
||||||
<field name="user_id" ref="base.user_demo"/>
|
<field name="user_id" ref="base.user_demo"/>
|
||||||
<field eval="'Need Info about Onsite Intervention'" name="name"/>
|
<field eval="'Need Info about Onsite Intervention'" name="name"/>
|
||||||
<field eval="'draft'" name="state"/>
|
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field name="categ_id" ref="crm.categ_oppor3"/>
|
<field name="categ_id" ref="crm.categ_oppor3"/>
|
||||||
<field name="stage_id" ref="crm.stage_lead2"/>
|
<field name="stage_id" ref="crm.stage_lead1"/>
|
||||||
<field eval="'Agrolait'" name="partner_name"/>
|
<field eval="'Agrolait'" name="partner_name"/>
|
||||||
<field eval="'Sylvie Lelitre'" name="contact_name"/>
|
<field eval="'Sylvie Lelitre'" name="contact_name"/>
|
||||||
</record>
|
</record>
|
||||||
<record id="crm_case_company_partnership0" model="crm.lead">
|
<record id="crm_case_company_partnership0" model="crm.lead">
|
||||||
<field eval="1" name="active"/>
|
<field eval="1" name="active"/>
|
||||||
|
@ -212,28 +201,15 @@
|
||||||
<field name="type">lead</field>
|
<field name="type">lead</field>
|
||||||
<field name="user_id" ref="base.user_demo"/>
|
<field name="user_id" ref="base.user_demo"/>
|
||||||
<field eval="'Need Quotation for 100 PC and 100 Keyboards'" name="name"/>
|
<field eval="'Need Quotation for 100 PC and 100 Keyboards'" name="name"/>
|
||||||
<field eval="'done'" name="state"/>
|
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field name="categ_id" ref="crm.categ_oppor1"/>
|
<field name="categ_id" ref="crm.categ_oppor1"/>
|
||||||
<field name="stage_id" ref="crm.stage_lead1"/>
|
<field name="stage_id" ref="crm.stage_lead1"/>
|
||||||
<field eval="'Centrale d\'achats 1'" name="partner_name"/>
|
<field eval="'Centrale d\'achats 1'" name="partner_name"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<!-- Call Function to Open the leads-->
|
<!-- Call Function to Cancel the leads (set as Dead) -->
|
||||||
<function model="crm.lead" name="case_open"
|
|
||||||
eval="[ref('crm_case_electonicgoodsdealer0'), ref('crm_case_company_partnership0'), ref('crm_case_webvisitor0'), ref('crm_case_business_card0'), ref('crm.crm_case_employee0')], {'install_mode': True}"
|
|
||||||
/>
|
|
||||||
<!-- Call Function to mark the lead as Pending-->
|
|
||||||
<function model="crm.lead" name="case_pending"
|
|
||||||
eval="[ref('crm_case_itdeveloper0')], {'install_mode': True}"
|
|
||||||
/>
|
|
||||||
<!-- Call Function to Close the leads-->
|
|
||||||
<function model="crm.lead" name="case_close"
|
|
||||||
eval="[ref('crm_case_vpoperations0'), ref('crm_case_developingwebapplications0'), ref('crm_case_webvisitor0')], {'install_mode': True}"
|
|
||||||
/>
|
|
||||||
<!-- Call Function to Cancel the leads-->
|
|
||||||
<function model="crm.lead" name="case_cancel"
|
<function model="crm.lead" name="case_cancel"
|
||||||
eval="[ref('crm_case_mgroperations0'), ref('crm_case_imported_contact0')], {'install_mode': True}"
|
eval="[ref('crm_case_company_partnership0'), ref('crm_case_vpoperations0'), ref('crm_case_developingwebapplications0'), ref('crm_case_webvisitor0')], {'install_mode': True}"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- Demo Opportunities -->
|
<!-- Demo Opportunities -->
|
||||||
|
@ -245,11 +221,10 @@
|
||||||
<field name="partner_id" ref="base.res_partner_3"/>
|
<field name="partner_id" ref="base.res_partner_3"/>
|
||||||
<field eval="'3'" name="priority"/>
|
<field eval="'3'" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field eval="'open'" name="state"/>
|
|
||||||
<field eval="'150000'" name="planned_revenue"/>
|
<field eval="'150000'" name="planned_revenue"/>
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field name="categ_id" ref="crm.categ_oppor1"/>
|
<field name="categ_id" ref="crm.categ_oppor1"/>
|
||||||
<field name="stage_id" ref="crm.stage_lead3"/>
|
<field name="stage_id" ref="crm.stage_lead4"/>
|
||||||
<field eval="'Plan to buy 200 PC2'" name="name"/>
|
<field eval="'Plan to buy 200 PC2'" name="name"/>
|
||||||
<field eval="'Conf call with purchase manager'" name="title_action"/>
|
<field eval="'Conf call with purchase manager'" name="title_action"/>
|
||||||
</record>
|
</record>
|
||||||
|
@ -260,12 +235,11 @@
|
||||||
<field name="partner_id" ref="base.res_partner_9"/>
|
<field name="partner_id" ref="base.res_partner_9"/>
|
||||||
<field eval="'3'" name="priority"/>
|
<field eval="'3'" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_demo"/>
|
<field name="user_id" ref="base.user_demo"/>
|
||||||
<field eval="'draft'" name="state"/>
|
|
||||||
<field eval="45000.0" name="planned_revenue"/>
|
<field eval="45000.0" name="planned_revenue"/>
|
||||||
<field eval="35" name="probability"/>
|
<field eval="35" name="probability"/>
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field name="categ_id" ref="crm.categ_oppor3"/>
|
<field name="categ_id" ref="crm.categ_oppor3"/>
|
||||||
<field name="stage_id" ref="crm.stage_lead2"/>
|
<field name="stage_id" ref="crm.stage_lead3"/>
|
||||||
<field eval="'Pricing Information of Onsite Intervention'" name="name"/>
|
<field eval="'Pricing Information of Onsite Intervention'" name="name"/>
|
||||||
<field eval="'Send price list regarding our interventions'" name="title_action"/>
|
<field eval="'Send price list regarding our interventions'" name="title_action"/>
|
||||||
<field eval="time.strftime('%Y-%m-03')" name="date_action"/>
|
<field eval="time.strftime('%Y-%m-03')" name="date_action"/>
|
||||||
|
@ -283,12 +257,11 @@
|
||||||
<field name="partner_id" ref="base.res_partner_lucievonck0"/>
|
<field name="partner_id" ref="base.res_partner_lucievonck0"/>
|
||||||
<field eval="'3'" name="priority"/>
|
<field eval="'3'" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_demo"/>
|
<field name="user_id" ref="base.user_demo"/>
|
||||||
<field eval="'draft'" name="state"/>
|
|
||||||
<field eval="30000.0" name="planned_revenue"/>
|
<field eval="30000.0" name="planned_revenue"/>
|
||||||
<field eval="30" name="probability"/>
|
<field eval="30" name="probability"/>
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field name="categ_id" ref="crm.categ_oppor3"/>
|
<field name="categ_id" ref="crm.categ_oppor3"/>
|
||||||
<field name="stage_id" ref="crm.stage_lead2"/>
|
<field name="stage_id" ref="crm.stage_lead3"/>
|
||||||
<field eval="'Interest in your Kitchen Design Project'" name="name"/>
|
<field eval="'Interest in your Kitchen Design Project'" name="name"/>
|
||||||
<field eval="'Send Catalogue by E-Mail'" name="title_action"/>
|
<field eval="'Send Catalogue by E-Mail'" name="title_action"/>
|
||||||
<field eval="time.strftime('%Y-01-10')" name="date_action"/>
|
<field eval="time.strftime('%Y-01-10')" name="date_action"/>
|
||||||
|
@ -299,19 +272,18 @@
|
||||||
<field eval="1367" name="zip"/>
|
<field eval="1367" name="zip"/>
|
||||||
<field name="country_id" ref="base.be"/>
|
<field name="country_id" ref="base.be"/>
|
||||||
</record>
|
</record>
|
||||||
<record id="crm_case_unifliege" model="crm.lead">
|
<record id="crm_case_unifliege" model="crm.lead">
|
||||||
<field eval="1" name="active"/>
|
<field eval="1" name="active"/>
|
||||||
<field name="type">opportunity</field>
|
<field name="type">opportunity</field>
|
||||||
<field name="type_id" ref="crm.type_lead2"/>
|
<field name="type_id" ref="crm.type_lead2"/>
|
||||||
<field name="partner_id" ref="base.res_partner_accent"/>
|
<field name="partner_id" ref="base.res_partner_accent"/>
|
||||||
<field eval="'3'" name="priority"/>
|
<field eval="'3'" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field eval="'open'" name="state"/>
|
|
||||||
<field eval="2500.0" name="planned_revenue"/>
|
<field eval="2500.0" name="planned_revenue"/>
|
||||||
<field eval="25" name="probability"/>
|
<field eval="25" name="probability"/>
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field name="categ_id" ref="crm.categ_oppor6"/>
|
<field name="categ_id" ref="crm.categ_oppor6"/>
|
||||||
<field name="stage_id" ref="crm.stage_lead2"/>
|
<field name="stage_id" ref="crm.stage_lead3"/>
|
||||||
<field eval="'Plan train our students on your product'" name="name"/>
|
<field eval="'Plan train our students on your product'" name="name"/>
|
||||||
<field eval="'Call to define real needs about training'" name="title_action"/>
|
<field eval="'Call to define real needs about training'" name="title_action"/>
|
||||||
<field eval="time.strftime('%Y-%m-04')" name="date_action"/>
|
<field eval="time.strftime('%Y-%m-04')" name="date_action"/>
|
||||||
|
@ -323,19 +295,18 @@
|
||||||
<field eval="75016" name="zip"/>
|
<field eval="75016" name="zip"/>
|
||||||
<field name="country_id" ref="base.be"/>
|
<field name="country_id" ref="base.be"/>
|
||||||
</record>
|
</record>
|
||||||
<record id="crm_case_bankwealthy2" model="crm.lead">
|
<record id="crm_case_bankwealthy2" model="crm.lead">
|
||||||
<field eval="1" name="active"/>
|
<field eval="1" name="active"/>
|
||||||
<field name="type">opportunity</field>
|
<field name="type">opportunity</field>
|
||||||
<field name="type_id" ref="crm.type_lead2"/>
|
<field name="type_id" ref="crm.type_lead2"/>
|
||||||
<field name="partner_id" ref="base.res_partner_2"/>
|
<field name="partner_id" ref="base.res_partner_2"/>
|
||||||
<field eval="'3'" name="priority"/>
|
<field eval="'3'" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field eval="'open'" name="state"/>
|
|
||||||
<field eval="462.0" name="planned_revenue"/>
|
<field eval="462.0" name="planned_revenue"/>
|
||||||
<field eval="40" name="probability"/>
|
<field eval="40" name="probability"/>
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field name="categ_id" ref="crm.categ_oppor2"/>
|
<field name="categ_id" ref="crm.categ_oppor2"/>
|
||||||
<field name="stage_id" ref="crm.stage_lead2"/>
|
<field name="stage_id" ref="crm.stage_lead3"/>
|
||||||
<field eval="'Plan to buy 66 keyboards and 66 mouses'" name="name"/>
|
<field eval="'Plan to buy 66 keyboards and 66 mouses'" name="name"/>
|
||||||
<field eval="'Propose the kit keyboard+mouse'" name="title_action"/>
|
<field eval="'Propose the kit keyboard+mouse'" name="title_action"/>
|
||||||
<field eval="time.strftime('%Y-04-12')" name="date_action"/>
|
<field eval="time.strftime('%Y-04-12')" name="date_action"/>
|
||||||
|
@ -354,12 +325,11 @@
|
||||||
<field name="partner_id" ref="base.res_partner_8"/>
|
<field name="partner_id" ref="base.res_partner_8"/>
|
||||||
<field eval="'3'" name="priority"/>
|
<field eval="'3'" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field eval="'done'" name="state"/>
|
|
||||||
<field eval="55000.0" name="planned_revenue"/>
|
<field eval="55000.0" name="planned_revenue"/>
|
||||||
<field eval="90" name="probability"/>
|
<field eval="90" name="probability"/>
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field name="categ_id" ref="crm.categ_oppor7"/>
|
<field name="categ_id" ref="crm.categ_oppor7"/>
|
||||||
<field name="stage_id" ref="crm.stage_lead5"/>
|
<field name="stage_id" ref="crm.stage_lead6"/>
|
||||||
<field eval="'Need 20 Days of Consultancy'" name="name"/>
|
<field eval="'Need 20 Days of Consultancy'" name="name"/>
|
||||||
<field eval="time.strftime('%Y-%m-%d')" name="date_deadline"/>
|
<field eval="time.strftime('%Y-%m-%d')" name="date_deadline"/>
|
||||||
<field eval="'info@mycompany.net'" name="email_from"/>
|
<field eval="'info@mycompany.net'" name="email_from"/>
|
||||||
|
@ -372,11 +342,10 @@
|
||||||
<field name="partner_id" ref="base.res_partner_duboissprl0"/>
|
<field name="partner_id" ref="base.res_partner_duboissprl0"/>
|
||||||
<field eval="'3'" name="priority"/>
|
<field eval="'3'" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_demo"/>
|
<field name="user_id" ref="base.user_demo"/>
|
||||||
<field eval="'open'" name="state"/>
|
|
||||||
<field eval="45000.0" name="planned_revenue"/>
|
<field eval="45000.0" name="planned_revenue"/>
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field name="categ_id" ref="crm.categ_oppor5"/>
|
<field name="categ_id" ref="crm.categ_oppor5"/>
|
||||||
<field name="stage_id" ref="crm.stage_lead4"/>
|
<field name="stage_id" ref="crm.stage_lead5"/>
|
||||||
<field eval="'Need new design for my website'" name="name"/>
|
<field eval="'Need new design for my website'" name="name"/>
|
||||||
<field eval="time.strftime('%Y-05-01')" name="date_action"/>
|
<field eval="time.strftime('%Y-05-01')" name="date_action"/>
|
||||||
<field eval="time.strftime('%Y-06-30')" name="date_deadline"/>
|
<field eval="time.strftime('%Y-06-30')" name="date_deadline"/>
|
||||||
|
@ -395,40 +364,37 @@
|
||||||
<field name="partner_id" ref="base.res_partner_maxtor"/>
|
<field name="partner_id" ref="base.res_partner_maxtor"/>
|
||||||
<field eval="'3'" name="priority"/>
|
<field eval="'3'" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_demo"/>
|
<field name="user_id" ref="base.user_demo"/>
|
||||||
<field eval="'done'" name="state"/>
|
|
||||||
<field eval="42000.0" name="planned_revenue"/>
|
<field eval="42000.0" name="planned_revenue"/>
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field name="categ_id" ref="crm.categ_oppor2"/>
|
<field name="categ_id" ref="crm.categ_oppor2"/>
|
||||||
<field name="stage_id" ref="crm.stage_lead6"/>
|
<field name="stage_id" ref="crm.stage_lead8"/>
|
||||||
<field eval="'Want to subscribe to your online solution'" name="name"/>
|
<field eval="'Want to subscribe to your online solution'" name="name"/>
|
||||||
</record>
|
</record>
|
||||||
<record id="crm_case_dirtminingltdunits0" model="crm.lead">
|
<record id="crm_case_dirtminingltdunits0" model="crm.lead">
|
||||||
<field eval="30" name="probability"/>
|
<field eval="30" name="probability"/>
|
||||||
<field eval="1" name="active"/>
|
<field eval="1" name="active"/>
|
||||||
<field name="type">opportunity</field>
|
<field name="type">opportunity</field>
|
||||||
<field name="partner_id" ref="base.res_partner_tinyatwork"/>
|
<field name="partner_id" ref="base.res_partner_tinyatwork"/>
|
||||||
<field eval="'3'" name="priority"/>
|
<field eval="'3'" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field eval="'done'" name="state"/>
|
|
||||||
<field eval="25000.0" name="planned_revenue"/>
|
<field eval="25000.0" name="planned_revenue"/>
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field name="categ_id" ref="crm.categ_oppor6"/>
|
<field name="categ_id" ref="crm.categ_oppor6"/>
|
||||||
<field name="stage_id" ref="crm.stage_lead6"/>
|
<field name="stage_id" ref="crm.stage_lead8"/>
|
||||||
<field eval="'Interest in your Partnership Contract'" name="name"/>
|
<field eval="'Interest in your Partnership Contract'" name="name"/>
|
||||||
</record>
|
</record>
|
||||||
<record id="crm_case_dirtminingltdunits10" model="crm.lead">
|
<record id="crm_case_dirtminingltdunits10" model="crm.lead">
|
||||||
<field eval="30" name="probability"/>
|
<field eval="30" name="probability"/>
|
||||||
<field eval="1" name="active"/>
|
<field eval="1" name="active"/>
|
||||||
<field name="type">opportunity</field>
|
<field name="type">opportunity</field>
|
||||||
<field name="partner_id" ref="base.res_partner_desertic_hispafuentes"/>
|
<field name="partner_id" ref="base.res_partner_desertic_hispafuentes"/>
|
||||||
<field eval="'3'" name="priority"/>
|
<field eval="'3'" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field eval="'open'" name="state"/>
|
|
||||||
<field eval="5000" name="planned_revenue"/>
|
<field eval="5000" name="planned_revenue"/>
|
||||||
<field eval="30" name="probability"/>
|
<field eval="30" name="probability"/>
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field name="categ_id" ref="crm.categ_oppor2"/>
|
<field name="categ_id" ref="crm.categ_oppor2"/>
|
||||||
<field name="stage_id" ref="crm.stage_lead2"/>
|
<field name="stage_id" ref="crm.stage_lead3"/>
|
||||||
<field eval="'Plan to attend a training'" name="name"/>
|
<field eval="'Plan to attend a training'" name="name"/>
|
||||||
<field eval="time.strftime('%Y-04-10')" name="date_action"/>
|
<field eval="time.strftime('%Y-04-10')" name="date_action"/>
|
||||||
<field eval="time.strftime('%Y-06-12')" name="date_deadline"/>
|
<field eval="time.strftime('%Y-06-12')" name="date_deadline"/>
|
||||||
|
@ -439,7 +405,7 @@
|
||||||
<field eval="77420" name="zip"/>
|
<field eval="77420" name="zip"/>
|
||||||
<field name="country_id" ref="base.fr"/>
|
<field name="country_id" ref="base.fr"/>
|
||||||
</record>
|
</record>
|
||||||
<record id="crm_case_construstazunits0" model="crm.lead">
|
<record id="crm_case_construstazunits0" model="crm.lead">
|
||||||
<field eval="60" name="probability"/>
|
<field eval="60" name="probability"/>
|
||||||
<field eval="1" name="active"/>
|
<field eval="1" name="active"/>
|
||||||
<field name="type">opportunity</field>
|
<field name="type">opportunity</field>
|
||||||
|
@ -447,11 +413,10 @@
|
||||||
<field name="partner_id" ref="base.res_partner_thymbra"/>
|
<field name="partner_id" ref="base.res_partner_thymbra"/>
|
||||||
<field eval="'3'" name="priority"/>
|
<field eval="'3'" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field eval="'open'" name="state"/>
|
|
||||||
<field eval="'150000'" name="planned_revenue"/>
|
<field eval="'150000'" name="planned_revenue"/>
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field name="categ_id" ref="crm.categ_oppor1"/>
|
<field name="categ_id" ref="crm.categ_oppor1"/>
|
||||||
<field name="stage_id" ref="crm.stage_lead3"/>
|
<field name="stage_id" ref="crm.stage_lead4"/>
|
||||||
<field eval="'Need customize the solution'" name="name"/>
|
<field eval="'Need customize the solution'" name="name"/>
|
||||||
<field eval="'Conf call with technical service'" name="title_action"/>
|
<field eval="'Conf call with technical service'" name="title_action"/>
|
||||||
<field name="partner_name">Thymbra</field>
|
<field name="partner_name">Thymbra</field>
|
||||||
|
@ -461,7 +426,7 @@
|
||||||
<field eval="1659" name="zip"/>
|
<field eval="1659" name="zip"/>
|
||||||
<field name="country_id" ref="base.ar"/>
|
<field name="country_id" ref="base.ar"/>
|
||||||
</record>
|
</record>
|
||||||
<record id="crm_case_ericdubois4" model="crm.lead">
|
<record id="crm_case_ericdubois4" model="crm.lead">
|
||||||
<field eval="65" name="probability"/>
|
<field eval="65" name="probability"/>
|
||||||
<field eval="1" name="active"/>
|
<field eval="1" name="active"/>
|
||||||
<field name="type">opportunity</field>
|
<field name="type">opportunity</field>
|
||||||
|
@ -469,11 +434,10 @@
|
||||||
<field name="partner_id" ref="base.res_partner_ericdubois0"/>
|
<field name="partner_id" ref="base.res_partner_ericdubois0"/>
|
||||||
<field eval="'3'" name="priority"/>
|
<field eval="'3'" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field eval="'open'" name="state"/>
|
|
||||||
<field eval="'1200'" name="planned_revenue"/>
|
<field eval="'1200'" name="planned_revenue"/>
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field name="categ_id" ref="crm.categ_oppor1"/>
|
<field name="categ_id" ref="crm.categ_oppor1"/>
|
||||||
<field name="stage_id" ref="crm.stage_lead3"/>
|
<field name="stage_id" ref="crm.stage_lead4"/>
|
||||||
<field eval="'Interest in your customizable PC'" name="name"/>
|
<field eval="'Interest in your customizable PC'" name="name"/>
|
||||||
<field eval="time.strftime('%Y-08-05')" name="date_action"/>
|
<field eval="time.strftime('%Y-08-05')" name="date_action"/>
|
||||||
<field eval="time.strftime('%Y-10-10')" name="date_deadline"/>
|
<field eval="time.strftime('%Y-10-10')" name="date_deadline"/>
|
||||||
|
@ -484,26 +448,24 @@
|
||||||
<field eval="7000" name="zip"/>
|
<field eval="7000" name="zip"/>
|
||||||
<field name="country_id" ref="base.be"/>
|
<field name="country_id" ref="base.be"/>
|
||||||
</record>
|
</record>
|
||||||
<record id="crm_case_fabiendupont" model="crm.lead">
|
<record id="crm_case_fabiendupont" model="crm.lead">
|
||||||
<field eval="1" name="active"/>
|
<field eval="1" name="active"/>
|
||||||
<field name="type">opportunity</field>
|
<field name="type">opportunity</field>
|
||||||
<field name="type_id" ref="crm.type_lead1"/>
|
<field name="type_id" ref="crm.type_lead1"/>
|
||||||
<field name="partner_id" ref="base.res_partner_fabiendupont0"/>
|
<field name="partner_id" ref="base.res_partner_fabiendupont0"/>
|
||||||
<field eval="'3'" name="priority"/>
|
<field eval="'3'" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field eval="'draft'" name="state"/>
|
|
||||||
<field name="categ_id" ref="crm.categ_oppor4"/>
|
<field name="categ_id" ref="crm.categ_oppor4"/>
|
||||||
<field name="stage_id" ref="crm.stage_lead1"/>
|
<field name="stage_id" ref="crm.stage_lead1"/>
|
||||||
<field eval="'Need more info about the onsite intervention'" name="name"/>
|
<field eval="'Need more info about the onsite intervention'" name="name"/>
|
||||||
</record>
|
</record>
|
||||||
<record id="crm_case_shelvehouse" model="crm.lead">
|
<record id="crm_case_shelvehouse" model="crm.lead">
|
||||||
<field eval="1" name="active"/>
|
<field eval="1" name="active"/>
|
||||||
<field name="type">opportunity</field>
|
<field name="type">opportunity</field>
|
||||||
<field name="type_id" ref="crm.type_lead1"/>
|
<field name="type_id" ref="crm.type_lead1"/>
|
||||||
<field name="partner_id" ref="base.res_partner_theshelvehouse0"/>
|
<field name="partner_id" ref="base.res_partner_theshelvehouse0"/>
|
||||||
<field eval="'3'" name="priority"/>
|
<field eval="'3'" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_demo"/>
|
<field name="user_id" ref="base.user_demo"/>
|
||||||
<field eval="'draft'" name="state"/>
|
|
||||||
<field name="categ_id" ref="crm.categ_oppor4"/>
|
<field name="categ_id" ref="crm.categ_oppor4"/>
|
||||||
<field name="stage_id" ref="crm.stage_lead1"/>
|
<field name="stage_id" ref="crm.stage_lead1"/>
|
||||||
<field eval="'Need more info about your pc2'" name="name"/>
|
<field eval="'Need more info about your pc2'" name="name"/>
|
||||||
|
|
|
@ -1,35 +1,41 @@
|
||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<openerp>
|
<openerp>
|
||||||
<data>
|
<data>
|
||||||
|
|
||||||
<!-- Stage Search view -->
|
<!--
|
||||||
<record id="crm_lead_stage_search" model="ir.ui.view">
|
CRM CASE STAGE
|
||||||
<field name="name">Stage - Search</field>
|
-->
|
||||||
<field name="model">crm.case.stage</field>
|
|
||||||
<field name="type">search</field>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<search string="Stage Search">
|
|
||||||
<field name="name"/>
|
|
||||||
</search>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<!--Lead Stage Form view -->
|
<!-- Stage Search view -->
|
||||||
<record id="crm_lead_stage_act" model="ir.actions.act_window">
|
<record id="crm_lead_stage_search" model="ir.ui.view">
|
||||||
<field name="name">Stages</field>
|
<field name="name">Stage - Search</field>
|
||||||
<field name="res_model">crm.case.stage</field>
|
<field name="model">crm.case.stage</field>
|
||||||
<field name="view_type">form</field>
|
<field name="type">search</field>
|
||||||
<field name="view_id" ref="crm.crm_case_stage_tree"/>
|
<field name="arch" type="xml">
|
||||||
<field name="help">Add specific stages to leads and opportunities allowing your sales to better organise their sales pipeline. Stages will allow them to easily track how a specific lead or opportunity is positioned in the sales cycle.</field>
|
<search string="Stage Search">
|
||||||
</record>
|
<field name="name"/>
|
||||||
|
<field name="state"/>
|
||||||
|
<field name="type"/>
|
||||||
|
</search>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
<menuitem action="crm_lead_stage_act" id="menu_crm_lead_stage_act" name="Stages"
|
<!-- Stage Form view -->
|
||||||
groups="base.group_no_one" sequence="0"
|
<record id="crm_lead_stage_act" model="ir.actions.act_window">
|
||||||
parent="base.menu_crm_config_lead" />
|
<field name="name">Stages</field>
|
||||||
|
<field name="res_model">crm.case.stage</field>
|
||||||
|
<field name="view_type">form</field>
|
||||||
|
<field name="view_id" ref="crm.crm_case_stage_tree"/>
|
||||||
|
<field name="help">Add specific stages to leads and opportunities allowing your sales to better organise their sales pipeline. Stages will allow them to easily track how a specific lead or opportunity is positioned in the sales cycle.</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<menuitem action="crm_lead_stage_act" id="menu_crm_lead_stage_act" name="Stages" sequence="0" parent="base.menu_crm_config_lead" />
|
||||||
|
|
||||||
<!-- Lead/Opportunity Categories Action -->
|
<!--
|
||||||
|
LEADS/OPPORTUNITIES CATEGORIES
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!-- Categories Form View -->
|
||||||
<record id="crm_lead_categ_action" model="ir.actions.act_window">
|
<record id="crm_lead_categ_action" model="ir.actions.act_window">
|
||||||
<field name="name">Categories</field>
|
<field name="name">Categories</field>
|
||||||
<field name="res_model">crm.case.categ</field>
|
<field name="res_model">crm.case.categ</field>
|
||||||
|
@ -44,6 +50,9 @@
|
||||||
id="menu_crm_lead_categ" name="Categories"
|
id="menu_crm_lead_categ" name="Categories"
|
||||||
parent="base.menu_crm_config_lead" sequence="1" groups="base.group_no_one"/>
|
parent="base.menu_crm_config_lead" sequence="1" groups="base.group_no_one"/>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
LEADS
|
||||||
|
-->
|
||||||
|
|
||||||
<!-- CRM Lead Form View -->
|
<!-- CRM Lead Form View -->
|
||||||
<record model="ir.ui.view" id="crm_case_form_view_leads">
|
<record model="ir.ui.view" id="crm_case_form_view_leads">
|
||||||
|
@ -53,14 +62,17 @@
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<form string="Leads Form" layout="manual">
|
<form string="Leads Form" layout="manual">
|
||||||
<div class="oe_form_topbar">
|
<div class="oe_form_topbar">
|
||||||
<button name="case_open" string="Open" states="draft,pending" type="object" />
|
<button name="%(crm.action_crm_lead2opportunity_partner)d" string="Convert to Opportunity" type="action"
|
||||||
<button name="case_mark_lost" string="Close" states="open,pending" type="object" />
|
states="draft,open,pending" help="Convert to Opportunity"/>
|
||||||
<button name="case_pending" string="Pending" states="open" type="object" />
|
<button name="case_escalate" string="Escalate" type="object"
|
||||||
<button name="case_escalate" string="Escalate" states="open,pending" type="object" />
|
states="draft,open,pending"/>
|
||||||
<button name="case_reset" string="Reset to Draft" states="done,cancel" type="object" />
|
<button name="case_reset" string="Reset" type="object"
|
||||||
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" />
|
states="cancel"/>
|
||||||
|
<button name="case_cancel" string="Cancel" type="object"
|
||||||
|
states="draft,open,pending"/>
|
||||||
<div class="oe_right">
|
<div class="oe_right">
|
||||||
<field name="state" nolabel="1" widget="statusbar" statusbar_visible="draft,open,done" statusbar_colors='{"pending":"blue"}'/>
|
<field name="stage_id" nolabel="1" widget="statusbar"
|
||||||
|
on_change="onchange_stage_id(stage_id)"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="oe_clear"/>
|
<div class="oe_clear"/>
|
||||||
</div>
|
</div>
|
||||||
|
@ -71,24 +83,9 @@
|
||||||
<field name="categ_id"
|
<field name="categ_id"
|
||||||
widget="selection"
|
widget="selection"
|
||||||
domain="[('object_id.model','=','crm.lead')]"/>
|
domain="[('object_id.model','=','crm.lead')]"/>
|
||||||
<button
|
|
||||||
name="%(crm.action_crm_lead2opportunity_partner)d"
|
|
||||||
string="Convert to Opportunity"
|
|
||||||
help="Convert to Opportunity" icon="gtk-go-forward"
|
|
||||||
type="action"
|
|
||||||
/>
|
|
||||||
<newline />
|
<newline />
|
||||||
<field name="user_id" />
|
<field name="user_id" />
|
||||||
<field name="section_id" widget="selection" />
|
<field name="section_id" widget="selection" />
|
||||||
<field name="stage_id" domain="section_id and [('section_ids', '=', section_id)] or []" />
|
|
||||||
<group col="2" colspan="1">
|
|
||||||
<button name="stage_previous" string=""
|
|
||||||
states="open,pending,draft" type="object"
|
|
||||||
icon="gtk-go-back" context="{'stage_type': 'lead'}" />
|
|
||||||
<button name="stage_next" string=""
|
|
||||||
states="open,pending,draft" type="object"
|
|
||||||
icon="gtk-go-forward" context="{'stage_type': 'lead'}" />
|
|
||||||
</group>
|
|
||||||
<field name="type" invisible="1"/>
|
<field name="type" invisible="1"/>
|
||||||
</group>
|
</group>
|
||||||
<notebook colspan="4">
|
<notebook colspan="4">
|
||||||
|
@ -142,6 +139,7 @@
|
||||||
<field name="type_id" select="1" widget="selection"/>
|
<field name="type_id" select="1" widget="selection"/>
|
||||||
<field name="channel_id" select="1" widget="selection"/>
|
<field name="channel_id" select="1" widget="selection"/>
|
||||||
<field name="referred"/>
|
<field name="referred"/>
|
||||||
|
<field name="state" groups="base.group_no_one"/>
|
||||||
</group>
|
</group>
|
||||||
<group colspan="2" col="2">
|
<group colspan="2" col="2">
|
||||||
<separator string="Mailings" colspan="2" col="2"/>
|
<separator string="Mailings" colspan="2" col="2"/>
|
||||||
|
@ -161,72 +159,49 @@
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<!-- CRM Lead Tree View -->
|
<!-- CRM Lead Tree View -->
|
||||||
|
<record model="ir.ui.view" id="crm_case_tree_view_leads">
|
||||||
|
<field name="name">Leads</field>
|
||||||
|
<field name="model">crm.lead</field>
|
||||||
|
<field name="type">tree</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<tree string="Leads" fonts="bold:needaction_pending==True" colors="blue:state=='pending';grey:state in ('cancel', 'done')">
|
||||||
|
<field name="needaction_pending" invisible="1"/>
|
||||||
|
<field name="date_deadline" invisible="1"/>
|
||||||
|
<field name="create_date" groups="base.group_no_one"/>
|
||||||
|
<field name="name" string="Subject"/>
|
||||||
|
<field name="contact_name"/>
|
||||||
|
<field name="country_id" invisible="context.get('invisible_country', True)" />
|
||||||
|
<field name="email_from"/>
|
||||||
|
<field name="phone"/>
|
||||||
|
<field name="stage_id"/>
|
||||||
|
<field name="categ_id" invisible="1"/>
|
||||||
|
<field name="section_id" invisible="context.get('invisible_section', True)" />
|
||||||
|
<field name="state" groups="base.group_no_one"/>
|
||||||
|
<field name="type_id" invisible="1"/>
|
||||||
|
<field name="referred" invisible="1"/>
|
||||||
|
<field name="channel_id" invisible="1"/>
|
||||||
|
<field name="subjects" invisible="1"/>
|
||||||
|
</tree>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
<record model="ir.ui.view" id="crm_case_tree_view_leads">
|
<!-- CRM Lead Calendar View -->
|
||||||
<field name="name">Leads</field>
|
<record model="ir.ui.view" id="crm_case_calendar_view_leads">
|
||||||
<field name="model">crm.lead</field>
|
<field name="name">CRM - Leads Calendar</field>
|
||||||
<field name="type">tree</field>
|
<field name="model">crm.lead</field>
|
||||||
<field name="arch" type="xml">
|
<field name="type">calendar</field>
|
||||||
<tree string="Leads" fonts="bold:needaction_pending==True" colors="blue:state=='pending';grey:state in ('cancel', 'done')">
|
<field name="priority" eval="2"/>
|
||||||
<field name="needaction_pending" invisible="1"/>
|
<field name="arch" type="xml">
|
||||||
<field name="date_deadline" invisible="1"/>
|
<calendar string="Leads Generation"
|
||||||
<field name="create_date" groups="base.group_no_one"/>
|
date_start="date_action" color="user_id">
|
||||||
<field name="name" string="Subject"/>
|
<field name="name" />
|
||||||
<field name="contact_name"/>
|
<field name="partner_name" />
|
||||||
<field name="country_id" invisible="context.get('invisible_country', True)" />
|
</calendar>
|
||||||
<field name="email_from"/>
|
</field>
|
||||||
<field name="phone"/>
|
</record>
|
||||||
|
|
||||||
<field name="categ_id" invisible="1"/>
|
|
||||||
<field name="type_id" invisible="1"/>
|
|
||||||
<field name="referred" invisible="1"/>
|
|
||||||
<field name="channel_id" invisible="1"/>
|
|
||||||
<field name="subjects" invisible="1"/>
|
|
||||||
|
|
||||||
<field name="stage_id"/>
|
|
||||||
<button name="stage_previous" string="Previous Stage"
|
|
||||||
states="open,pending" type="object" icon="gtk-go-back" />
|
|
||||||
<button name="stage_next" string="Next Stage"
|
|
||||||
states="open,pending" type="object"
|
|
||||||
icon="gtk-go-forward" />
|
|
||||||
<field name="section_id" invisible="context.get('invisible_section', True)" />
|
|
||||||
<field name="user_id" />
|
|
||||||
<field name="state" />
|
|
||||||
<button name="case_open" string="Open"
|
|
||||||
states="draft,pending" type="object"
|
|
||||||
icon="gtk-go-forward" />
|
|
||||||
<button name="case_close" string="Close"
|
|
||||||
states="open,draft,pending" type="object"
|
|
||||||
icon="gtk-close" />
|
|
||||||
<button name="%(crm.action_crm_lead2opportunity_partner)d"
|
|
||||||
string="Convert to Opportunity"
|
|
||||||
states="draft,open,pending" icon="gtk-index"
|
|
||||||
type="action" />
|
|
||||||
<button name="case_escalate" string="Escalate"
|
|
||||||
states="open,draft,pending" type="object"
|
|
||||||
icon="gtk-go-up" />
|
|
||||||
</tree>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<!-- CRM Lead Calendar View -->
|
|
||||||
|
|
||||||
<record model="ir.ui.view" id="crm_case_calendar_view_leads">
|
|
||||||
<field name="name">CRM - Leads Calendar</field>
|
|
||||||
<field name="model">crm.lead</field>
|
|
||||||
<field name="type">calendar</field>
|
|
||||||
<field name="priority" eval="2"/>
|
|
||||||
<field name="arch" type="xml">
|
|
||||||
<calendar string="Leads Generation"
|
|
||||||
date_start="date_action" color="user_id">
|
|
||||||
<field name="name" />
|
|
||||||
<field name="partner_name" />
|
|
||||||
</calendar>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
<!-- CRM Lead Kanban View -->
|
<!-- CRM Lead Kanban View -->
|
||||||
<record model="ir.ui.view" id="crm_case_kanban_view_leads">
|
<record model="ir.ui.view" id="crm_case_kanban_view_leads">
|
||||||
|
@ -235,7 +210,7 @@
|
||||||
<field name="type">kanban</field>
|
<field name="type">kanban</field>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<kanban default_group_by="stage_id">
|
<kanban default_group_by="stage_id">
|
||||||
<field name="state"/>
|
<field name="state" groups="base.group_no_one"/>
|
||||||
<field name="color"/>
|
<field name="color"/>
|
||||||
<field name="priority"/>
|
<field name="priority"/>
|
||||||
<field name="planned_revenue" sum="Expected Revenues"/>
|
<field name="planned_revenue" sum="Expected Revenues"/>
|
||||||
|
@ -316,7 +291,6 @@
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<!-- CRM Lead Search View -->
|
<!-- CRM Lead Search View -->
|
||||||
|
|
||||||
<record id="view_crm_case_leads_filter" model="ir.ui.view">
|
<record id="view_crm_case_leads_filter" model="ir.ui.view">
|
||||||
<field name="name">CRM - Leads Search</field>
|
<field name="name">CRM - Leads Search</field>
|
||||||
<field name="model">crm.lead</field>
|
<field name="model">crm.lead</field>
|
||||||
|
@ -387,6 +361,10 @@
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
OPPORTUNITY
|
||||||
|
-->
|
||||||
|
|
||||||
<!-- Opportunities Form View -->
|
<!-- Opportunities Form View -->
|
||||||
<record model="ir.ui.view" id="crm_case_form_view_oppor">
|
<record model="ir.ui.view" id="crm_case_form_view_oppor">
|
||||||
<field name="name">Opportunities</field>
|
<field name="name">Opportunities</field>
|
||||||
|
@ -396,15 +374,23 @@
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<form string="Opportunities" layout="manual">
|
<form string="Opportunities" layout="manual">
|
||||||
<div class="oe_form_topbar oe_form_topbar_hifirst">
|
<div class="oe_form_topbar oe_form_topbar_hifirst">
|
||||||
<button name="case_mark_won" string="Mark Won" states="open,pending" type="object" />
|
<button name="case_open" string="Open" type="object"
|
||||||
<button name="case_open" string="Open" states="draft,pending" type="object" />
|
states="draft"/>
|
||||||
<button name="case_pending" string="Pending" states="draft,open" type="object" />
|
<button name="case_mark_won" string="Mark Won" type="object"
|
||||||
<button name="case_escalate" string="Escalate" states="open,pending" type="object" />
|
states="draft,open"/>
|
||||||
<button name="case_mark_lost" string="Mark Lost" states="open,pending" type="object" />
|
<button name="case_mark_lost" string="Mark Lost" type="object"
|
||||||
<button name="case_reset" string="Reset to Draft" states="done,cancel" type="object" />
|
states="draft,open"/>
|
||||||
<button name="case_cancel" string="Cancel" states="draft" type="object" />
|
<button name="case_reset" string="Reset to Draft" type="object"
|
||||||
|
states="cancel"/>
|
||||||
|
<button name="case_escalate" string="Escalate" type="object"
|
||||||
|
states="open"/>
|
||||||
|
<button name="stage_previous" string="Previous" type="object"
|
||||||
|
states="open" icon="gtk-go-back" context="{'stage_type': 'opportunity'}"/>
|
||||||
|
<button name="stage_next" string="Next" type="object"
|
||||||
|
states="open" icon="gtk-go-forward" context="{'stage_type': 'opportunity'}"/>
|
||||||
<div class="oe_right">
|
<div class="oe_right">
|
||||||
<field name="state" nolabel="1" widget="statusbar" statusbar_visible="draft,open,done" statusbar_colors='{"pending":"blue"}'/>
|
<field name="stage_id" nolabel="1" widget="statusbar"
|
||||||
|
on_change="onchange_stage_id(stage_id)"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="oe_clear"/>
|
<div class="oe_clear"/>
|
||||||
</div>
|
</div>
|
||||||
|
@ -457,20 +443,8 @@
|
||||||
<field name="categ_id" select="1"
|
<field name="categ_id" select="1"
|
||||||
string="Category" widget="selection"
|
string="Category" widget="selection"
|
||||||
domain="[('object_id.model', '=', 'crm.lead')]" />
|
domain="[('object_id.model', '=', 'crm.lead')]" />
|
||||||
|
<field name="state"/>
|
||||||
<label string="Stage" for="stage_id" align="1.0"/>
|
<field name="priority"/>
|
||||||
<group colspan="1" col="3">
|
|
||||||
<field name="stage_id" nolabel="1"
|
|
||||||
on_change="onchange_stage_id(stage_id)"
|
|
||||||
domain="section_id and [('section_ids', '=', section_id)] or []" width="60%%"/>
|
|
||||||
<button name="stage_previous"
|
|
||||||
states="draft,open,pending" type="object"
|
|
||||||
icon="gtk-go-back" string="" context="{'stage_type': 'opportunity'}"/>
|
|
||||||
<button name="stage_next" states="draft,open,pending"
|
|
||||||
type="object" icon="gtk-go-forward" string="" context="{'stage_type': 'opportunity'}"/>
|
|
||||||
</group>
|
|
||||||
|
|
||||||
<field name="priority" string="Priority"/>
|
|
||||||
</group>
|
</group>
|
||||||
|
|
||||||
<separator colspan="4" string="Details"/>
|
<separator colspan="4" string="Details"/>
|
||||||
|
@ -530,41 +504,35 @@
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<!-- Opportunities Tree View -->
|
<!-- Opportunities Tree View -->
|
||||||
<record model="ir.ui.view" id="crm_case_tree_view_oppor">
|
<record model="ir.ui.view" id="crm_case_tree_view_oppor">
|
||||||
<field name="name">Opportunities Tree</field>
|
<field name="name">Opportunities Tree</field>
|
||||||
<field name="model">crm.lead</field>
|
<field name="model">crm.lead</field>
|
||||||
<field name="type">tree</field>
|
<field name="type">tree</field>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<tree string="Opportunities" fonts="bold:needaction_pending==True" colors="blue:state=='pending' and not(date_deadline and (date_deadline < current_date));gray:state in ('cancel', 'done');red:date_deadline and (date_deadline < current_date)">
|
<tree string="Opportunities" fonts="bold:needaction_pending==True" colors="blue:state=='pending' and not(date_deadline and (date_deadline < current_date));gray:state in ('cancel', 'done');red:date_deadline and (date_deadline < current_date)">
|
||||||
<field name="needaction_pending" invisible="1"/>
|
<field name="needaction_pending" invisible="1"/>
|
||||||
<field name="date_deadline" invisible="1"/>
|
<field name="date_deadline" invisible="1"/>
|
||||||
<field name="create_date" groups="base.group_no_one"/>
|
<field name="create_date" groups="base.group_no_one"/>
|
||||||
<field name="name" string="Opportunity"/>
|
<field name="name" string="Opportunity"/>
|
||||||
<field name="partner_id" string="Customer"/>
|
<field name="partner_id" string="Customer"/>
|
||||||
<field name="country_id" invisible="context.get('invisible_country', True)" />
|
<field name="country_id" invisible="context.get('invisible_country', True)" />
|
||||||
<field name="date_action"/>
|
<field name="date_action"/>
|
||||||
<field name="title_action" />
|
<field name="title_action" />
|
||||||
<field name="channel_id" invisible="1"/>
|
<field name="channel_id" invisible="1"/>
|
||||||
<field name="type_id" invisible="1"/>
|
<field name="type_id" invisible="1"/>
|
||||||
<field name="subjects" invisible="1"/>
|
<field name="subjects" invisible="1"/>
|
||||||
<field name="stage_id"/>
|
<field name="stage_id"/>
|
||||||
<button name="stage_previous" string="Previous Stage" states="open,pending" type="object" icon="gtk-go-back" />
|
<field name="planned_revenue" sum="Expected Revenues"/>
|
||||||
<button name="stage_next" string="Next Stage" states="open,pending" type="object" icon="gtk-go-forward" />
|
<field name="probability" widget="progressbar" avg="Avg. of Probability"/>
|
||||||
<field name="planned_revenue" sum="Expected Revenues"/>
|
<field name="section_id" invisible="context.get('invisible_section', True)" />
|
||||||
<field name="probability" widget="progressbar" avg="Avg. of Probability"/>
|
<field name="user_id"/>
|
||||||
<field name="section_id" invisible="context.get('invisible_section', True)" />
|
<field name="priority" invisible="1"/>
|
||||||
<field name="user_id"/>
|
<field name="categ_id" invisible="1"/>
|
||||||
<field name="priority" invisible="1"/>
|
<field name="state" groups="base.group_no_one"/>
|
||||||
<field name="categ_id" invisible="1"/>
|
</tree>
|
||||||
<field name="state"/>
|
</field>
|
||||||
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward" />
|
</record>
|
||||||
<button name="case_pending" string="Pending" states="open,draft" type="object" icon="gtk-media-pause" />
|
|
||||||
<button name="case_mark_lost" string="Lost" states="open,pending" type="object" icon="gtk-cancel" />
|
|
||||||
<button name="case_mark_won" string="Won" states="open,pending" type="object" icon="gtk-apply" />
|
|
||||||
</tree>
|
|
||||||
</field>
|
|
||||||
</record>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- Opportunities Search View -->
|
<!-- Opportunities Search View -->
|
||||||
|
@ -596,10 +564,8 @@
|
||||||
help="Unassigned Opportunities" />
|
help="Unassigned Opportunities" />
|
||||||
</field>
|
</field>
|
||||||
<field name="section_id"
|
<field name="section_id"
|
||||||
context="{'invisible_section': False}"
|
context="{'invisible_section': False, 'default_section_id': self}">
|
||||||
widget="selection">
|
<filter string="My Sales Team(s)" icon="terp-personal+"
|
||||||
<filter string="My Sales Team(s)"
|
|
||||||
icon="terp-personal+"
|
|
||||||
domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]"
|
domain="['|', ('section_id.user_id','=',uid), ('section_id.member_ids', 'in', [uid])]"
|
||||||
context="{'invisible_section': False}"
|
context="{'invisible_section': False}"
|
||||||
help="My Sales Team(s)" />
|
help="My Sales Team(s)" />
|
||||||
|
@ -629,19 +595,19 @@
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<!-- crm.lead Opportunities Graph View -->
|
<!-- crm.lead Opportunities Graph View -->
|
||||||
<record model="ir.ui.view" id="crm_case_graph_view_opportunity">
|
<record model="ir.ui.view" id="crm_case_graph_view_opportunity">
|
||||||
<field name="name">CRM - Opportunity Graph</field>
|
<field name="name">CRM - Opportunity Graph</field>
|
||||||
<field name="model">crm.lead</field>
|
<field name="model">crm.lead</field>
|
||||||
<field name="type">graph</field>
|
<field name="type">graph</field>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<graph string="Opportunity by Categories" type="bar" orientation="horizontal">
|
<graph string="Opportunity by Categories" type="bar" orientation="horizontal">
|
||||||
<field name="categ_id"/>
|
<field name="categ_id"/>
|
||||||
<field name="planned_revenue" operator="+"/>
|
<field name="planned_revenue" operator="+"/>
|
||||||
<field name="state" group="True"/>
|
<field name="state" group="True"/>
|
||||||
</graph>
|
</graph>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
</data>
|
</data>
|
||||||
</openerp>
|
</openerp>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
##############################################################################
|
##############################################################################
|
||||||
#
|
#
|
||||||
# OpenERP, Open Source Management Solution
|
# OpenERP, Open Source Management Solution
|
||||||
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
|
# Copyright (C) 2004-today OpenERP SA (<http://www.openerp.com>)
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
@ -20,43 +20,35 @@
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
from base_calendar import base_calendar
|
from base_calendar import base_calendar
|
||||||
from crm import crm_base, crm_case
|
from base_status.base_state import base_state
|
||||||
|
from base_status.base_stage import base_stage
|
||||||
|
import logging
|
||||||
from osv import fields, osv
|
from osv import fields, osv
|
||||||
import tools
|
import tools
|
||||||
from tools.translate import _
|
from tools.translate import _
|
||||||
import logging
|
|
||||||
|
|
||||||
class crm_lead(crm_case, osv.osv):
|
class crm_lead(base_stage, osv.osv):
|
||||||
""" CRM Leads """
|
""" CRM Leads """
|
||||||
_name = 'crm.lead'
|
_name = 'crm.lead'
|
||||||
crm_lead()
|
|
||||||
|
|
||||||
class crm_phonecall(crm_case, osv.osv):
|
|
||||||
""" CRM Phonecall """
|
|
||||||
_name = 'crm.phonecall'
|
|
||||||
crm_phonecall()
|
|
||||||
|
|
||||||
|
|
||||||
class crm_meeting(crm_base, osv.osv):
|
|
||||||
""" CRM Meeting Cases """
|
|
||||||
|
|
||||||
|
class crm_meeting(base_state, osv.Model):
|
||||||
|
""" Model for CRM meetings """
|
||||||
_name = 'crm.meeting'
|
_name = 'crm.meeting'
|
||||||
_description = "Meeting"
|
_description = "Meeting"
|
||||||
_order = "id desc"
|
_order = "id desc"
|
||||||
_inherit = ["calendar.event", 'ir.needaction_mixin', "mail.thread"]
|
_inherit = ["calendar.event", 'ir.needaction_mixin', "mail.thread"]
|
||||||
_columns = {
|
_columns = {
|
||||||
# From crm.case
|
# base_state required fields
|
||||||
'name': fields.char('Summary', size=124, required=True, states={'done': [('readonly', True)]}),
|
|
||||||
'partner_id': fields.many2one('res.partner', 'Partner', states={'done': [('readonly', True)]}),
|
'partner_id': fields.many2one('res.partner', 'Partner', states={'done': [('readonly', True)]}),
|
||||||
'section_id': fields.many2one('crm.case.section', 'Sales Team', states={'done': [('readonly', True)]}, \
|
'section_id': fields.many2one('crm.case.section', 'Sales Team', states={'done': [('readonly', True)]}, \
|
||||||
select=True, help='Sales team to which Case belongs to.'),
|
select=True, help='Sales team to which Case belongs to.'),
|
||||||
'email_from': fields.char('Email', size=128, states={'done': [('readonly', True)]}, help="These people will receive email."),
|
'email_from': fields.char('Email', size=128, states={'done': [('readonly', True)]}, help="These people will receive email."),
|
||||||
'id': fields.integer('ID', readonly=True),
|
|
||||||
'create_date': fields.datetime('Creation Date' , readonly=True),
|
'create_date': fields.datetime('Creation Date' , readonly=True),
|
||||||
'write_date': fields.datetime('Write Date' , readonly=True),
|
'write_date': fields.datetime('Write Date' , readonly=True),
|
||||||
'date_action_last': fields.datetime('Last Action', readonly=1),
|
'date_action_last': fields.datetime('Last Action', readonly=1),
|
||||||
'date_action_next': fields.datetime('Next Action', readonly=1),
|
'date_action_next': fields.datetime('Next Action', readonly=1),
|
||||||
# Meeting fields
|
# Meeting fields
|
||||||
|
'name': fields.char('Summary', size=124, required=True, states={'done': [('readonly', True)]}),
|
||||||
'categ_id': fields.many2one('crm.case.categ', 'Meeting Type', \
|
'categ_id': fields.many2one('crm.case.categ', 'Meeting Type', \
|
||||||
domain="[('object_id.model', '=', 'crm.meeting')]", \
|
domain="[('object_id.model', '=', 'crm.meeting')]", \
|
||||||
),
|
),
|
||||||
|
@ -67,11 +59,11 @@ class crm_meeting(crm_base, osv.osv):
|
||||||
'date_closed': fields.datetime('Closed', readonly=True),
|
'date_closed': fields.datetime('Closed', readonly=True),
|
||||||
'date_deadline': fields.datetime('Deadline', states={'done': [('readonly', True)]}),
|
'date_deadline': fields.datetime('Deadline', states={'done': [('readonly', True)]}),
|
||||||
'message_ids': fields.one2many('mail.message', 'res_id', 'Messages', domain=[('model','=',_name)]),
|
'message_ids': fields.one2many('mail.message', 'res_id', 'Messages', domain=[('model','=',_name)]),
|
||||||
'state': fields.selection([('open', 'Confirmed'),
|
'state': fields.selection([ ('draft', 'Unconfirmed'),
|
||||||
('draft', 'Unconfirmed'),
|
('open', 'Confirmed'),
|
||||||
('cancel', 'Cancelled'),
|
('cancel', 'Cancelled'),
|
||||||
('done', 'Done')], 'Status', \
|
('done', 'Done')],
|
||||||
size=16, readonly=True),
|
string='Status', size=16, readonly=True),
|
||||||
}
|
}
|
||||||
_defaults = {
|
_defaults = {
|
||||||
'state': 'draft',
|
'state': 'draft',
|
||||||
|
@ -91,6 +83,17 @@ class crm_meeting(crm_base, osv.osv):
|
||||||
result[obj.id] = [obj.user_id.id]
|
result[obj.id] = [obj.user_id.id]
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
def case_open(self, cr, uid, ids, context=None):
|
||||||
|
""" Confirms meeting """
|
||||||
|
res = super(crm_meeting, self).case_open(cr, uid, ids, context)
|
||||||
|
for (id, name) in self.name_get(cr, uid, ids):
|
||||||
|
id=base_calendar.base_calendar_id2real_id(id)
|
||||||
|
return res
|
||||||
|
|
||||||
|
# ----------------------------------------
|
||||||
|
# OpenChatter
|
||||||
|
# ----------------------------------------
|
||||||
|
|
||||||
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
|
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
|
||||||
return 'Meeting'
|
return 'Meeting'
|
||||||
|
|
||||||
|
@ -119,32 +122,12 @@ class crm_meeting(crm_base, osv.osv):
|
||||||
meeting.message_append_note(body=parent_message)
|
meeting.message_append_note(body=parent_message)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def case_close_send_note(self, cr, uid, ids, context=None):
|
|
||||||
message = _("Meeting has been <b>done</b>.")
|
|
||||||
return self.message_append_note(cr, uid, ids, body=message, context=context)
|
|
||||||
|
|
||||||
def case_open_send_note(self, cr, uid, ids, context=None):
|
def case_open_send_note(self, cr, uid, ids, context=None):
|
||||||
for meeting in self.browse(cr, uid, ids, context=context):
|
return self.message_append_note(cr, uid, ids, body=_("Meeting has been <b>confirmed</b>."), context=context)
|
||||||
if meeting.state != 'draft':
|
|
||||||
return False
|
|
||||||
message = _("Meeting has been <b>confirmed</b>.")
|
|
||||||
meeting.message_append_note(body=message)
|
|
||||||
return True
|
|
||||||
|
|
||||||
def case_open(self, cr, uid, ids, context=None):
|
def case_close_send_note(self, cr, uid, ids, context=None):
|
||||||
"""Confirms meeting
|
return self.message_append_note(cr, uid, ids, body=_("Meeting has been <b>done</b>."), context=context)
|
||||||
@param self: The object pointer
|
|
||||||
@param cr: the current row, from the database cursor,
|
|
||||||
@param uid: the current user’s ID for security checks,
|
|
||||||
@param ids: List of Meeting Ids
|
|
||||||
@param *args: Tuple Value for additional Params
|
|
||||||
"""
|
|
||||||
res = super(crm_meeting, self).case_open(cr, uid, ids, context)
|
|
||||||
for (id, name) in self.name_get(cr, uid, ids):
|
|
||||||
id=base_calendar.base_calendar_id2real_id(id)
|
|
||||||
return res
|
|
||||||
|
|
||||||
crm_meeting()
|
|
||||||
|
|
||||||
class calendar_attendee(osv.osv):
|
class calendar_attendee(osv.osv):
|
||||||
""" Calendar Attendee """
|
""" Calendar Attendee """
|
||||||
|
|
|
@ -25,7 +25,22 @@
|
||||||
<field name="model">crm.meeting</field>
|
<field name="model">crm.meeting</field>
|
||||||
<field name="type">form</field>
|
<field name="type">form</field>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<form string="Meetings">
|
<form string="Meetings" layout="manual">
|
||||||
|
<div class="oe_form_topbar oe_form_topbar_hifirst">
|
||||||
|
<button name="case_open" string="Confirm" type="object"
|
||||||
|
states="draft"/>
|
||||||
|
<button name="case_close" string="Done" type="object"
|
||||||
|
states="open"/>
|
||||||
|
<button name="case_reset" string="Reset to Unconfirmed" type="object"
|
||||||
|
states="cancel,done"/>
|
||||||
|
<button name="case_cancel" string="Cancel" type="object"
|
||||||
|
states="draft,open"/>
|
||||||
|
<div class="oe_right">
|
||||||
|
<field name="state" nolabel="1" widget="statusbar" statusbar_visible="draft,open,done"/>
|
||||||
|
</div>
|
||||||
|
<div class="oe_clear"/>
|
||||||
|
</div>
|
||||||
|
<sheet layout="auto">
|
||||||
<group col="6" colspan="4">
|
<group col="6" colspan="4">
|
||||||
<field name="name" select="1" string="Title"
|
<field name="name" select="1" string="Title"
|
||||||
required="1" />
|
required="1" />
|
||||||
|
@ -71,19 +86,6 @@
|
||||||
</group>
|
</group>
|
||||||
<separator string="Description" colspan="4" />
|
<separator string="Description" colspan="4" />
|
||||||
<field name="description" nolabel="1" colspan="4" />
|
<field name="description" nolabel="1" colspan="4" />
|
||||||
<separator colspan="4"/>
|
|
||||||
<group col="8" colspan="4" groups="base.group_no_one">
|
|
||||||
<field name="state" />
|
|
||||||
<button name="case_close" string="Done"
|
|
||||||
states="open" type="object"
|
|
||||||
icon="gtk-jump-to" />
|
|
||||||
<button name="case_reset" string="Reset to Unconfirmed"
|
|
||||||
states="open,done" type="object"
|
|
||||||
icon="gtk-convert" />
|
|
||||||
<button name="case_open" string="Confirm"
|
|
||||||
states="draft" type="object"
|
|
||||||
icon="gtk-go-forward" />
|
|
||||||
</group>
|
|
||||||
</page>
|
</page>
|
||||||
<page string="Invitation Detail">
|
<page string="Invitation Detail">
|
||||||
<button string="Invite People"
|
<button string="Invite People"
|
||||||
|
@ -209,7 +211,10 @@
|
||||||
|
|
||||||
</page>
|
</page>
|
||||||
</notebook>
|
</notebook>
|
||||||
<field name="message_ids_social" colspan="4" widget="ThreadView" nolabel="1"/>
|
</sheet>
|
||||||
|
<div class="oe_form_bottom">
|
||||||
|
<field name="message_ids_social" colspan="4" widget="ThreadView" nolabel="1"/>
|
||||||
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
##############################################################################
|
##############################################################################
|
||||||
#
|
#
|
||||||
# OpenERP, Open Source Management Solution
|
# OpenERP, Open Source Management Solution
|
||||||
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
|
# Copyright (C) 2004-today OpenERP SA (<http://www.openerp.com>)
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
@ -19,26 +19,22 @@
|
||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
from crm import crm_base
|
from base_status.base_state import base_state
|
||||||
from osv import fields, osv
|
|
||||||
from tools.translate import _
|
|
||||||
import crm
|
import crm
|
||||||
|
from datetime import datetime
|
||||||
|
from osv import fields, osv
|
||||||
import time
|
import time
|
||||||
from tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT, DATETIME_FORMATS_MAP
|
from tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT, DATETIME_FORMATS_MAP
|
||||||
from datetime import datetime
|
from tools.translate import _
|
||||||
|
|
||||||
class crm_phonecall(crm_base, osv.osv):
|
|
||||||
""" Phonecall Cases """
|
|
||||||
|
|
||||||
|
class crm_phonecall(base_state, osv.osv):
|
||||||
|
""" Model for CRM phonecalls """
|
||||||
_name = "crm.phonecall"
|
_name = "crm.phonecall"
|
||||||
_description = "Phonecall"
|
_description = "Phonecall"
|
||||||
_order = "id desc"
|
_order = "id desc"
|
||||||
_inherit = ['ir.needaction_mixin', 'mail.thread']
|
_inherit = ['ir.needaction_mixin', 'mail.thread']
|
||||||
_columns = {
|
_columns = {
|
||||||
# From crm.case
|
# base_state required fields
|
||||||
'id': fields.integer('ID', readonly=True),
|
|
||||||
'name': fields.char('Call Summary', size=64, required=True),
|
|
||||||
'active': fields.boolean('Active', required=False),
|
|
||||||
'date_action_last': fields.datetime('Last Action', readonly=1),
|
'date_action_last': fields.datetime('Last Action', readonly=1),
|
||||||
'date_action_next': fields.datetime('Next Action', readonly=1),
|
'date_action_next': fields.datetime('Next Action', readonly=1),
|
||||||
'create_date': fields.datetime('Creation Date' , readonly=True),
|
'create_date': fields.datetime('Creation Date' , readonly=True),
|
||||||
|
@ -48,20 +44,21 @@ class crm_phonecall(crm_base, osv.osv):
|
||||||
'partner_id': fields.many2one('res.partner', 'Partner'),
|
'partner_id': fields.many2one('res.partner', 'Partner'),
|
||||||
'company_id': fields.many2one('res.company', 'Company'),
|
'company_id': fields.many2one('res.company', 'Company'),
|
||||||
'description': fields.text('Description'),
|
'description': fields.text('Description'),
|
||||||
'state': fields.selection([
|
'state': fields.selection([ ('draft', 'Draft'),
|
||||||
('draft', 'Draft'),
|
('open', 'Confirmed'),
|
||||||
('open', 'Todo'),
|
|
||||||
('pending', 'Not Held'),
|
('pending', 'Not Held'),
|
||||||
('cancel', 'Cancelled'),
|
('cancel', 'Cancelled'),
|
||||||
('done', 'Held'),
|
('done', 'Held'),],
|
||||||
], 'Status', size=16, readonly=True,
|
string='Status', size=16, readonly=True,
|
||||||
help='The state is set to \'Todo\', when a case is created.\
|
help='The state is set to \'Todo\', when a case is created.\
|
||||||
\nIf the case is in progress the state is set to \'Open\'.\
|
If the case is in progress the state is set to \'Open\'.\
|
||||||
\nWhen the call is over, the state is set to \'Held\'.\
|
When the call is over, the state is set to \'Held\'.\
|
||||||
\nIf the call needs to be done then the state is set to \'Not Held\'.'),
|
If the call needs to be done then the state is set to \'Not Held\'.'),
|
||||||
'email_from': fields.char('Email', size=128, help="These people will receive email."),
|
'email_from': fields.char('Email', size=128, help="These people will receive email."),
|
||||||
'date_open': fields.datetime('Opened', readonly=True),
|
'date_open': fields.datetime('Opened', readonly=True),
|
||||||
# phonecall fields
|
# phonecall fields
|
||||||
|
'name': fields.char('Call Summary', size=64, required=True),
|
||||||
|
'active': fields.boolean('Active', required=False),
|
||||||
'duration': fields.float('Duration', help="Duration in Minutes"),
|
'duration': fields.float('Duration', help="Duration in Minutes"),
|
||||||
'categ_id': fields.many2one('crm.case.categ', 'Category', \
|
'categ_id': fields.many2one('crm.case.categ', 'Category', \
|
||||||
domain="['|',('section_id','=',section_id),('section_id','=',False),\
|
domain="['|',('section_id','=',section_id),('section_id','=',False),\
|
||||||
|
@ -81,11 +78,10 @@ class crm_phonecall(crm_base, osv.osv):
|
||||||
return 'open'
|
return 'open'
|
||||||
|
|
||||||
_defaults = {
|
_defaults = {
|
||||||
'date': lambda *a: time.strftime('%Y-%m-%d %H:%M:%S'),
|
'date': fields.datetime.now,
|
||||||
'priority': crm.AVAILABLE_PRIORITIES[2][0],
|
'priority': crm.AVAILABLE_PRIORITIES[2][0],
|
||||||
'state': _get_default_state,
|
'state': _get_default_state,
|
||||||
'user_id': lambda self,cr,uid,ctx: uid,
|
'user_id': lambda self,cr,uid,ctx: uid,
|
||||||
'active': 1,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
def create(self, cr, uid, vals, context=None):
|
def create(self, cr, uid, vals, context=None):
|
||||||
|
@ -96,32 +92,23 @@ class crm_phonecall(crm_base, osv.osv):
|
||||||
return obj_id
|
return obj_id
|
||||||
|
|
||||||
def case_close(self, cr, uid, ids, context=None):
|
def case_close(self, cr, uid, ids, context=None):
|
||||||
"""Overrides close for crm_case for setting close date
|
""" Overrides close for crm_case for setting duration """
|
||||||
"""
|
|
||||||
res = True
|
res = True
|
||||||
for phone in self.browse(cr, uid, ids):
|
for phone in self.browse(cr, uid, ids, context=context):
|
||||||
phone_id = phone.id
|
phone_id = phone.id
|
||||||
data = {'date_closed': time.strftime('%Y-%m-%d %H:%M:%S')}
|
data = {}
|
||||||
if phone.duration <=0:
|
if phone.duration <=0:
|
||||||
duration = datetime.now() - datetime.strptime(phone.date, '%Y-%m-%d %H:%M:%S')
|
duration = datetime.now() - datetime.strptime(phone.date, DEFAULT_SERVER_DATETIME_FORMAT)
|
||||||
data.update({'duration': duration.seconds/float(60)})
|
data['duration'] = duration.seconds/float(60)
|
||||||
res = super(crm_phonecall, self).case_close(cr, uid, [phone_id], context)
|
res = super(crm_phonecall, self).case_close(cr, uid, [phone_id], context=context)
|
||||||
self.write(cr, uid, [phone_id], data)
|
self.write(cr, uid, [phone_id], data, context=context)
|
||||||
return res
|
return res
|
||||||
|
|
||||||
def case_reset(self, cr, uid, ids, context=None):
|
def case_reset(self, cr, uid, ids, context=None):
|
||||||
"""Resets case as Todo
|
"""Resets case as Todo
|
||||||
"""
|
"""
|
||||||
res = super(crm_phonecall, self).case_reset(cr, uid, ids, context)
|
res = super(crm_phonecall, self).case_reset(cr, uid, ids, context)
|
||||||
self.write(cr, uid, ids, {'duration': 0.0, 'state':'open'})
|
self.write(cr, uid, ids, {'duration': 0.0, 'state':'open'}, context=context)
|
||||||
return res
|
|
||||||
|
|
||||||
|
|
||||||
def case_open(self, cr, uid, ids, context=None):
|
|
||||||
"""Overrides cancel for crm_case for setting Open Date
|
|
||||||
"""
|
|
||||||
res = super(crm_phonecall, self).case_open(cr, uid, ids, context)
|
|
||||||
self.write(cr, uid, ids, {'date_open': time.strftime('%Y-%m-%d %H:%M:%S')})
|
|
||||||
return res
|
return res
|
||||||
|
|
||||||
def schedule_another_phonecall(self, cr, uid, ids, schedule_time, call_summary, \
|
def schedule_another_phonecall(self, cr, uid, ids, schedule_time, call_summary, \
|
||||||
|
@ -300,7 +287,7 @@ class crm_phonecall(crm_base, osv.osv):
|
||||||
return value
|
return value
|
||||||
|
|
||||||
# ----------------------------------------
|
# ----------------------------------------
|
||||||
# OpenChatter methods and notifications
|
# OpenChatter
|
||||||
# ----------------------------------------
|
# ----------------------------------------
|
||||||
|
|
||||||
def get_needaction_user_ids(self, cr, uid, ids, context=None):
|
def get_needaction_user_ids(self, cr, uid, ids, context=None):
|
||||||
|
@ -336,9 +323,6 @@ class crm_phonecall(crm_base, osv.osv):
|
||||||
|
|
||||||
def _call_set_partner_send_note(self, cr, uid, ids, context=None):
|
def _call_set_partner_send_note(self, cr, uid, ids, context=None):
|
||||||
return self.message_append_note(cr, uid, ids, body=_("Partner has been <b>created</b>"), context=context)
|
return self.message_append_note(cr, uid, ids, body=_("Partner has been <b>created</b>"), context=context)
|
||||||
|
|
||||||
|
|
||||||
crm_phonecall()
|
|
||||||
|
|
||||||
|
|
||||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||||
|
|
|
@ -43,10 +43,14 @@
|
||||||
states="open,pending" icon="gtk-redo"
|
states="open,pending" icon="gtk-redo"
|
||||||
name="action_make_meeting" type="object" />
|
name="action_make_meeting" type="object" />
|
||||||
<field name="state"/>
|
<field name="state"/>
|
||||||
<button name="case_cancel" string="Cancel" states="open,pending" type="object" icon="gtk-cancel"/>
|
<button name="case_open" string="Confirm" type="object"
|
||||||
<button name="case_open" string="Todo" states="pending" type="object" icon="gtk-go-forward"/>
|
states="draft,pending" icon="gtk-go-forward"/>
|
||||||
<button name="case_close" string="Held" states="open,pending" type="object" icon="gtk-jump-to"/>
|
<button name="case_close" string="Held" type="object"
|
||||||
<button name="case_pending" string="Not Held" states="open" type="object" icon="gtk-media-pause"/>
|
states="open,pending" icon="gtk-jump-to"/>
|
||||||
|
<button name="case_cancel" string="Cancel" type="object"
|
||||||
|
states="draft,open,pending" icon="gtk-cancel"/>
|
||||||
|
<button name="case_reset" string="Reset to Todo" type="object"
|
||||||
|
states="cancel" icon="gtk-convert"/>
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
@ -60,13 +64,16 @@
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<form layout="manual">
|
<form layout="manual">
|
||||||
<div class="oe_form_topbar">
|
<div class="oe_form_topbar">
|
||||||
<button name="case_close" string="Held" states="open,pending" type="object" />
|
<button name="case_open" string="Confirm" type="object"
|
||||||
<button name="case_open" string="Todo" states="pending" type="object" />
|
states="draft,pending" icon="gtk-go-forward"/>
|
||||||
<button name="case_pending" string="Not Held" states="open" type="object" />
|
<button name="case_close" string="Held" type="object"
|
||||||
<button name="case_reset" string="Reset to Todo" states="cancel" type="object" />
|
states="open,pending" icon="gtk-jump-to"/>
|
||||||
<button name="case_cancel" string="Cancel" states="open,pending" type="object" />
|
<button name="case_reset" string="Reset to Todo" type="object"
|
||||||
|
states="cancel" icon="gtk-convert"/>
|
||||||
|
<button name="case_cancel" string="Cancel" type="object"
|
||||||
|
states="draft,open,pending" icon="gtk-cancel"/>
|
||||||
<div class="oe_right">
|
<div class="oe_right">
|
||||||
<field name="state" widget="statusbar" nolabel="1" statusbar_visible="open,done" statusbar_colors='{"pending":"red"}' select="1"/>
|
<field name="state" widget="statusbar" nolabel="1" statusbar_visible="draft,open,done" select="1"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="oe_clear"/>
|
<div class="oe_clear"/>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -143,6 +143,8 @@
|
||||||
<field name="sequence"/>
|
<field name="sequence"/>
|
||||||
<field name="name"/>
|
<field name="name"/>
|
||||||
<field name="probability"/>
|
<field name="probability"/>
|
||||||
|
<field name="state"/>
|
||||||
|
<field name="type"/>
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
@ -162,6 +164,9 @@
|
||||||
<field name="on_change"/>
|
<field name="on_change"/>
|
||||||
<field name="case_default"/>
|
<field name="case_default"/>
|
||||||
<field name="sequence"/>
|
<field name="sequence"/>
|
||||||
|
<field name="state"/>
|
||||||
|
<field name="fold"/>
|
||||||
|
<field name="type"/>
|
||||||
</group>
|
</group>
|
||||||
<separator string="Requirements" colspan="4"/>
|
<separator string="Requirements" colspan="4"/>
|
||||||
<field name="requirements" nolabel="1" colspan="4"/>
|
<field name="requirements" nolabel="1" colspan="4"/>
|
||||||
|
|
|
@ -7,14 +7,14 @@ msgstr ""
|
||||||
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
||||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||||
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
|
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
|
||||||
"PO-Revision-Date: 2011-01-19 00:40+0000\n"
|
"PO-Revision-Date: 2012-05-31 15:17+0000\n"
|
||||||
"Last-Translator: Tiago Baptista <Unknown>\n"
|
"Last-Translator: ThinkOpen Solutions <Unknown>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"X-Launchpad-Export-Date: 2012-05-11 04:45+0000\n"
|
"X-Launchpad-Export-Date: 2012-06-01 05:32+0000\n"
|
||||||
"X-Generator: Launchpad (build 15225)\n"
|
"X-Generator: Launchpad (build 15342)\n"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: view:crm.lead.report:0
|
#: view:crm.lead.report:0
|
||||||
|
@ -792,7 +792,7 @@ msgstr "Continuar"
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: field:crm.segmentation,som_interval:0
|
#: field:crm.segmentation,som_interval:0
|
||||||
msgid "Days per Period"
|
msgid "Days per Period"
|
||||||
msgstr ""
|
msgstr "Dias por Periodo"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: field:crm.meeting,byday:0
|
#: field:crm.meeting,byday:0
|
||||||
|
@ -959,7 +959,7 @@ msgstr "Dias para abrir"
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: view:crm.meeting:0
|
#: view:crm.meeting:0
|
||||||
msgid "Show Time as"
|
msgid "Show Time as"
|
||||||
msgstr ""
|
msgstr "Mostrar horas como"
|
||||||
|
|
||||||
#. module: crm
|
#. module: crm
|
||||||
#: view:crm.phonecall2partner:0
|
#: view:crm.phonecall2partner:0
|
||||||
|
|
|
@ -6,8 +6,11 @@
|
||||||
-
|
-
|
||||||
I check cancelled lead.
|
I check cancelled lead.
|
||||||
-
|
-
|
||||||
!assert {model: crm.lead, id: crm.crm_case_itisatelesalescampaign0, string: Lead is in cancel state}:
|
!python {model: crm.lead}: |
|
||||||
- state == "cancel"
|
lead = self.browse(cr, uid, ref('crm_case_itisatelesalescampaign0'))
|
||||||
|
assert lead.stage_id.id == ref('crm.stage_lead7'), "Stage should be 'Dead' and is %s." % (lead.stage_id.name)
|
||||||
|
assert lead.state == 'cancel', "Opportunity is not in 'cancel' state."
|
||||||
|
assert lead.probability == 0.0, 'Opportunity probability is wrong and should be 0.0.'
|
||||||
-
|
-
|
||||||
I reset cancelled lead into unqualified lead.
|
I reset cancelled lead into unqualified lead.
|
||||||
-
|
-
|
||||||
|
@ -19,35 +22,24 @@
|
||||||
!assert {model: crm.lead, id: crm.crm_case_itisatelesalescampaign0, string: Lead is in draft state}:
|
!assert {model: crm.lead, id: crm.crm_case_itisatelesalescampaign0, string: Lead is in draft state}:
|
||||||
- state == "draft"
|
- state == "draft"
|
||||||
-
|
-
|
||||||
I put unqualified lead into pending.
|
I re-open the lead
|
||||||
-
|
-
|
||||||
!python {model: crm.lead}: |
|
!python {model: crm.lead}: |
|
||||||
self.case_pending(cr, uid, [ref("crm_case_itisatelesalescampaign0")])
|
self.case_open(cr, uid, [ref("crm_case_itisatelesalescampaign0")])
|
||||||
-
|
-
|
||||||
I check status of pending lead.
|
I check stage and state of the re-opened lead
|
||||||
-
|
-
|
||||||
!assert {model: crm.lead, id: crm.crm_case_itisatelesalescampaign0, string: Lead is in pending state}:
|
!python {model: crm.lead}: |
|
||||||
- state == "pending"
|
lead = self.browse(cr, uid, ref('crm.crm_case_itisatelesalescampaign0'))
|
||||||
|
assert lead.stage_id.id == ref('crm.stage_lead2'), "Opportunity stage should be 'Qualification'."
|
||||||
|
assert lead.state == 'open', "Opportunity should be in 'open' state."
|
||||||
-
|
-
|
||||||
I escalate the lead to parent team.
|
I escalate the lead to parent team.
|
||||||
-
|
-
|
||||||
!python {model: crm.lead}: |
|
!python {model: crm.lead}: |
|
||||||
self.case_escalate(cr, uid, [ref("crm_case_itisatelesalescampaign0")])
|
self.case_escalate(cr, uid, [ref("crm_case_itisatelesalescampaign0")])
|
||||||
-
|
-
|
||||||
I check lead escalate to parent team.
|
I check the lead is correctly escalated to the parent team.
|
||||||
-
|
-
|
||||||
!assert {model: crm.lead, id: crm.crm_case_itisatelesalescampaign0, string: Escalate lead to parent team}:
|
!assert {model: crm.lead, id: crm.crm_case_itisatelesalescampaign0, string: Escalate lead to parent team}:
|
||||||
- section_id.name == "Sales Department"
|
- section_id.name == "Sales Department"
|
||||||
-
|
|
||||||
I mark as lost the opportunity.
|
|
||||||
-
|
|
||||||
!python {model: crm.lead}: |
|
|
||||||
self.case_mark_lost(cr, uid, [ref("crm_case_itisatelesalescampaign0")])
|
|
||||||
-
|
|
||||||
I check opportunity after lost.
|
|
||||||
-
|
|
||||||
!python {model: crm.lead}: |
|
|
||||||
lead = self.browse(cr, uid, ref('crm_case_itisatelesalescampaign0'))
|
|
||||||
assert lead.state == 'done', "lead is not done state"
|
|
||||||
assert lead.stage_id.id == ref('crm.stage_lead6'), 'Stage is not changed!'
|
|
||||||
assert lead.probability == 0.0, 'Probability is wrong!'
|
|
||||||
|
|
|
@ -51,7 +51,6 @@
|
||||||
-
|
-
|
||||||
!python {model: crm.lead}: |
|
!python {model: crm.lead}: |
|
||||||
self.action_makeMeeting(cr, uid, [ref('crm_case_qrecorp0')])
|
self.action_makeMeeting(cr, uid, [ref('crm_case_qrecorp0')])
|
||||||
|
|
||||||
-
|
-
|
||||||
After communicated with customer, I put some notes with contract details.
|
After communicated with customer, I put some notes with contract details.
|
||||||
-
|
-
|
||||||
|
@ -60,18 +59,18 @@
|
||||||
note_id = self.create(cr, uid, {'body': "ces détails envoyés par le client sur le FAX pour la qualité"})
|
note_id = self.create(cr, uid, {'body': "ces détails envoyés par le client sur le FAX pour la qualité"})
|
||||||
self.action_add(cr, uid, [note_id], context=context)
|
self.action_add(cr, uid, [note_id], context=context)
|
||||||
-
|
-
|
||||||
Finally, I won this opportunity, so I close this opportunity.
|
I win this opportunity
|
||||||
-
|
-
|
||||||
!python {model: crm.lead}: |
|
!python {model: crm.lead}: |
|
||||||
self.case_mark_won(cr, uid, [ref("crm_case_qrecorp0")])
|
self.case_mark_won(cr, uid, [ref("crm_case_qrecorp0")])
|
||||||
-
|
-
|
||||||
I check details of the opportunity after won the opportunity.
|
I check details of the opportunity after having won the opportunity.
|
||||||
-
|
-
|
||||||
!python {model: crm.lead}: |
|
!python {model: crm.lead}: |
|
||||||
lead = self.browse(cr, uid, ref('crm_case_qrecorp0'))
|
lead = self.browse(cr, uid, ref('crm_case_qrecorp0'))
|
||||||
assert lead.state == 'done', 'Opportunity is not in done state!'
|
assert lead.stage_id.id == ref('crm.stage_lead6'), "Opportunity stage should be 'Won'."
|
||||||
assert lead.stage_id.name == 'Won', ' Stage of Opportunity is not win!'
|
assert lead.state == 'done', "Opportunity is not in 'done' state!"
|
||||||
assert lead.probability == 100.0, 'probability revenue should not be 100.0!'
|
assert lead.probability == 100.0, "Revenue probability should be 100.0!"
|
||||||
-
|
-
|
||||||
I convert mass lead into opportunity customer.
|
I convert mass lead into opportunity customer.
|
||||||
-
|
-
|
||||||
|
@ -96,6 +95,19 @@
|
||||||
assert opp.name == "Interest in Your New Product", "Opportunity name not correct"
|
assert opp.name == "Interest in Your New Product", "Opportunity name not correct"
|
||||||
assert opp.type == 'opportunity', 'Lead is not converted to opportunity!'
|
assert opp.type == 'opportunity', 'Lead is not converted to opportunity!'
|
||||||
assert opp.stage_id.id == ref("stage_lead1"), 'Stage of probability is incorrect!'
|
assert opp.stage_id.id == ref("stage_lead1"), 'Stage of probability is incorrect!'
|
||||||
|
-
|
||||||
|
I loose the second opportunity
|
||||||
|
-
|
||||||
|
!python {model: crm.lead}: |
|
||||||
|
self.case_mark_lost(cr, uid, [ref("crm_case_electonicgoodsdealer0")])
|
||||||
|
-
|
||||||
|
I check details of the opportunity after the loose
|
||||||
|
-
|
||||||
|
!python {model: crm.lead}: |
|
||||||
|
lead = self.browse(cr, uid, ref('crm_case_electonicgoodsdealer0'))
|
||||||
|
assert lead.stage_id.id == ref('crm.stage_lead8'), "Opportunity stage should be 'Lost'."
|
||||||
|
assert lead.state == 'cancel', "Lost opportunity is not in 'cancel' state!"
|
||||||
|
assert lead.probability == 0.0, "Revenue probability should be 0.0!"
|
||||||
-
|
-
|
||||||
I confirm review needs meeting.
|
I confirm review needs meeting.
|
||||||
-
|
-
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
##############################################################################
|
##############################################################################
|
||||||
#
|
#
|
||||||
# OpenERP, Open Source Management Solution
|
# OpenERP, Open Source Management Solution
|
||||||
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
|
# Copyright (C) 2004-today OpenERP SA (<http://www.openerp.com>)
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
@ -19,25 +19,57 @@
|
||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
from osv import fields, osv
|
from base_status.base_stage import base_stage
|
||||||
from crm import crm
|
|
||||||
import time
|
|
||||||
from crm import wizard
|
|
||||||
import binascii
|
import binascii
|
||||||
|
from crm import crm
|
||||||
|
from crm import wizard
|
||||||
|
from osv import fields, osv
|
||||||
|
import time
|
||||||
import tools
|
import tools
|
||||||
from tools.translate import _
|
from tools.translate import _
|
||||||
|
|
||||||
wizard.mail_compose_message.SUPPORTED_MODELS.append('crm.claim')
|
wizard.mail_compose_message.SUPPORTED_MODELS.append('crm.claim')
|
||||||
|
|
||||||
CRM_CLAIM_PENDING_STATES = (
|
CRM_CLAIM_PENDING_STATES = (
|
||||||
crm.AVAILABLE_STATES[2][0], # Cancelled
|
crm.AVAILABLE_STATES[2][0], # Cancelled
|
||||||
crm.AVAILABLE_STATES[3][0], # Done
|
crm.AVAILABLE_STATES[3][0], # Done
|
||||||
crm.AVAILABLE_STATES[4][0], # Pending
|
crm.AVAILABLE_STATES[4][0], # Pending
|
||||||
)
|
)
|
||||||
|
|
||||||
|
class crm_claim_stage(osv.osv):
|
||||||
class crm_claim(crm.crm_case, osv.osv):
|
""" Model for claim stages. This models the main stages of a claim
|
||||||
|
management flow. Main CRM objects (leads, opportunities, project
|
||||||
|
issues, ...) will now use only stages, instead of state and stages.
|
||||||
|
Stages are for example used to display the kanban view of records.
|
||||||
"""
|
"""
|
||||||
Crm claim
|
_name = "crm.claim.stage"
|
||||||
|
_description = "Claim stages"
|
||||||
|
_rec_name = 'name'
|
||||||
|
_order = "sequence"
|
||||||
|
|
||||||
|
_columns = {
|
||||||
|
'name': fields.char('Stage Name', size=64, required=True, translate=True),
|
||||||
|
'sequence': fields.integer('Sequence', help="Used to order stages. Lower is better."),
|
||||||
|
'section_ids':fields.many2many('crm.case.section', 'section_claim_stage_rel', 'stage_id', 'section_id', string='Sections',
|
||||||
|
help="Link between stages and sales teams. When set, this limitate the current stage to the selected sales teams."),
|
||||||
|
'state': fields.selection(crm.AVAILABLE_STATES, 'State', required=True, help="The related state for the stage. The state of your document will automatically change regarding the selected stage. For example, if a stage is related to the state 'Close', when your document reaches this stage, it will be automatically have the 'closed' state."),
|
||||||
|
'case_refused': fields.boolean('Refused stage',
|
||||||
|
help='Refused stages are specific stages for done.'),
|
||||||
|
'case_default': fields.boolean('Common to All Teams',
|
||||||
|
help="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."),
|
||||||
|
'fold': fields.boolean('Hide in Views when Empty',
|
||||||
|
help="This stage is not visible, for example in status bar or kanban view, when there are no records in that stage to display."),
|
||||||
|
}
|
||||||
|
|
||||||
|
_defaults = {
|
||||||
|
'sequence': lambda *args: 1,
|
||||||
|
'state': 'draft',
|
||||||
|
'fold': False,
|
||||||
|
'case_refused': False,
|
||||||
|
}
|
||||||
|
|
||||||
|
class crm_claim(base_stage, osv.osv):
|
||||||
|
""" Crm claim
|
||||||
"""
|
"""
|
||||||
_name = "crm.claim"
|
_name = "crm.claim"
|
||||||
_description = "Claim"
|
_description = "Claim"
|
||||||
|
@ -73,31 +105,68 @@ class crm_claim(crm.crm_case, osv.osv):
|
||||||
'email_cc': fields.text('Watchers Emails', size=252, help="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"),
|
'email_cc': fields.text('Watchers Emails', size=252, help="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"),
|
||||||
'email_from': fields.char('Email', size=128, help="These people will receive email."),
|
'email_from': fields.char('Email', size=128, help="These people will receive email."),
|
||||||
'partner_phone': fields.char('Phone', size=32),
|
'partner_phone': fields.char('Phone', size=32),
|
||||||
'stage_id': fields.many2one ('crm.case.stage', 'Stage', domain="[('section_ids','=',section_id)]"),
|
'stage_id': fields.many2one ('crm.claim.stage', 'Stage',
|
||||||
|
domain="['|', ('section_ids', '=', section_id), ('case_default', '=', True)]"),
|
||||||
'cause': fields.text('Root Cause'),
|
'cause': fields.text('Root Cause'),
|
||||||
'state': fields.selection(crm.AVAILABLE_STATES, 'Status', size=16, readonly=True,
|
'state': fields.related('stage_id', 'state', type="selection", store=True,
|
||||||
help='The state is set to \'Draft\', when a case is created.\
|
selection=crm.AVAILABLE_STATES, string="State", readonly=True,
|
||||||
\nIf the case is in progress the state is set to \'Open\'.\
|
help='The state is set to \'Draft\', when a case is created.\
|
||||||
\nWhen the case is over, the state is set to \'Done\'.\
|
If the case is in progress the state is set to \'Open\'.\
|
||||||
\nIf the case needs to be reviewed then the state is set to \'Pending\'.'),
|
When the case is over, the state is set to \'Done\'.\
|
||||||
|
If the case needs to be reviewed then the state is \
|
||||||
|
set to \'Pending\'.'),
|
||||||
'message_ids': fields.one2many('mail.message', 'res_id', 'Messages', domain=[('model','=',_name)]),
|
'message_ids': fields.one2many('mail.message', 'res_id', 'Messages', domain=[('model','=',_name)]),
|
||||||
}
|
}
|
||||||
|
|
||||||
_defaults = {
|
_defaults = {
|
||||||
'user_id': crm.crm_case._get_default_user,
|
'user_id': lambda s, cr, uid, c: s._get_default_user(cr, uid, c),
|
||||||
'partner_id': crm.crm_case._get_default_partner,
|
'partner_id': lambda s, cr, uid, c: s._get_default_partner(cr, uid, c),
|
||||||
'email_from':crm.crm_case. _get_default_email,
|
'email_from': lambda s, cr, uid, c: s._get_default_email(cr, uid, c),
|
||||||
'state': lambda *a: 'draft',
|
'section_id': lambda s, cr, uid, c: s._get_default_section_id(cr, uid, c),
|
||||||
'section_id':crm.crm_case. _get_section,
|
'date': fields.datetime.now,
|
||||||
'date': lambda *a: time.strftime('%Y-%m-%d %H:%M:%S'),
|
|
||||||
'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.case', context=c),
|
'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.case', context=c),
|
||||||
'priority': lambda *a: crm.AVAILABLE_PRIORITIES[2][0],
|
'priority': lambda *a: crm.AVAILABLE_PRIORITIES[2][0],
|
||||||
'active': lambda *a: 1
|
'active': lambda *a: 1
|
||||||
}
|
}
|
||||||
|
|
||||||
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
|
def stage_find(self, cr, uid, cases, section_id, domain=[], order='sequence', context=None):
|
||||||
return 'Claim'
|
""" Override of the base.stage method
|
||||||
|
Parameter of the stage search taken from the lead:
|
||||||
|
- section_id: if set, stages must belong to this section or
|
||||||
|
be a default case
|
||||||
|
"""
|
||||||
|
if isinstance(cases, (int, long)):
|
||||||
|
cases = self.browse(cr, uid, cases, context=context)
|
||||||
|
# collect all section_ids
|
||||||
|
section_ids = []
|
||||||
|
if section_id:
|
||||||
|
section_ids.append(section_id)
|
||||||
|
for claim in cases:
|
||||||
|
if claim.section_id:
|
||||||
|
section_ids.append(claim.section_id.id)
|
||||||
|
# OR all section_ids and OR with case_default
|
||||||
|
search_domain = []
|
||||||
|
if section_ids:
|
||||||
|
search_domain += [('|')] * len(section_ids)
|
||||||
|
for section_id in section_ids:
|
||||||
|
search_domain.append(('section_ids', '=', section_id))
|
||||||
|
search_domain.append(('case_default', '=', True))
|
||||||
|
# AND with the domain in parameter
|
||||||
|
search_domain += list(domain)
|
||||||
|
# perform search, return the first found
|
||||||
|
stage_ids = self.pool.get('crm.claim.stage').search(cr, uid, search_domain, order=order, context=context)
|
||||||
|
if stage_ids:
|
||||||
|
return stage_ids[0]
|
||||||
|
return False
|
||||||
|
|
||||||
|
def case_refuse(self, cr, uid, ids, context=None):
|
||||||
|
""" Mark the case as refused: state=done and case_refused=True """
|
||||||
|
for lead in self.browse(cr, uid, ids):
|
||||||
|
stage_id = self.stage_find(cr, uid, [lead], lead.section_id.id or False, ['&', ('state', '=', 'done'), ('case_refused', '=', True)], context=context)
|
||||||
|
if stage_id:
|
||||||
|
self.case_set(cr, uid, [lead.id], values_to_update={}, new_stage_id=stage_id, context=context)
|
||||||
|
return self.case_refuse_send_note(cr, uid, ids, context=context)
|
||||||
|
|
||||||
def onchange_partner_id(self, cr, uid, ids, part, email=False):
|
def onchange_partner_id(self, cr, uid, ids, part, email=False):
|
||||||
"""This function returns value of partner address based on partner
|
"""This function returns value of partner address based on partner
|
||||||
:param part: Partner's id
|
:param part: Partner's id
|
||||||
|
@ -110,19 +179,6 @@ class crm_claim(crm.crm_case, osv.osv):
|
||||||
}
|
}
|
||||||
address = self.pool.get('res.partner').browse(cr, uid, part)
|
address = self.pool.get('res.partner').browse(cr, uid, part)
|
||||||
return {'value': {'email_from': address.email, 'partner_phone': address.phone}}
|
return {'value': {'email_from': address.email, 'partner_phone': address.phone}}
|
||||||
|
|
||||||
def case_open(self, cr, uid, ids, *args):
|
|
||||||
"""Opens Claim"""
|
|
||||||
for l in self.browse(cr, uid, ids):
|
|
||||||
# When coming from draft override date and stage otherwise just set state
|
|
||||||
if l.state == 'draft':
|
|
||||||
message = _("The claim '%s' has been opened.") % l.name
|
|
||||||
self.log(cr, uid, l.id, message)
|
|
||||||
stage_id = self.stage_find(cr, uid, l.section_id.id or False, [('sequence','>',0)])
|
|
||||||
if stage_id:
|
|
||||||
self.stage_set(cr, uid, [l.id], stage_id)
|
|
||||||
res = super(crm_claim, self).case_open(cr, uid, ids, *args)
|
|
||||||
return res
|
|
||||||
|
|
||||||
def message_new(self, cr, uid, msg, custom_values=None, context=None):
|
def message_new(self, cr, uid, msg, custom_values=None, context=None):
|
||||||
"""Automatically called when new email message arrives"""
|
"""Automatically called when new email message arrives"""
|
||||||
|
@ -177,6 +233,26 @@ class crm_claim(crm.crm_case, osv.osv):
|
||||||
res = self.write(cr, uid, [case.id], values, context=context)
|
res = self.write(cr, uid, [case.id], values, context=context)
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
# ---------------------------------------------------
|
||||||
|
# OpenChatter methods and notifications
|
||||||
|
# ---------------------------------------------------
|
||||||
|
|
||||||
|
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
|
||||||
|
""" Override of default prefix for notifications. """
|
||||||
|
return 'Claim'
|
||||||
|
|
||||||
|
def case_refuse_send_note(self, cr, uid, ids, context=None):
|
||||||
|
for id in ids:
|
||||||
|
msg = _('%s has been <b>refused</b>.') % (self.case_get_note_msg_prefix(cr, uid, id, context=context))
|
||||||
|
self.message_append_note(cr, uid, [id], body=msg, context=context)
|
||||||
|
return True
|
||||||
|
|
||||||
|
def stage_set_send_note(self, cr, uid, ids, stage_id, context=None):
|
||||||
|
""" Override of the (void) default notification method. """
|
||||||
|
stage_name = self.pool.get('crm.claim.stage').name_get(cr, uid, [stage_id], context=context)[0][1]
|
||||||
|
return self.message_append_note(cr, uid, ids, body= _("Stage changed to <b>%s</b>.") % (stage_name), context=context)
|
||||||
|
|
||||||
|
|
||||||
class res_partner(osv.osv):
|
class res_partner(osv.osv):
|
||||||
_inherit = 'res.partner'
|
_inherit = 'res.partner'
|
||||||
_columns = {
|
_columns = {
|
||||||
|
|
|
@ -42,27 +42,39 @@
|
||||||
Case Stage
|
Case Stage
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<record model="crm.case.stage" id="stage_claim1">
|
<record model="crm.claim.stage" id="stage_claim1">
|
||||||
<field name="name">Accepted as Claim</field>
|
<field name="name">Draft claim</field>
|
||||||
|
<field name="state">draft</field>
|
||||||
<field name="sequence">26</field>
|
<field name="sequence">26</field>
|
||||||
|
<field name="case_default" eval="True"/>
|
||||||
</record>
|
</record>
|
||||||
<record model="crm.case.stage" id="stage_claim5">
|
<record model="crm.claim.stage" id="stage_claim5">
|
||||||
<field name="name">Actions Defined</field>
|
<field name="name">Actions Defined</field>
|
||||||
|
<field name="state">open</field>
|
||||||
<field name="sequence">27</field>
|
<field name="sequence">27</field>
|
||||||
|
<field name="case_default" eval="True"/>
|
||||||
</record>
|
</record>
|
||||||
<record model="crm.case.stage" id="stage_claim2">
|
<record model="crm.claim.stage" id="stage_claim2">
|
||||||
<field name="name">Actions Done</field>
|
<field name="name">Actions Done</field>
|
||||||
|
<field name="state">done</field>
|
||||||
<field name="sequence">28</field>
|
<field name="sequence">28</field>
|
||||||
|
<field name="case_default" eval="True"/>
|
||||||
</record>
|
</record>
|
||||||
<record model="crm.case.stage" id="stage_claim3">
|
<record model="crm.claim.stage" id="stage_claim3">
|
||||||
<field name="name">Won't fix</field>
|
<field name="name">Refused</field>
|
||||||
|
<field name="state">done</field>
|
||||||
<field name="sequence">29</field>
|
<field name="sequence">29</field>
|
||||||
|
<field name="case_default" eval="True"/>
|
||||||
|
<field name="case_refused" eval="True"/>
|
||||||
|
<field name="fold" eval="True"/>
|
||||||
|
</record>
|
||||||
|
<record model="crm.claim.stage" id="stage_claim3">
|
||||||
|
<field name="name">Cancelled</field>
|
||||||
|
<field name="state">cancel</field>
|
||||||
|
<field name="sequence">30</field>
|
||||||
|
<field name="case_default" eval="True"/>
|
||||||
|
<field name="fold" eval="True"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="crm.case.section" id="crm.section_sales_department">
|
|
||||||
<field name="name">Sales Department</field>
|
|
||||||
<field name="code">Sales</field>
|
|
||||||
<field name="stage_ids" eval="[(4, ref('stage_claim1')), (4, ref('stage_claim2')), (4, ref('stage_claim3')), (4, ref('stage_claim5'))]"/>
|
|
||||||
</record>
|
|
||||||
</data>
|
</data>
|
||||||
</openerp>
|
</openerp>
|
||||||
|
|
|
@ -12,7 +12,6 @@
|
||||||
<field eval=""3"" name="priority"/>
|
<field eval=""3"" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field eval=""Problem with the delivery of goods"" name="name"/>
|
<field eval=""Problem with the delivery of goods"" name="name"/>
|
||||||
<field eval=""open"" name="state"/>
|
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field name="categ_id" ref="crm_claim.categ_claim1"/>
|
<field name="categ_id" ref="crm_claim.categ_claim1"/>
|
||||||
<field name="stage_id" ref="crm_claim.stage_claim1"/>
|
<field name="stage_id" ref="crm_claim.stage_claim1"/>
|
||||||
|
@ -25,7 +24,6 @@
|
||||||
<field eval=""4"" name="priority"/>
|
<field eval=""4"" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field eval=""Damaged Products"" name="name"/>
|
<field eval=""Damaged Products"" name="name"/>
|
||||||
<field eval=""open"" name="state"/>
|
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field name="categ_id" ref="crm_claim.categ_claim2"/>
|
<field name="categ_id" ref="crm_claim.categ_claim2"/>
|
||||||
<field name="stage_id" ref="crm_claim.stage_claim5"/>
|
<field name="stage_id" ref="crm_claim.stage_claim5"/>
|
||||||
|
@ -38,7 +36,6 @@
|
||||||
<field eval=""2"" name="priority"/>
|
<field eval=""2"" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_demo"/>
|
<field name="user_id" ref="base.user_demo"/>
|
||||||
<field eval=""Document related problems"" name="name"/>
|
<field eval=""Document related problems"" name="name"/>
|
||||||
<field eval=""done"" name="state"/>
|
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field name="categ_id" ref="crm_claim.categ_claim3"/>
|
<field name="categ_id" ref="crm_claim.categ_claim3"/>
|
||||||
<field name="stage_id" ref="crm_claim.stage_claim2"/>
|
<field name="stage_id" ref="crm_claim.stage_claim2"/>
|
||||||
|
@ -52,7 +49,6 @@
|
||||||
<field eval=""3"" name="priority"/>
|
<field eval=""3"" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field eval=""Product quality not maintained"" name="name"/>
|
<field eval=""Product quality not maintained"" name="name"/>
|
||||||
<field eval=""draft"" name="state"/>
|
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field name="categ_id" ref="crm_claim.categ_claim1"/>
|
<field name="categ_id" ref="crm_claim.categ_claim1"/>
|
||||||
<field name="stage_id" ref="crm_claim.stage_claim5"/>
|
<field name="stage_id" ref="crm_claim.stage_claim5"/>
|
||||||
|
@ -65,7 +61,6 @@
|
||||||
<field eval=""3"" name="priority"/>
|
<field eval=""3"" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field eval=""Some products missing"" name="name"/>
|
<field eval=""Some products missing"" name="name"/>
|
||||||
<field eval=""pending"" name="state"/>
|
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field name="categ_id" ref="crm_claim.categ_claim3"/>
|
<field name="categ_id" ref="crm_claim.categ_claim3"/>
|
||||||
<field name="stage_id" ref="crm_claim.stage_claim3"/>
|
<field name="stage_id" ref="crm_claim.stage_claim3"/>
|
||||||
|
@ -77,7 +72,6 @@
|
||||||
<field eval=""3"" name="priority"/>
|
<field eval=""3"" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field eval=""Problem with the delivery of assignments"" name="name"/>
|
<field eval=""Problem with the delivery of assignments"" name="name"/>
|
||||||
<field eval=""cancel"" name="state"/>
|
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field eval="time.strftime('%Y-%m-28 14:15:30')" name="date"/>
|
<field eval="time.strftime('%Y-%m-28 14:15:30')" name="date"/>
|
||||||
<field name="categ_id" ref="crm_claim.categ_claim1"/>
|
<field name="categ_id" ref="crm_claim.categ_claim1"/>
|
||||||
|
@ -91,7 +85,6 @@
|
||||||
<field eval=""3"" name="priority"/>
|
<field eval=""3"" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field eval=""Documents unclear"" name="name"/>
|
<field eval=""Documents unclear"" name="name"/>
|
||||||
<field eval=""done"" name="state"/>
|
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field eval="time.strftime('%Y-%m-19 13:01:05')" name="date"/>
|
<field eval="time.strftime('%Y-%m-19 13:01:05')" name="date"/>
|
||||||
<field name="categ_id" ref="crm_claim.categ_claim3"/>
|
<field name="categ_id" ref="crm_claim.categ_claim3"/>
|
||||||
|
|
|
@ -50,5 +50,10 @@
|
||||||
<menuitem name="Claims" id="menu_crm_case_claims"
|
<menuitem name="Claims" id="menu_crm_case_claims"
|
||||||
parent="base.menu_aftersale" action="crm_case_categ_claim0" sequence="1"/>
|
parent="base.menu_aftersale" action="crm_case_categ_claim0" sequence="1"/>
|
||||||
|
|
||||||
|
<!-- Claim Stages -->
|
||||||
|
<menuitem id="menu_definitions" name="Configuration" parent="base.menu_main_pm" sequence="60"/>
|
||||||
|
<menuitem id="menu_project_config_project" name="Stages" parent="menu_definitions" sequence="1"/>
|
||||||
|
<menuitem id="menu_claim_stage_view" name="Claim Stages" action="crm_claim_stage_act" parent="menu_project_config_project" sequence="20"/>
|
||||||
|
|
||||||
</data>
|
</data>
|
||||||
</openerp>
|
</openerp>
|
||||||
|
|
|
@ -23,12 +23,40 @@
|
||||||
|
|
||||||
<!-- Claim Stages -->
|
<!-- Claim Stages -->
|
||||||
|
|
||||||
|
<record id="crm_claim_stage_tree" model="ir.ui.view">
|
||||||
|
<field name="name">crm.claim.stage.tree</field>
|
||||||
|
<field name="model">crm.claim.stage</field>
|
||||||
|
<field name="type">tree</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<tree string="Claim Stages">
|
||||||
|
<field name="sequence"/>
|
||||||
|
<field name="name"/>
|
||||||
|
<field name="state"/>
|
||||||
|
</tree>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
|
<record id="crm_claim_stage_form" model="ir.ui.view">
|
||||||
|
<field name="name">crm.claim.stage.form</field>
|
||||||
|
<field name="model">crm.claim.stage</field>
|
||||||
|
<field name="type">form</field>
|
||||||
|
<field name="arch" type="xml">
|
||||||
|
<form string="Claim Stage">
|
||||||
|
<field name="name"/>
|
||||||
|
<field name="case_default"/>
|
||||||
|
<field name="sequence"/>
|
||||||
|
<field name="state"/>
|
||||||
|
<field name="case_refused"/>
|
||||||
|
<field name="fold"/>
|
||||||
|
</form>
|
||||||
|
</field>
|
||||||
|
</record>
|
||||||
|
|
||||||
<record id="crm_claim_stage_act" model="ir.actions.act_window">
|
<record id="crm_claim_stage_act" model="ir.actions.act_window">
|
||||||
<field name="name">Claim Stages</field>
|
<field name="name">Claim Stages</field>
|
||||||
<field name="res_model">crm.case.stage</field>
|
<field name="res_model">crm.claim.stage</field>
|
||||||
<field name="view_type">form</field>
|
<field name="view_type">form</field>
|
||||||
<field name="view_id" ref="crm.crm_case_stage_tree"/>
|
<field name="view_id" ref="crm_claim_stage_tree"/>
|
||||||
<field name="context">{'search_default_claim':1}</field>
|
|
||||||
<field name="help">You can create claim stages to categorize the status of every claim entered in the system. The stages define all the steps required for the resolution of a claim.</field>
|
<field name="help">You can create claim stages to categorize the status of every claim entered in the system. The stages define all the steps required for the resolution of a claim.</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
@ -44,19 +72,13 @@
|
||||||
<field name="partner_id"/>
|
<field name="partner_id"/>
|
||||||
<field name="user_id" />
|
<field name="user_id" />
|
||||||
<field name="date"/>
|
<field name="date"/>
|
||||||
|
<field name="stage_id"/>
|
||||||
<field name="date_action_next"/>
|
<field name="date_action_next"/>
|
||||||
<field name="action_next"/>
|
<field name="action_next"/>
|
||||||
<field name="categ_id" string="Type" select="1"/>
|
<field name="categ_id" string="Type" select="1"/>
|
||||||
<field name="stage_id" invisible="1"/>
|
|
||||||
<field name="date_deadline" invisible="1"/>
|
<field name="date_deadline" invisible="1"/>
|
||||||
<field name="date_closed" invisible="1"/>
|
<field name="date_closed" invisible="1"/>
|
||||||
<field name="state"/>
|
<field name="state" groups="base.group_no_one"/>
|
||||||
<button name="case_open" string="Open"
|
|
||||||
states="draft,pending" type="object"
|
|
||||||
icon="gtk-go-forward" />
|
|
||||||
<button name="case_close" string="Close"
|
|
||||||
states="open,draft,pending" type="object"
|
|
||||||
icon="gtk-close" />
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
@ -68,13 +90,23 @@
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<form layout="manual">
|
<form layout="manual">
|
||||||
<div class="oe_form_topbar">
|
<div class="oe_form_topbar">
|
||||||
<button name="case_close" string="Done" states="open,pending" type="object" />
|
<button name="case_open" string="Open" type="object"
|
||||||
<button name="case_open" string="Open" states="draft,pending" type="object" />
|
states="draft,pending"/>
|
||||||
<button name="case_pending" string="Pending" states="draft,open" type="object" />
|
<button name="case_close" string="Done" type="object"
|
||||||
<button name="case_reset" string="Reset to Draft" states="done,cancel" type="object" />
|
states="open,pending"/>
|
||||||
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" />
|
<button name="case_refuse" string="Refuse" type="object"
|
||||||
|
states="draft,open,pending"/>
|
||||||
|
<button name="stage_previous" string="Previous Stage" type="object"
|
||||||
|
states="open,pending" icon="gtk-go-back" attrs="{'invisible': [('stage_id','=', False)]}"/>
|
||||||
|
<button name="stage_next" string="Next Stage" type="object"
|
||||||
|
states="open,pending" icon="gtk-go-forward" attrs="{'invisible': [('stage_id','=', False)]}"/>
|
||||||
|
<button name="case_reset" string="Reset to Draft" type="object"
|
||||||
|
states="cancel,done"/>
|
||||||
|
<button name="case_cancel" string="Cancel" type="object"
|
||||||
|
states="draft,open,pending"/>
|
||||||
<div class="oe_right">
|
<div class="oe_right">
|
||||||
<field name="state" select="1" nolabel="1" widget="statusbar" statusbar_visible="draft,open,done" statusbar_colors='{"pending":"blue"}'/>
|
<field name="stage_id" nolabel="1" widget="statusbar"
|
||||||
|
on_change="onchange_stage_id(stage_id)"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="oe_clear"/>
|
<div class="oe_clear"/>
|
||||||
</div>
|
</div>
|
||||||
|
@ -86,11 +118,7 @@
|
||||||
<group colspan="4" col="6">
|
<group colspan="4" col="6">
|
||||||
<field name="user_id"/>
|
<field name="user_id"/>
|
||||||
<field name="section_id" widget="selection" />
|
<field name="section_id" widget="selection" />
|
||||||
<group colspan="2" col="4">
|
<field name="state" groups="base.group_no_one"/>
|
||||||
<field name="stage_id" domain="[('section_ids','=',section_id)]"/>
|
|
||||||
<button name="stage_previous" string="" type="object" icon="gtk-go-back" />
|
|
||||||
<button name="stage_next" string="" type="object" icon="gtk-go-forward" />
|
|
||||||
</group>
|
|
||||||
<newline />
|
<newline />
|
||||||
<field name="priority"/>
|
<field name="priority"/>
|
||||||
<field name="date_deadline"/>
|
<field name="date_deadline"/>
|
||||||
|
@ -228,7 +256,7 @@
|
||||||
domain="[]" context="{'group_by':'categ_id'}" />
|
domain="[]" context="{'group_by':'categ_id'}" />
|
||||||
<filter string="Status"
|
<filter string="Status"
|
||||||
icon="terp-stock_effects-object-colorize"
|
icon="terp-stock_effects-object-colorize"
|
||||||
domain="[]" context="{'group_by':'state'}" />
|
domain="[]" context="{'group_by':'state'}" groups="base.group_no_one"/>
|
||||||
<separator orientation="vertical"/>
|
<separator orientation="vertical"/>
|
||||||
<filter string="Claim Date" icon="terp-go-month"
|
<filter string="Claim Date" icon="terp-go-month"
|
||||||
domain="[]" help="Claim Date"
|
domain="[]" help="Claim Date"
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||||
access_crm_claim_manager,crm.claim.manager,model_crm_claim,base.group_sale_manager,1,1,1,1
|
access_crm_claim_manager,crm.claim.manager,model_crm_claim,base.group_sale_manager,1,1,1,1
|
||||||
access_crm_claim_user,crm.claim.user,model_crm_claim,base.group_sale_salesman,1,1,1,0
|
access_crm_claim_user,crm.claim.user,model_crm_claim,base.group_sale_salesman,1,1,1,0
|
||||||
|
access_crm_claim_stage_user,crm.claim.stage.user,model_crm_claim_stage,base.group_sale_salesman,1,1,1,1
|
||||||
access_crm_claim_report_manager,crm.claim.report.manager,model_crm_claim_report,base.group_sale_manager,1,1,1,1
|
access_crm_claim_report_manager,crm.claim.report.manager,model_crm_claim_report,base.group_sale_manager,1,1,1,1
|
||||||
access_crm_claim_partner_manager,crm.claim.partner.manager,model_crm_claim,base.group_partner_manager,1,0,0,0
|
access_crm_claim_partner_manager,crm.claim.partner.manager,model_crm_claim,base.group_partner_manager,1,0,0,0
|
||||||
|
|
|
|
@ -30,7 +30,7 @@
|
||||||
claim_ids = self.search(cr, uid, [('email_from','=', 'Mr. John Right <info@customer.com>')])
|
claim_ids = self.search(cr, uid, [('email_from','=', 'Mr. John Right <info@customer.com>')])
|
||||||
claim = self.browse(cr, uid, claim_ids[0])
|
claim = self.browse(cr, uid, claim_ids[0])
|
||||||
assert claim.state == "open", "Claim is not in Open state"
|
assert claim.state == "open", "Claim is not in Open state"
|
||||||
assert claim.stage_id.id == ref("crm.stage_lead1"), "Claim is not in New stage"
|
assert claim.stage_id.id == ref("crm.stage_lead2"), "Claim is not in Qualification stage"
|
||||||
-
|
-
|
||||||
After complete all service from our side, I close this claim.
|
After complete all service from our side, I close this claim.
|
||||||
-
|
-
|
||||||
|
|
|
@ -19,13 +19,14 @@
|
||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
from osv import fields, osv
|
from base_status.base_stage import base_stage
|
||||||
from crm import crm
|
from crm import crm
|
||||||
from crm import wizard
|
from crm import wizard
|
||||||
|
from osv import fields, osv
|
||||||
|
|
||||||
wizard.mail_compose_message.SUPPORTED_MODELS.append('crm.fundraising')
|
wizard.mail_compose_message.SUPPORTED_MODELS.append('crm.fundraising')
|
||||||
|
|
||||||
class crm_fundraising(crm.crm_case, osv.osv):
|
class crm_fundraising(base_stage, osv.osv):
|
||||||
""" Fund Raising Cases """
|
""" Fund Raising Cases """
|
||||||
|
|
||||||
_name = "crm.fundraising"
|
_name = "crm.fundraising"
|
||||||
|
@ -68,14 +69,58 @@ class crm_fundraising(crm.crm_case, osv.osv):
|
||||||
'duration': fields.float('Duration'),
|
'duration': fields.float('Duration'),
|
||||||
'ref': fields.reference('Reference', selection=crm._links_get, size=128),
|
'ref': fields.reference('Reference', selection=crm._links_get, size=128),
|
||||||
'ref2': fields.reference('Reference 2', selection=crm._links_get, size=128),
|
'ref2': fields.reference('Reference 2', selection=crm._links_get, size=128),
|
||||||
'state': fields.selection(crm.AVAILABLE_STATES, 'Status', size=16, readonly=True,
|
'state': fields.related('stage_id', 'state', type="selection", store=True,
|
||||||
help='The state is set to \'Draft\', when a case is created.\
|
selection=crm.AVAILABLE_STATES, string="State", readonly=True,
|
||||||
\nIf the case is in progress the state is set to \'Open\'.\
|
help='The state is set to \'Draft\', when a case is created.\
|
||||||
\nWhen the case is over, the state is set to \'Done\'.\
|
If the case is in progress the state is set to \'Open\'.\
|
||||||
\nIf the case needs to be reviewed then the state is set to \'Pending\'.'),
|
When the case is over, the state is set to \'Done\'.\
|
||||||
|
If the case needs to be reviewed then the state is \
|
||||||
|
set to \'Pending\'.'),
|
||||||
'message_ids': fields.one2many('mail.message', 'res_id', 'Messages', domain=[('model','=',_name)]),
|
'message_ids': fields.one2many('mail.message', 'res_id', 'Messages', domain=[('model','=',_name)]),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_defaults = {
|
||||||
|
'active': 1,
|
||||||
|
'user_id': lambda s, cr, uid, c: s._get_default_user(cr, uid, c),
|
||||||
|
'partner_id': lambda s, cr, uid, c: s._get_default_partner(cr, uid, c),
|
||||||
|
'email_from': lambda s, cr, uid, c: s._get_default_email(cr, uid, c),
|
||||||
|
'section_id': lambda s, cr, uid, c: s._get_default_section_id(cr, uid, c),
|
||||||
|
'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.case', context=c),
|
||||||
|
'priority': crm.AVAILABLE_PRIORITIES[2][0],
|
||||||
|
'probability': 0.0,
|
||||||
|
'planned_cost': 0.0,
|
||||||
|
'planned_revenue': 0.0,
|
||||||
|
}
|
||||||
|
|
||||||
|
def stage_find(self, cr, uid, cases, section_id, domain=[], order='sequence', context=None):
|
||||||
|
""" Override of the base.stage method
|
||||||
|
Parameter of the stage search taken from the lead:
|
||||||
|
- section_id: if set, stages must belong to this section or
|
||||||
|
be a default case
|
||||||
|
"""
|
||||||
|
if isinstance(cases, (int, long)):
|
||||||
|
cases = self.browse(cr, uid, cases, context=context)
|
||||||
|
# collect all section_ids
|
||||||
|
section_ids = []
|
||||||
|
if section_id:
|
||||||
|
section_ids.append(section_id)
|
||||||
|
for case in cases:
|
||||||
|
if case.section_id:
|
||||||
|
section_ids.append(case.section_id.id)
|
||||||
|
# OR all section_ids and OR with case_default
|
||||||
|
search_domain = []
|
||||||
|
if section_ids:
|
||||||
|
search_domain += [('|')] * len(section_ids)
|
||||||
|
for section_id in section_ids:
|
||||||
|
search_domain.append(('section_ids', '=', section_id))
|
||||||
|
search_domain.append(('case_default', '=', True))
|
||||||
|
# AND with the domain in parameter
|
||||||
|
search_domain += list(domain)
|
||||||
|
# perform search, return the first found
|
||||||
|
stage_ids = self.pool.get('crm.case.stage').search(cr, uid, search_domain, order=order, context=context)
|
||||||
|
if stage_ids:
|
||||||
|
return stage_ids[0]
|
||||||
|
return False
|
||||||
|
|
||||||
def message_new(self, cr, uid, msg, custom_values=None, context=None):
|
def message_new(self, cr, uid, msg, custom_values=None, context=None):
|
||||||
"""Automatically called when new email message arrives"""
|
"""Automatically called when new email message arrives"""
|
||||||
|
@ -93,21 +138,18 @@ class crm_fundraising(crm.crm_case, osv.osv):
|
||||||
self.write(cr, uid, [res_id], vals, context=context)
|
self.write(cr, uid, [res_id], vals, context=context)
|
||||||
return res_id
|
return res_id
|
||||||
|
|
||||||
|
# ---------------------------------------------------
|
||||||
|
# OpenChatter methods and notifications
|
||||||
|
# ---------------------------------------------------
|
||||||
|
|
||||||
_defaults = {
|
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
|
||||||
'active': 1,
|
""" Override of default prefix for notifications. """
|
||||||
'user_id': crm.crm_case._get_default_user,
|
return 'Fundraising'
|
||||||
'partner_id': crm.crm_case._get_default_partner,
|
|
||||||
'email_from': crm.crm_case. _get_default_email,
|
|
||||||
'state': 'draft',
|
|
||||||
'section_id': crm.crm_case. _get_section,
|
|
||||||
'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.case', context=c),
|
|
||||||
'priority': crm.AVAILABLE_PRIORITIES[2][0],
|
|
||||||
'probability': 0.0,
|
|
||||||
'planned_cost': 0.0,
|
|
||||||
'planned_revenue': 0.0,
|
|
||||||
}
|
|
||||||
|
|
||||||
|
def stage_set_send_note(self, cr, uid, ids, stage_id, context=None):
|
||||||
|
""" Override of the (void) default notification method. """
|
||||||
|
stage_name = self.pool.get('crm.case.stage').name_get(cr, uid, [stage_id], context=context)[0][1]
|
||||||
|
return self.message_append_note(cr, uid, ids, body= _("Stage changed to <b>%s</b>.") % (stage_name), context=context)
|
||||||
|
|
||||||
|
|
||||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||||
|
|
|
@ -9,7 +9,6 @@
|
||||||
<field name="partner_id" ref="base.res_partner_9"/>
|
<field name="partner_id" ref="base.res_partner_9"/>
|
||||||
<field eval=""3"" name="priority"/>
|
<field eval=""3"" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_demo"/>
|
<field name="user_id" ref="base.user_demo"/>
|
||||||
<field eval=""open"" name="state"/>
|
|
||||||
<field eval="250000.0" name="planned_cost"/>
|
<field eval="250000.0" name="planned_cost"/>
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field eval="time.strftime('%Y-%m-01 10:35:50')" name="date"/>
|
<field eval="time.strftime('%Y-%m-01 10:35:50')" name="date"/>
|
||||||
|
@ -26,7 +25,6 @@
|
||||||
<field name="partner_id" ref="base.main_partner"/>
|
<field name="partner_id" ref="base.main_partner"/>
|
||||||
<field eval=""3"" name="priority"/>
|
<field eval=""3"" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field eval=""draft"" name="state"/>
|
|
||||||
<field eval="2000000.0" name="planned_cost"/>
|
<field eval="2000000.0" name="planned_cost"/>
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field eval="time.strftime('%Y-%m-05 12:35:50')" name="date"/>
|
<field eval="time.strftime('%Y-%m-05 12:35:50')" name="date"/>
|
||||||
|
@ -43,7 +41,6 @@
|
||||||
<field name="partner_id" ref="base.res_partner_3"/>
|
<field name="partner_id" ref="base.res_partner_3"/>
|
||||||
<field eval=""3"" name="priority"/>
|
<field eval=""3"" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field eval=""open"" name="state"/>
|
|
||||||
<field eval="500000.0" name="planned_cost"/>
|
<field eval="500000.0" name="planned_cost"/>
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field eval="time.strftime('%Y-%m-07 13:50:50')" name="date"/>
|
<field eval="time.strftime('%Y-%m-07 13:50:50')" name="date"/>
|
||||||
|
@ -59,7 +56,6 @@
|
||||||
<field name="partner_id" ref="base.res_partner_4"/>
|
<field name="partner_id" ref="base.res_partner_4"/>
|
||||||
<field eval=""3"" name="priority"/>
|
<field eval=""3"" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_demo"/>
|
<field name="user_id" ref="base.user_demo"/>
|
||||||
<field eval=""draft"" name="state"/>
|
|
||||||
<field eval="1000000.0" name="planned_cost"/>
|
<field eval="1000000.0" name="planned_cost"/>
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field eval="time.strftime('%Y-%m-12 15:10:50')" name="date"/>
|
<field eval="time.strftime('%Y-%m-12 15:10:50')" name="date"/>
|
||||||
|
@ -75,7 +71,6 @@
|
||||||
<field name="partner_id" ref="base.res_partner_14"/>
|
<field name="partner_id" ref="base.res_partner_14"/>
|
||||||
<field eval=""3"" name="priority"/>
|
<field eval=""3"" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field eval=""open"" name="state"/>
|
|
||||||
<field eval="5000000.0" name="planned_cost"/>
|
<field eval="5000000.0" name="planned_cost"/>
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field eval="time.strftime('%Y-%m-17 19:00:15')" name="date"/>
|
<field eval="time.strftime('%Y-%m-17 19:00:15')" name="date"/>
|
||||||
|
@ -91,7 +86,6 @@
|
||||||
<field name="partner_id" ref="base.res_partner_10"/>
|
<field name="partner_id" ref="base.res_partner_10"/>
|
||||||
<field eval=""3"" name="priority"/>
|
<field eval=""3"" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field eval=""done"" name="state"/>
|
|
||||||
<field eval="10000000.0" name="planned_cost"/>
|
<field eval="10000000.0" name="planned_cost"/>
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field eval="time.strftime('%Y-%m-27 09:00:15')" name="date"/>
|
<field eval="time.strftime('%Y-%m-27 09:00:15')" name="date"/>
|
||||||
|
@ -109,7 +103,6 @@
|
||||||
<field name="partner_id" ref="base.res_partner_15"/>
|
<field name="partner_id" ref="base.res_partner_15"/>
|
||||||
<field eval=""3"" name="priority"/>
|
<field eval=""3"" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_demo"/>
|
<field name="user_id" ref="base.user_demo"/>
|
||||||
<field eval=""draft"" name="state"/>
|
|
||||||
<field eval="10000.0" name="planned_cost"/>
|
<field eval="10000.0" name="planned_cost"/>
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field eval="time.strftime('%Y-%m-01 10:00:15')" name="date"/>
|
<field eval="time.strftime('%Y-%m-01 10:00:15')" name="date"/>
|
||||||
|
@ -126,7 +119,6 @@
|
||||||
<field name="partner_id" ref="base.res_partner_9"/>
|
<field name="partner_id" ref="base.res_partner_9"/>
|
||||||
<field eval=""3"" name="priority"/>
|
<field eval=""3"" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field eval=""open"" name="state"/>
|
|
||||||
<field eval="800000.0" name="planned_cost"/>
|
<field eval="800000.0" name="planned_cost"/>
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field eval="time.strftime('%Y-%m-24 22:00:15')" name="date"/>
|
<field eval="time.strftime('%Y-%m-24 22:00:15')" name="date"/>
|
||||||
|
|
|
@ -50,22 +50,6 @@
|
||||||
<field name="user_id" />
|
<field name="user_id" />
|
||||||
<field name="state" />
|
<field name="state" />
|
||||||
<field name="partner_id" invisible="1"/>
|
<field name="partner_id" invisible="1"/>
|
||||||
<button name="case_cancel" string="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" />
|
|
||||||
<button name="case_pending" string="Pending"
|
|
||||||
states="draft,open" type="object" icon="gtk-media-pause" />
|
|
||||||
<button name="case_escalate" string="Escalate"
|
|
||||||
states="open,draft,pending" type="object"
|
|
||||||
icon="gtk-go-up" />
|
|
||||||
<button name="case_close" string="Done"
|
|
||||||
states="open,draft,pending" type="object"
|
|
||||||
icon="gtk-close" />
|
|
||||||
<button name="case_reset" string="Reset to Draft"
|
|
||||||
states="done,cancel" type="object" icon="gtk-convert" />
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
|
@ -19,10 +19,10 @@
|
||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
|
from base_status.base_state import base_state
|
||||||
from crm import crm
|
from crm import crm
|
||||||
from osv import fields, osv
|
|
||||||
import time
|
|
||||||
from crm import wizard
|
from crm import wizard
|
||||||
|
from osv import fields, osv
|
||||||
import tools
|
import tools
|
||||||
from tools.translate import _
|
from tools.translate import _
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ CRM_HELPDESK_STATES = (
|
||||||
|
|
||||||
wizard.mail_compose_message.SUPPORTED_MODELS.append('crm.helpdesk')
|
wizard.mail_compose_message.SUPPORTED_MODELS.append('crm.helpdesk')
|
||||||
|
|
||||||
class crm_helpdesk(crm.crm_case, osv.osv):
|
class crm_helpdesk(base_state, osv.osv):
|
||||||
""" Helpdesk Cases """
|
""" Helpdesk Cases """
|
||||||
|
|
||||||
_name = "crm.helpdesk"
|
_name = "crm.helpdesk"
|
||||||
|
@ -82,12 +82,11 @@ class crm_helpdesk(crm.crm_case, osv.osv):
|
||||||
|
|
||||||
_defaults = {
|
_defaults = {
|
||||||
'active': lambda *a: 1,
|
'active': lambda *a: 1,
|
||||||
'user_id': crm.crm_case._get_default_user,
|
'user_id': lambda s, cr, uid, c: s._get_default_user(cr, uid, c),
|
||||||
'partner_id': crm.crm_case._get_default_partner,
|
'partner_id': lambda s, cr, uid, c: s._get_default_partner(cr, uid, c),
|
||||||
'email_from': crm.crm_case. _get_default_email,
|
'email_from': lambda s, cr, uid, c: s._get_default_email(cr, uid, c),
|
||||||
'state': lambda *a: 'draft',
|
'state': lambda *a: 'draft',
|
||||||
'date': lambda *a: time.strftime('%Y-%m-%d %H:%M:%S'),
|
'date': lambda *a: fields.datetime.now(),
|
||||||
'section_id': crm.crm_case. _get_section,
|
|
||||||
'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.helpdesk', context=c),
|
'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.helpdesk', context=c),
|
||||||
'priority': lambda *a: crm.AVAILABLE_PRIORITIES[2][0],
|
'priority': lambda *a: crm.AVAILABLE_PRIORITIES[2][0],
|
||||||
}
|
}
|
||||||
|
@ -142,5 +141,12 @@ class crm_helpdesk(crm.crm_case, osv.osv):
|
||||||
res = self.write(cr, uid, [case.id], values, context=context)
|
res = self.write(cr, uid, [case.id], values, context=context)
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
# ******************************
|
||||||
|
# OpenChatter
|
||||||
|
# ******************************
|
||||||
|
|
||||||
|
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
|
||||||
|
return 'Helpdesk'
|
||||||
|
|
||||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||||
|
|
||||||
|
|
|
@ -30,12 +30,18 @@
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<form layout="manual">
|
<form layout="manual">
|
||||||
<div class="oe_form_topbar">
|
<div class="oe_form_topbar">
|
||||||
<button name="case_close" states="open,pending" string="Close" type="object" />
|
<button name="case_open" string="Open" type="object"
|
||||||
<button name="case_open" states="draft,pending" string="Open" type="object" />
|
states="draft,pending"/>
|
||||||
<button name="case_pending" states="draft,open" string="Pending" type="object" />
|
<button name="case_close" string="Close" type="object"
|
||||||
<button name="case_reset" states="done,cancel" string="Reset to Draft" type="object" />
|
states="open,draft,pending"/>
|
||||||
<button name="case_escalate" states="open,draft,pending" string="Escalate" type="object" />
|
<button name="case_pending" string="Pending" type="object"
|
||||||
<button name="case_cancel" states="draft,open,pending" string="Cancel" type="object" />
|
states="draft,open"/>
|
||||||
|
<button name="case_reset" string="Reset to Draft" type="object"
|
||||||
|
states="cancel,done"/>
|
||||||
|
<button name="case_escalate" string="Escalate" type="object"
|
||||||
|
states="open,draft,pending"/>
|
||||||
|
<button name="case_cancel" string="Cancel" type="object"
|
||||||
|
states="draft,open,pending"/>
|
||||||
<div class="oe_right">
|
<div class="oe_right">
|
||||||
<field name="state" select="1" nolabel="1" widget="statusbar" statusbar_visible="draft,open,done" statusbar_colors='{"pending":"blue"}'/>
|
<field name="state" select="1" nolabel="1" widget="statusbar" statusbar_visible="draft,open,done" statusbar_colors='{"pending":"blue"}'/>
|
||||||
</div>
|
</div>
|
||||||
|
@ -126,6 +132,9 @@
|
||||||
</page>
|
</page>
|
||||||
</notebook>
|
</notebook>
|
||||||
</sheet>
|
</sheet>
|
||||||
|
<div class="oe_form_bottom">
|
||||||
|
<field name="message_ids_social" colspan="4" widget="ThreadView" nolabel="1"/>
|
||||||
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
@ -147,23 +156,6 @@
|
||||||
<field name="section_id"/>
|
<field name="section_id"/>
|
||||||
<field name="priority"/>
|
<field name="priority"/>
|
||||||
<field name="state"/>
|
<field name="state"/>
|
||||||
<button name="case_cancel" string="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" />
|
|
||||||
<button name="case_pending" string="Pending"
|
|
||||||
states="draft,open" type="object"
|
|
||||||
icon="gtk-media-pause" />
|
|
||||||
<button name="case_escalate" string="Escalate"
|
|
||||||
states="open,draft,pending" type="object"
|
|
||||||
icon="gtk-go-up" />
|
|
||||||
<button name="case_close" string="Done"
|
|
||||||
states="open,draft,pending" type="object"
|
|
||||||
icon="gtk-close" />
|
|
||||||
<button name="case_reset" string="Reset to Draft"
|
|
||||||
states="done,cancel" type="object" icon="gtk-convert" />
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
|
@ -0,0 +1,738 @@
|
||||||
|
# Gujarati translation for openobject-addons
|
||||||
|
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||||
|
# This file is distributed under the same license as the openobject-addons package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openobject-addons\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||||
|
"PO-Revision-Date: 2012-05-31 11:11+0000\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: Gujarati <gu@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-06-01 05:33+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 15342)\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
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Today"
|
||||||
|
msgstr "આજે"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: selection:crm.helpdesk.report,month:0
|
||||||
|
msgid "March"
|
||||||
|
msgstr "માર્ચ"
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
msgid "Helpdesk requests occurred in current year"
|
||||||
|
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
|
||||||
|
#: 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:0
|
||||||
|
msgid "Add Internal Note"
|
||||||
|
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
|
||||||
|
#: 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
|
||||||
|
#: 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.report:0
|
||||||
|
msgid "Helpdesk requests occurred in last month"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Send New Email"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Helpdesk requests during last 7 days"
|
||||||
|
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:0
|
||||||
|
#: 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
|
||||||
|
#: selection:crm.helpdesk,state:0
|
||||||
|
#: selection:crm.helpdesk.report,state:0
|
||||||
|
msgid "Pending"
|
||||||
|
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 "History Information"
|
||||||
|
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:101
|
||||||
|
#, python-format
|
||||||
|
msgid "No Subject"
|
||||||
|
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
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "References"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: selection:crm.helpdesk.report,month:0
|
||||||
|
msgid "September"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Communication"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
#: field:crm.helpdesk.report,month:0
|
||||||
|
msgid "Month"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Escalate"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: field:crm.helpdesk,write_date:0
|
||||||
|
msgid "Update Date"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
msgid "Helpdesk requests occurred in current month"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
msgid "Salesman"
|
||||||
|
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
|
||||||
|
msgid "Reply"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "7 Days"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Communication & History"
|
||||||
|
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 "Global CC"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: selection:crm.helpdesk.report,month:0
|
||||||
|
msgid "June"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: field:crm.helpdesk,planned_revenue:0
|
||||||
|
msgid "Planned Revenue"
|
||||||
|
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
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
msgid "Search"
|
||||||
|
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
|
||||||
|
#: help:crm.helpdesk,email_from:0
|
||||||
|
msgid "These people will receive email."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
#: field:crm.helpdesk,date:0
|
||||||
|
msgid "Date"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "History"
|
||||||
|
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,partner_address_id:0
|
||||||
|
msgid "Partner Contact"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Misc"
|
||||||
|
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 "State"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "General"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Send Reminder"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: help:crm.helpdesk,section_id:0
|
||||||
|
msgid ""
|
||||||
|
"Sales team to which Case belongs to. Define "
|
||||||
|
"Responsible user and Email account for mail gateway."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Done"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: selection:crm.helpdesk.report,month:0
|
||||||
|
msgid "December"
|
||||||
|
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
|
||||||
|
#: 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
|
||||||
|
#: help:crm.helpdesk,state:0
|
||||||
|
msgid ""
|
||||||
|
"The state is set to 'Draft', when a case is created. "
|
||||||
|
" \n"
|
||||||
|
"If the case is in progress the state is set to 'Open'. "
|
||||||
|
" \n"
|
||||||
|
"When the case is over, the state is set to 'Done'. "
|
||||||
|
" \n"
|
||||||
|
"If the case needs to be reviewed then the state is set to 'Pending'."
|
||||||
|
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
|
||||||
|
msgid "Month-1"
|
||||||
|
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
|
||||||
|
#: view:crm.helpdesk:0
|
||||||
|
msgid "Query"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: field:crm.helpdesk,id:0
|
||||||
|
msgid "ID"
|
||||||
|
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 "Todays's Helpdesk 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
|
||||||
|
#: model:ir.actions.act_window,help:crm_helpdesk.crm_case_helpdesk_act111
|
||||||
|
msgid ""
|
||||||
|
"Helpdesk and Support allow you to track your interventions. Select a "
|
||||||
|
"customer, add notes and categorize interventions with partners if necessary. "
|
||||||
|
"You can also assign a priority level. Use the OpenERP Issues system to "
|
||||||
|
"manage your support activities. Issues can be connected to the email "
|
||||||
|
"gateway: new emails may create issues, each of them automatically gets the "
|
||||||
|
"history of the conversation with the customer."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: view:crm.helpdesk.report:0
|
||||||
|
#: field:crm.helpdesk.report,name:0
|
||||||
|
msgid "Year"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: crm_helpdesk
|
||||||
|
#: field:crm.helpdesk,duration:0
|
||||||
|
msgid "Duration"
|
||||||
|
msgstr ""
|
|
@ -116,8 +116,6 @@
|
||||||
<field name="email_from"/>
|
<field name="email_from"/>
|
||||||
<field name="email_to"/>
|
<field name="email_to"/>
|
||||||
<field name="report_name"/>
|
<field name="report_name"/>
|
||||||
<button name="%(wizard_email_template_preview)d" string="Preview Template"
|
|
||||||
type="action" target="new" icon="gtk-zoom-fit"/>
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
|
@ -153,10 +153,6 @@
|
||||||
<field name="main_speaker_id" groups="base.extended"/>
|
<field name="main_speaker_id" groups="base.extended"/>
|
||||||
<field name="user_id"/>
|
<field name="user_id"/>
|
||||||
<field name="state"/>
|
<field name="state"/>
|
||||||
<button string="Confirm Event" help="Confirm Event" name="button_confirm" states="draft" type="object" icon="gtk-apply"/>
|
|
||||||
<button string="Event Done" help="Event Done" name="button_done" states="confirm" type="object" icon="gtk-jump-to"/>
|
|
||||||
<button string="Cancel Event" help="Cancel Event" name="button_cancel" states="draft,confirm" type="object" icon="gtk-cancel"/>
|
|
||||||
<button string="Set To Draft" help="Set To Draft" name="button_draft" states="cancel,done" type="object" icon="gtk-convert"/>
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
@ -346,10 +342,6 @@
|
||||||
<field name="user_id"/>
|
<field name="user_id"/>
|
||||||
<field name="origin"/>
|
<field name="origin"/>
|
||||||
<field name="state"/>
|
<field name="state"/>
|
||||||
<button name="button_reg_cancel" string="Cancel Registration" states="draft,open" type="object" icon="gtk-cancel"/>
|
|
||||||
<button name="registration_open" string="Confirm Registration" states="draft" type="object" icon="gtk-apply"/>
|
|
||||||
<button name="button_reg_close" string="Attended" states="open" type="object" icon="gtk-apply"/>
|
|
||||||
<button string="Set To Unconfirmed" name="do_draft" states="cancel,done" type="object" icon="gtk-convert"/>
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
|
@ -35,8 +35,6 @@
|
||||||
<field name="currency_id"/>
|
<field name="currency_id"/>
|
||||||
<field name="amount"/>
|
<field name="amount"/>
|
||||||
<field name="state"/>
|
<field name="state"/>
|
||||||
<button name="confirm" states="draft" string="Confirm" type="workflow" icon="gtk-apply"/>
|
|
||||||
<button name="refuse" states="confirm,draft,accepted" string="Refuse" type="workflow" icon="gtk-no" groups="base.group_hr_user"/>
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
|
@ -168,8 +168,6 @@
|
||||||
<field name="user_id" invisible="1"/>
|
<field name="user_id" invisible="1"/>
|
||||||
<!--field name="type"/-->
|
<!--field name="type"/-->
|
||||||
<field name="state"/>
|
<field name="state"/>
|
||||||
<button string="Approve" name="validate" states="confirm" type="workflow" icon="gtk-apply" groups="base.group_hr_user,base.group_hr_manager"/>
|
|
||||||
<button string="Validate" name="second_validate" states="validate1" type="workflow" icon="gtk-apply" groups="base.group_hr_user,base.group_hr_manager"/>
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
@ -225,9 +223,6 @@
|
||||||
<field name="manager_id" invisible="1"/>
|
<field name="manager_id" invisible="1"/>
|
||||||
<field name="user_id" invisible="1"/>
|
<field name="user_id" invisible="1"/>
|
||||||
<field name="state"/>
|
<field name="state"/>
|
||||||
<button string="Submit to Manager" name="confirm" states="draft" type="workflow" icon="gtk-yes"/>
|
|
||||||
<button string="Approve" name="validate" states="confirm" type="workflow" icon="gtk-apply" groups="base.group_hr_user"/>
|
|
||||||
<button string="Refuse" name="refuse" states="confirm" type="workflow" icon="gtk-no" groups="base.group_hr_user"/>
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
@ -253,8 +248,6 @@
|
||||||
<field name="manager_id" invisible="1"/>
|
<field name="manager_id" invisible="1"/>
|
||||||
<field name="user_id" invisible="1"/>
|
<field name="user_id" invisible="1"/>
|
||||||
<!--field name="type"/-->
|
<!--field name="type"/-->
|
||||||
<button string="Approve" name="validate" states="confirm" type="workflow" icon="gtk-apply" groups="base.group_hr_user"/>
|
|
||||||
<button string="Validate" name="second_validate" states="validate1" type="workflow" icon="gtk-apply" groups="base.group_hr_user"/>
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
|
@ -37,7 +37,14 @@ system to store and search in your CV base.
|
||||||
'author': 'OpenERP SA',
|
'author': 'OpenERP SA',
|
||||||
'website': 'http://www.openerp.com',
|
'website': 'http://www.openerp.com',
|
||||||
'images': ['images/hr_recruitment_analysis.jpeg','images/hr_recruitment_applicants.jpeg'],
|
'images': ['images/hr_recruitment_analysis.jpeg','images/hr_recruitment_applicants.jpeg'],
|
||||||
'depends': ['decimal_precision', 'hr', 'survey', 'crm', 'fetchmail'],
|
'depends': [
|
||||||
|
'base_status',
|
||||||
|
'decimal_precision',
|
||||||
|
'hr',
|
||||||
|
'survey',
|
||||||
|
'crm',
|
||||||
|
'fetchmail',
|
||||||
|
],
|
||||||
'update_xml': [
|
'update_xml': [
|
||||||
'wizard/hr_recruitment_phonecall_view.xml',
|
'wizard/hr_recruitment_phonecall_view.xml',
|
||||||
'wizard/hr_recruitment_employee_hired.xml',
|
'wizard/hr_recruitment_employee_hired.xml',
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
<field name="job_id"/>
|
<field name="job_id"/>
|
||||||
<field name="partner_name"/>
|
<field name="partner_name"/>
|
||||||
<field name="stage_id"/>
|
<field name="stage_id"/>
|
||||||
<field name="state"/>
|
<field name="state" groups="base.group_no_one"/>
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
|
from base_status.base_stage import base_stage
|
||||||
import time
|
import time
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
|
|
||||||
|
@ -57,8 +58,6 @@ class hr_recruitment_source(osv.osv):
|
||||||
_columns = {
|
_columns = {
|
||||||
'name': fields.char('Source Name', size=64, required=True, translate=True),
|
'name': fields.char('Source Name', size=64, required=True, translate=True),
|
||||||
}
|
}
|
||||||
hr_recruitment_source()
|
|
||||||
|
|
||||||
|
|
||||||
class hr_recruitment_stage(osv.osv):
|
class hr_recruitment_stage(osv.osv):
|
||||||
""" Stage of HR Recruitment """
|
""" Stage of HR Recruitment """
|
||||||
|
@ -69,12 +68,15 @@ class hr_recruitment_stage(osv.osv):
|
||||||
'name': fields.char('Name', size=64, required=True, translate=True),
|
'name': fields.char('Name', size=64, required=True, translate=True),
|
||||||
'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of stages."),
|
'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of stages."),
|
||||||
'department_id':fields.many2one('hr.department', 'Specific to a Department', help="Stages of the recruitment process may be different per department. If this stage is common to all departments, keep tempy this field."),
|
'department_id':fields.many2one('hr.department', 'Specific to a Department', help="Stages of the recruitment process may be different per department. If this stage is common to all departments, keep tempy this field."),
|
||||||
'requirements': fields.text('Requirements')
|
'state': fields.selection(AVAILABLE_STATES, 'State', required=True, help="The related state for the stage. The state of your document will automatically change regarding the selected stage. Example, a stage is related to the state 'Close', when your document reach this stage, it will be automatically closed."),
|
||||||
|
'fold': fields.boolean('Hide in views if empty', help="This stage is not visible, for example in status bar or kanban view, when there are no records in that stage to display."),
|
||||||
|
'requirements': fields.text('Requirements'),
|
||||||
}
|
}
|
||||||
_defaults = {
|
_defaults = {
|
||||||
'sequence': 1,
|
'sequence': 1,
|
||||||
|
'state': 'draft',
|
||||||
|
'fold': False,
|
||||||
}
|
}
|
||||||
hr_recruitment_stage()
|
|
||||||
|
|
||||||
class hr_recruitment_degree(osv.osv):
|
class hr_recruitment_degree(osv.osv):
|
||||||
""" Degree of HR Recruitment """
|
""" Degree of HR Recruitment """
|
||||||
|
@ -90,14 +92,60 @@ class hr_recruitment_degree(osv.osv):
|
||||||
_sql_constraints = [
|
_sql_constraints = [
|
||||||
('name_uniq', 'unique (name)', 'The name of the Degree of Recruitment must be unique!')
|
('name_uniq', 'unique (name)', 'The name of the Degree of Recruitment must be unique!')
|
||||||
]
|
]
|
||||||
hr_recruitment_degree()
|
|
||||||
|
|
||||||
class hr_applicant(crm.crm_case, osv.osv):
|
class hr_applicant(base_stage, osv.Model):
|
||||||
_name = "hr.applicant"
|
_name = "hr.applicant"
|
||||||
_description = "Applicant"
|
_description = "Applicant"
|
||||||
_order = "id desc"
|
_order = "id desc"
|
||||||
_inherit = ['ir.needaction_mixin', 'mail.thread']
|
_inherit = ['ir.needaction_mixin', 'mail.thread']
|
||||||
|
|
||||||
|
def _get_default_department_id(self, cr, uid, context=None):
|
||||||
|
""" Gives default department by checking if present in the context """
|
||||||
|
return (self._resolve_department_id_from_context(cr, uid, context=context) or False)
|
||||||
|
|
||||||
|
def _get_default_stage_id(self, cr, uid, context=None):
|
||||||
|
""" Gives default stage_id """
|
||||||
|
department_id = self._get_default_department_id(cr, uid, context=context)
|
||||||
|
return self.stage_find(cr, uid, [], department_id, [('state', '=', 'draft')], context=context)
|
||||||
|
|
||||||
|
def _resolve_department_id_from_context(self, cr, uid, context=None):
|
||||||
|
""" Returns ID of department based on the value of 'default_department_id'
|
||||||
|
context key, or None if it cannot be resolved to a single
|
||||||
|
department.
|
||||||
|
"""
|
||||||
|
if context is None:
|
||||||
|
context = {}
|
||||||
|
if type(context.get('default_department_id')) in (int, long):
|
||||||
|
return context.get('default_department_id')
|
||||||
|
if isinstance(context.get('default_department_id'), basestring):
|
||||||
|
department_name = context['default_department_id']
|
||||||
|
department_ids = self.pool.get('hr.department').name_search(cr, uid, name=department_name, context=context)
|
||||||
|
if len(department_ids) == 1:
|
||||||
|
return int(department_ids[0][0])
|
||||||
|
return None
|
||||||
|
|
||||||
|
def _read_group_stage_ids(self, cr, uid, ids, domain, read_group_order=None, access_rights_uid=None, context=None):
|
||||||
|
access_rights_uid = access_rights_uid or uid
|
||||||
|
stage_obj = self.pool.get('hr.recruitment.stage')
|
||||||
|
order = stage_obj._order
|
||||||
|
# lame hack to allow reverting search, should just work in the trivial case
|
||||||
|
if read_group_order == 'stage_id desc':
|
||||||
|
order = "%s desc" % order
|
||||||
|
# retrieve section_id from the context and write the domain
|
||||||
|
# - ('id', 'in', 'ids'): add columns that should be present
|
||||||
|
# - OR ('department_id', '=', False), ('fold', '=', False): add default columns that are not folded
|
||||||
|
# - OR ('department_id', 'in', department_id), ('fold', '=', False) if department_id: add department columns that are not folded
|
||||||
|
department_id = self._resolve_department_id_from_context(cr, uid, context=context)
|
||||||
|
search_domain = []
|
||||||
|
if department_id:
|
||||||
|
search_domain += ['|', '&', ('department_id', '=', department_id), ('fold', '=', False)]
|
||||||
|
search_domain += ['|', ('id', 'in', ids), '&', ('department_id', '=', False), ('fold', '=', False)]
|
||||||
|
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
|
||||||
|
result.sort(lambda x,y: cmp(stage_ids.index(x[0]), stage_ids.index(y[0])))
|
||||||
|
return result
|
||||||
|
|
||||||
def _compute_day(self, cr, uid, ids, fields, args, context=None):
|
def _compute_day(self, cr, uid, ids, fields, args, context=None):
|
||||||
"""
|
"""
|
||||||
@param cr: the current row, from the database cursor,
|
@param cr: the current row, from the database cursor,
|
||||||
|
@ -143,12 +191,15 @@ class hr_applicant(crm.crm_case, osv.osv):
|
||||||
'partner_id': fields.many2one('res.partner', 'Partner'),
|
'partner_id': fields.many2one('res.partner', 'Partner'),
|
||||||
'create_date': fields.datetime('Creation Date', readonly=True, select=True),
|
'create_date': fields.datetime('Creation Date', readonly=True, select=True),
|
||||||
'write_date': fields.datetime('Update Date', readonly=True),
|
'write_date': fields.datetime('Update Date', readonly=True),
|
||||||
'stage_id': fields.many2one ('hr.recruitment.stage', 'Stage'),
|
'stage_id': fields.many2one ('hr.recruitment.stage', 'Stage',
|
||||||
'state': fields.selection(AVAILABLE_STATES, 'Status', size=16, readonly=True,
|
domain="['|', ('department_id', '=', department_id), ('department_id', '=', False)]"),
|
||||||
help='The state is set to \'Draft\', when a case is created.\
|
'state': fields.related('stage_id', 'state', type="selection", store=True,
|
||||||
\nIf the case is in progress the state is set to \'Open\'.\
|
selection=AVAILABLE_STATES, string="State", readonly=True,
|
||||||
\nWhen the case is over, the state is set to \'Done\'.\
|
help='The state is set to \'Draft\', when a case is created.\
|
||||||
\nIf the case needs to be reviewed then the state is set to \'Pending\'.'),
|
If the case is in progress the state is set to \'Open\'.\
|
||||||
|
When the case is over, the state is set to \'Done\'.\
|
||||||
|
If the case needs to be reviewed then the state is \
|
||||||
|
set to \'Pending\'.'),
|
||||||
'company_id': fields.many2one('res.company', 'Company'),
|
'company_id': fields.many2one('res.company', 'Company'),
|
||||||
'user_id': fields.many2one('res.users', 'Responsible'),
|
'user_id': fields.many2one('res.users', 'Responsible'),
|
||||||
# Applicant Columns
|
# Applicant Columns
|
||||||
|
@ -169,7 +220,6 @@ class hr_applicant(crm.crm_case, osv.osv):
|
||||||
'partner_mobile': fields.char('Mobile', size=32),
|
'partner_mobile': fields.char('Mobile', size=32),
|
||||||
'type_id': fields.many2one('hr.recruitment.degree', 'Degree'),
|
'type_id': fields.many2one('hr.recruitment.degree', 'Degree'),
|
||||||
'department_id': fields.many2one('hr.department', 'Department'),
|
'department_id': fields.many2one('hr.department', 'Department'),
|
||||||
'state': fields.selection(AVAILABLE_STATES, 'Status', size=16, readonly=True),
|
|
||||||
'survey': fields.related('job_id', 'survey_id', type='many2one', relation='survey', string='Survey'),
|
'survey': fields.related('job_id', 'survey_id', type='many2one', relation='survey', string='Survey'),
|
||||||
'response': fields.integer("Response"),
|
'response': fields.integer("Response"),
|
||||||
'reference': fields.char('Refered By', size=128),
|
'reference': fields.char('Refered By', size=128),
|
||||||
|
@ -185,33 +235,19 @@ class hr_applicant(crm.crm_case, osv.osv):
|
||||||
|
|
||||||
_defaults = {
|
_defaults = {
|
||||||
'active': lambda *a: 1,
|
'active': lambda *a: 1,
|
||||||
'user_id': lambda self, cr, uid, context: uid,
|
'user_id': lambda s, cr, uid, c: uid,
|
||||||
'email_from': crm.crm_case. _get_default_email,
|
'email_from': lambda s, cr, uid, c: s._get_default_email(cr, uid, c),
|
||||||
'state': lambda *a: 'draft',
|
'stage_id': lambda s, cr, uid, c: s._get_default_stage_id(cr, uid, c),
|
||||||
|
'department_id': lambda s, cr, uid, c: s._get_default_department_id(cr, uid, c),
|
||||||
'priority': lambda *a: '',
|
'priority': lambda *a: '',
|
||||||
'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.helpdesk', context=c),
|
'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.helpdesk', context=c),
|
||||||
'color': 0,
|
'color': 0,
|
||||||
}
|
}
|
||||||
|
|
||||||
def _read_group_stage_ids(self, cr, uid, ids, domain, read_group_order=None, access_rights_uid=None, context=None):
|
|
||||||
access_rights_uid = access_rights_uid or uid
|
|
||||||
stage_obj = self.pool.get('hr.recruitment.stage')
|
|
||||||
order = stage_obj._order
|
|
||||||
if read_group_order == 'stage_id desc':
|
|
||||||
# lame hack to allow reverting search, should just work in the trivial case
|
|
||||||
order = "%s desc" % order
|
|
||||||
stage_ids = stage_obj._search(cr, uid, ['|',('id','in',ids),('department_id','=',False)], 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
|
|
||||||
result.sort(lambda x,y: cmp(stage_ids.index(x[0]), stage_ids.index(y[0])))
|
|
||||||
return result
|
|
||||||
|
|
||||||
_group_by_full = {
|
_group_by_full = {
|
||||||
'stage_id': _read_group_stage_ids
|
'stage_id': _read_group_stage_ids
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def onchange_job(self,cr, uid, ids, job, context=None):
|
def onchange_job(self,cr, uid, ids, job, context=None):
|
||||||
result = {}
|
result = {}
|
||||||
|
|
||||||
|
@ -229,47 +265,33 @@ class hr_applicant(crm.crm_case, osv.osv):
|
||||||
stage_id = stage_ids and stage_ids[0] or False
|
stage_id = stage_ids and stage_ids[0] or False
|
||||||
return {'value': {'stage_id': stage_id}}
|
return {'value': {'stage_id': stage_id}}
|
||||||
|
|
||||||
def stage_previous(self, cr, uid, ids, context=None):
|
def stage_find(self, cr, uid, cases, section_id, domain=[], order='sequence', context=None):
|
||||||
"""This function computes previous stage for case from its current stage
|
""" Override of the base.stage method
|
||||||
using available stage for that case type
|
Parameter of the stage search taken from the lead:
|
||||||
@param self: The object pointer
|
- department_id: if set, stages must belong to this section or
|
||||||
@param cr: the current row, from the database cursor,
|
be a default case
|
||||||
@param uid: the current user’s ID for security checks,
|
"""
|
||||||
@param ids: List of case IDs
|
if isinstance(cases, (int, long)):
|
||||||
@param context: A standard dictionary for contextual values"""
|
cases = self.browse(cr, uid, cases, context=context)
|
||||||
stage_obj = self.pool.get('hr.recruitment.stage')
|
# collect all section_ids
|
||||||
for case in self.browse(cr, uid, ids, context=context):
|
department_ids = []
|
||||||
department = (case.department_id.id or False)
|
if section_id:
|
||||||
st = case.stage_id.id or False
|
department_ids.append(section_id)
|
||||||
stage_ids = stage_obj.search(cr, uid, ['|',('department_id','=',department),('department_id','=',False)], context=context)
|
for case in cases:
|
||||||
if st and stage_ids.index(st):
|
if case.department_id:
|
||||||
self.write(cr, uid, [case.id], {'stage_id': stage_ids[stage_ids.index(st)-1]}, context=context)
|
department_ids.append(case.department_id.id)
|
||||||
else:
|
# OR all section_ids and OR with case_default
|
||||||
self.write(cr, uid, [case.id], {'stage_id': False}, context=context)
|
search_domain = []
|
||||||
return True
|
if department_ids:
|
||||||
|
search_domain += ['|', ('department_id', 'in', department_ids)]
|
||||||
def stage_next(self, cr, uid, ids, context=None):
|
search_domain.append(('department_id', '=', False))
|
||||||
"""This function computes next stage for case from its current stage
|
# AND with the domain in parameter
|
||||||
using available stage for that case type
|
search_domain += list(domain)
|
||||||
@param self: The object pointer
|
# perform search, return the first found
|
||||||
@param cr: the current row, from the database cursor,
|
stage_ids = self.pool.get('hr.recruitment.stage').search(cr, uid, search_domain, order=order, context=context)
|
||||||
@param uid: the current user’s ID for security checks,
|
if stage_ids:
|
||||||
@param ids: List of case IDs
|
return stage_ids[0]
|
||||||
@param context: A standard dictionary for contextual values"""
|
return False
|
||||||
stage_obj = self.pool.get('hr.recruitment.stage')
|
|
||||||
for case in self.browse(cr, uid, ids, context=context):
|
|
||||||
department = (case.department_id.id or False)
|
|
||||||
st = case.stage_id.id or False
|
|
||||||
stage_ids = stage_obj.search(cr, uid, ['|',('department_id','=',department),('department_id','=',False)], context=context)
|
|
||||||
val = False
|
|
||||||
if st and len(stage_ids) != stage_ids.index(st)+1:
|
|
||||||
val = stage_ids[stage_ids.index(st)+1]
|
|
||||||
elif (not st) and stage_ids:
|
|
||||||
val = stage_ids[0]
|
|
||||||
else:
|
|
||||||
val = False
|
|
||||||
self.write(cr, uid, [case.id], {'stage_id': val}, context=context)
|
|
||||||
return True
|
|
||||||
|
|
||||||
def action_makeMeeting(self, cr, uid, ids, context=None):
|
def action_makeMeeting(self, cr, uid, ids, context=None):
|
||||||
"""
|
"""
|
||||||
|
@ -474,12 +496,6 @@ class hr_applicant(crm.crm_case, osv.osv):
|
||||||
"""
|
"""
|
||||||
return self.set_priority(cr, uid, ids, '3')
|
return self.set_priority(cr, uid, ids, '3')
|
||||||
|
|
||||||
def write(self, cr, uid, ids, vals, context=None):
|
|
||||||
if 'stage_id' in vals and vals['stage_id']:
|
|
||||||
stage = self.pool.get('hr.recruitment.stage').browse(cr, uid, vals['stage_id'], context=context)
|
|
||||||
self.message_append_note(cr, uid, ids, body=_("Stage changed to <b>%s</b>.") % stage.name, context=context)
|
|
||||||
return super(hr_applicant,self).write(cr, uid, ids, vals, context=context)
|
|
||||||
|
|
||||||
# -------------------------------------------------------
|
# -------------------------------------------------------
|
||||||
# OpenChatter methods and notifications
|
# OpenChatter methods and notifications
|
||||||
# -------------------------------------------------------
|
# -------------------------------------------------------
|
||||||
|
@ -497,7 +513,13 @@ class hr_applicant(crm.crm_case, osv.osv):
|
||||||
if obj.state == 'draft' and obj.user_id:
|
if obj.state == 'draft' and obj.user_id:
|
||||||
result[obj.id] = [obj.user_id.id]
|
result[obj.id] = [obj.user_id.id]
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
def stage_set_send_note(self, cr, uid, ids, stage_id, context=None):
|
||||||
|
""" Override of the (void) default notification method. """
|
||||||
|
if not stage_id: return True
|
||||||
|
stage_name = self.pool.get('hr.recruitment.stage').name_get(cr, uid, [stage_id], context=context)[0][1]
|
||||||
|
return self.message_append_note(cr, uid, ids, body= _("Stage changed to <b>%s</b>.") % (stage_name), context=context)
|
||||||
|
|
||||||
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
|
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
|
||||||
return 'Applicant'
|
return 'Applicant'
|
||||||
|
|
||||||
|
@ -529,7 +551,6 @@ class hr_applicant(crm.crm_case, osv.osv):
|
||||||
message = _("Applicant has been <b>created</b>.")
|
message = _("Applicant has been <b>created</b>.")
|
||||||
return self.message_append_note(cr, uid, ids, body=message, context=context)
|
return self.message_append_note(cr, uid, ids, body=message, context=context)
|
||||||
|
|
||||||
hr_applicant()
|
|
||||||
|
|
||||||
class hr_job(osv.osv):
|
class hr_job(osv.osv):
|
||||||
_inherit = "hr.job"
|
_inherit = "hr.job"
|
||||||
|
@ -537,6 +558,6 @@ class hr_job(osv.osv):
|
||||||
_columns = {
|
_columns = {
|
||||||
'survey_id': fields.many2one('survey', 'Interview Form', help="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"),
|
'survey_id': fields.many2one('survey', 'Interview Form', help="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"),
|
||||||
}
|
}
|
||||||
hr_job()
|
|
||||||
|
|
||||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<openerp>
|
<openerp>
|
||||||
|
<!--
|
||||||
<data noupdate="1">
|
<data noupdate="1">
|
||||||
|
-->
|
||||||
|
<data>
|
||||||
|
|
||||||
<!-- HR Recruitment Source -->
|
<!-- HR Recruitment Source -->
|
||||||
|
|
||||||
|
@ -37,30 +39,36 @@
|
||||||
<field name="name">Doctoral Degree</field>
|
<field name="name">Doctoral Degree</field>
|
||||||
<field name="sequence">4</field>
|
<field name="sequence">4</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record model="hr.recruitment.stage" id="stage_job1">
|
<record model="hr.recruitment.stage" id="stage_job1">
|
||||||
<field name="name">Initial Qualification</field>
|
<field name="name">Initial Qualification</field>
|
||||||
|
<field name="state">draft</field>
|
||||||
<field name="sequence">1</field>
|
<field name="sequence">1</field>
|
||||||
</record>
|
</record>
|
||||||
<record model="hr.recruitment.stage" id="stage_job2">
|
<record model="hr.recruitment.stage" id="stage_job2">
|
||||||
<field name="name">First Interview</field>
|
<field name="name">First Interview</field>
|
||||||
|
<field name="state">open</field>
|
||||||
<field name="sequence">2</field>
|
<field name="sequence">2</field>
|
||||||
</record>
|
</record>
|
||||||
<record model="hr.recruitment.stage" id="stage_job3">
|
<record model="hr.recruitment.stage" id="stage_job3">
|
||||||
<field name="name">Second Interview</field>
|
<field name="name">Second Interview</field>
|
||||||
|
<field name="state">open</field>
|
||||||
<field name="sequence">3</field>
|
<field name="sequence">3</field>
|
||||||
</record>
|
</record>
|
||||||
<record model="hr.recruitment.stage" id="stage_job4">
|
<record model="hr.recruitment.stage" id="stage_job4">
|
||||||
<field name="name">Contract Proposed</field>
|
<field name="name">Contract Proposed</field>
|
||||||
|
<field name="state">pending</field>
|
||||||
<field name="sequence">4</field>
|
<field name="sequence">4</field>
|
||||||
</record>
|
</record>
|
||||||
<record model="hr.recruitment.stage" id="stage_job5">
|
<record model="hr.recruitment.stage" id="stage_job5">
|
||||||
<field name="name">Contract Signed</field>
|
<field name="name">Contract Signed</field>
|
||||||
|
<field name="state">done</field>
|
||||||
<field name="sequence">5</field>
|
<field name="sequence">5</field>
|
||||||
</record>
|
</record>
|
||||||
<record model="hr.recruitment.stage" id="stage_job6">
|
<record model="hr.recruitment.stage" id="stage_job6">
|
||||||
<field name="name">Refused</field>
|
<field name="name">Refused</field>
|
||||||
|
<field name="state">cancel</field>
|
||||||
<field name="sequence">6</field>
|
<field name="sequence">6</field>
|
||||||
|
<field name="fold" eval="True"/>
|
||||||
</record>
|
</record>
|
||||||
<record id="survey_job_0" model="survey">
|
<record id="survey_job_0" model="survey">
|
||||||
<field name="title">Job Survey</field>
|
<field name="title">Job Survey</field>
|
||||||
|
|
|
@ -50,8 +50,6 @@
|
||||||
<field name="partner_phone"/>
|
<field name="partner_phone"/>
|
||||||
<field name="job_id"/>
|
<field name="job_id"/>
|
||||||
<field name="stage_id"/>
|
<field name="stage_id"/>
|
||||||
<button name="stage_previous" string="Previous" states="open,pending" type="object" icon="gtk-go-back"/>
|
|
||||||
<button name="stage_next" string="Next" states="open,pending" type="object" icon="gtk-go-forward"/>
|
|
||||||
<field name="title_action" invisible="context.get('invisible_next_action', True)"/>
|
<field name="title_action" invisible="context.get('invisible_next_action', True)"/>
|
||||||
<field name="date_action" invisible="context.get('invisible_next_date', True)"/>
|
<field name="date_action" invisible="context.get('invisible_next_date', True)"/>
|
||||||
<field name="source_id" invisible="1"/>
|
<field name="source_id" invisible="1"/>
|
||||||
|
@ -62,9 +60,7 @@
|
||||||
<field name="availability" invisible="1"/>
|
<field name="availability" invisible="1"/>
|
||||||
<field name="department_id" invisible="context.get('invisible_department', True)"/>
|
<field name="department_id" invisible="context.get('invisible_department', True)"/>
|
||||||
<field name="user_id"/>
|
<field name="user_id"/>
|
||||||
<field name="state"/>
|
<field name="state" groups="base.group_no_one"/>
|
||||||
<button name="case_open" string="In Progress" states="draft,pending" type="object" icon="gtk-go-forward"/>
|
|
||||||
<button name="case_pending" string="Pending" states="open" type="object" icon="gtk-media-pause"/>
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
@ -76,14 +72,24 @@
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<form layout="manual">
|
<form layout="manual">
|
||||||
<div class="oe_form_topbar">
|
<div class="oe_form_topbar">
|
||||||
<button name="%(action_hr_recruitment_hired_employee)d" string="Hire" states="open,pending" type="action"/>
|
<button name="%(action_hr_recruitment_hired_employee)d" string="Hire" type="action"
|
||||||
<button name="case_open" string="In Progress" states="draft,pending" type="object"/>
|
states="open,pending"/>
|
||||||
<button name="case_pending" string="Pending" states="open" type="object"/>
|
<button name="case_open" string="Open" type="object"
|
||||||
<button name="case_reset" string="Reset to New" states="done,cancel" type="object"/>
|
states="draft,pending"/>
|
||||||
<button name="case_cancel" string="Refuse" states="draft,open,pending" type="object"/>
|
<button name="case_pending" string="Pending" type="object"
|
||||||
|
states="open"/>
|
||||||
|
<button name="case_reset" string="Reset to New" type="object"
|
||||||
|
states="done,cancel"/>
|
||||||
|
<button name="case_cancel" string="Refuse" type="object"
|
||||||
|
states="draft,open,pending"/>
|
||||||
|
<button name="stage_previous" string="Previous" type="object"
|
||||||
|
states="open" icon="gtk-go-back"/>
|
||||||
|
<button name="stage_next" string="Next" type="object"
|
||||||
|
states="open" icon="gtk-go-forward"/>
|
||||||
<div class="oe_right">
|
<div class="oe_right">
|
||||||
<field name="state" nolabel="1" widget="statusbar" statusbar_visible="draft,open,done" statusbar_colors='{"pending":"blue"}'/>
|
<field name="stage_id" nolabel="1" widget="statusbar"/>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="oe_clear"/>
|
||||||
</div>
|
</div>
|
||||||
<sheet string="Jobs - Recruitment Form" layout="auto">
|
<sheet string="Jobs - Recruitment Form" layout="auto">
|
||||||
<group colspan="4" col="4">
|
<group colspan="4" col="4">
|
||||||
|
@ -96,11 +102,7 @@
|
||||||
<field name="user_id"/>
|
<field name="user_id"/>
|
||||||
<field name="job_id" on_change="onchange_job(job_id)"/>
|
<field name="job_id" on_change="onchange_job(job_id)"/>
|
||||||
<field name="department_id" widget="selection" on_change="onchange_department_id(department_id)"/>
|
<field name="department_id" widget="selection" on_change="onchange_department_id(department_id)"/>
|
||||||
<group colspan="2" col="4">
|
<field name="state" groups="base.group_no_one"/>
|
||||||
<field name="stage_id" domain="['|',('department_id','=',department_id),('department_id','=',False)]"/>
|
|
||||||
<button name="stage_previous" string="" type="object" icon="gtk-go-back"/>
|
|
||||||
<button icon="gtk-go-forward" string="" name="stage_next" type="object"/>
|
|
||||||
</group>
|
|
||||||
<field name="date_action"/>
|
<field name="date_action"/>
|
||||||
<group colspan="2" col="8">
|
<group colspan="2" col="8">
|
||||||
<field name="title_action"/>
|
<field name="title_action"/>
|
||||||
|
@ -139,6 +141,13 @@
|
||||||
<field name="source_id"/>
|
<field name="source_id"/>
|
||||||
<field name="reference"/>
|
<field name="reference"/>
|
||||||
</group>
|
</group>
|
||||||
|
<group col="2" colspan="2">
|
||||||
|
<separator colspan="2" string="Dates"/>
|
||||||
|
<field name="create_date"/>
|
||||||
|
<field name="write_date"/>
|
||||||
|
<field name="date_closed"/>
|
||||||
|
<field name="date_open"/>
|
||||||
|
</group>
|
||||||
</page>
|
</page>
|
||||||
<page string="Notes">
|
<page string="Notes">
|
||||||
<field name="description" nolabel="1" colspan="4"/>
|
<field name="description" nolabel="1" colspan="4"/>
|
||||||
|
@ -241,7 +250,7 @@
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<kanban default_group_by="stage_id">
|
<kanban default_group_by="stage_id">
|
||||||
<field name="color"/>
|
<field name="color"/>
|
||||||
<field name="state"/>
|
<field name="state" groups="base.group_no_one"/>
|
||||||
<field name="priority"/>
|
<field name="priority"/>
|
||||||
<field name="survey"/>
|
<field name="survey"/>
|
||||||
<field name="user_id"/>
|
<field name="user_id"/>
|
||||||
|
@ -360,6 +369,7 @@
|
||||||
<field name="sequence" invisible="1"/>
|
<field name="sequence" invisible="1"/>
|
||||||
<field name="name"/>
|
<field name="name"/>
|
||||||
<field name="department_id"/>
|
<field name="department_id"/>
|
||||||
|
<field name="state"/>
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
@ -377,6 +387,7 @@
|
||||||
<field name="name" select="1"/>
|
<field name="name" select="1"/>
|
||||||
<field name="department_id"/>
|
<field name="department_id"/>
|
||||||
<field name="sequence"/>
|
<field name="sequence"/>
|
||||||
|
<field name="state"/>
|
||||||
</group>
|
</group>
|
||||||
<separator string="Requirements" colspan="4"/>
|
<separator string="Requirements" colspan="4"/>
|
||||||
<field name="requirements" nolabel="1" colspan="4"/>
|
<field name="requirements" nolabel="1" colspan="4"/>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
-
|
-
|
||||||
In Order to test process of Recruitment,
|
In Order to test process of Recruitment,
|
||||||
-
|
-
|
||||||
Applicant interested in job position. so He send resume by email.
|
An applicant is interested in the job position. So he sends a resume by email.
|
||||||
-
|
-
|
||||||
!python {model: mail.thread}: |
|
!python {model: mail.thread}: |
|
||||||
import addons
|
import addons
|
||||||
|
@ -9,27 +9,42 @@
|
||||||
request_message = request_file.read()
|
request_message = request_file.read()
|
||||||
self.message_process(cr, uid, 'hr.applicant', request_message)
|
self.message_process(cr, uid, 'hr.applicant', request_message)
|
||||||
-
|
-
|
||||||
After getting the mail, I check details of new applicant.
|
After getting the mail, I check the details of the new applicant.
|
||||||
-
|
-
|
||||||
!python {model: hr.applicant}: |
|
!python {model: hr.applicant}: |
|
||||||
applicant_ids = self.search(cr, uid, [('email_from','=', 'Mr. Richard Anderson <Richard_Anderson@yahoo.com>')])
|
applicant_ids = self.search(cr, uid, [('email_from','=', 'Mr. Richard Anderson <Richard_Anderson@yahoo.com>')])
|
||||||
assert applicant_ids, "Applicant is not created after getting the mail"
|
assert applicant_ids, "Applicant is not created after getting the mail"
|
||||||
applicant = self.browse(cr, uid, applicant_ids[0], context=context)
|
applicant = self.browse(cr, uid, applicant_ids[0], context=context)
|
||||||
resume_ids = self.pool.get('ir.attachment').search(cr, uid, [('datas_fname','=','resume.doc'),('res_model','=',self._name),('res_id','=',applicant.id)])
|
resume_ids = self.pool.get('ir.attachment').search(cr, uid, [('datas_fname','=','resume.doc'),('res_model','=',self._name),('res_id','=',applicant.id)])
|
||||||
assert applicant.name == "Application for the post of Jr.application Programmer.", "Subject does not match"
|
assert applicant.name == "Application for the post of Jr.application Programmer.", "Applicant name does not match."
|
||||||
assert applicant.state == "draft"
|
assert applicant.stage_id.id == ref('hr_recruitment.stage_job1'), "Stage should be 'Initial qualification' and is '%s'." % (applicant.stage_id.name)
|
||||||
assert len(resume_ids), "Resume does not attached."
|
assert applicant.state == "draft", "Applicant state should be 'draft'."
|
||||||
|
assert len(resume_ids), "Resume is not attached."
|
||||||
-
|
-
|
||||||
I refuse applicant for the Recruitment.
|
I refuse the applicant (hr_case_programmer)
|
||||||
-
|
-
|
||||||
!python {model: hr.applicant}: |
|
!python {model: hr.applicant}: |
|
||||||
self.case_close(cr, uid, [ref("hr_case_programmer")])
|
self.case_cancel(cr, uid, [ref("hr_case_programmer")])
|
||||||
-
|
-
|
||||||
I open applicant for the Recruitment.
|
I check the details of the refused applicant.
|
||||||
|
-
|
||||||
|
!python {model: hr.applicant}: |
|
||||||
|
applicant = self.browse(cr, uid, ref("hr_case_programmer"), context=context)
|
||||||
|
assert applicant.stage_id.id == ref('hr_recruitment.stage_job6'), "Stage should be 'Refused' and is %s." % (applicant.stage_id.name)
|
||||||
|
assert applicant.state == 'cancel', "Applicant is not in 'cancel' state."
|
||||||
|
-
|
||||||
|
I reset and re-open the previously refused applicant.
|
||||||
-
|
-
|
||||||
!python {model: hr.applicant}: |
|
!python {model: hr.applicant}: |
|
||||||
self.case_reset(cr, uid, [ref("hr_case_programmer")])
|
self.case_reset(cr, uid, [ref("hr_case_programmer")])
|
||||||
self.case_open(cr, uid, [ref("hr_case_programmer")])
|
self.case_open(cr, uid, [ref("hr_case_programmer")])
|
||||||
|
-
|
||||||
|
I check the details of the re-opened applicant.
|
||||||
|
-
|
||||||
|
!python {model: hr.applicant}: |
|
||||||
|
applicant = self.browse(cr, uid, ref("hr_case_programmer"), context=context)
|
||||||
|
assert applicant.stage_id.id == ref('hr_recruitment.stage_job2'), "Stage should be 'First interview' and is '%s'." % (applicant.stage_id.name)
|
||||||
|
assert applicant.state == "open", "Applicant state should be 'open'."
|
||||||
-
|
-
|
||||||
I assign the Job position to the applicant
|
I assign the Job position to the applicant
|
||||||
-
|
-
|
||||||
|
@ -91,7 +106,7 @@
|
||||||
-
|
-
|
||||||
I check that applicant is "Hired".
|
I check that applicant is "Hired".
|
||||||
-
|
-
|
||||||
!assert {model: hr.applicant, id: hr_case_programmer}:
|
!assert {model: hr.applicant, id: hr_case_programmer, string: Applicant state is done}:
|
||||||
- state == 'done'
|
- state == 'done'
|
||||||
-
|
-
|
||||||
I do not give employment to the hired the applicant.
|
I do not give employment to the hired the applicant.
|
||||||
|
|
|
@ -0,0 +1,710 @@
|
||||||
|
# Gujarati translation for openobject-addons
|
||||||
|
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||||
|
# This file is distributed under the same license as the openobject-addons package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openobject-addons\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||||
|
"PO-Revision-Date: 2012-06-01 05:11+0000\n"
|
||||||
|
"Last-Translator: Jalpesh Patel(OpenERP) <pja@tinyerp.com>\n"
|
||||||
|
"Language-Team: Gujarati <gu@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-06-01 05:33+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 15342)\n"
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: help:idea.category,visibility:0
|
||||||
|
msgid "If True creator of the idea will be visible to others"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.idea:0
|
||||||
|
msgid "By States"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: model:ir.actions.act_window,name:idea.action_idea_select
|
||||||
|
msgid "Idea select"
|
||||||
|
msgstr "વિચાર પસંદ કરો"
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.idea:0
|
||||||
|
#: view:idea.vote:0
|
||||||
|
#: model:ir.ui.menu,name:idea.menu_idea_vote
|
||||||
|
msgid "Votes"
|
||||||
|
msgstr "મત"
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.idea:0
|
||||||
|
#: field:idea.idea,comment_ids:0
|
||||||
|
msgid "Comments"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.idea:0
|
||||||
|
msgid "Submit Vote"
|
||||||
|
msgstr "મત જમા કરો"
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: model:ir.actions.act_window,name:idea.action_report_vote_all
|
||||||
|
#: model:ir.ui.menu,name:idea.menu_report_vote_all
|
||||||
|
msgid "Ideas Analysis"
|
||||||
|
msgstr "વિચારો નું પૃથક્કરણ"
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.category:0
|
||||||
|
#: view:idea.idea:0
|
||||||
|
#: view:idea.vote:0
|
||||||
|
#: view:report.vote:0
|
||||||
|
msgid "Group By..."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: selection:report.vote,month:0
|
||||||
|
msgid "March"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.idea:0
|
||||||
|
msgid "Accepted Ideas"
|
||||||
|
msgstr "સ્વીકૃત વિચારો"
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: code:addons/idea/wizard/idea_post_vote.py:94
|
||||||
|
#, python-format
|
||||||
|
msgid "Idea must be in 'Open' state before vote for that idea."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:report.vote:0
|
||||||
|
msgid "Open Date"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:report.vote:0
|
||||||
|
#: field:report.vote,day:0
|
||||||
|
msgid "Day"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.idea:0
|
||||||
|
msgid "Refuse"
|
||||||
|
msgstr "નકારવા"
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: field:idea.idea,count_votes:0
|
||||||
|
msgid "Count of votes"
|
||||||
|
msgstr "મતો ગણતરી"
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: model:ir.model,name:idea.model_report_vote
|
||||||
|
msgid "Idea Vote Statistics"
|
||||||
|
msgstr "વિચાર મતોની આંકડાકીય માહિતી"
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: selection:idea.idea,my_vote:0
|
||||||
|
#: selection:idea.post.vote,vote:0
|
||||||
|
#: selection:idea.vote,score:0
|
||||||
|
#: selection:idea.vote.stat,score:0
|
||||||
|
msgid "Bad"
|
||||||
|
msgstr "ખરાબ"
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: selection:report.vote,idea_state:0
|
||||||
|
msgid "Cancelled"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.category:0
|
||||||
|
msgid "Category of ideas"
|
||||||
|
msgstr "વિચારો ની શ્રેણી"
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: code:addons/idea/idea.py:274
|
||||||
|
#: code:addons/idea/wizard/idea_post_vote.py:91
|
||||||
|
#: code:addons/idea/wizard/idea_post_vote.py:94
|
||||||
|
#, python-format
|
||||||
|
msgid "Warning !"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.idea:0
|
||||||
|
msgid "Your Comment"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: model:ir.model,name:idea.model_idea_vote
|
||||||
|
msgid "Idea Vote"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: field:idea.category,parent_id:0
|
||||||
|
msgid "Parent Categories"
|
||||||
|
msgstr "પિતૃ શ્રેણીઓ"
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: selection:idea.idea,my_vote:0
|
||||||
|
#: selection:idea.post.vote,vote:0
|
||||||
|
#: selection:idea.vote,score:0
|
||||||
|
#: selection:idea.vote.stat,score:0
|
||||||
|
msgid "Very Bad"
|
||||||
|
msgstr "ખૂબ ખરાબ"
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.vote:0
|
||||||
|
msgid "Ideas vote"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:report.vote:0
|
||||||
|
#: field:report.vote,nbr:0
|
||||||
|
msgid "# of Lines"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: code:addons/idea/wizard/idea_post_vote.py:91
|
||||||
|
#, python-format
|
||||||
|
msgid "You can not give Vote for this idea more than %s times"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.category:0
|
||||||
|
msgid "Ideas Categories"
|
||||||
|
msgstr "વિચારોની શ્રેણીઓ"
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: help:idea.idea,description:0
|
||||||
|
msgid "Content of the idea"
|
||||||
|
msgstr "વિચાર સામગ્રી"
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: model:ir.model,name:idea.model_idea_category
|
||||||
|
msgid "Idea Category"
|
||||||
|
msgstr "વિચાર શ્રેણીમાં"
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.idea:0
|
||||||
|
#: field:idea.idea,stat_vote_ids:0
|
||||||
|
msgid "Statistics"
|
||||||
|
msgstr "આંકડાકીય માહિતી"
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: selection:idea.idea,my_vote:0
|
||||||
|
#: selection:idea.post.vote,vote:0
|
||||||
|
#: selection:idea.vote,score:0
|
||||||
|
#: selection:idea.vote.stat,score:0
|
||||||
|
msgid "Not Voted"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: sql_constraint:idea.category:0
|
||||||
|
msgid "The name of the category must be unique"
|
||||||
|
msgstr "શ્રેણી નામ વિશિષ્ટ હોવું જ જોઈએ"
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: model:ir.model,name:idea.model_idea_select
|
||||||
|
msgid "select idea"
|
||||||
|
msgstr "વિચાર પસંદ કરો"
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.stat:0
|
||||||
|
msgid "stat"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: field:idea.category,child_ids:0
|
||||||
|
msgid "Child Categories"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.select:0
|
||||||
|
msgid "Next"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.idea:0
|
||||||
|
#: field:idea.idea,state:0
|
||||||
|
#: view:report.vote:0
|
||||||
|
#: field:report.vote,idea_state:0
|
||||||
|
msgid "State"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.idea:0
|
||||||
|
#: selection:idea.idea,state:0
|
||||||
|
msgid "New"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: selection:idea.idea,my_vote:0
|
||||||
|
#: selection:idea.post.vote,vote:0
|
||||||
|
#: selection:idea.vote,score:0
|
||||||
|
#: selection:idea.vote.stat,score:0
|
||||||
|
msgid "Good"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: help:idea.idea,open_date:0
|
||||||
|
msgid "Date when an idea opened"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.idea:0
|
||||||
|
msgid "Idea Detail"
|
||||||
|
msgstr "વિચાર વિગતો"
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: help:idea.idea,state:0
|
||||||
|
msgid ""
|
||||||
|
"When the Idea is created the state is 'Draft'.\n"
|
||||||
|
" It is opened by the user, the state is 'Opened'. \n"
|
||||||
|
"If the idea is accepted, the state is 'Accepted'."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.idea:0
|
||||||
|
msgid "New Ideas"
|
||||||
|
msgstr "નવા વિચારો"
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:report.vote:0
|
||||||
|
msgid "Idea Vote created last month"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: field:idea.category,visibility:0
|
||||||
|
#: field:idea.idea,visibility:0
|
||||||
|
msgid "Open Idea?"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:report.vote:0
|
||||||
|
msgid "Idea Vote created in current month"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: selection:report.vote,month:0
|
||||||
|
msgid "July"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.idea:0
|
||||||
|
#: selection:idea.idea,state:0
|
||||||
|
#: view:report.vote:0
|
||||||
|
#: selection:report.vote,idea_state:0
|
||||||
|
msgid "Accepted"
|
||||||
|
msgstr "સ્વીકૃત"
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: model:ir.actions.act_window,name:idea.action_idea_category
|
||||||
|
#: model:ir.ui.menu,name:idea.menu_idea_category
|
||||||
|
msgid "Categories"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.category:0
|
||||||
|
msgid "Parent Category"
|
||||||
|
msgstr "પિતૃ શ્રેણીમાં"
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: field:idea.idea,open_date:0
|
||||||
|
msgid "Open date"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: field:idea.idea,vote_ids:0
|
||||||
|
#: model:ir.actions.act_window,name:idea.action_idea_post_vote
|
||||||
|
msgid "Vote"
|
||||||
|
msgstr "મત"
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: model:ir.actions.act_window,name:idea.action_idea_vote_stat
|
||||||
|
#: model:ir.ui.menu,name:idea.menu_idea_vote_stat
|
||||||
|
msgid "Vote Statistics"
|
||||||
|
msgstr "મત ની આંકડાકીય માહિતી"
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: field:idea.idea,vote_limit:0
|
||||||
|
msgid "Maximum Vote per User"
|
||||||
|
msgstr "મહત્તમ વપરાશકર્તા માટે મત"
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.vote.stat:0
|
||||||
|
msgid "vote_stat of ideas"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: field:idea.comment,content:0
|
||||||
|
#: view:idea.idea:0
|
||||||
|
#: view:idea.post.vote:0
|
||||||
|
#: field:idea.vote,comment:0
|
||||||
|
#: model:ir.model,name:idea.model_idea_comment
|
||||||
|
msgid "Comment"
|
||||||
|
msgstr "ટીકા"
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: selection:report.vote,month:0
|
||||||
|
msgid "September"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: selection:report.vote,month:0
|
||||||
|
msgid "December"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:report.vote:0
|
||||||
|
#: field:report.vote,month:0
|
||||||
|
msgid "Month"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.idea:0
|
||||||
|
#: model:ir.actions.act_window,name:idea.action_idea_idea_categ_open
|
||||||
|
#: model:ir.actions.act_window,name:idea.action_idea_idea_open
|
||||||
|
msgid "Open Ideas"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.category:0
|
||||||
|
#: field:idea.category,name:0
|
||||||
|
#: view:idea.idea:0
|
||||||
|
#: field:idea.idea,category_id:0
|
||||||
|
#: view:report.vote:0
|
||||||
|
#: field:report.vote,category_id:0
|
||||||
|
msgid "Category"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: selection:idea.idea,my_vote:0
|
||||||
|
#: selection:idea.post.vote,vote:0
|
||||||
|
#: selection:idea.vote,score:0
|
||||||
|
#: selection:idea.vote.stat,score:0
|
||||||
|
msgid "Very Good"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: selection:idea.idea,state:0
|
||||||
|
#: selection:report.vote,idea_state:0
|
||||||
|
msgid "Opened"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: model:ir.actions.act_window,name:idea.action_idea_vote
|
||||||
|
msgid "Idea's Votes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.idea:0
|
||||||
|
msgid "By Idea Category"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.idea:0
|
||||||
|
msgid "New Idea"
|
||||||
|
msgstr "નવો વિચાર"
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: model:ir.actions.act_window,name:idea.action_idea_category_tree
|
||||||
|
#: model:ir.ui.menu,name:idea.menu_idea_category_tree
|
||||||
|
msgid "Ideas by Categories"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: selection:report.vote,idea_state:0
|
||||||
|
msgid "Draft"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: selection:report.vote,month:0
|
||||||
|
msgid "August"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: selection:idea.idea,my_vote:0
|
||||||
|
#: selection:idea.post.vote,vote:0
|
||||||
|
#: selection:idea.vote,score:0
|
||||||
|
#: selection:idea.vote.stat,score:0
|
||||||
|
msgid "Normal"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: selection:report.vote,month:0
|
||||||
|
msgid "June"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: field:report.vote,creater_id:0
|
||||||
|
#: field:report.vote,user_id:0
|
||||||
|
msgid "User Name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: model:ir.model,name:idea.model_idea_vote_stat
|
||||||
|
msgid "Idea Votes Statistics"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: field:idea.comment,user_id:0
|
||||||
|
#: view:idea.vote:0
|
||||||
|
#: field:idea.vote,user_id:0
|
||||||
|
#: view:report.vote:0
|
||||||
|
msgid "User"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: field:idea.vote,date:0
|
||||||
|
msgid "Date"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: selection:report.vote,month:0
|
||||||
|
msgid "November"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: field:idea.idea,my_vote:0
|
||||||
|
msgid "My Vote"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: selection:report.vote,month:0
|
||||||
|
msgid "October"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: field:idea.comment,create_date:0
|
||||||
|
#: field:idea.idea,created_date:0
|
||||||
|
msgid "Creation date"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: selection:report.vote,month:0
|
||||||
|
msgid "January"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: model:ir.model,name:idea.model_idea_idea
|
||||||
|
msgid "idea.idea"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: field:idea.category,summary:0
|
||||||
|
msgid "Summary"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: field:idea.idea,name:0
|
||||||
|
msgid "Idea Summary"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.post.vote:0
|
||||||
|
msgid "Post"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.idea:0
|
||||||
|
msgid "History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: field:report.vote,date:0
|
||||||
|
msgid "Date Order"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.idea:0
|
||||||
|
#: field:idea.idea,user_id:0
|
||||||
|
#: view:report.vote:0
|
||||||
|
msgid "Creator"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.post.vote:0
|
||||||
|
#: model:ir.ui.menu,name:idea.menu_give_vote
|
||||||
|
msgid "Give Vote"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: help:idea.idea,vote_limit:0
|
||||||
|
msgid "Set to one if you require only one Vote per user"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.idea:0
|
||||||
|
msgid "By Creators"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.post.vote:0
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.select:0
|
||||||
|
msgid "Close"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.idea:0
|
||||||
|
msgid "Open"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.idea:0
|
||||||
|
#: view:report.vote:0
|
||||||
|
msgid "In Progress"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:report.vote:0
|
||||||
|
msgid "Idea Vote Analysis"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.idea:0
|
||||||
|
#: model:ir.actions.act_window,name:idea.action_idea_idea
|
||||||
|
#: model:ir.ui.menu,name:idea.menu_idea_idea
|
||||||
|
#: model:ir.ui.menu,name:idea.menu_ideas
|
||||||
|
#: model:ir.ui.menu,name:idea.menu_ideas1
|
||||||
|
msgid "Ideas"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: model:ir.model,name:idea.model_idea_post_vote
|
||||||
|
msgid "Post vote"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: field:idea.vote.stat,score:0
|
||||||
|
#: field:report.vote,score:0
|
||||||
|
msgid "Score"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.idea:0
|
||||||
|
msgid "Votes Statistics"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.vote:0
|
||||||
|
msgid "Comments:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.category:0
|
||||||
|
#: field:idea.idea,description:0
|
||||||
|
#: field:idea.post.vote,note:0
|
||||||
|
msgid "Description"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: selection:report.vote,month:0
|
||||||
|
msgid "May"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: selection:idea.idea,state:0
|
||||||
|
#: view:report.vote:0
|
||||||
|
msgid "Refused"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.vote:0
|
||||||
|
msgid "Vote Date"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: selection:report.vote,month:0
|
||||||
|
msgid "February"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: field:idea.category,complete_name:0
|
||||||
|
msgid "Name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: field:idea.vote.stat,nbr:0
|
||||||
|
msgid "Number of Votes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:report.vote:0
|
||||||
|
msgid "Month-1"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: selection:report.vote,month:0
|
||||||
|
msgid "April"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: field:idea.idea,count_comments:0
|
||||||
|
msgid "Count of comments"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: field:idea.vote,score:0
|
||||||
|
msgid "Vote Status"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:report.vote:0
|
||||||
|
msgid "Idea Vote created in current year"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: field:idea.idea,vote_avg:0
|
||||||
|
msgid "Average Score"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: constraint:idea.category:0
|
||||||
|
msgid "Error ! You cannot create recursive categories."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: field:idea.comment,idea_id:0
|
||||||
|
#: field:idea.select,idea_id:0
|
||||||
|
#: view:idea.vote:0
|
||||||
|
#: field:idea.vote,idea_id:0
|
||||||
|
#: field:idea.vote.stat,idea_id:0
|
||||||
|
#: model:ir.ui.menu,name:idea.menu_idea_reporting
|
||||||
|
#: view:report.vote:0
|
||||||
|
#: field:report.vote,idea_id:0
|
||||||
|
msgid "Idea"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.idea:0
|
||||||
|
msgid "Accept"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: field:idea.post.vote,vote:0
|
||||||
|
msgid "Post Vote"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:report.vote:0
|
||||||
|
#: field:report.vote,year:0
|
||||||
|
msgid "Year"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: code:addons/idea/idea.py:274
|
||||||
|
#, python-format
|
||||||
|
msgid "You can not vote on a Draft/Accepted/Cancelled ideas."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: idea
|
||||||
|
#: view:idea.select:0
|
||||||
|
msgid "Select Idea for Vote"
|
||||||
|
msgstr ""
|
|
@ -267,10 +267,6 @@
|
||||||
<field name="count_comments"/>
|
<field name="count_comments"/>
|
||||||
<field name="count_votes"/>
|
<field name="count_votes"/>
|
||||||
<field name="state"/>
|
<field name="state"/>
|
||||||
<button name="idea_open" string="Open" states="draft" icon="terp-gtk-go-back-rtl"/>
|
|
||||||
<button name="%(idea.action_idea_post_vote)d" icon="gtk-execute" type="action" states="open" string="Submit Vote"/>
|
|
||||||
<button name="idea_close" string="Accept" states="open" icon="gtk-jump-to"/>
|
|
||||||
<button name="idea_cancel" string="Refuse" states="open" icon="gtk-cancel"/>
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
|
@ -0,0 +1,178 @@
|
||||||
|
# Romanian translation for openobject-addons
|
||||||
|
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||||
|
# This file is distributed under the same license as the openobject-addons package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openobject-addons\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2012-02-08 01:06+0000\n"
|
||||||
|
"PO-Revision-Date: 2012-05-30 20:18+0000\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: Romanian <ro@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-05-31 04:54+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 15322)\n"
|
||||||
|
|
||||||
|
#. module: l10n_multilang
|
||||||
|
#: model:ir.model,name:l10n_multilang.model_account_fiscal_position_template
|
||||||
|
msgid "Template for Fiscal Position"
|
||||||
|
msgstr "Sablon pentru Pozitia Fiscala"
|
||||||
|
|
||||||
|
#. module: l10n_multilang
|
||||||
|
#: sql_constraint:account.account:0
|
||||||
|
msgid "The code of the account must be unique per company !"
|
||||||
|
msgstr "Codul sumei trebuie sa fie unic per companie !"
|
||||||
|
|
||||||
|
#. module: l10n_multilang
|
||||||
|
#: constraint:account.account.template:0
|
||||||
|
msgid ""
|
||||||
|
"Configuration Error!\n"
|
||||||
|
"You can not define children to an account with internal type different of "
|
||||||
|
"\"View\"! "
|
||||||
|
msgstr ""
|
||||||
|
"Eroare de Configurare!\n"
|
||||||
|
"Nu puteti defini conturi secundare intr-un cont cu tipul intern diferit de "
|
||||||
|
"\"Vizualizare\"! "
|
||||||
|
|
||||||
|
#. module: l10n_multilang
|
||||||
|
#: model:ir.model,name:l10n_multilang.model_account_analytic_journal
|
||||||
|
msgid "Analytic Journal"
|
||||||
|
msgstr "Jurnal Analitic"
|
||||||
|
|
||||||
|
#. module: l10n_multilang
|
||||||
|
#: constraint:account.account.template:0
|
||||||
|
msgid "Error ! You can not create recursive account templates."
|
||||||
|
msgstr "Eroare! Nu puteti crea sabloane de cont recurente."
|
||||||
|
|
||||||
|
#. module: l10n_multilang
|
||||||
|
#: model:ir.model,name:l10n_multilang.model_account_journal
|
||||||
|
msgid "Journal"
|
||||||
|
msgstr "Jurnal"
|
||||||
|
|
||||||
|
#. module: l10n_multilang
|
||||||
|
#: model:ir.model,name:l10n_multilang.model_account_chart_template
|
||||||
|
msgid "Templates for Account Chart"
|
||||||
|
msgstr "Sabloane pentru Planul de Conturi"
|
||||||
|
|
||||||
|
#. module: l10n_multilang
|
||||||
|
#: sql_constraint:account.tax:0
|
||||||
|
msgid "The description must be unique per company!"
|
||||||
|
msgstr "Descrierea trebuie sa fie unica pe companie!"
|
||||||
|
|
||||||
|
#. module: l10n_multilang
|
||||||
|
#: constraint:account.tax.code.template:0
|
||||||
|
msgid "Error ! You can not create recursive Tax Codes."
|
||||||
|
msgstr "Eroare ! Nu puteti crea Coduri fiscale recursive."
|
||||||
|
|
||||||
|
#. module: l10n_multilang
|
||||||
|
#: model:ir.model,name:l10n_multilang.model_account_tax_template
|
||||||
|
msgid "account.tax.template"
|
||||||
|
msgstr "sablon.taxa.cont"
|
||||||
|
|
||||||
|
#. module: l10n_multilang
|
||||||
|
#: model:ir.model,name:l10n_multilang.model_account_tax
|
||||||
|
msgid "account.tax"
|
||||||
|
msgstr "taxa.cont"
|
||||||
|
|
||||||
|
#. module: l10n_multilang
|
||||||
|
#: model:ir.model,name:l10n_multilang.model_account_account
|
||||||
|
msgid "Account"
|
||||||
|
msgstr "Cont"
|
||||||
|
|
||||||
|
#. module: l10n_multilang
|
||||||
|
#: model:ir.model,name:l10n_multilang.model_wizard_multi_charts_accounts
|
||||||
|
msgid "wizard.multi.charts.accounts"
|
||||||
|
msgstr "wizard.plan.de.conturi.multi"
|
||||||
|
|
||||||
|
#. module: l10n_multilang
|
||||||
|
#: constraint:account.journal:0
|
||||||
|
msgid ""
|
||||||
|
"Configuration error! The currency chosen should be shared by the default "
|
||||||
|
"accounts too."
|
||||||
|
msgstr ""
|
||||||
|
"Eroare de configurare! Moneda aleasa trebuie sa fie comuna si conturilor "
|
||||||
|
"predefinite."
|
||||||
|
|
||||||
|
#. module: l10n_multilang
|
||||||
|
#: model:ir.model,name:l10n_multilang.model_account_account_template
|
||||||
|
msgid "Templates for Accounts"
|
||||||
|
msgstr "Sabloane pentru Conturi"
|
||||||
|
|
||||||
|
#. module: l10n_multilang
|
||||||
|
#: help:account.chart.template,spoken_languages:0
|
||||||
|
msgid ""
|
||||||
|
"State here the languages for which the translations of templates could be "
|
||||||
|
"loaded at the time of installation of this localization module and copied in "
|
||||||
|
"the final object when generating them from templates. You must provide the "
|
||||||
|
"language codes separated by ';'"
|
||||||
|
msgstr ""
|
||||||
|
"Aici introduceti limbile pentru care pot fi incarcate traducerile "
|
||||||
|
"sabloanelor in momentul instalarii acestui modul de localizare si pot fi "
|
||||||
|
"copiate in obiectul final atunci cand le generati din sabloane. Trebuie sa "
|
||||||
|
"introduceti codurile limbilor separat cu ';'"
|
||||||
|
|
||||||
|
#. module: l10n_multilang
|
||||||
|
#: constraint:account.account:0
|
||||||
|
msgid "Error ! You can not create recursive accounts."
|
||||||
|
msgstr "Eroare ! Nu puteti crea conturi recursive."
|
||||||
|
|
||||||
|
#. module: l10n_multilang
|
||||||
|
#: constraint:account.account:0
|
||||||
|
msgid ""
|
||||||
|
"Configuration Error! \n"
|
||||||
|
"You can not select an account type with a deferral method different of "
|
||||||
|
"\"Unreconciled\" for accounts with internal type \"Payable/Receivable\"! "
|
||||||
|
msgstr ""
|
||||||
|
"Eroare de configurare! \n"
|
||||||
|
"Nu puteti selecta un tip de cont cu o metoda de amanare diferita de "
|
||||||
|
"\"Nereconciliat\" pentru conturile cu tipul intern \"Plati/Incasari\"! "
|
||||||
|
|
||||||
|
#. module: l10n_multilang
|
||||||
|
#: sql_constraint:account.journal:0
|
||||||
|
msgid "The name of the journal must be unique per company !"
|
||||||
|
msgstr "Numele jurnalului trebuie sa fie unic per companie !"
|
||||||
|
|
||||||
|
#. module: l10n_multilang
|
||||||
|
#: model:ir.model,name:l10n_multilang.model_account_analytic_account
|
||||||
|
msgid "Analytic Account"
|
||||||
|
msgstr "Cont Analitic"
|
||||||
|
|
||||||
|
#. module: l10n_multilang
|
||||||
|
#: sql_constraint:account.journal:0
|
||||||
|
msgid "The code of the journal must be unique per company !"
|
||||||
|
msgstr "Codul jurnalului trebuie sa fie unic per companie !"
|
||||||
|
|
||||||
|
#. module: l10n_multilang
|
||||||
|
#: model:ir.model,name:l10n_multilang.model_account_fiscal_position
|
||||||
|
msgid "Fiscal Position"
|
||||||
|
msgstr "Pozitie fiscala"
|
||||||
|
|
||||||
|
#. module: l10n_multilang
|
||||||
|
#: constraint:account.account:0
|
||||||
|
msgid ""
|
||||||
|
"Configuration Error! \n"
|
||||||
|
"You can not define children to an account with internal type different of "
|
||||||
|
"\"View\"! "
|
||||||
|
msgstr ""
|
||||||
|
"Eroare de configurare! \n"
|
||||||
|
"Nu puteti defini conturi subordonate unui cont cu tipul intern diferit de "
|
||||||
|
"\"Vizualizare\"! "
|
||||||
|
|
||||||
|
#. module: l10n_multilang
|
||||||
|
#: constraint:account.analytic.account:0
|
||||||
|
msgid "Error! You can not create recursive analytic accounts."
|
||||||
|
msgstr "Eroare! Nu puteti crea conturi analitice recursive."
|
||||||
|
|
||||||
|
#. module: l10n_multilang
|
||||||
|
#: model:ir.model,name:l10n_multilang.model_account_tax_code_template
|
||||||
|
msgid "Tax Code Template"
|
||||||
|
msgstr "Sablon Cod Taxa"
|
||||||
|
|
||||||
|
#. module: l10n_multilang
|
||||||
|
#: field:account.chart.template,spoken_languages:0
|
||||||
|
msgid "Spoken Languages"
|
||||||
|
msgstr "Limbi Vorbite"
|
|
@ -0,0 +1,123 @@
|
||||||
|
# Romanian translation for openobject-addons
|
||||||
|
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||||
|
# This file is distributed under the same license as the openobject-addons package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openobject-addons\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2011-12-23 09:56+0000\n"
|
||||||
|
"PO-Revision-Date: 2012-05-30 20:37+0000\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: Romanian <ro@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-05-31 04:54+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 15322)\n"
|
||||||
|
|
||||||
|
#. module: l10n_syscohada
|
||||||
|
#: model:account.account.type,name:l10n_syscohada.account_type_receivable
|
||||||
|
msgid "Receivable"
|
||||||
|
msgstr "Incasari"
|
||||||
|
|
||||||
|
#. module: l10n_syscohada
|
||||||
|
#: model:account.account.type,name:l10n_syscohada.account_type_stocks
|
||||||
|
msgid "Actif circulant"
|
||||||
|
msgstr "Active"
|
||||||
|
|
||||||
|
#. module: l10n_syscohada
|
||||||
|
#: model:account.account.type,name:l10n_syscohada.account_type_commitment
|
||||||
|
msgid "Engagements"
|
||||||
|
msgstr "Angajamente"
|
||||||
|
|
||||||
|
#. module: l10n_syscohada
|
||||||
|
#: model:account.account.type,name:l10n_syscohada.account_type_expense
|
||||||
|
msgid "Expense"
|
||||||
|
msgstr "Cheltuiala"
|
||||||
|
|
||||||
|
#. module: l10n_syscohada
|
||||||
|
#: model:account.account.type,name:l10n_syscohada.account_type_stock
|
||||||
|
msgid "Stocks"
|
||||||
|
msgstr "Actiuni"
|
||||||
|
|
||||||
|
#. module: l10n_syscohada
|
||||||
|
#: model:account.account.type,name:l10n_syscohada.account_type_provision
|
||||||
|
msgid "Provisions"
|
||||||
|
msgstr "Clauze"
|
||||||
|
|
||||||
|
#. module: l10n_syscohada
|
||||||
|
#: model:account.account.type,name:l10n_syscohada.account_type_income
|
||||||
|
msgid "Income"
|
||||||
|
msgstr "Venit"
|
||||||
|
|
||||||
|
#. module: l10n_syscohada
|
||||||
|
#: model:account.account.type,name:l10n_syscohada.account_type_tax
|
||||||
|
msgid "Tax"
|
||||||
|
msgstr "Taxa"
|
||||||
|
|
||||||
|
#. module: l10n_syscohada
|
||||||
|
#: model:account.account.type,name:l10n_syscohada.account_type_cash
|
||||||
|
msgid "Cash"
|
||||||
|
msgstr "Numerar"
|
||||||
|
|
||||||
|
#. module: l10n_syscohada
|
||||||
|
#: model:account.account.type,name:l10n_syscohada.account_type_immobilisations
|
||||||
|
msgid "Immobilisations"
|
||||||
|
msgstr "Imobiliare"
|
||||||
|
|
||||||
|
#. module: l10n_syscohada
|
||||||
|
#: model:account.account.type,name:l10n_syscohada.account_type_special
|
||||||
|
msgid "Comptes spéciaux"
|
||||||
|
msgstr "Conturi speciale"
|
||||||
|
|
||||||
|
#. module: l10n_syscohada
|
||||||
|
#: model:account.account.type,name:l10n_syscohada.account_type_payable
|
||||||
|
msgid "Payable"
|
||||||
|
msgstr "Plati"
|
||||||
|
|
||||||
|
#. module: l10n_syscohada
|
||||||
|
#: model:account.account.type,name:l10n_syscohada.account_type_asset
|
||||||
|
msgid "Asset"
|
||||||
|
msgstr "Active"
|
||||||
|
|
||||||
|
#. module: l10n_syscohada
|
||||||
|
#: model:account.account.type,name:l10n_syscohada.account_type_view
|
||||||
|
msgid "View"
|
||||||
|
msgstr "Vizualizare"
|
||||||
|
|
||||||
|
#. module: l10n_syscohada
|
||||||
|
#: model:account.account.type,name:l10n_syscohada.account_type_equity
|
||||||
|
msgid "Equity"
|
||||||
|
msgstr "Capital"
|
||||||
|
|
||||||
|
#. module: l10n_syscohada
|
||||||
|
#: model:account.account.type,name:l10n_syscohada.account_type_cloture
|
||||||
|
msgid "Cloture"
|
||||||
|
msgstr "Inchidere"
|
||||||
|
|
||||||
|
#. module: l10n_syscohada
|
||||||
|
#: model:account.account.type,name:l10n_syscohada.account_type_dettes
|
||||||
|
msgid "Dettes long terme"
|
||||||
|
msgstr "Datorii pe termen lung"
|
||||||
|
|
||||||
|
#. module: l10n_syscohada
|
||||||
|
#: model:ir.actions.todo,note:l10n_syscohada.config_call_account_template_syscohada
|
||||||
|
msgid ""
|
||||||
|
"Generate Chart of Accounts from a SYSCOHADA Chart Template. You will be "
|
||||||
|
"asked to pass the name of the company, the chart template to follow, the no. "
|
||||||
|
"of digits to generate the code for your accounts and Bank account, currency "
|
||||||
|
"to create Journals. Thus,the pure copy of chart Template is generated.\n"
|
||||||
|
"\tThis is the same wizard that runs from Financial "
|
||||||
|
"Management/Configuration/Financial Accounting/Financial Accounts/Generate "
|
||||||
|
"Chart of Accounts from a Chart Template."
|
||||||
|
msgstr ""
|
||||||
|
"Creati Planul de Conturi dintr-un Sablon SYSCOHADA de planuri. Vi se va cere "
|
||||||
|
"sa introduceti numele companiei, sablonul de planuri de urmat, numarul de "
|
||||||
|
"cifre pentru crearea codului pentru conturile d-voastra si Contul Bancar, "
|
||||||
|
"moneda pentru a crea Jurnalele. Astfel, este creata copia originala a "
|
||||||
|
"Sablonului de planuri.\n"
|
||||||
|
"\t Acesta este acelasi wizard care ruleaza din Managementul "
|
||||||
|
"Financiar/Configurare/Contabilitate Financiara/Conturi Financiare/Creati "
|
||||||
|
"Planul de Conturi dintr-un Sablon de planuri."
|
|
@ -60,16 +60,6 @@
|
||||||
<field name="category"/>
|
<field name="category"/>
|
||||||
<field name="price" sum="Total price"/>
|
<field name="price" sum="Total price"/>
|
||||||
<field name="state"/>
|
<field name="state"/>
|
||||||
<button colspan="1"
|
|
||||||
name="%(action_lunch_order_cancel)d"
|
|
||||||
string="Cancel Order"
|
|
||||||
type="action" states="confirmed"
|
|
||||||
icon="gtk-cancel" />
|
|
||||||
<button colspan="1"
|
|
||||||
name="%(action_lunch_order_confirm)d"
|
|
||||||
string="Confirm Order"
|
|
||||||
type="action" states="draft"
|
|
||||||
icon="terp-gtk-go-back-rtl" />
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
@ -336,7 +326,7 @@
|
||||||
<field name="type">tree</field>
|
<field name="type">tree</field>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<tree string="Box Amount by User">
|
<tree string="Box Amount by User">
|
||||||
<field name="date" invisible="1"/>
|
<field name="date" invisible="1"/>
|
||||||
<field name="year" invisible="1"/>
|
<field name="year" invisible="1"/>
|
||||||
<field name="day" invisible="1"/>
|
<field name="day" invisible="1"/>
|
||||||
<field name="month" invisible="1"/>
|
<field name="month" invisible="1"/>
|
||||||
|
|
|
@ -189,7 +189,6 @@
|
||||||
<field name="campaign_id"/>
|
<field name="campaign_id"/>
|
||||||
<field name="date_run"/>
|
<field name="date_run"/>
|
||||||
<field name="sync_last_date"/>
|
<field name="sync_last_date"/>
|
||||||
<button string="Synchronize Manually" states="running" name="synchroniz" icon="terp-project" type="object"/>
|
|
||||||
<field name="state" />
|
<field name="state" />
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,64 @@
|
||||||
|
# Japanese translation for openobject-addons
|
||||||
|
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||||
|
# This file is distributed under the same license as the openobject-addons package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openobject-addons\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2011-01-11 11:15+0000\n"
|
||||||
|
"PO-Revision-Date: 2012-05-30 23:20+0000\n"
|
||||||
|
"Last-Translator: Akira Hiyama <Unknown>\n"
|
||||||
|
"Language-Team: Japanese <ja@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-06-01 05:33+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 15342)\n"
|
||||||
|
|
||||||
|
#. module: mrp_jit
|
||||||
|
#: model:ir.module.module,shortdesc:mrp_jit.module_meta_information
|
||||||
|
msgid "MRP JIT"
|
||||||
|
msgstr "MRPジャストインタイム"
|
||||||
|
|
||||||
|
#. module: mrp_jit
|
||||||
|
#: model:ir.module.module,description:mrp_jit.module_meta_information
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
" This module allows Just In Time computation of procurement orders.\n"
|
||||||
|
"\n"
|
||||||
|
" If you install this module, you will not have to run the regular "
|
||||||
|
"procurement \n"
|
||||||
|
" scheduler anymore (but you still need to run the minimum order point "
|
||||||
|
"rule \n"
|
||||||
|
" scheduler, or for example let it run daily.)\n"
|
||||||
|
" All procurement orders will be processed immediately, which could in "
|
||||||
|
"some\n"
|
||||||
|
" cases entail a small performance impact.\n"
|
||||||
|
"\n"
|
||||||
|
" It may also increase your stock size because products are reserved as "
|
||||||
|
"soon\n"
|
||||||
|
" as possible and the scheduler time range is not taken into account "
|
||||||
|
"anymore. \n"
|
||||||
|
" In that case, you can not use priorities any more on the different "
|
||||||
|
"picking.\n"
|
||||||
|
" \n"
|
||||||
|
" \n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
" このモジュールは調達オーダーのジャストインタイム計算を行います。\n"
|
||||||
|
"\n"
|
||||||
|
" このモジュールをインストールしたなら、もう定期的な調達スケジューラを実行させる必要は \n"
|
||||||
|
" ありません(しかし、まだ最小発注点ルールスケジューラを実行するか、または、例えば、\n"
|
||||||
|
" それを毎日実行させる必要があります)。\n"
|
||||||
|
" 全ての調達オーダーは即座に実行されますが、幾つかのケースにおいてはパフォーマンス\n"
|
||||||
|
" に多少影響するかもしれません。\n"
|
||||||
|
"\n"
|
||||||
|
" 製品は可能な限り早く予約され、もはやスケジュールI時間の範囲は考慮されないので、\n"
|
||||||
|
" 在庫サイズは増えることになるかも知れません。\n"
|
||||||
|
" そのケースには異なる集荷による優先度をもはや使うことはできません。\n"
|
||||||
|
" \n"
|
||||||
|
" \n"
|
||||||
|
" "
|
|
@ -0,0 +1,836 @@
|
||||||
|
# Japanese translation for openobject-addons
|
||||||
|
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||||
|
# This file is distributed under the same license as the openobject-addons package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openobject-addons\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||||
|
"PO-Revision-Date: 2012-06-01 04:26+0000\n"
|
||||||
|
"Last-Translator: Akira Hiyama <Unknown>\n"
|
||||||
|
"Language-Team: Japanese <ja@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-06-01 05:33+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 15342)\n"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:ir.actions.act_window,name:mrp_operations.mrp_production_wc_action_form
|
||||||
|
#: model:ir.ui.menu,name:mrp_operations.menu_mrp_production_wc_action_planning
|
||||||
|
#: model:ir.ui.menu,name:mrp_operations.menu_mrp_production_wc_order
|
||||||
|
#: view:mrp.production.workcenter.line:0
|
||||||
|
#: view:mrp.workorder:0
|
||||||
|
msgid "Work Orders"
|
||||||
|
msgstr "作業オーダー"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: code:addons/mrp_operations/mrp_operations.py:489
|
||||||
|
#, python-format
|
||||||
|
msgid "Operation is already finished!"
|
||||||
|
msgstr "操作は既に終了しています。"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:process.node,note:mrp_operations.process_node_canceloperation0
|
||||||
|
msgid "Cancel the operation."
|
||||||
|
msgstr "操作のキャンセル"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:ir.model,name:mrp_operations.model_mrp_operations_operation_code
|
||||||
|
msgid "mrp_operations.operation.code"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.production.workcenter.line:0
|
||||||
|
#: view:mrp.workorder:0
|
||||||
|
msgid "Group By..."
|
||||||
|
msgstr "グループ化…"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:process.node,note:mrp_operations.process_node_workorder0
|
||||||
|
msgid "Information from the routing definition."
|
||||||
|
msgstr "経路定義からの情報"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: selection:mrp.workorder,month:0
|
||||||
|
msgid "March"
|
||||||
|
msgstr "3月"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:ir.actions.act_window,name:mrp_operations.mrp_production_wc_resource_planning
|
||||||
|
#: model:ir.ui.menu,name:mrp_operations.menu_mrp_production_wc_resource_planning
|
||||||
|
msgid "Work Centers"
|
||||||
|
msgstr "作業センタ"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.production:0
|
||||||
|
#: view:mrp.production.workcenter.line:0
|
||||||
|
#: selection:mrp_operations.operation.code,start_stop:0
|
||||||
|
msgid "Resume"
|
||||||
|
msgstr "再開"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: report:mrp.code.barcode:0
|
||||||
|
msgid "("
|
||||||
|
msgstr "("
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.production.workcenter.line:0
|
||||||
|
msgid "Product to Produce"
|
||||||
|
msgstr "生産製品"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp_operations.operation:0
|
||||||
|
msgid "Production Operation"
|
||||||
|
msgstr "製造操作"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.production:0
|
||||||
|
msgid "Set to Draft"
|
||||||
|
msgstr "ドラフトに設定"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: field:mrp.production,allow_reorder:0
|
||||||
|
msgid "Free Serialisation"
|
||||||
|
msgstr "自由な直列化"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:ir.model,name:mrp_operations.model_mrp_production
|
||||||
|
msgid "Manufacturing Order"
|
||||||
|
msgstr "製造オーダー"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:process.process,name:mrp_operations.process_process_mrpoperationprocess0
|
||||||
|
msgid "Mrp Operations"
|
||||||
|
msgstr "MRP操作"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.workorder:0
|
||||||
|
#: field:mrp.workorder,day:0
|
||||||
|
msgid "Day"
|
||||||
|
msgstr "日"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.production:0
|
||||||
|
msgid "Cancel Order"
|
||||||
|
msgstr "オーダーのキャンセル"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:process.node,name:mrp_operations.process_node_productionorder0
|
||||||
|
msgid "Production Order"
|
||||||
|
msgstr "生産オーダー"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: selection:mrp.production.workcenter.line,production_state:0
|
||||||
|
msgid "Picking Exception"
|
||||||
|
msgstr "例外の集荷"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:process.transition,name:mrp_operations.process_transition_productionstart0
|
||||||
|
msgid "Creation of the work order"
|
||||||
|
msgstr "作業オーダーの作成"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: help:mrp.production.workcenter.line,state:0
|
||||||
|
msgid ""
|
||||||
|
"* When a work order is created it is set in 'Draft' state.\n"
|
||||||
|
"* When user sets work order in start mode that time it will be set in 'In "
|
||||||
|
"Progress' state.\n"
|
||||||
|
"* When work order is in running mode, during that time if user wants to stop "
|
||||||
|
"or to make changes in order then can set in 'Pending' state.\n"
|
||||||
|
"* When the user cancels the work order it will be set in 'Canceled' state.\n"
|
||||||
|
"* When order is completely processed that time it is set in 'Finished' state."
|
||||||
|
msgstr ""
|
||||||
|
"・ 作業オーダーが作成されると、それはドラフト状態に設定されます。\n"
|
||||||
|
"・ ユーザが作業オーダーに開始モードを設定すると、それは進行中に設定されます。\n"
|
||||||
|
"・ 作業オーダーが実行中モードになった時にユーザが停止やオーダーを変更した場合、保留中状態に設定されます。\n"
|
||||||
|
"・ ユーザが作業オーダーをキャンセルすると、キャンセル済状態に設定されます。\n"
|
||||||
|
"・ オーダーが完全に処理されると、完了状態に設定されます。"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:process.transition,note:mrp_operations.process_transition_productionstart0
|
||||||
|
msgid "The work orders are created on the basis of the production order."
|
||||||
|
msgstr "作業オーダーは生産オーダーを元にして作成されます。"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: code:addons/mrp_operations/mrp_operations.py:134
|
||||||
|
#: code:addons/mrp_operations/mrp_operations.py:470
|
||||||
|
#: code:addons/mrp_operations/mrp_operations.py:474
|
||||||
|
#: code:addons/mrp_operations/mrp_operations.py:486
|
||||||
|
#: code:addons/mrp_operations/mrp_operations.py:489
|
||||||
|
#, python-format
|
||||||
|
msgid "Error!"
|
||||||
|
msgstr "エラー"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: selection:mrp.production.workcenter.line,state:0
|
||||||
|
#: selection:mrp.workorder,state:0
|
||||||
|
#: selection:mrp_operations.operation.code,start_stop:0
|
||||||
|
msgid "Cancelled"
|
||||||
|
msgstr "キャンセル済"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: code:addons/mrp_operations/mrp_operations.py:486
|
||||||
|
#, python-format
|
||||||
|
msgid "There is no Operation to be cancelled!"
|
||||||
|
msgstr "キャンセルされる操作がありません。"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: code:addons/mrp_operations/mrp_operations.py:482
|
||||||
|
#, python-format
|
||||||
|
msgid "Operation is Already Cancelled!"
|
||||||
|
msgstr "操作は既にキャンセル済です。"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:ir.actions.act_window,name:mrp_operations.mrp_production_operation_action
|
||||||
|
#: view:mrp.production.workcenter.line:0
|
||||||
|
msgid "Operations"
|
||||||
|
msgstr "操作"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:ir.model,name:mrp_operations.model_stock_move
|
||||||
|
msgid "Stock Move"
|
||||||
|
msgstr "在庫移動"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: code:addons/mrp_operations/mrp_operations.py:479
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"In order to Finish the operation, it must be in the Start or Resume state!"
|
||||||
|
msgstr "操作を完了するには、開始か再開状態でなければなりません。"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: field:mrp.workorder,nbr:0
|
||||||
|
msgid "# of Lines"
|
||||||
|
msgstr "行数"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.production:0
|
||||||
|
#: view:mrp.production.workcenter.line:0
|
||||||
|
msgid "Finish Order"
|
||||||
|
msgstr "オーダーの完了"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: field:mrp.production.workcenter.line,date_finished:0
|
||||||
|
#: field:mrp.production.workcenter.line,date_planned_end:0
|
||||||
|
#: field:mrp_operations.operation,date_finished:0
|
||||||
|
msgid "End Date"
|
||||||
|
msgstr "終了日"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: selection:mrp.production.workcenter.line,production_state:0
|
||||||
|
msgid "In Production"
|
||||||
|
msgstr "生産中"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.production.workcenter.line:0
|
||||||
|
#: field:mrp.production.workcenter.line,state:0
|
||||||
|
#: view:mrp.workorder:0
|
||||||
|
#: field:mrp.workorder,state:0
|
||||||
|
msgid "State"
|
||||||
|
msgstr "状態"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.production.workcenter.line:0
|
||||||
|
#: selection:mrp.production.workcenter.line,production_state:0
|
||||||
|
#: selection:mrp.production.workcenter.line,state:0
|
||||||
|
#: selection:mrp.workorder,state:0
|
||||||
|
msgid "Draft"
|
||||||
|
msgstr "ドラフト"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:ir.actions.act_window,name:mrp_operations.action_report_mrp_workorder
|
||||||
|
#: model:ir.model,name:mrp_operations.model_mrp_production_workcenter_line
|
||||||
|
msgid "Work Order"
|
||||||
|
msgstr "作業オーダー"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:process.transition,note:mrp_operations.process_transition_workstartoperation0
|
||||||
|
msgid ""
|
||||||
|
"There is 1 work order per work center. The information about the number of "
|
||||||
|
"cycles or the cycle time."
|
||||||
|
msgstr "作業センタごとに1つの作業オーダーがあります。サイクルの数あるいはサイクル時間についての情報です。"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.workorder:0
|
||||||
|
msgid "Month -1"
|
||||||
|
msgstr "月 -1"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: field:mrp.production.workcenter.line,uom:0
|
||||||
|
msgid "UOM"
|
||||||
|
msgstr "単位"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: constraint:stock.move:0
|
||||||
|
msgid "You can not move products from or to a location of the type view."
|
||||||
|
msgstr "タイプビューの場所から、あるいは場所へは製品を動かすことはできません。"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.production.workcenter.line:0
|
||||||
|
msgid "Planned Date"
|
||||||
|
msgstr "予定日"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.workorder:0
|
||||||
|
#: field:mrp.workorder,product_qty:0
|
||||||
|
msgid "Product Qty"
|
||||||
|
msgstr "製品数量"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: code:addons/mrp_operations/mrp_operations.py:134
|
||||||
|
#, python-format
|
||||||
|
msgid "Manufacturing order cannot start in state \"%s\"!"
|
||||||
|
msgstr "製造オーダーは %s 状態であるため開始できません。"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: selection:mrp.workorder,month:0
|
||||||
|
msgid "July"
|
||||||
|
msgstr "7月"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: field:mrp_operations.operation.code,name:0
|
||||||
|
msgid "Operation Name"
|
||||||
|
msgstr "操作名"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: field:mrp_operations.operation.code,start_stop:0
|
||||||
|
msgid "Status"
|
||||||
|
msgstr "状態"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:ir.actions.act_window,help:mrp_operations.mrp_production_wc_action_planning
|
||||||
|
msgid ""
|
||||||
|
"To manufacture or assemble products, and use raw materials and finished "
|
||||||
|
"products you must also handle manufacturing operations. Manufacturing "
|
||||||
|
"operations are often called Work Orders. The various operations will have "
|
||||||
|
"different impacts on the costs of manufacturing and planning depending on "
|
||||||
|
"the available workload."
|
||||||
|
msgstr ""
|
||||||
|
"製品を製造または組み立て、原材料を使って製品を完成させるために、製造操作を処理しなくてはなりません。製造操作はよく、作業オーダーと呼ばれます。多種な操作は"
|
||||||
|
"製造と使用可能な作業負荷に応じた計画のコストに異なる影響を持ちます。"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.workorder:0
|
||||||
|
msgid "Planned Year"
|
||||||
|
msgstr "計画年"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: field:mrp_operations.operation,order_date:0
|
||||||
|
msgid "Order Date"
|
||||||
|
msgstr "オーダー日"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:ir.actions.act_window,name:mrp_operations.mrp_production_wc_draft_action
|
||||||
|
msgid "Future Work Orders"
|
||||||
|
msgstr "将来の作業オーダー"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.workorder:0
|
||||||
|
msgid "Work orders during last month"
|
||||||
|
msgstr "先月の作業オーダー"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: help:mrp.production.workcenter.line,delay:0
|
||||||
|
msgid "The elapsed time between operation start and stop in this Work Center"
|
||||||
|
msgstr "この作業センタでの操作の開始と終了の間の経過時間"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:process.node,name:mrp_operations.process_node_canceloperation0
|
||||||
|
msgid "Operation Cancelled"
|
||||||
|
msgstr "操作はキャンセルされました。"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.production:0
|
||||||
|
#: view:mrp.production.workcenter.line:0
|
||||||
|
msgid "Pause Work Order"
|
||||||
|
msgstr "作業オーダーの中断"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: selection:mrp.workorder,month:0
|
||||||
|
msgid "September"
|
||||||
|
msgstr "9月"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: selection:mrp.workorder,month:0
|
||||||
|
msgid "December"
|
||||||
|
msgstr "12月"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.workorder:0
|
||||||
|
#: field:mrp.workorder,month:0
|
||||||
|
msgid "Month"
|
||||||
|
msgstr "月"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: selection:mrp.production.workcenter.line,production_state:0
|
||||||
|
msgid "Canceled"
|
||||||
|
msgstr "キャンセル済"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:ir.model,name:mrp_operations.model_mrp_operations_operation
|
||||||
|
msgid "mrp_operations.operation"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:ir.model,name:mrp_operations.model_mrp_workorder
|
||||||
|
msgid "Work Order Report"
|
||||||
|
msgstr "作業オーダーレポート"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: constraint:mrp.production:0
|
||||||
|
msgid "Order quantity cannot be negative or zero!"
|
||||||
|
msgstr "オーダー数量は負または0にはできません。"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: field:mrp.production.workcenter.line,date_start:0
|
||||||
|
#: field:mrp.production.workcenter.line,date_start_date:0
|
||||||
|
#: field:mrp_operations.operation,date_start:0
|
||||||
|
msgid "Start Date"
|
||||||
|
msgstr "開始日"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: selection:mrp.production.workcenter.line,production_state:0
|
||||||
|
msgid "Waiting Goods"
|
||||||
|
msgstr "待機商品"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.workorder:0
|
||||||
|
msgid "Work orders made during current year"
|
||||||
|
msgstr "現在年中になされた作業オーダー"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: selection:mrp.workorder,state:0
|
||||||
|
#: selection:mrp_operations.operation.code,start_stop:0
|
||||||
|
msgid "Pause"
|
||||||
|
msgstr "一時停止"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.production.workcenter.line:0
|
||||||
|
#: selection:mrp.production.workcenter.line,state:0
|
||||||
|
#: selection:mrp.workorder,state:0
|
||||||
|
msgid "In Progress"
|
||||||
|
msgstr "進行中"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: code:addons/mrp_operations/mrp_operations.py:470
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"In order to Pause the operation, it must be in the Start or Resume state!"
|
||||||
|
msgstr "操作を一時停止するには、開始または再開状態でなければなりません。"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: code:addons/mrp_operations/mrp_operations.py:474
|
||||||
|
#, python-format
|
||||||
|
msgid "In order to Resume the operation, it must be in the Pause state!"
|
||||||
|
msgstr "操作を再開するには、一時停止状態でなければなりません。"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.production:0
|
||||||
|
#: view:mrp.production.workcenter.line:0
|
||||||
|
#: selection:mrp_operations.operation.code,start_stop:0
|
||||||
|
msgid "Start"
|
||||||
|
msgstr "開始"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp_operations.operation:0
|
||||||
|
msgid "Calendar View"
|
||||||
|
msgstr "カレンダービュー"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:process.transition,note:mrp_operations.process_transition_startcanceloperation0
|
||||||
|
msgid ""
|
||||||
|
"When the operation needs to be cancelled, you can do it in the work order "
|
||||||
|
"form."
|
||||||
|
msgstr "操作をキャンセルする必要がある時、作業オーダーフォームの中で行うことができます。"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.production:0
|
||||||
|
#: view:mrp.production.workcenter.line:0
|
||||||
|
msgid "Set Draft"
|
||||||
|
msgstr "ドラフトにセット"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.production:0
|
||||||
|
#: view:mrp.production.workcenter.line:0
|
||||||
|
#: selection:mrp.production.workcenter.line,state:0
|
||||||
|
msgid "Pending"
|
||||||
|
msgstr "保留中"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp_operations.operation.code:0
|
||||||
|
msgid "Production Operation Code"
|
||||||
|
msgstr "生産操作コード"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: code:addons/mrp_operations/mrp_operations.py:466
|
||||||
|
#, python-format
|
||||||
|
msgid ""
|
||||||
|
"Operation has already started !Youcan either Pause/Finish/Cancel the "
|
||||||
|
"operation"
|
||||||
|
msgstr "操作は既に開始されました。一時停止 / 完了 / キャンセル操作ができます。"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: selection:mrp.workorder,month:0
|
||||||
|
msgid "August"
|
||||||
|
msgstr "8月"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.workorder:0
|
||||||
|
msgid "Started"
|
||||||
|
msgstr "開始済"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.production.workcenter.line:0
|
||||||
|
msgid "Production started late"
|
||||||
|
msgstr "生産が遅れて開始"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.workorder:0
|
||||||
|
msgid "Planned Day"
|
||||||
|
msgstr "計画日"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: selection:mrp.workorder,month:0
|
||||||
|
msgid "June"
|
||||||
|
msgstr "6月"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.workorder:0
|
||||||
|
#: field:mrp.workorder,total_cycles:0
|
||||||
|
msgid "Total Cycles"
|
||||||
|
msgstr "合計サイクル"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: selection:mrp.production.workcenter.line,production_state:0
|
||||||
|
msgid "Ready to Produce"
|
||||||
|
msgstr "生産準備完了"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: field:stock.move,move_dest_id_lines:0
|
||||||
|
msgid "Children Moves"
|
||||||
|
msgstr "子の移動"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:ir.actions.act_window,name:mrp_operations.mrp_production_wc_action_planning
|
||||||
|
msgid "Work Orders Planning"
|
||||||
|
msgstr "作業オーダー計画"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.production.workcenter.line:0
|
||||||
|
#: field:mrp.workorder,date:0
|
||||||
|
msgid "Date"
|
||||||
|
msgstr "日付"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: selection:mrp.workorder,month:0
|
||||||
|
msgid "November"
|
||||||
|
msgstr "11月"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.workorder:0
|
||||||
|
msgid "Search"
|
||||||
|
msgstr "検索"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: selection:mrp.workorder,month:0
|
||||||
|
msgid "October"
|
||||||
|
msgstr "10月"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: selection:mrp.workorder,month:0
|
||||||
|
msgid "January"
|
||||||
|
msgstr "1月"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.production:0
|
||||||
|
#: view:mrp.production.workcenter.line:0
|
||||||
|
msgid "Resume Work Order"
|
||||||
|
msgstr "作業オーダーの再開"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:process.node,note:mrp_operations.process_node_doneoperation0
|
||||||
|
msgid "Finish the operation."
|
||||||
|
msgstr "操作の終了"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: code:addons/mrp_operations/mrp_operations.py:459
|
||||||
|
#, python-format
|
||||||
|
msgid "Operation is not started yet !"
|
||||||
|
msgstr "操作はまだ開始されていません。"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:process.node,note:mrp_operations.process_node_productionorder0
|
||||||
|
msgid "Information from the production order."
|
||||||
|
msgstr "生産オーダーからの情報"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: sql_constraint:mrp.production:0
|
||||||
|
msgid "Reference must be unique per Company!"
|
||||||
|
msgstr "参照は会社ごとに固有でなければいけません。"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: code:addons/mrp_operations/mrp_operations.py:459
|
||||||
|
#: code:addons/mrp_operations/mrp_operations.py:466
|
||||||
|
#: code:addons/mrp_operations/mrp_operations.py:479
|
||||||
|
#: code:addons/mrp_operations/mrp_operations.py:482
|
||||||
|
#, python-format
|
||||||
|
msgid "Sorry!"
|
||||||
|
msgstr "残念です。"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.workorder:0
|
||||||
|
msgid "Current"
|
||||||
|
msgstr "現在"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: field:mrp_operations.operation,code_id:0
|
||||||
|
#: field:mrp_operations.operation.code,code:0
|
||||||
|
msgid "Code"
|
||||||
|
msgstr "コード"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:ir.actions.act_window,name:mrp_operations.mrp_production_wc_confirm_action
|
||||||
|
msgid "Confirmed Work Orders"
|
||||||
|
msgstr "確認済作業オーダー"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:ir.actions.act_window,name:mrp_operations.mrp_production_code_action
|
||||||
|
msgid "Operation Codes"
|
||||||
|
msgstr "操作コード"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: field:mrp.production.workcenter.line,qty:0
|
||||||
|
msgid "Qty"
|
||||||
|
msgstr "数量"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:process.node,name:mrp_operations.process_node_doneoperation0
|
||||||
|
msgid "Operation Done"
|
||||||
|
msgstr "操作完了"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: selection:mrp.production.workcenter.line,production_state:0
|
||||||
|
#: view:mrp.workorder:0
|
||||||
|
#: selection:mrp_operations.operation.code,start_stop:0
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "完了"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:ir.actions.report.xml,name:mrp_operations.report_code_barcode
|
||||||
|
msgid "Start/Stop Barcode"
|
||||||
|
msgstr "開始 / 停止バーコード"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.production:0
|
||||||
|
#: view:mrp.production.workcenter.line:0
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr "キャンセル"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:ir.actions.act_window,help:mrp_operations.mrp_production_wc_action_form
|
||||||
|
msgid ""
|
||||||
|
"Work Orders is the list of operations to be performed for each manufacturing "
|
||||||
|
"order. Once you start the first work order of a manufacturing order, the "
|
||||||
|
"manufacturing order is automatically marked as started. Once you finish the "
|
||||||
|
"latest operation of a manufacturing order, the MO is automatically done and "
|
||||||
|
"the related products are produced."
|
||||||
|
msgstr ""
|
||||||
|
"作業オーダーは各製造オーダーを実行するための操作のリストです。製造オーダーの最初の作業オーダーを開始すると、製造オーダーは自動的に開始したとマークされます"
|
||||||
|
"。製造オーダーの最後の操作が終わると、製造オーダーは自動的に完了となり関連製品は生産されます。"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:process.node,name:mrp_operations.process_node_startoperation0
|
||||||
|
msgid "Start Operation"
|
||||||
|
msgstr "操作を開始"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.production.workcenter.line:0
|
||||||
|
msgid "Information"
|
||||||
|
msgstr "情報"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:ir.actions.report.xml,name:mrp_operations.report_wc_barcode
|
||||||
|
msgid "Work Centers Barcode"
|
||||||
|
msgstr "作業センターバーコード"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: constraint:stock.move:0
|
||||||
|
msgid "You must assign a production lot for this product"
|
||||||
|
msgstr "この製品に生産ロットを割り当てて下さい。"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.production.workcenter.line:0
|
||||||
|
msgid "Late"
|
||||||
|
msgstr "遅延"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: field:mrp.workorder,delay:0
|
||||||
|
msgid "Delay"
|
||||||
|
msgstr "遅延"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.production.workcenter.line:0
|
||||||
|
#: view:mrp.workorder:0
|
||||||
|
#: field:mrp.workorder,production_id:0
|
||||||
|
#: field:mrp_operations.operation,production_id:0
|
||||||
|
msgid "Production"
|
||||||
|
msgstr "生産"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.production.workcenter.line:0
|
||||||
|
msgid "Search Work Orders"
|
||||||
|
msgstr "作業オーダーの検索"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.production.workcenter.line:0
|
||||||
|
#: view:mrp.workorder:0
|
||||||
|
#: field:mrp.workorder,workcenter_id:0
|
||||||
|
#: field:mrp_operations.operation,workcenter_id:0
|
||||||
|
#: model:process.node,name:mrp_operations.process_node_workorder0
|
||||||
|
msgid "Work Center"
|
||||||
|
msgstr "作業センタ"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.production.workcenter.line:0
|
||||||
|
msgid "Real"
|
||||||
|
msgstr "実物"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: field:mrp.production.workcenter.line,date_planned:0
|
||||||
|
msgid "Scheduled Date"
|
||||||
|
msgstr "予定日"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: field:mrp.production.workcenter.line,product:0
|
||||||
|
#: view:mrp.workorder:0
|
||||||
|
#: field:mrp.workorder,product_id:0
|
||||||
|
msgid "Product"
|
||||||
|
msgstr "製品"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.workorder:0
|
||||||
|
#: field:mrp.workorder,total_hours:0
|
||||||
|
msgid "Total Hours"
|
||||||
|
msgstr "合計時間"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: help:mrp.production,allow_reorder:0
|
||||||
|
msgid ""
|
||||||
|
"Check this to be able to move independently all production orders, without "
|
||||||
|
"moving dependent ones."
|
||||||
|
msgstr "依存する物を動かすことなく、全ての製造オーダー独立して移動させるためにはこれをチェックして下さい。"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: report:mrp.code.barcode:0
|
||||||
|
msgid ")"
|
||||||
|
msgstr ")"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:ir.ui.menu,name:mrp_operations.menu_report_mrp_workorders_tree
|
||||||
|
msgid "Work Order Analysis"
|
||||||
|
msgstr "作業オーダー分析"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.production:0
|
||||||
|
#: view:mrp.production.workcenter.line:0
|
||||||
|
#: selection:mrp.production.workcenter.line,state:0
|
||||||
|
#: selection:mrp.workorder,state:0
|
||||||
|
msgid "Finished"
|
||||||
|
msgstr "完了"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.production.workcenter.line:0
|
||||||
|
msgid "Hours by Work Center"
|
||||||
|
msgstr "作業センター毎の時間"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: field:mrp.production.workcenter.line,delay:0
|
||||||
|
msgid "Working Hours"
|
||||||
|
msgstr "労働時間"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.workorder:0
|
||||||
|
msgid "Planned Month"
|
||||||
|
msgstr "計画月"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: selection:mrp.workorder,month:0
|
||||||
|
msgid "February"
|
||||||
|
msgstr "2月"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.workorder:0
|
||||||
|
msgid "Work orders made during current month"
|
||||||
|
msgstr "現在月中になされた作業オーダー"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:process.transition,name:mrp_operations.process_transition_startcanceloperation0
|
||||||
|
msgid "Operation cancelled"
|
||||||
|
msgstr "操作はキャンセルされました。"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:process.node,note:mrp_operations.process_node_startoperation0
|
||||||
|
msgid "Start the operation."
|
||||||
|
msgstr "操作を開始します。"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: selection:mrp.workorder,month:0
|
||||||
|
msgid "April"
|
||||||
|
msgstr "4月"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:process.transition,name:mrp_operations.process_transition_startdoneoperation0
|
||||||
|
msgid "Operation done"
|
||||||
|
msgstr "操作完了"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.workorder:0
|
||||||
|
msgid "#Line Orders"
|
||||||
|
msgstr "オーダー行数"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.production:0
|
||||||
|
#: view:mrp.production.workcenter.line:0
|
||||||
|
msgid "Start Working"
|
||||||
|
msgstr "作業開始"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:process.transition,note:mrp_operations.process_transition_startdoneoperation0
|
||||||
|
msgid ""
|
||||||
|
"When the operation is finished, the operator updates the system by finishing "
|
||||||
|
"the work order."
|
||||||
|
msgstr "操作が完了した時、操作者は作業オーダーを終えるとシステムを更新します。"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: selection:mrp.workorder,month:0
|
||||||
|
msgid "May"
|
||||||
|
msgstr "5月"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: model:process.transition,name:mrp_operations.process_transition_workstartoperation0
|
||||||
|
msgid "Details of the work order"
|
||||||
|
msgstr "作業オーダーの詳細"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: field:mrp.production.workcenter.line,production_state:0
|
||||||
|
msgid "Production State"
|
||||||
|
msgstr "生産状態"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.workorder:0
|
||||||
|
#: field:mrp.workorder,year:0
|
||||||
|
msgid "Year"
|
||||||
|
msgstr "年"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: view:mrp.production.workcenter.line:0
|
||||||
|
msgid "Duration"
|
||||||
|
msgstr "期間"
|
||||||
|
|
||||||
|
#. module: mrp_operations
|
||||||
|
#: constraint:stock.move:0
|
||||||
|
msgid "You try to assign a lot which is not from the same product"
|
||||||
|
msgstr "違う製品のロットを割り当てることはできません。"
|
|
@ -57,10 +57,6 @@
|
||||||
<field name="cycle"/>
|
<field name="cycle"/>
|
||||||
<field name="hour"/>
|
<field name="hour"/>
|
||||||
<field name="state" />
|
<field name="state" />
|
||||||
<button name="button_start_working" string="Start" states="draft" icon="terp-gtk-jump-to-ltr" help="Start Working"/>
|
|
||||||
<button name="button_resume" string="Resume" states="pause" icon="gtk-media-pause" help="Resume Work Order"/>
|
|
||||||
<button name="button_pause" string="Pending" states="startworking" icon="gtk-media-pause" help="Pause Work Order"/>
|
|
||||||
<button name="button_done" string="Finished" states="startworking" icon="terp-check" help="Finish Order"/>
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
|
@ -0,0 +1,795 @@
|
||||||
|
# Japanese translation for openobject-addons
|
||||||
|
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||||
|
# This file is distributed under the same license as the openobject-addons package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openobject-addons\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||||
|
"PO-Revision-Date: 2012-06-01 04:27+0000\n"
|
||||||
|
"Last-Translator: Akira Hiyama <Unknown>\n"
|
||||||
|
"Language-Team: Japanese <ja@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-06-01 05:33+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 15342)\n"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
msgid "Fees Line"
|
||||||
|
msgstr "料金行"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: help:mrp.repair,state:0
|
||||||
|
msgid ""
|
||||||
|
" * The 'Draft' state is used when a user is encoding a new and unconfirmed "
|
||||||
|
"repair order. \n"
|
||||||
|
"* The 'Confirmed' state is used when a user confirms the repair order. "
|
||||||
|
" \n"
|
||||||
|
"* The 'Ready to Repair' state is used to start to repairing, user can start "
|
||||||
|
"repairing only after repair order is confirmed. \n"
|
||||||
|
"* The 'To be Invoiced' state is used to generate the invoice before or after "
|
||||||
|
"repairing done. \n"
|
||||||
|
"* The 'Done' state is set when repairing is completed. \n"
|
||||||
|
"* The 'Cancelled' state is used when user cancel repair order."
|
||||||
|
msgstr ""
|
||||||
|
" ・ ドラフト状態は、ユーザが未確認の修理オーダーを新たにエンコードした時に使われます。\n"
|
||||||
|
"・ 確認済状態は、ユーザが修理オーダーを確認した時に使われます。\n"
|
||||||
|
"・ 修理準備完了状態は、修理を開始するために、修理オーダー確認後、修理を開始できる時に使われます。\n"
|
||||||
|
"・ 請求状態は、修理の完了前または完了後で請求書を生成した時に使われます。\n"
|
||||||
|
"・ 完了状態は、修理が終了した時に設定されます。\n"
|
||||||
|
"・ キャンセル済状態は、ユーザが修理オーダーをキャンセルした時に使われます。"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: field:mrp.repair.line,move_id:0
|
||||||
|
msgid "Inventory Move"
|
||||||
|
msgstr "在庫移動"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: model:ir.actions.act_window,help:mrp_repair.action_repair_order_tree
|
||||||
|
msgid ""
|
||||||
|
"Repair orders allow you to organize your product repairs. In a repair order, "
|
||||||
|
"you can detail the components you remove, add or replace and record the time "
|
||||||
|
"you spent on the different operations. The repair order uses the warranty "
|
||||||
|
"date on the production lot in order to know if whether the repair should be "
|
||||||
|
"invoiced to the customer or not."
|
||||||
|
msgstr ""
|
||||||
|
"修理オーダーは製品の修理を手配します。修理オーダーでは、取除いた、追加した、交換した部品を詳述でき、異なる操作で費やした時間を記録できます。修理オーダーは"
|
||||||
|
"、その修理を顧客に請求すべきであるかどうかを知るために生産ロットの保証日付を使用します。"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
msgid "Group By..."
|
||||||
|
msgstr "グループ化…"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
msgid "Recreate Invoice"
|
||||||
|
msgstr "請求書再作成"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: help:mrp.repair,deliver_bool:0
|
||||||
|
msgid ""
|
||||||
|
"Check this box if you want to manage the delivery once the product is "
|
||||||
|
"repaired. If cheked, it will create a picking with selected product. Note "
|
||||||
|
"that you can select the locations in the Info tab, if you have the extended "
|
||||||
|
"view."
|
||||||
|
msgstr ""
|
||||||
|
"製品が修理された後の配送を管理したい場合、このボックスをチェックして下さい。チェックすると、製品の選択とともに集荷を作成します。拡張ビューをしている場合は"
|
||||||
|
"、情報タブで場所を指定することができます。"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: model:ir.actions.act_window,name:mrp_repair.action_cancel_repair
|
||||||
|
#: view:mrp.repair.cancel:0
|
||||||
|
msgid "Cancel Repair Order"
|
||||||
|
msgstr "修理オーダーのキャンセル"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: field:mrp.repair.fee,to_invoice:0
|
||||||
|
#: field:mrp.repair.line,to_invoice:0
|
||||||
|
msgid "To Invoice"
|
||||||
|
msgstr "請求対象"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: report:repair.order:0
|
||||||
|
msgid "Printing Date"
|
||||||
|
msgstr "印刷日"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: field:mrp.repair.make_invoice,group:0
|
||||||
|
msgid "Group by partner invoice address"
|
||||||
|
msgstr "パートナの請求書住所によるグループ"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: code:addons/mrp_repair/mrp_repair.py:435
|
||||||
|
#, python-format
|
||||||
|
msgid "No product defined on Fees!"
|
||||||
|
msgstr "料金が定義されていない製品です。"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
#: field:mrp.repair,company_id:0
|
||||||
|
msgid "Company"
|
||||||
|
msgstr "会社"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
msgid "Set to Draft"
|
||||||
|
msgstr "ドラフトに設定"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: selection:mrp.repair,state:0
|
||||||
|
msgid "Invoice Exception"
|
||||||
|
msgstr "請求書の例外"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: field:mrp.repair,address_id:0
|
||||||
|
msgid "Delivery Address"
|
||||||
|
msgstr "配達住所"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: model:ir.actions.act_window,name:mrp_repair.act_mrp_repair_invoice
|
||||||
|
#: model:ir.model,name:mrp_repair.model_mrp_repair_make_invoice
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
msgid "Make Invoice"
|
||||||
|
msgstr "請求書作成"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: field:mrp.repair.fee,price_subtotal:0
|
||||||
|
#: field:mrp.repair.line,price_subtotal:0
|
||||||
|
msgid "Subtotal"
|
||||||
|
msgstr "小計"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: report:repair.order:0
|
||||||
|
msgid "Invoice address :"
|
||||||
|
msgstr "請求書住所:"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
#: field:mrp.repair,guarantee_limit:0
|
||||||
|
msgid "Guarantee limit"
|
||||||
|
msgstr "保証制限"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
msgid "Notes"
|
||||||
|
msgstr "注記"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
#: field:mrp.repair,amount_tax:0
|
||||||
|
#: field:mrp.repair.fee,tax_id:0
|
||||||
|
#: field:mrp.repair.line,tax_id:0
|
||||||
|
msgid "Taxes"
|
||||||
|
msgstr "税金"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: report:repair.order:0
|
||||||
|
msgid "Net Total :"
|
||||||
|
msgstr "合計:"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: code:addons/mrp_repair/mrp_repair.py:435
|
||||||
|
#, python-format
|
||||||
|
msgid "Warning !"
|
||||||
|
msgstr "警告"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: report:repair.order:0
|
||||||
|
msgid "VAT"
|
||||||
|
msgstr "消費税"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
msgid "Operations"
|
||||||
|
msgstr "操作"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: field:mrp.repair,move_id:0
|
||||||
|
msgid "Move"
|
||||||
|
msgstr "移動"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: code:addons/mrp_repair/mrp_repair.py:370
|
||||||
|
#, python-format
|
||||||
|
msgid "You have to select a Partner Invoice Address in the repair form !"
|
||||||
|
msgstr "修理フォームではパートなの請求書住所を選択する必要があります。"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: model:ir.actions.act_window,name:mrp_repair.action_repair_order_tree
|
||||||
|
#: model:ir.ui.menu,name:mrp_repair.menu_repair_order
|
||||||
|
msgid "Repair Orders"
|
||||||
|
msgstr "修理オーダー"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: model:ir.actions.report.xml,name:mrp_repair.report_mrp_repair
|
||||||
|
msgid "Quotation / Order"
|
||||||
|
msgstr "見積 / オーダー"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: code:addons/mrp_repair/mrp_repair.py:337
|
||||||
|
#, python-format
|
||||||
|
msgid "Warning"
|
||||||
|
msgstr "警告"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
msgid "Extra Info"
|
||||||
|
msgstr "追加情報"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: field:mrp.repair.fee,repair_id:0
|
||||||
|
#: field:mrp.repair.line,repair_id:0
|
||||||
|
msgid "Repair Order Reference"
|
||||||
|
msgstr "修理オーダー参照"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: selection:mrp.repair.line,state:0
|
||||||
|
msgid "Draft"
|
||||||
|
msgstr "ドラフト"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: code:addons/mrp_repair/mrp_repair.py:384
|
||||||
|
#, python-format
|
||||||
|
msgid "No account defined for partner \"%s\"."
|
||||||
|
msgstr "パートナ %s にアカウントが定義されていません。"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
#: selection:mrp.repair,state:0
|
||||||
|
#: selection:mrp.repair.line,state:0
|
||||||
|
msgid "Confirmed"
|
||||||
|
msgstr "確認済"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
msgid "Repairs order"
|
||||||
|
msgstr "修理オーダー"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: report:repair.order:0
|
||||||
|
msgid "Repair Order N° :"
|
||||||
|
msgstr "修理オーダー番号:"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: field:mrp.repair,prodlot_id:0
|
||||||
|
#: field:mrp.repair.line,prodlot_id:0
|
||||||
|
#: report:repair.order:0
|
||||||
|
msgid "Lot Number"
|
||||||
|
msgstr "ロット番号"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: field:mrp.repair,fees_lines:0
|
||||||
|
msgid "Fees Lines"
|
||||||
|
msgstr "料金行"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: field:mrp.repair.line,type:0
|
||||||
|
msgid "Type"
|
||||||
|
msgstr "タイプ"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: report:repair.order:0
|
||||||
|
msgid "Fees Line(s)"
|
||||||
|
msgstr "料金行"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: selection:mrp.repair,state:0
|
||||||
|
msgid "To be Invoiced"
|
||||||
|
msgstr "請求"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: report:repair.order:0
|
||||||
|
msgid "Shipping address :"
|
||||||
|
msgstr "送付先:"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: code:addons/mrp_repair/mrp_repair.py:334
|
||||||
|
#: code:addons/mrp_repair/mrp_repair.py:384
|
||||||
|
#: code:addons/mrp_repair/mrp_repair.py:413
|
||||||
|
#: code:addons/mrp_repair/mrp_repair.py:442
|
||||||
|
#, python-format
|
||||||
|
msgid "Error !"
|
||||||
|
msgstr "エラー"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: field:mrp.repair.line,product_uom_qty:0
|
||||||
|
msgid "Quantity (UoM)"
|
||||||
|
msgstr "数量"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: help:mrp.repair.line,state:0
|
||||||
|
msgid ""
|
||||||
|
" * The 'Draft' state is set automatically as draft when repair order in "
|
||||||
|
"draft state. \n"
|
||||||
|
"* The 'Confirmed' state is set automatically as confirm when repair order in "
|
||||||
|
"confirm state. \n"
|
||||||
|
"* The 'Done' state is set automatically when repair order is completed. "
|
||||||
|
" \n"
|
||||||
|
"* The 'Cancelled' state is set automatically when user cancel repair order."
|
||||||
|
msgstr ""
|
||||||
|
" ・ ドラフト状態は、修理オーダーがドラフト状態の時に自動的に設定されます。\n"
|
||||||
|
"・ 確認済状態は、修理オーダーが確認状態の時に自動的に設定されます。\n"
|
||||||
|
"・ 完了状態は、修理オーダーが完了した時に自動的に設定されます。\n"
|
||||||
|
"・ キャンセル済状態は、ユーザが修理オーダーをキャンセルした時に設定されます。"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: report:repair.order:0
|
||||||
|
msgid "Total :"
|
||||||
|
msgstr "合計:"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair.cancel:0
|
||||||
|
msgid ""
|
||||||
|
"This operation will cancel the Repair process, but will not cancel it's "
|
||||||
|
"Invoice. Do you want to continue?"
|
||||||
|
msgstr "この操作は修理処理でキャンセルされます。しかし、その請求書はキャンセルできません。続行しますか?"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: field:mrp.repair,pricelist_id:0
|
||||||
|
msgid "Pricelist"
|
||||||
|
msgstr "価格リスト"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
#: field:mrp.repair,quotation_notes:0
|
||||||
|
msgid "Quotation Notes"
|
||||||
|
msgstr "見積注記"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: code:addons/mrp_repair/wizard/cancel_repair.py:49
|
||||||
|
#, python-format
|
||||||
|
msgid "Warning!"
|
||||||
|
msgstr "警告"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
msgid "Search Reair Orders"
|
||||||
|
msgstr "修理オーダー検索"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: report:repair.order:0
|
||||||
|
msgid "(Add)"
|
||||||
|
msgstr "(追加)"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: model:ir.model,name:mrp_repair.model_mrp_repair_line
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
msgid "Repair Line"
|
||||||
|
msgstr "修理行"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
#: field:mrp.repair,partner_id:0
|
||||||
|
msgid "Partner"
|
||||||
|
msgstr "パートナ"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: field:mrp.repair,invoice_method:0
|
||||||
|
msgid "Invoice Method"
|
||||||
|
msgstr "請求の方法"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: field:mrp.repair,repaired:0
|
||||||
|
msgid "Repaired"
|
||||||
|
msgstr "修理済"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: field:mrp.repair.fee,invoice_line_id:0
|
||||||
|
#: field:mrp.repair.line,invoice_line_id:0
|
||||||
|
msgid "Invoice Line"
|
||||||
|
msgstr "請求書行"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: selection:mrp.repair.line,state:0
|
||||||
|
msgid "Canceled"
|
||||||
|
msgstr "キャンセル済"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: code:addons/mrp_repair/mrp_repair.py:337
|
||||||
|
#, python-format
|
||||||
|
msgid "Production lot is required for opration line with product '%s'"
|
||||||
|
msgstr "生産ロットは製品 %s が操作ラインのために必要です。"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: selection:mrp.repair,invoice_method:0
|
||||||
|
msgid "Before Repair"
|
||||||
|
msgstr "修理前"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: field:mrp.repair,location_id:0
|
||||||
|
msgid "Current Location"
|
||||||
|
msgstr "現在の場所"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair.cancel:0
|
||||||
|
msgid "Yes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: field:mrp.repair,invoiced:0
|
||||||
|
#: field:mrp.repair.fee,invoiced:0
|
||||||
|
#: field:mrp.repair.line,invoiced:0
|
||||||
|
msgid "Invoiced"
|
||||||
|
msgstr "請求済"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair.cancel:0
|
||||||
|
msgid "No"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair.make_invoice:0
|
||||||
|
msgid "Create invoices"
|
||||||
|
msgstr "請求書作成"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: report:repair.order:0
|
||||||
|
msgid "(Remove)"
|
||||||
|
msgstr "(取除く)"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: selection:mrp.repair.line,type:0
|
||||||
|
msgid "Add"
|
||||||
|
msgstr "追加"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair.make_invoice:0
|
||||||
|
msgid "Do you really want to create the invoice(s)?"
|
||||||
|
msgstr "本当に請求書を作成しますか?"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: field:mrp.repair,name:0
|
||||||
|
msgid "Repair Reference"
|
||||||
|
msgstr "修理参照"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: model:ir.model,name:mrp_repair.model_mrp_repair
|
||||||
|
msgid "Repair Order"
|
||||||
|
msgstr "修理オーダー"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: selection:mrp.repair,state:0
|
||||||
|
msgid "Under Repair"
|
||||||
|
msgstr "修理中"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
msgid "Ready To Repair"
|
||||||
|
msgstr "修理準備完了"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: field:mrp.repair,amount_untaxed:0
|
||||||
|
msgid "Untaxed Amount"
|
||||||
|
msgstr "非課税金額"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: report:repair.order:0
|
||||||
|
msgid "Guarantee Limit"
|
||||||
|
msgstr "保証制限"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: field:mrp.repair,default_address_id:0
|
||||||
|
msgid "unknown"
|
||||||
|
msgstr "不明"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: field:mrp.repair,product_id:0
|
||||||
|
#: report:repair.order:0
|
||||||
|
msgid "Product to Repair"
|
||||||
|
msgstr "修理製品"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: report:repair.order:0
|
||||||
|
msgid "N° :"
|
||||||
|
msgstr "番号:"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: help:mrp.repair,pricelist_id:0
|
||||||
|
msgid "The pricelist comes from the selected partner, by default."
|
||||||
|
msgstr "価格リストはデフォルトで選択したパートナから来ます。"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
msgid "Date"
|
||||||
|
msgstr "日付"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: model:ir.model,name:mrp_repair.model_mrp_repair_fee
|
||||||
|
msgid "Repair Fees Line"
|
||||||
|
msgstr "修理費行"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: code:addons/mrp_repair/mrp_repair.py:334
|
||||||
|
#, python-format
|
||||||
|
msgid "You cannot confirm a repair order which has no line."
|
||||||
|
msgstr "修理行には明細行がないため確認できません。"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: selection:mrp.repair,state:0
|
||||||
|
msgid "Quotation"
|
||||||
|
msgstr "見積"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
msgid "Compute"
|
||||||
|
msgstr "計算"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
msgid "Confirm Repair"
|
||||||
|
msgstr "修理の確認"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: report:repair.order:0
|
||||||
|
msgid "Repair Quotation"
|
||||||
|
msgstr "修理見積"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
msgid "End Repair"
|
||||||
|
msgstr "修理終了"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: code:addons/mrp_repair/mrp_repair.py:413
|
||||||
|
#: code:addons/mrp_repair/mrp_repair.py:442
|
||||||
|
#, python-format
|
||||||
|
msgid "No account defined for product \"%s\"."
|
||||||
|
msgstr "製品 %s のアカウントが定義されていません。"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
msgid "Quotations"
|
||||||
|
msgstr "見積"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: field:mrp.repair.fee,product_uom_qty:0
|
||||||
|
#: report:repair.order:0
|
||||||
|
msgid "Quantity"
|
||||||
|
msgstr "数量"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
msgid "Start Repair"
|
||||||
|
msgstr "修理開始"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
#: field:mrp.repair,state:0
|
||||||
|
#: field:mrp.repair.line,state:0
|
||||||
|
msgid "State"
|
||||||
|
msgstr "状態"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
msgid "Qty"
|
||||||
|
msgstr "数量"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: field:mrp.repair.fee,price_unit:0
|
||||||
|
#: field:mrp.repair.line,price_unit:0
|
||||||
|
#: report:repair.order:0
|
||||||
|
msgid "Unit Price"
|
||||||
|
msgstr "単価"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: selection:mrp.repair,state:0
|
||||||
|
#: selection:mrp.repair.line,state:0
|
||||||
|
msgid "Done"
|
||||||
|
msgstr "完了"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: help:mrp.repair,guarantee_limit:0
|
||||||
|
msgid ""
|
||||||
|
"The guarantee limit is computed as: last move date + warranty defined on "
|
||||||
|
"selected product. If the current date is below the guarantee limit, each "
|
||||||
|
"operation and fee you will add will be set as 'not to invoiced' by default. "
|
||||||
|
"Note that you can change manually afterwards."
|
||||||
|
msgstr ""
|
||||||
|
"保証制限は次のように計算されます:最終移動日+選択製品で定義された保証期間。現在日付が保証期限内であれば、各操作と料金にはデフォルトで請求外としてセットさ"
|
||||||
|
"れます。その後、手作業で変更ができます。"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: field:mrp.repair,invoice_id:0
|
||||||
|
msgid "Invoice"
|
||||||
|
msgstr "請求書"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
msgid "Fees"
|
||||||
|
msgstr "費用"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: selection:mrp.repair,state:0
|
||||||
|
#: view:mrp.repair.make_invoice:0
|
||||||
|
msgid "Cancel"
|
||||||
|
msgstr "キャンセル"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: field:mrp.repair.line,location_dest_id:0
|
||||||
|
msgid "Dest. Location"
|
||||||
|
msgstr "宛先場所"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: report:repair.order:0
|
||||||
|
msgid "Operation Line(s)"
|
||||||
|
msgstr "操作行"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
msgid "History"
|
||||||
|
msgstr "履歴"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: field:mrp.repair,location_dest_id:0
|
||||||
|
msgid "Delivery Location"
|
||||||
|
msgstr "配達場所"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: help:mrp.repair,invoice_method:0
|
||||||
|
msgid ""
|
||||||
|
"This field allow you to change the workflow of the repair order. If value "
|
||||||
|
"selected is different from 'No Invoice', it also allow you to select the "
|
||||||
|
"pricelist and invoicing address."
|
||||||
|
msgstr ""
|
||||||
|
"この項目は修理オーダーのワークフローを変更することを許します。請求書なしと異なる値が選択された場合、価格リストと請求書住所の選択ができます。"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair.make_invoice:0
|
||||||
|
msgid "Create Invoice"
|
||||||
|
msgstr "請求書作成"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: field:mrp.repair.fee,name:0
|
||||||
|
#: field:mrp.repair.line,name:0
|
||||||
|
#: report:repair.order:0
|
||||||
|
msgid "Description"
|
||||||
|
msgstr "説明"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: field:mrp.repair,operations:0
|
||||||
|
msgid "Operation Lines"
|
||||||
|
msgstr "操作行"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
msgid "invoiced"
|
||||||
|
msgstr "請求済"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
#: field:mrp.repair.fee,product_id:0
|
||||||
|
#: field:mrp.repair.line,product_id:0
|
||||||
|
msgid "Product"
|
||||||
|
msgstr "製品"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
msgid "Invoice Corrected"
|
||||||
|
msgstr "修正された請求書"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: report:repair.order:0
|
||||||
|
msgid "Price"
|
||||||
|
msgstr "価格"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: field:mrp.repair,deliver_bool:0
|
||||||
|
msgid "Deliver"
|
||||||
|
msgstr "配達"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
#: field:mrp.repair,internal_notes:0
|
||||||
|
msgid "Internal Notes"
|
||||||
|
msgstr "内部注記"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: report:repair.order:0
|
||||||
|
msgid "Taxes:"
|
||||||
|
msgstr "税金:"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: field:mrp.repair,picking_id:0
|
||||||
|
msgid "Picking"
|
||||||
|
msgstr "集荷"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
msgid "Untaxed amount"
|
||||||
|
msgstr "税抜金額"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: code:addons/mrp_repair/wizard/cancel_repair.py:41
|
||||||
|
#, python-format
|
||||||
|
msgid "Active ID is not Found"
|
||||||
|
msgstr "アクティブIDが見つかりません。"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: code:addons/mrp_repair/wizard/cancel_repair.py:49
|
||||||
|
#, python-format
|
||||||
|
msgid "Repair order is not invoiced."
|
||||||
|
msgstr "修理オーダーは請求されていません。"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
msgid "Total amount"
|
||||||
|
msgstr "合計金額"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
msgid "UoM"
|
||||||
|
msgstr "単位"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: selection:mrp.repair.line,type:0
|
||||||
|
msgid "Remove"
|
||||||
|
msgstr "取除く"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: field:mrp.repair.fee,product_uom:0
|
||||||
|
#: field:mrp.repair.line,product_uom:0
|
||||||
|
msgid "Product UoM"
|
||||||
|
msgstr "製品単位"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: field:mrp.repair,partner_invoice_id:0
|
||||||
|
msgid "Invoicing Address"
|
||||||
|
msgstr "請求住所"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: selection:mrp.repair,invoice_method:0
|
||||||
|
msgid "After Repair"
|
||||||
|
msgstr "修理後"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
msgid "Invoicing"
|
||||||
|
msgstr "請求中"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: field:mrp.repair.line,location_id:0
|
||||||
|
msgid "Source Location"
|
||||||
|
msgstr "元の場所"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: model:ir.model,name:mrp_repair.model_mrp_repair_cancel
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
msgid "Cancel Repair"
|
||||||
|
msgstr "修理のキャンセル"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: selection:mrp.repair,invoice_method:0
|
||||||
|
msgid "No Invoice"
|
||||||
|
msgstr "請求外"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: view:mrp.repair:0
|
||||||
|
msgid "States"
|
||||||
|
msgstr "状態"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: help:mrp.repair,partner_id:0
|
||||||
|
msgid ""
|
||||||
|
"This field allow you to choose the parner that will be invoiced and delivered"
|
||||||
|
msgstr "この項目は請求して配信されるパートナを選択することを許します。"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: field:mrp.repair,amount_total:0
|
||||||
|
msgid "Total"
|
||||||
|
msgstr "合計"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: selection:mrp.repair,state:0
|
||||||
|
msgid "Ready to Repair"
|
||||||
|
msgstr "修理準備完了"
|
||||||
|
|
||||||
|
#. module: mrp_repair
|
||||||
|
#: code:addons/mrp_repair/mrp_repair.py:370
|
||||||
|
#, python-format
|
||||||
|
msgid "No partner !"
|
||||||
|
msgstr "パートナがありません。"
|
|
@ -0,0 +1,128 @@
|
||||||
|
# Japanese translation for openobject-addons
|
||||||
|
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||||
|
# This file is distributed under the same license as the openobject-addons package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openobject-addons\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||||
|
"PO-Revision-Date: 2012-05-31 06:38+0000\n"
|
||||||
|
"Last-Translator: Akira Hiyama <Unknown>\n"
|
||||||
|
"Language-Team: Japanese <ja@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-06-01 05:33+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 15342)\n"
|
||||||
|
|
||||||
|
#. module: mrp_subproduct
|
||||||
|
#: field:mrp.subproduct,product_id:0
|
||||||
|
msgid "Product"
|
||||||
|
msgstr "製品"
|
||||||
|
|
||||||
|
#. module: mrp_subproduct
|
||||||
|
#: selection:mrp.subproduct,subproduct_type:0
|
||||||
|
msgid "Fixed"
|
||||||
|
msgstr "固定"
|
||||||
|
|
||||||
|
#. module: mrp_subproduct
|
||||||
|
#: sql_constraint:mrp.bom:0
|
||||||
|
msgid ""
|
||||||
|
"All product quantities must be greater than 0.\n"
|
||||||
|
"You should install the mrp_subproduct module if you want to manage extra "
|
||||||
|
"products on BoMs !"
|
||||||
|
msgstr ""
|
||||||
|
"全製品の数量は0より大きい必要があります。\n"
|
||||||
|
"部品表上で追加の製品を管理したい場合は、mrp_subproductモジュールをインストールする必要があります。"
|
||||||
|
|
||||||
|
#. module: mrp_subproduct
|
||||||
|
#: view:mrp.bom:0
|
||||||
|
msgid "sub products"
|
||||||
|
msgstr "サブ製品"
|
||||||
|
|
||||||
|
#. module: mrp_subproduct
|
||||||
|
#: model:ir.model,name:mrp_subproduct.model_mrp_production
|
||||||
|
msgid "Manufacturing Order"
|
||||||
|
msgstr "製造オーダー"
|
||||||
|
|
||||||
|
#. module: mrp_subproduct
|
||||||
|
#: constraint:mrp.bom:0
|
||||||
|
msgid "BoM line product should not be same as BoM product."
|
||||||
|
msgstr "部品表のライン製品は部品表製品と同じではいけません。"
|
||||||
|
|
||||||
|
#. module: mrp_subproduct
|
||||||
|
#: view:mrp.bom:0
|
||||||
|
msgid "Sub Products"
|
||||||
|
msgstr "サブ製品"
|
||||||
|
|
||||||
|
#. module: mrp_subproduct
|
||||||
|
#: field:mrp.subproduct,subproduct_type:0
|
||||||
|
msgid "Quantity Type"
|
||||||
|
msgstr "数量タイプ"
|
||||||
|
|
||||||
|
#. module: mrp_subproduct
|
||||||
|
#: model:ir.model,name:mrp_subproduct.model_mrp_bom
|
||||||
|
msgid "Bill of Material"
|
||||||
|
msgstr "部品表"
|
||||||
|
|
||||||
|
#. module: mrp_subproduct
|
||||||
|
#: field:mrp.subproduct,product_qty:0
|
||||||
|
msgid "Product Qty"
|
||||||
|
msgstr "製品数量"
|
||||||
|
|
||||||
|
#. module: mrp_subproduct
|
||||||
|
#: field:mrp.subproduct,product_uom:0
|
||||||
|
msgid "Product UOM"
|
||||||
|
msgstr "製品単位"
|
||||||
|
|
||||||
|
#. module: mrp_subproduct
|
||||||
|
#: field:mrp.subproduct,bom_id:0
|
||||||
|
msgid "BoM"
|
||||||
|
msgstr "部品表"
|
||||||
|
|
||||||
|
#. module: mrp_subproduct
|
||||||
|
#: sql_constraint:mrp.production:0
|
||||||
|
msgid "Reference must be unique per Company!"
|
||||||
|
msgstr "参照は会社ごとに固有でなければいけません。"
|
||||||
|
|
||||||
|
#. module: mrp_subproduct
|
||||||
|
#: field:mrp.bom,sub_products:0
|
||||||
|
msgid "sub_products"
|
||||||
|
msgstr "サブ製品"
|
||||||
|
|
||||||
|
#. module: mrp_subproduct
|
||||||
|
#: selection:mrp.subproduct,subproduct_type:0
|
||||||
|
msgid "Variable"
|
||||||
|
msgstr "変数"
|
||||||
|
|
||||||
|
#. module: mrp_subproduct
|
||||||
|
#: model:ir.model,name:mrp_subproduct.model_mrp_subproduct
|
||||||
|
msgid "Sub Product"
|
||||||
|
msgstr "サブ製品"
|
||||||
|
|
||||||
|
#. module: mrp_subproduct
|
||||||
|
#: constraint:mrp.production:0
|
||||||
|
msgid "Order quantity cannot be negative or zero!"
|
||||||
|
msgstr "オーダー数量は負または0にはできません。"
|
||||||
|
|
||||||
|
#. module: mrp_subproduct
|
||||||
|
#: help:mrp.subproduct,subproduct_type:0
|
||||||
|
msgid ""
|
||||||
|
"Define how the quantity of subproducts will be set on the production orders "
|
||||||
|
"using this BoM. 'Fixed' depicts a situation where the quantity of created "
|
||||||
|
"subproduct is always equal to the quantity set on the BoM, regardless of how "
|
||||||
|
"many are created in the production order. By opposition, 'Variable' means "
|
||||||
|
"that the quantity will be computed as '(quantity of subproduct set on the "
|
||||||
|
"BoM / quantity of manufactured product set on the BoM * quantity of "
|
||||||
|
"manufactured product in the production order.)'"
|
||||||
|
msgstr ""
|
||||||
|
"この部品表を使った生産オーダー上にセットされるサブ製品の数量をどのくらいにするかを定義して下さい。固定は、生産オーダーによってどのくらい作成されるのかに関"
|
||||||
|
"係なく、作成されるサブ製品の数量は部品表上にセットする数量といつも一致します。反対に可変は、その数量は(部品表上のサブ製品設定の数量 / "
|
||||||
|
"部品表情の製造製品設定の数量 * 生産オーダーの製造製品の数量)として計算されます。"
|
||||||
|
|
||||||
|
#. module: mrp_subproduct
|
||||||
|
#: constraint:mrp.bom:0
|
||||||
|
msgid "Error ! You cannot create recursive BoM."
|
||||||
|
msgstr "エラー。再帰的な部品表を作ることはできません。"
|
|
@ -0,0 +1,97 @@
|
||||||
|
# Japanese translation for openobject-addons
|
||||||
|
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||||
|
# This file is distributed under the same license as the openobject-addons package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openobject-addons\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2012-02-08 00:36+0000\n"
|
||||||
|
"PO-Revision-Date: 2012-05-31 06:13+0000\n"
|
||||||
|
"Last-Translator: Akira Hiyama <Unknown>\n"
|
||||||
|
"Language-Team: Japanese <ja@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-06-01 05:33+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 15342)\n"
|
||||||
|
|
||||||
|
#. module: multi_company
|
||||||
|
#: model:res.company,overdue_msg:multi_company.res_company_odoo
|
||||||
|
#: model:res.company,overdue_msg:multi_company.res_company_oerp_be
|
||||||
|
#: model:res.company,overdue_msg:multi_company.res_company_oerp_editor
|
||||||
|
#: model:res.company,overdue_msg:multi_company.res_company_oerp_in
|
||||||
|
#: model:res.company,overdue_msg:multi_company.res_company_oerp_us
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
"Date: %(date)s\n"
|
||||||
|
"\n"
|
||||||
|
"Dear %(partner_name)s,\n"
|
||||||
|
"\n"
|
||||||
|
"Please find in attachment a reminder of all your unpaid invoices, for a "
|
||||||
|
"total amount due of:\n"
|
||||||
|
"\n"
|
||||||
|
"%(followup_amount).2f %(company_currency)s\n"
|
||||||
|
"\n"
|
||||||
|
"Thanks,\n"
|
||||||
|
"--\n"
|
||||||
|
"%(user_signature)s\n"
|
||||||
|
"%(company_name)s\n"
|
||||||
|
" "
|
||||||
|
msgstr ""
|
||||||
|
"\n"
|
||||||
|
"日付:%(date)s\n"
|
||||||
|
"\n"
|
||||||
|
"%(partner_name)s 様、\n"
|
||||||
|
"\n"
|
||||||
|
"どうぞ、添付いたしました御社のお支払をいただいていない請求書をご確認下さい。合計金額は次のとおりです:\n"
|
||||||
|
"\n"
|
||||||
|
"%(followup_amount).2f %(company_currency)s\n"
|
||||||
|
"\n"
|
||||||
|
"それではよろしくお願いいたします。\n"
|
||||||
|
"--\n"
|
||||||
|
"%(user_signature)s\n"
|
||||||
|
"%(company_name)s\n"
|
||||||
|
" "
|
||||||
|
|
||||||
|
#. module: multi_company
|
||||||
|
#: model:product.category,name:multi_company.Odoo1
|
||||||
|
msgid "Odoo Offers"
|
||||||
|
msgstr "Odoo提案"
|
||||||
|
|
||||||
|
#. module: multi_company
|
||||||
|
#: view:multi_company.default:0
|
||||||
|
msgid "Returning"
|
||||||
|
msgstr "返品"
|
||||||
|
|
||||||
|
#. module: multi_company
|
||||||
|
#: model:ir.ui.menu,name:multi_company.menu_custom_multicompany
|
||||||
|
msgid "Multi-Companies"
|
||||||
|
msgstr "多角化会社"
|
||||||
|
|
||||||
|
#. module: multi_company
|
||||||
|
#: view:multi_company.default:0
|
||||||
|
msgid "Multi Company"
|
||||||
|
msgstr "多角化会社"
|
||||||
|
|
||||||
|
#. module: multi_company
|
||||||
|
#: model:ir.actions.act_window,name:multi_company.action_inventory_form
|
||||||
|
#: model:ir.ui.menu,name:multi_company.menu_action_inventory_form
|
||||||
|
msgid "Default Company per Object"
|
||||||
|
msgstr "オブジェクト毎のデフォルト会社"
|
||||||
|
|
||||||
|
#. module: multi_company
|
||||||
|
#: view:multi_company.default:0
|
||||||
|
msgid "Matching"
|
||||||
|
msgstr "マッチング"
|
||||||
|
|
||||||
|
#. module: multi_company
|
||||||
|
#: view:multi_company.default:0
|
||||||
|
msgid "Condition"
|
||||||
|
msgstr "条件"
|
||||||
|
|
||||||
|
#. module: multi_company
|
||||||
|
#: model:product.template,name:multi_company.product_product_odoo1_product_template
|
||||||
|
msgid "Odoo Offer"
|
||||||
|
msgstr "Odoo提案"
|
|
@ -0,0 +1,100 @@
|
||||||
|
# Japanese translation for openobject-addons
|
||||||
|
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||||
|
# This file is distributed under the same license as the openobject-addons package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openobject-addons\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2012-02-09 00:36+0000\n"
|
||||||
|
"PO-Revision-Date: 2012-05-31 22:07+0000\n"
|
||||||
|
"Last-Translator: Akira Hiyama <Unknown>\n"
|
||||||
|
"Language-Team: Japanese <ja@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-06-01 05:33+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 15342)\n"
|
||||||
|
|
||||||
|
#. module: plugin_thunderbird
|
||||||
|
#: field:plugin_thunderbird.installer,pdf_file:0
|
||||||
|
msgid "Installation Manual"
|
||||||
|
msgstr "インストールマニュアル"
|
||||||
|
|
||||||
|
#. module: plugin_thunderbird
|
||||||
|
#: field:plugin_thunderbird.installer,description:0
|
||||||
|
msgid "Description"
|
||||||
|
msgstr "説明"
|
||||||
|
|
||||||
|
#. module: plugin_thunderbird
|
||||||
|
#: view:plugin_thunderbird.installer:0
|
||||||
|
msgid "title"
|
||||||
|
msgstr "タイトル"
|
||||||
|
|
||||||
|
#. module: plugin_thunderbird
|
||||||
|
#: model:ir.model,name:plugin_thunderbird.model_plugin_thunderbird_installer
|
||||||
|
msgid "plugin_thunderbird.installer"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: plugin_thunderbird
|
||||||
|
#: field:plugin_thunderbird.installer,config_logo:0
|
||||||
|
msgid "Image"
|
||||||
|
msgstr "画像"
|
||||||
|
|
||||||
|
#. module: plugin_thunderbird
|
||||||
|
#: field:plugin_thunderbird.installer,plugin_file:0
|
||||||
|
#: field:plugin_thunderbird.installer,thunderbird:0
|
||||||
|
msgid "Thunderbird Plug-in"
|
||||||
|
msgstr "Thunderbirdプラグイン"
|
||||||
|
|
||||||
|
#. module: plugin_thunderbird
|
||||||
|
#: view:plugin_thunderbird.installer:0
|
||||||
|
msgid ""
|
||||||
|
"This plug-in allows you to link your e-mail to OpenERP's documents. You can "
|
||||||
|
"attach it to any existing one in OpenERP or create a new one."
|
||||||
|
msgstr ""
|
||||||
|
"このプラグインはあなたのEメールをOpenERPのドキュメントにリンクさせることができます。OpenERPの既存あるいは新しく作成したドキュメントを添付で"
|
||||||
|
"きます。"
|
||||||
|
|
||||||
|
#. module: plugin_thunderbird
|
||||||
|
#: help:plugin_thunderbird.installer,thunderbird:0
|
||||||
|
msgid ""
|
||||||
|
"Allows you to select an object that you would like to add to your email and "
|
||||||
|
"its attachments."
|
||||||
|
msgstr "あなたがEメールに追加したい、添付したいオブジェクトを選択するのが許されます。"
|
||||||
|
|
||||||
|
#. module: plugin_thunderbird
|
||||||
|
#: help:plugin_thunderbird.installer,pdf_file:0
|
||||||
|
msgid "The documentation file :- how to install Thunderbird Plug-in."
|
||||||
|
msgstr "ドキュメントファイル:Thunderbirdプラグインのインストール方法"
|
||||||
|
|
||||||
|
#. module: plugin_thunderbird
|
||||||
|
#: view:plugin_thunderbird.installer:0
|
||||||
|
msgid "_Close"
|
||||||
|
msgstr "閉じる"
|
||||||
|
|
||||||
|
#. module: plugin_thunderbird
|
||||||
|
#: view:plugin_thunderbird.installer:0
|
||||||
|
msgid "Installation and Configuration Steps"
|
||||||
|
msgstr "インストールと設定の手順"
|
||||||
|
|
||||||
|
#. module: plugin_thunderbird
|
||||||
|
#: field:plugin_thunderbird.installer,name:0
|
||||||
|
#: field:plugin_thunderbird.installer,pdf_name:0
|
||||||
|
msgid "File name"
|
||||||
|
msgstr "ファイル名"
|
||||||
|
|
||||||
|
#. module: plugin_thunderbird
|
||||||
|
#: help:plugin_thunderbird.installer,plugin_file:0
|
||||||
|
msgid ""
|
||||||
|
"Thunderbird plug-in file. Save as this file and install this plug-in in "
|
||||||
|
"thunderbird."
|
||||||
|
msgstr "Thunderbirdプラグインファイル。このファイルを保存し、Thunderbirdの中にこのプラグインをインストールして下さい。"
|
||||||
|
|
||||||
|
#. module: plugin_thunderbird
|
||||||
|
#: model:ir.actions.act_window,name:plugin_thunderbird.action_thunderbird_installer
|
||||||
|
#: model:ir.ui.menu,name:plugin_thunderbird.menu_base_config_plugins_thunderbird
|
||||||
|
#: view:plugin_thunderbird.installer:0
|
||||||
|
msgid "Install Thunderbird Plug-In"
|
||||||
|
msgstr "Thunderbirdプラグインのインストール"
|
File diff suppressed because it is too large
Load Diff
|
@ -28,7 +28,7 @@
|
||||||
"category": "Project Management",
|
"category": "Project Management",
|
||||||
"sequence": 8,
|
"sequence": 8,
|
||||||
"images": ["images/gantt.png", "images/project_dashboard.jpeg","images/project_task_tree.jpeg","images/project_task.jpeg","images/project.jpeg","images/task_analysis.jpeg"],
|
"images": ["images/gantt.png", "images/project_dashboard.jpeg","images/project_task_tree.jpeg","images/project_task.jpeg","images/project.jpeg","images/task_analysis.jpeg"],
|
||||||
"depends": ["base_setup", "product", "analytic", "board", "mail", "resource","web_kanban"],
|
"depends": ["base_setup", "base_status", "product", "analytic", "board", "mail", "resource","web_kanban"],
|
||||||
"description": """
|
"description": """
|
||||||
Project management module tracks multi-level projects, tasks, work done on tasks, eso.
|
Project management module tracks multi-level projects, tasks, work done on tasks, eso.
|
||||||
======================================================================================
|
======================================================================================
|
||||||
|
|
|
@ -17,11 +17,8 @@
|
||||||
<field name="planned_hours" widget="float_time"/>
|
<field name="planned_hours" widget="float_time"/>
|
||||||
<field name="effective_hours" widget="float_time"/>
|
<field name="effective_hours" widget="float_time"/>
|
||||||
<field name="progress" widget="progressbar"/>
|
<field name="progress" widget="progressbar"/>
|
||||||
<field name="state" invisible="context.get('set_visible',False)"/>
|
<field name="stage_id" invisible="context.get('set_visible',False)"/>
|
||||||
<button name="do_cancel" states="draft,open,pending" string="Cancel" type="object" icon="gtk-cancel" help="For cancelling the task"/>
|
<field name="state" invisible="context.get('set_visible',False)" groups="base.group_no_one"/>
|
||||||
<button name="do_open" states="pending,draft,done,cancel" string="Start Task" type="object" icon="gtk-execute" help="For changing to open state" invisible="context.get('set_visible',False)"/>
|
|
||||||
<button name="%(action_project_task_delegate)d" states="pending,open,draft" string="Delegate" type="action" icon="gtk-sort-descending" help="For changing to delegate state"/>
|
|
||||||
<button name="action_close" states="draft,pending,open" string="Done" type="object" icon="terp-dialog-close" help="For changing to done state"/>
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
@ -39,10 +36,8 @@
|
||||||
<field name="date_deadline"/>
|
<field name="date_deadline"/>
|
||||||
<field name="total_hours" widget="float_time"/>
|
<field name="total_hours" widget="float_time"/>
|
||||||
<field name="progress" widget="progressbar"/>
|
<field name="progress" widget="progressbar"/>
|
||||||
<field name="state" invisible="context.get('set_visible',False)"/>
|
<field name="stage_id" invisible="context.get('set_visible',False)"/>
|
||||||
<button name="do_cancel" states="draft,open,pending" string="Cancel" type="object" icon="gtk-cancel" help="For cancelling the task"/>
|
<field name="state" invisible="context.get('set_visible',False)" groups="base.group_no_one"/>
|
||||||
<button name="do_open" states="pending,draft,done,cancel" string="Start Task" type="object" icon="gtk-execute" help="For changing to open state" invisible="context.get('set_visible',False)"/>
|
|
||||||
<button name="action_close" states="draft,pending,open" string="Done" type="object" icon="gtk-apply" help="For changing to done state"/>
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
##############################################################################
|
##############################################################################
|
||||||
#
|
#
|
||||||
# OpenERP, Open Source Management Solution
|
# OpenERP, Open Source Management Solution
|
||||||
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
|
# Copyright (C) 2004-today OpenERP SA (<http://www.openerp.com>)
|
||||||
#
|
#
|
||||||
# This program is free software: you can redistribute it and/or modify
|
# This program is free software: you can redistribute it and/or modify
|
||||||
# it under the terms of the GNU Affero General Public License as
|
# it under the terms of the GNU Affero General Public License as
|
||||||
|
@ -19,18 +19,15 @@
|
||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
from lxml import etree
|
from base_status.base_stage import base_stage
|
||||||
import time
|
|
||||||
from datetime import datetime, date
|
from datetime import datetime, date
|
||||||
|
from lxml import etree
|
||||||
from tools.translate import _
|
|
||||||
from osv import fields, osv
|
from osv import fields, osv
|
||||||
from openerp.addons.resource.faces import task as Task
|
from openerp.addons.resource.faces import task as Task
|
||||||
|
import time
|
||||||
|
from tools.translate import _
|
||||||
|
|
||||||
# I think we can remove this in v6.1 since VMT's improvements in the framework ?
|
_TASK_STATE = [('draft', 'New'),('open', 'In Progress'),('pending', 'Pending'), ('done', 'Done'), ('cancelled', 'Cancelled')]
|
||||||
#class project_project(osv.osv):
|
|
||||||
# _name = 'project.project'
|
|
||||||
#project_project()
|
|
||||||
|
|
||||||
class project_task_type(osv.osv):
|
class project_task_type(osv.osv):
|
||||||
_name = 'project.task.type'
|
_name = 'project.task.type'
|
||||||
|
@ -40,14 +37,20 @@ class project_task_type(osv.osv):
|
||||||
'name': fields.char('Stage Name', required=True, size=64, translate=True),
|
'name': fields.char('Stage Name', required=True, size=64, translate=True),
|
||||||
'description': fields.text('Description'),
|
'description': fields.text('Description'),
|
||||||
'sequence': fields.integer('Sequence'),
|
'sequence': fields.integer('Sequence'),
|
||||||
'project_default': fields.boolean('Common to All Projects', help="If you check this field, this stage will be proposed by default on each new project. It will not assign this stage to existing projects."),
|
'case_default': fields.boolean('Common to All Projects',
|
||||||
|
help="If you check this field, this stage will be proposed by default on each new project. It will not assign this stage to existing projects."),
|
||||||
'project_ids': fields.many2many('project.project', 'project_task_type_rel', 'type_id', 'project_id', 'Projects'),
|
'project_ids': fields.many2many('project.project', 'project_task_type_rel', 'type_id', 'project_id', 'Projects'),
|
||||||
|
'state': fields.selection(_TASK_STATE, 'State', required=True,
|
||||||
|
help="The related state for the stage. The state of your document will automatically change regarding the selected stage. Example, a stage is related to the state 'Close', when your document reach this stage, it will be automatically closed."),
|
||||||
|
'fold': fields.boolean('Hide in views if empty',
|
||||||
|
help="This stage is not visible, for example in status bar or kanban view, when there are no records in that stage to display."),
|
||||||
}
|
}
|
||||||
_defaults = {
|
_defaults = {
|
||||||
'sequence': 1
|
'sequence': 1,
|
||||||
|
'state': 'draft',
|
||||||
|
'fold': False,
|
||||||
}
|
}
|
||||||
_order = 'sequence'
|
_order = 'sequence'
|
||||||
project_task_type()
|
|
||||||
|
|
||||||
class project(osv.osv):
|
class project(osv.osv):
|
||||||
_name = "project.project"
|
_name = "project.project"
|
||||||
|
@ -208,7 +211,7 @@ class project(osv.osv):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def _get_type_common(self, cr, uid, context):
|
def _get_type_common(self, cr, uid, context):
|
||||||
ids = self.pool.get('project.task.type').search(cr, uid, [('project_default','=',1)], context=context)
|
ids = self.pool.get('project.task.type').search(cr, uid, [('case_default','=',1)], context=context)
|
||||||
return ids
|
return ids
|
||||||
|
|
||||||
_order = "sequence"
|
_order = "sequence"
|
||||||
|
@ -239,7 +242,7 @@ class project(osv.osv):
|
||||||
def set_done(self, cr, uid, ids, context=None):
|
def set_done(self, cr, uid, ids, context=None):
|
||||||
task_obj = self.pool.get('project.task')
|
task_obj = self.pool.get('project.task')
|
||||||
task_ids = task_obj.search(cr, uid, [('project_id', 'in', ids), ('state', 'not in', ('cancelled', 'done'))])
|
task_ids = task_obj.search(cr, uid, [('project_id', 'in', ids), ('state', 'not in', ('cancelled', 'done'))])
|
||||||
task_obj.write(cr, uid, task_ids, {'state': 'done', 'date_end':time.strftime('%Y-%m-%d %H:%M:%S'), 'remaining_hours': 0.0})
|
task_obj.case_close(cr, uid, task_ids, context=context)
|
||||||
self.write(cr, uid, ids, {'state':'close'}, context=context)
|
self.write(cr, uid, ids, {'state':'close'}, context=context)
|
||||||
self.set_close_send_note(cr, uid, ids, context=context)
|
self.set_close_send_note(cr, uid, ids, context=context)
|
||||||
return True
|
return True
|
||||||
|
@ -247,7 +250,7 @@ class project(osv.osv):
|
||||||
def set_cancel(self, cr, uid, ids, context=None):
|
def set_cancel(self, cr, uid, ids, context=None):
|
||||||
task_obj = self.pool.get('project.task')
|
task_obj = self.pool.get('project.task')
|
||||||
task_ids = task_obj.search(cr, uid, [('project_id', 'in', ids), ('state', '!=', 'done')])
|
task_ids = task_obj.search(cr, uid, [('project_id', 'in', ids), ('state', '!=', 'done')])
|
||||||
task_obj.write(cr, uid, task_ids, {'state': 'cancelled', 'date_end':time.strftime('%Y-%m-%d %H:%M:%S'), 'remaining_hours': 0.0})
|
task_obj.case_cancel(cr, uid, task_ids, context=context)
|
||||||
self.write(cr, uid, ids, {'state':'cancelled'}, context=context)
|
self.write(cr, uid, ids, {'state':'cancelled'}, context=context)
|
||||||
self.set_cancel_send_note(cr, uid, ids, context=context)
|
self.set_cancel_send_note(cr, uid, ids, context=context)
|
||||||
return True
|
return True
|
||||||
|
@ -501,49 +504,61 @@ def Project():
|
||||||
def set_close_send_note(self, cr, uid, ids, context=None):
|
def set_close_send_note(self, cr, uid, ids, context=None):
|
||||||
message = _("Project has been <b>closed</b>.")
|
message = _("Project has been <b>closed</b>.")
|
||||||
return self.message_append_note(cr, uid, ids, body=message, context=context)
|
return self.message_append_note(cr, uid, ids, body=message, context=context)
|
||||||
|
|
||||||
project()
|
|
||||||
|
|
||||||
class task(osv.osv):
|
|
||||||
|
class task(base_stage, osv.osv):
|
||||||
_name = "project.task"
|
_name = "project.task"
|
||||||
_description = "Task"
|
_description = "Task"
|
||||||
_log_create = True
|
_log_create = True
|
||||||
_date_name = "date_start"
|
_date_name = "date_start"
|
||||||
_inherit = ['ir.needaction_mixin', 'mail.thread']
|
_inherit = ['ir.needaction_mixin', 'mail.thread']
|
||||||
|
|
||||||
|
def _get_default_project_id(self, cr, uid, context=None):
|
||||||
|
""" Gives default section by checking if present in the context """
|
||||||
|
return (self._resolve_project_id_from_context(cr, uid, context=context) or False)
|
||||||
|
|
||||||
|
def _get_default_stage_id(self, cr, uid, context=None):
|
||||||
|
""" Gives default stage_id """
|
||||||
|
project_id = self._get_default_project_id(cr, uid, context=context)
|
||||||
|
return self.stage_find(cr, uid, [], project_id, [('state', '=', 'draft')], context=context)
|
||||||
|
|
||||||
def _resolve_project_id_from_context(self, cr, uid, context=None):
|
def _resolve_project_id_from_context(self, cr, uid, context=None):
|
||||||
"""Return ID of project based on the value of 'project_id'
|
""" Returns ID of project based on the value of 'default_project_id'
|
||||||
context key, or None if it cannot be resolved to a single project.
|
context key, or None if it cannot be resolved to a single
|
||||||
|
project.
|
||||||
"""
|
"""
|
||||||
if context is None: context = {}
|
if context is None: context = {}
|
||||||
if type(context.get('default_project_id')) in (int, long):
|
if type(context.get('default_project_id')) in (int, long):
|
||||||
project_id = context['default_project_id']
|
return context['default_project_id']
|
||||||
return project_id
|
|
||||||
if isinstance(context.get('default_project_id'), basestring):
|
if isinstance(context.get('default_project_id'), basestring):
|
||||||
project_name = context['default_project_id']
|
project_name = context['default_project_id']
|
||||||
project_ids = self.pool.get('project.project').name_search(cr, uid, name=project_name)
|
project_ids = self.pool.get('project.project').name_search(cr, uid, name=project_name, context=context)
|
||||||
if len(project_ids) == 1:
|
if len(project_ids) == 1:
|
||||||
return project_ids[0][0]
|
return project_ids[0][0]
|
||||||
|
return None
|
||||||
|
|
||||||
def _read_group_type_id(self, cr, uid, ids, domain, read_group_order=None, access_rights_uid=None, context=None):
|
def _read_group_stage_ids(self, cr, uid, ids, domain, read_group_order=None, access_rights_uid=None, context=None):
|
||||||
stage_obj = self.pool.get('project.task.type')
|
stage_obj = self.pool.get('project.task.type')
|
||||||
project_id = self._resolve_project_id_from_context(cr, uid, context=context)
|
|
||||||
order = stage_obj._order
|
order = stage_obj._order
|
||||||
access_rights_uid = access_rights_uid or uid
|
access_rights_uid = access_rights_uid or uid
|
||||||
if read_group_order == 'type_id desc':
|
# lame way to allow reverting search, should just work in the trivial case
|
||||||
# lame way to allow reverting search, should just work in the trivial case
|
if read_group_order == 'stage_id desc':
|
||||||
order = '%s desc' % order
|
order = '%s desc' % order
|
||||||
|
# retrieve section_id from the context and write the domain
|
||||||
|
# - ('id', 'in', 'ids'): add columns that should be present
|
||||||
|
# - OR ('case_default', '=', True), ('fold', '=', False): add default columns that are not folded
|
||||||
|
# - OR ('project_ids', 'in', project_id), ('fold', '=', False) if project_id: add project columns that are not folded
|
||||||
|
search_domain = []
|
||||||
|
project_id = self._resolve_project_id_from_context(cr, uid, context=context)
|
||||||
if project_id:
|
if project_id:
|
||||||
domain = ['|', ('id','in',ids), ('project_ids','in',project_id)]
|
search_domain += ['|', '&', ('project_ids', '=', project_id), ('fold', '=', False)]
|
||||||
else:
|
search_domain += ['|', ('id', 'in', ids), '&', ('case_default', '=', True), ('fold', '=', False)]
|
||||||
domain = ['|', ('id','in',ids), ('project_default','=',1)]
|
stage_ids = stage_obj._search(cr, uid, search_domain, order=order, access_rights_uid=access_rights_uid, context=context)
|
||||||
stage_ids = stage_obj._search(cr, uid, domain, order=order, access_rights_uid=access_rights_uid, context=context)
|
|
||||||
result = stage_obj.name_get(cr, access_rights_uid, stage_ids, context=context)
|
result = stage_obj.name_get(cr, access_rights_uid, stage_ids, context=context)
|
||||||
# restore order of the search
|
# restore order of the search
|
||||||
result.sort(lambda x,y: cmp(stage_ids.index(x[0]), stage_ids.index(y[0])))
|
result.sort(lambda x,y: cmp(stage_ids.index(x[0]), stage_ids.index(y[0])))
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def _read_group_user_id(self, cr, uid, ids, domain, read_group_order=None, access_rights_uid=None, context=None):
|
def _read_group_user_id(self, cr, uid, ids, domain, read_group_order=None, access_rights_uid=None, context=None):
|
||||||
res_users = self.pool.get('res.users')
|
res_users = self.pool.get('res.users')
|
||||||
project_id = self._resolve_project_id_from_context(cr, uid, context=context)
|
project_id = self._resolve_project_id_from_context(cr, uid, context=context)
|
||||||
|
@ -562,11 +577,10 @@ class task(osv.osv):
|
||||||
return result
|
return result
|
||||||
|
|
||||||
_group_by_full = {
|
_group_by_full = {
|
||||||
'type_id': _read_group_type_id,
|
'stage_id': _read_group_stage_ids,
|
||||||
'user_id': _read_group_user_id
|
'user_id': _read_group_user_id,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def search(self, cr, user, args, offset=0, limit=None, order=None, context=None, count=False):
|
def search(self, cr, user, args, offset=0, limit=None, order=None, context=None, count=False):
|
||||||
obj_project = self.pool.get('project.project')
|
obj_project = self.pool.get('project.project')
|
||||||
for domain in args:
|
for domain in args:
|
||||||
|
@ -597,7 +611,6 @@ class task(osv.osv):
|
||||||
res[task.id]['progress'] = 100.0
|
res[task.id]['progress'] = 100.0
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
|
||||||
def onchange_remaining(self, cr, uid, ids, remaining=0.0, planned = 0.0):
|
def onchange_remaining(self, cr, uid, ids, remaining=0.0, planned = 0.0):
|
||||||
if remaining and not planned:
|
if remaining and not planned:
|
||||||
return {'value':{'planned_hours': remaining}}
|
return {'value':{'planned_hours': remaining}}
|
||||||
|
@ -640,7 +653,7 @@ class task(osv.osv):
|
||||||
if not default.get('remaining_hours', False):
|
if not default.get('remaining_hours', False):
|
||||||
default['remaining_hours'] = float(self.read(cr, uid, id, ['planned_hours'])['planned_hours'])
|
default['remaining_hours'] = float(self.read(cr, uid, id, ['planned_hours'])['planned_hours'])
|
||||||
default['active'] = True
|
default['active'] = True
|
||||||
default['type_id'] = False
|
default['stage_id'] = False
|
||||||
if not default.get('name', False):
|
if not default.get('name', False):
|
||||||
default['name'] = self.browse(cr, uid, id, context=context).name or ''
|
default['name'] = self.browse(cr, uid, id, context=context).name or ''
|
||||||
if not context.get('copy',False):
|
if not context.get('copy',False):
|
||||||
|
@ -670,10 +683,15 @@ class task(osv.osv):
|
||||||
'description': fields.text('Description'),
|
'description': fields.text('Description'),
|
||||||
'priority': fields.selection([('4','Very Low'), ('3','Low'), ('2','Medium'), ('1','Important'), ('0','Very important')], 'Priority', select=True),
|
'priority': fields.selection([('4','Very Low'), ('3','Low'), ('2','Medium'), ('1','Important'), ('0','Very important')], 'Priority', select=True),
|
||||||
'sequence': fields.integer('Sequence', select=True, help="Gives the sequence order when displaying a list of tasks."),
|
'sequence': fields.integer('Sequence', select=True, help="Gives the sequence order when displaying a list of tasks."),
|
||||||
'type_id': fields.many2one('project.task.type', 'Stage'),
|
'stage_id': fields.many2one('project.task.type', 'Stage',
|
||||||
'state': fields.selection([('draft', 'New'),('cancelled', 'Cancelled'),('open', 'In Progress'),('pending', 'Pending'), ('done', 'Done')], 'Status', readonly=True, required=True,
|
domain="['|', ('project_ids', '=', project_id), ('case_default', '=', True)]"),
|
||||||
help='If the task is created the state is \'Draft\'.\n If the task is started, the state becomes \'In Progress\'.\n If review is needed the task is in \'Pending\' state.\
|
'state': fields.related('stage_id', 'state', type="selection", store=True,
|
||||||
\n If the task is over, the states is set to \'Done\'.'),
|
selection=_TASK_STATE, string="State", readonly=True,
|
||||||
|
help='The state is set to \'Draft\', when a case is created.\
|
||||||
|
If the case is in progress the state is set to \'Open\'.\
|
||||||
|
When the case is over, the state is set to \'Done\'.\
|
||||||
|
If the case needs to be reviewed then the state is \
|
||||||
|
set to \'Pending\'.'),
|
||||||
'kanban_state': fields.selection([('normal', 'Normal'),('blocked', 'Blocked'),('done', 'Ready To Pull')], 'Kanban State',
|
'kanban_state': fields.selection([('normal', 'Normal'),('blocked', 'Blocked'),('done', 'Ready To Pull')], 'Kanban State',
|
||||||
help="A task's kanban state indicates special situations affecting it:\n"
|
help="A task's kanban state indicates special situations affecting it:\n"
|
||||||
" * Normal is the default situation\n"
|
" * Normal is the default situation\n"
|
||||||
|
@ -722,6 +740,8 @@ class task(osv.osv):
|
||||||
}
|
}
|
||||||
|
|
||||||
_defaults = {
|
_defaults = {
|
||||||
|
'stage_id': _get_default_stage_id,
|
||||||
|
'project_id': _get_default_project_id,
|
||||||
'state': 'draft',
|
'state': 'draft',
|
||||||
'kanban_state': 'normal',
|
'kanban_state': 'normal',
|
||||||
'priority': '2',
|
'priority': '2',
|
||||||
|
@ -729,7 +749,7 @@ class task(osv.osv):
|
||||||
'sequence': 10,
|
'sequence': 10,
|
||||||
'active': True,
|
'active': True,
|
||||||
'user_id': lambda obj, cr, uid, context: uid,
|
'user_id': lambda obj, cr, uid, context: uid,
|
||||||
'company_id': lambda self, cr, uid, c: self.pool.get('res.company')._company_default_get(cr, uid, 'project.task', context=c)
|
'company_id': lambda self, cr, uid, c: self.pool.get('res.company')._company_default_get(cr, uid, 'project.task', context=c),
|
||||||
}
|
}
|
||||||
|
|
||||||
_order = "priority, sequence, date_start, name, id"
|
_order = "priority, sequence, date_start, name, id"
|
||||||
|
@ -828,6 +848,41 @@ class task(osv.osv):
|
||||||
res['fields'][f]['string'] = res['fields'][f]['string'].replace('Hours',tm)
|
res['fields'][f]['string'] = res['fields'][f]['string'].replace('Hours',tm)
|
||||||
return res
|
return res
|
||||||
|
|
||||||
|
# ****************************************
|
||||||
|
# Case management
|
||||||
|
# ****************************************
|
||||||
|
|
||||||
|
def stage_find(self, cr, uid, cases, section_id, domain=[], order='sequence', context=None):
|
||||||
|
""" Override of the base.stage method
|
||||||
|
Parameter of the stage search taken from the lead:
|
||||||
|
- section_id: if set, stages must belong to this section or
|
||||||
|
be a default stage; if not set, stages must be default
|
||||||
|
stages
|
||||||
|
"""
|
||||||
|
if isinstance(cases, (int, long)):
|
||||||
|
cases = self.browse(cr, uid, cases, context=context)
|
||||||
|
# collect all section_ids
|
||||||
|
section_ids = []
|
||||||
|
if section_id:
|
||||||
|
section_ids.append(section_id)
|
||||||
|
for task in cases:
|
||||||
|
if task.project_id:
|
||||||
|
section_ids.append(task.project_id.id)
|
||||||
|
# OR all section_ids and OR with case_default
|
||||||
|
search_domain = []
|
||||||
|
if section_ids:
|
||||||
|
search_domain += [('|')] * len(section_ids)
|
||||||
|
for section_id in section_ids:
|
||||||
|
search_domain.append(('project_ids', '=', section_id))
|
||||||
|
search_domain.append(('case_default', '=', True))
|
||||||
|
# AND with the domain in parameter
|
||||||
|
search_domain += list(domain)
|
||||||
|
# perform search, return the first found
|
||||||
|
stage_ids = self.pool.get('project.task.type').search(cr, uid, search_domain, order=order, context=context)
|
||||||
|
if stage_ids:
|
||||||
|
return stage_ids[0]
|
||||||
|
return False
|
||||||
|
|
||||||
def _check_child_task(self, cr, uid, ids, context=None):
|
def _check_child_task(self, cr, uid, ids, context=None):
|
||||||
if context == None:
|
if context == None:
|
||||||
context = {}
|
context = {}
|
||||||
|
@ -840,9 +895,9 @@ class task(osv.osv):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def action_close(self, cr, uid, ids, context=None):
|
def action_close(self, cr, uid, ids, context=None):
|
||||||
# This action open wizard to send email to partner or project manager after close task.
|
""" This action closes the task, then opens the wizard to send an
|
||||||
if context == None:
|
email to the partner or the project manager.
|
||||||
context = {}
|
"""
|
||||||
task_id = len(ids) and ids[0] or False
|
task_id = len(ids) and ids[0] or False
|
||||||
self._check_child_task(cr, uid, ids, context=context)
|
self._check_child_task(cr, uid, ids, context=context)
|
||||||
if not task_id: return False
|
if not task_id: return False
|
||||||
|
@ -863,12 +918,14 @@ class task(osv.osv):
|
||||||
}
|
}
|
||||||
return res
|
return res
|
||||||
|
|
||||||
def do_close(self, cr, uid, ids, context={}):
|
def do_close(self, cr, uid, ids, context=None):
|
||||||
"""
|
""" Compatibility when changing to case_close. """
|
||||||
Close Task
|
return self.case_close(cr, uid, ids, context=context)
|
||||||
"""
|
|
||||||
|
def case_close(self, cr, uid, ids, context=None):
|
||||||
|
""" Closes Task """
|
||||||
request = self.pool.get('res.request')
|
request = self.pool.get('res.request')
|
||||||
if not isinstance(ids,list): ids = [ids]
|
if not isinstance(ids, list): ids = [ids]
|
||||||
for task in self.browse(cr, uid, ids, context=context):
|
for task in self.browse(cr, uid, ids, context=context):
|
||||||
vals = {}
|
vals = {}
|
||||||
project = task.project_id
|
project = task.project_id
|
||||||
|
@ -884,7 +941,6 @@ class task(osv.osv):
|
||||||
'ref_doc1': 'project.task,%d'% (task.id,),
|
'ref_doc1': 'project.task,%d'% (task.id,),
|
||||||
'ref_doc2': 'project.project,%d'% (project.id,),
|
'ref_doc2': 'project.project,%d'% (project.id,),
|
||||||
}, context=context)
|
}, context=context)
|
||||||
|
|
||||||
for parent_id in task.parent_ids:
|
for parent_id in task.parent_ids:
|
||||||
if parent_id.state in ('pending','draft'):
|
if parent_id.state in ('pending','draft'):
|
||||||
reopen = True
|
reopen = True
|
||||||
|
@ -893,12 +949,12 @@ class task(osv.osv):
|
||||||
reopen = False
|
reopen = False
|
||||||
if reopen:
|
if reopen:
|
||||||
self.do_reopen(cr, uid, [parent_id.id], context=context)
|
self.do_reopen(cr, uid, [parent_id.id], context=context)
|
||||||
vals.update({'state': 'done'})
|
# close task
|
||||||
vals.update({'remaining_hours': 0.0})
|
vals['remaining_hours'] = 0.0
|
||||||
if not task.date_end:
|
if not task.date_end:
|
||||||
vals.update({ 'date_end':time.strftime('%Y-%m-%d %H:%M:%S')})
|
vals['date_end'] = fields.datetime.now()
|
||||||
self.write(cr, uid, [task.id],vals, context=context)
|
self.case_set(cr, uid, [task.id], 'done', vals, context=context)
|
||||||
self.do_close_send_note(cr, uid, [task.id], context)
|
self.case_close_send_note(cr, uid, [task.id], context=context)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def do_reopen(self, cr, uid, ids, context=None):
|
def do_reopen(self, cr, uid, ids, context=None):
|
||||||
|
@ -916,12 +972,15 @@ class task(osv.osv):
|
||||||
'ref_doc1': 'project.task,%d' % task.id,
|
'ref_doc1': 'project.task,%d' % task.id,
|
||||||
'ref_doc2': 'project.project,%d' % project.id,
|
'ref_doc2': 'project.project,%d' % project.id,
|
||||||
}, context=context)
|
}, context=context)
|
||||||
|
self.case_set(cr, uid, [task.id], 'open', {}, context=context)
|
||||||
self.write(cr, uid, [task.id], {'state': 'open'}, context=context)
|
self.case_open_send_note(cr, uid, [task.id], context)
|
||||||
self.do_open_send_note(cr, uid, [task.id], context)
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def do_cancel(self, cr, uid, ids, context={}):
|
def do_cancel(self, cr, uid, ids, context=None):
|
||||||
|
""" Compatibility when changing to case_cancel. """
|
||||||
|
return self.case_cancel(cr, uid, ids, context=context)
|
||||||
|
|
||||||
|
def case_cancel(self, cr, uid, ids, context=None):
|
||||||
request = self.pool.get('res.request')
|
request = self.pool.get('res.request')
|
||||||
tasks = self.browse(cr, uid, ids, context=context)
|
tasks = self.browse(cr, uid, ids, context=context)
|
||||||
self._check_child_task(cr, uid, ids, context=context)
|
self._check_child_task(cr, uid, ids, context=context)
|
||||||
|
@ -937,27 +996,38 @@ class task(osv.osv):
|
||||||
'ref_doc1': 'project.task,%d' % task.id,
|
'ref_doc1': 'project.task,%d' % task.id,
|
||||||
'ref_doc2': 'project.project,%d' % project.id,
|
'ref_doc2': 'project.project,%d' % project.id,
|
||||||
}, context=context)
|
}, context=context)
|
||||||
self.write(cr, uid, [task.id], {'state': 'cancelled', 'remaining_hours':0.0}, context=context)
|
# cancel task
|
||||||
self.do_cancel_send_note(cr, uid, [task.id], context)
|
self.case_set(cr, uid, [task.id], 'cancelled', {'remaining_hours': 0.0}, context=context)
|
||||||
|
self.case_cancel_send_note(cr, uid, [task.id], context=context)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def do_open(self, cr, uid, ids, context={}):
|
def do_open(self, cr, uid, ids, context=None):
|
||||||
|
""" Compatibility when changing to case_open. """
|
||||||
|
return self.case_open(cr, uid, ids, context=context)
|
||||||
|
|
||||||
|
def case_open(self, cr, uid, ids, context=None):
|
||||||
if not isinstance(ids,list): ids = [ids]
|
if not isinstance(ids,list): ids = [ids]
|
||||||
tasks= self.browse(cr, uid, ids, context=context)
|
self.case_set(cr, uid, ids, 'open', {'date_start': fields.datetime.now()}, context=context)
|
||||||
for t in tasks:
|
self.case_open_send_note(cr, uid, ids, context)
|
||||||
data = {'state': 'open'}
|
|
||||||
if not t.date_start:
|
|
||||||
data['date_start'] = time.strftime('%Y-%m-%d %H:%M:%S')
|
|
||||||
self.write(cr, uid, [t.id], data, context=context)
|
|
||||||
self.do_open_send_note(cr, uid, [t.id], context)
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def do_draft(self, cr, uid, ids, context={}):
|
def do_draft(self, cr, uid, ids, context=None):
|
||||||
self.write(cr, uid, ids, {'state': 'draft'}, context=context)
|
""" Compatibility when changing to case_draft. """
|
||||||
self.do_draft_send_note(cr, uid, ids, context)
|
return self.case_draft(cr, uid, ids, context=context)
|
||||||
|
|
||||||
|
def case_draft(self, cr, uid, ids, context=None):
|
||||||
|
self.case_set(cr, uid, ids, 'draft', {}, context=context)
|
||||||
|
self.case_draft_send_note(cr, uid, ids, context=context)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def do_pending(self, cr, uid, ids, context=None):
|
||||||
|
""" Compatibility when changing to case_pending. """
|
||||||
|
return self.case_pending(cr, uid, ids, context=context)
|
||||||
|
|
||||||
|
def case_pending(self, cr, uid, ids, context=None):
|
||||||
|
self.case_set(cr, uid, ids, 'pending', {}, context=context)
|
||||||
|
return self.case_pending_send_note(cr, uid, ids, context=context)
|
||||||
|
|
||||||
def _delegate_task_attachments(self, cr, uid, task_id, delegated_task_id, context=None):
|
def _delegate_task_attachments(self, cr, uid, task_id, delegated_task_id, context=None):
|
||||||
attachment = self.pool.get('ir.attachment')
|
attachment = self.pool.get('ir.attachment')
|
||||||
attachment_ids = attachment.search(cr, uid, [('res_model', '=', self._name), ('res_id', '=', task_id)], context=context)
|
attachment_ids = attachment.search(cr, uid, [('res_model', '=', self._name), ('res_id', '=', task_id)], context=context)
|
||||||
|
@ -966,7 +1036,6 @@ class task(osv.osv):
|
||||||
new_attachment_ids.append(attachment.copy(cr, uid, attachment_id, default={'res_id': delegated_task_id}, context=context))
|
new_attachment_ids.append(attachment.copy(cr, uid, attachment_id, default={'res_id': delegated_task_id}, context=context))
|
||||||
return new_attachment_ids
|
return new_attachment_ids
|
||||||
|
|
||||||
|
|
||||||
def do_delegate(self, cr, uid, ids, delegate_data={}, context=None):
|
def do_delegate(self, cr, uid, ids, delegate_data={}, context=None):
|
||||||
"""
|
"""
|
||||||
Delegate Task to another users.
|
Delegate Task to another users.
|
||||||
|
@ -1000,11 +1069,6 @@ class task(osv.osv):
|
||||||
delegated_tasks[task.id] = delegated_task_id
|
delegated_tasks[task.id] = delegated_task_id
|
||||||
return delegated_tasks
|
return delegated_tasks
|
||||||
|
|
||||||
def do_pending(self, cr, uid, ids, context={}):
|
|
||||||
self.write(cr, uid, ids, {'state': 'pending'}, context=context)
|
|
||||||
self.do_pending_send_note(cr, uid, ids, context)
|
|
||||||
return True
|
|
||||||
|
|
||||||
def set_remaining_time(self, cr, uid, ids, remaining_time=1.0, context=None):
|
def set_remaining_time(self, cr, uid, ids, remaining_time=1.0, context=None):
|
||||||
for task in self.browse(cr, uid, ids, context=context):
|
for task in self.browse(cr, uid, ids, context=context):
|
||||||
if (task.state=='draft') or (task.planned_hours==0.0):
|
if (task.state=='draft') or (task.planned_hours==0.0):
|
||||||
|
@ -1033,36 +1097,6 @@ class task(osv.osv):
|
||||||
def set_kanban_state_done(self, cr, uid, ids, context=None):
|
def set_kanban_state_done(self, cr, uid, ids, context=None):
|
||||||
self.write(cr, uid, ids, {'kanban_state': 'done'}, context=context)
|
self.write(cr, uid, ids, {'kanban_state': 'done'}, context=context)
|
||||||
|
|
||||||
def _change_type(self, cr, uid, ids, next, context=None):
|
|
||||||
"""
|
|
||||||
go to the next stage
|
|
||||||
if next is False, go to previous stage
|
|
||||||
"""
|
|
||||||
for task in self.browse(cr, uid, ids):
|
|
||||||
if task.project_id.type_ids:
|
|
||||||
typeid = task.type_id.id
|
|
||||||
types_seq={}
|
|
||||||
for type in task.project_id.type_ids :
|
|
||||||
types_seq[type.id] = type.sequence
|
|
||||||
if next:
|
|
||||||
types = sorted(types_seq.items(), lambda x, y: cmp(x[1], y[1]))
|
|
||||||
else:
|
|
||||||
types = sorted(types_seq.items(), lambda x, y: cmp(y[1], x[1]))
|
|
||||||
sorted_types = [x[0] for x in types]
|
|
||||||
if not typeid:
|
|
||||||
self.write(cr, uid, task.id, {'type_id': sorted_types[0]})
|
|
||||||
elif typeid and typeid in sorted_types and sorted_types.index(typeid) != len(sorted_types)-1:
|
|
||||||
index = sorted_types.index(typeid)
|
|
||||||
self.write(cr, uid, task.id, {'type_id': sorted_types[index+1]})
|
|
||||||
self.state_change_send_note(cr, uid, [task.id], context)
|
|
||||||
return True
|
|
||||||
|
|
||||||
def next_type(self, cr, uid, ids, context=None):
|
|
||||||
return self._change_type(cr, uid, ids, True, context=context)
|
|
||||||
|
|
||||||
def prev_type(self, cr, uid, ids, context=None):
|
|
||||||
return self._change_type(cr, uid, ids, False, context=context)
|
|
||||||
|
|
||||||
def _store_history(self, cr, uid, ids, context=None):
|
def _store_history(self, cr, uid, ids, context=None):
|
||||||
for task in self.browse(cr, uid, ids, context=context):
|
for task in self.browse(cr, uid, ids, context=context):
|
||||||
self.pool.get('project.task.history').create(cr, uid, {
|
self.pool.get('project.task.history').create(cr, uid, {
|
||||||
|
@ -1070,7 +1104,7 @@ class task(osv.osv):
|
||||||
'remaining_hours': task.remaining_hours,
|
'remaining_hours': task.remaining_hours,
|
||||||
'planned_hours': task.planned_hours,
|
'planned_hours': task.planned_hours,
|
||||||
'kanban_state': task.kanban_state,
|
'kanban_state': task.kanban_state,
|
||||||
'type_id': task.type_id.id,
|
'type_id': task.stage_id.id,
|
||||||
'state': task.state,
|
'state': task.state,
|
||||||
'user_id': task.user_id.id
|
'user_id': task.user_id.id
|
||||||
|
|
||||||
|
@ -1084,22 +1118,25 @@ class task(osv.osv):
|
||||||
return task_id
|
return task_id
|
||||||
|
|
||||||
# Overridden to reset the kanban_state to normal whenever
|
# Overridden to reset the kanban_state to normal whenever
|
||||||
# the stage (type_id) of the task changes.
|
# the stage (stage_id) of the task changes.
|
||||||
def write(self, cr, uid, ids, vals, context=None):
|
def write(self, cr, uid, ids, vals, context=None):
|
||||||
if isinstance(ids, (int, long)):
|
if isinstance(ids, (int, long)):
|
||||||
ids = [ids]
|
ids = [ids]
|
||||||
if vals and not 'kanban_state' in vals and 'type_id' in vals:
|
if vals and not 'kanban_state' in vals and 'stage_id' in vals:
|
||||||
new_stage = vals.get('type_id')
|
new_stage = vals.get('stage_id')
|
||||||
vals_reset_kstate = dict(vals, kanban_state='normal')
|
vals_reset_kstate = dict(vals, kanban_state='normal')
|
||||||
for t in self.browse(cr, uid, ids, context=context):
|
for t in self.browse(cr, uid, ids, context=context):
|
||||||
write_vals = vals_reset_kstate if t.type_id != new_stage else vals
|
#TO FIX:Kanban view doesn't raise warning
|
||||||
|
#stages = [stage.id for stage in t.project_id.type_ids]
|
||||||
|
#if new_stage not in stages:
|
||||||
|
#raise osv.except_osv(_('Warning !'), _('Stage is not defined in the project.'))
|
||||||
|
write_vals = vals_reset_kstate if t.stage_id != new_stage else vals
|
||||||
super(task,self).write(cr, uid, [t.id], write_vals, context=context)
|
super(task,self).write(cr, uid, [t.id], write_vals, context=context)
|
||||||
result = True
|
result = True
|
||||||
else:
|
else:
|
||||||
result = super(task,self).write(cr, uid, ids, vals, context=context)
|
result = super(task,self).write(cr, uid, ids, vals, context=context)
|
||||||
if ('type_id' in vals) or ('remaining_hours' in vals) or ('user_id' in vals) or ('state' in vals) or ('kanban_state' in vals):
|
if ('stage_id' in vals) or ('remaining_hours' in vals) or ('user_id' in vals) or ('state' in vals) or ('kanban_state' in vals):
|
||||||
self._store_history(cr, uid, ids, context=context)
|
self._store_history(cr, uid, ids, context=context)
|
||||||
self.state_change_send_note(cr, uid, ids, context)
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
def unlink(self, cr, uid, ids, context=None):
|
def unlink(self, cr, uid, ids, context=None):
|
||||||
|
@ -1139,7 +1176,11 @@ class task(osv.osv):
|
||||||
# ---------------------------------------------------
|
# ---------------------------------------------------
|
||||||
# OpenChatter methods and notifications
|
# OpenChatter methods and notifications
|
||||||
# ---------------------------------------------------
|
# ---------------------------------------------------
|
||||||
|
|
||||||
|
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
|
||||||
|
""" Override of default prefix for notifications. """
|
||||||
|
return 'Task'
|
||||||
|
|
||||||
def get_needaction_user_ids(self, cr, uid, ids, context=None):
|
def get_needaction_user_ids(self, cr, uid, ids, context=None):
|
||||||
result = dict.fromkeys(ids, [])
|
result = dict.fromkeys(ids, [])
|
||||||
for obj in self.browse(cr, uid, ids, context=context):
|
for obj in self.browse(cr, uid, ids, context=context):
|
||||||
|
@ -1156,28 +1197,16 @@ class task(osv.osv):
|
||||||
sub_ids.append(obj.manager_id.id)
|
sub_ids.append(obj.manager_id.id)
|
||||||
return self.pool.get('res.users').read(cr, uid, sub_ids, context=context)
|
return self.pool.get('res.users').read(cr, uid, sub_ids, context=context)
|
||||||
|
|
||||||
|
def stage_set_send_note(self, cr, uid, ids, stage_id, context=None):
|
||||||
|
""" Override of the (void) default notification method. """
|
||||||
|
stage_name = self.pool.get('project.task.type').name_get(cr, uid, [stage_id], context=context)[0][1]
|
||||||
|
return self.message_append_note(cr, uid, ids, body= _("Stage changed to <b>%s</b>.") % (stage_name), context=context)
|
||||||
|
|
||||||
def create_send_note(self, cr, uid, ids, context=None):
|
def create_send_note(self, cr, uid, ids, context=None):
|
||||||
return self.message_append_note(cr, uid, ids, body=_("Task has been <b>created</b>."), context=context)
|
return self.message_append_note(cr, uid, ids, body=_("Task has been <b>created</b>."), context=context)
|
||||||
|
|
||||||
def do_pending_send_note(self, cr, uid, ids, context=None):
|
def case_draft_send_note(self, cr, uid, ids, context=None):
|
||||||
if not isinstance(ids,list): ids = [ids]
|
msg = _('Task has been set as <b>draft</b>.')
|
||||||
msg = _('Task is now <b>pending</b>.')
|
|
||||||
return self.message_append_note(cr, uid, ids, body=msg, context=context)
|
|
||||||
|
|
||||||
def do_open_send_note(self, cr, uid, ids, context=None):
|
|
||||||
msg = _('Task has been <b>opened</b>.')
|
|
||||||
return self.message_append_note(cr, uid, ids, body=msg, context=context)
|
|
||||||
|
|
||||||
def do_cancel_send_note(self, cr, uid, ids, context=None):
|
|
||||||
msg = _('Task has been <b>canceled</b>.')
|
|
||||||
return self.message_append_note(cr, uid, ids, body=msg, context=context)
|
|
||||||
|
|
||||||
def do_close_send_note(self, cr, uid, ids, context=None):
|
|
||||||
msg = _('Task has been <b>closed</b>.')
|
|
||||||
return self.message_append_note(cr, uid, ids, body=msg, context=context)
|
|
||||||
|
|
||||||
def do_draft_send_note(self, cr, uid, ids, context=None):
|
|
||||||
msg = _('Task has been <b>renewed</b>.')
|
|
||||||
return self.message_append_note(cr, uid, ids, body=msg, context=context)
|
return self.message_append_note(cr, uid, ids, body=msg, context=context)
|
||||||
|
|
||||||
def do_delegation_send_note(self, cr, uid, ids, context=None):
|
def do_delegation_send_note(self, cr, uid, ids, context=None):
|
||||||
|
@ -1186,13 +1215,6 @@ class task(osv.osv):
|
||||||
self.message_append_note(cr, uid, [task.id], body=msg, context=context)
|
self.message_append_note(cr, uid, [task.id], body=msg, context=context)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def state_change_send_note(self, cr, uid, ids, context=None):
|
|
||||||
for task in self.browse(cr, uid, ids, context=context):
|
|
||||||
msg = _('Stage changed to <b>%s</b>') % (task.type_id.name)
|
|
||||||
self.message_append_note(cr, uid, [task.id], body=msg, context=context)
|
|
||||||
return True
|
|
||||||
|
|
||||||
task()
|
|
||||||
|
|
||||||
class project_work(osv.osv):
|
class project_work(osv.osv):
|
||||||
_name = "project.task.work"
|
_name = "project.task.work"
|
||||||
|
@ -1231,7 +1253,7 @@ class project_work(osv.osv):
|
||||||
for work in self.browse(cr, uid, ids):
|
for work in self.browse(cr, uid, ids):
|
||||||
cr.execute('update project_task set remaining_hours=remaining_hours + %s where id=%s', (work.hours, work.task_id.id))
|
cr.execute('update project_task set remaining_hours=remaining_hours + %s where id=%s', (work.hours, work.task_id.id))
|
||||||
return super(project_work,self).unlink(cr, uid, ids,*args, **kwargs)
|
return super(project_work,self).unlink(cr, uid, ids,*args, **kwargs)
|
||||||
project_work()
|
|
||||||
|
|
||||||
class account_analytic_account(osv.osv):
|
class account_analytic_account(osv.osv):
|
||||||
|
|
||||||
|
@ -1252,7 +1274,6 @@ class account_analytic_account(osv.osv):
|
||||||
raise osv.except_osv(_('Warning !'), _('Please delete the project linked with this account first.'))
|
raise osv.except_osv(_('Warning !'), _('Please delete the project linked with this account first.'))
|
||||||
return super(account_analytic_account, self).unlink(cr, uid, ids, *args, **kwargs)
|
return super(account_analytic_account, self).unlink(cr, uid, ids, *args, **kwargs)
|
||||||
|
|
||||||
account_analytic_account()
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Tasks History, used for cumulative flow charts (Lean/Agile)
|
# Tasks History, used for cumulative flow charts (Lean/Agile)
|
||||||
|
@ -1313,7 +1334,7 @@ class project_task_history(osv.osv):
|
||||||
_defaults = {
|
_defaults = {
|
||||||
'date': fields.date.context_today,
|
'date': fields.date.context_today,
|
||||||
}
|
}
|
||||||
project_task_history()
|
|
||||||
|
|
||||||
class project_task_history_cumulative(osv.osv):
|
class project_task_history_cumulative(osv.osv):
|
||||||
_name = 'project.task.history.cumulative'
|
_name = 'project.task.history.cumulative'
|
||||||
|
@ -1341,4 +1362,4 @@ class project_task_history_cumulative(osv.osv):
|
||||||
) as history
|
) as history
|
||||||
)
|
)
|
||||||
""")
|
""")
|
||||||
project_task_history_cumulative()
|
|
||||||
|
|
|
@ -24,22 +24,40 @@
|
||||||
<record id="project_tt_specification" model="project.task.type">
|
<record id="project_tt_specification" model="project.task.type">
|
||||||
<field name="sequence">1</field>
|
<field name="sequence">1</field>
|
||||||
<field name="name">Design</field>
|
<field name="name">Design</field>
|
||||||
<field name="project_default" eval="1"/>
|
<field name="state">draft</field>
|
||||||
|
<field name="case_default" eval="True"/>
|
||||||
</record>
|
</record>
|
||||||
<record id="project_tt_development" model="project.task.type">
|
<record id="project_tt_development" model="project.task.type">
|
||||||
<field name="sequence">2</field>
|
<field name="sequence">2</field>
|
||||||
<field name="name">Development</field>
|
<field name="name">Development</field>
|
||||||
<field name="project_default" eval="1"/>
|
<field name="state">open</field>
|
||||||
|
<field name="case_default" eval="True"/>
|
||||||
</record>
|
</record>
|
||||||
<record id="project_tt_testing" model="project.task.type">
|
<record id="project_tt_testing" model="project.task.type">
|
||||||
<field name="sequence">3</field>
|
<field name="sequence">3</field>
|
||||||
<field name="name">Testing</field>
|
<field name="name">Testing</field>
|
||||||
<field name="project_default" eval="1"/>
|
<field name="state">open</field>
|
||||||
|
<field name="case_default" eval="True"/>
|
||||||
|
</record>
|
||||||
|
<record id="project_tt_pending" model="project.task.type">
|
||||||
|
<field name="sequence">4</field>
|
||||||
|
<field name="name">Pending</field>
|
||||||
|
<field name="state">pending</field>
|
||||||
|
<field name="case_default" eval="True"/>
|
||||||
|
<field name="fold" eval="True"/>
|
||||||
</record>
|
</record>
|
||||||
<record id="project_tt_merge" model="project.task.type">
|
<record id="project_tt_merge" model="project.task.type">
|
||||||
<field name="sequence">4</field>
|
<field name="sequence">5</field>
|
||||||
<field name="name">Deployment</field>
|
<field name="name">Deployment</field>
|
||||||
<field name="project_default" eval="1"/>
|
<field name="state">done</field>
|
||||||
|
<field name="case_default" eval="True"/>
|
||||||
|
</record>
|
||||||
|
<record id="project_tt_cancel" model="project.task.type">
|
||||||
|
<field name="sequence">6</field>
|
||||||
|
<field name="name">Cancelled</field>
|
||||||
|
<field name="state">cancelled</field>
|
||||||
|
<field name="case_default" eval="True"/>
|
||||||
|
<field name="fold" eval="True"/>
|
||||||
</record>
|
</record>
|
||||||
</data>
|
</data>
|
||||||
</openerp>
|
</openerp>
|
||||||
|
|
|
@ -77,7 +77,7 @@
|
||||||
<field name="priority">2</field>
|
<field name="priority">2</field>
|
||||||
<field name="project_id" ref="project.project_integrate_openerp"/>
|
<field name="project_id" ref="project.project_integrate_openerp"/>
|
||||||
<field name="name">Prepare Requirements Document</field>
|
<field name="name">Prepare Requirements Document</field>
|
||||||
<field name="type_id" ref="project_tt_specification"/>
|
<field name="stage_id" ref="project_tt_specification"/>
|
||||||
<field name="color">3</field>
|
<field name="color">3</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
@ -88,7 +88,7 @@
|
||||||
<field name="priority">2</field>
|
<field name="priority">2</field>
|
||||||
<field name="project_id" ref="project.project_integrate_openerp"/>
|
<field name="project_id" ref="project.project_integrate_openerp"/>
|
||||||
<field name="name">Make SRS</field>
|
<field name="name">Make SRS</field>
|
||||||
<field name="type_id" ref="project_tt_specification"/>
|
<field name="stage_id" ref="project_tt_specification"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="project_task_3" model="project.task">
|
<record id="project_task_3" model="project.task">
|
||||||
|
@ -99,7 +99,7 @@
|
||||||
<field name="project_id" ref="project.project_integrate_openerp"/>
|
<field name="project_id" ref="project.project_integrate_openerp"/>
|
||||||
<field name="name">Design Use Cases</field>
|
<field name="name">Design Use Cases</field>
|
||||||
<field name="date_deadline" eval="time.strftime('%Y-%m-24')"/>
|
<field name="date_deadline" eval="time.strftime('%Y-%m-24')"/>
|
||||||
<field name="type_id" ref="project_tt_specification"/>
|
<field name="stage_id" ref="project_tt_specification"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="project_task_4" model="project.task">
|
<record id="project_task_4" model="project.task">
|
||||||
|
@ -112,7 +112,7 @@
|
||||||
<field name="description">Use the account_budget module</field>
|
<field name="description">Use the account_budget module</field>
|
||||||
<field name="date_deadline" eval="time.strftime('%Y-%m-19')"/>
|
<field name="date_deadline" eval="time.strftime('%Y-%m-19')"/>
|
||||||
<field name="color">3</field>
|
<field name="color">3</field>
|
||||||
<field name="type_id" ref="project_tt_specification"/>
|
<field name="stage_id" ref="project_tt_specification"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="project_task_5" model="project.task">
|
<record id="project_task_5" model="project.task">
|
||||||
|
@ -125,7 +125,7 @@
|
||||||
<field name="kanban_state">done</field>
|
<field name="kanban_state">done</field>
|
||||||
<field name="priority">0</field>
|
<field name="priority">0</field>
|
||||||
<field name="date_deadline" eval="time.strftime('%Y-%m-%d')"/>
|
<field name="date_deadline" eval="time.strftime('%Y-%m-%d')"/>
|
||||||
<field name="type_id" ref="project_tt_specification"/>
|
<field name="stage_id" ref="project_tt_specification"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="project_task_6" model="project.task">
|
<record id="project_task_6" model="project.task">
|
||||||
|
@ -135,7 +135,7 @@
|
||||||
<field name="priority">2</field>
|
<field name="priority">2</field>
|
||||||
<field name="project_id" ref="project.project_integrate_openerp"/>
|
<field name="project_id" ref="project.project_integrate_openerp"/>
|
||||||
<field name="name">Risk Management Planning</field>
|
<field name="name">Risk Management Planning</field>
|
||||||
<field name="type_id" ref="project_tt_specification"/>
|
<field name="stage_id" ref="project_tt_specification"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="project_task_7" model="project.task">
|
<record id="project_task_7" model="project.task">
|
||||||
|
@ -145,7 +145,7 @@
|
||||||
<field name="priority">2</field>
|
<field name="priority">2</field>
|
||||||
<field name="project_id" ref="project.project_integrate_openerp"/>
|
<field name="project_id" ref="project.project_integrate_openerp"/>
|
||||||
<field name="name">Create Project Schedules</field>
|
<field name="name">Create Project Schedules</field>
|
||||||
<field name="type_id" ref="project_tt_specification"/>
|
<field name="stage_id" ref="project_tt_specification"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="project_task_8" model="project.task">
|
<record id="project_task_8" model="project.task">
|
||||||
|
@ -156,7 +156,7 @@
|
||||||
<field name="project_id" ref="project.project_integrate_openerp"/>
|
<field name="project_id" ref="project.project_integrate_openerp"/>
|
||||||
<field name="name">Dataflow Design</field>
|
<field name="name">Dataflow Design</field>
|
||||||
<field name="priority">0</field>
|
<field name="priority">0</field>
|
||||||
<field name="type_id" ref="project_tt_specification"/>
|
<field name="stage_id" ref="project_tt_specification"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="project_task_9" model="project.task">
|
<record id="project_task_9" model="project.task">
|
||||||
|
@ -166,7 +166,7 @@
|
||||||
<field name="priority">2</field>
|
<field name="priority">2</field>
|
||||||
<field name="project_id" ref="project.project_integrate_openerp"/>
|
<field name="project_id" ref="project.project_integrate_openerp"/>
|
||||||
<field name="name">User Interface Design</field>
|
<field name="name">User Interface Design</field>
|
||||||
<field name="type_id" ref="project_tt_specification"/>
|
<field name="stage_id" ref="project_tt_specification"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="project_task_10" model="project.task">
|
<record id="project_task_10" model="project.task">
|
||||||
|
@ -177,7 +177,7 @@
|
||||||
<field name="project_id" ref="project.project_integrate_openerp"/>
|
<field name="project_id" ref="project.project_integrate_openerp"/>
|
||||||
<field name="name">Develop Module in Sale Management</field>
|
<field name="name">Develop Module in Sale Management</field>
|
||||||
<field name="kanban_state">blocked</field>
|
<field name="kanban_state">blocked</field>
|
||||||
<field name="type_id" ref="project_tt_development"/>
|
<field name="stage_id" ref="project_tt_development"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="project_task_11" model="project.task">
|
<record id="project_task_11" model="project.task">
|
||||||
|
@ -187,7 +187,7 @@
|
||||||
<field name="priority">2</field>
|
<field name="priority">2</field>
|
||||||
<field name="project_id" ref="project.project_integrate_openerp"/>
|
<field name="project_id" ref="project.project_integrate_openerp"/>
|
||||||
<field name="name">Develop module in Warehouse</field>
|
<field name="name">Develop module in Warehouse</field>
|
||||||
<field name="type_id" ref="project_tt_merge"/>
|
<field name="stage_id" ref="project_tt_merge"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<function model="project.task" name="do_close" eval="[ref('project_task_11')], {'install_mode': True}"/>
|
<function model="project.task" name="do_close" eval="[ref('project_task_11')], {'install_mode': True}"/>
|
||||||
|
@ -199,7 +199,7 @@
|
||||||
<field name="priority">2</field>
|
<field name="priority">2</field>
|
||||||
<field name="project_id" ref="project.project_integrate_openerp"/>
|
<field name="project_id" ref="project.project_integrate_openerp"/>
|
||||||
<field name="name">Integrate Modules</field>
|
<field name="name">Integrate Modules</field>
|
||||||
<field name="type_id" ref="project_tt_development"/>
|
<field name="stage_id" ref="project_tt_development"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<function model="project.task" name="do_close" eval="[ref('project_task_12')], {'install_mode': True}"/>
|
<function model="project.task" name="do_close" eval="[ref('project_task_12')], {'install_mode': True}"/>
|
||||||
|
@ -211,7 +211,7 @@
|
||||||
<field name="priority">2</field>
|
<field name="priority">2</field>
|
||||||
<field name="project_id" ref="project.project_integrate_openerp"/>
|
<field name="project_id" ref="project.project_integrate_openerp"/>
|
||||||
<field name="name">Unit Testing</field>
|
<field name="name">Unit Testing</field>
|
||||||
<field name="type_id" ref="project_tt_development"/>
|
<field name="stage_id" ref="project_tt_development"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<function model="project.task" name="do_pending" eval="[ref('project_task_13')], {'install_mode': True}"/>
|
<function model="project.task" name="do_pending" eval="[ref('project_task_13')], {'install_mode': True}"/>
|
||||||
|
@ -223,8 +223,7 @@
|
||||||
<field name="priority">2</field>
|
<field name="priority">2</field>
|
||||||
<field name="project_id" ref="project.project_integrate_openerp"/>
|
<field name="project_id" ref="project.project_integrate_openerp"/>
|
||||||
<field name="name">Regression Test</field>
|
<field name="name">Regression Test</field>
|
||||||
<field name="type_id" ref="project_tt_development"/>
|
<field name="stage_id" ref="project_tt_development"/>
|
||||||
<field name="state">pending</field>
|
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="project_task_15" model="project.task">
|
<record id="project_task_15" model="project.task">
|
||||||
|
@ -234,7 +233,7 @@
|
||||||
<field name="priority">2</field>
|
<field name="priority">2</field>
|
||||||
<field name="project_id" ref="project.project_integrate_openerp"/>
|
<field name="project_id" ref="project.project_integrate_openerp"/>
|
||||||
<field name="name">Documentation</field>
|
<field name="name">Documentation</field>
|
||||||
<field name="type_id" ref="project_tt_specification"/>
|
<field name="stage_id" ref="project_tt_specification"/>
|
||||||
<field name="date_start">2011-02-06</field>
|
<field name="date_start">2011-02-06</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
@ -247,7 +246,7 @@
|
||||||
<field name="project_id" ref="project.project_integrate_openerp"/>
|
<field name="project_id" ref="project.project_integrate_openerp"/>
|
||||||
<field name="name">Performance Tuning</field>
|
<field name="name">Performance Tuning</field>
|
||||||
<field name="description">Test on Runbot</field>
|
<field name="description">Test on Runbot</field>
|
||||||
<field name="type_id" ref="project_tt_specification"/>
|
<field name="stage_id" ref="project_tt_specification"/>
|
||||||
</record>
|
</record>
|
||||||
<function model="project.task" name="do_open" eval="[ref('project_task_16')], {'install_mode': True}"/>
|
<function model="project.task" name="do_open" eval="[ref('project_task_16')], {'install_mode': True}"/>
|
||||||
|
|
||||||
|
@ -258,7 +257,7 @@
|
||||||
<field name="priority">2</field>
|
<field name="priority">2</field>
|
||||||
<field name="project_id" ref="project.project_integrate_openerp"/>
|
<field name="project_id" ref="project.project_integrate_openerp"/>
|
||||||
<field name="name">Deploy and Review on Customer System</field>
|
<field name="name">Deploy and Review on Customer System</field>
|
||||||
<field name="type_id" ref="project_tt_specification"/>
|
<field name="stage_id" ref="project_tt_specification"/>
|
||||||
</record>
|
</record>
|
||||||
<function model="project.task" name="do_open" eval="[ref('project_task_17')], {'install_mode': True}"/>
|
<function model="project.task" name="do_open" eval="[ref('project_task_17')], {'install_mode': True}"/>
|
||||||
|
|
||||||
|
@ -269,7 +268,7 @@
|
||||||
<field name="priority">2</field>
|
<field name="priority">2</field>
|
||||||
<field name="project_id" ref="project.project_integrate_openerp"/>
|
<field name="project_id" ref="project.project_integrate_openerp"/>
|
||||||
<field name="name">Training and Presentation</field>
|
<field name="name">Training and Presentation</field>
|
||||||
<field name="type_id" ref="project_tt_specification"/>
|
<field name="stage_id" ref="project_tt_specification"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<!--
|
<!--
|
||||||
|
@ -322,7 +321,7 @@
|
||||||
<record id="project_task_116" model="project.task">
|
<record id="project_task_116" model="project.task">
|
||||||
<field name="planned_hours">38.0</field>
|
<field name="planned_hours">38.0</field>
|
||||||
<field name="remaining_hours">38.0</field>
|
<field name="remaining_hours">38.0</field>
|
||||||
<field name="type_id" ref="project_tt_development"/>
|
<field name="stage_id" ref="project_tt_development"/>
|
||||||
<field name="user_id" eval="False"/>
|
<field name="user_id" eval="False"/>
|
||||||
<field name="project_id" ref="project_project_22"/>
|
<field name="project_id" ref="project_project_22"/>
|
||||||
<field name="description">BoM, After sales returns, interventions. Traceability.</field>
|
<field name="description">BoM, After sales returns, interventions. Traceability.</field>
|
||||||
|
@ -334,7 +333,7 @@
|
||||||
<field name="planned_hours">16.0</field>
|
<field name="planned_hours">16.0</field>
|
||||||
<field name="remaining_hours">16.0</field>
|
<field name="remaining_hours">16.0</field>
|
||||||
<field name="user_id" eval="False"/>
|
<field name="user_id" eval="False"/>
|
||||||
<field name="type_id" ref="project_tt_development"/>
|
<field name="stage_id" ref="project_tt_development"/>
|
||||||
<field name="project_id" ref="project_project_23"/>
|
<field name="project_id" ref="project_project_23"/>
|
||||||
<field name="name">Data importation + Doc</field>
|
<field name="name">Data importation + Doc</field>
|
||||||
</record>
|
</record>
|
||||||
|
@ -344,7 +343,7 @@
|
||||||
<field name="planned_hours">16.0</field>
|
<field name="planned_hours">16.0</field>
|
||||||
<field name="remaining_hours">16.0</field>
|
<field name="remaining_hours">16.0</field>
|
||||||
<field name="user_id" eval="False"/>
|
<field name="user_id" eval="False"/>
|
||||||
<field name="type_id" ref="project_tt_development"/>
|
<field name="stage_id" ref="project_tt_development"/>
|
||||||
<field name="project_id" ref="project_project_23"/>
|
<field name="project_id" ref="project_project_23"/>
|
||||||
<field name="name">Modifications asked by the customer.</field>
|
<field name="name">Modifications asked by the customer.</field>
|
||||||
</record>
|
</record>
|
||||||
|
@ -353,7 +352,7 @@
|
||||||
<record id="project_task_184" model="project.task">
|
<record id="project_task_184" model="project.task">
|
||||||
<field name="planned_hours">16.0</field>
|
<field name="planned_hours">16.0</field>
|
||||||
<field name="remaining_hours">16.0</field>
|
<field name="remaining_hours">16.0</field>
|
||||||
<field name="type_id" ref="project_tt_testing"/>
|
<field name="stage_id" ref="project_tt_testing"/>
|
||||||
<field name="user_id" eval="False"/>
|
<field name="user_id" eval="False"/>
|
||||||
<field name="priority">0</field>
|
<field name="priority">0</field>
|
||||||
<field name="project_id" ref="project_project_21"/>
|
<field name="project_id" ref="project_project_21"/>
|
||||||
|
@ -364,7 +363,7 @@
|
||||||
<field name="sequence">15</field>
|
<field name="sequence">15</field>
|
||||||
<field name="planned_hours">8.0</field>
|
<field name="planned_hours">8.0</field>
|
||||||
<field name="remaining_hours">8.0</field>
|
<field name="remaining_hours">8.0</field>
|
||||||
<field name="type_id" ref="project_tt_testing"/>
|
<field name="stage_id" ref="project_tt_testing"/>
|
||||||
<field name="user_id" eval="False"/>
|
<field name="user_id" eval="False"/>
|
||||||
<field name="project_id" ref="project_project_21"/>
|
<field name="project_id" ref="project_project_21"/>
|
||||||
<field name="name">Internal testing + Software Install</field>
|
<field name="name">Internal testing + Software Install</field>
|
||||||
|
@ -374,7 +373,7 @@
|
||||||
<field name="sequence">17</field>
|
<field name="sequence">17</field>
|
||||||
<field name="planned_hours">16.0</field>
|
<field name="planned_hours">16.0</field>
|
||||||
<field name="remaining_hours">16.0</field>
|
<field name="remaining_hours">16.0</field>
|
||||||
<field name="type_id" ref="project_tt_development"/>
|
<field name="stage_id" ref="project_tt_development"/>
|
||||||
<field name="user_id" eval="False"/>
|
<field name="user_id" eval="False"/>
|
||||||
<field name="priority">2</field>
|
<field name="priority">2</field>
|
||||||
<field name="project_id" ref="project_project_21"/>
|
<field name="project_id" ref="project_project_21"/>
|
||||||
|
@ -389,7 +388,7 @@
|
||||||
<field name="user_id" eval="False"/>
|
<field name="user_id" eval="False"/>
|
||||||
<field name="project_id" ref="project_project_23"/>
|
<field name="project_id" ref="project_project_23"/>
|
||||||
<field name="name">Parameters</field>
|
<field name="name">Parameters</field>
|
||||||
<field name="type_id" ref="project_tt_specification"/>
|
<field name="stage_id" ref="project_tt_specification"/>
|
||||||
</record>
|
</record>
|
||||||
<function model="project.task" name="do_open" eval="[ref('project_task_189')], {'install_mode': True}"/>
|
<function model="project.task" name="do_open" eval="[ref('project_task_189')], {'install_mode': True}"/>
|
||||||
|
|
||||||
|
@ -398,10 +397,9 @@
|
||||||
<field name="planned_hours">32.0</field>
|
<field name="planned_hours">32.0</field>
|
||||||
<field name="remaining_hours">32.0</field>
|
<field name="remaining_hours">32.0</field>
|
||||||
<field name="user_id" eval="False"/>
|
<field name="user_id" eval="False"/>
|
||||||
<field name="state">open</field>
|
|
||||||
<field name="project_id" ref="project_project_21"/>
|
<field name="project_id" ref="project_project_21"/>
|
||||||
<field name="name">Start of the doc redaction + MRP</field>
|
<field name="name">Start of the doc redaction + MRP</field>
|
||||||
<field name="type_id" ref="project_tt_testing"/>
|
<field name="stage_id" ref="project_tt_testing"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<!-- Schedule tasks to assign users and dates -->
|
<!-- Schedule tasks to assign users and dates -->
|
||||||
|
|
|
@ -161,7 +161,7 @@
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<act_window
|
<act_window
|
||||||
context="{'search_default_project_id': [active_id], 'default_project_id': active_id}"
|
context="{'search_default_project_id': [active_id], 'default_project_id': active_id}"
|
||||||
id="act_project_project_2_project_task_all"
|
id="act_project_project_2_project_task_all"
|
||||||
|
@ -305,15 +305,26 @@
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<form string="Project" layout="manual">
|
<form string="Project" layout="manual">
|
||||||
<div class="oe_form_topbar">
|
<div class="oe_form_topbar">
|
||||||
<button name="action_close" states="pending,open" string="Done" type="object"/>
|
<button name="do_open" string="Start Task" type="object"
|
||||||
<button name="do_open" states="pending,draft" string="Start Task" type="object"/>
|
states="draft,pending"/>
|
||||||
<button name="%(action_project_task_reevaluate)d" states="done,cancelled" string="Reactivate" type="action" context="{'button_reactivate':True}" />
|
<button name="%(action_project_task_reevaluate)d" string="Reactivate" type="action"
|
||||||
<button name="do_pending" states="open" string="Pending" type="object"/>
|
states="done,cancelled" context="{'button_reactivate':True}"/>
|
||||||
<button name="do_draft" states="open" string="Draft" type="object"/>
|
<button name="do_pending" string="Pending" type="object"
|
||||||
<button name="%(action_project_task_delegate)d" states="pending,open,draft" string="Delegate" type="action"/>
|
states="open"/>
|
||||||
<button name="do_cancel" states="draft,open,pending" string="Cancel" type="object"/>
|
<button name="action_close" string="Done" type="object"
|
||||||
|
states="draft,open,pending"/>
|
||||||
|
<button name="do_draft" string="Draft" type="object"
|
||||||
|
states="cancel,done"/>
|
||||||
|
<button name="%(action_project_task_delegate)d" string="Delegate" type="action"
|
||||||
|
states="pending,open,draft"/>
|
||||||
|
<button name="do_cancel" string="Cancel" type="object"
|
||||||
|
states="draft,open,pending" />
|
||||||
|
<button name="stage_previous" string="Previous Stage" type="object"
|
||||||
|
states="open,pending" icon="gtk-go-back" attrs="{'invisible': [('stage_id','=', False)]}"/>
|
||||||
|
<button name="stage_next" string="Next Stage" type="object"
|
||||||
|
states="open,pending" icon="gtk-go-forward" attrs="{'invisible': [('stage_id','=', False)]}"/>
|
||||||
<div class="oe_right">
|
<div class="oe_right">
|
||||||
<field name="state" nolabel="1" widget="statusbar" statusbar_visible="draft,open,done" statusbar_colors='{"pending":"blue"}' select="1"/>
|
<field name="stage_id" nolabel="1" widget="statusbar"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="oe_clear"/>
|
<div class="oe_clear"/>
|
||||||
</div>
|
</div>
|
||||||
|
@ -362,7 +373,8 @@
|
||||||
<tree string="Delegated tasks">
|
<tree string="Delegated tasks">
|
||||||
<field name="name"/>
|
<field name="name"/>
|
||||||
<field name="user_id"/>
|
<field name="user_id"/>
|
||||||
<field name="state"/>
|
<field name="stage_id"/>
|
||||||
|
<field name="state" groups="base.group_no_one"/>
|
||||||
<field name="effective_hours" widget="float_time"/>
|
<field name="effective_hours" widget="float_time"/>
|
||||||
<field name="progress" widget="progressbar"/>
|
<field name="progress" widget="progressbar"/>
|
||||||
<field name="remaining_hours" widget="float_time"/>
|
<field name="remaining_hours" widget="float_time"/>
|
||||||
|
@ -376,16 +388,13 @@
|
||||||
<separator string="Planning" colspan="2"/>
|
<separator string="Planning" colspan="2"/>
|
||||||
<field name="priority"/>
|
<field name="priority"/>
|
||||||
<field name="sequence"/>
|
<field name="sequence"/>
|
||||||
|
<field name="state" groups="base.group_no_one"/>
|
||||||
</group>
|
</group>
|
||||||
|
|
||||||
<separator string="Miscellaneous" colspan="4"/>
|
<separator string="Miscellaneous" colspan="4"/>
|
||||||
<field name="partner_id" />
|
<field name="partner_id" />
|
||||||
<field name="company_id" select="1" groups="base.group_multi_company" widget="selection"/>
|
<field name="company_id" select="1" groups="base.group_multi_company" widget="selection"/>
|
||||||
<group col="4" colspan="2">
|
<field name="state" groups="base.group_no_one"/>
|
||||||
<field name="type_id" widget="selection" readonly="1"/>
|
|
||||||
<button name="prev_type" string="Previous" type="object" icon="gtk-go-back" help="Change to Previous Stage"/>
|
|
||||||
<button name="next_type" string="Next" type="object" icon="gtk-go-forward" help="Change to Next Stage"/>
|
|
||||||
</group>
|
|
||||||
<separator colspan="4" string="Notes"/>
|
<separator colspan="4" string="Notes"/>
|
||||||
<field colspan="4" name="notes" nolabel="1"/>
|
<field colspan="4" name="notes" nolabel="1"/>
|
||||||
</page>
|
</page>
|
||||||
|
@ -397,22 +406,22 @@
|
||||||
</form>
|
</form>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<!-- Project Task Kanban View -->
|
<!-- Project Task Kanban View -->
|
||||||
<record model="ir.ui.view" id="view_task_kanban">
|
<record model="ir.ui.view" id="view_task_kanban">
|
||||||
<field name="name">project.task.kanban</field>
|
<field name="name">project.task.kanban</field>
|
||||||
<field name="model">project.task</field>
|
<field name="model">project.task</field>
|
||||||
<field name="type">kanban</field>
|
<field name="type">kanban</field>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<kanban default_group_by="type_id" >
|
<kanban default_group_by="stage_id" >
|
||||||
<field name="color"/>
|
<field name="color"/>
|
||||||
<field name="priority"/>
|
<field name="priority"/>
|
||||||
<field name="type_id"/>
|
<field name="stage_id"/>
|
||||||
<field name="user_id"/>
|
<field name="user_id"/>
|
||||||
<field name="user_email"/>
|
<field name="user_email"/>
|
||||||
<field name="description"/>
|
<field name="description"/>
|
||||||
<field name="sequence"/>
|
<field name="sequence"/>
|
||||||
<field name="state"/>
|
<field name="state" groups="base.group_no_one"/>
|
||||||
<field name="kanban_state"/>
|
<field name="kanban_state"/>
|
||||||
<field name="remaining_hours" sum="Remaining Time" groups="project.group_time_work_estimation_tasks"/>
|
<field name="remaining_hours" sum="Remaining Time" groups="project.group_time_work_estimation_tasks"/>
|
||||||
<field name="date_deadline"/>
|
<field name="date_deadline"/>
|
||||||
|
@ -508,20 +517,11 @@
|
||||||
<field name="effective_hours" widget="float_time" sum="Spent Hours" invisible="1"/>
|
<field name="effective_hours" widget="float_time" sum="Spent Hours" invisible="1"/>
|
||||||
<field name="remaining_hours" widget="float_time" sum="Remaining Hours" on_change="onchange_remaining(remaining_hours,planned_hours)" invisible="context.get('set_visible',False)" groups="project.group_time_work_estimation_tasks"/>
|
<field name="remaining_hours" widget="float_time" sum="Remaining Hours" on_change="onchange_remaining(remaining_hours,planned_hours)" invisible="context.get('set_visible',False)" groups="project.group_time_work_estimation_tasks"/>
|
||||||
<field name="date_deadline" invisible="context.get('deadline_visible',True)"/>
|
<field name="date_deadline" invisible="context.get('deadline_visible',True)"/>
|
||||||
<field name="type_id" invisible="context.get('set_visible',False)"/>
|
<field name="stage_id" invisible="context.get('set_visible',False)"/>
|
||||||
<button name="next_type" invisible="context.get('set_visible',False)"
|
<field name="state" invisible="context.get('set_visible',False)" groups="base.group_no_one"/>
|
||||||
states="draft,open,pending"
|
|
||||||
string="Change Stage"
|
|
||||||
type="object"
|
|
||||||
icon="gtk-go-forward"
|
|
||||||
help="Change Type"/>
|
|
||||||
<field name="date_start" invisible="1" groups="base.group_no_one"/>
|
<field name="date_start" invisible="1" groups="base.group_no_one"/>
|
||||||
<field name="date_end" invisible="1" groups="base.group_no_one"/>
|
<field name="date_end" invisible="1" groups="base.group_no_one"/>
|
||||||
<field name="progress" widget="progressbar" invisible="context.get('set_visible',False)"/>
|
<field name="progress" widget="progressbar" invisible="context.get('set_visible',False)"/>
|
||||||
<field name="state" invisible="context.get('set_visible',False)"/>
|
|
||||||
<button name="do_open" states="pending,draft,done,cancelled" string="Start Task" type="object" icon="gtk-media-play" help="For changing to open state" invisible="context.get('set_visible',False)"/>
|
|
||||||
<button name="%(action_project_task_delegate)d" states="pending,open,draft" string="Delegate" type="action" icon="terp-personal" help="For changing to delegate state"/>
|
|
||||||
<button name="action_close" states="draft,pending,open" string="Done" type="object" icon="terp-dialog-close" help="For changing to done state"/>
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
@ -589,7 +589,7 @@
|
||||||
<separator orientation="vertical"/>
|
<separator orientation="vertical"/>
|
||||||
<filter string="Project" name="group_project_id" icon="terp-folder-violet" domain="[]" context="{'group_by':'project_id'}"/>
|
<filter string="Project" name="group_project_id" icon="terp-folder-violet" domain="[]" context="{'group_by':'project_id'}"/>
|
||||||
<separator orientation="vertical"/>
|
<separator orientation="vertical"/>
|
||||||
<filter string="Stage" name="group_stage_id" icon="terp-stage" domain="[]" context="{'group_by':'type_id'}"/>
|
<filter string="Stage" name="group_stage_id" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}"/>
|
||||||
<filter string="Status" name="group_state" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
|
<filter string="Status" name="group_state" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
|
||||||
<separator orientation="vertical"/>
|
<separator orientation="vertical"/>
|
||||||
<filter string="Deadline" icon="terp-gnome-cpu-frequency-applet+" domain="[]" context="{'group_by':'date_deadline'}"/>
|
<filter string="Deadline" icon="terp-gnome-cpu-frequency-applet+" domain="[]" context="{'group_by':'date_deadline'}"/>
|
||||||
|
@ -660,7 +660,7 @@
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<search string="Tasks Stages">
|
<search string="Tasks Stages">
|
||||||
<group>
|
<group>
|
||||||
<filter icon="terp-check" string="Common" name="common" domain="[('project_default', '=', 1)]" help="Stages common to all projects"/>
|
<filter icon="terp-check" string="Common" name="common" domain="[('case_default', '=', 1)]" help="Stages common to all projects"/>
|
||||||
<separator orientation="vertical"/>
|
<separator orientation="vertical"/>
|
||||||
<field name="name"/>
|
<field name="name"/>
|
||||||
</group>
|
</group>
|
||||||
|
@ -674,10 +674,14 @@
|
||||||
<field name="type">form</field>
|
<field name="type">form</field>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<form string="Task Stage">
|
<form string="Task Stage">
|
||||||
<group colspan="4" col="6">
|
<group colspan="2" col="2">
|
||||||
<field name="name"/>
|
<field name="name"/>
|
||||||
<field name="project_default"/>
|
<field name="state"/>
|
||||||
<field name="sequence"/>
|
</group>
|
||||||
|
<group colspan="2" col="4">
|
||||||
|
<field name="case_default"/>
|
||||||
|
<field name="sequence"/>
|
||||||
|
<field name="fold"/>
|
||||||
</group>
|
</group>
|
||||||
<separator string="Description" colspan="4"/>
|
<separator string="Description" colspan="4"/>
|
||||||
<field colspan="4" name="description" nolabel="1"/>
|
<field colspan="4" name="description" nolabel="1"/>
|
||||||
|
@ -693,6 +697,7 @@
|
||||||
<tree string="Task Stage">
|
<tree string="Task Stage">
|
||||||
<field name="sequence"/>
|
<field name="sequence"/>
|
||||||
<field name="name"/>
|
<field name="name"/>
|
||||||
|
<field name="state"/>
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
@ -707,10 +712,10 @@
|
||||||
|
|
||||||
<menuitem id="menu_tasks_config" name="GTD" parent="project.menu_definitions" sequence="1"/>
|
<menuitem id="menu_tasks_config" name="GTD" parent="project.menu_definitions" sequence="1"/>
|
||||||
|
|
||||||
<menuitem id="menu_project_config_project" name="Stages" parent="menu_definitions" sequence="1"/>
|
<menuitem id="menu_project_config_project" name="Stages" parent="project.menu_definitions" sequence="1"/>
|
||||||
|
|
||||||
<menuitem action="open_task_type_form" id="menu_task_types_view" parent="menu_project_config_project" sequence="2" groups="base.group_no_one"/>
|
<menuitem action="open_task_type_form" name="Task Stages" id="menu_task_types_view" parent="menu_project_config_project" sequence="2"/>
|
||||||
<menuitem action="open_view_project_all" id="menu_projects" name="Projects" parent="menu_project_management" sequence="1"/>
|
<menuitem action="open_view_project_all" id="menu_projects" name="Projects" parent="menu_project_management" sequence="1" groups="base.group_no_one"/>
|
||||||
|
|
||||||
<act_window context="{'search_default_user_id': [active_id], 'default_user_id': active_id}" id="act_res_users_2_project_project" name="User's projects" res_model="project.project" src_model="res.users" view_mode="tree,form" view_type="form"/>
|
<act_window context="{'search_default_user_id': [active_id], 'default_user_id': active_id}" id="act_res_users_2_project_project" name="User's projects" res_model="project.project" src_model="res.users" view_mode="tree,form" view_type="form"/>
|
||||||
|
|
||||||
|
|
|
@ -15,7 +15,8 @@
|
||||||
<field name="user_id"/>
|
<field name="user_id"/>
|
||||||
<field name="remaining_hours"/>
|
<field name="remaining_hours"/>
|
||||||
<field name="kanban_state"/>
|
<field name="kanban_state"/>
|
||||||
<field name="state"/>
|
<field name="stage_id"/>
|
||||||
|
<field name="state" groups="base.group_no_one"/>
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
|
@ -82,7 +82,7 @@ class report_project_task_user(osv.osv):
|
||||||
t.name as name,
|
t.name as name,
|
||||||
t.company_id,
|
t.company_id,
|
||||||
t.partner_id,
|
t.partner_id,
|
||||||
t.type_id,
|
t.stage_id,
|
||||||
remaining_hours as remaining_hours,
|
remaining_hours as remaining_hours,
|
||||||
total_hours as total_hours,
|
total_hours as total_hours,
|
||||||
t.delay_hours as hours_delay,
|
t.delay_hours as hours_delay,
|
||||||
|
@ -114,7 +114,7 @@ class report_project_task_user(osv.osv):
|
||||||
name,
|
name,
|
||||||
t.company_id,
|
t.company_id,
|
||||||
t.partner_id,
|
t.partner_id,
|
||||||
t.type_id
|
t.stage_id
|
||||||
|
|
||||||
""")
|
""")
|
||||||
|
|
||||||
|
|
|
@ -200,7 +200,7 @@
|
||||||
<tree string="Task By Days" >
|
<tree string="Task By Days" >
|
||||||
<field name="day"/>
|
<field name="day"/>
|
||||||
<field name="total_task"/>
|
<field name="total_task"/>
|
||||||
<field name="state"/>
|
<field name="state" groups="base.group_no_one"/>
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
I change the stage of task to next stage.
|
I change the stage of task to next stage.
|
||||||
-
|
-
|
||||||
!python {model: project.task}: |
|
!python {model: project.task}: |
|
||||||
self.next_type(cr, uid, [ref("project_task_1")])
|
self.stage_next(cr, uid, [ref("project_task_1")])
|
||||||
-
|
-
|
||||||
!record {model: project.task.reevaluate, id: reevaluate_id}:
|
!record {model: project.task.reevaluate, id: reevaluate_id}:
|
||||||
remaining_hours : 120
|
remaining_hours : 120
|
||||||
|
@ -68,9 +68,9 @@
|
||||||
I change the stage of task to previous stage.
|
I change the stage of task to previous stage.
|
||||||
-
|
-
|
||||||
!python {model: project.task}: |
|
!python {model: project.task}: |
|
||||||
self.prev_type(cr, uid, [ref("project_task_1")])
|
self.stage_previous(cr, uid, [ref("project_task_1")])
|
||||||
-
|
-
|
||||||
I cancel Task.
|
I cancel Task.
|
||||||
-
|
-
|
||||||
!python {model: project.task}: |
|
!python {model: project.task}: |
|
||||||
self.do_cancel(cr, uid, [ref("project_task_2")])
|
self.do_cancel(cr, uid, [ref("project_task_2")])
|
||||||
|
|
|
@ -38,6 +38,7 @@ and decide on their status as they evolve.
|
||||||
'website': 'http://www.openerp.com',
|
'website': 'http://www.openerp.com',
|
||||||
'images': ['images/issue_analysis.jpeg','images/project_issue.jpeg'],
|
'images': ['images/issue_analysis.jpeg','images/project_issue.jpeg'],
|
||||||
'depends': [
|
'depends': [
|
||||||
|
'base_status',
|
||||||
'crm',
|
'crm',
|
||||||
'project',
|
'project',
|
||||||
],
|
],
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
<field name="type">graph</field>
|
<field name="type">graph</field>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<graph orientation="vertical" string="Project Issue" type="bar">
|
<graph orientation="vertical" string="Project Issue" type="bar">
|
||||||
<field name="type_id"/>
|
<field name="stage_id"/>
|
||||||
<field name="nbr" operator="+"/>
|
<field name="nbr" operator="+"/>
|
||||||
<field group="True" name="user_id"/>
|
<field group="True" name="user_id"/>
|
||||||
</graph>
|
</graph>
|
||||||
|
@ -96,18 +96,10 @@
|
||||||
<field name="partner_id"/>
|
<field name="partner_id"/>
|
||||||
<field name="project_id" />
|
<field name="project_id" />
|
||||||
<field name="priority" string="Priority"/>
|
<field name="priority" string="Priority"/>
|
||||||
<field name="type_id" widget="selection" readonly="1"/>
|
|
||||||
<button name="prev_type" string="Previous" type="object" icon="gtk-go-back" help="Change to Previous Stage"/>
|
|
||||||
<button name="next_type" string="Next" type="object" icon="gtk-go-forward" help="Change to Next Stage"/>
|
|
||||||
<field name="version_id" widget="selection"/>
|
<field name="version_id" widget="selection"/>
|
||||||
<field name="progress" widget="progressbar" attrs="{'invisible':[('task_id','=',False)]}"/>
|
<field name="progress" widget="progressbar" attrs="{'invisible':[('task_id','=',False)]}"/>
|
||||||
<field name="state"/>
|
<field name="stage_id" widget="selection" readonly="1"/>
|
||||||
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
|
<field name="state" groups="base.group_no_one"/>
|
||||||
<button name="case_close" string="Done" states="open,draft,pending" type="object" icon="gtk-jump-to"/>
|
|
||||||
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward" help="To Do"/>
|
|
||||||
<button name="case_pending" string="Pending" states="draft,open" type="object" icon="gtk-media-pause"/>
|
|
||||||
<button name="case_escalate" string="Escalate" states="open,draft,pending" type="object" icon="gtk-go-up"/>
|
|
||||||
<button name="case_reset" string="Reset to Draft" states="done,cancel" type="object" icon="gtk-convert"/>
|
|
||||||
<field name="categ_id" invisible="1"/>
|
<field name="categ_id" invisible="1"/>
|
||||||
<field name="task_id" invisible="1"/>
|
<field name="task_id" invisible="1"/>
|
||||||
</tree>
|
</tree>
|
||||||
|
|
|
@ -0,0 +1,952 @@
|
||||||
|
# Swedish translation for openobject-addons
|
||||||
|
# Copyright (c) 2012 Rosetta Contributors and Canonical Ltd 2012
|
||||||
|
# This file is distributed under the same license as the openobject-addons package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, 2012.
|
||||||
|
#
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: openobject-addons\n"
|
||||||
|
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"POT-Creation-Date: 2012-02-08 01:37+0100\n"
|
||||||
|
"PO-Revision-Date: 2012-05-30 19:13+0000\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: Swedish <sv@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-05-31 04:54+0000\n"
|
||||||
|
"X-Generator: Launchpad (build 15322)\n"
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: view:project.issue.report:0
|
||||||
|
msgid "Previous Month"
|
||||||
|
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
|
||||||
|
#: constraint:project.project:0
|
||||||
|
msgid "Error! project start-date must be lower then project end-date."
|
||||||
|
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
|
||||||
|
#: code:addons/project_issue/project_issue.py:406
|
||||||
|
#, python-format
|
||||||
|
msgid "Warning !"
|
||||||
|
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
|
||||||
|
#: view:project.issue:0
|
||||||
|
msgid "Today's features"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: model:ir.model,name:project_issue.model_project_issue_version
|
||||||
|
msgid "project.issue.version"
|
||||||
|
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:406
|
||||||
|
#, 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
|
||||||
|
#: view:project.issue:0
|
||||||
|
msgid "Add Internal Note"
|
||||||
|
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
|
||||||
|
#: view:board.board:0
|
||||||
|
msgid "Issues By Stage"
|
||||||
|
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,name:project_issue.action_view_my_open_project_issue_tree
|
||||||
|
msgid "My Open Project issues"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: selection:project.issue,state:0 selection:project.issue.report,state:0
|
||||||
|
msgid "Cancelled"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: view:project.issue:0
|
||||||
|
msgid "Change to Next Stage"
|
||||||
|
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
|
||||||
|
#: view:project.issue:0
|
||||||
|
msgid "Issue / Partner"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: field:project.issue.report,working_hours_open:0
|
||||||
|
msgid "Avg. Working Hours to Open"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: field:project.issue,date_action_next:0
|
||||||
|
msgid "Next Action"
|
||||||
|
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 "Change Color"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: code:addons/project_issue/project_issue.py:482
|
||||||
|
#, python-format
|
||||||
|
msgid " (copy)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: view:project.issue:0
|
||||||
|
msgid "Responsible"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: selection:project.issue,priority:0
|
||||||
|
#: selection:project.issue.report,priority:0
|
||||||
|
msgid "Low"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: view:project.issue:0
|
||||||
|
msgid "Statistics"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: view:project.issue:0
|
||||||
|
msgid "Convert To Task"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: model:crm.case.categ,name:project_issue.bug_categ
|
||||||
|
msgid "Maintenance"
|
||||||
|
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
|
||||||
|
#: view:project.issue:0
|
||||||
|
msgid "Next"
|
||||||
|
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
|
||||||
|
msgid "Send New Email"
|
||||||
|
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
|
||||||
|
#: 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
|
||||||
|
#: 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
|
||||||
|
#: view:project.issue:0
|
||||||
|
msgid "Reset to Draft"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: view:project.issue:0
|
||||||
|
msgid "Today"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: model:ir.actions.act_window,name:project_issue.open_board_project_issue
|
||||||
|
#: model:ir.ui.menu,name:project_issue.menu_deshboard_project_issue
|
||||||
|
msgid "Project Issue Dashboard"
|
||||||
|
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 view:project.issue.report:0
|
||||||
|
#: field:project.issue.report,type_id:0
|
||||||
|
msgid "Stage"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: view:project.issue:0
|
||||||
|
msgid "History Information"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: model:ir.actions.act_window,name:project_issue.action_view_current_project_issue_tree
|
||||||
|
#: model:ir.actions.act_window,name:project_issue.action_view_pending_project_issue_tree
|
||||||
|
msgid "Project issues"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: view:project.issue:0
|
||||||
|
msgid "Communication & History"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: view:project.issue.report:0
|
||||||
|
msgid "My Open Project Issue"
|
||||||
|
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
|
||||||
|
msgid "Contact"
|
||||||
|
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 "Partner"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: view:board.board:0
|
||||||
|
msgid "My Issues"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: view:project.issue:0
|
||||||
|
msgid "Change to Previous Stage"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: model:ir.actions.act_window,help:project_issue.project_issue_version_action
|
||||||
|
msgid ""
|
||||||
|
"You can use the issues tracker in OpenERP to handle bugs in the software "
|
||||||
|
"development project, to handle claims in after-sales services, etc. Define "
|
||||||
|
"here the different versions of your products on which you can work on issues."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: code:addons/project_issue/project_issue.py:330
|
||||||
|
#, 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
|
||||||
|
#: view:project.issue:0
|
||||||
|
msgid "Issue Tracker Tree"
|
||||||
|
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
|
||||||
|
#: model:ir.model,name:project_issue.model_project_issue_report
|
||||||
|
msgid "project.issue.report"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: code:addons/project_issue/project_issue.py:408 view:project.issue:0
|
||||||
|
#, python-format
|
||||||
|
msgid "Escalate"
|
||||||
|
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 "Open Features"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: view:project.issue:0
|
||||||
|
msgid "Previous"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: view:project.issue:0 field:project.issue,categ_id:0
|
||||||
|
#: view:project.issue.report:0 field:project.issue.report,categ_id:0
|
||||||
|
msgid "Category"
|
||||||
|
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
|
||||||
|
#: view:project.issue:0
|
||||||
|
msgid "Reset to New"
|
||||||
|
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
|
||||||
|
#: selection:project.issue.report,state:0
|
||||||
|
msgid "Draft"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: view:project.issue:0
|
||||||
|
msgid "Contact Information"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: field:project.issue,date_closed:0 selection:project.issue.report,state:0
|
||||||
|
msgid "Closed"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: view:project.issue:0
|
||||||
|
msgid "Reply"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: field:project.issue.report,delay_close:0
|
||||||
|
msgid "Avg. Delay to Close"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: view:project.issue:0 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
|
||||||
|
msgid "Status"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: view:project.issue.report:0
|
||||||
|
msgid "#Project Issues"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: view:board.board:0
|
||||||
|
msgid "Current Issues"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: selection:project.issue.report,month:0
|
||||||
|
msgid "August"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: selection:project.issue,priority:0
|
||||||
|
#: selection:project.issue.report,priority:0
|
||||||
|
msgid "Normal"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: view:project.issue:0
|
||||||
|
msgid "Global CC"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: view:project.issue:0 view:project.issue.report:0
|
||||||
|
msgid "To Do"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: selection:project.issue.report,month:0
|
||||||
|
msgid "June"
|
||||||
|
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,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
|
||||||
|
#: view:project.issue.report:0
|
||||||
|
msgid "Search"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: selection:project.issue.report,month:0
|
||||||
|
msgid "October"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: view:board.board:0
|
||||||
|
msgid "Issues Dashboard"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: view:project.issue:0 field:project.issue,type_id:0
|
||||||
|
msgid "Stages"
|
||||||
|
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
|
||||||
|
#: view:board.board:0
|
||||||
|
msgid "Issues By State"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: view:project.issue:0 field:project.issue,date:0
|
||||||
|
msgid "Date"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: view:project.issue:0
|
||||||
|
msgid "History"
|
||||||
|
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
|
||||||
|
#: field:project.project,reply_to:0
|
||||||
|
msgid "Reply-To Email Address"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: field:project.issue,partner_address_id:0
|
||||||
|
msgid "Partner Contact"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: view:project.issue:0
|
||||||
|
msgid "Issue Tracker Form"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: view:project.issue:0 field:project.issue,state:0
|
||||||
|
#: view:project.issue.report:0 field:project.issue.report,state:0
|
||||||
|
msgid "State"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: view:project.issue:0
|
||||||
|
msgid "General"
|
||||||
|
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
|
||||||
|
#: view:project.issue:0
|
||||||
|
msgid "Close"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: view:project.issue:0 selection:project.issue.report,state:0
|
||||||
|
msgid "Open"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: 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
|
||||||
|
msgid "Issues"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: selection:project.issue,state:0
|
||||||
|
msgid "In Progress"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: model:ir.actions.act_window,name:project_issue.action_project_issue_graph_stage
|
||||||
|
#: model:ir.actions.act_window,name:project_issue.action_project_issue_graph_state
|
||||||
|
#: 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
|
||||||
|
#: model:ir.actions.act_window,help:project_issue.project_issue_categ_act0
|
||||||
|
msgid ""
|
||||||
|
"Issues such as system bugs, customer complaints, and material breakdowns are "
|
||||||
|
"collected here. You can define the stages assigned when solving the project "
|
||||||
|
"issue (analysis, development, done). With the mailgateway module, issues can "
|
||||||
|
"be integrated through an email address (example: support@mycompany.com)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: view:board.board:0 view:project.issue:0
|
||||||
|
msgid "Pending Issues"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: field:project.issue,name:0
|
||||||
|
msgid "Issue"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: view:project.issue:0
|
||||||
|
msgid "Feature Tracker Search"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: view:project.issue:0 field:project.issue,description: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
|
||||||
|
#: view:project.issue.report:0 field:project.issue.report,email:0
|
||||||
|
msgid "# Emails"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: help:project.issue,state:0
|
||||||
|
msgid ""
|
||||||
|
"The state is set to 'Draft', when a case is created. "
|
||||||
|
" \n"
|
||||||
|
"If the case is in progress the state is set to 'Open'. "
|
||||||
|
" \n"
|
||||||
|
"When the case is over, the state is set to 'Done'. "
|
||||||
|
" \n"
|
||||||
|
"If the case needs to be reviewed then the state is set to 'Pending'."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: selection:project.issue.report,month:0
|
||||||
|
msgid "February"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: code:addons/project_issue/project_issue.py:70
|
||||||
|
#, python-format
|
||||||
|
msgid "Issue '%s' has been opened."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: view:project.issue:0
|
||||||
|
msgid "Feature description"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: view:project.issue:0
|
||||||
|
msgid "Edit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: field:project.project,project_escalation_id:0
|
||||||
|
msgid "Project Escalation"
|
||||||
|
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:project.issue.report:0
|
||||||
|
msgid "Month-1"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: code:addons/project_issue/project_issue.py:85
|
||||||
|
#, python-format
|
||||||
|
msgid "Issue '%s' has been closed."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: selection:project.issue.report,month:0
|
||||||
|
msgid "April"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: view:project.issue:0
|
||||||
|
msgid "References"
|
||||||
|
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
|
||||||
|
#: view:project.issue.report:0
|
||||||
|
msgid "Current Year"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: code:addons/project_issue/project_issue.py:415
|
||||||
|
#, python-format
|
||||||
|
msgid "No Title"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: help:project.issue.report,delay_close:0
|
||||||
|
#: help:project.issue.report,delay_open:0
|
||||||
|
msgid "Number of Days to close the project issue"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: view:project.issue.report:0 field:project.issue.report,section_id:0
|
||||||
|
msgid "Sale Team"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. module: project_issue
|
||||||
|
#: field:project.issue.report,working_hours_close:0
|
||||||
|
msgid "Avg. Working Hours to Close"
|
||||||
|
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
|
||||||
|
#: view:board.board:0
|
||||||
|
msgid "My Open Issues by Creation Date"
|
||||||
|
msgstr ""
|
|
@ -19,6 +19,7 @@
|
||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
|
from base_status.base_stage import base_stage
|
||||||
from crm import crm
|
from crm import crm
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from osv import fields,osv
|
from osv import fields,osv
|
||||||
|
@ -42,12 +43,62 @@ class project_issue_version(osv.osv):
|
||||||
}
|
}
|
||||||
project_issue_version()
|
project_issue_version()
|
||||||
|
|
||||||
class project_issue(crm.crm_case, osv.osv):
|
_ISSUE_STATE= [('draft', 'New'), ('open', 'In Progress'), ('cancel', 'Cancelled'), ('done', 'Done'),('pending', 'Pending')]
|
||||||
|
|
||||||
|
class project_issue(base_stage, osv.osv):
|
||||||
_name = "project.issue"
|
_name = "project.issue"
|
||||||
_description = "Project Issue"
|
_description = "Project Issue"
|
||||||
_order = "priority, create_date desc"
|
_order = "priority, create_date desc"
|
||||||
_inherit = ['ir.needaction_mixin', 'mail.thread']
|
_inherit = ['ir.needaction_mixin', 'mail.thread']
|
||||||
|
|
||||||
|
def _get_default_project_id(self, cr, uid, context=None):
|
||||||
|
""" Gives default project by checking if present in the context """
|
||||||
|
return self._resolve_project_id_from_context(cr, uid, context=context)
|
||||||
|
|
||||||
|
def _get_default_stage_id(self, cr, uid, context=None):
|
||||||
|
""" Gives default stage_id """
|
||||||
|
project_id = self._get_default_project_id(cr, uid, context=context)
|
||||||
|
return self.stage_find(cr, uid, [], project_id, [('state', '=', 'draft')], context=context)
|
||||||
|
|
||||||
|
def _resolve_project_id_from_context(self, cr, uid, context=None):
|
||||||
|
""" Returns ID of project based on the value of 'default_project_id'
|
||||||
|
context key, or None if it cannot be resolved to a single
|
||||||
|
project.
|
||||||
|
"""
|
||||||
|
if context is None:
|
||||||
|
context = {}
|
||||||
|
if type(context.get('default_project_id')) in (int, long):
|
||||||
|
return context.get('default_project_id')
|
||||||
|
if isinstance(context.get('default_project_id'), basestring):
|
||||||
|
project_name = context['default_project_id']
|
||||||
|
project_ids = self.pool.get('project.project').name_search(cr, uid, name=project_name, context=context)
|
||||||
|
if len(project_ids) == 1:
|
||||||
|
return int(project_ids[0][0])
|
||||||
|
return None
|
||||||
|
|
||||||
|
def _read_group_stage_ids(self, cr, uid, ids, domain, read_group_order=None, access_rights_uid=None, context=None):
|
||||||
|
access_rights_uid = access_rights_uid or uid
|
||||||
|
stage_obj = self.pool.get('project.task.type')
|
||||||
|
order = stage_obj._order
|
||||||
|
# lame hack to allow reverting search, should just work in the trivial case
|
||||||
|
if read_group_order == 'stage_id desc':
|
||||||
|
order = "%s desc" % order
|
||||||
|
# retrieve section_id from the context and write the domain
|
||||||
|
# - ('id', 'in', 'ids'): add columns that should be present
|
||||||
|
# - OR ('case_default', '=', True), ('fold', '=', False): add default columns that are not folded
|
||||||
|
# - OR ('project_ids', 'in', project_id), ('fold', '=', False) if project_id: add project columns that are not folded
|
||||||
|
search_domain = []
|
||||||
|
project_id = self._resolve_project_id_from_context(cr, uid, context=context)
|
||||||
|
if project_id:
|
||||||
|
search_domain += ['|', '&', ('project_ids', '=', project_id), ('fold', '=', False)]
|
||||||
|
search_domain += ['|', ('id', 'in', ids), '&', ('case_default', '=', True), ('fold', '=', False)]
|
||||||
|
# perform search
|
||||||
|
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
|
||||||
|
result.sort(lambda x,y: cmp(stage_ids.index(x[0]), stage_ids.index(y[0])))
|
||||||
|
return result
|
||||||
|
|
||||||
def _compute_day(self, cr, uid, ids, fields, args, context=None):
|
def _compute_day(self, cr, uid, ids, fields, args, context=None):
|
||||||
"""
|
"""
|
||||||
@param cr: the current row, from the database cursor,
|
@param cr: the current row, from the database cursor,
|
||||||
|
@ -173,11 +224,13 @@ class project_issue(crm.crm_case, osv.osv):
|
||||||
'partner_id': fields.many2one('res.partner', 'Partner', select=1),
|
'partner_id': fields.many2one('res.partner', 'Partner', select=1),
|
||||||
'company_id': fields.many2one('res.company', 'Company'),
|
'company_id': fields.many2one('res.company', 'Company'),
|
||||||
'description': fields.text('Description'),
|
'description': fields.text('Description'),
|
||||||
'state': fields.selection([('draft', 'New'), ('cancel', 'Cancelled'), ('open', 'In Progress'),('pending', 'Pending'),('done', 'Done') ], 'Status', size=16, readonly=True,
|
'state': fields.related('stage_id', 'state', type="selection", store=True,
|
||||||
help='The state is set to \'Draft\', when a case is created.\
|
selection=_ISSUE_STATE, string="State", readonly=True,
|
||||||
\nIf the case is in progress the state is set to \'Open\'.\
|
help='The state is set to \'Draft\', when a case is created.\
|
||||||
\nWhen the case is over, the state is set to \'Done\'.\
|
If the case is in progress the state is set to \'Open\'.\
|
||||||
\nIf the case needs to be reviewed then the state is set to \'Pending\'.'),
|
When the case is over, the state is set to \'Done\'.\
|
||||||
|
If the case needs to be reviewed then the state is \
|
||||||
|
set to \'Pending\'.'),
|
||||||
'email_from': fields.char('Email', size=128, help="These people will receive email.", select=1),
|
'email_from': fields.char('Email', size=128, help="These people will receive email.", select=1),
|
||||||
'email_cc': fields.char('Watchers Emails', size=256, help="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"),
|
'email_cc': fields.char('Watchers Emails', size=256, help="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"),
|
||||||
'date_open': fields.datetime('Opened', readonly=True,select=True),
|
'date_open': fields.datetime('Opened', readonly=True,select=True),
|
||||||
|
@ -188,7 +241,8 @@ class project_issue(crm.crm_case, osv.osv):
|
||||||
'categ_id': fields.many2one('crm.case.categ', 'Category', domain="[('object_id.model', '=', 'crm.project.bug')]"),
|
'categ_id': fields.many2one('crm.case.categ', 'Category', domain="[('object_id.model', '=', 'crm.project.bug')]"),
|
||||||
'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority', select=True),
|
'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority', select=True),
|
||||||
'version_id': fields.many2one('project.issue.version', 'Version'),
|
'version_id': fields.many2one('project.issue.version', 'Version'),
|
||||||
'type_id': fields.many2one ('project.task.type', 'Stages', domain="[('project_ids', '=', project_id)]"),
|
'stage_id': fields.many2one ('project.task.type', 'Stages',
|
||||||
|
domain="['|', ('project_ids', '=', project_id), ('case_default', '=', True)]"),
|
||||||
'project_id':fields.many2one('project.project', 'Project'),
|
'project_id':fields.many2one('project.project', 'Project'),
|
||||||
'duration': fields.float('Duration'),
|
'duration': fields.float('Duration'),
|
||||||
'task_id': fields.many2one('project.task', 'Task', domain="[('project_id','=',project_id)]"),
|
'task_id': fields.many2one('project.task', 'Task', domain="[('project_id','=',project_id)]"),
|
||||||
|
@ -221,15 +275,20 @@ class project_issue(crm.crm_case, osv.osv):
|
||||||
|
|
||||||
_defaults = {
|
_defaults = {
|
||||||
'active': 1,
|
'active': 1,
|
||||||
'partner_id': crm.crm_case._get_default_partner,
|
'partner_id': lambda s, cr, uid, c: s._get_default_partner(cr, uid, c),
|
||||||
'email_from': crm.crm_case._get_default_email,
|
'email_from': lambda s, cr, uid, c: s._get_default_email(cr, uid, c),
|
||||||
'state': 'draft',
|
'state': 'draft',
|
||||||
'section_id': crm.crm_case._get_section,
|
'stage_id': lambda s, cr, uid, c: s._get_default_stage_id(cr, uid, c),
|
||||||
|
'section_id': lambda s, cr, uid, c: s._get_default_section_id(cr, uid, c),
|
||||||
'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.helpdesk', context=c),
|
'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.helpdesk', context=c),
|
||||||
'priority': crm.AVAILABLE_PRIORITIES[2][0],
|
'priority': crm.AVAILABLE_PRIORITIES[2][0],
|
||||||
'categ_id' : lambda *a: False,
|
'categ_id' : lambda *a: False,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_group_by_full = {
|
||||||
|
'stage_id': _read_group_stage_ids
|
||||||
|
}
|
||||||
|
|
||||||
def set_priority(self, cr, uid, ids, priority):
|
def set_priority(self, cr, uid, ids, priority):
|
||||||
"""Set lead priority
|
"""Set lead priority
|
||||||
"""
|
"""
|
||||||
|
@ -312,36 +371,20 @@ class project_issue(crm.crm_case, osv.osv):
|
||||||
def convert_to_bug(self, cr, uid, ids, context=None):
|
def convert_to_bug(self, cr, uid, ids, context=None):
|
||||||
return self._convert(cr, uid, ids, 'bug_categ', context=context)
|
return self._convert(cr, uid, ids, 'bug_categ', context=context)
|
||||||
|
|
||||||
def next_type(self, cr, uid, ids, context=None):
|
def copy(self, cr, uid, id, default=None, context=None):
|
||||||
for task in self.browse(cr, uid, ids):
|
issue = self.read(cr, uid, id, ['name'], context=context)
|
||||||
typeid = task.type_id.id
|
if not default:
|
||||||
types = map(lambda x:x.id, task.project_id.type_ids or [])
|
default = {}
|
||||||
if types:
|
default = default.copy()
|
||||||
if not typeid:
|
default['name'] = issue['name'] + _(' (copy)')
|
||||||
self.write(cr, uid, [task.id], {'type_id': types[0]})
|
return super(project_issue, self).copy(cr, uid, id, default=default,
|
||||||
elif typeid and typeid in types and types.index(typeid) != len(types)-1 :
|
context=context)
|
||||||
index = types.index(typeid)
|
|
||||||
self.write(cr, uid, [task.id], {'type_id': types[index+1]})
|
|
||||||
return True
|
|
||||||
|
|
||||||
def prev_type(self, cr, uid, ids, context=None):
|
|
||||||
for task in self.browse(cr, uid, ids):
|
|
||||||
typeid = task.type_id.id
|
|
||||||
types = map(lambda x:x.id, task.project_id and task.project_id.type_ids or [])
|
|
||||||
if types:
|
|
||||||
if typeid and typeid in types:
|
|
||||||
index = types.index(typeid)
|
|
||||||
self.write(cr, uid, [task.id], {'type_id': index and types[index-1] or False})
|
|
||||||
return True
|
|
||||||
|
|
||||||
def write(self, cr, uid, ids, vals, context=None):
|
def write(self, cr, uid, ids, vals, context=None):
|
||||||
#Update last action date every time the user change the stage, the state or send a new email
|
#Update last action date every time the user change the stage, the state or send a new email
|
||||||
logged_fields = ['type_id', 'state', 'message_ids']
|
logged_fields = ['stage_id', 'state', 'message_ids']
|
||||||
if any([field in vals for field in logged_fields]):
|
if any([field in vals for field in logged_fields]):
|
||||||
vals['date_action_last'] = time.strftime('%Y-%m-%d %H:%M:%S')
|
vals['date_action_last'] = time.strftime('%Y-%m-%d %H:%M:%S')
|
||||||
if vals.get('type_id', False):
|
|
||||||
stage = self.pool.get('project.task.type').browse(cr, uid, vals['type_id'], context=context)
|
|
||||||
self.message_append_note(cr, uid, ids, body=_("Stage changed to <b>%s</b>.") % stage.name, context=context)
|
|
||||||
return super(project_issue, self).write(cr, uid, ids, vals, context)
|
return super(project_issue, self).write(cr, uid, ids, vals, context)
|
||||||
|
|
||||||
def onchange_task_id(self, cr, uid, ids, task_id, context=None):
|
def onchange_task_id(self, cr, uid, ids, task_id, context=None):
|
||||||
|
@ -363,15 +406,51 @@ class project_issue(crm.crm_case, osv.osv):
|
||||||
self.create_send_note(cr, uid, [obj_id], context=context)
|
self.create_send_note(cr, uid, [obj_id], context=context)
|
||||||
return obj_id
|
return obj_id
|
||||||
|
|
||||||
def case_open(self, cr, uid, ids, context=None):
|
# -------------------------------------------------------
|
||||||
res = super(project_issue, self).case_open(cr, uid, ids, context)
|
# Stage management
|
||||||
self.write(cr, uid, ids, {'date_open': time.strftime('%Y-%m-%d %H:%M:%S'), 'user_id' : uid})
|
# -------------------------------------------------------
|
||||||
return res
|
|
||||||
|
def stage_find(self, cr, uid, cases, section_id, domain=[], order='sequence', context=None):
|
||||||
|
""" Override of the base.stage method
|
||||||
|
Parameter of the stage search taken from the issue:
|
||||||
|
- type: stage type must be the same or 'both'
|
||||||
|
- section_id: if set, stages must belong to this section or
|
||||||
|
be a default case
|
||||||
|
"""
|
||||||
|
if isinstance(cases, (int, long)):
|
||||||
|
cases = self.browse(cr, uid, cases, context=context)
|
||||||
|
# collect all section_ids
|
||||||
|
section_ids = []
|
||||||
|
if section_id:
|
||||||
|
section_ids.append(section_id)
|
||||||
|
for task in cases:
|
||||||
|
if task.project_id:
|
||||||
|
section_ids.append(task.project_id.id)
|
||||||
|
# OR all section_ids and OR with case_default
|
||||||
|
search_domain = []
|
||||||
|
if section_ids:
|
||||||
|
search_domain += [('|')] * len(section_ids)
|
||||||
|
for section_id in section_ids:
|
||||||
|
search_domain.append(('project_ids', '=', section_id))
|
||||||
|
search_domain.append(('case_default', '=', True))
|
||||||
|
# AND with the domain in parameter
|
||||||
|
search_domain += list(domain)
|
||||||
|
# perform search, return the first found
|
||||||
|
stage_ids = self.pool.get('project.task.type').search(cr, uid, search_domain, order=order, context=context)
|
||||||
|
if stage_ids:
|
||||||
|
return stage_ids[0]
|
||||||
|
return False
|
||||||
|
|
||||||
|
def case_cancel(self, cr, uid, ids, context=None):
|
||||||
|
""" Cancels case """
|
||||||
|
self.case_set(cr, uid, ids, 'cancelled', {'active': True}, context=context)
|
||||||
|
self.case_cancel_send_note(cr, uid, ids, context=context)
|
||||||
|
return True
|
||||||
|
|
||||||
def case_escalate(self, cr, uid, ids, context=None):
|
def case_escalate(self, cr, uid, ids, context=None):
|
||||||
cases = self.browse(cr, uid, ids)
|
cases = self.browse(cr, uid, ids)
|
||||||
for case in cases:
|
for case in cases:
|
||||||
data = {'state' : 'draft'}
|
data = {}
|
||||||
if case.project_id.project_escalation_id:
|
if case.project_id.project_escalation_id:
|
||||||
data['project_id'] = case.project_id.project_escalation_id.id
|
data['project_id'] = case.project_id.project_escalation_id.id
|
||||||
if case.project_id.project_escalation_id.user_id:
|
if case.project_id.project_escalation_id.user_id:
|
||||||
|
@ -380,10 +459,14 @@ class project_issue(crm.crm_case, osv.osv):
|
||||||
self.pool.get('project.task').write(cr, uid, [case.task_id.id], {'project_id': data['project_id'], 'user_id': False})
|
self.pool.get('project.task').write(cr, uid, [case.task_id.id], {'project_id': data['project_id'], 'user_id': False})
|
||||||
else:
|
else:
|
||||||
raise osv.except_osv(_('Warning !'), _('You cannot escalate this issue.\nThe relevant Project has not configured the Escalation Project!'))
|
raise osv.except_osv(_('Warning !'), _('You cannot escalate this issue.\nThe relevant Project has not configured the Escalation Project!'))
|
||||||
self.write(cr, uid, [case.id], data)
|
self.case_set(cr, uid, ids, 'draft', data, context=context)
|
||||||
self.case_escalate_send_note(cr, uid, [case.id], context)
|
self.case_escalate_send_note(cr, uid, [case.id], context=context)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
# -------------------------------------------------------
|
||||||
|
# Mail gateway
|
||||||
|
# -------------------------------------------------------
|
||||||
|
|
||||||
def message_new(self, cr, uid, msg, custom_values=None, context=None):
|
def message_new(self, cr, uid, msg, custom_values=None, context=None):
|
||||||
"""Automatically called when new email message arrives"""
|
"""Automatically called when new email message arrives"""
|
||||||
if context is None:
|
if context is None:
|
||||||
|
@ -434,7 +517,7 @@ class project_issue(crm.crm_case, osv.osv):
|
||||||
# Reassign the 'open' state to the case if this one is in pending or done
|
# Reassign the 'open' state to the case if this one is in pending or done
|
||||||
for record in self.browse(cr, uid, ids, context=context):
|
for record in self.browse(cr, uid, ids, context=context):
|
||||||
if record.state in ('pending', 'done'):
|
if record.state in ('pending', 'done'):
|
||||||
record.write({'state' : 'open'})
|
self.case_set(cr, uid, ids, 'open', {}, context=context)
|
||||||
|
|
||||||
vls = { }
|
vls = { }
|
||||||
for line in msg['body_text'].split('\n'):
|
for line in msg['body_text'].split('\n'):
|
||||||
|
@ -448,15 +531,6 @@ class project_issue(crm.crm_case, osv.osv):
|
||||||
res = self.write(cr, uid, ids, vals)
|
res = self.write(cr, uid, ids, vals)
|
||||||
self.message_append_dict(cr, uid, ids, msg, context=context)
|
self.message_append_dict(cr, uid, ids, msg, context=context)
|
||||||
return res
|
return res
|
||||||
|
|
||||||
def copy(self, cr, uid, id, default=None, context=None):
|
|
||||||
issue = self.read(cr, uid, id, ['name'], context=context)
|
|
||||||
if not default:
|
|
||||||
default = {}
|
|
||||||
default = default.copy()
|
|
||||||
default['name'] = issue['name'] + _(' (copy)')
|
|
||||||
return super(project_issue, self).copy(cr, uid, id, default=default,
|
|
||||||
context=context)
|
|
||||||
|
|
||||||
# -------------------------------------------------------
|
# -------------------------------------------------------
|
||||||
# OpenChatter methods and notifications
|
# OpenChatter methods and notifications
|
||||||
|
@ -475,9 +549,15 @@ class project_issue(crm.crm_case, osv.osv):
|
||||||
if obj.user_id:
|
if obj.user_id:
|
||||||
sub_ids.append(obj.user_id.id)
|
sub_ids.append(obj.user_id.id)
|
||||||
return self.pool.get('res.users').read(cr, uid, sub_ids, context=context)
|
return self.pool.get('res.users').read(cr, uid, sub_ids, context=context)
|
||||||
|
|
||||||
|
def stage_set_send_note(self, cr, uid, ids, stage_id, context=None):
|
||||||
|
""" Override of the (void) default notification method. """
|
||||||
|
stage_name = self.pool.get('project.task.type').name_get(cr, uid, [stage_id], context=context)[0][1]
|
||||||
|
return self.message_append_note(cr, uid, ids, body= _("Stage changed to <b>%s</b>.") % (stage_name), context=context)
|
||||||
|
|
||||||
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
|
def case_get_note_msg_prefix(self, cr, uid, id, context=None):
|
||||||
return 'Project issue '
|
""" Override of default prefix for notifications. """
|
||||||
|
return 'Project issue'
|
||||||
|
|
||||||
def convert_to_task_send_note(self, cr, uid, ids, context=None):
|
def convert_to_task_send_note(self, cr, uid, ids, context=None):
|
||||||
message = _("Project issue has been <b>converted</b> in to task.")
|
message = _("Project issue has been <b>converted</b> in to task.")
|
||||||
|
|
|
@ -7,7 +7,6 @@
|
||||||
<field eval=""5"" name="priority"/>
|
<field eval=""5"" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field name="partner_id" ref="base.res_partner_agrolait"/>
|
<field name="partner_id" ref="base.res_partner_agrolait"/>
|
||||||
<field eval=""open"" name="state"/>
|
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field eval="1" name="active"/>
|
<field eval="1" name="active"/>
|
||||||
<field name="categ_id" ref="bug_categ"/>
|
<field name="categ_id" ref="bug_categ"/>
|
||||||
|
@ -15,7 +14,7 @@
|
||||||
<field eval="15.0" name="duration"/>
|
<field eval="15.0" name="duration"/>
|
||||||
<field eval=""Bug in Accounts module"" name="name"/>
|
<field eval=""Bug in Accounts module"" name="name"/>
|
||||||
<field eval=""agr@agrolait.com"" name="email_from"/>
|
<field eval=""agr@agrolait.com"" name="email_from"/>
|
||||||
<field name="type_id" ref="project.project_tt_specification"/>
|
<field name="stage_id" ref="project.project_tt_specification"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="crm_case_programnotgivingproperoutput0" model="project.issue">
|
<record id="crm_case_programnotgivingproperoutput0" model="project.issue">
|
||||||
|
@ -23,28 +22,26 @@
|
||||||
<field eval=""3"" name="priority"/>
|
<field eval=""3"" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field name="partner_id" ref="base.res_partner_asus"/>
|
<field name="partner_id" ref="base.res_partner_asus"/>
|
||||||
<field eval=""done"" name="state"/>
|
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field eval="1" name="active"/>
|
<field eval="1" name="active"/>
|
||||||
<field eval="3.5" name="duration"/>
|
<field eval="3.5" name="duration"/>
|
||||||
<field name="categ_id" ref="bug_categ"/>
|
<field name="categ_id" ref="bug_categ"/>
|
||||||
<field eval=""Program not giving proper output"" name="name"/>
|
<field eval=""Program not giving proper output"" name="name"/>
|
||||||
<field name="project_id" ref="project.project_project_22"/>
|
<field name="project_id" ref="project.project_project_22"/>
|
||||||
<field name="type_id" ref="project.project_tt_specification"/>
|
<field name="stage_id" ref="project.project_tt_specification"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="crm_case_outputincorrect0" model="project.issue">
|
<record id="crm_case_outputincorrect0" model="project.issue">
|
||||||
<field eval="time.strftime('%Y-%m-18 14:30:00')" name="date"/>
|
<field eval="time.strftime('%Y-%m-18 14:30:00')" name="date"/>
|
||||||
<field eval=""4"" name="priority"/>
|
<field eval=""4"" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_demo"/>
|
<field name="user_id" ref="base.user_demo"/>
|
||||||
<field eval=""cancel"" name="state"/>
|
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field eval="1" name="active"/>
|
<field eval="1" name="active"/>
|
||||||
<field eval="2.3" name="duration"/>
|
<field eval="2.3" name="duration"/>
|
||||||
<field name="categ_id" ref="bug_categ"/>
|
<field name="categ_id" ref="bug_categ"/>
|
||||||
<field name="project_id" ref="project.project_project_23"/>
|
<field name="project_id" ref="project.project_project_23"/>
|
||||||
<field eval=""Output incorrect"" name="name"/>
|
<field eval=""Output incorrect"" name="name"/>
|
||||||
<field name="type_id" ref="project.project_tt_development"/>
|
<field name="stage_id" ref="project.project_tt_development"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="crm_case_problemloadingpage0" model="project.issue">
|
<record id="crm_case_problemloadingpage0" model="project.issue">
|
||||||
|
@ -52,14 +49,13 @@
|
||||||
<field eval=""3"" name="priority"/>
|
<field eval=""3"" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field name="partner_id" ref="base.res_partner_14"/>
|
<field name="partner_id" ref="base.res_partner_14"/>
|
||||||
<field eval=""cancel"" name="state"/>
|
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field eval="1" name="active"/>
|
<field eval="1" name="active"/>
|
||||||
<field eval="4.0" name="duration"/>
|
<field eval="4.0" name="duration"/>
|
||||||
<field name="categ_id" ref="bug_categ"/>
|
<field name="categ_id" ref="bug_categ"/>
|
||||||
<field name="project_id" ref="project.project_project_22"/>
|
<field name="project_id" ref="project.project_project_22"/>
|
||||||
<field eval=""Problem loading page"" name="name"/>
|
<field eval=""Problem loading page"" name="name"/>
|
||||||
<field name="type_id" ref="project.project_tt_testing"/>
|
<field name="stage_id" ref="project.project_tt_testing"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="crm_case_pagenotfound0" model="project.issue">
|
<record id="crm_case_pagenotfound0" model="project.issue">
|
||||||
|
@ -67,14 +63,13 @@
|
||||||
<field eval=""3"" name="priority"/>
|
<field eval=""3"" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field name="partner_id" ref="base.res_partner_desertic_hispafuentes"/>
|
<field name="partner_id" ref="base.res_partner_desertic_hispafuentes"/>
|
||||||
<field eval=""draft"" name="state"/>
|
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field eval="1" name="active"/>
|
<field eval="1" name="active"/>
|
||||||
<field eval="1.0" name="duration"/>
|
<field eval="1.0" name="duration"/>
|
||||||
<field name="categ_id" ref="bug_categ"/>
|
<field name="categ_id" ref="bug_categ"/>
|
||||||
<field name="project_id" ref="project.project_project_22"/>
|
<field name="project_id" ref="project.project_project_22"/>
|
||||||
<field eval=""Page not Found"" name="name"/>
|
<field eval=""Page not Found"" name="name"/>
|
||||||
<field name="type_id" ref="project.project_tt_development"/>
|
<field name="stage_id" ref="project.project_tt_development"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="crm_case_programmingerror0" model="project.issue">
|
<record id="crm_case_programmingerror0" model="project.issue">
|
||||||
|
@ -82,14 +77,13 @@
|
||||||
<field eval=""3"" name="priority"/>
|
<field eval=""3"" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field name="partner_id" ref="base.res_partner_5"/>
|
<field name="partner_id" ref="base.res_partner_5"/>
|
||||||
<field eval=""pending"" name="state"/>
|
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field eval="1" name="active"/>
|
<field eval="1" name="active"/>
|
||||||
<field eval="4.0" name="duration"/>
|
<field eval="4.0" name="duration"/>
|
||||||
<field name="categ_id" ref="bug_categ"/>
|
<field name="categ_id" ref="bug_categ"/>
|
||||||
<field name="project_id" ref="project.project_project_22"/>
|
<field name="project_id" ref="project.project_project_22"/>
|
||||||
<field eval=""Programming Error"" name="name"/>
|
<field eval=""Programming Error"" name="name"/>
|
||||||
<field name="type_id" ref="project.project_tt_testing"/>
|
<field name="stage_id" ref="project.project_tt_testing"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="crm_case_logicalerrorinprogram0" model="project.issue">
|
<record id="crm_case_logicalerrorinprogram0" model="project.issue">
|
||||||
|
@ -97,14 +91,13 @@
|
||||||
<field eval=""2"" name="priority"/>
|
<field eval=""2"" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field name="partner_id" ref="base.res_partner_6"/>
|
<field name="partner_id" ref="base.res_partner_6"/>
|
||||||
<field eval=""pending"" name="state"/>
|
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field eval="1" name="active"/>
|
<field eval="1" name="active"/>
|
||||||
<field eval="2.0" name="duration"/>
|
<field eval="2.0" name="duration"/>
|
||||||
<field name="categ_id" ref="bug_categ"/>
|
<field name="categ_id" ref="bug_categ"/>
|
||||||
<field name="project_id" ref="project.project_project_9"/>
|
<field name="project_id" ref="project.project_project_9"/>
|
||||||
<field eval=""Logical Error in Program"" name="name"/>
|
<field eval=""Logical Error in Program"" name="name"/>
|
||||||
<field name="type_id" ref="project.project_tt_testing"/>
|
<field name="stage_id" ref="project.project_tt_testing"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="crm_case_constrainterror0" model="project.issue">
|
<record id="crm_case_constrainterror0" model="project.issue">
|
||||||
|
@ -112,14 +105,13 @@
|
||||||
<field eval=""2"" name="priority"/>
|
<field eval=""2"" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field name="partner_id" ref="base.res_partner_6"/>
|
<field name="partner_id" ref="base.res_partner_6"/>
|
||||||
<field eval=""pending"" name="state"/>
|
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field eval="1" name="active"/>
|
<field eval="1" name="active"/>
|
||||||
<field eval="7.3" name="duration"/>
|
<field eval="7.3" name="duration"/>
|
||||||
<field name="categ_id" ref="bug_categ"/>
|
<field name="categ_id" ref="bug_categ"/>
|
||||||
<field name="project_id" ref="project.project_project_9"/>
|
<field name="project_id" ref="project.project_project_9"/>
|
||||||
<field eval=""Constraint Error"" name="name"/>
|
<field eval=""Constraint Error"" name="name"/>
|
||||||
<field name="type_id" ref="project.project_tt_testing"/>
|
<field name="stage_id" ref="project.project_tt_testing"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="crm_case_errorinprogram0" model="project.issue">
|
<record id="crm_case_errorinprogram0" model="project.issue">
|
||||||
|
@ -127,13 +119,12 @@
|
||||||
<field eval=""2"" name="priority"/>
|
<field eval=""2"" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_demo"/>
|
<field name="user_id" ref="base.user_demo"/>
|
||||||
<field name="partner_id" ref="base.res_partner_5"/>
|
<field name="partner_id" ref="base.res_partner_5"/>
|
||||||
<field eval=""open"" name="state"/>
|
|
||||||
<field eval="1" name="active"/>
|
<field eval="1" name="active"/>
|
||||||
<field eval="1.3" name="duration"/>
|
<field eval="1.3" name="duration"/>
|
||||||
<field name="categ_id" ref="feature_request_categ"/>
|
<field name="categ_id" ref="feature_request_categ"/>
|
||||||
<field name="project_id" ref="project.project_project_22"/>
|
<field name="project_id" ref="project.project_project_22"/>
|
||||||
<field eval=""Error in Program"" name="name"/>
|
<field eval=""Error in Program"" name="name"/>
|
||||||
<field name="type_id" ref="project.project_tt_testing"/>
|
<field name="stage_id" ref="project.project_tt_testing"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="crm_case_patcheserrorinprogram0" model="project.issue">
|
<record id="crm_case_patcheserrorinprogram0" model="project.issue">
|
||||||
|
@ -141,14 +132,13 @@
|
||||||
<field eval=""2"" name="priority"/>
|
<field eval=""2"" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field name="partner_id" ref="base.res_partner_2"/>
|
<field name="partner_id" ref="base.res_partner_2"/>
|
||||||
<field eval=""open"" name="state"/>
|
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field eval="1" name="active"/>
|
<field eval="1" name="active"/>
|
||||||
<field eval="13.0" name="duration"/>
|
<field eval="13.0" name="duration"/>
|
||||||
<field name="categ_id" ref="feature_request_categ"/>
|
<field name="categ_id" ref="feature_request_categ"/>
|
||||||
<field name="project_id" ref="project.project_project_9"/>
|
<field name="project_id" ref="project.project_project_9"/>
|
||||||
<field eval=""Patches Error in Program"" name="name"/>
|
<field eval=""Patches Error in Program"" name="name"/>
|
||||||
<field name="type_id" ref="project.project_tt_testing"/>
|
<field name="stage_id" ref="project.project_tt_testing"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="crm_case_newfeaturestobeadded0" model="project.issue">
|
<record id="crm_case_newfeaturestobeadded0" model="project.issue">
|
||||||
|
@ -156,14 +146,13 @@
|
||||||
<field eval=""4"" name="priority"/>
|
<field eval=""4"" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field name="partner_id" ref="base.res_partner_maxtor"/>
|
<field name="partner_id" ref="base.res_partner_maxtor"/>
|
||||||
<field eval=""open"" name="state"/>
|
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field eval="1" name="active"/>
|
<field eval="1" name="active"/>
|
||||||
<field eval="3.2" name="duration"/>
|
<field eval="3.2" name="duration"/>
|
||||||
<field name="categ_id" ref="feature_request_categ"/>
|
<field name="categ_id" ref="feature_request_categ"/>
|
||||||
<field name="project_id" ref="project.project_project_21"/>
|
<field name="project_id" ref="project.project_project_21"/>
|
||||||
<field eval=""New Features To Be Added"" name="name"/>
|
<field eval=""New Features To Be Added"" name="name"/>
|
||||||
<field name="type_id" ref="project.project_tt_merge"/>
|
<field name="stage_id" ref="project.project_tt_merge"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="crm_case_addmenustothemodule0" model="project.issue">
|
<record id="crm_case_addmenustothemodule0" model="project.issue">
|
||||||
|
@ -171,7 +160,6 @@
|
||||||
<field eval=""1"" name="priority"/>
|
<field eval=""1"" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_demo"/>
|
<field name="user_id" ref="base.user_demo"/>
|
||||||
<field name="partner_id" ref="base.res_partner_9"/>
|
<field name="partner_id" ref="base.res_partner_9"/>
|
||||||
<field eval=""done"" name="state"/>
|
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field eval="1" name="active"/>
|
<field eval="1" name="active"/>
|
||||||
<field eval="3.0" name="duration"/>
|
<field eval="3.0" name="duration"/>
|
||||||
|
@ -179,7 +167,7 @@
|
||||||
<field name="project_id" ref="project.project_project_21"/>
|
<field name="project_id" ref="project.project_project_21"/>
|
||||||
<field eval=""Add menus to the module"" name="name"/>
|
<field eval=""Add menus to the module"" name="name"/>
|
||||||
<field eval=""info@opensides.be"" name="email_from"/>
|
<field eval=""info@opensides.be"" name="email_from"/>
|
||||||
<field name="type_id" ref="project.project_tt_development"/>
|
<field name="stage_id" ref="project.project_tt_development"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="crm_case_includeattendancesheetinproject0" model="project.issue">
|
<record id="crm_case_includeattendancesheetinproject0" model="project.issue">
|
||||||
|
@ -187,7 +175,6 @@
|
||||||
<field eval=""3"" name="priority"/>
|
<field eval=""3"" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field name="partner_id" ref="base.res_partner_10"/>
|
<field name="partner_id" ref="base.res_partner_10"/>
|
||||||
<field eval=""cancel"" name="state"/>
|
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field eval="1" name="active"/>
|
<field eval="1" name="active"/>
|
||||||
<field eval="2.0" name="duration"/>
|
<field eval="2.0" name="duration"/>
|
||||||
|
@ -195,7 +182,7 @@
|
||||||
<field name="project_id" ref="project.project_project_9"/>
|
<field name="project_id" ref="project.project_project_9"/>
|
||||||
<field eval=""Include Attendance sheet in Project"" name="name"/>
|
<field eval=""Include Attendance sheet in Project"" name="name"/>
|
||||||
<field eval=""contact@tecsas.fr"" name="email_from"/>
|
<field eval=""contact@tecsas.fr"" name="email_from"/>
|
||||||
<field name="type_id" ref="project.project_tt_development"/>
|
<field name="stage_id" ref="project.project_tt_development"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="crm_case_createnewobject0" model="project.issue">
|
<record id="crm_case_createnewobject0" model="project.issue">
|
||||||
|
@ -203,14 +190,13 @@
|
||||||
<field eval=""3"" name="priority"/>
|
<field eval=""3"" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field name="partner_id" ref="base.res_partner_6"/>
|
<field name="partner_id" ref="base.res_partner_6"/>
|
||||||
<field eval=""draft"" name="state"/>
|
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field eval="1" name="active"/>
|
<field eval="1" name="active"/>
|
||||||
<field eval="2.45" name="duration"/>
|
<field eval="2.45" name="duration"/>
|
||||||
<field name="categ_id" ref="feature_request_categ"/>
|
<field name="categ_id" ref="feature_request_categ"/>
|
||||||
<field name="project_id" ref="project.project_project_22"/>
|
<field name="project_id" ref="project.project_project_22"/>
|
||||||
<field eval=""Create new object"" name="name"/>
|
<field eval=""Create new object"" name="name"/>
|
||||||
<field name="type_id" ref="project.project_tt_specification"/>
|
<field name="stage_id" ref="project.project_tt_specification"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="crm_case_improvereportsinhrms0" model="project.issue">
|
<record id="crm_case_improvereportsinhrms0" model="project.issue">
|
||||||
|
@ -218,14 +204,13 @@
|
||||||
<field eval=""4"" name="priority"/>
|
<field eval=""4"" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_root"/>
|
<field name="user_id" ref="base.user_root"/>
|
||||||
<field name="partner_id" ref="base.res_partner_11"/>
|
<field name="partner_id" ref="base.res_partner_11"/>
|
||||||
<field eval=""pending"" name="state"/>
|
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field eval="1" name="active"/>
|
<field eval="1" name="active"/>
|
||||||
<field eval="15.0" name="duration"/>
|
<field eval="15.0" name="duration"/>
|
||||||
<field name="categ_id" ref="feature_request_categ"/>
|
<field name="categ_id" ref="feature_request_categ"/>
|
||||||
<field name="project_id" ref="project.project_project_22"/>
|
<field name="project_id" ref="project.project_project_22"/>
|
||||||
<field eval=""Improve Reports in HRMS"" name="name"/>
|
<field eval=""Improve Reports in HRMS"" name="name"/>
|
||||||
<field name="type_id" ref="project.project_tt_development"/>
|
<field name="stage_id" ref="project.project_tt_development"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
<record id="crm_case_improvereportsinpms0" model="project.issue">
|
<record id="crm_case_improvereportsinpms0" model="project.issue">
|
||||||
|
@ -233,14 +218,13 @@
|
||||||
<field eval=""2"" name="priority"/>
|
<field eval=""2"" name="priority"/>
|
||||||
<field name="user_id" ref="base.user_demo"/>
|
<field name="user_id" ref="base.user_demo"/>
|
||||||
<field name="partner_id" ref="base.res_partner_11"/>
|
<field name="partner_id" ref="base.res_partner_11"/>
|
||||||
<field eval=""pending"" name="state"/>
|
|
||||||
<field name="section_id" ref="crm.section_sales_department"/>
|
<field name="section_id" ref="crm.section_sales_department"/>
|
||||||
<field eval="1" name="active"/>
|
<field eval="1" name="active"/>
|
||||||
<field eval="06.15" name="duration"/>
|
<field eval="06.15" name="duration"/>
|
||||||
<field name="categ_id" ref="feature_request_categ"/>
|
<field name="categ_id" ref="feature_request_categ"/>
|
||||||
<field name="project_id" ref="project.project_project_22"/>
|
<field name="project_id" ref="project.project_project_22"/>
|
||||||
<field eval=""Improve Reports in PMS"" name="name"/>
|
<field eval=""Improve Reports in PMS"" name="name"/>
|
||||||
<field name="type_id" ref="project.project_tt_specification"/>
|
<field name="stage_id" ref="project.project_tt_specification"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
</data>
|
</data>
|
||||||
|
|
|
@ -52,14 +52,26 @@
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<form layout="manual">
|
<form layout="manual">
|
||||||
<div class="oe_form_topbar">
|
<div class="oe_form_topbar">
|
||||||
<button name="case_open" string="Open" states="draft,pending" type="object"/>
|
<button name="case_open" string="Open" type="object"
|
||||||
<button name="case_close" string="Done" states="open,draft,pending" type="object"/>
|
states="draft,pending"/>
|
||||||
<button name="case_pending" string="Pending" states="draft,open" type="object"/>
|
<button name="case_close" string="Done" type="object"
|
||||||
<button name="case_reset" string="Reset to New" states="done,cancel" type="object"/>
|
states="draft,open,pending"/>
|
||||||
<button name="case_escalate" string="Escalate" states="open,draft,pending" type="object"/>
|
<button name="case_pending" string="Pending" type="object"
|
||||||
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object"/>
|
states="draft,open"/>
|
||||||
|
<button name="case_escalate" string="Escalate" type="object"
|
||||||
|
states="draft,open,pending"/>
|
||||||
|
<button name="case_reset" string="Reset to New" type="object"
|
||||||
|
states="cancelled,done"/>
|
||||||
|
<button name="stage_previous" string="Previous Stage" type="object"
|
||||||
|
states="open,pending" icon="gtk-go-back"
|
||||||
|
attrs="{'invisible': [('stage_id','=', False)]}"/>
|
||||||
|
<button name="stage_next" string="Next Stage" type="object"
|
||||||
|
states="open,pending" icon="gtk-go-forward"
|
||||||
|
attrs="{'invisible': [('stage_id','=', False)]}"/>
|
||||||
|
<button name="case_cancel" string="Cancel" type="object"
|
||||||
|
states="draft,open,pending"/>
|
||||||
<div class="oe_right">
|
<div class="oe_right">
|
||||||
<field name="state" nolabel="1" widget="statusbar" statusbar_visible="draft,open,done" statusbar_colors='{"pending":"blue"}'/>
|
<field name="stage_id" nolabel="1" widget="statusbar"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="oe_clear"/>
|
<div class="oe_clear"/>
|
||||||
</div>
|
</div>
|
||||||
|
@ -75,11 +87,7 @@
|
||||||
</group>
|
</group>
|
||||||
<field name="user_id"/>
|
<field name="user_id"/>
|
||||||
<field name="version_id" colspan="2" widget="selection"/>
|
<field name="version_id" colspan="2" widget="selection"/>
|
||||||
<group colspan="2" col="4">
|
<field name="state" groups="base.group_no_one"/>
|
||||||
<field name="type_id" string="Stages" />
|
|
||||||
<button name="prev_type" string="Previous" type="object" icon="gtk-go-back" help="Change to Previous Stage"/>
|
|
||||||
<button name="next_type" string="Next" type="object" icon="gtk-go-forward" help="Change to Next Stage"/>
|
|
||||||
</group>
|
|
||||||
</group>
|
</group>
|
||||||
<notebook colspan="4">
|
<notebook colspan="4">
|
||||||
<page string="General">
|
<page string="General">
|
||||||
|
@ -138,19 +146,11 @@
|
||||||
<field name="partner_id"/>
|
<field name="partner_id"/>
|
||||||
<field name="project_id" />
|
<field name="project_id" />
|
||||||
<field name="priority" string="Priority"/>
|
<field name="priority" string="Priority"/>
|
||||||
<field name="type_id" widget="selection" readonly="1" string="Stages" />
|
|
||||||
<button name="prev_type" string="Previous" type="object" icon="gtk-go-back" help="Change to Previous Stage"/>
|
|
||||||
<button name="next_type" string="Next" type="object" icon="gtk-go-forward" help="Change to Next Stage"/>
|
|
||||||
<field name="version_id" widget="selection"/>
|
<field name="version_id" widget="selection"/>
|
||||||
<field name="user_id"/>
|
<field name="user_id"/>
|
||||||
<field name="progress" widget="progressbar" attrs="{'invisible':[('task_id','=',False)]}"/>
|
<field name="progress" widget="progressbar" attrs="{'invisible':[('task_id','=',False)]}"/>
|
||||||
<field name="state"/>
|
<field name="stage_id" widget="selection" readonly="1"/>
|
||||||
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
|
<field name="state" groups="base.group_no_one"/>
|
||||||
<button name="case_close" string="Done" states="open,draft,pending" type="object" icon="gtk-jump-to"/>
|
|
||||||
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward" help="To Do"/>
|
|
||||||
<button name="case_pending" string="Pending" states="draft,open" type="object" icon="gtk-media-pause"/>
|
|
||||||
<button name="case_escalate" string="Escalate" states="open,draft,pending" type="object" icon="gtk-go-up"/>
|
|
||||||
<button name="case_reset" string="Reset to New" states="done,cancel" type="object" icon="gtk-convert"/>
|
|
||||||
<field name="categ_id" invisible="1"/>
|
<field name="categ_id" invisible="1"/>
|
||||||
<field name="task_id" invisible="1"/>
|
<field name="task_id" invisible="1"/>
|
||||||
</tree>
|
</tree>
|
||||||
|
@ -192,7 +192,7 @@
|
||||||
<filter string="Priority" icon="terp-rating-rated" domain="[]"
|
<filter string="Priority" icon="terp-rating-rated" domain="[]"
|
||||||
context="{'group_by':'priority'}" />
|
context="{'group_by':'priority'}" />
|
||||||
<filter string="Stage" icon="terp-stage" domain="[]"
|
<filter string="Stage" icon="terp-stage" domain="[]"
|
||||||
context="{'group_by':'type_id'}" />
|
context="{'group_by':'stage_id'}" />
|
||||||
<filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]"
|
<filter string="Status" icon="terp-stock_effects-object-colorize" domain="[]"
|
||||||
context="{'group_by':'state'}" />
|
context="{'group_by':'state'}" />
|
||||||
<separator orientation="vertical" />
|
<separator orientation="vertical" />
|
||||||
|
@ -224,9 +224,9 @@
|
||||||
<field name="model">project.issue</field>
|
<field name="model">project.issue</field>
|
||||||
<field name="type">kanban</field>
|
<field name="type">kanban</field>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<kanban default_group_by="type_id">
|
<kanban default_group_by="stage_id">
|
||||||
<field name="color"/>
|
<field name="color"/>
|
||||||
<field name="state"/>
|
<field name="state" groups="base.group_no_one"/>
|
||||||
<field name="priority"/>
|
<field name="priority"/>
|
||||||
<field name="user_email"/>
|
<field name="user_email"/>
|
||||||
<field name="user_id"/>
|
<field name="user_id"/>
|
||||||
|
@ -270,8 +270,7 @@
|
||||||
<a string="Convert To Task" name="convert_issue_task" icon="gtk-index" type="object"/>
|
<a string="Convert To Task" name="convert_issue_task" icon="gtk-index" type="object"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="oe_kanban_right">
|
<div class="oe_kanban_right">
|
||||||
<a name="case_open" string="Open" states="draft,pending" type="object" icon="kanban-apply" />
|
<a name="case_open" string="Open" states="draft,pending" type="object" icon="kanban-apply"/>
|
||||||
<a name="case_pending" string="Pending" states="draft,open" type="object" icon="kanban-pause"/>
|
|
||||||
<a name="case_close" string="Close" states="open,draft,pending" type="object" icon="kanban-stop"/>
|
<a name="case_close" string="Close" states="open,draft,pending" type="object" icon="kanban-stop"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="oe_kanban_clear"/>
|
<div class="oe_kanban_clear"/>
|
||||||
|
@ -304,18 +303,10 @@
|
||||||
<field name="name" string="Feature description"/>
|
<field name="name" string="Feature description"/>
|
||||||
<field name="partner_id"/>
|
<field name="partner_id"/>
|
||||||
<field name="priority" string="Priority"/>
|
<field name="priority" string="Priority"/>
|
||||||
<field name="type_id" widget="selection" readonly="1"/>
|
|
||||||
<button name="prev_type" string="Previous" type="object" icon="gtk-go-back" help="Change to Previous Stage"/>
|
|
||||||
<button name="next_type" string="Next" type="object" icon="gtk-go-forward" help="Change to Next Stage"/>
|
|
||||||
<field name="version_id"/>
|
<field name="version_id"/>
|
||||||
<field name="user_id"/>
|
<field name="user_id"/>
|
||||||
<field name="state"/>
|
<field name="stage_id" widget="selection" readonly="1"/>
|
||||||
<button name="case_cancel" string="Cancel" states="draft,open,pending" type="object" icon="gtk-cancel"/>
|
<field name="state" groups="base.group_no_one"/>
|
||||||
<button name="case_close" string="Done" states="open,draft,pending" type="object" icon="gtk-jump-to"/>
|
|
||||||
<button name="case_open" string="Open" states="draft,pending" type="object" icon="gtk-go-forward"/>
|
|
||||||
<button name="case_pending" string="Pending" states="draft,open" type="object" icon="gtk-media-pause"/>
|
|
||||||
<button name="case_escalate" string="Escalate" states="open,draft,pending" type="object" icon="gtk-go-up"/>
|
|
||||||
<button name="case_reset" string="Reset to New" states="done,cancel" type="object" icon="gtk-convert"/>
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
@ -326,13 +317,13 @@
|
||||||
<field name="type">search</field>
|
<field name="type">search</field>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<search string="Feature Tracker Search">
|
<search string="Feature Tracker Search">
|
||||||
<filter icon="terp-go-today" string="Today"
|
<filter icon="terp-go-today" string="Today"
|
||||||
domain="[('date','=',time.strftime('%%Y-%%m-%%d'))]" help="Today's features"/>
|
domain="[('date','=',time.strftime('%%Y-%%m-%%d'))]" help="Today's features"/>
|
||||||
<separator orientation="vertical"/>
|
<separator orientation="vertical"/>
|
||||||
<group>
|
<group>
|
||||||
<field name="name" string="Feature description"/>
|
<field name="name" string="Feature description"/>
|
||||||
<field name="user_id"/>
|
<field name="user_id"/>
|
||||||
<field name="state">
|
<field name="state" groups="base.group_no_one">
|
||||||
<filter icon="terp-check" domain="[('state','in',('open','draft'))]" help="Current Features" name="current_feature"/>
|
<filter icon="terp-check" domain="[('state','in',('open','draft'))]" help="Current Features" name="current_feature"/>
|
||||||
<filter icon="terp-camera_test" domain="[('state','=','open')]" help="Open Features"/>
|
<filter icon="terp-camera_test" domain="[('state','=','open')]" help="Open Features"/>
|
||||||
</field>
|
</field>
|
||||||
|
|
|
@ -51,7 +51,7 @@ class project_issue_report(osv.osv):
|
||||||
'creation_date': fields.date('Creation Date', readonly=True),
|
'creation_date': fields.date('Creation Date', readonly=True),
|
||||||
'date_closed': fields.date('Date of Closing', readonly=True),
|
'date_closed': fields.date('Date of Closing', readonly=True),
|
||||||
'categ_id': fields.many2one('crm.case.categ', 'Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'project.issue')]"),
|
'categ_id': fields.many2one('crm.case.categ', 'Category', domain="[('section_id','=',section_id),('object_id.model', '=', 'project.issue')]"),
|
||||||
'type_id': fields.many2one('project.task.type', 'Stage'),
|
'stage_id': fields.many2one('project.task.type', 'Stage'),
|
||||||
'nbr': fields.integer('# of Issues', readonly=True),
|
'nbr': fields.integer('# of Issues', readonly=True),
|
||||||
'working_hours_open': fields.float('Avg. Working Hours to Open', readonly=True),
|
'working_hours_open': fields.float('Avg. Working Hours to Open', readonly=True),
|
||||||
'working_hours_close': fields.float('Avg. Working Hours to Close', readonly=True),
|
'working_hours_close': fields.float('Avg. Working Hours to Close', readonly=True),
|
||||||
|
@ -87,7 +87,7 @@ class project_issue_report(osv.osv):
|
||||||
c.working_hours_close,
|
c.working_hours_close,
|
||||||
c.section_id,
|
c.section_id,
|
||||||
c.categ_id,
|
c.categ_id,
|
||||||
c.type_id,
|
c.stage_id,
|
||||||
to_char(c.date_closed, 'YYYY-mm-dd') as date_closed,
|
to_char(c.date_closed, 'YYYY-mm-dd') as date_closed,
|
||||||
c.company_id as company_id,
|
c.company_id as company_id,
|
||||||
c.priority as priority,
|
c.priority as priority,
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
<field name="name" invisible="1"/>
|
<field name="name" invisible="1"/>
|
||||||
<field name="month" invisible="1"/>
|
<field name="month" invisible="1"/>
|
||||||
<field name="project_id" invisible="1"/>
|
<field name="project_id" invisible="1"/>
|
||||||
<field name="type_id" invisible="1"/>
|
<field name="stage_id" invisible="1"/>
|
||||||
<field name="version_id" string="Version" invisible="1"/>
|
<field name="version_id" string="Version" invisible="1"/>
|
||||||
<field name="priority" invisible="1"/>
|
<field name="priority" invisible="1"/>
|
||||||
<field name="company_id" invisible="1" groups="base.group_multi_company"/>
|
<field name="company_id" invisible="1" groups="base.group_multi_company"/>
|
||||||
|
@ -92,7 +92,7 @@
|
||||||
<filter string="Version" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'version_id'}"/>
|
<filter string="Version" icon="terp-stock_symbol-selection" domain="[]" context="{'group_by':'version_id'}"/>
|
||||||
<separator orientation="vertical" />
|
<separator orientation="vertical" />
|
||||||
<filter string="Priority" icon="terp-rating-rated" domain="[]" context="{'group_by':'priority'}" />
|
<filter string="Priority" icon="terp-rating-rated" domain="[]" context="{'group_by':'priority'}" />
|
||||||
<filter string="Stage" icon="terp-stage" domain="[]" context="{'group_by':'type_id'}"/>
|
<filter string="Stage" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}"/>
|
||||||
<filter string="Status" icon="terp-stock_effects-object-colorize"
|
<filter string="Status" icon="terp-stock_effects-object-colorize"
|
||||||
domain="[]" context="{'group_by':'state'}" />
|
domain="[]" context="{'group_by':'state'}" />
|
||||||
<separator orientation="vertical"/>
|
<separator orientation="vertical"/>
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
I check the issue is in cancel state.
|
I check the issue is in cancel state.
|
||||||
-
|
-
|
||||||
!assert {model: project.issue, id: crm_case_buginaccountsmodule0, severity: error, string: Issue is in cancel state}:
|
!assert {model: project.issue, id: crm_case_buginaccountsmodule0, severity: error, string: Issue is in cancel state}:
|
||||||
- state == 'cancel'
|
- state == 'cancelled'
|
||||||
-
|
-
|
||||||
I re-open the Issue.
|
I re-open the Issue.
|
||||||
-
|
-
|
||||||
|
@ -37,7 +37,7 @@
|
||||||
I check the issue is in cancel state.
|
I check the issue is in cancel state.
|
||||||
-
|
-
|
||||||
!assert {model: project.issue, id: crm_case_buginaccountsmodule0, severity: error, string: Issue is in cancel state}:
|
!assert {model: project.issue, id: crm_case_buginaccountsmodule0, severity: error, string: Issue is in cancel state}:
|
||||||
- state == 'cancel'
|
- state == 'cancelled'
|
||||||
-
|
-
|
||||||
I close Issue.
|
I close Issue.
|
||||||
-
|
-
|
||||||
|
@ -57,4 +57,4 @@
|
||||||
I check the issue is in cancel state.
|
I check the issue is in cancel state.
|
||||||
-
|
-
|
||||||
!assert {model: project.issue, id: crm_case_buginaccountsmodule0, severity: error, string: Issue is in cancel state}:
|
!assert {model: project.issue, id: crm_case_buginaccountsmodule0, severity: error, string: Issue is in cancel state}:
|
||||||
- state == 'cancel'
|
- state == 'cancelled'
|
||||||
|
|
|
@ -330,7 +330,7 @@
|
||||||
<field name="type">search</field>
|
<field name="type">search</field>
|
||||||
<field name="inherit_id" ref="project.view_task_search_form"/>
|
<field name="inherit_id" ref="project.view_task_search_form"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<field name="project_id" position="after">
|
<field name="user_id" position="before">
|
||||||
<field name="phase_id" select="1"/>
|
<field name="phase_id" select="1"/>
|
||||||
</field>
|
</field>
|
||||||
</field>
|
</field>
|
||||||
|
|
|
@ -129,7 +129,7 @@
|
||||||
<field name="sequence"/>
|
<field name="sequence"/>
|
||||||
</group>
|
</group>
|
||||||
<separator string="Miscellaneous" colspan="4"/>
|
<separator string="Miscellaneous" colspan="4"/>
|
||||||
<field name="type_id"/>
|
<field name="stage_id"/>
|
||||||
<field name="active"/>
|
<field name="active"/>
|
||||||
<field name="partner_id"/>
|
<field name="partner_id"/>
|
||||||
<separator colspan="4" string="Notes"/>
|
<separator colspan="4" string="Notes"/>
|
||||||
|
|
|
@ -16,12 +16,6 @@
|
||||||
<field name="effective_hours" sum="Effective hours" widget="float_time"/>
|
<field name="effective_hours" sum="Effective hours" widget="float_time"/>
|
||||||
<field name="expected_hours" sum="Expected hours" widget="float_time"/>
|
<field name="expected_hours" sum="Expected hours" widget="float_time"/>
|
||||||
<field name="state"/>
|
<field name="state"/>
|
||||||
<button type="object" string="Open" name="button_open" states="draft,pending" icon="gtk-ok"/>
|
|
||||||
<button type="object" string="Pending" name="button_pending" states="open" icon="gtk-media-pause"/>
|
|
||||||
<button type="object" string="Close" name="button_close" states="open,pending" icon="terp-dialog-close"/>
|
|
||||||
<button type="object" string="Set to Draft" name="button_draft" states="cancel,done" icon="gtk-convert"/>
|
|
||||||
<button name="%(project_scrum.report_scrum_sprint_burndown_chart)d" states="open,draft,close,cancel"
|
|
||||||
string="Burndown Chart" type="action" icon="gtk-print"/>
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
@ -114,8 +108,6 @@
|
||||||
<field name="progress" widget="progressbar"/>
|
<field name="progress" widget="progressbar"/>
|
||||||
<field name="effective_hours" widget="float_time"/>
|
<field name="effective_hours" widget="float_time"/>
|
||||||
<field name="expected_hours" widget="float_time"/>
|
<field name="expected_hours" widget="float_time"/>
|
||||||
<button name="%(project_scrum.report_scrum_sprint_burndown_chart)d"
|
|
||||||
string="Burndown Chart" type="action" icon="gtk-print"/>
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
|
@ -265,7 +265,6 @@
|
||||||
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
||||||
<field name="project_id" ref="project.project_project_9"/>
|
<field name="project_id" ref="project.project_project_9"/>
|
||||||
<field name="name">Review all English Terms</field>
|
<field name="name">Review all English Terms</field>
|
||||||
<field name="state">done</field>
|
|
||||||
<field eval="time.strftime('%Y-%m-%d')" name="date_end"/>
|
<field eval="time.strftime('%Y-%m-%d')" name="date_end"/>
|
||||||
<field name="product_backlog_id" ref="scrum_product_backlog_3"/>
|
<field name="product_backlog_id" ref="scrum_product_backlog_3"/>
|
||||||
</record>
|
</record>
|
||||||
|
@ -274,7 +273,6 @@
|
||||||
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
||||||
<field name="project_id" ref="project.project_project_9"/>
|
<field name="project_id" ref="project.project_project_9"/>
|
||||||
<field name="name">Review all french terms</field>
|
<field name="name">Review all french terms</field>
|
||||||
<field name="state">done</field>
|
|
||||||
<field eval="time.strftime('%Y-%m-%d')" name="date_end"/>
|
<field eval="time.strftime('%Y-%m-%d')" name="date_end"/>
|
||||||
<field name="product_backlog_id" ref="scrum_product_backlog_3"/>
|
<field name="product_backlog_id" ref="scrum_product_backlog_3"/>
|
||||||
</record>
|
</record>
|
||||||
|
@ -283,7 +281,6 @@
|
||||||
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
||||||
<field name="project_id" ref="project.project_project_9"/>
|
<field name="project_id" ref="project.project_project_9"/>
|
||||||
<field name="name">Analytic Accounting features</field>
|
<field name="name">Analytic Accounting features</field>
|
||||||
<field name="state">done</field>
|
|
||||||
<field eval="time.strftime('%Y-%m-%d')" name="date_end"/>
|
<field eval="time.strftime('%Y-%m-%d')" name="date_end"/>
|
||||||
<field name="product_backlog_id" ref="scrum_product_backlog_1"/>
|
<field name="product_backlog_id" ref="scrum_product_backlog_1"/>
|
||||||
</record>
|
</record>
|
||||||
|
@ -292,7 +289,6 @@
|
||||||
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
||||||
<field name="project_id" ref="project.project_project_9"/>
|
<field name="project_id" ref="project.project_project_9"/>
|
||||||
<field name="name">Test and improve automatic migration system</field>
|
<field name="name">Test and improve automatic migration system</field>
|
||||||
<field name="state">open</field>
|
|
||||||
<field name="product_backlog_id" ref="scrum_product_backlog_0"/>
|
<field name="product_backlog_id" ref="scrum_product_backlog_0"/>
|
||||||
</record>
|
</record>
|
||||||
<record id="scrum_task_7" model="project.task">
|
<record id="scrum_task_7" model="project.task">
|
||||||
|
@ -300,7 +296,6 @@
|
||||||
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
||||||
<field name="project_id" ref="project.project_project_9"/>
|
<field name="project_id" ref="project.project_project_9"/>
|
||||||
<field name="name">General accounting features</field>
|
<field name="name">General accounting features</field>
|
||||||
<field name="state">open</field>
|
|
||||||
<field name="product_backlog_id" ref="scrum_product_backlog_1"/>
|
<field name="product_backlog_id" ref="scrum_product_backlog_1"/>
|
||||||
</record>
|
</record>
|
||||||
<record id="scrum_task_8" model="project.task">
|
<record id="scrum_task_8" model="project.task">
|
||||||
|
@ -316,7 +311,6 @@
|
||||||
<field name="project_id" ref="project.project_project_9"/>
|
<field name="project_id" ref="project.project_project_9"/>
|
||||||
<field name="description">Cash book, general ledger, accounts list, aged trial balance</field>
|
<field name="description">Cash book, general ledger, accounts list, aged trial balance</field>
|
||||||
<field name="name">Accounting Report General</field>
|
<field name="name">Accounting Report General</field>
|
||||||
<field name="state">open</field>
|
|
||||||
<field eval="[(6,0,[ref('scrum_task_8')])]" name="child_ids"/>
|
<field eval="[(6,0,[ref('scrum_task_8')])]" name="child_ids"/>
|
||||||
<field name="product_backlog_id" ref="scrum_product_backlog_1"/>
|
<field name="product_backlog_id" ref="scrum_product_backlog_1"/>
|
||||||
</record>
|
</record>
|
||||||
|
@ -332,7 +326,6 @@
|
||||||
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
||||||
<field name="project_id" ref="project.project_project_9"/>
|
<field name="project_id" ref="project.project_project_9"/>
|
||||||
<field name="name">Accounting Report Analytic</field>
|
<field name="name">Accounting Report Analytic</field>
|
||||||
<field name="state">open</field>
|
|
||||||
<field name="product_backlog_id" ref="scrum_product_backlog_1"/>
|
<field name="product_backlog_id" ref="scrum_product_backlog_1"/>
|
||||||
</record>
|
</record>
|
||||||
<record id="scrum_task_12" model="project.task">
|
<record id="scrum_task_12" model="project.task">
|
||||||
|
@ -340,7 +333,6 @@
|
||||||
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
||||||
<field name="project_id" ref="project.project_project_9"/>
|
<field name="project_id" ref="project.project_project_9"/>
|
||||||
<field name="name">Bugfix - memory leak</field>
|
<field name="name">Bugfix - memory leak</field>
|
||||||
<field name="state">done</field>
|
|
||||||
<field eval="time.strftime('%Y-%m-%d')" name="date_end"/>
|
<field eval="time.strftime('%Y-%m-%d')" name="date_end"/>
|
||||||
<field name="product_backlog_id" ref="scrum_product_backlog_4"/>
|
<field name="product_backlog_id" ref="scrum_product_backlog_4"/>
|
||||||
</record>
|
</record>
|
||||||
|
@ -349,7 +341,6 @@
|
||||||
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
||||||
<field name="project_id" ref="project.project_project_9"/>
|
<field name="project_id" ref="project.project_project_9"/>
|
||||||
<field name="name">Bugfix - Translations</field>
|
<field name="name">Bugfix - Translations</field>
|
||||||
<field name="state">open</field>
|
|
||||||
<field eval="[(6,0,[ref('scrum_task_12')])]" name="child_ids"/>
|
<field eval="[(6,0,[ref('scrum_task_12')])]" name="child_ids"/>
|
||||||
<field name="product_backlog_id" ref="scrum_product_backlog_4"/>
|
<field name="product_backlog_id" ref="scrum_product_backlog_4"/>
|
||||||
</record>
|
</record>
|
||||||
|
@ -358,7 +349,6 @@
|
||||||
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
||||||
<field name="project_id" ref="project.project_project_9"/>
|
<field name="project_id" ref="project.project_project_9"/>
|
||||||
<field name="name">Finish the automated plugin system</field>
|
<field name="name">Finish the automated plugin system</field>
|
||||||
<field name="state">pending</field>
|
|
||||||
<field name="product_backlog_id" ref="scrum_product_backlog_2"/>
|
<field name="product_backlog_id" ref="scrum_product_backlog_2"/>
|
||||||
</record>
|
</record>
|
||||||
<record id="scrum_task_15" model="project.task">
|
<record id="scrum_task_15" model="project.task">
|
||||||
|
@ -373,7 +363,6 @@
|
||||||
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
<field model="res.users" name="user_id" search="[('login','=','demo')]"/>
|
||||||
<field name="project_id" ref="project.project_project_9"/>
|
<field name="project_id" ref="project.project_project_9"/>
|
||||||
<field name="name">Test 3.2.0 before releasing</field>
|
<field name="name">Test 3.2.0 before releasing</field>
|
||||||
<field name="state">open</field>
|
|
||||||
<field name="product_backlog_id" ref="scrum_product_backlog_5"/>
|
<field name="product_backlog_id" ref="scrum_product_backlog_5"/>
|
||||||
</record>
|
</record>
|
||||||
<record id="scrum_task_17" model="project.task">
|
<record id="scrum_task_17" model="project.task">
|
||||||
|
@ -382,7 +371,6 @@
|
||||||
<field name="project_id" ref="project.project_project_9"/>
|
<field name="project_id" ref="project.project_project_9"/>
|
||||||
<field name="description">default values, onchange, required, add on top or bottom and shortcuts (Ctrl S, Ctrl X, ...)</field>
|
<field name="description">default values, onchange, required, add on top or bottom and shortcuts (Ctrl S, Ctrl X, ...)</field>
|
||||||
<field name="name">Editable trees</field>
|
<field name="name">Editable trees</field>
|
||||||
<field name="state">open</field>
|
|
||||||
<field name="product_backlog_id" ref="scrum_product_backlog_7"/>
|
<field name="product_backlog_id" ref="scrum_product_backlog_7"/>
|
||||||
</record>
|
</record>
|
||||||
|
|
||||||
|
|
|
@ -43,10 +43,6 @@
|
||||||
<field name="expected_hours" sum="Planned hours" widget="float_time" string="Total Planned Hours"/>
|
<field name="expected_hours" sum="Planned hours" widget="float_time" string="Total Planned Hours"/>
|
||||||
<field name="effective_hours" sum="Spent hours" widget="float_time" string="Total Spent Hours"/>
|
<field name="effective_hours" sum="Spent hours" widget="float_time" string="Total Spent Hours"/>
|
||||||
<field name="state"/>
|
<field name="state"/>
|
||||||
<button type="object" string="Open" name="button_open" states="draft,pending" icon="terp-camera_test"/>
|
|
||||||
<button type="object" string="Pending" name="button_pending" states="open" icon="gtk-media-pause"/>
|
|
||||||
<button type="action" string="Convert to Task" name="%(action_scrum_backlog_to_task)d" states="pending" icon="terp-stock_effects-object-colorize"/>
|
|
||||||
<button type="object" string="Close" name="button_close" states="open,pending" icon="terp-dialog-close"/>
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
@ -106,7 +102,7 @@
|
||||||
<field name="type_id" invisible="context.get('set_visible',False)"/>
|
<field name="type_id" invisible="context.get('set_visible',False)"/>
|
||||||
<field name="date_start" invisible="1"/>
|
<field name="date_start" invisible="1"/>
|
||||||
<field name="date_end" invisible="1"/>
|
<field name="date_end" invisible="1"/>
|
||||||
<button name="next_type" invisible="context.get('set_visible',False)"
|
<button name="stage_next" invisible="context.get('set_visible',False)"
|
||||||
states="draft,open,pending"
|
states="draft,open,pending"
|
||||||
string="Change Stage"
|
string="Change Stage"
|
||||||
type="object"
|
type="object"
|
||||||
|
@ -223,12 +219,6 @@
|
||||||
<field name="effective_hours" sum="Effective hours" widget="float_time"/>
|
<field name="effective_hours" sum="Effective hours" widget="float_time"/>
|
||||||
<field name="expected_hours" sum="Planned hours" widget="float_time"/>
|
<field name="expected_hours" sum="Planned hours" widget="float_time"/>
|
||||||
<field name="state"/>
|
<field name="state"/>
|
||||||
<button type="object" string="Open" name="button_open" states="draft,pending" icon="terp-camera_test"/>
|
|
||||||
<button type="object" string="Pending" name="button_pending" states="open" icon="gtk-media-pause"/>
|
|
||||||
<button type="object" string="Close" name="button_close" states="open,pending" icon="terp-dialog-close"/>
|
|
||||||
<button type="object" string="Set to Draft" name="button_draft" states="cancel,done" icon="gtk-convert"/>
|
|
||||||
<button name="%(project_scrum.report_scrum_sprint_burndown_chart)d" states="open,draft,close,cancel"
|
|
||||||
string="Burndown Chart" type="action" icon="gtk-print"/>
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
@ -578,7 +568,7 @@
|
||||||
<field name="type">search</field>
|
<field name="type">search</field>
|
||||||
<field name="inherit_id" ref="project.view_task_search_form"/>
|
<field name="inherit_id" ref="project.view_task_search_form"/>
|
||||||
<field name="arch" type="xml">
|
<field name="arch" type="xml">
|
||||||
<field name="project_id" position="after">
|
<field name="user_id" position="before">
|
||||||
<field name="sprint_id" context="{'sprint_invisible':False}">
|
<field name="sprint_id" context="{'sprint_invisible':False}">
|
||||||
<filter string="Current Sprints" icon="terp-check" context="{'sprint_invisible':False}" domain="[('sprint_id.state','in',('draft','open'))]" help="Current Sprints"/>
|
<filter string="Current Sprints" icon="terp-check" context="{'sprint_invisible':False}" domain="[('sprint_id.state','in',('draft','open'))]" help="Current Sprints"/>
|
||||||
<filter string="View Sprints" icon="gtk-find" context="{'sprint_invisible':False}" domain="[]" help="View Sprints"/>
|
<filter string="View Sprints" icon="gtk-find" context="{'sprint_invisible':False}" domain="[]" help="View Sprints"/>
|
||||||
|
|
|
@ -462,7 +462,7 @@
|
||||||
<field name="location_dest_id" groups="stock.group_locations"/>
|
<field name="location_dest_id" groups="stock.group_locations"/>
|
||||||
<field name="create_date" groups="base.group_no_one"/>
|
<field name="create_date" groups="base.group_no_one"/>
|
||||||
<field name="date" string="Date" groups="base.group_no_one"/>
|
<field name="date" string="Date" groups="base.group_no_one"/>
|
||||||
<field name="date_expected" string="Date Expected"/>
|
<field name="date_expected" string="Date Expected"/>
|
||||||
<field name="state"/>
|
<field name="state"/>
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
|
@ -697,7 +697,6 @@
|
||||||
<field name="invoice_state"/>
|
<field name="invoice_state"/>
|
||||||
<field name="stock_journal_id" widget="selection"/>
|
<field name="stock_journal_id" widget="selection"/>
|
||||||
<field name="state"/>
|
<field name="state"/>
|
||||||
<button name="action_process" states="assigned" groups="stock.group_stock_user" string="Process" type="object" icon="gtk-go-forward"/>
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
@ -1039,8 +1038,6 @@
|
||||||
<field name="invoice_state"/>
|
<field name="invoice_state"/>
|
||||||
<field name="stock_journal_id" widget="selection"/>
|
<field name="stock_journal_id" widget="selection"/>
|
||||||
<field name="state"/>
|
<field name="state"/>
|
||||||
<button name="action_process" states="assigned" string="Process" type="object" icon="gtk-go-forward"/>
|
|
||||||
<button name="button_cancel" states="assigned,confirmed,draft" string="Cancel" icon="gtk-cancel" confirm="This operation will cancel the shipment. Do you want to continue?" />
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
@ -1349,8 +1346,6 @@
|
||||||
states="draft,assigned,confirmed,done"/>
|
states="draft,assigned,confirmed,done"/>
|
||||||
<field name="date" groups="base.group_no_one"/>
|
<field name="date" groups="base.group_no_one"/>
|
||||||
<field name="state"/>
|
<field name="state"/>
|
||||||
<button name="action_assign" states="confirmed" string="Set Available" type="object" icon="gtk-yes"/>
|
|
||||||
<button name="action_done" string="Process" type="object" states="confirmed,assigned" icon="gtk-go-forward"/>
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
@ -1367,7 +1362,6 @@
|
||||||
<field name="product_qty" />
|
<field name="product_qty" />
|
||||||
<field name="product_uom" string="Unit of Measure" groups="product.group_uom"/>
|
<field name="product_uom" string="Unit of Measure" groups="product.group_uom"/>
|
||||||
<field name="date" groups="base.group_no_one" />
|
<field name="date" groups="base.group_no_one" />
|
||||||
<button name="action_done" states="confirmed,assigned" string="Process" type="object" icon="gtk-go-forward"/>
|
|
||||||
</tree>
|
</tree>
|
||||||
</field>
|
</field>
|
||||||
</record>
|
</record>
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue