[MERGE] with trunk.
bzr revid: nco@tinyerp.com-20130703124233-buziafuxc12mnznl
|
@ -221,8 +221,8 @@ class account_invoice(osv.osv):
|
|||
'type': {
|
||||
},
|
||||
'state': {
|
||||
'account.mt_invoice_paid': lambda self, cr, uid, obj, ctx=None: obj['state'] == 'paid' and obj['type'] in ('out_invoice', 'out_refund'),
|
||||
'account.mt_invoice_validated': lambda self, cr, uid, obj, ctx=None: obj['state'] == 'open' and obj['type'] in ('out_invoice', 'out_refund'),
|
||||
'account.mt_invoice_paid': lambda self, cr, uid, obj, ctx=None: obj.state == 'paid' and obj.type in ('out_invoice', 'out_refund'),
|
||||
'account.mt_invoice_validated': lambda self, cr, uid, obj, ctx=None: obj.state == 'open' and obj.type in ('out_invoice', 'out_refund'),
|
||||
},
|
||||
}
|
||||
_columns = {
|
||||
|
|
|
@ -7,14 +7,14 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
|
||||
"PO-Revision-Date: 2013-06-07 12:52+0000\n"
|
||||
"PO-Revision-Date: 2013-07-02 06:32+0000\n"
|
||||
"Last-Translator: Chertykov Denis <chertykov@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-06-08 05:52+0000\n"
|
||||
"X-Generator: Launchpad (build 16667)\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-03 05:14+0000\n"
|
||||
"X-Generator: Launchpad (build 16692)\n"
|
||||
|
||||
#. module: account
|
||||
#: model:process.transition,name:account.process_transition_supplierreconcilepaid0
|
||||
|
@ -134,10 +134,10 @@ msgstr ""
|
|||
#: code:addons/account/account.py:686
|
||||
#: code:addons/account/account.py:781
|
||||
#: code:addons/account/account.py:1058
|
||||
#: code:addons/account/account_invoice.py:817
|
||||
#: code:addons/account/account_invoice.py:820
|
||||
#: code:addons/account/account_invoice.py:823
|
||||
#: code:addons/account/account_invoice.py:1542
|
||||
#: code:addons/account/account_invoice.py:826
|
||||
#: code:addons/account/account_invoice.py:1545
|
||||
#: code:addons/account/account_move_line.py:98
|
||||
#: code:addons/account/account_move_line.py:771
|
||||
#: code:addons/account/account_move_line.py:824
|
||||
|
@ -257,7 +257,8 @@ msgid ""
|
|||
"entries."
|
||||
msgstr ""
|
||||
"Тип счета используется в информационных целях, при создании официальных "
|
||||
"отчетов для конкретной страны, определении правил"
|
||||
"отчетов для конкретной страны, определении правил закрытия финансового года "
|
||||
"и проводок открытия."
|
||||
|
||||
#. module: account
|
||||
#: field:account.config.settings,sale_refund_sequence_next:0
|
||||
|
@ -285,7 +286,7 @@ msgstr "Разрешить списание"
|
|||
#. module: account
|
||||
#: view:account.analytic.chart:0
|
||||
msgid "Select the Period for Analysis"
|
||||
msgstr "Выберите период для проведения анализа"
|
||||
msgstr "Выберите период для анализа"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.actions.act_window,help:account.action_invoice_tree3
|
||||
|
@ -355,7 +356,7 @@ msgid "Allow multi currencies"
|
|||
msgstr "Разрешить мульти-валютность"
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/account_invoice.py:74
|
||||
#: code:addons/account/account_invoice.py:77
|
||||
#, python-format
|
||||
msgid "You must define an analytic journal of type '%s'!"
|
||||
msgstr "Вы должны определить журнал аналитики типа '%s'!"
|
||||
|
@ -757,7 +758,9 @@ msgstr ""
|
|||
#: selection:account.common.partner.report,result_selection:0
|
||||
#: selection:account.partner.balance,result_selection:0
|
||||
#: selection:account.partner.ledger,result_selection:0
|
||||
#: report:account.third_party_ledger:0
|
||||
#: code:addons/account/report/account_partner_balance.py:297
|
||||
#: code:addons/account/report/account_partner_ledger.py:272
|
||||
#, python-format
|
||||
msgid "Receivable Accounts"
|
||||
msgstr "Счета к получению"
|
||||
|
@ -797,7 +800,7 @@ msgid "Are you sure you want to create entries?"
|
|||
msgstr "Вы действительно хотите создать проводки?"
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/account_invoice.py:1358
|
||||
#: code:addons/account/account_invoice.py:1361
|
||||
#, python-format
|
||||
msgid "Invoice partially paid: %s%s of %s%s (%s%s remaining)."
|
||||
msgstr "Счет частично оплачен: %s%s из %s%s (%s%s остаток)."
|
||||
|
@ -866,7 +869,7 @@ msgid "Type"
|
|||
msgstr "Тип"
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/account_invoice.py:823
|
||||
#: code:addons/account/account_invoice.py:826
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Taxes are missing!\n"
|
||||
|
@ -1052,7 +1055,7 @@ msgid "Liability"
|
|||
msgstr "Обязательства"
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/account_invoice.py:896
|
||||
#: code:addons/account/account_invoice.py:899
|
||||
#, python-format
|
||||
msgid "Please define sequence on the journal related to this invoice."
|
||||
msgstr "Пожалуйста, определите нумерацию в журнале, связанном с этим счетом."
|
||||
|
@ -1128,8 +1131,8 @@ msgstr "Возможности"
|
|||
#. module: account
|
||||
#: code:addons/account/account.py:2346
|
||||
#: code:addons/account/account_bank_statement.py:424
|
||||
#: code:addons/account/account_invoice.py:74
|
||||
#: code:addons/account/account_invoice.py:772
|
||||
#: code:addons/account/account_invoice.py:77
|
||||
#: code:addons/account/account_invoice.py:775
|
||||
#: code:addons/account/account_move_line.py:195
|
||||
#, python-format
|
||||
msgid "No Analytic Journal !"
|
||||
|
@ -1168,7 +1171,7 @@ msgstr "Название счета."
|
|||
#. module: account
|
||||
#: field:account.journal,with_last_closing_balance:0
|
||||
msgid "Opening With Last Closing Balance"
|
||||
msgstr ""
|
||||
msgstr "Открыть с предыдущим остатком"
|
||||
|
||||
#. module: account
|
||||
#: help:account.tax.code,notprintable:0
|
||||
|
@ -1567,8 +1570,10 @@ msgid "%s (copy)"
|
|||
msgstr "%s (копия)"
|
||||
|
||||
#. module: account
|
||||
#: report:account.account.balance:0
|
||||
#: selection:account.balance.report,display_account:0
|
||||
#: selection:account.common.account.report,display_account:0
|
||||
#: report:account.general.ledger_landscape:0
|
||||
#: selection:account.partner.balance,display_partner:0
|
||||
#: selection:account.report.general.ledger,display_account:0
|
||||
msgid "With balance is not equal to 0"
|
||||
|
@ -1803,7 +1808,7 @@ msgstr ""
|
|||
#: view:account.invoice:0
|
||||
#: view:account.invoice.report:0
|
||||
#: field:account.move.line,invoice:0
|
||||
#: code:addons/account/account_invoice.py:1154
|
||||
#: code:addons/account/account_invoice.py:1157
|
||||
#: model:ir.model,name:account.model_account_invoice
|
||||
#: model:res.request.link,name:account.req_link_invoice
|
||||
#, python-format
|
||||
|
@ -1954,7 +1959,7 @@ msgstr "Длительность"
|
|||
#: view:account.bank.statement:0
|
||||
#: field:account.bank.statement,last_closing_balance:0
|
||||
msgid "Last Closing Balance"
|
||||
msgstr ""
|
||||
msgstr "Последнее конечное сальдо"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.model,name:account.model_account_common_journal_report
|
||||
|
@ -2029,6 +2034,12 @@ msgid ""
|
|||
"useful because it enables you to preview at any time the tax that you owe at "
|
||||
"the start and end of the month or quarter."
|
||||
msgstr ""
|
||||
"Это меню печати налоговой декларации на основе счетов и платежей. Выберите "
|
||||
"один или несколько периодов финансового года. Информация, необходимая для "
|
||||
"налоговой декларации генерируется автоматически OpenERP из счета (или "
|
||||
"платежей, в некоторых странах). Эти данные обновляются в режиме реального "
|
||||
"времени. Это очень полезно, потому что позволяет просматривать в любое время "
|
||||
"налоги, которые вы должны в начале и в конце месяца или квартала."
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/account.py:409
|
||||
|
@ -2057,9 +2068,9 @@ msgstr ""
|
|||
#: code:addons/account/account_bank_statement.py:419
|
||||
#: code:addons/account/account_cash_statement.py:256
|
||||
#: code:addons/account/account_cash_statement.py:300
|
||||
#: code:addons/account/account_invoice.py:896
|
||||
#: code:addons/account/account_invoice.py:930
|
||||
#: code:addons/account/account_invoice.py:1121
|
||||
#: code:addons/account/account_invoice.py:899
|
||||
#: code:addons/account/account_invoice.py:933
|
||||
#: code:addons/account/account_invoice.py:1124
|
||||
#: code:addons/account/account_move_line.py:579
|
||||
#: code:addons/account/account_move_line.py:828
|
||||
#: code:addons/account/account_move_line.py:851
|
||||
|
@ -2104,7 +2115,7 @@ msgstr ""
|
|||
" </p><p>\n"
|
||||
" Вы можете управлять счетом от поставщика в соответствии с\n"
|
||||
" тем, что вы приобрели. OpenERP также может создавать\n"
|
||||
" черновые счета автоматически из заказов на закупку.\n"
|
||||
" черновые счета автоматически из заказов закупки.\n"
|
||||
" </p>\n"
|
||||
" "
|
||||
|
||||
|
@ -2230,7 +2241,7 @@ msgstr "Счет - печать журнала"
|
|||
#. module: account
|
||||
#: model:ir.model,name:account.model_product_category
|
||||
msgid "Product Category"
|
||||
msgstr "Категория ТМЦ"
|
||||
msgstr "Категория продукции"
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/account.py:656
|
||||
|
@ -2307,7 +2318,9 @@ msgstr "Управление активами"
|
|||
#: selection:account.common.partner.report,result_selection:0
|
||||
#: selection:account.partner.balance,result_selection:0
|
||||
#: selection:account.partner.ledger,result_selection:0
|
||||
#: report:account.third_party_ledger:0
|
||||
#: code:addons/account/report/account_partner_balance.py:299
|
||||
#: code:addons/account/report/account_partner_ledger.py:274
|
||||
#, python-format
|
||||
msgid "Payable Accounts"
|
||||
msgstr "Кредиторская задолженность"
|
||||
|
@ -2600,7 +2613,7 @@ msgstr "Учетный год"
|
|||
#: help:accounting.report,fiscalyear_id:0
|
||||
#: help:accounting.report,fiscalyear_id_cmp:0
|
||||
msgid "Keep empty for all open fiscal year"
|
||||
msgstr "Keep empty for all open fiscal year"
|
||||
msgstr "Оставьте пустым для всех открытых финансовых лет"
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/account.py:653
|
||||
|
@ -2623,7 +2636,7 @@ msgid "Create an Account Based on this Template"
|
|||
msgstr "Создать счет на основе этого шаблона"
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/account_invoice.py:930
|
||||
#: code:addons/account/account_invoice.py:933
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot create the invoice.\n"
|
||||
|
@ -2896,11 +2909,11 @@ msgstr "Счета"
|
|||
#. module: account
|
||||
#: code:addons/account/account.py:3541
|
||||
#: code:addons/account/account_bank_statement.py:405
|
||||
#: code:addons/account/account_invoice.py:504
|
||||
#: code:addons/account/account_invoice.py:606
|
||||
#: code:addons/account/account_invoice.py:621
|
||||
#: code:addons/account/account_invoice.py:629
|
||||
#: code:addons/account/account_invoice.py:654
|
||||
#: code:addons/account/account_invoice.py:507
|
||||
#: code:addons/account/account_invoice.py:609
|
||||
#: code:addons/account/account_invoice.py:624
|
||||
#: code:addons/account/account_invoice.py:632
|
||||
#: code:addons/account/account_invoice.py:657
|
||||
#: code:addons/account/account_move_line.py:536
|
||||
#, python-format
|
||||
msgid "Configuration Error!"
|
||||
|
@ -2932,7 +2945,7 @@ msgstr "Метка"
|
|||
#. module: account
|
||||
#: view:res.partner.bank:0
|
||||
msgid "Accounting Information"
|
||||
msgstr "Бухгалтерская информация"
|
||||
msgstr "Учетная информация"
|
||||
|
||||
#. module: account
|
||||
#: view:account.tax:0
|
||||
|
@ -3098,6 +3111,8 @@ msgid ""
|
|||
"Selected invoice(s) cannot be confirmed as they are not in 'Draft' or 'Pro-"
|
||||
"Forma' state."
|
||||
msgstr ""
|
||||
"Выбранные счета нельзя подтвердить, так как состояние не \"Черновик\" и не "
|
||||
"\"Проформа\""
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/account.py:1071
|
||||
|
@ -3130,7 +3145,7 @@ msgstr "Журнал продаж"
|
|||
|
||||
#. module: account
|
||||
#: code:addons/account/account.py:2346
|
||||
#: code:addons/account/account_invoice.py:772
|
||||
#: code:addons/account/account_invoice.py:775
|
||||
#: code:addons/account/account_move_line.py:195
|
||||
#, python-format
|
||||
msgid "You have to define an analytic journal on the '%s' journal!"
|
||||
|
@ -3299,7 +3314,7 @@ msgid "Fiscal Position"
|
|||
msgstr "Система налогообложения"
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/account_invoice.py:820
|
||||
#: code:addons/account/account_invoice.py:823
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Tax base different!\n"
|
||||
|
@ -3464,7 +3479,7 @@ msgstr "Вид"
|
|||
|
||||
#. module: account
|
||||
#: code:addons/account/account.py:3460
|
||||
#: code:addons/account/account_bank.py:95
|
||||
#: code:addons/account/account_bank.py:94
|
||||
#, python-format
|
||||
msgid "BNK"
|
||||
msgstr "BNK"
|
||||
|
@ -3734,7 +3749,7 @@ msgstr ""
|
|||
"иметь названия как и у самого документа"
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/account_invoice.py:1013
|
||||
#: code:addons/account/account_invoice.py:1016
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You cannot create an invoice on a centralized journal. Uncheck the "
|
||||
|
@ -3749,7 +3764,7 @@ msgid "Starting Balance"
|
|||
msgstr "Начальный баланс"
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/account_invoice.py:1462
|
||||
#: code:addons/account/account_invoice.py:1465
|
||||
#, python-format
|
||||
msgid "No Partner Defined !"
|
||||
msgstr "Партнер не определен!"
|
||||
|
@ -3974,6 +3989,8 @@ msgid ""
|
|||
"You cannot modify a posted entry of this journal.\n"
|
||||
"First you should set the journal to allow cancelling entries."
|
||||
msgstr ""
|
||||
"Нельзя изменить проводку по этому журналу.\n"
|
||||
"Прежде, нужно разрешить отмену проводок в журнале."
|
||||
|
||||
#. module: account
|
||||
#: model:ir.actions.act_window,name:account.action_account_print_sale_purchase_journal
|
||||
|
@ -4040,9 +4057,13 @@ msgid "VAT :"
|
|||
msgstr "НДС:"
|
||||
|
||||
#. module: account
|
||||
#: report:account.account.balance:0
|
||||
#: report:account.central.journal:0
|
||||
#: view:account.config.settings:0
|
||||
#: report:account.general.journal:0
|
||||
#: report:account.general.ledger:0
|
||||
#: report:account.general.ledger_landscape:0
|
||||
#: report:account.journal.period.print:0
|
||||
#: report:account.partner.balance:0
|
||||
#: report:account.third_party_ledger:0
|
||||
#: report:account.third_party_ledger_other:0
|
||||
|
@ -4145,8 +4166,10 @@ msgstr ""
|
|||
"условии оплаты контрагента."
|
||||
|
||||
#. module: account
|
||||
#: report:account.account.balance:0
|
||||
#: selection:account.balance.report,display_account:0
|
||||
#: selection:account.common.account.report,display_account:0
|
||||
#: report:account.general.ledger_landscape:0
|
||||
#: selection:account.report.general.ledger,display_account:0
|
||||
#: selection:account.tax,type_tax_use:0
|
||||
#: selection:account.tax.template,type_tax_use:0
|
||||
|
@ -4283,7 +4306,7 @@ msgstr "Открыть счет"
|
|||
#. module: account
|
||||
#: field:account.invoice.tax,factor_tax:0
|
||||
msgid "Multipication factor Tax code"
|
||||
msgstr ""
|
||||
msgstr "Коэффициент кода налога"
|
||||
|
||||
#. module: account
|
||||
#: field:account.config.settings,complete_tax_set:0
|
||||
|
@ -4409,7 +4432,7 @@ msgid "Consolidated Children"
|
|||
msgstr "Субсчета"
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/account_invoice.py:570
|
||||
#: code:addons/account/account_invoice.py:573
|
||||
#: code:addons/account/wizard/account_invoice_refund.py:146
|
||||
#, python-format
|
||||
msgid "Insufficient Data!"
|
||||
|
@ -4592,7 +4615,7 @@ msgstr ""
|
|||
#: field:account.account,shortcut:0
|
||||
#: field:account.account.template,shortcut:0
|
||||
msgid "Shortcut"
|
||||
msgstr "Горячая клвиша"
|
||||
msgstr "Закладка"
|
||||
|
||||
#. module: account
|
||||
#: view:account.account:0
|
||||
|
@ -4666,6 +4689,8 @@ msgid ""
|
|||
"Error!\n"
|
||||
"The duration of the Period(s) is/are invalid."
|
||||
msgstr ""
|
||||
"Ошибка!\n"
|
||||
"Не допустимая продолжительность периода."
|
||||
|
||||
#. module: account
|
||||
#: field:account.entries.report,month:0
|
||||
|
@ -4682,7 +4707,7 @@ msgstr "Месяц"
|
|||
#: code:addons/account/account.py:668
|
||||
#, python-format
|
||||
msgid "You cannot change the code of account which contains journal items!"
|
||||
msgstr ""
|
||||
msgstr "Нальзя изменить код счета который содержит проводки!"
|
||||
|
||||
#. module: account
|
||||
#: field:account.config.settings,purchase_sequence_prefix:0
|
||||
|
@ -4690,8 +4715,8 @@ msgid "Supplier invoice sequence"
|
|||
msgstr "Нумерация счетов поставщиков"
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/account_invoice.py:607
|
||||
#: code:addons/account/account_invoice.py:622
|
||||
#: code:addons/account/account_invoice.py:610
|
||||
#: code:addons/account/account_invoice.py:625
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot find a chart of account, you should create one from Settings\\"
|
||||
|
@ -4801,7 +4826,7 @@ msgstr "Отметьте, если хотите выводить счета с 0
|
|||
#. module: account
|
||||
#: field:account.move.reconcile,opening_reconciliation:0
|
||||
msgid "Opening Entries Reconciliation"
|
||||
msgstr ""
|
||||
msgstr "Сверка проводок открытия"
|
||||
|
||||
#. module: account
|
||||
#. openerp-web
|
||||
|
@ -4826,7 +4851,7 @@ msgstr "Документ из счета или платежа"
|
|||
msgid ""
|
||||
"There is currently no company without chart of account. The wizard will "
|
||||
"therefore not be executed."
|
||||
msgstr ""
|
||||
msgstr "Не ни одной компании без плана счетов. Мастер не будет запущен."
|
||||
|
||||
#. module: account
|
||||
#: model:ir.actions.act_window,name:account.action_wizard_multi_chart
|
||||
|
@ -4971,7 +4996,7 @@ msgstr ""
|
|||
"Нельзя создать счет, который имеет родительский счет другой компании."
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/account_invoice.py:655
|
||||
#: code:addons/account/account_invoice.py:658
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot find any account journal of %s type for this company.\n"
|
||||
|
@ -5019,7 +5044,7 @@ msgstr "Контроль типа"
|
|||
#. module: account
|
||||
#: help:account.journal,default_credit_account_id:0
|
||||
msgid "It acts as a default account for credit amount"
|
||||
msgstr "Выступает в качестве счета по умолчанию для сумм по кредиту"
|
||||
msgstr "Используется как кредитовый счет по умолчанию"
|
||||
|
||||
#. module: account
|
||||
#: view:cash.box.out:0
|
||||
|
@ -5036,7 +5061,7 @@ msgstr "Отменено"
|
|||
#. module: account
|
||||
#: help:account.config.settings,group_proforma_invoices:0
|
||||
msgid "Allows you to put invoices in pro-forma state."
|
||||
msgstr ""
|
||||
msgstr "Позволяет устанавливать статус \"Проформа\" для счетов."
|
||||
|
||||
#. module: account
|
||||
#: view:account.journal:0
|
||||
|
@ -5050,6 +5075,7 @@ msgid ""
|
|||
"It adds the currency column on report if the currency differs from the "
|
||||
"company currency."
|
||||
msgstr ""
|
||||
"Добавляет колонку валюты в отчет, если валюта отлична от валюты компании."
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/account.py:3394
|
||||
|
@ -5281,7 +5307,7 @@ msgstr "Проводки журнала для проверки"
|
|||
#. module: account
|
||||
#: selection:res.company,tax_calculation_rounding_method:0
|
||||
msgid "Round Globally"
|
||||
msgstr ""
|
||||
msgstr "Глобальное округление"
|
||||
|
||||
#. module: account
|
||||
#: view:account.bank.statement:0
|
||||
|
@ -5295,7 +5321,7 @@ msgid "Tax Application"
|
|||
msgstr "Применение налога"
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/account_invoice.py:919
|
||||
#: code:addons/account/account_invoice.py:922
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please verify the price of the invoice !\n"
|
||||
|
@ -5561,7 +5587,7 @@ msgstr ""
|
|||
#. module: account
|
||||
#: view:account.invoice:0
|
||||
msgid "Pro Forma Invoice "
|
||||
msgstr "Предварительный счет "
|
||||
msgstr "Проформа счета "
|
||||
|
||||
#. module: account
|
||||
#: selection:account.subscription,period_type:0
|
||||
|
@ -5597,7 +5623,7 @@ msgstr "Прибыль и убыток (счет доходов)"
|
|||
#. module: account
|
||||
#: field:account.journal,allow_date:0
|
||||
msgid "Check Date in Period"
|
||||
msgstr ""
|
||||
msgstr "Проверка даты в периоде"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.ui.menu,name:account.final_accounting_reports
|
||||
|
@ -5622,7 +5648,7 @@ msgid "Compute Code (if type=code)"
|
|||
msgstr "Вычислить код (если тип=код)"
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/account_invoice.py:505
|
||||
#: code:addons/account/account_invoice.py:508
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot find a chart of accounts for this company, you should create one."
|
||||
|
@ -5973,7 +5999,7 @@ msgstr "Сумма в валюте"
|
|||
#. module: account
|
||||
#: selection:res.company,tax_calculation_rounding_method:0
|
||||
msgid "Round per Line"
|
||||
msgstr ""
|
||||
msgstr "Округление каждой позиции"
|
||||
|
||||
#. module: account
|
||||
#: report:account.analytic.account.balance:0
|
||||
|
@ -6063,7 +6089,7 @@ msgstr "Открыть кассу"
|
|||
#. module: account
|
||||
#: selection:account.financial.report,style_overwrite:0
|
||||
msgid "Automatic formatting"
|
||||
msgstr ""
|
||||
msgstr "Автоматическое форматирование"
|
||||
|
||||
#. module: account
|
||||
#: view:account.move.line.reconcile:0
|
||||
|
@ -6166,7 +6192,7 @@ msgstr "Доход"
|
|||
#: view:account.config.settings:0
|
||||
#: view:account.invoice:0
|
||||
#: view:account.invoice.report:0
|
||||
#: code:addons/account/account_invoice.py:387
|
||||
#: code:addons/account/account_invoice.py:390
|
||||
#, python-format
|
||||
msgid "Supplier"
|
||||
msgstr "Поставщик"
|
||||
|
@ -6186,7 +6212,7 @@ msgid "Account n°"
|
|||
msgstr "№ счета"
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/account_invoice.py:92
|
||||
#: code:addons/account/account_invoice.py:95
|
||||
#, python-format
|
||||
msgid "Free Reference"
|
||||
msgstr "Свободная Ссылка"
|
||||
|
@ -6196,7 +6222,9 @@ msgstr "Свободная Ссылка"
|
|||
#: selection:account.common.partner.report,result_selection:0
|
||||
#: selection:account.partner.balance,result_selection:0
|
||||
#: selection:account.partner.ledger,result_selection:0
|
||||
#: report:account.third_party_ledger:0
|
||||
#: code:addons/account/report/account_partner_balance.py:301
|
||||
#: code:addons/account/report/account_partner_ledger.py:276
|
||||
#, python-format
|
||||
msgid "Receivable and Payable Accounts"
|
||||
msgstr "Счета дебиторской и кредиторской задолженности"
|
||||
|
@ -6323,7 +6351,7 @@ msgstr ""
|
|||
#. module: account
|
||||
#: field:account.journal,loss_account_id:0
|
||||
msgid "Loss Account"
|
||||
msgstr ""
|
||||
msgstr "Счет убытков"
|
||||
|
||||
#. module: account
|
||||
#: field:account.tax,account_collected_id:0
|
||||
|
@ -6498,10 +6526,10 @@ msgstr "Позиция аналитики"
|
|||
#. module: account
|
||||
#: model:ir.ui.menu,name:account.menu_action_model_form
|
||||
msgid "Models"
|
||||
msgstr ""
|
||||
msgstr "Модели"
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/account_invoice.py:1121
|
||||
#: code:addons/account/account_invoice.py:1124
|
||||
#, python-format
|
||||
msgid ""
|
||||
"You cannot cancel an invoice which is partially paid. You need to "
|
||||
|
@ -6673,7 +6701,7 @@ msgid "You cannot create journal items on closed account."
|
|||
msgstr ""
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/account_invoice.py:630
|
||||
#: code:addons/account/account_invoice.py:633
|
||||
#, python-format
|
||||
msgid "Invoice line account's company and invoice's compnay does not match."
|
||||
msgstr ""
|
||||
|
@ -6718,7 +6746,7 @@ msgstr "Собственные средства"
|
|||
#. module: account
|
||||
#: field:account.journal,internal_account_id:0
|
||||
msgid "Internal Transfers Account"
|
||||
msgstr ""
|
||||
msgstr "Счет внутренних переводов"
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/wizard/pos_box.py:32
|
||||
|
@ -6734,7 +6762,7 @@ msgstr "Процент"
|
|||
#. module: account
|
||||
#: selection:account.config.settings,tax_calculation_rounding_method:0
|
||||
msgid "Round globally"
|
||||
msgstr ""
|
||||
msgstr "Глобальное округление"
|
||||
|
||||
#. module: account
|
||||
#: selection:account.report.general.ledger,sortby:0
|
||||
|
@ -6825,7 +6853,7 @@ msgstr ""
|
|||
#: code:addons/account/account.py:1453
|
||||
#: code:addons/account/account.py:1482
|
||||
#: code:addons/account/account.py:1489
|
||||
#: code:addons/account/account_invoice.py:1012
|
||||
#: code:addons/account/account_invoice.py:1015
|
||||
#: code:addons/account/account_move_line.py:1005
|
||||
#: code:addons/account/wizard/account_automatic_reconcile.py:148
|
||||
#: code:addons/account/wizard/account_fiscalyear_close.py:88
|
||||
|
@ -6912,7 +6940,7 @@ msgstr ""
|
|||
#: report:account.invoice:0
|
||||
#: selection:account.invoice,type:0
|
||||
#: selection:account.invoice.report,type:0
|
||||
#: code:addons/account/account_invoice.py:1157
|
||||
#: code:addons/account/account_invoice.py:1160
|
||||
#: selection:report.invoice.created,type:0
|
||||
#, python-format
|
||||
msgid "Supplier Refund"
|
||||
|
@ -7553,7 +7581,7 @@ msgstr "Для процентных налогов, введите % как чи
|
|||
#. module: account
|
||||
#: model:ir.actions.act_window,name:account.action_account_report_tree_hierarchy
|
||||
msgid "Financial Reports Hierarchy"
|
||||
msgstr ""
|
||||
msgstr "Структура финансовых отчетов"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.actions.act_window,name:account.act_account_invoice_partner_relation
|
||||
|
@ -7718,7 +7746,7 @@ msgstr ""
|
|||
#. module: account
|
||||
#: field:account.config.settings,group_proforma_invoices:0
|
||||
msgid "Allow pro-forma invoices"
|
||||
msgstr ""
|
||||
msgstr "Разрешить проформы счетов"
|
||||
|
||||
#. module: account
|
||||
#: view:account.bank.statement:0
|
||||
|
@ -7789,7 +7817,7 @@ msgstr "Журнал счета"
|
|||
#. module: account
|
||||
#: field:account.config.settings,tax_calculation_rounding_method:0
|
||||
msgid "Tax calculation rounding method"
|
||||
msgstr ""
|
||||
msgstr "Метод округления при расчете налога"
|
||||
|
||||
#. module: account
|
||||
#: model:process.node,name:account.process_node_paidinvoice0
|
||||
|
@ -7912,7 +7940,7 @@ msgstr "Нормальный"
|
|||
#: model:ir.actions.act_window,name:account.action_email_templates
|
||||
#: model:ir.ui.menu,name:account.menu_email_templates
|
||||
msgid "Email Templates"
|
||||
msgstr ""
|
||||
msgstr "Шаблоны писем"
|
||||
|
||||
#. module: account
|
||||
#: view:account.move.line:0
|
||||
|
@ -7974,7 +8002,7 @@ msgstr "Нет номера части !"
|
|||
#: view:account.financial.report:0
|
||||
#: model:ir.ui.menu,name:account.menu_account_report_tree_hierarchy
|
||||
msgid "Account Reports Hierarchy"
|
||||
msgstr ""
|
||||
msgstr "Структура отчетов по счетам"
|
||||
|
||||
#. module: account
|
||||
#: help:account.account.template,chart_template_id:0
|
||||
|
@ -8050,6 +8078,8 @@ msgstr "Отмена выбранных счетов"
|
|||
msgid ""
|
||||
"This field is used to generate legal reports: profit and loss, balance sheet."
|
||||
msgstr ""
|
||||
"Это поле используется для генерации официальных отчетов: прибыль и убыток, "
|
||||
"баланс."
|
||||
|
||||
#. module: account
|
||||
#: selection:account.entries.report,month:0
|
||||
|
@ -8061,7 +8091,7 @@ msgid "May"
|
|||
msgstr "Май"
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/account_invoice.py:817
|
||||
#: code:addons/account/account_invoice.py:820
|
||||
#, python-format
|
||||
msgid "Global taxes defined, but they are not in invoice lines !"
|
||||
msgstr ""
|
||||
|
@ -8102,7 +8132,7 @@ msgstr "Провести записи журнала"
|
|||
#: view:account.config.settings:0
|
||||
#: view:account.invoice:0
|
||||
#: view:account.invoice.report:0
|
||||
#: code:addons/account/account_invoice.py:385
|
||||
#: code:addons/account/account_invoice.py:388
|
||||
#, python-format
|
||||
msgid "Customer"
|
||||
msgstr "Заказчик"
|
||||
|
@ -8303,7 +8333,7 @@ msgstr ""
|
|||
#. module: account
|
||||
#: field:res.company,tax_calculation_rounding_method:0
|
||||
msgid "Tax Calculation Rounding Method"
|
||||
msgstr ""
|
||||
msgstr "Метод округления при расчете налога"
|
||||
|
||||
#. module: account
|
||||
#: field:account.entries.report,move_line_state:0
|
||||
|
@ -8357,7 +8387,7 @@ msgid "Select a currency to apply on the invoice"
|
|||
msgstr "Выбрать валюту применяемую в счете"
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/account_invoice.py:898
|
||||
#: code:addons/account/account_invoice.py:901
|
||||
#, python-format
|
||||
msgid "No Invoice Lines !"
|
||||
msgstr "Нет позиций в счете !"
|
||||
|
@ -8433,7 +8463,7 @@ msgid "Associated Partner"
|
|||
msgstr "Связанный контрагент"
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/account_invoice.py:1462
|
||||
#: code:addons/account/account_invoice.py:1465
|
||||
#, python-format
|
||||
msgid "You must first select a partner !"
|
||||
msgstr "Сначала вы должны выбрать партнера !"
|
||||
|
@ -8998,7 +9028,7 @@ msgstr "Вы уверены?"
|
|||
#. module: account
|
||||
#: view:account.journal:0
|
||||
msgid "Accounts Allowed (empty for no control)"
|
||||
msgstr "Разрешенные счета (остваьте пустым для снятия проверок)"
|
||||
msgstr "Разрешенные счета (оставьте пустым для снятия проверок)"
|
||||
|
||||
#. module: account
|
||||
#: field:account.config.settings,sale_tax_rate:0
|
||||
|
@ -9384,7 +9414,7 @@ msgid "Purchase Tax(%)"
|
|||
msgstr "Налог на покупку(%)"
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/account_invoice.py:898
|
||||
#: code:addons/account/account_invoice.py:901
|
||||
#, python-format
|
||||
msgid "Please create some invoice lines."
|
||||
msgstr "Пожалуйста, создайте позиции счета"
|
||||
|
@ -9396,6 +9426,8 @@ msgid ""
|
|||
"Please check that the field 'Internal Transfers Account' is set on the "
|
||||
"payment method '%s'."
|
||||
msgstr ""
|
||||
"Пожалуйста, проверьте , что поле \"Счет внутренних переводов\" установлено "
|
||||
"для способа оплаты '%s'."
|
||||
|
||||
#. module: account
|
||||
#: field:account.vat.declaration,display_detail:0
|
||||
|
@ -9448,7 +9480,7 @@ msgstr "Конец периода"
|
|||
#: model:ir.actions.act_window,name:account.action_account_report
|
||||
#: model:ir.ui.menu,name:account.menu_account_reports
|
||||
msgid "Financial Reports"
|
||||
msgstr ""
|
||||
msgstr "Финансовые отчеты"
|
||||
|
||||
#. module: account
|
||||
#: model:account.account.type,name:account.account_type_liability_view1
|
||||
|
@ -9737,6 +9769,7 @@ msgid ""
|
|||
"This field contains the information related to the numbering of the journal "
|
||||
"entries of this journal."
|
||||
msgstr ""
|
||||
"Это поле содержит информацию, связанную с нумерацией проводок этого журнала."
|
||||
|
||||
#. module: account
|
||||
#: field:account.invoice,sent:0
|
||||
|
@ -9768,7 +9801,7 @@ msgstr ""
|
|||
#. module: account
|
||||
#: model:ir.ui.menu,name:account.menu_finance_periodical_processing
|
||||
msgid "Periodic Processing"
|
||||
msgstr ""
|
||||
msgstr "Периодическая обработка"
|
||||
|
||||
#. module: account
|
||||
#: view:account.invoice.report:0
|
||||
|
@ -9940,7 +9973,7 @@ msgid "Unreconciled"
|
|||
msgstr "Не сверенные"
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/account_invoice.py:919
|
||||
#: code:addons/account/account_invoice.py:922
|
||||
#, python-format
|
||||
msgid "Bad total !"
|
||||
msgstr "Плохой итог !"
|
||||
|
@ -10046,7 +10079,7 @@ msgstr ""
|
|||
#. module: account
|
||||
#: field:account.bank.statement.line,name:0
|
||||
msgid "OBI"
|
||||
msgstr ""
|
||||
msgstr "Назначение"
|
||||
|
||||
#. module: account
|
||||
#: help:res.partner,property_account_payable:0
|
||||
|
@ -10196,7 +10229,7 @@ msgstr "Апрель"
|
|||
#. module: account
|
||||
#: model:account.financial.report,name:account.account_financial_report_profitloss_toreport0
|
||||
msgid "Profit (Loss) to report"
|
||||
msgstr ""
|
||||
msgstr "Прибыль (убыток) в отчет"
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/account_invoice.py:379
|
||||
|
@ -10280,7 +10313,7 @@ msgstr "Внутренний тип"
|
|||
#. module: account
|
||||
#: field:account.subscription.generate,date:0
|
||||
msgid "Generate Entries Before"
|
||||
msgstr ""
|
||||
msgstr "Генерировать проводки до"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.actions.act_window,name:account.action_subscription_form_running
|
||||
|
@ -10401,7 +10434,7 @@ msgstr "Всего"
|
|||
#: code:addons/account/wizard/account_invoice_refund.py:109
|
||||
#, python-format
|
||||
msgid "Cannot %s draft/proforma/cancel invoice."
|
||||
msgstr ""
|
||||
msgstr "Нельзя %s черновик/проформу/закрытый счет."
|
||||
|
||||
#. module: account
|
||||
#: field:account.tax,account_analytic_paid_id:0
|
||||
|
@ -10415,6 +10448,7 @@ msgstr "Открыть для банковской сверки"
|
|||
|
||||
#. module: account
|
||||
#: field:account.account,company_id:0
|
||||
#: report:account.account.balance:0
|
||||
#: field:account.aged.trial.balance,company_id:0
|
||||
#: field:account.analytic.journal,company_id:0
|
||||
#: field:account.balance.report,company_id:0
|
||||
|
@ -10430,7 +10464,9 @@ msgstr "Открыть для банковской сверки"
|
|||
#: field:account.entries.report,company_id:0
|
||||
#: field:account.fiscal.position,company_id:0
|
||||
#: field:account.fiscalyear,company_id:0
|
||||
#: report:account.general.journal:0
|
||||
#: field:account.general.journal,company_id:0
|
||||
#: report:account.general.ledger_landscape:0
|
||||
#: field:account.installer,company_id:0
|
||||
#: field:account.invoice,company_id:0
|
||||
#: field:account.invoice.line,company_id:0
|
||||
|
@ -10439,6 +10475,7 @@ msgstr "Открыть для банковской сверки"
|
|||
#: field:account.invoice.tax,company_id:0
|
||||
#: field:account.journal,company_id:0
|
||||
#: field:account.journal.period,company_id:0
|
||||
#: report:account.journal.period.print:0
|
||||
#: field:account.model,company_id:0
|
||||
#: field:account.move,company_id:0
|
||||
#: field:account.move.line,company_id:0
|
||||
|
@ -10603,7 +10640,7 @@ msgstr "Счета системы налогообложения"
|
|||
#: view:account.invoice:0
|
||||
#: selection:account.invoice,type:0
|
||||
#: selection:account.invoice.report,type:0
|
||||
#: code:addons/account/account_invoice.py:1155
|
||||
#: code:addons/account/account_invoice.py:1158
|
||||
#: model:process.process,name:account.process_process_supplierinvoiceprocess0
|
||||
#: selection:report.invoice.created,type:0
|
||||
#, python-format
|
||||
|
@ -10692,8 +10729,10 @@ msgid ""
|
|||
msgstr ""
|
||||
|
||||
#. module: account
|
||||
#: report:account.account.balance:0
|
||||
#: selection:account.balance.report,display_account:0
|
||||
#: selection:account.common.account.report,display_account:0
|
||||
#: report:account.general.ledger_landscape:0
|
||||
#: selection:account.report.general.ledger,display_account:0
|
||||
msgid "With movements"
|
||||
msgstr "С движением"
|
||||
|
@ -10789,7 +10828,7 @@ msgid "Entries Sorted by"
|
|||
msgstr ""
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/account_invoice.py:1543
|
||||
#: code:addons/account/account_invoice.py:1546
|
||||
#, python-format
|
||||
msgid ""
|
||||
"The selected unit of measure is not compatible with the unit of measure of "
|
||||
|
@ -10870,7 +10909,7 @@ msgstr "Искать счет"
|
|||
#: report:account.invoice:0
|
||||
#: view:account.invoice:0
|
||||
#: view:account.invoice.report:0
|
||||
#: code:addons/account/account_invoice.py:1156
|
||||
#: code:addons/account/account_invoice.py:1159
|
||||
#, python-format
|
||||
msgid "Refund"
|
||||
msgstr "Возвраты"
|
||||
|
@ -10942,7 +10981,7 @@ msgid "Manual Invoice Taxes"
|
|||
msgstr ""
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/account_invoice.py:570
|
||||
#: code:addons/account/account_invoice.py:573
|
||||
#, python-format
|
||||
msgid "The payment term of supplier does not have a payment term line."
|
||||
msgstr ""
|
||||
|
@ -11096,7 +11135,7 @@ msgstr ""
|
|||
#. module: account
|
||||
#: selection:account.config.settings,tax_calculation_rounding_method:0
|
||||
msgid "Round per line"
|
||||
msgstr ""
|
||||
msgstr "Округление каждой позиции"
|
||||
|
||||
#. module: account
|
||||
#: help:account.move.line,amount_residual_currency:0
|
||||
|
|
|
@ -189,44 +189,34 @@ class res_partner(osv.osv):
|
|||
'debit': fields.function(_credit_debit_get, fnct_search=_debit_search, string='Total Payable', multi='dc', help="Total amount you have to pay to this supplier."),
|
||||
'debit_limit': fields.float('Payable Limit'),
|
||||
'property_account_payable': fields.property(
|
||||
'account.account',
|
||||
type='many2one',
|
||||
relation='account.account',
|
||||
string="Account Payable",
|
||||
view_load=True,
|
||||
domain="[('type', '=', 'payable')]",
|
||||
help="This account will be used instead of the default one as the payable account for the current partner",
|
||||
required=True),
|
||||
'property_account_receivable': fields.property(
|
||||
'account.account',
|
||||
type='many2one',
|
||||
relation='account.account',
|
||||
string="Account Receivable",
|
||||
view_load=True,
|
||||
domain="[('type', '=', 'receivable')]",
|
||||
help="This account will be used instead of the default one as the receivable account for the current partner",
|
||||
required=True),
|
||||
'property_account_position': fields.property(
|
||||
'account.fiscal.position',
|
||||
type='many2one',
|
||||
relation='account.fiscal.position',
|
||||
string="Fiscal Position",
|
||||
view_load=True,
|
||||
help="The fiscal position will determine taxes and accounts used for the partner.",
|
||||
),
|
||||
'property_payment_term': fields.property(
|
||||
'account.payment.term',
|
||||
type='many2one',
|
||||
relation='account.payment.term',
|
||||
string ='Customer Payment Term',
|
||||
view_load=True,
|
||||
help="This payment term will be used instead of the default one for sale orders and customer invoices"),
|
||||
'property_supplier_payment_term': fields.property(
|
||||
'account.payment.term',
|
||||
type='many2one',
|
||||
relation='account.payment.term',
|
||||
string ='Supplier Payment Term',
|
||||
view_load=True,
|
||||
help="This payment term will be used instead of the default one for purchase orders and supplier invoices"),
|
||||
'ref_companies': fields.one2many('res.company', 'partner_id',
|
||||
'Companies that refers to partner'),
|
||||
|
|
|
@ -25,18 +25,14 @@ class product_category(osv.osv):
|
|||
_inherit = "product.category"
|
||||
_columns = {
|
||||
'property_account_income_categ': fields.property(
|
||||
'account.account',
|
||||
type='many2one',
|
||||
relation='account.account',
|
||||
string="Income Account",
|
||||
view_load=True,
|
||||
help="This account will be used for invoices to value sales."),
|
||||
'property_account_expense_categ': fields.property(
|
||||
'account.account',
|
||||
type='many2one',
|
||||
relation='account.account',
|
||||
string="Expense Account",
|
||||
view_load=True,
|
||||
help="This account will be used for invoices to value expenses."),
|
||||
}
|
||||
|
||||
|
@ -54,18 +50,14 @@ class product_template(osv.osv):
|
|||
'product_supplier_taxes_rel', 'prod_id', 'tax_id',
|
||||
'Supplier Taxes', domain=[('parent_id', '=', False),('type_tax_use','in',['purchase','all'])]),
|
||||
'property_account_income': fields.property(
|
||||
'account.account',
|
||||
type='many2one',
|
||||
relation='account.account',
|
||||
string="Income Account",
|
||||
view_load=True,
|
||||
help="This account will be used for invoices instead of the default one to value sales for the current product."),
|
||||
'property_account_expense': fields.property(
|
||||
'account.account',
|
||||
type='many2one',
|
||||
relation='account.account',
|
||||
string="Expense Account",
|
||||
view_load=True,
|
||||
help="This account will be used for invoices instead of the default one to value expenses for the current product."),
|
||||
}
|
||||
|
||||
|
|
|
@ -366,12 +366,13 @@ class aged_trial_report(report_sxw.rml_parse, common_report_header):
|
|||
return period or 0.0
|
||||
|
||||
def _get_partners(self,data):
|
||||
# TODO: deprecated, to remove in trunk
|
||||
if data['form']['result_selection'] == 'customer':
|
||||
return 'Receivable Accounts'
|
||||
return self._translate('Receivable Accounts')
|
||||
elif data['form']['result_selection'] == 'supplier':
|
||||
return 'Payable Accounts'
|
||||
return self._translate('Payable Accounts')
|
||||
elif data['form']['result_selection'] == 'customer_supplier':
|
||||
return 'Receivable and Payable Accounts'
|
||||
return self._translate('Receivable and Payable Accounts')
|
||||
return ''
|
||||
|
||||
report_sxw.report_sxw('report.account.aged_trial_balance', 'res.partner',
|
||||
|
|
|
@ -147,7 +147,9 @@
|
|||
<para style="terp_default_Centre_8">[[ data['form']['period_length'] ]]</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Centre_8">[[ get_partners(data) ]]</para>
|
||||
<para style="terp_default_Centre_8">Receivable Accounts[[ data['form']['result_selection'] == 'customer' or removeParentNode('para') ]]</para>
|
||||
<para style="terp_default_Centre_8">Payable Accounts[[ data['form']['result_selection'] == 'supplier' or removeParentNode('para') ]]</para>
|
||||
<para style="terp_default_Centre_8">Receivable and Payable Accounts[[ data['form']['result_selection'] == 'customer_supplier' or removeParentNode('para') ]]</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Centre_8">[[ data['form']['direction_selection'] ]]</para>
|
||||
|
@ -166,7 +168,8 @@
|
|||
<para style="terp_tblheader_Details">Partners</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_tblheader_Details_Right">[[ data['form']['direction_selection'] == 'future' and 'Due' or 'Not due' ]]</para>
|
||||
<para style="terp_tblheader_Details_Right">Due[[ data['form']['direction_selection'] == 'future' and ' ' or removeParentNode('para') ]]</para>
|
||||
<para style="terp_tblheader_Details_Right">Not due[[ data['form']['direction_selection'] != 'future' and ' ' or removeParentNode('para') ]]</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_tblheader_Details_Right">[[ data['form']['4']['name'] ]]</para>
|
||||
|
|
|
@ -211,8 +211,10 @@
|
|||
</para>
|
||||
<blockTable colWidths="130.0,80.0,100.0,140.0,90.0" style="Table8">
|
||||
<tr>
|
||||
<td><para style="terp_tblheader_General_Centre">[[ data['model']=='account.account' and 'Company'or removeParentNode('para') ]]</para>
|
||||
<para style="terp_tblheader_General_Centre"> [[ data['model']=='ir.ui.menu' and 'Chart of Accounts' or removeParentNode('para') ]]</para></td>
|
||||
<td>
|
||||
<para style="terp_tblheader_General_Centre">Company[[ data['model']=='account.account' and ' ' or removeParentNode('para') ]]</para>
|
||||
<para style="terp_tblheader_General_Centre">Chart of Accounts[[ data['model']=='ir.ui.menu' and ' ' or removeParentNode('para') ]]</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_tblheader_General_Centre">Fiscal Year</para>
|
||||
</td>
|
||||
|
@ -233,7 +235,11 @@
|
|||
<td>
|
||||
<para style="terp_default_Centre_8">[[ get_fiscalyear(data) or '' ]]</para>
|
||||
</td>
|
||||
<td><para style="terp_default_Centre_8">[[ (data['form']['display_account']=='all' and 'All') or (data['form']['display_account']=='movement' and 'With movements') or 'With balance is not equal to 0']]</para></td>
|
||||
<td>
|
||||
<para style="terp_default_Centre_7">All[[ data['form']['display_account']=='all' and ' ' or removeParentNode('para') ]]</para>
|
||||
<para style="terp_default_Centre_7">With movements[[ data['form']['display_account']=='movement' and ' ' or removeParentNode('para') ]]</para>
|
||||
<para style="terp_default_Centre_7">With balance is not equal to 0[[ data['form']['display_account']=='not_zero' and ' ' or removeParentNode('para') ]]</para>
|
||||
</td>
|
||||
<td> <para style="terp_default_Centre_8">[[ data['form']['filter']=='filter_no' and get_filter(data) or removeParentNode('para') ]] </para>
|
||||
<blockTable colWidths="60.0,60.0" style="Table5">[[ data['form']['filter']=='filter_date' or removeParentNode('blockTable') ]]
|
||||
<tr>
|
||||
|
|
|
@ -220,8 +220,8 @@
|
|||
</blockTable>
|
||||
<blockTable colWidths="80.0,100,80.0,150.0,100.0" style="Table2">
|
||||
<tr>
|
||||
<td><para style="terp_tblheader_General_Centre">[[ data['model']=='account.journal.period' and 'Company' or removeParentNode('para') ]]</para>
|
||||
<para style="terp_tblheader_General_Centre"> [[ data['model']=='ir.ui.menu' and 'Chart of Accounts' or removeParentNode('para') ]]</para></td>
|
||||
<td><para style="terp_tblheader_General_Centre">Company[[ data['model']=='account.journal.period' and ' ' or removeParentNode('para') ]]</para>
|
||||
<para style="terp_tblheader_General_Centre">Chart of Accounts[[ data['model']=='ir.ui.menu' and ' ' or removeParentNode('para') ]]</para></td>
|
||||
<td><para style="terp_tblheader_General_Centre">Fiscal Year</para></td>
|
||||
<td><para style="terp_tblheader_General_Centre">Journals</para></td>
|
||||
<td><para style="terp_tblheader_General_Centre">Filter By [[ data['form']['filter']!='filter_no' and get_filter(data) ]]</para></td>
|
||||
|
|
|
@ -360,9 +360,8 @@
|
|||
<blockTable colWidths="110.0,110.0,110.0,110.0,128.0,93.0,110.0" style="Table1">
|
||||
<tr>
|
||||
<td>
|
||||
<para style="terp_tblheader_General_Centre">[[ data['model']=='account.account' and 'Company' or removeParentNode('para') ]]</para>
|
||||
<para style="terp_tblheader_General_Centre">[[ data['model']=='ir.ui.menu' and 'Chart of Accounts' or removeParentNode('para') ]]</para>
|
||||
</td>
|
||||
<para style="terp_tblheader_General_Centre">Company[[ data['model']=='account.account' and ' ' or removeParentNode('para') ]]</para>
|
||||
<para style="terp_tblheader_General_Centre">Chart of Accounts[[ data['model']=='ir.ui.menu' and ' ' or removeParentNode('para') ]]</para></td>
|
||||
<td>
|
||||
<para style="terp_tblheader_General_Centre">Fiscal Year</para>
|
||||
</td>
|
||||
|
@ -395,7 +394,9 @@
|
|||
<para style="terp_default_Centre_7">[[', '.join([ lt or '' for lt in get_journal(data) ]) ]]</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Centre_7">[[ (data['form']['display_account']=='all' and 'All') or (data['form']['display_account']=='movement' and 'With movements') or 'With balance is not equal to 0']]</para>
|
||||
<para style="terp_default_Centre_7">All[[ data['form']['display_account']=='all' and ' ' or removeParentNode('para') ]]</para>
|
||||
<para style="terp_default_Centre_7">With movements[[ data['form']['display_account']=='movement' and ' ' or removeParentNode('para') ]]</para>
|
||||
<para style="terp_default_Centre_7">With balance is not equal to 0[[ data['form']['display_account']=='not_zero' and ' ' or removeParentNode('para') ]]</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Centre_7">[[ data['form']['filter']=='filter_no' and get_filter(data) or removeParentNode('para') ]]</para>
|
||||
|
|
|
@ -189,11 +189,12 @@ class journal_print(report_sxw.rml_parse, common_report_header):
|
|||
return data['form']['amount_currency']
|
||||
|
||||
def _get_sortby(self, data):
|
||||
# TODO: deprecated, to remove in trunk
|
||||
if self.sort_selection == 'date':
|
||||
return 'Date'
|
||||
return self._translate('Date')
|
||||
elif self.sort_selection == 'ref':
|
||||
return 'Reference Number'
|
||||
return 'Date'
|
||||
return self._translate('Reference Number')
|
||||
return self._translate('Date')
|
||||
|
||||
report_sxw.report_sxw('report.account.journal.period.print', 'account.journal.period', 'addons/account/report/account_journal.rml', parser=journal_print, header='external')
|
||||
report_sxw.report_sxw('report.account.journal.period.print.sale.purchase', 'account.journal.period', 'addons/account/report/account_journal_sale_purchase.rml', parser=journal_print, header='external')
|
||||
|
|
|
@ -186,8 +186,8 @@
|
|||
</para>
|
||||
<blockTable colWidths="85.0,80.0,80.0,120.0,70.0,100.0" style="Table2">
|
||||
<tr>
|
||||
<td><para style="terp_tblheader_General_Centre"> [[ data['model']=='account.journal.period'and 'Company' or removeParentNode('para') ]]</para>
|
||||
<para style="terp_tblheader_General_Centre">[[ data['model']=='ir.ui.menu' and 'Chart of Accounts' or removeParentNode('para') ]]</para></td>
|
||||
<td><para style="terp_tblheader_General_Centre">Company[[ data['model']=='account.journal.period'and ' ' or removeParentNode('para') ]]</para>
|
||||
<para style="terp_tblheader_General_Centre">Chart of Accounts[[ data['model']=='ir.ui.menu' and ' ' or removeParentNode('para') ]]</para></td>
|
||||
<td><para style="terp_tblheader_General_Centre">Fiscal Year</para></td>
|
||||
<td><para style="terp_tblheader_General_Centre">Journal</para></td>
|
||||
<td><para style="terp_tblheader_General_Centre">Period</para></td>
|
||||
|
@ -199,8 +199,10 @@
|
|||
<td><para style="terp_default_Centre_8">[[ get_fiscalyear(data) or '' ]]</para></td>
|
||||
<td><para style="terp_default_Centre_8">[[ o.journal_id.name ]]</para></td>
|
||||
<td><para style="terp_default_Centre_8">[[ o.period_id.name ]] </para></td>
|
||||
<td><para style="terp_default_Centre_8">[[ get_sortby(data) ]]</para></td>
|
||||
<td><para style="terp_default_Centre_8">[[ get_target_move(data) ]] </para></td>
|
||||
<td>
|
||||
<para style="terp_default_Centre_8">Date[[ data['form'].get('sort_selection', 'date') == 'date' and ' ' or removeParentNode('para') ]]</para>
|
||||
<para style="terp_default_Centre_8">Reference Number[[ data['form'].get('sort_selection', 'date') == 'ref' and ' ' or removeParentNode('para') ]]</para>
|
||||
</td>
|
||||
</tr>
|
||||
</blockTable>
|
||||
<para style="P9">
|
||||
|
|
|
@ -267,12 +267,13 @@ class third_party_ledger(report_sxw.rml_parse, common_report_header):
|
|||
return result_tmp + result_init
|
||||
|
||||
def _get_partners(self):
|
||||
# TODO: deprecated, to remove in trunk
|
||||
if self.result_selection == 'customer':
|
||||
return 'Receivable Accounts'
|
||||
return _('Receivable Accounts')
|
||||
elif self.result_selection == 'supplier':
|
||||
return 'Payable Accounts'
|
||||
return _('Payable Accounts')
|
||||
elif self.result_selection == 'customer_supplier':
|
||||
return 'Receivable and Payable Accounts'
|
||||
return _('Receivable and Payable Accounts')
|
||||
return ''
|
||||
|
||||
def _sum_currency_amount_account(self, account, form):
|
||||
|
|
|
@ -423,7 +423,9 @@
|
|||
</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Centre_8">[[ get_partners() ]]</para>
|
||||
<para style="terp_default_Centre_8">Receivable Accounts[[ data['form'].get('result_selection', 'customer') == 'customer' or removeParentNode('para') ]]</para>
|
||||
<para style="terp_default_Centre_8">Payable Accounts[[ data['form'].get('result_selection', 'customer') == 'supplier' or removeParentNode('para') ]]</para>
|
||||
<para style="terp_default_Centre_8">Receivable and Payable Accounts[[ data['form'].get('result_selection', 'customer') == 'customer_supplier' or removeParentNode('para') ]]</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Centre_8">[[ get_target_move(data) ]]</para>
|
||||
|
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 33 KiB |
Before Width: | Height: | Size: 120 KiB After Width: | Height: | Size: 120 KiB |
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 143 KiB After Width: | Height: | Size: 143 KiB |
Before Width: | Height: | Size: 120 KiB After Width: | Height: | Size: 120 KiB |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
|
@ -84,7 +84,7 @@ openerp.account.quickadd = function (instance) {
|
|||
},
|
||||
search_by_journal_period: function() {
|
||||
var self = this;
|
||||
var domain = [];
|
||||
var domain = ['|',['debit', '!=', 0], ['credit', '!=', 0]];
|
||||
if (self.current_journal !== null) domain.push(["journal_id", "=", self.current_journal]);
|
||||
if (self.current_period !== null) domain.push(["period_id", "=", self.current_period]);
|
||||
self.last_context["journal_id"] = self.current_journal === null ? false : self.current_journal;
|
||||
|
|
|
@ -175,7 +175,7 @@ class account_common_report(osv.osv_memory):
|
|||
data['form'][field] = data['form'][field][0]
|
||||
used_context = self._build_contexts(cr, uid, ids, data, context=context)
|
||||
data['form']['periods'] = used_context.get('periods', False) and used_context['periods'] or []
|
||||
data['form']['used_context'] = used_context
|
||||
data['form']['used_context'] = dict(used_context, lang=context.get('lang', 'en_US'))
|
||||
return self._print_report(cr, uid, ids, data, context=context)
|
||||
|
||||
|
||||
|
|
Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 2.6 KiB |
|
@ -7,19 +7,19 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 6.0dev_rc3\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
|
||||
"PO-Revision-Date: 2013-05-31 07:35+0000\n"
|
||||
"PO-Revision-Date: 2013-06-19 13:43+0000\n"
|
||||
"Last-Translator: Chertykov Denis <chertykov@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-06-01 05:16+0000\n"
|
||||
"X-Generator: Launchpad (build 16660)\n"
|
||||
"X-Launchpad-Export-Date: 2013-06-20 05:17+0000\n"
|
||||
"X-Generator: Launchpad (build 16673)\n"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: view:account.analytic.account:0
|
||||
msgid "No order to invoice, create"
|
||||
msgstr ""
|
||||
msgstr "Нет заказа для счета, создать"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: view:account.analytic.account:0
|
||||
|
@ -39,7 +39,7 @@ msgstr "Остаётся"
|
|||
#. module: account_analytic_analysis
|
||||
#: view:account.analytic.account:0
|
||||
msgid "Contracts in progress"
|
||||
msgstr ""
|
||||
msgstr "Незавершенные контракты"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: help:account.analytic.account,last_worked_invoiced_date:0
|
||||
|
@ -88,7 +88,7 @@ msgstr "Дата последнего счета расходов"
|
|||
#. module: account_analytic_analysis
|
||||
#: help:account.analytic.account,fix_price_to_invoice:0
|
||||
msgid "Sum of quotations for this contract."
|
||||
msgstr ""
|
||||
msgstr "Сумма предложений по этому контракту."
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: help:account.analytic.account,ca_invoiced:0
|
||||
|
@ -98,18 +98,18 @@ msgstr "Итого сумма к оплате заказчику для этог
|
|||
#. module: account_analytic_analysis
|
||||
#: help:account.analytic.account,timesheet_ca_invoiced:0
|
||||
msgid "Sum of timesheet lines invoiced for this contract."
|
||||
msgstr ""
|
||||
msgstr "Сумма позиций табеля выставленная в счет за этот контракт ."
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: code:addons/account_analytic_analysis/account_analytic_analysis.py:466
|
||||
#: code:addons/account_analytic_analysis/account_analytic_analysis.py:464
|
||||
#, python-format
|
||||
msgid "Sales Order Lines of %s"
|
||||
msgstr ""
|
||||
msgstr "Позиции заказа продаж %s"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: help:account.analytic.account,revenue_per_hour:0
|
||||
msgid "Computed using the formula: Invoiced Amount / Total Time"
|
||||
msgstr ""
|
||||
msgstr "Рассчитанный по формуле: Сумма по счетам / Итоговое время"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account_analytic_analysis.summary.month,account_id:0
|
||||
|
@ -126,7 +126,7 @@ msgstr "Партнёр"
|
|||
#. module: account_analytic_analysis
|
||||
#: view:account.analytic.account:0
|
||||
msgid "Contracts that are not assigned to an account manager."
|
||||
msgstr ""
|
||||
msgstr "Контракты, которые не назначены бухгалтеру."
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: model:ir.actions.act_window,help:account_analytic_analysis.action_account_analytic_overdue
|
||||
|
@ -161,6 +161,7 @@ msgstr "Управляющий счётом"
|
|||
#: help:account.analytic.account,remaining_hours_to_invoice:0
|
||||
msgid "Computed using the formula: Maximum Time - Total Invoiced Time"
|
||||
msgstr ""
|
||||
"Рассчитанный по формуле: Максимальное время - Всё время выставленное в счетах"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: view:account.analytic.account:0
|
||||
|
@ -170,12 +171,12 @@ msgstr "Ожидается"
|
|||
#. module: account_analytic_analysis
|
||||
#: view:account.analytic.account:0
|
||||
msgid "Contracts not assigned"
|
||||
msgstr ""
|
||||
msgstr "Контракты не назначены"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: help:account.analytic.account,theorical_margin:0
|
||||
msgid "Computed using the formula: Theoretical Revenue - Total Costs"
|
||||
msgstr ""
|
||||
msgstr "Рассчитанный по формуле: теоретическая выручка - общие издержки"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,hours_qtt_invoiced:0
|
||||
|
@ -219,17 +220,17 @@ msgstr ""
|
|||
#. module: account_analytic_analysis
|
||||
#: view:account.analytic.account:0
|
||||
msgid "Nothing to invoice, create"
|
||||
msgstr ""
|
||||
msgstr "Нечего выставить в счете, создать"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: model:res.groups,name:account_analytic_analysis.group_template_required
|
||||
msgid "Mandatory use of templates in contracts"
|
||||
msgstr ""
|
||||
msgstr "Обязательное использование шаблонов в контрактах"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,hours_quantity:0
|
||||
msgid "Total Worked Time"
|
||||
msgstr ""
|
||||
msgstr "Всё отработанное время"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,real_margin:0
|
||||
|
@ -249,12 +250,12 @@ msgstr "Вычисляется по формуле: (Реальная маржа
|
|||
#. module: account_analytic_analysis
|
||||
#: view:account.analytic.account:0
|
||||
msgid "or view"
|
||||
msgstr ""
|
||||
msgstr "или вид"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: view:account.analytic.account:0
|
||||
msgid "Customer Contracts"
|
||||
msgstr ""
|
||||
msgstr "Контакты заказчика"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: view:account.analytic.account:0
|
||||
|
@ -271,7 +272,7 @@ msgstr "Месяц"
|
|||
#: 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
|
||||
msgid "Time & Materials to Invoice"
|
||||
msgstr ""
|
||||
msgstr "Время и материалы в счет"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: view:account.analytic.account:0
|
||||
|
@ -343,9 +344,10 @@ msgstr "К продлению"
|
|||
#: view:account.analytic.account:0
|
||||
msgid ""
|
||||
"A contract in OpenERP is an analytic account having a partner set on it."
|
||||
msgstr ""
|
||||
msgstr "Контракт в OpenERP это аналитический счет с установленным партнером."
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: view:account.analytic.account:0
|
||||
#: model:ir.actions.act_window,name:account_analytic_analysis.action_sales_order
|
||||
msgid "Sales Orders"
|
||||
msgstr "Заказы продаж"
|
||||
|
@ -412,7 +414,7 @@ msgstr ""
|
|||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,revenue_per_hour:0
|
||||
msgid "Revenue per Time (real)"
|
||||
msgstr ""
|
||||
msgstr "Выручка за время (реальная)"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: model:ir.actions.act_window,help:account_analytic_analysis.action_account_analytic_overdue_all
|
||||
|
@ -578,7 +580,7 @@ msgstr ""
|
|||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,est_total:0
|
||||
msgid "Total Estimation"
|
||||
msgstr ""
|
||||
msgstr "Общая оценка"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,remaining_ca:0
|
||||
|
|
|
@ -248,9 +248,12 @@
|
|||
<field name="model">account.analytic.default</field>
|
||||
<field name="inherit_id" ref="account_analytic_default.view_account_analytic_default_tree"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="analytic_id" required="1" position="replace">
|
||||
<xpath expr="//field[@name='analytic_id']" position="attributes">
|
||||
<attribute name="invisible">1</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='analytic_id']" position="after">
|
||||
<field name="analytics_id" required="1"/>
|
||||
</field>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
|
|
@ -43,7 +43,8 @@ account.""",
|
|||
'depends': ['product', 'purchase'],
|
||||
'category': 'Accounting & Finance',
|
||||
'demo': [],
|
||||
'data': ['product_view.xml',],
|
||||
'data': ['product_view.xml'],
|
||||
'test': ['test/anglo_saxon.yml', 'test/anglo_saxon_avg_fifo.yml'],
|
||||
'auto_install': False,
|
||||
'installable': True,
|
||||
}
|
||||
|
|
|
@ -117,21 +117,27 @@ class account_invoice_line(osv.osv):
|
|||
for line in res:
|
||||
if a == line['account_id'] and i_line.product_id.id == line['product_id']:
|
||||
uom = i_line.product_id.uos_id or i_line.product_id.uom_id
|
||||
standard_price = self.pool.get('product.uom')._compute_price(cr, uid, uom.id, i_line.product_id.standard_price, i_line.uos_id.id)
|
||||
if standard_price != i_line.price_unit and line['price_unit'] == i_line.price_unit and acc:
|
||||
price_diff = i_line.price_unit - standard_price
|
||||
line.update({'price':standard_price * line['quantity']})
|
||||
valuation_price_unit = self.pool.get('product.uom')._compute_price(cr, uid, uom.id, i_line.product_id.standard_price, i_line.uos_id.id)
|
||||
if i_line.product_id.cost_method != 'standard' and i_line.purchase_line_id:
|
||||
#for average/fifo/lifo costing method, fetch real cost price from incomming moves
|
||||
stock_move_obj = self.pool.get('stock.move')
|
||||
valuation_stock_move = stock_move_obj.search(cr, uid, [('purchase_line_id', '=', i_line.purchase_line_id.id)], limit=1, context=context)
|
||||
if valuation_stock_move:
|
||||
valuation_price_unit = stock_move_obj.browse(cr, uid, valuation_stock_move[0], context=context).price_unit
|
||||
if valuation_price_unit != i_line.price_unit and line['price_unit'] == i_line.price_unit and acc:
|
||||
price_diff = i_line.price_unit - valuation_price_unit
|
||||
line.update({'price': valuation_price_unit * line['quantity']})
|
||||
diff_res.append({
|
||||
'type':'src',
|
||||
'type': 'src',
|
||||
'name': i_line.name[:64],
|
||||
'price_unit':price_diff,
|
||||
'quantity':line['quantity'],
|
||||
'price_unit': price_diff,
|
||||
'quantity': line['quantity'],
|
||||
'price': price_diff * line['quantity'],
|
||||
'account_id':acc,
|
||||
'product_id':line['product_id'],
|
||||
'uos_id':line['uos_id'],
|
||||
'account_analytic_id':line['account_analytic_id'],
|
||||
'taxes':line.get('taxes',[]),
|
||||
'account_id': acc,
|
||||
'product_id': line['product_id'],
|
||||
'uos_id': line['uos_id'],
|
||||
'account_analytic_id': line['account_analytic_id'],
|
||||
'taxes': line.get('taxes', []),
|
||||
})
|
||||
res += diff_res
|
||||
return res
|
||||
|
|
|
@ -24,27 +24,21 @@ class product_category(osv.osv):
|
|||
_inherit = "product.category"
|
||||
_columns = {
|
||||
'property_account_creditor_price_difference_categ': fields.property(
|
||||
'account.account',
|
||||
type='many2one',
|
||||
relation='account.account',
|
||||
string="Price Difference Account",
|
||||
view_load=True,
|
||||
help="This account will be used to value price difference between purchase price and cost price."),
|
||||
|
||||
#Redefine fields to change help text for anglo saxon methodology.
|
||||
'property_account_income_categ': fields.property(
|
||||
'account.account',
|
||||
type='many2one',
|
||||
relation='account.account',
|
||||
string="Income Account",
|
||||
view_load=True,
|
||||
help="This account will be used to value outgoing stock using sale price."),
|
||||
'property_account_expense_categ': fields.property(
|
||||
'account.account',
|
||||
type='many2one',
|
||||
relation='account.account',
|
||||
string="Expense Account",
|
||||
view_load=True,
|
||||
help="This account will be used to value outgoing stock using cost price."),
|
||||
|
||||
}
|
||||
|
@ -53,27 +47,21 @@ class product_template(osv.osv):
|
|||
_inherit = "product.template"
|
||||
_columns = {
|
||||
'property_account_creditor_price_difference': fields.property(
|
||||
'account.account',
|
||||
type='many2one',
|
||||
relation='account.account',
|
||||
string="Price Difference Account",
|
||||
view_load=True,
|
||||
help="This account will be used to value price difference between purchase price and cost price."),
|
||||
|
||||
#Redefine fields to change help text for anglo saxon methodology.
|
||||
'property_account_income': fields.property(
|
||||
'account.account',
|
||||
type='many2one',
|
||||
relation='account.account',
|
||||
string="Income Account",
|
||||
view_load=True,
|
||||
help="This account will be used to value outgoing stock using sale price."),
|
||||
'property_account_expense': fields.property(
|
||||
'account.account',
|
||||
type='many2one',
|
||||
relation='account.account',
|
||||
string="Expense Account",
|
||||
view_load=True,
|
||||
help="This account will be used to value outgoing stock using cost price."),
|
||||
|
||||
}
|
||||
|
|
|
@ -26,16 +26,15 @@ class purchase_order(osv.osv):
|
|||
_inherit = "purchase.order"
|
||||
_description = "Purchase Order"
|
||||
|
||||
def _prepare_inv_line(self, cr, uid, account_id, order_line, context=None):
|
||||
line = super(purchase_order, self)._prepare_inv_line(cr, uid, account_id, order_line, context=context)
|
||||
def _choose_account_from_po_line(self, cr, uid, order_line, context=None):
|
||||
account_id = super(purchase_order, self)._choose_account_from_po_line(cr, uid, order_line, context=context)
|
||||
if order_line.product_id and not order_line.product_id.type == 'service':
|
||||
acc_id = order_line.product_id.property_stock_account_input and order_line.product_id.property_stock_account_input.id
|
||||
if not acc_id:
|
||||
acc_id = order_line.product_id.categ_id.property_stock_account_input_categ and order_line.product_id.categ_id.property_stock_account_input_categ.id
|
||||
if acc_id:
|
||||
fpos = order_line.order_id.fiscal_position or False
|
||||
new_account_id = self.pool.get('account.fiscal.position').map_account(cr, uid, fpos, acc_id)
|
||||
line.update({'account_id': new_account_id})
|
||||
return line
|
||||
account_id = self.pool.get('account.fiscal.position').map_account(cr, uid, fpos, acc_id)
|
||||
return account_id
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -0,0 +1,299 @@
|
|||
-
|
||||
In order to test anglo_saxon Configure Different Accounts.
|
||||
-
|
||||
!record {model: account.account, id: account_anglo_stock_valuation}:
|
||||
code: X3000
|
||||
name: Stock Valuation Account- (test)
|
||||
parent_id: account.cas
|
||||
type: other
|
||||
user_type: account.data_account_type_asset
|
||||
-
|
||||
Configure Stock Interim account (Received).
|
||||
-
|
||||
!record {model: account.account, id: account_anglo_stock_input}:
|
||||
code: X2800
|
||||
name: Stock Interim account (Received)
|
||||
parent_id: account.cos
|
||||
type: other
|
||||
user_type: account.data_account_type_expense
|
||||
-
|
||||
Configure Stock Interim account (Delivered).
|
||||
-
|
||||
!record {model: account.account, id: account_anglo_stock_output}:
|
||||
code: X2801
|
||||
name: Stock Interim account (Delivered)
|
||||
parent_id: account.rev
|
||||
type: other
|
||||
user_type: account.data_account_type_income
|
||||
-
|
||||
Configure Price difference creditor Account.
|
||||
-
|
||||
!record {model: account.account, id: account_anglo_price_difference}:
|
||||
code: X7095
|
||||
name: Price difference creditor Account
|
||||
parent_id: account.cos
|
||||
type: other
|
||||
user_type: account.data_account_type_expense
|
||||
-
|
||||
Configure Cash Bank Account.
|
||||
-
|
||||
!record {model: account.account, id: account_anglo_cash}:
|
||||
code: X5000
|
||||
name: Cash/Bank Account
|
||||
parent_id: account.cash
|
||||
type: other
|
||||
user_type: account.data_account_type_asset
|
||||
-
|
||||
Configure Creditor Account Payable.
|
||||
-
|
||||
!record {model: account.account, id: account_anglo_payable}:
|
||||
code: X440001
|
||||
name: Creditor Account Payable
|
||||
parent_id: account.a_pay
|
||||
type: other
|
||||
user_type: account.data_account_type_payable
|
||||
-
|
||||
Configure Debtor Account Receivable.
|
||||
-
|
||||
!record {model: account.account, id: account_anglo_receivable}:
|
||||
code: X400001
|
||||
name: Debtor Account Receivable
|
||||
parent_id: account.a_recv
|
||||
type: other
|
||||
user_type: account.data_account_type_receivable
|
||||
-
|
||||
Configure Cost of Good sale Account.
|
||||
-
|
||||
!record {model: account.account, id: account_anglo_cogs}:
|
||||
code: X7000
|
||||
name: Cost of goods sale account
|
||||
parent_id: account.o_expense
|
||||
type: other
|
||||
user_type: account.data_account_type_expense
|
||||
-
|
||||
Configure Income Account.
|
||||
-
|
||||
!record {model: account.account, id: account_anglo_income}:
|
||||
code: X8000
|
||||
name: Income Account
|
||||
parent_id: account.o_income
|
||||
type: other
|
||||
user_type: account.data_account_type_income
|
||||
-
|
||||
I configure the account receivable of supplier
|
||||
-
|
||||
!record {model: res.partner, id: base.res_partner_3}:
|
||||
property_account_payable: account_anglo_payable
|
||||
property_account_receivable: account_anglo_receivable
|
||||
-
|
||||
I configure the account receivable of Customer.
|
||||
-
|
||||
!record {model: res.partner, id: base.res_partner_13}:
|
||||
property_account_payable: account_anglo_payable
|
||||
property_account_receivable: account_anglo_receivable
|
||||
-
|
||||
I configure the product category with stock valuation account.
|
||||
-
|
||||
!record {model: product.category, id: product.product_category_4}:
|
||||
property_stock_valuation_account_id: account_anglo_stock_valuation
|
||||
-
|
||||
I configure the product with required accounts, and cost method = standard
|
||||
-
|
||||
!python {model: product.product}: |
|
||||
self.write(cr, uid, [ref('product.product_product_3')], {'list_price': 20.00,'standard_price': 9,'categ_id': ref('product.product_category_4'),'valuation': 'real_time',
|
||||
'property_account_income': ref('account_anglo_income'),'property_account_expense': ref('account_anglo_cogs'),
|
||||
'property_account_creditor_price_difference': ref('account_anglo_price_difference'),'property_stock_account_input': ref('account_anglo_stock_input'),
|
||||
'property_stock_account_output': ref('account_anglo_stock_output'), 'cost_method': 'standard'})
|
||||
-
|
||||
I create a draft Purchase Order.
|
||||
-
|
||||
!record {model: purchase.order, id: purchase_order_001}:
|
||||
partner_id: base.res_partner_3
|
||||
location_id: stock.stock_location_stock
|
||||
pricelist_id: 1
|
||||
order_line:
|
||||
- product_id: product.product_product_3
|
||||
product_qty: 1
|
||||
price_unit: 10
|
||||
date_planned: '2013-08-31'
|
||||
-
|
||||
I confirm the purchase order.
|
||||
-
|
||||
!workflow {model: purchase.order, ref: purchase_order_001, action: purchase_confirm}
|
||||
-
|
||||
Reception is ready for process so now done the reception.
|
||||
-
|
||||
!python {model: stock.partial.picking}: |
|
||||
pick_ids = self.pool.get('purchase.order').browse(cr, uid, ref("purchase_order_001")).picking_ids
|
||||
partial_id = self.create(cr, uid, {},context={'active_model': 'stock.picking','active_ids': [pick_ids[0].id]})
|
||||
self.do_partial(cr, uid, [partial_id])
|
||||
-
|
||||
I check the Stock Interim account (Received) is credited successfully.
|
||||
-
|
||||
!assert {model: account.account, id : account_anglo_stock_input, string : Stock Interim account (Received) is not credited successfully.}:
|
||||
- credit == 9
|
||||
-
|
||||
I check the Stock valuation account is debited sucessfully.
|
||||
-
|
||||
!assert {model: account.account, id : account_anglo_stock_valuation, string : Stock valuation account is not debited successfully.}:
|
||||
- debit == 9
|
||||
-
|
||||
I Validate Invoice of Purchase Order.
|
||||
-
|
||||
!python {model: purchase.order}: |
|
||||
invoice_ids = [x.id for x in self.browse(cr, uid, ref("purchase_order_001")).invoice_ids]
|
||||
self.pool.get('account.invoice').signal_invoice_open(cr, uid, invoice_ids)
|
||||
-
|
||||
I check the Stock Interim account (Received) is debited sucessfully when Invoice validated.
|
||||
-
|
||||
!assert {model: account.account, id : account_anglo_stock_input, string : Stock Interim account (Received) is not debited successfully.}:
|
||||
- debit == 9
|
||||
-
|
||||
I check the Price difference creditor Account is debited sucessfully when Invoice validated.
|
||||
-
|
||||
!assert {model: account.account, id : account_anglo_price_difference, string : Price difference creditor Account is not debited successfully.}:
|
||||
- debit == 1
|
||||
-
|
||||
I check Payable(creditor) Account is Credited sucessfully when Invoice validated.
|
||||
-
|
||||
!assert {model: account.account, id : account_anglo_payable, string : Payable(creditor) Account is not Credited successfully.}:
|
||||
- credit == 10
|
||||
-
|
||||
I open the Invoice.
|
||||
-
|
||||
!python {model: purchase.order}: |
|
||||
po = self.browse(cr, uid, ref("purchase_order_001"))
|
||||
for invoice in po.invoice_ids:
|
||||
self.pool.get('account.invoice').signal_invoice_open(cr, uid, [invoice.id])
|
||||
-
|
||||
I pay the invoice.
|
||||
-
|
||||
!python {model: purchase.order}: |
|
||||
invoice_ids = self.browse(cr, uid, ref("purchase_order_001")).invoice_ids
|
||||
order = self.browse(cr, uid, ref("purchase_order_001"))
|
||||
journal_ids = self.pool.get('account.journal').search(cr, uid, [('type', '=', 'cash'), ('company_id', '=', order.company_id.id)], limit=1)
|
||||
for invoice in invoice_ids:
|
||||
invoice.pay_and_reconcile(invoice.amount_total, ref('account_anglo_cash'), ref('account.period_8'), journal_ids[0], ref('account_anglo_cash'), ref('account.period_8'), journal_ids[0], name='test')
|
||||
-
|
||||
I check Payable(Creditors) Account is Debited sucessfully after invoice paid.
|
||||
-
|
||||
!assert {model: account.account, id : account_anglo_payable, string : Payable(Creditors) Account is not Debited successfully.}:
|
||||
- debit == 10
|
||||
-
|
||||
I check Bank/Cash account is credited sucessfully after invoice paid.
|
||||
-
|
||||
!assert {model: account.account, id : account_anglo_cash, string: Bank/Cash account is not credited successfully.}:
|
||||
- credit == 10
|
||||
-
|
||||
I create an Outgoing Picking order
|
||||
-
|
||||
!record {model: stock.picking, id: stock_picking_out001}:
|
||||
partner_id: base.res_partner_13
|
||||
invoice_state: 2binvoiced
|
||||
move_lines:
|
||||
- company_id: base.main_company
|
||||
location_id: stock.stock_location_stock
|
||||
product_id: product.product_product_3
|
||||
product_qty: 1.0
|
||||
product_uom: product.product_uom_unit
|
||||
location_dest_id: stock.stock_location_customers
|
||||
move_type: direct
|
||||
type: out
|
||||
-
|
||||
I need to check the availability of the product, So I make my picking order for processing later.
|
||||
-
|
||||
!python {model: stock.picking}: |
|
||||
self.draft_force_assign(cr, uid, [ref("stock_picking_out001")], {"lang": "en_US", "search_default_available":
|
||||
1, "tz": False, "active_model": "ir.ui.menu", "contact_display": "partner",
|
||||
"active_ids": [ref("stock.menu_action_picking_tree")], "active_id": ref("stock.menu_action_picking_tree"),
|
||||
})
|
||||
-
|
||||
I check the product availability, Product is available in the stock and ready to be sent.
|
||||
-
|
||||
!python {model: stock.picking}: |
|
||||
self.action_assign(cr, uid, [ref("stock_picking_out001")], {"lang": "en_US", "search_default_available":
|
||||
1, "tz": False, "active_model": "ir.ui.menu", "contact_display": "partner",
|
||||
"active_ids": [ref("stock.menu_action_picking_tree")], "active_id": ref("stock.menu_action_picking_tree"),
|
||||
})
|
||||
-
|
||||
I process the delivery.
|
||||
-
|
||||
!python {model: stock.partial.picking}: |
|
||||
partial_id = self.create(cr, uid, {}, context={'active_model':'stock.picking','active_ids':[ref('stock_picking_out001')]})
|
||||
self.do_partial(cr, uid, [partial_id])
|
||||
-
|
||||
I check Stock Interim account (Delivery) is debited successfully.
|
||||
-
|
||||
!assert {model: account.account, id : account_anglo_stock_output, string : Stock Interim account (Delivery) is not debited successfully.}:
|
||||
- debit == 9
|
||||
-
|
||||
I check the Stock valuation account is credited sucessfully.
|
||||
-
|
||||
!assert {model: account.account, id : account_anglo_stock_valuation, string : Stock valuation account is not credited successfully.}:
|
||||
- credit == 9
|
||||
-
|
||||
As the Invoice state of the picking order is To be invoiced. I create invoice for my outgoing picking order.
|
||||
-
|
||||
!python {model: stock.invoice.onshipping}: |
|
||||
wiz_id = self.create(cr, uid, {'invoice_date': '2013-03-04', 'journal_id': ref('account.sales_journal')},
|
||||
{'active_ids': [ref("stock_picking_out001")], "active_model": "stock.picking"})
|
||||
self.create_invoice(cr, uid, [wiz_id], {"lang": "en_US",
|
||||
"search_default_available": 1, "tz": False, "active_model": "stock.picking",
|
||||
"contact_display": "partner", "active_ids": [ref("stock_picking_out001")], "active_id": ref("stock_picking_out001")})
|
||||
-
|
||||
I check that the customer invoice is created successfully.
|
||||
-
|
||||
!python {model: account.invoice}: |
|
||||
partner_id = self.pool.get('stock.picking').browse(cr, uid, ref('stock_picking_out001')).partner_id.id
|
||||
inv_ids = self.search(cr, uid, [('type','=','out_invoice'),('partner_id','=',partner_id)])
|
||||
assert inv_ids, 'No Invoice is generated!'
|
||||
-
|
||||
I open the Invoice.
|
||||
-
|
||||
!python {model: stock.picking}: |
|
||||
move_name = self.pool.get('stock.picking').browse(cr, uid, ref('stock_picking_out001')).name
|
||||
account_invoice = self.pool.get('account.invoice').search(cr, uid, [('origin', '=', move_name)])
|
||||
self.pool.get('account.invoice').signal_invoice_open(cr, uid, account_invoice)
|
||||
-
|
||||
I check Income Account is Credited sucessfully when Invoice validated.
|
||||
-
|
||||
!assert {model: account.account, id : account_anglo_income, string : Income Account is not Credited successfully.}:
|
||||
- credit == 20
|
||||
-
|
||||
I check Cost of goods sold account for debit.
|
||||
-
|
||||
!assert {model: account.account, id : account_anglo_cogs, string : Cost of goods sale is not Debited successfully.}:
|
||||
- debit == 9
|
||||
-
|
||||
I check Stock Interim account (Delivery)
|
||||
-
|
||||
!assert {model: account.account, id : account_anglo_stock_output, string : Stock Interim account (Delivery) is not credited successfully.}:
|
||||
- credit == 9
|
||||
-
|
||||
I check Receivable(Debtor) Account for debit.
|
||||
-
|
||||
!assert {model: account.account, id : account_anglo_receivable, string : Receivable(Debtors) Account is not Debited successfully.}:
|
||||
- debit == 20
|
||||
-
|
||||
I pay the invoice.
|
||||
-
|
||||
!python {model: account.invoice}: |
|
||||
move_name = self.pool.get('stock.picking').browse(cr, uid, ref('stock_picking_out001')).name
|
||||
account_invoice= self.pool.get('account.invoice').search(cr, uid, [('origin', '=', move_name)])
|
||||
journal_ids = self.pool.get('account.journal').search(cr, uid, [('type', '=', 'cash')], limit=1)
|
||||
pay = self.pay_and_reconcile(cr, uid, account_invoice,
|
||||
20.0, ref('account_anglo_cash'), ref('account.period_8'),
|
||||
journal_ids[0], ref('account_anglo_cash'),
|
||||
ref('account.period_8'), journal_ids[0],
|
||||
name='Payment for test customer invoice')
|
||||
assert (pay == True), "Incorrect Payment."
|
||||
-
|
||||
I check Receivable(Debtor) Account for credit.
|
||||
-
|
||||
!assert {model: account.account, id : account_anglo_receivable, string : Receivable(Debtors) Account is not Credited successfully.}:
|
||||
- credit == 20
|
||||
-
|
||||
I check Bank/Cash account is debited sucessfully after invoice paid.
|
||||
-
|
||||
!assert {model: account.account, id : account_anglo_cash, string: Bank/Cash account is not successfully credited.}:
|
||||
- debit == 20
|
|
@ -0,0 +1,304 @@
|
|||
-
|
||||
In order to test anglo_saxon Configure Different Accounts.
|
||||
-
|
||||
!record {model: account.account, id: account_anglo_stock_valuation_fifo}:
|
||||
code: X3000f
|
||||
name: Stock Valuation Account- (test)
|
||||
parent_id: account.cas
|
||||
type: other
|
||||
user_type: account.data_account_type_asset
|
||||
-
|
||||
Configure Stock Interim account (Received).
|
||||
-
|
||||
!record {model: account.account, id: account_anglo_stock_input_fifo}:
|
||||
code: X2800f
|
||||
name: Stock Interim account (Received)
|
||||
parent_id: account.cos
|
||||
type: other
|
||||
user_type: account.data_account_type_expense
|
||||
-
|
||||
Configure Stock Interim account (Delivered).
|
||||
-
|
||||
!record {model: account.account, id: account_anglo_stock_output_fifo}:
|
||||
code: X2801f
|
||||
name: Stock Interim account (Delivered)
|
||||
parent_id: account.rev
|
||||
type: other
|
||||
user_type: account.data_account_type_income
|
||||
-
|
||||
Configure Price difference creditor Account.
|
||||
-
|
||||
!record {model: account.account, id: account_anglo_price_difference_fifo}:
|
||||
code: X7095f
|
||||
name: Price difference creditor Account
|
||||
parent_id: account.cos
|
||||
type: other
|
||||
user_type: account.data_account_type_expense
|
||||
-
|
||||
Configure Cash Bank Account.
|
||||
-
|
||||
!record {model: account.account, id: account_anglo_cash_fifo}:
|
||||
code: X5000f
|
||||
name: Cash/Bank Account
|
||||
parent_id: account.cash
|
||||
type: other
|
||||
user_type: account.data_account_type_asset
|
||||
-
|
||||
Configure Creditor Account Payable.
|
||||
-
|
||||
!record {model: account.account, id: account_anglo_payable_fifo}:
|
||||
code: X440001f
|
||||
name: Creditor Account Payable
|
||||
parent_id: account.a_pay
|
||||
type: other
|
||||
user_type: account.data_account_type_payable
|
||||
-
|
||||
Configure Debtor Account Receivable.
|
||||
-
|
||||
!record {model: account.account, id: account_anglo_receivable_fifo}:
|
||||
code: X400001f
|
||||
name: Debtor Account Receivable
|
||||
parent_id: account.a_recv
|
||||
type: other
|
||||
user_type: account.data_account_type_receivable
|
||||
-
|
||||
Configure Cost of Good sale Account.
|
||||
-
|
||||
!record {model: account.account, id: account_anglo_cogs_fifo}:
|
||||
code: X7000f
|
||||
name: Cost of goods sale account
|
||||
parent_id: account.o_expense
|
||||
type: other
|
||||
user_type: account.data_account_type_expense
|
||||
-
|
||||
Configure Income Account.
|
||||
-
|
||||
!record {model: account.account, id: account_anglo_income_fifo}:
|
||||
code: X8000f
|
||||
name: Income Account
|
||||
parent_id: account.o_income
|
||||
type: other
|
||||
user_type: account.data_account_type_income
|
||||
-
|
||||
I configure the account receivable of supplier
|
||||
-
|
||||
!record {model: res.partner, id: base.res_partner_3}:
|
||||
property_account_payable: account_anglo_payable_fifo
|
||||
property_account_receivable: account_anglo_receivable_fifo
|
||||
-
|
||||
I configure the account receivable of Customer.
|
||||
-
|
||||
!record {model: res.partner, id: base.res_partner_13}:
|
||||
property_account_payable: account_anglo_payable_fifo
|
||||
property_account_receivable: account_anglo_receivable_fifo
|
||||
-
|
||||
I configure the product category with stock valuation account.
|
||||
-
|
||||
!record {model: product.category, id: product.product_category_4}:
|
||||
property_stock_valuation_account_id: account_anglo_stock_valuation_fifo
|
||||
-
|
||||
I create a product with required accounts, and cost method average (but same applies for fifo)
|
||||
-
|
||||
!record {model: product.product, id: product_fifo_anglo_saxon}:
|
||||
name: 'FIFO product for anglo saxon tests'
|
||||
list_price: 20.00
|
||||
standard_price: 0
|
||||
categ_id: product.product_category_4
|
||||
valuation: 'real_time'
|
||||
property_account_income: account_anglo_income_fifo
|
||||
property_account_expense: account_anglo_cogs_fifo
|
||||
property_account_creditor_price_difference: account_anglo_price_difference_fifo
|
||||
property_stock_account_input: account_anglo_stock_input_fifo
|
||||
property_stock_account_output: account_anglo_stock_output_fifo
|
||||
cost_method: 'average'
|
||||
-
|
||||
I create a draft Purchase Order.
|
||||
-
|
||||
!record {model: purchase.order, id: purchase_order_001_fifo}:
|
||||
partner_id: base.res_partner_3
|
||||
location_id: stock.stock_location_stock
|
||||
pricelist_id: 1
|
||||
order_line:
|
||||
- product_id: product_fifo_anglo_saxon
|
||||
product_qty: 1
|
||||
price_unit: 9
|
||||
date_planned: '2013-08-31'
|
||||
taxes_id: []
|
||||
-
|
||||
I confirm the purchase order.
|
||||
-
|
||||
!workflow {model: purchase.order, ref: purchase_order_001_fifo, action: purchase_confirm}
|
||||
-
|
||||
Reception is ready for process so now done the reception.
|
||||
-
|
||||
!python {model: stock.partial.picking}: |
|
||||
pick_ids = self.pool.get('purchase.order').browse(cr, uid, ref("purchase_order_001_fifo")).picking_ids
|
||||
partial_id = self.create(cr, uid, {},context={'active_model': 'stock.picking','active_ids': [pick_ids[0].id]})
|
||||
self.do_partial(cr, uid, [partial_id])
|
||||
-
|
||||
I check the Stock Interim account (Received) is credit successfully.
|
||||
-
|
||||
!assert {model: account.account, id : account_anglo_stock_input_fifo, string : Stock Interim account (Received) is not credited successfully.}:
|
||||
- credit == 9
|
||||
-
|
||||
I check the Stock valuation account is debit sucessfully.
|
||||
-
|
||||
!assert {model: account.account, id : account_anglo_stock_valuation_fifo, string : Stock valuation account is not debited successfully.}:
|
||||
- debit == 9
|
||||
-
|
||||
I Validate Invoice of Purchase Order after having changed the price to 10.
|
||||
-
|
||||
!python {model: purchase.order}: |
|
||||
invoice_ids = [x.id for x in self.browse(cr, uid, ref("purchase_order_001_fifo")).invoice_ids]
|
||||
line_ids = self.pool.get('account.invoice.line').search(cr, uid, [('invoice_id', 'in', invoice_ids)])
|
||||
self.pool.get('account.invoice.line').write(cr, uid, line_ids, {'price_unit': 10})
|
||||
self.pool.get('account.invoice').signal_invoice_open(cr, uid, invoice_ids)
|
||||
-
|
||||
I check the Stock Interim account (Received) is debited sucessfully when Invoice validated.
|
||||
-
|
||||
!assert {model: account.account, id : account_anglo_stock_input_fifo, string : Stock Interim account (Received) is not debited successfully.}:
|
||||
- debit == 9
|
||||
-
|
||||
I check the Price difference creditor Account is debited sucessfully when Invoice validated.
|
||||
-
|
||||
!assert {model: account.account, id : account_anglo_price_difference_fifo, string : Price difference creditor Account is not debited successfully.}:
|
||||
- debit == 1
|
||||
-
|
||||
I check Payable(creditor) Account is Credited sucessfully when Invoice validated.
|
||||
-
|
||||
!assert {model: account.account, id : account_anglo_payable_fifo, string : Payable(creditor) Account is not Credited successfully.}:
|
||||
- credit == 10
|
||||
-
|
||||
I pay the invoice.
|
||||
-
|
||||
!python {model: purchase.order}: |
|
||||
invoice_ids = self.browse(cr, uid, ref("purchase_order_001_fifo")).invoice_ids
|
||||
order = self.browse(cr, uid, ref("purchase_order_001_fifo"))
|
||||
journal_ids = self.pool.get('account.journal').search(cr, uid, [('type', '=', 'cash'), ('company_id', '=', order.company_id.id)], limit=1)
|
||||
for invoice in invoice_ids:
|
||||
invoice.pay_and_reconcile(invoice.amount_total, ref('account_anglo_cash_fifo'), ref('account.period_8'), journal_ids[0], ref('account_anglo_cash_fifo'), ref('account.period_8'), journal_ids[0], name='test')
|
||||
-
|
||||
I check Payable(Creditors) Account is Debited sucessfully after invoice paid.
|
||||
-
|
||||
!assert {model: account.account, id : account_anglo_payable_fifo, string : Payable(Creditors) Account is not Debited successfully.}:
|
||||
- debit == 10
|
||||
-
|
||||
I check Bank/Cash account is credited sucessfully after invoice paid.
|
||||
-
|
||||
!assert {model: account.account, id : account_anglo_cash_fifo, string: Bank/Cash account is not credited successfully.}:
|
||||
- credit == 10
|
||||
-
|
||||
I create an Outgoing Picking order
|
||||
-
|
||||
!record {model: stock.picking, id: stock_picking_out001_fifo}:
|
||||
partner_id: base.res_partner_13
|
||||
invoice_state: 2binvoiced
|
||||
move_lines:
|
||||
- company_id: base.main_company
|
||||
location_id: stock.stock_location_stock
|
||||
product_id: product_fifo_anglo_saxon
|
||||
product_qty: 1.0
|
||||
location_dest_id: stock.stock_location_customers
|
||||
move_type: direct
|
||||
type: out
|
||||
-
|
||||
I need to check the availability of the product, So I make my picking order for processing later.
|
||||
-
|
||||
!python {model: stock.picking}: |
|
||||
self.draft_force_assign(cr, uid, [ref("stock_picking_out001_fifo")], {"lang": "en_US", "search_default_available":
|
||||
1, "tz": False, "active_model": "ir.ui.menu", "contact_display": "partner",
|
||||
"active_ids": [ref("stock.menu_action_picking_tree")], "active_id": ref("stock.menu_action_picking_tree"),
|
||||
})
|
||||
-
|
||||
I check the product availability, Product is available in the stock and ready to be sent.
|
||||
-
|
||||
!python {model: stock.picking}: |
|
||||
self.action_assign(cr, uid, [ref("stock_picking_out001_fifo")], {"lang": "en_US", "search_default_available":
|
||||
1, "tz": False, "active_model": "ir.ui.menu", "contact_display": "partner",
|
||||
"active_ids": [ref("stock.menu_action_picking_tree")], "active_id": ref("stock.menu_action_picking_tree"),
|
||||
})
|
||||
-
|
||||
I process the delivery.
|
||||
-
|
||||
!python {model: stock.partial.picking}: |
|
||||
partial_id = self.create(cr, uid, {}, context={'active_model':'stock.picking','active_ids':[ref('stock_picking_out001_fifo')]})
|
||||
self.do_partial(cr, uid, [partial_id])
|
||||
-
|
||||
I check Stock Interim account (Delivery) is debited successfully.
|
||||
-
|
||||
!assert {model: account.account, id : account_anglo_stock_output_fifo, string : Stock Interim account (Delivery) is not debited successfully.}:
|
||||
- debit == 9
|
||||
-
|
||||
I check the Stock valuation account is credited sucessfully.
|
||||
-
|
||||
!assert {model: account.account, id : account_anglo_stock_valuation_fifo, string : Stock valuation account is not credited successfully.}:
|
||||
- credit == 9
|
||||
-
|
||||
As the Invoice state of the picking order is To be invoiced. I create invoice for my outgoing picking order.
|
||||
-
|
||||
!python {model: stock.invoice.onshipping}: |
|
||||
wiz_id = self.create(cr, uid, {'invoice_date': '2013-03-04', 'journal_id': ref('account.sales_journal')},
|
||||
{'active_ids': [ref("stock_picking_out001_fifo")], "active_model": "stock.picking"})
|
||||
self.create_invoice(cr, uid, [wiz_id], {"lang": "en_US",
|
||||
"search_default_available": 1, "tz": False, "active_model": "stock.picking",
|
||||
"contact_display": "partner", "active_ids": [ref("stock_picking_out001_fifo")], "active_id": ref("stock_picking_out001_fifo")})
|
||||
-
|
||||
I check that the customer invoice is created successfully.
|
||||
-
|
||||
!python {model: account.invoice}: |
|
||||
partner_id = self.pool.get('stock.picking').browse(cr, uid, ref('stock_picking_out001_fifo')).partner_id.id
|
||||
inv_ids = self.search(cr, uid, [('type','=','out_invoice'),('partner_id','=',partner_id)])
|
||||
assert inv_ids, 'No Invoice is generated!'
|
||||
-
|
||||
I open the Invoice.
|
||||
-
|
||||
!python {model: stock.picking}: |
|
||||
move_name = self.pool.get('stock.picking').browse(cr, uid, ref('stock_picking_out001_fifo')).name
|
||||
account_invoice = self.pool.get('account.invoice').search(cr, uid, [('origin', '=', move_name)])
|
||||
account_invoice_line = self.pool.get('account.invoice.line').search(cr, uid, [('invoice_id', 'in', account_invoice)])
|
||||
self.pool.get('account.invoice.line').write(cr, uid, account_invoice_line, {'invoice_line_tax_id': [(6, 0, [])]})
|
||||
self.pool.get('account.invoice').button_reset_taxes(cr, uid, account_invoice)
|
||||
self.pool.get('account.invoice').signal_invoice_open(cr, uid, account_invoice)
|
||||
-
|
||||
I check Income Account is Credited sucessfully when Invoice validated.
|
||||
-
|
||||
!assert {model: account.account, id : account_anglo_income_fifo, string : Income Account is not Credited successfully.}:
|
||||
- credit == 20
|
||||
-
|
||||
I check Cost of goods sold account for debit.
|
||||
-
|
||||
!assert {model: account.account, id : account_anglo_cogs_fifo, string : Cost of goods sale is not Debited successfully.}:
|
||||
- debit == 9
|
||||
-
|
||||
I check Stock Interim account (Delivery)
|
||||
-
|
||||
!assert {model: account.account, id : account_anglo_stock_output_fifo, string : Stock Interim account (Delivery) is not credited successfully.}:
|
||||
- credit == 9
|
||||
-
|
||||
I check Receivable(Debtor) Account for debit.
|
||||
-
|
||||
!assert {model: account.account, id : account_anglo_receivable_fifo, string : Receivable(Debtors) Account is not Debited successfully.}:
|
||||
- debit == 20
|
||||
-
|
||||
I pay the invoice.
|
||||
-
|
||||
!python {model: account.invoice}: |
|
||||
move_name = self.pool.get('stock.picking').browse(cr, uid, ref('stock_picking_out001_fifo')).name
|
||||
account_invoice= self.pool.get('account.invoice').search(cr, uid, [('origin', '=', move_name)])
|
||||
journal_ids = self.pool.get('account.journal').search(cr, uid, [('type', '=', 'cash')], limit=1)
|
||||
pay = self.pay_and_reconcile(cr, uid, account_invoice,
|
||||
20.0, ref('account_anglo_cash_fifo'), ref('account.period_8'),
|
||||
journal_ids[0], ref('account_anglo_cash_fifo'),
|
||||
ref('account.period_8'), journal_ids[0],
|
||||
name='Payment for test customer invoice')
|
||||
assert (pay == True), "Incorrect Payment."
|
||||
-
|
||||
I check Receivable(Debtor) Account for credit.
|
||||
-
|
||||
!assert {model: account.account, id : account_anglo_receivable_fifo, string : Receivable(Debtors) Account is not Credited successfully.}:
|
||||
- credit == 20
|
||||
-
|
||||
I check Bank/Cash account is debited sucessfully after invoice paid.
|
||||
-
|
||||
!assert {model: account.account, id : account_anglo_cash_fifo, string: Bank/Cash account is not successfully credited.}:
|
||||
- debit == 20
|
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 6.2 KiB |
|
@ -8,19 +8,19 @@ msgstr ""
|
|||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
|
||||
"PO-Revision-Date: 2010-12-21 14:22+0000\n"
|
||||
"Last-Translator: OpenERP Administrators <Unknown>\n"
|
||||
"PO-Revision-Date: 2013-06-30 16:08+0000\n"
|
||||
"Last-Translator: Hung Tran <vanda6688@yahoo.com>\n"
|
||||
"Language-Team: Vietnamese <vi@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-03-16 05:42+0000\n"
|
||||
"X-Generator: Launchpad (build 16532)\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-01 05:14+0000\n"
|
||||
"X-Generator: Launchpad (build 16692)\n"
|
||||
|
||||
#. module: account_cancel
|
||||
#: view:account.invoice:0
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
msgstr "Hủy bỏ"
|
||||
|
||||
#~ msgid "Account Cancel"
|
||||
#~ msgstr "Hủy bỏ Tài khoản"
|
||||
|
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 78 KiB |
Before Width: | Height: | Size: 74 KiB After Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 120 KiB After Width: | Height: | Size: 120 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 9.1 KiB After Width: | Height: | Size: 9.1 KiB |
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 2.9 KiB |
|
@ -33,9 +33,9 @@ class account_analytic_account(osv.osv):
|
|||
_description = 'Analytic Account'
|
||||
_track = {
|
||||
'state': {
|
||||
'analytic.mt_account_pending': lambda self, cr, uid, obj, ctx=None: obj['state'] == 'pending',
|
||||
'analytic.mt_account_closed': lambda self, cr, uid, obj, ctx=None: obj['state'] == 'close',
|
||||
'analytic.mt_account_opened': lambda self, cr, uid, obj, ctx=None: obj['state'] == 'open',
|
||||
'analytic.mt_account_pending': lambda self, cr, uid, obj, ctx=None: obj.state == 'pending',
|
||||
'analytic.mt_account_closed': lambda self, cr, uid, obj, ctx=None: obj.state == 'close',
|
||||
'analytic.mt_account_opened': lambda self, cr, uid, obj, ctx=None: obj.state == 'open',
|
||||
},
|
||||
}
|
||||
|
||||
|
|
|
@ -7,7 +7,8 @@ from werkzeug.exceptions import BadRequest
|
|||
|
||||
import openerp
|
||||
from openerp import SUPERUSER_ID
|
||||
import openerp.addons.web.http as oeweb
|
||||
import openerp.addons.web.http as http
|
||||
from openerp.addons.web.http import request
|
||||
from openerp.addons.web.controllers.main import db_monodb, set_cookie_and_redirect, login_and_redirect
|
||||
from openerp.modules.registry import RegistryManager
|
||||
|
||||
|
@ -18,7 +19,7 @@ _logger = logging.getLogger(__name__)
|
|||
#----------------------------------------------------------
|
||||
def fragment_to_query_string(func):
|
||||
@functools.wraps(func)
|
||||
def wrapper(self, req, **kw):
|
||||
def wrapper(self, **kw):
|
||||
if not kw:
|
||||
return """<html><head><script>
|
||||
var l = window.location;
|
||||
|
@ -30,18 +31,17 @@ def fragment_to_query_string(func):
|
|||
}
|
||||
window.location = r;
|
||||
</script></head><body></body></html>"""
|
||||
return func(self, req, **kw)
|
||||
return func(self, **kw)
|
||||
return wrapper
|
||||
|
||||
|
||||
#----------------------------------------------------------
|
||||
# Controller
|
||||
#----------------------------------------------------------
|
||||
class OAuthController(oeweb.Controller):
|
||||
_cp_path = '/auth_oauth'
|
||||
class OAuthController(http.Controller):
|
||||
|
||||
@oeweb.jsonrequest
|
||||
def list_providers(self, req, dbname):
|
||||
@http.route('/auth_oauth/list_providers', type='json', auth='none')
|
||||
def list_providers(self, dbname):
|
||||
try:
|
||||
registry = RegistryManager.get(dbname)
|
||||
with registry.cursor() as cr:
|
||||
|
@ -51,9 +51,9 @@ class OAuthController(oeweb.Controller):
|
|||
l = []
|
||||
return l
|
||||
|
||||
@oeweb.httprequest
|
||||
@http.route('/auth_oauth/signin', type='http', auth='none')
|
||||
@fragment_to_query_string
|
||||
def signin(self, req, **kw):
|
||||
def signin(self, **kw):
|
||||
state = simplejson.loads(kw['state'])
|
||||
dbname = state['d']
|
||||
provider = state['p']
|
||||
|
@ -71,7 +71,7 @@ class OAuthController(oeweb.Controller):
|
|||
url = '/#action=%s' % action
|
||||
elif menu:
|
||||
url = '/#menu_id=%s' % menu
|
||||
return login_and_redirect(req, *credentials, redirect_url=url)
|
||||
return login_and_redirect(*credentials, redirect_url=url)
|
||||
except AttributeError:
|
||||
# auth_signup is not installed
|
||||
_logger.error("auth_signup not installed on database %s: oauth sign up cancelled." % (dbname,))
|
||||
|
@ -88,14 +88,14 @@ class OAuthController(oeweb.Controller):
|
|||
_logger.exception("OAuth2: %s" % str(e))
|
||||
url = "/#action=login&oauth_error=2"
|
||||
|
||||
return set_cookie_and_redirect(req, url)
|
||||
return set_cookie_and_redirect(url)
|
||||
|
||||
@oeweb.httprequest
|
||||
def oea(self, req, **kw):
|
||||
@http.route('/auth_oauth/oea', type='http', auth='none')
|
||||
def oea(self, **kw):
|
||||
"""login user via OpenERP Account provider"""
|
||||
dbname = kw.pop('db', None)
|
||||
if not dbname:
|
||||
dbname = db_monodb(req)
|
||||
dbname = db_monodb()
|
||||
if not dbname:
|
||||
return BadRequest()
|
||||
|
||||
|
@ -105,7 +105,7 @@ class OAuthController(oeweb.Controller):
|
|||
try:
|
||||
model, provider_id = IMD.get_object_reference(cr, SUPERUSER_ID, 'auth_oauth', 'provider_openerp')
|
||||
except ValueError:
|
||||
return set_cookie_and_redirect(req, '/?db=%s' % dbname)
|
||||
return set_cookie_and_redirect('/?db=%s' % dbname)
|
||||
assert model == 'auth.oauth.provider'
|
||||
|
||||
state = {
|
||||
|
@ -115,6 +115,6 @@ class OAuthController(oeweb.Controller):
|
|||
}
|
||||
|
||||
kw['state'] = simplejson.dumps(state)
|
||||
return self.signin(req, **kw)
|
||||
return self.signin(**kw)
|
||||
|
||||
# vim:expandtab:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
# Vietnamese translation for openobject-addons
|
||||
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
|
||||
"PO-Revision-Date: 2013-06-27 06:49+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Vietnamese <vi@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-06-28 05:42+0000\n"
|
||||
"X-Generator: Launchpad (build 16681)\n"
|
||||
|
||||
#. module: auth_oauth_signup
|
||||
#: model:ir.model,name:auth_oauth_signup.model_res_users
|
||||
msgid "Users"
|
||||
msgstr "Người dùng"
|
|
@ -38,6 +38,8 @@ import openerp
|
|||
from openerp import SUPERUSER_ID
|
||||
from openerp.modules.registry import RegistryManager
|
||||
from openerp.addons.web.controllers.main import login_and_redirect, set_cookie_and_redirect
|
||||
import openerp.addons.web.http as http
|
||||
from openerp.addons.web.http import request
|
||||
|
||||
from .. import utils
|
||||
|
||||
|
@ -88,20 +90,19 @@ class GoogleAppsAwareConsumer(consumer.GenericConsumer):
|
|||
return super(GoogleAppsAwareConsumer, self).complete(message, endpoint, return_to)
|
||||
|
||||
|
||||
class OpenIDController(openerp.addons.web.http.Controller):
|
||||
_cp_path = '/auth_openid/login'
|
||||
class OpenIDController(http.Controller):
|
||||
|
||||
_store = filestore.FileOpenIDStore(_storedir)
|
||||
|
||||
_REQUIRED_ATTRIBUTES = ['email']
|
||||
_OPTIONAL_ATTRIBUTES = 'nickname fullname postcode country language timezone'.split()
|
||||
|
||||
def _add_extensions(self, request):
|
||||
"""Add extensions to the request"""
|
||||
def _add_extensions(self, oidrequest):
|
||||
"""Add extensions to the oidrequest"""
|
||||
|
||||
sreg_request = sreg.SRegRequest(required=self._REQUIRED_ATTRIBUTES,
|
||||
optional=self._OPTIONAL_ATTRIBUTES)
|
||||
request.addExtension(sreg_request)
|
||||
oidrequest.addExtension(sreg_request)
|
||||
|
||||
ax_request = ax.FetchRequest()
|
||||
for alias in self._REQUIRED_ATTRIBUTES:
|
||||
|
@ -111,7 +112,7 @@ class OpenIDController(openerp.addons.web.http.Controller):
|
|||
uri = utils.SREG2AX[alias]
|
||||
ax_request.add(ax.AttrInfo(uri, required=False, alias=alias))
|
||||
|
||||
request.addExtension(ax_request)
|
||||
oidrequest.addExtension(ax_request)
|
||||
|
||||
def _get_attributes_from_success_response(self, success_response):
|
||||
attrs = {}
|
||||
|
@ -133,58 +134,58 @@ class OpenIDController(openerp.addons.web.http.Controller):
|
|||
attrs[attr] = value
|
||||
return attrs
|
||||
|
||||
def _get_realm(self, req):
|
||||
return req.httprequest.host_url
|
||||
def _get_realm(self):
|
||||
return request.httprequest.host_url
|
||||
|
||||
@openerp.addons.web.http.httprequest
|
||||
def verify_direct(self, req, db, url):
|
||||
result = self._verify(req, db, url)
|
||||
@http.route('/auth_openid/login/verify_direct', type='http', auth='none')
|
||||
def verify_direct(self, db, url):
|
||||
result = self._verify(db, url)
|
||||
if 'error' in result:
|
||||
return werkzeug.exceptions.BadRequest(result['error'])
|
||||
if result['action'] == 'redirect':
|
||||
return werkzeug.utils.redirect(result['value'])
|
||||
return result['value']
|
||||
|
||||
@openerp.addons.web.http.jsonrequest
|
||||
def verify(self, req, db, url):
|
||||
return self._verify(req, db, url)
|
||||
@http.route('/auth_openid/login/verify', type='json', auth='none')
|
||||
def verify(self, db, url):
|
||||
return self._verify(db, url)
|
||||
|
||||
def _verify(self, req, db, url):
|
||||
redirect_to = werkzeug.urls.Href(req.httprequest.host_url + 'auth_openid/login/process')(session_id=req.session_id)
|
||||
realm = self._get_realm(req)
|
||||
def _verify(self, db, url):
|
||||
redirect_to = werkzeug.urls.Href(request.httprequest.host_url + 'auth_openid/login/process')(session_id=request.session_id)
|
||||
realm = self._get_realm()
|
||||
|
||||
session = dict(dbname=db, openid_url=url) # TODO add origin page ?
|
||||
oidconsumer = consumer.Consumer(session, self._store)
|
||||
|
||||
try:
|
||||
request = oidconsumer.begin(url)
|
||||
oidrequest = oidconsumer.begin(url)
|
||||
except consumer.DiscoveryFailure, exc:
|
||||
fetch_error_string = 'Error in discovery: %s' % (str(exc[0]),)
|
||||
return {'error': fetch_error_string, 'title': 'OpenID Error'}
|
||||
|
||||
if request is None:
|
||||
if oidrequest is None:
|
||||
return {'error': 'No OpenID services found', 'title': 'OpenID Error'}
|
||||
|
||||
req.session.openid_session = session
|
||||
self._add_extensions(request)
|
||||
request.session.openid_session = session
|
||||
self._add_extensions(oidrequest)
|
||||
|
||||
if request.shouldSendRedirect():
|
||||
redirect_url = request.redirectURL(realm, redirect_to)
|
||||
return {'action': 'redirect', 'value': redirect_url, 'session_id': req.session_id}
|
||||
if oidrequest.shouldSendRedirect():
|
||||
redirect_url = oidrequest.redirectURL(realm, redirect_to)
|
||||
return {'action': 'redirect', 'value': redirect_url, 'session_id': request.session_id}
|
||||
else:
|
||||
form_html = request.htmlMarkup(realm, redirect_to)
|
||||
return {'action': 'post', 'value': form_html, 'session_id': req.session_id}
|
||||
form_html = oidrequest.htmlMarkup(realm, redirect_to)
|
||||
return {'action': 'post', 'value': form_html, 'session_id': request.session_id}
|
||||
|
||||
@openerp.addons.web.http.httprequest
|
||||
def process(self, req, **kw):
|
||||
session = getattr(req.session, 'openid_session', None)
|
||||
@http.route('/auth_openid/login/process', type='http', auth='none')
|
||||
def process(self, **kw):
|
||||
session = getattr(request.session, 'openid_session', None)
|
||||
if not session:
|
||||
return set_cookie_and_redirect(req, '/')
|
||||
return set_cookie_and_redirect('/')
|
||||
|
||||
oidconsumer = consumer.Consumer(session, self._store, consumer_class=GoogleAppsAwareConsumer)
|
||||
|
||||
query = req.httprequest.args
|
||||
info = oidconsumer.complete(query, req.httprequest.base_url)
|
||||
query = request.httprequest.args
|
||||
info = oidconsumer.complete(query, request.httprequest.base_url)
|
||||
display_identifier = info.getDisplayIdentifier()
|
||||
|
||||
session['status'] = info.status
|
||||
|
@ -225,7 +226,7 @@ class OpenIDController(openerp.addons.web.http.Controller):
|
|||
# TODO fill empty fields with the ones from sreg/ax
|
||||
cr.commit()
|
||||
|
||||
return login_and_redirect(req, dbname, login, key)
|
||||
return login_and_redirect(dbname, login, key)
|
||||
|
||||
session['message'] = 'This OpenID identifier is not associated to any active users'
|
||||
|
||||
|
@ -241,11 +242,11 @@ class OpenIDController(openerp.addons.web.http.Controller):
|
|||
# information in a log.
|
||||
session['message'] = 'Verification failed.'
|
||||
|
||||
return set_cookie_and_redirect(req, '/#action=login&loginerror=1')
|
||||
return set_cookie_and_redirect('/#action=login&loginerror=1')
|
||||
|
||||
@openerp.addons.web.http.jsonrequest
|
||||
def status(self, req):
|
||||
session = getattr(req.session, 'openid_session', {})
|
||||
@http.route('/auth_openid/login/status', type='json', auth='none')
|
||||
def status(self):
|
||||
session = getattr(request.session, 'openid_session', {})
|
||||
return {'status': session.get('status'), 'message': session.get('message')}
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,97 @@
|
|||
# Vietnamese translation for openobject-addons
|
||||
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
|
||||
"PO-Revision-Date: 2013-06-27 16:29+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Vietnamese <vi@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-06-28 05:42+0000\n"
|
||||
"X-Generator: Launchpad (build 16681)\n"
|
||||
|
||||
#. module: auth_openid
|
||||
#. openerp-web
|
||||
#: code:addons/auth_openid/static/src/xml/auth_openid.xml:24
|
||||
#, python-format
|
||||
msgid "Username"
|
||||
msgstr "Tên đăng nhập"
|
||||
|
||||
#. module: auth_openid
|
||||
#. openerp-web
|
||||
#: code:addons/auth_openid/static/src/xml/auth_openid.xml:12
|
||||
#: view:res.users:0
|
||||
#, python-format
|
||||
msgid "OpenID"
|
||||
msgstr "OpenID"
|
||||
|
||||
#. module: auth_openid
|
||||
#. openerp-web
|
||||
#: code:addons/auth_openid/static/src/xml/auth_openid.xml:30
|
||||
#: field:res.users,openid_url:0
|
||||
#, python-format
|
||||
msgid "OpenID URL"
|
||||
msgstr "Đường dẫn OpenID"
|
||||
|
||||
#. module: auth_openid
|
||||
#. openerp-web
|
||||
#: code:addons/auth_openid/static/src/xml/auth_openid.xml:9
|
||||
#: code:addons/auth_openid/static/src/xml/auth_openid.xml:10
|
||||
#, python-format
|
||||
msgid "Google"
|
||||
msgstr "Google"
|
||||
|
||||
#. module: auth_openid
|
||||
#. openerp-web
|
||||
#: code:addons/auth_openid/static/src/xml/auth_openid.xml:11
|
||||
#, python-format
|
||||
msgid "Launchpad"
|
||||
msgstr "Launchpad"
|
||||
|
||||
#. module: auth_openid
|
||||
#: help:res.users,openid_email:0
|
||||
msgid "Used for disambiguation in case of a shared OpenID URL"
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_openid
|
||||
#. openerp-web
|
||||
#: code:addons/auth_openid/static/src/xml/auth_openid.xml:18
|
||||
#, python-format
|
||||
msgid "Google Apps Domain"
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_openid
|
||||
#: field:res.users,openid_email:0
|
||||
msgid "OpenID Email"
|
||||
msgstr "OpenID Email"
|
||||
|
||||
#. module: auth_openid
|
||||
#: field:res.users,openid_key:0
|
||||
msgid "OpenID Key"
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_openid
|
||||
#. openerp-web
|
||||
#: code:addons/auth_openid/static/src/xml/auth_openid.xml:8
|
||||
#, python-format
|
||||
msgid "Password"
|
||||
msgstr "Mật khẩu"
|
||||
|
||||
#. module: auth_openid
|
||||
#. openerp-web
|
||||
#: code:addons/auth_openid/static/src/xml/auth_openid.xml:10
|
||||
#, python-format
|
||||
msgid "Google Apps"
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_openid
|
||||
#: model:ir.model,name:auth_openid.model_res_users
|
||||
msgid "Users"
|
||||
msgstr "Người dùng"
|
|
@ -23,14 +23,15 @@ import logging
|
|||
import openerp
|
||||
from openerp.modules.registry import RegistryManager
|
||||
from ..res_users import SignupError
|
||||
import openerp.addons.web.http as http
|
||||
from openerp.addons.web.http import request
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
class Controller(openerp.addons.web.http.Controller):
|
||||
_cp_path = '/auth_signup'
|
||||
class Controller(http.Controller):
|
||||
|
||||
@openerp.addons.web.http.jsonrequest
|
||||
def get_config(self, req, dbname):
|
||||
@http.route('/auth_signup/get_config', type='json', auth="none")
|
||||
def get_config(self, dbname):
|
||||
""" retrieve the module config (which features are enabled) for the login page """
|
||||
registry = RegistryManager.get(dbname)
|
||||
with registry.cursor() as cr:
|
||||
|
@ -41,8 +42,8 @@ class Controller(openerp.addons.web.http.Controller):
|
|||
}
|
||||
return config
|
||||
|
||||
@openerp.addons.web.http.jsonrequest
|
||||
def retrieve(self, req, dbname, token):
|
||||
@http.route('/auth_signup/retrieve', type='json', auth="user")
|
||||
def retrieve(self, dbname, token):
|
||||
""" retrieve the user info (name, login or email) corresponding to a signup token """
|
||||
registry = RegistryManager.get(dbname)
|
||||
with registry.cursor() as cr:
|
||||
|
@ -50,23 +51,23 @@ class Controller(openerp.addons.web.http.Controller):
|
|||
user_info = res_partner.signup_retrieve_info(cr, openerp.SUPERUSER_ID, token)
|
||||
return user_info
|
||||
|
||||
@openerp.addons.web.http.jsonrequest
|
||||
def signup(self, req, dbname, token, **values):
|
||||
@http.route('/auth_signup/signup', type='json', auth="user")
|
||||
def signup(self, dbname, token, **values):
|
||||
""" sign up a user (new or existing)"""
|
||||
try:
|
||||
self._signup_with_values(req, dbname, token, values)
|
||||
self._signup_with_values(dbname, token, values)
|
||||
except SignupError, e:
|
||||
return {'error': openerp.tools.exception_to_unicode(e)}
|
||||
return {}
|
||||
|
||||
def _signup_with_values(self, req, dbname, token, values):
|
||||
def _signup_with_values(self, dbname, token, values):
|
||||
registry = RegistryManager.get(dbname)
|
||||
with registry.cursor() as cr:
|
||||
res_users = registry.get('res.users')
|
||||
res_users.signup(cr, openerp.SUPERUSER_ID, values, token)
|
||||
|
||||
@openerp.addons.web.http.jsonrequest
|
||||
def reset_password(self, req, dbname, login):
|
||||
@http.route('/auth_signup/reset_password', type='json', auth="user")
|
||||
def reset_password(self, dbname, login):
|
||||
""" retrieve user, and perform reset password """
|
||||
registry = RegistryManager.get(dbname)
|
||||
with registry.cursor() as cr:
|
||||
|
|
|
@ -0,0 +1,288 @@
|
|||
# Vietnamese translation for openobject-addons
|
||||
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
|
||||
"PO-Revision-Date: 2013-06-27 06:52+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Vietnamese <vi@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-06-28 05:42+0000\n"
|
||||
"X-Generator: Launchpad (build 16681)\n"
|
||||
|
||||
#. module: auth_signup
|
||||
#: field:res.partner,signup_type:0
|
||||
msgid "Signup Token Type"
|
||||
msgstr "Loại mã đăng ký"
|
||||
|
||||
#. module: auth_signup
|
||||
#: field:base.config.settings,auth_signup_uninvited:0
|
||||
msgid "Allow external users to sign up"
|
||||
msgstr "Cho phép người dùng bên ngoài đăng ký."
|
||||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:19
|
||||
#, python-format
|
||||
msgid "Confirm Password"
|
||||
msgstr "Xác nhận mật khẩu"
|
||||
|
||||
#. module: auth_signup
|
||||
#: help:base.config.settings,auth_signup_uninvited:0
|
||||
msgid "If unchecked, only invited users may sign up."
|
||||
msgstr "Nếu không chọn, chỉ những người được mời mới được đăng ký."
|
||||
|
||||
#. module: auth_signup
|
||||
#: model:ir.model,name:auth_signup.model_base_config_settings
|
||||
msgid "base.config.settings"
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_signup
|
||||
#: code:addons/auth_signup/res_users.py:266
|
||||
#, python-format
|
||||
msgid "Cannot send email: user has no email address."
|
||||
msgstr "Không thể gửi email: người dùng không có địa chỉ email"
|
||||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:27
|
||||
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:31
|
||||
#, python-format
|
||||
msgid "Reset password"
|
||||
msgstr "Đặt lại mật khẩu"
|
||||
|
||||
#. module: auth_signup
|
||||
#: field:base.config.settings,auth_signup_template_user_id:0
|
||||
msgid "Template user for new users created through signup"
|
||||
msgstr "Mẫu người dùng sử dụng khi đăng ký"
|
||||
|
||||
#. module: auth_signup
|
||||
#: model:email.template,subject:auth_signup.reset_password_email
|
||||
msgid "Password reset"
|
||||
msgstr "Quên mật khẩu"
|
||||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:120
|
||||
#, python-format
|
||||
msgid "Please enter a password and confirm it."
|
||||
msgstr "Vui lòng nhập mật khẩu và xác nhận nó"
|
||||
|
||||
#. module: auth_signup
|
||||
#: view:res.users:0
|
||||
msgid "Send an email to the user to (re)set their password."
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:26
|
||||
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:29
|
||||
#, python-format
|
||||
msgid "Sign Up"
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_signup
|
||||
#: selection:res.users,state:0
|
||||
msgid "New"
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_signup
|
||||
#: code:addons/auth_signup/res_users.py:258
|
||||
#, python-format
|
||||
msgid "Mail sent to:"
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_signup
|
||||
#: field:res.users,state:0
|
||||
msgid "Status"
|
||||
msgstr "Trạng thái"
|
||||
|
||||
#. module: auth_signup
|
||||
#: model:email.template,body_html:auth_signup.reset_password_email
|
||||
msgid ""
|
||||
"\n"
|
||||
"<p>A password reset was requested for the OpenERP account linked to this "
|
||||
"email.</p>\n"
|
||||
"\n"
|
||||
"<p>You may change your password by following <a "
|
||||
"href=\"${object.signup_url}\">this link</a>.</p>\n"
|
||||
"\n"
|
||||
"<p>Note: If you do not expect this, you can safely ignore this email.</p>"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"\\n\n"
|
||||
"<p>Bạn có một yêu cầu reset mật khẩu từ tài khoản OpenERPA gắn với email "
|
||||
"này.</p>\\n\n"
|
||||
"\\n\n"
|
||||
"<p>Bạn có thể thay đổi mật khẩu thông qua <a href=\\\"${object.signup_url}\\"
|
||||
"\">đường dẫn này</a>.</p>\\n\n"
|
||||
"\\n\n"
|
||||
"<p>Lưu ý: Nếu đây không phải chủ ý của bạn. Bạn có thể bỏ qua email này.</p>"
|
||||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:114
|
||||
#, python-format
|
||||
msgid "Please enter a name."
|
||||
msgstr "Xin nhập tên."
|
||||
|
||||
#. module: auth_signup
|
||||
#: model:ir.model,name:auth_signup.model_res_users
|
||||
msgid "Users"
|
||||
msgstr "Người dùng"
|
||||
|
||||
#. module: auth_signup
|
||||
#: field:res.partner,signup_url:0
|
||||
msgid "Signup URL"
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:117
|
||||
#, python-format
|
||||
msgid "Please enter a username."
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_signup
|
||||
#: selection:res.users,state:0
|
||||
msgid "Active"
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_signup
|
||||
#: code:addons/auth_signup/res_users.py:270
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot send email: no outgoing email server configured.\n"
|
||||
"You can configure it under Settings/General Settings."
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:12
|
||||
#, python-format
|
||||
msgid "Username"
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:8
|
||||
#, python-format
|
||||
msgid "Name"
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:173
|
||||
#, python-format
|
||||
msgid "Please enter a username or email address."
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_signup
|
||||
#: selection:res.users,state:0
|
||||
msgid "Resetting Password"
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:13
|
||||
#, python-format
|
||||
msgid "Username (Email)"
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_signup
|
||||
#: field:res.partner,signup_expiration:0
|
||||
msgid "Signup Expiration"
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_signup
|
||||
#: help:base.config.settings,auth_signup_reset_password:0
|
||||
msgid "This allows users to trigger a password reset from the Login page."
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:25
|
||||
#, python-format
|
||||
msgid "Log in"
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_signup
|
||||
#: field:res.partner,signup_valid:0
|
||||
msgid "Signup Token is Valid"
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:111
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:114
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:117
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:120
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:123
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:170
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:173
|
||||
#, python-format
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:97
|
||||
#, python-format
|
||||
msgid "Invalid signup token"
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:123
|
||||
#, python-format
|
||||
msgid "Passwords do not match; please retype them."
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:111
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:170
|
||||
#, python-format
|
||||
msgid "No database selected !"
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_signup
|
||||
#: view:res.users:0
|
||||
msgid "Reset Password"
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_signup
|
||||
#: field:base.config.settings,auth_signup_reset_password:0
|
||||
msgid "Enable password reset from Login page"
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:30
|
||||
#, python-format
|
||||
msgid "Back to Login"
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:22
|
||||
#, python-format
|
||||
msgid "Sign up"
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_signup
|
||||
#: model:ir.model,name:auth_signup.model_res_partner
|
||||
msgid "Partner"
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_signup
|
||||
#: field:res.partner,signup_token:0
|
||||
msgid "Signup Token"
|
||||
msgstr ""
|
|
@ -8,14 +8,14 @@ msgstr ""
|
|||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
|
||||
"PO-Revision-Date: 2013-04-16 04:33+0000\n"
|
||||
"Last-Translator: Key <key.diagram@gmail.com>\n"
|
||||
"PO-Revision-Date: 2013-07-02 08:11+0000\n"
|
||||
"Last-Translator: DWXXX <Unknown>\n"
|
||||
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-04-17 05:15+0000\n"
|
||||
"X-Generator: Launchpad (build 16567)\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-03 05:14+0000\n"
|
||||
"X-Generator: Launchpad (build 16692)\n"
|
||||
|
||||
#. module: auth_signup
|
||||
#: field:res.partner,signup_type:0
|
||||
|
@ -29,7 +29,7 @@ msgstr "允许外部用户登录"
|
|||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:16
|
||||
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:19
|
||||
#, python-format
|
||||
msgid "Confirm Password"
|
||||
msgstr "确认密码"
|
||||
|
@ -37,7 +37,7 @@ msgstr "确认密码"
|
|||
#. module: auth_signup
|
||||
#: help:base.config.settings,auth_signup_uninvited:0
|
||||
msgid "If unchecked, only invited users may sign up."
|
||||
msgstr ""
|
||||
msgstr "如果不勾选,只有被邀请用户才能注册。"
|
||||
|
||||
#. module: auth_signup
|
||||
#: model:ir.model,name:auth_signup.model_base_config_settings
|
||||
|
@ -45,15 +45,15 @@ msgid "base.config.settings"
|
|||
msgstr "base.config.settings"
|
||||
|
||||
#. module: auth_signup
|
||||
#: code:addons/auth_signup/res_users.py:265
|
||||
#: code:addons/auth_signup/res_users.py:266
|
||||
#, python-format
|
||||
msgid "Cannot send email: user has no email address."
|
||||
msgstr ""
|
||||
msgstr "无法发送邮件:用户邮件地址为空。"
|
||||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:24
|
||||
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:28
|
||||
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:27
|
||||
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:31
|
||||
#, python-format
|
||||
msgid "Reset password"
|
||||
msgstr "重设密码"
|
||||
|
@ -70,7 +70,7 @@ msgstr "重置密码"
|
|||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:117
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:120
|
||||
#, python-format
|
||||
msgid "Please enter a password and confirm it."
|
||||
msgstr "请输入密码并确认。"
|
||||
|
@ -78,12 +78,12 @@ msgstr "请输入密码并确认。"
|
|||
#. module: auth_signup
|
||||
#: view:res.users:0
|
||||
msgid "Send an email to the user to (re)set their password."
|
||||
msgstr ""
|
||||
msgstr "向用户发送重置密码邮件。"
|
||||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:23
|
||||
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:26
|
||||
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:29
|
||||
#, python-format
|
||||
msgid "Sign Up"
|
||||
msgstr "注册"
|
||||
|
@ -119,10 +119,10 @@ msgstr ""
|
|||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:111
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:114
|
||||
#, python-format
|
||||
msgid "Please enter a name."
|
||||
msgstr ""
|
||||
msgstr "请输入名字"
|
||||
|
||||
#. module: auth_signup
|
||||
#: model:ir.model,name:auth_signup.model_res_users
|
||||
|
@ -136,10 +136,10 @@ msgstr "注册 URL"
|
|||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:114
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:117
|
||||
#, python-format
|
||||
msgid "Please enter a username."
|
||||
msgstr ""
|
||||
msgstr "请输入您的用户名"
|
||||
|
||||
#. module: auth_signup
|
||||
#: selection:res.users,state:0
|
||||
|
@ -147,7 +147,7 @@ msgid "Active"
|
|||
msgstr "启用"
|
||||
|
||||
#. module: auth_signup
|
||||
#: code:addons/auth_signup/res_users.py:269
|
||||
#: code:addons/auth_signup/res_users.py:270
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Cannot send email: no outgoing email server configured.\n"
|
||||
|
@ -170,10 +170,10 @@ msgstr "姓名"
|
|||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:170
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:173
|
||||
#, python-format
|
||||
msgid "Please enter a username or email address."
|
||||
msgstr ""
|
||||
msgstr "请输入用户名和邮件地址"
|
||||
|
||||
#. module: auth_signup
|
||||
#: selection:res.users,state:0
|
||||
|
@ -199,7 +199,7 @@ msgstr ""
|
|||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:22
|
||||
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:25
|
||||
#, python-format
|
||||
msgid "Log in"
|
||||
msgstr "登录"
|
||||
|
@ -211,35 +211,35 @@ msgstr "注册令牌( Token )是有效的"
|
|||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:108
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:111
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:114
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:117
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:120
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:167
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:123
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:170
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:173
|
||||
#, python-format
|
||||
msgid "Login"
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:94
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:97
|
||||
#, python-format
|
||||
msgid "Invalid signup token"
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:120
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:123
|
||||
#, python-format
|
||||
msgid "Passwords do not match; please retype them."
|
||||
msgstr ""
|
||||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:108
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:167
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:111
|
||||
#: code:addons/auth_signup/static/src/js/auth_signup.js:170
|
||||
#, python-format
|
||||
msgid "No database selected !"
|
||||
msgstr ""
|
||||
|
@ -256,7 +256,7 @@ msgstr ""
|
|||
|
||||
#. module: auth_signup
|
||||
#. openerp-web
|
||||
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:27
|
||||
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:30
|
||||
#, python-format
|
||||
msgid "Back to Login"
|
||||
msgstr "返回登录页面"
|
||||
|
@ -266,12 +266,12 @@ msgstr "返回登录页面"
|
|||
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:22
|
||||
#, python-format
|
||||
msgid "Sign up"
|
||||
msgstr ""
|
||||
msgstr "注册"
|
||||
|
||||
#. module: auth_signup
|
||||
#: model:ir.model,name:auth_signup.model_res_partner
|
||||
msgid "Partner"
|
||||
msgstr "业务伙伴"
|
||||
msgstr "合作伙伴"
|
||||
|
||||
#. module: auth_signup
|
||||
#: field:res.partner,signup_token:0
|
||||
|
|
|
@ -1510,7 +1510,7 @@ rule or repeating pattern of time to exclude from the recurring rule."),
|
|||
continue
|
||||
if r['class']=='private':
|
||||
for f in r.keys():
|
||||
if f not in ('id','date','date_deadline','duration','user_id','state'):
|
||||
if f not in ('id','date','date_deadline','duration','user_id','state','interval','count'):
|
||||
if isinstance(r[f], list):
|
||||
r[f] = []
|
||||
else:
|
||||
|
|
|
@ -8,14 +8,14 @@ msgstr ""
|
|||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
|
||||
"PO-Revision-Date: 2012-11-28 16:50+0000\n"
|
||||
"Last-Translator: Joshua Jan(SHINEIT) <popkar77@gmail.com>\n"
|
||||
"PO-Revision-Date: 2013-06-29 05:34+0000\n"
|
||||
"Last-Translator: David.Xu <xzxyxu@gmail.com>\n"
|
||||
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-03-16 05:45+0000\n"
|
||||
"X-Generator: Launchpad (build 16532)\n"
|
||||
"X-Launchpad-Export-Date: 2013-06-30 05:56+0000\n"
|
||||
"X-Generator: Launchpad (build 16692)\n"
|
||||
|
||||
#. module: base_calendar
|
||||
#: selection:calendar.alarm,trigger_related:0
|
||||
|
@ -42,7 +42,7 @@ msgstr "这属性定义循环日程的日期/时间异常列表。"
|
|||
#: selection:calendar.todo,rrule_type:0
|
||||
#: selection:crm.meeting,rrule_type:0
|
||||
msgid "Week(s)"
|
||||
msgstr ""
|
||||
msgstr "周"
|
||||
|
||||
#. module: base_calendar
|
||||
#: field:calendar.event,we:0
|
||||
|
@ -248,7 +248,7 @@ msgid "To"
|
|||
msgstr "到"
|
||||
|
||||
#. module: base_calendar
|
||||
#: code:addons/base_calendar/base_calendar.py:1260
|
||||
#: code:addons/base_calendar/base_calendar.py:1262
|
||||
#, python-format
|
||||
msgid "Error!"
|
||||
msgstr "错误!"
|
||||
|
@ -300,7 +300,7 @@ msgstr "与会者的参与状况"
|
|||
#. module: base_calendar
|
||||
#: view:crm.meeting:0
|
||||
msgid "Mail To"
|
||||
msgstr ""
|
||||
msgstr "收信人"
|
||||
|
||||
#. module: base_calendar
|
||||
#: field:crm.meeting,name:0
|
||||
|
@ -361,9 +361,9 @@ msgstr "保存复杂的摘要(消息数量,……等)。为了插入到看板视
|
|||
#. module: base_calendar
|
||||
#: code:addons/base_calendar/base_calendar.py:399
|
||||
#: code:addons/base_calendar/base_calendar.py:441
|
||||
#: code:addons/base_calendar/base_calendar.py:1013
|
||||
#: code:addons/base_calendar/base_calendar.py:1015
|
||||
#: code:addons/base_calendar/base_calendar.py:1460
|
||||
#: code:addons/base_calendar/base_calendar.py:1017
|
||||
#: code:addons/base_calendar/base_calendar.py:1462
|
||||
#, python-format
|
||||
msgid "Warning!"
|
||||
msgstr "警告!"
|
||||
|
@ -478,7 +478,7 @@ msgstr "日期"
|
|||
#. module: base_calendar
|
||||
#: field:crm.meeting,message_follower_ids:0
|
||||
msgid "Followers"
|
||||
msgstr ""
|
||||
msgstr "关注者"
|
||||
|
||||
#. module: base_calendar
|
||||
#: field:calendar.event,location:0
|
||||
|
@ -522,7 +522,7 @@ msgid "Event alarm information"
|
|||
msgstr "事件提醒信息"
|
||||
|
||||
#. module: base_calendar
|
||||
#: code:addons/base_calendar/base_calendar.py:1015
|
||||
#: code:addons/base_calendar/base_calendar.py:1017
|
||||
#, python-format
|
||||
msgid "Count cannot be negative or 0."
|
||||
msgstr ""
|
||||
|
@ -530,21 +530,21 @@ msgstr ""
|
|||
#. module: base_calendar
|
||||
#: field:crm.meeting,create_date:0
|
||||
msgid "Creation Date"
|
||||
msgstr ""
|
||||
msgstr "创建日期"
|
||||
|
||||
#. module: base_calendar
|
||||
#: view:crm.meeting:0
|
||||
#: model:ir.model,name:base_calendar.model_crm_meeting
|
||||
#: model:res.request.link,name:base_calendar.request_link_meeting
|
||||
msgid "Meeting"
|
||||
msgstr ""
|
||||
msgstr "会议"
|
||||
|
||||
#. module: base_calendar
|
||||
#: selection:calendar.event,rrule_type:0
|
||||
#: selection:calendar.todo,rrule_type:0
|
||||
#: selection:crm.meeting,rrule_type:0
|
||||
msgid "Month(s)"
|
||||
msgstr ""
|
||||
msgstr "月"
|
||||
|
||||
#. module: base_calendar
|
||||
#: view:calendar.event:0
|
||||
|
@ -566,7 +566,7 @@ msgstr "Caldav 服务的URL"
|
|||
#. module: base_calendar
|
||||
#: model:ir.model,name:base_calendar.model_mail_wizard_invite
|
||||
msgid "Invite wizard"
|
||||
msgstr ""
|
||||
msgstr "邀请向导"
|
||||
|
||||
#. module: base_calendar
|
||||
#: selection:calendar.event,month_list:0
|
||||
|
@ -590,7 +590,7 @@ msgstr "周四"
|
|||
#. module: base_calendar
|
||||
#: view:crm.meeting:0
|
||||
msgid "Meeting Details"
|
||||
msgstr ""
|
||||
msgstr "会议详情"
|
||||
|
||||
#. module: base_calendar
|
||||
#: field:calendar.attendee,child_ids:0
|
||||
|
@ -601,21 +601,21 @@ msgstr "代表人"
|
|||
#: code:addons/base_calendar/crm_meeting.py:102
|
||||
#, python-format
|
||||
msgid "The following contacts have no email address :"
|
||||
msgstr ""
|
||||
msgstr "下列联系人没有电子邮件地址:"
|
||||
|
||||
#. module: base_calendar
|
||||
#: selection:calendar.event,rrule_type:0
|
||||
#: selection:calendar.todo,rrule_type:0
|
||||
#: selection:crm.meeting,rrule_type:0
|
||||
msgid "Year(s)"
|
||||
msgstr ""
|
||||
msgstr "年"
|
||||
|
||||
#. module: base_calendar
|
||||
#: view:crm.meeting.type:0
|
||||
#: model:ir.actions.act_window,name:base_calendar.action_crm_meeting_type
|
||||
#: model:ir.ui.menu,name:base_calendar.menu_crm_meeting_type
|
||||
msgid "Meeting Types"
|
||||
msgstr ""
|
||||
msgstr "会议类型"
|
||||
|
||||
#. module: base_calendar
|
||||
#: field:calendar.event,create_date:0
|
||||
|
@ -633,7 +633,7 @@ msgstr "全员可见"
|
|||
#. module: base_calendar
|
||||
#: view:crm.meeting:0
|
||||
msgid "hours"
|
||||
msgstr ""
|
||||
msgstr "小时"
|
||||
|
||||
#. module: base_calendar
|
||||
#: field:calendar.attendee,partner_id:0
|
||||
|
@ -655,7 +655,7 @@ msgstr "重复直到"
|
|||
#. module: base_calendar
|
||||
#: view:crm.meeting:0
|
||||
msgid "Options"
|
||||
msgstr ""
|
||||
msgstr "选项"
|
||||
|
||||
#. module: base_calendar
|
||||
#: selection:calendar.event,byday:0
|
||||
|
@ -694,7 +694,7 @@ msgstr "周二"
|
|||
#. module: base_calendar
|
||||
#: field:crm.meeting,categ_ids:0
|
||||
msgid "Tags"
|
||||
msgstr ""
|
||||
msgstr "标签"
|
||||
|
||||
#. module: base_calendar
|
||||
#: view:calendar.event:0
|
||||
|
@ -741,7 +741,7 @@ msgid "Declined"
|
|||
msgstr "已拒绝"
|
||||
|
||||
#. module: base_calendar
|
||||
#: code:addons/base_calendar/base_calendar.py:1460
|
||||
#: code:addons/base_calendar/base_calendar.py:1462
|
||||
#, python-format
|
||||
msgid "Group by date is not supported, use the calendar view instead."
|
||||
msgstr ""
|
||||
|
@ -1200,7 +1200,7 @@ msgid "Select Weekdays"
|
|||
msgstr ""
|
||||
|
||||
#. module: base_calendar
|
||||
#: code:addons/base_calendar/base_calendar.py:1519
|
||||
#: code:addons/base_calendar/base_calendar.py:1521
|
||||
#: selection:calendar.attendee,availability:0
|
||||
#: selection:calendar.event,show_as:0
|
||||
#: selection:calendar.todo,show_as:0
|
||||
|
@ -1453,7 +1453,7 @@ msgid "Weekday"
|
|||
msgstr "工作日"
|
||||
|
||||
#. module: base_calendar
|
||||
#: code:addons/base_calendar/base_calendar.py:1013
|
||||
#: code:addons/base_calendar/base_calendar.py:1015
|
||||
#, python-format
|
||||
msgid "Interval cannot be negative."
|
||||
msgstr ""
|
||||
|
|
Before Width: | Height: | Size: 7.5 KiB After Width: | Height: | Size: 7.5 KiB |
|
@ -8,19 +8,19 @@ msgstr ""
|
|||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-12-03 16:03+0000\n"
|
||||
"PO-Revision-Date: 2011-07-20 09:55+0000\n"
|
||||
"Last-Translator: OpenBMS JSC <Unknown>\n"
|
||||
"PO-Revision-Date: 2013-06-30 16:09+0000\n"
|
||||
"Last-Translator: Hung Tran <vanda6688@yahoo.com>\n"
|
||||
"Language-Team: Vietnamese <vi@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-03-16 05:49+0000\n"
|
||||
"X-Generator: Launchpad (build 16532)\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-01 05:14+0000\n"
|
||||
"X-Generator: Launchpad (build 16692)\n"
|
||||
|
||||
#. module: base_crypt
|
||||
#: model:ir.model,name:base_crypt.model_res_users
|
||||
msgid "Users"
|
||||
msgstr ""
|
||||
msgstr "Người dùng"
|
||||
|
||||
#, python-format
|
||||
#~ msgid "Error"
|
||||
|
|
|
@ -0,0 +1,249 @@
|
|||
# Thai translation for openobject-addons
|
||||
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
|
||||
"PO-Revision-Date: 2013-06-20 13:54+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Thai <th@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-06-21 05:36+0000\n"
|
||||
"X-Generator: Launchpad (build 16677)\n"
|
||||
|
||||
#. module: base_gengo
|
||||
#: view:res.company:0
|
||||
msgid "Comments for Translator"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: field:ir.translation,job_id:0
|
||||
msgid "Gengo Job ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: code:addons/base_gengo/wizard/base_gengo_translations.py:114
|
||||
#, python-format
|
||||
msgid "This language is not supported by the Gengo translation services."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: field:res.company,gengo_comment:0
|
||||
msgid "Comments"
|
||||
msgstr "ความคิดเห็น"
|
||||
|
||||
#. module: base_gengo
|
||||
#: field:res.company,gengo_private_key:0
|
||||
msgid "Gengo Private Key"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: model:ir.model,name:base_gengo.model_base_gengo_translations
|
||||
msgid "base.gengo.translations"
|
||||
msgstr "base.gengo.translations"
|
||||
|
||||
#. module: base_gengo
|
||||
#: help:res.company,gengo_auto_approve:0
|
||||
msgid "Jobs are Automatically Approved by Gengo."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: field:base.gengo.translations,lang_id:0
|
||||
msgid "Language"
|
||||
msgstr "ภาษา"
|
||||
|
||||
#. module: base_gengo
|
||||
#: field:ir.translation,gengo_comment:0
|
||||
msgid "Comments & Activity Linked to Gengo"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: code:addons/base_gengo/wizard/base_gengo_translations.py:124
|
||||
#, python-format
|
||||
msgid "Gengo Sync Translation (Response)"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: code:addons/base_gengo/wizard/base_gengo_translations.py:72
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Gengo `Public Key` or `Private Key` are missing. Enter your Gengo "
|
||||
"authentication parameters under `Settings > Companies > Gengo Parameters`."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: selection:ir.translation,gengo_translation:0
|
||||
msgid "Translation By Machine"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: code:addons/base_gengo/wizard/base_gengo_translations.py:155
|
||||
#, python-format
|
||||
msgid ""
|
||||
"%s\n"
|
||||
"\n"
|
||||
"--\n"
|
||||
" Commented on %s by %s."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: field:ir.translation,gengo_translation:0
|
||||
msgid "Gengo Translation Service Level"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: constraint:ir.translation:0
|
||||
msgid ""
|
||||
"The Gengo translation service selected is not supported for this language."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: selection:ir.translation,gengo_translation:0
|
||||
msgid "Standard"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: help:ir.translation,gengo_translation:0
|
||||
msgid ""
|
||||
"You can select here the service level you want for an automatic translation "
|
||||
"using Gengo."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: field:base.gengo.translations,restart_send_job:0
|
||||
msgid "Restart Sending Job"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: view:ir.translation:0
|
||||
msgid "To Approve In Gengo"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: view:res.company:0
|
||||
msgid "Private Key"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: view:res.company:0
|
||||
msgid "Public Key"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: field:res.company,gengo_public_key:0
|
||||
msgid "Gengo Public Key"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: code:addons/base_gengo/wizard/base_gengo_translations.py:123
|
||||
#, python-format
|
||||
msgid "Gengo Sync Translation (Request)"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: view:ir.translation:0
|
||||
msgid "Translations"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: field:res.company,gengo_auto_approve:0
|
||||
msgid "Auto Approve Translation ?"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: model:ir.actions.act_window,name:base_gengo.action_wizard_base_gengo_translations
|
||||
#: model:ir.ui.menu,name:base_gengo.menu_action_wizard_base_gengo_translations
|
||||
msgid "Gengo: Manual Request of Translation"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: code:addons/base_gengo/ir_translation.py:62
|
||||
#: code:addons/base_gengo/wizard/base_gengo_translations.py:109
|
||||
#, python-format
|
||||
msgid "Gengo Authentication Error"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: model:ir.model,name:base_gengo.model_res_company
|
||||
msgid "Companies"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: view:ir.translation:0
|
||||
msgid ""
|
||||
"Note: If the translation state is 'In Progress', it means that the "
|
||||
"translation has to be approved to be uploaded in this system. You are "
|
||||
"supposed to do that directly by using your Gengo Account"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: code:addons/base_gengo/wizard/base_gengo_translations.py:82
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Gengo connection failed with this message:\n"
|
||||
"``%s``"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: view:res.company:0
|
||||
msgid "Gengo Parameters"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: view:base.gengo.translations:0
|
||||
msgid "Send"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: selection:ir.translation,gengo_translation:0
|
||||
msgid "Ultra"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: model:ir.model,name:base_gengo.model_ir_translation
|
||||
msgid "ir.translation"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: view:ir.translation:0
|
||||
msgid "Gengo Translation Service"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: selection:ir.translation,gengo_translation:0
|
||||
msgid "Pro"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: view:base.gengo.translations:0
|
||||
msgid "Gengo Request Form"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: code:addons/base_gengo/wizard/base_gengo_translations.py:114
|
||||
#, python-format
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: help:res.company,gengo_comment:0
|
||||
msgid ""
|
||||
"This comment will be automatically be enclosed in each an every request sent "
|
||||
"to Gengo"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: view:base.gengo.translations:0
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_gengo
|
||||
#: view:base.gengo.translations:0
|
||||
msgid "or"
|
||||
msgstr ""
|
|
@ -7,14 +7,14 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
|
||||
"PO-Revision-Date: 2013-05-27 12:19+0000\n"
|
||||
"Last-Translator: leksei <lirgus@gmail.com>\n"
|
||||
"PO-Revision-Date: 2013-06-17 10:30+0000\n"
|
||||
"Last-Translator: Chertykov Denis <chertykov@gmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-05-28 05:17+0000\n"
|
||||
"X-Generator: Launchpad (build 16640)\n"
|
||||
"X-Launchpad-Export-Date: 2013-06-18 05:46+0000\n"
|
||||
"X-Generator: Launchpad (build 16673)\n"
|
||||
|
||||
#. module: base_setup
|
||||
#: view:sale.config.settings:0
|
||||
|
@ -92,7 +92,7 @@ msgstr "Общие настройки"
|
|||
#. module: base_setup
|
||||
#: selection:base.setup.terminology,partner:0
|
||||
msgid "Donor"
|
||||
msgstr ""
|
||||
msgstr "Спонсор"
|
||||
|
||||
#. module: base_setup
|
||||
#: view:base.config.settings:0
|
||||
|
@ -147,7 +147,7 @@ msgstr "res_config_contents"
|
|||
#. module: base_setup
|
||||
#: view:sale.config.settings:0
|
||||
msgid "Customer Features"
|
||||
msgstr ""
|
||||
msgstr "Свойства заказчика"
|
||||
|
||||
#. module: base_setup
|
||||
#: view:base.config.settings:0
|
||||
|
@ -157,7 +157,7 @@ msgstr "Импорт / Экспорт"
|
|||
#. module: base_setup
|
||||
#: view:sale.config.settings:0
|
||||
msgid "Sale Features"
|
||||
msgstr ""
|
||||
msgstr "Свойства продаж"
|
||||
|
||||
#. module: base_setup
|
||||
#: field:sale.config.settings,module_plugin_outlook:0
|
||||
|
@ -232,7 +232,7 @@ msgstr ""
|
|||
#. module: base_setup
|
||||
#: model:ir.model,name:base_setup.model_sale_config_settings
|
||||
msgid "sale.config.settings"
|
||||
msgstr ""
|
||||
msgstr "sale.config.settings"
|
||||
|
||||
#. module: base_setup
|
||||
#: field:base.setup.terminology,partner:0
|
||||
|
@ -263,7 +263,7 @@ msgstr ""
|
|||
#. module: base_setup
|
||||
#: model:ir.model,name:base_setup.model_base_setup_terminology
|
||||
msgid "base.setup.terminology"
|
||||
msgstr ""
|
||||
msgstr "base.setup.terminology"
|
||||
|
||||
#. module: base_setup
|
||||
#: selection:base.setup.terminology,partner:0
|
||||
|
|
|
@ -36,6 +36,8 @@ class base_config_settings(osv.osv_memory):
|
|||
help="""Enable the public part of openerp, openerp becomes a public website."""),
|
||||
'module_auth_oauth': fields.boolean('Use external authentication providers, sign in with google, facebook, ...'),
|
||||
'module_base_import': fields.boolean("Allow users to import data from CSV files"),
|
||||
'module_google_drive': fields.boolean('Attach Google documents to any record',
|
||||
help="""This installs the module google_docs."""),
|
||||
}
|
||||
|
||||
def open_company(self, cr, uid, ids, context=None):
|
||||
|
|
|
@ -81,6 +81,15 @@
|
|||
</div>
|
||||
</div>
|
||||
</group>
|
||||
<group>
|
||||
<label for="id" string="Google Drive"/>
|
||||
<div name="google_drive">
|
||||
<div name="module_google_drive">
|
||||
<field name="module_google_drive" class="oe_inline"/>
|
||||
<label for="module_google_drive"/>
|
||||
</div>
|
||||
</div>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
@ -31,7 +31,7 @@ Lets the user create a custom dashboard.
|
|||
Allows users to create custom dashboard.
|
||||
""",
|
||||
'author': 'OpenERP SA',
|
||||
'depends': ['base'],
|
||||
'depends': ['base', 'web'],
|
||||
'data': [
|
||||
'security/ir.model.access.csv',
|
||||
'board_view.xml',
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
# Vietnamese translation for openobject-addons
|
||||
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
|
||||
"PO-Revision-Date: 2013-06-30 16:10+0000\n"
|
||||
"Last-Translator: Hung Tran <vanda6688@yahoo.com>\n"
|
||||
"Language-Team: Vietnamese <vi@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-07-01 05:14+0000\n"
|
||||
"X-Generator: Launchpad (build 16692)\n"
|
||||
|
||||
#. module: claim_from_delivery
|
||||
#: view:stock.picking.out:0
|
||||
msgid "Claims"
|
||||
msgstr "Các khiếu nại"
|
||||
|
||||
#. module: claim_from_delivery
|
||||
#: model:res.request.link,name:claim_from_delivery.request_link_claim_from_delivery
|
||||
msgid "Delivery Order"
|
||||
msgstr ""
|
||||
|
||||
#. module: claim_from_delivery
|
||||
#: model:ir.actions.act_window,name:claim_from_delivery.action_claim_from_delivery
|
||||
msgid "Claim From Delivery"
|
||||
msgstr ""
|
|
@ -0,0 +1,37 @@
|
|||
# Korean translation for openobject-addons
|
||||
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
|
||||
"PO-Revision-Date: 2013-06-28 09:32+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Korean <ko@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-06-30 05:56+0000\n"
|
||||
"X-Generator: Launchpad (build 16692)\n"
|
||||
|
||||
#. module: contacts
|
||||
#: model:ir.actions.act_window,help:contacts.action_contacts
|
||||
msgid ""
|
||||
"<p class=\"oe_view_nocontent_create\">\n"
|
||||
" Click to add a contact in your address book.\n"
|
||||
" </p><p>\n"
|
||||
" OpenERP helps you easily track all activities related to\n"
|
||||
" a customer; discussions, history of business opportunities,\n"
|
||||
" documents, etc.\n"
|
||||
" </p>\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#. module: contacts
|
||||
#: model:ir.actions.act_window,name:contacts.action_contacts
|
||||
#: model:ir.ui.menu,name:contacts.menu_contacts
|
||||
msgid "Contacts"
|
||||
msgstr "연락처"
|
|
@ -0,0 +1,45 @@
|
|||
# Vietnamese translation for openobject-addons
|
||||
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
|
||||
"PO-Revision-Date: 2013-06-27 16:47+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Vietnamese <vi@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-06-28 05:42+0000\n"
|
||||
"X-Generator: Launchpad (build 16681)\n"
|
||||
|
||||
#. module: contacts
|
||||
#: model:ir.actions.act_window,help:contacts.action_contacts
|
||||
msgid ""
|
||||
"<p class=\"oe_view_nocontent_create\">\n"
|
||||
" Click to add a contact in your address book.\n"
|
||||
" </p><p>\n"
|
||||
" OpenERP helps you easily track all activities related to\n"
|
||||
" a customer; discussions, history of business opportunities,\n"
|
||||
" documents, etc.\n"
|
||||
" </p>\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"<p class=\"oe_view_nocontent_create\">\n"
|
||||
" Nhấn để thêm liên lạc vào sổ địa chỉ.\n"
|
||||
" </p><p>\n"
|
||||
" OpenERP giúp bạn theo dõi các hoạt động liên quan tới\n"
|
||||
" một khách hàng; thảo luận, lịch sử cơ hội kinh doanh,\n"
|
||||
" tài liệu v.v....\n"
|
||||
" </p>\n"
|
||||
" "
|
||||
|
||||
#. module: contacts
|
||||
#: model:ir.actions.act_window,name:contacts.action_contacts
|
||||
#: model:ir.ui.menu,name:contacts.menu_contacts
|
||||
msgid "Contacts"
|
||||
msgstr "Liên hệ"
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
|
@ -222,17 +222,13 @@ class crm_case_section(osv.osv):
|
|||
return res
|
||||
|
||||
def create(self, cr, uid, vals, context=None):
|
||||
mail_alias = self.pool.get('mail.alias')
|
||||
if not vals.get('alias_id'):
|
||||
alias_name = vals.pop('alias_name', None) or vals.get('name') # prevent errors during copy()
|
||||
alias_id = mail_alias.create_unique_alias(cr, uid,
|
||||
{'alias_name': alias_name},
|
||||
model_name="crm.lead",
|
||||
context=context)
|
||||
vals['alias_id'] = alias_id
|
||||
res = super(crm_case_section, self).create(cr, uid, vals, context)
|
||||
mail_alias.write(cr, uid, [vals['alias_id']], {'alias_defaults': {'section_id': res, 'type': 'lead'}}, context)
|
||||
return res
|
||||
if context is None:
|
||||
context = {}
|
||||
create_context = dict(context, alias_model_name='crm.lead', alias_parent_model_name=self._name)
|
||||
section_id = super(crm_case_section, self).create(cr, uid, vals, context=create_context)
|
||||
section = self.browse(cr, uid, section_id, context=context)
|
||||
self.pool.get('mail.alias').write(cr, uid, [section.alias_id.id], {'alias_parent_thread_id': section_id, 'alias_defaults': {'section_id': section_id, 'type': 'lead'}}, context=context)
|
||||
return section_id
|
||||
|
||||
def unlink(self, cr, uid, ids, context=None):
|
||||
# Cascade-delete mail aliases as well, as they should not exist without the sales team.
|
||||
|
|
|
@ -94,7 +94,7 @@
|
|||
<div class="oe_kanban_content">
|
||||
<h4 class="oe_center"><field name="name"/></h4>
|
||||
<div class="oe_kanban_alias oe_center" t-if="record.use_leads.raw_value and record.alias_id.value">
|
||||
<small><span class="oe_e" style="float: none;">%%</span><t t-raw="record.alias_id.raw_value[1]"/></small>
|
||||
<small><span class="oe_e oe_e_alias" style="float: none;">%%</span><t t-raw="record.alias_id.raw_value[1]"/></small>
|
||||
</div>
|
||||
<div class="oe_items_list">
|
||||
<div class="oe_salesteams_leads" t-if="record.use_leads.raw_value">
|
||||
|
@ -168,17 +168,6 @@
|
|||
<h1>
|
||||
<field name="name" string="Salesteam"/>
|
||||
</h1>
|
||||
<div name="group_alias"
|
||||
attrs="{'invisible': [('alias_domain', '=', False)]}">
|
||||
<label for="alias_id" string="Email Alias"/>
|
||||
<field name="alias_id" class="oe_inline oe_read_only" required="0" nolabel="1"/>
|
||||
<span name="edit_alias" class="oe_edit_only">
|
||||
<field name="alias_name" class="oe_inline"
|
||||
attrs="{'required': [('use_leads', '=', True), ('alias_id', '!=', False)]}"/>
|
||||
@
|
||||
<field name="alias_domain" class="oe_inline" readonly="1"/>
|
||||
</span>
|
||||
</div>
|
||||
<div name="options_active">
|
||||
<field name="use_leads" class="oe_inline"/><label for="use_leads"/>
|
||||
</div>
|
||||
|
@ -187,12 +176,25 @@
|
|||
<group>
|
||||
<field name="user_id"/>
|
||||
<field name="code"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="parent_id"/>
|
||||
<field name="change_responsible"/>
|
||||
<field name="active"/>
|
||||
</group>
|
||||
<group>
|
||||
<label for="alias_name" string="Email Alias"
|
||||
attrs="{'invisible': [('alias_domain', '=', False)]}"/>
|
||||
<div name="alias_def"
|
||||
attrs="{'invisible': [('alias_domain', '=', False)]}">
|
||||
<field name="alias_id" class="oe_read_only oe_inline"
|
||||
string="Email Alias" required="0"/>
|
||||
<div class="oe_edit_only oe_inline" name="edit_alias" style="display: inline;" >
|
||||
<field name="alias_name" class="oe_inline"/>@<field name="alias_domain" class="oe_inline" readonly="1"/>
|
||||
</div>
|
||||
</div>
|
||||
<field name="alias_contact" class="oe_inline"
|
||||
string="Accept Emails From"
|
||||
attrs="{'invisible': [('alias_domain', '=', False)]}"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook colspan="4">
|
||||
<page string="Team Members">
|
||||
|
|
|
@ -77,12 +77,12 @@ class crm_lead(base_stage, format_address, osv.osv):
|
|||
|
||||
_track = {
|
||||
'state': {
|
||||
'crm.mt_lead_create': lambda self, cr, uid, obj, ctx=None: obj['state'] in ['new', 'draft'],
|
||||
'crm.mt_lead_won': lambda self, cr, uid, obj, ctx=None: obj['state'] == 'done',
|
||||
'crm.mt_lead_lost': lambda self, cr, uid, obj, ctx=None: obj['state'] == 'cancel',
|
||||
'crm.mt_lead_create': lambda self, cr, uid, obj, ctx=None: obj.state in ['new', 'draft'],
|
||||
'crm.mt_lead_won': lambda self, cr, uid, obj, ctx=None: obj.state == 'done',
|
||||
'crm.mt_lead_lost': lambda self, cr, uid, obj, ctx=None: obj.state == 'cancel',
|
||||
},
|
||||
'stage_id': {
|
||||
'crm.mt_lead_stage': lambda self, cr, uid, obj, ctx=None: obj['state'] not in ['new', 'draft', 'cancel', 'done'],
|
||||
'crm.mt_lead_stage': lambda self, cr, uid, obj, ctx=None: obj.state not in ['new', 'draft', 'cancel', 'done'],
|
||||
},
|
||||
}
|
||||
|
||||
|
@ -96,13 +96,11 @@ class crm_lead(base_stage, format_address, osv.osv):
|
|||
def create(self, cr, uid, vals, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
if not vals.get('stage_id'):
|
||||
ctx = context.copy()
|
||||
if vals.get('section_id'):
|
||||
ctx['default_section_id'] = vals['section_id']
|
||||
if vals.get('type'):
|
||||
ctx['default_type'] = vals['type']
|
||||
vals['stage_id'] = self._get_default_stage_id(cr, uid, context=ctx)
|
||||
if vals.get('type') and not context.get('default_type'):
|
||||
context['default_type'] = vals.get('type')
|
||||
if vals.get('section_id') and not context.get('default_section_id'):
|
||||
context['default_section_id'] = vals.get('section_id')
|
||||
|
||||
# context: no_log, because subtype already handle this
|
||||
create_context = dict(context, mail_create_nolog=True)
|
||||
return super(crm_lead, self).create(cr, uid, vals, context=create_context)
|
||||
|
@ -719,7 +717,6 @@ class crm_lead(base_stage, format_address, osv.osv):
|
|||
continue
|
||||
vals = self._convert_opportunity_data(cr, uid, lead, customer, section_id, context=context)
|
||||
self.write(cr, uid, [lead.id], vals, context=context)
|
||||
self.message_post(cr, uid, ids, body=_("Lead <b>converted into an Opportunity</b>"), subtype="crm.mt_lead_convert_to_opportunity", context=context)
|
||||
|
||||
if user_ids or section_id:
|
||||
self.allocate_salesman(cr, uid, ids, user_ids, section_id, context=context)
|
||||
|
|
|
@ -163,12 +163,6 @@
|
|||
<field name="default" eval="False"/>
|
||||
<field name="description">Opportunity created</field>
|
||||
</record>
|
||||
<record id="mt_lead_convert_to_opportunity" model="mail.message.subtype">
|
||||
<field name="name">Lead to Opportunity</field>
|
||||
<field name="res_model">crm.lead</field>
|
||||
<field name="default" eval="False"/>
|
||||
<field name="description">Lead converted into an opportunity</field>
|
||||
</record>
|
||||
<record id="mt_lead_stage" model="mail.message.subtype">
|
||||
<field name="name">Stage Changed</field>
|
||||
<field name="res_model">crm.lead</field>
|
||||
|
@ -195,13 +189,6 @@
|
|||
<field name="parent_id" eval="ref('mt_lead_create')"/>
|
||||
<field name="relation_field">section_id</field>
|
||||
</record>
|
||||
<record id="mt_salesteam_lead_opportunity" model="mail.message.subtype">
|
||||
<field name="name">Lead to Opportunity</field>
|
||||
<field name="default" eval="False"/>
|
||||
<field name="res_model">crm.case.section</field>
|
||||
<field name="parent_id" eval="ref('mt_lead_convert_to_opportunity')"/>
|
||||
<field name="relation_field">section_id</field>
|
||||
</record>
|
||||
<record id="mt_salesteam_lead_stage" model="mail.message.subtype">
|
||||
<field name="name">Opportunity Stage Changed</field>
|
||||
<field name="res_model">crm.case.section</field>
|
||||
|
|
|
@ -709,5 +709,6 @@ Andrew</field>
|
|||
eval="[ ref('msg_case18_1'), ref('msg_case18_2')], True, {}"
|
||||
/>
|
||||
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -601,7 +601,9 @@
|
|||
'default_email_to':'{$object.email or \'\'}',
|
||||
'default_use_template': True,
|
||||
'default_template_id': ref('crm.email_template_opportunity_mail'),
|
||||
}"/>
|
||||
}"
|
||||
groups="base.group_sale_salesman"
|
||||
/>
|
||||
|
||||
<!--Update of email_template defined in crm_lead_data, to add ref_ir_act_window
|
||||
allowing to have a well formed email template (context action considered as set). -->
|
||||
|
@ -617,6 +619,7 @@
|
|||
if context.get('active_model') == 'crm.lead' and context.get('active_ids'):
|
||||
self.case_cancel(cr, uid, context['active_ids'], context=context)
|
||||
</field>
|
||||
<field name="groups_id" eval="[(4,ref('base.group_sale_salesman'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="ir_mark_as_lost" model="ir.values">
|
||||
|
|
|
@ -58,7 +58,7 @@
|
|||
<field name="view_mode">tree,calendar</field>
|
||||
<field name="view_id" ref="crm_case_inbound_phone_tree_view"/>
|
||||
<field name="domain">[]</field>
|
||||
<field name="context">{}</field>
|
||||
<field name="context">{'default_state': 'done'}</field>
|
||||
<field name="search_view_id" ref="crm.view_crm_case_phonecalls_filter"/>
|
||||
<field name="help" type="html">
|
||||
<p class="oe_view_nocontent_create">
|
||||
|
|
|
@ -7,14 +7,14 @@ msgstr ""
|
|||
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
|
||||
"PO-Revision-Date: 2013-04-13 08:42+0000\n"
|
||||
"PO-Revision-Date: 2013-06-21 07:11+0000\n"
|
||||
"Last-Translator: krnkris <Unknown>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=utf-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2013-04-14 05:12+0000\n"
|
||||
"X-Generator: Launchpad (build 16564)\n"
|
||||
"X-Launchpad-Export-Date: 2013-06-22 05:36+0000\n"
|
||||
"X-Generator: Launchpad (build 16677)\n"
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.lead.report:0
|
||||
|
@ -31,7 +31,7 @@ msgstr ""
|
|||
"létrehozását a bejövő levelekből."
|
||||
|
||||
#. module: crm
|
||||
#: code:addons/crm/crm_lead.py:881
|
||||
#: code:addons/crm/crm_lead.py:898
|
||||
#: selection:crm.case.stage,type:0
|
||||
#: view:crm.lead:0
|
||||
#: selection:crm.lead,type:0
|
||||
|
@ -192,8 +192,8 @@ msgstr ""
|
|||
"direkt HTML formátumú ahhoz hogy beilleszthető legyen a kanban nézetekbe."
|
||||
|
||||
#. module: crm
|
||||
#: code:addons/crm/crm_lead.py:624
|
||||
#: code:addons/crm/crm_lead.py:744
|
||||
#: code:addons/crm/crm_lead.py:640
|
||||
#: code:addons/crm/crm_lead.py:761
|
||||
#: code:addons/crm/crm_phonecall.py:280
|
||||
#, python-format
|
||||
msgid "Warning!"
|
||||
|
@ -304,7 +304,7 @@ msgid "Prospect Partner"
|
|||
msgstr "Leendő partner"
|
||||
|
||||
#. module: crm
|
||||
#: code:addons/crm/crm_lead.py:982
|
||||
#: code:addons/crm/crm_lead.py:1002
|
||||
#, python-format
|
||||
msgid "No Subject"
|
||||
msgstr "Nincs tárgy"
|
||||
|
@ -482,7 +482,7 @@ msgid "#Opportunities"
|
|||
msgstr "Lehetőségek száma"
|
||||
|
||||
#. module: crm
|
||||
#: code:addons/crm/crm_lead.py:624
|
||||
#: code:addons/crm/crm_lead.py:640
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Please select more than one element (lead or opportunity) from the list view."
|
||||
|
@ -782,7 +782,7 @@ msgid "Statistics Dashboard"
|
|||
msgstr "Statisztika vezérlőpult"
|
||||
|
||||
#. module: crm
|
||||
#: code:addons/crm/crm_lead.py:861
|
||||
#: code:addons/crm/crm_lead.py:878
|
||||
#: model:crm.case.stage,name:crm.stage_lead2
|
||||
#: selection:crm.case.stage,type:0
|
||||
#: view:crm.lead:0
|
||||
|
@ -844,7 +844,7 @@ msgid "Exclusive"
|
|||
msgstr "Kizárólagos"
|
||||
|
||||
#. module: crm
|
||||
#: code:addons/crm/crm_lead.py:584
|
||||
#: code:addons/crm/crm_lead.py:600
|
||||
#, python-format
|
||||
msgid "From %s : %s"
|
||||
msgstr "Ettől %s : %s"
|
||||
|
@ -1016,7 +1016,7 @@ msgid "Next Action"
|
|||
msgstr "Következő művelet"
|
||||
|
||||
#. module: crm
|
||||
#: code:addons/crm/crm_lead.py:763
|
||||
#: code:addons/crm/crm_lead.py:780
|
||||
#, python-format
|
||||
msgid "<b>Partner</b> set to <em>%s</em>."
|
||||
msgstr "<b>Partner</b> beállítva mint <em>%s</em>."
|
||||
|
@ -1109,7 +1109,7 @@ msgid "Creation Date"
|
|||
msgstr "Létrehozás dátuma"
|
||||
|
||||
#. module: crm
|
||||
#: code:addons/crm/crm_lead.py:698
|
||||
#: code:addons/crm/crm_lead.py:715
|
||||
#, python-format
|
||||
msgid "Lead <b>converted into an Opportunity</b>"
|
||||
msgstr "Tervezet <b>lehetőséggé átalakítva lehetőséggé</b>"
|
||||
|
@ -1324,7 +1324,9 @@ msgid "Days to Close"
|
|||
msgstr "Lezárásig hátralévő napok"
|
||||
|
||||
#. module: crm
|
||||
#: code:addons/crm/crm_lead.py:1057
|
||||
#: field:crm.case.section,complete_name:0
|
||||
#, python-format
|
||||
msgid "unknown"
|
||||
msgstr "Ismeretlen"
|
||||
|
||||
|
@ -1415,7 +1417,7 @@ msgid "Lead Description"
|
|||
msgstr "Érdeklődés leírása"
|
||||
|
||||
#. module: crm
|
||||
#: code:addons/crm/crm_lead.py:565
|
||||
#: code:addons/crm/crm_lead.py:581
|
||||
#, python-format
|
||||
msgid "Merged opportunities"
|
||||
msgstr "Lehetőségek összefésülése"
|
||||
|
@ -1989,7 +1991,7 @@ msgid "Leads"
|
|||
msgstr "Érdeklődők"
|
||||
|
||||
#. module: crm
|
||||
#: code:addons/crm/crm_lead.py:563
|
||||
#: code:addons/crm/crm_lead.py:579
|
||||
#, python-format
|
||||
msgid "Merged leads"
|
||||
msgstr "Össztefésült érdeklődések"
|
||||
|
@ -2085,7 +2087,6 @@ msgid "Global CC"
|
|||
msgstr "Globális CC /másolat/"
|
||||
|
||||
#. module: crm
|
||||
#: view:crm.lead:0
|
||||
#: view:crm.phonecall:0
|
||||
#: model:ir.actions.act_window,name:crm.crm_case_categ_phone0
|
||||
#: model:ir.ui.menu,name:crm.menu_crm_case_phone
|
||||
|
@ -2399,7 +2400,7 @@ msgstr "Érdeklődés átalakítva egy lehetőséggé"
|
|||
#. module: crm
|
||||
#: view:crm.lead:0
|
||||
msgid "Unassigned Leads"
|
||||
msgstr "Nem iktatott rdeklődések"
|
||||
msgstr "Nem iktatott érdeklődések"
|
||||
|
||||
#. module: crm
|
||||
#: model:mail.message.subtype,description:crm.mt_lead_won
|
||||
|
@ -3100,7 +3101,7 @@ msgid "Working Hours"
|
|||
msgstr "Munkaórák"
|
||||
|
||||
#. module: crm
|
||||
#: code:addons/crm/crm_lead.py:968
|
||||
#: code:addons/crm/crm_lead.py:986
|
||||
#: view:crm.lead:0
|
||||
#: field:crm.lead2opportunity.partner,partner_id:0
|
||||
#: field:crm.lead2opportunity.partner.mass,partner_id:0
|
||||
|
|
|
@ -56,7 +56,7 @@ class res_partner(osv.osv):
|
|||
|
||||
default.update({'opportunity_ids': [], 'meeting_ids' : [], 'phonecall_ids' : []})
|
||||
|
||||
super(res_partner, self).copy(cr, uid, record_id, default, context)
|
||||
return super(res_partner, self).copy(cr, uid, record_id, default, context)
|
||||
|
||||
def redirect_partner_form(self, cr, uid, partner_id, context=None):
|
||||
search_view = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'base', 'view_res_partner_filter')
|
||||
|
|
Before Width: | Height: | Size: 8.7 KiB After Width: | Height: | Size: 8.7 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 5.7 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 39 KiB |
Before Width: | Height: | Size: 9.4 KiB After Width: | Height: | Size: 9.4 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 83 KiB |
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 50 KiB |
Before Width: | Height: | Size: 57 KiB After Width: | Height: | Size: 57 KiB |
Before Width: | Height: | Size: 134 KiB After Width: | Height: | Size: 134 KiB |