[MERGE] forward port branch saas-11.2 up to aae54ecc15
This commit is contained in:
@@ -242,6 +242,50 @@ msgid ""
|
||||
"</p>\n"
|
||||
"</div>"
|
||||
msgstr ""
|
||||
"<div>\n"
|
||||
"<p>Hallo ${object.partner_id.name}\n"
|
||||
"% set access_action = object.with_context(force_website=True).get_access_action()\n"
|
||||
"% set is_online = access_action and access_action['type'] == 'ir.actions.act_url'\n"
|
||||
"% set access_url = object.get_mail_url()\n"
|
||||
"\n"
|
||||
"% if object.partner_id.parent_id:\n"
|
||||
" (<i>${object.partner_id.parent_id.name}</i>)\n"
|
||||
"% endif\n"
|
||||
",</p>\n"
|
||||
"<p>hier im Anhang finden Sie Ihre\n"
|
||||
"% if object.number:\n"
|
||||
"Rechnung <strong>${object.number}</strong>\n"
|
||||
"% else:\n"
|
||||
"Rechnung\n"
|
||||
"% endif\n"
|
||||
"% if object.origin:\n"
|
||||
"(mit Referenz: ${object.origin})\n"
|
||||
"% endif\n"
|
||||
"mit einem Betrag von <strong>${format_amount(object.amount_total, object.currency_id)}</strong>\n"
|
||||
"from ${object.company_id.name}.\n"
|
||||
"</p>\n"
|
||||
"\n"
|
||||
"% if is_online:\n"
|
||||
" <br/><br/>\n"
|
||||
" <center>\n"
|
||||
" <a href=\"${access_url}\" style=\"background-color: #1abc9c; padding: 20px; text-decoration: none; color: #fff; border-radius: 5px; font-size: 16px;\" class=\"o_default_snippet_text\">Rechnung anzeigen</a>\n"
|
||||
" </center>\n"
|
||||
"% endif\n"
|
||||
" <br/><br/>\n"
|
||||
"\n"
|
||||
"% if object.state=='paid':\n"
|
||||
" <p>Diese Rechnung ist bereits bezahlt.</p>\n"
|
||||
"% else:\n"
|
||||
" <p>Bitte führen Sie die Zahlung so bald wie möglich durch.</p>\n"
|
||||
"% endif\n"
|
||||
"\n"
|
||||
"<p>Danke,</p>\n"
|
||||
"<p style=\"color:#888888\">\n"
|
||||
"% if object.user_id and object.user_id.signature:\n"
|
||||
" ${object.user_id.signature | safe}\n"
|
||||
"% endif\n"
|
||||
"</p>\n"
|
||||
"</div>"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.ui.view,arch_db:account.portal_my_invoices
|
||||
|
||||
@@ -77,6 +77,10 @@ msgid ""
|
||||
" * The 'Paid' status is set automatically when the invoice is paid. Its related journal entries may or may not be reconciled.\n"
|
||||
" * The 'Cancelled' status is used when user cancel invoice."
|
||||
msgstr ""
|
||||
"* El estado de \"Borrador\" se usa cuando se codifica un factura nueva y no confirmada.\n"
|
||||
"* El estado \"Abierto\" se usa cuando el usuario crea una factura, y se genera un número de factura. Este estado se mantiene hasta que el usuario paga la factura\n"
|
||||
"* El Estado \"Pagado\" se establece automáticamente cuando la factura se paga. Sus entradas diarias relacionadas pueden estar o no conciliadas.\n"
|
||||
"* El estado \"Cancelado\" se usa cuando el usuario cancela una factura"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.model.fields,field_description:account.field_account_chart_template__code_digits
|
||||
@@ -203,6 +207,16 @@ msgid ""
|
||||
"</p>\n"
|
||||
"</data>"
|
||||
msgstr ""
|
||||
"<?xml version=\"1.0\"?>\n"
|
||||
"<data>Estimado ${object.partner_id.name},</p>\n"
|
||||
"<p>Gracias por tu pago.<br/> Aquí está tu recibo de pago <strong>${(object.name or '').replace('/','-')}</strong> por un monto de <strong>${format_amount(object.amount, object.currency_id)}</strong> efectuado por ${object.company_id.name}.</p>\n"
|
||||
"<p>Si tienes alguna pregunta, no dudes en contactarnos.</p>\n"
|
||||
"<p>Cordiales saludos,\n"
|
||||
"% if user and user.signature:\n"
|
||||
"${user.signature | safe}\n"
|
||||
"% endif\n"
|
||||
"</p>\n"
|
||||
"</data>"
|
||||
|
||||
#. module: account
|
||||
#: model:mail.template,body_html:account.email_template_edi_invoice
|
||||
@@ -252,6 +266,50 @@ msgid ""
|
||||
"</p>\n"
|
||||
"</div>"
|
||||
msgstr ""
|
||||
"<div>\n"
|
||||
"<p>Estimado ${object.partner_id.name}\n"
|
||||
"% set access_action = object.with_context(force_website=True).get_access_action()\n"
|
||||
"% set is_online = access_action and access_action['type'] == 'ir.actions.act_url'\n"
|
||||
"% set access_url = object.get_mail_url()\n"
|
||||
"\n"
|
||||
"% if object.partner_id.parent_id:\n"
|
||||
" (<i>${object.partner_id.parent_id.name}</i>)\n"
|
||||
"% endif\n"
|
||||
",</p>\n"
|
||||
"<p>Aquí está, en el archivo adjunto, tu \n"
|
||||
"% if object.number:\n"
|
||||
"<strong>factura ${object.number}</strong>\n"
|
||||
"% else:\n"
|
||||
"invoice\n"
|
||||
"% endif\n"
|
||||
"% if object.origin:\n"
|
||||
"(with reference: ${object.origin})\n"
|
||||
"% endif\n"
|
||||
"por un monto de <strong>${format_amount(object.amount_total, object.currency_id)}</strong>\n"
|
||||
"efectuado por ${object.company_id.name}.\n"
|
||||
"</p>\n"
|
||||
"\n"
|
||||
"% if is_online:\n"
|
||||
" <br/><br/>\n"
|
||||
" <center>\n"
|
||||
" <a href=\"${access_url}\" style=\"background-color: #1abc9c; padding: 20px; text-decoration: none; color: #fff; border-radius: 5px; font-size: 16px;\" class=\"o_default_snippet_text\">Ver factura</a>\n"
|
||||
" </center>\n"
|
||||
"% endif\n"
|
||||
" <br/><br/>\n"
|
||||
"\n"
|
||||
"% if object.state=='paid':\n"
|
||||
" <p>Esta factura ya se encuentra pagada.</p>\n"
|
||||
"% else:\n"
|
||||
" <p>Por favor remita el pago a su más pronta conveniencia.</p>\n"
|
||||
"% endif\n"
|
||||
"\n"
|
||||
"<p>Gracias,</p>\n"
|
||||
"<p style=\"color:#888888\">\n"
|
||||
"% if object.user_id and object.user_id.signature:\n"
|
||||
" ${object.user_id.signature | safe}\n"
|
||||
"% endif\n"
|
||||
"</p>\n"
|
||||
"</div>"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.ui.view,arch_db:account.portal_my_invoices
|
||||
|
||||
@@ -87,6 +87,10 @@ msgid ""
|
||||
" * The 'Paid' status is set automatically when the invoice is paid. Its related journal entries may or may not be reconciled.\n"
|
||||
" * The 'Cancelled' status is used when user cancel invoice."
|
||||
msgstr ""
|
||||
"* L'état \"Brouillon\" est utilisé lorsqu'un utilisateur est en train de saisir ou de modifier une nouvelle facture non confirmée.\n"
|
||||
"* L'état 'Ouvert' est utilisé lorsque l'utilisateur crée une facture, celle-ci a alors un numéro de facture La facture reste dans ce statut \"Ouvert\" jusqu'à ce qu'elle soit payée.\n"
|
||||
"* L'état 'Payé' est affecté automatiquement lorsque la facture est payée. Ses écritures dans les journaux connexes peuvent ou non être réconciliées.\n"
|
||||
"* L'état \"Annulé\" est utilisé lorsque l'utilisateur annule la facture."
|
||||
|
||||
#. module: account
|
||||
#: model:ir.model.fields,field_description:account.field_account_chart_template__code_digits
|
||||
@@ -213,6 +217,16 @@ msgid ""
|
||||
"</p>\n"
|
||||
"</data>"
|
||||
msgstr ""
|
||||
"<?xml version=\"1.0\"?>\n"
|
||||
"<data><p>Chèr(e) ${object.partner_id.name},</p>\n"
|
||||
"<p>Merci pour votre règlement. <br/> Voici le reçu de votre paiement <strong>${(object.name or '').replace('/','-')}</strong> d'un montant de <strong>${format_amount(object.amount, object.currency_id)}</strong> de ${object.company_id.name}.</p>\n"
|
||||
"<p>Si vous avez des questions, pensez à nous contacter.</p>\n"
|
||||
"<p>Sincères salutations,\n"
|
||||
"% if user and user.signature:\n"
|
||||
"${user.signature | safe}\n"
|
||||
"% endif\n"
|
||||
"</p>\n"
|
||||
"</data>"
|
||||
|
||||
#. module: account
|
||||
#: model:mail.template,body_html:account.email_template_edi_invoice
|
||||
@@ -262,6 +276,50 @@ msgid ""
|
||||
"</p>\n"
|
||||
"</div>"
|
||||
msgstr ""
|
||||
"<div>\n"
|
||||
"<p>Cher ${object.partner_id.name}\n"
|
||||
"% set access_action = object.with_context(force_website=True).get_access_action()\n"
|
||||
"% set is_online = access_action and access_action['type'] == 'ir.actions.act_url'\n"
|
||||
"% set access_url = object.get_mail_url()\n"
|
||||
"\n"
|
||||
"% if object.partner_id.parent_id:\n"
|
||||
" (<i>${object.partner_id.parent_id.name}</i>)\n"
|
||||
"% endif\n"
|
||||
",</p>\n"
|
||||
"<p>Voici, en pièce jointe, votre \n"
|
||||
"% if object.number:\n"
|
||||
"facture <strong>${object.number}</strong>\n"
|
||||
"% else:\n"
|
||||
"facture\n"
|
||||
"% endif\n"
|
||||
"% if object.origin:\n"
|
||||
"(avec la référence ${object.origin})\n"
|
||||
"% endif\n"
|
||||
", son montant s'élève à <strong>${format_amount(object.amount_total, object.currency_id)}</strong>\n"
|
||||
"émis par ${object.company_id.name}.\n"
|
||||
"</p>\n"
|
||||
"\n"
|
||||
"% if is_online:\n"
|
||||
" <br/><br/>\n"
|
||||
" <center>\n"
|
||||
" <a href=\"${access_url}\" style=\"background-color: #1abc9c; padding: 20px; text-decoration: none; color: #fff; border-radius: 5px; font-size: 16px;\" class=\"o_default_snippet_text\">Voir la facture</a>\n"
|
||||
" </center>\n"
|
||||
"% endif\n"
|
||||
" <br/><br/>\n"
|
||||
"\n"
|
||||
"% if object.state=='paid':\n"
|
||||
" <p>Cette facture est déjà payée.</p>\n"
|
||||
"% else:\n"
|
||||
" <p>Merci de procéder au payement dès que possible.</p>\n"
|
||||
"% endif\n"
|
||||
"\n"
|
||||
"<p>Merci,</p>\n"
|
||||
"<p style=\"color:#888888\">\n"
|
||||
"% if object.user_id and object.user_id.signature:\n"
|
||||
" ${object.user_id.signature | safe}\n"
|
||||
"% endif\n"
|
||||
"</p>\n"
|
||||
"</div>"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.ui.view,arch_db:account.portal_my_invoices
|
||||
|
||||
@@ -9207,6 +9207,8 @@ msgid ""
|
||||
"There are still unposted entries in the period you want to lock. You should "
|
||||
"either post or delete them."
|
||||
msgstr ""
|
||||
"Könyveletlen tételek vannak a zárolni tervezett periódusban. Kérjük "
|
||||
"könyvelje vagy törölje ezen tételeket."
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/models/account_bank_statement.py:179
|
||||
@@ -10351,6 +10353,7 @@ msgstr "Nem törölhet olyan fizetést, amit már lekönyvelt"
|
||||
#, python-format
|
||||
msgid "You can only delete an invoice line if the invoice is in draft state."
|
||||
msgstr ""
|
||||
"Számlatétel csak akkor törölhető, ha a számla piszkozat állapotban van."
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/models/account_payment.py:142
|
||||
@@ -10406,6 +10409,7 @@ msgid ""
|
||||
"You cannot change the currency of the company since some journal items "
|
||||
"already exist"
|
||||
msgstr ""
|
||||
"A vállalat pénzneme nem változtatható, mivel már vannak könyvelési tételek."
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/models/account.py:271
|
||||
@@ -10591,7 +10595,7 @@ msgstr "Önnek van"
|
||||
#: code:addons/account/models/account_payment.py:500
|
||||
#, python-format
|
||||
msgid "You have to define a sequence for %s in your company."
|
||||
msgstr ""
|
||||
msgstr "Meg kell adni egy szekvenciát %s számára a vállalatban."
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/wizard/account_report_general_ledger.py:21
|
||||
|
||||
+31
-24
@@ -1361,7 +1361,7 @@ msgstr "Разрешить печать чеков и депозиты"
|
||||
#. module: account
|
||||
#: model:res.groups,name:account.group_cash_rounding
|
||||
msgid "Allow the cash rounding management"
|
||||
msgstr ""
|
||||
msgstr "Разрешает управление округлением наличности"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.ui.view,arch_db:account.res_config_settings_view_form
|
||||
@@ -2278,19 +2278,19 @@ msgstr "Кассы"
|
||||
#. module: account
|
||||
#: model:ir.model.fields,field_description:account.field_res_config_settings__group_cash_rounding
|
||||
msgid "Cash Rounding"
|
||||
msgstr ""
|
||||
msgstr "Округление наличных денег"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.model.fields,field_description:account.field_account_invoice__cash_rounding_id
|
||||
msgid "Cash Rounding Method"
|
||||
msgstr ""
|
||||
msgstr "Способ округления наличности"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.actions.act_window,name:account.rounding_list_action
|
||||
#: model:ir.ui.menu,name:account.menu_action_rounding_form_view
|
||||
#: model:ir.ui.view,arch_db:account.res_config_settings_view_form
|
||||
msgid "Cash Roundings"
|
||||
msgstr ""
|
||||
msgstr "Округления наличности"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.ui.view,arch_db:account.account_journal_dashboard_kanban_view
|
||||
@@ -2683,7 +2683,7 @@ msgstr "Написать письмо"
|
||||
#. module: account
|
||||
#: model:ir.ui.view,arch_db:account.res_config_settings_view_form
|
||||
msgid "Compute tax rates based on U.S. ZIP codes"
|
||||
msgstr ""
|
||||
msgstr "Рассчитывать налоги на основании почтовых кодов (только для США)"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.model.fields,help:account.field_account_move_line__counterpart
|
||||
@@ -2973,7 +2973,7 @@ msgstr "Создать модель"
|
||||
#. module: account
|
||||
#: model:ir.actions.act_window,help:account.rounding_list_action
|
||||
msgid "Create the first cash rounding"
|
||||
msgstr ""
|
||||
msgstr "Создайте первое округление наличности"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.model.fields,field_description:account.field_account_account__create_uid
|
||||
@@ -3535,7 +3535,7 @@ msgstr "Налоги по умолчанию"
|
||||
#. module: account
|
||||
#: model:ir.ui.view,arch_db:account.res_config_settings_view_form
|
||||
msgid "Default taxes applied to local transactions"
|
||||
msgstr ""
|
||||
msgstr "Налоги, применяемые по умолчанию к местным сделкам"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.ui.view,arch_db:account.res_config_settings_view_form
|
||||
@@ -3551,6 +3551,7 @@ msgstr ""
|
||||
#: model:ir.ui.view,arch_db:account.res_config_settings_view_form
|
||||
msgid "Define the smallest coinage of the currency used to pay by cash."
|
||||
msgstr ""
|
||||
"Определите самую маленькую монетку(размерность) при расчетах наличными"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.model.fields,help:account.field_account_invoice__cash_rounding_id
|
||||
@@ -3558,6 +3559,7 @@ msgid ""
|
||||
"Defines the smallest coinage of the currency that can be used to pay by "
|
||||
"cash."
|
||||
msgstr ""
|
||||
"Определяет самую маленькую монетку(размерность) при расчетах наличными"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.ui.view,arch_db:account.view_account_tax_template_form
|
||||
@@ -3903,7 +3905,7 @@ msgstr ""
|
||||
#. module: account
|
||||
#: model:ir.model.fields,field_description:account.field_res_config_settings__module_l10n_eu_service
|
||||
msgid "EU Digital Goods VAT"
|
||||
msgstr ""
|
||||
msgstr "НДС на цифровые товары по правилам ЕС"
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/models/chart_template.py:171
|
||||
@@ -4138,7 +4140,7 @@ msgstr "Налогово-бюджетная информация"
|
||||
#. module: account
|
||||
#: model:ir.ui.view,arch_db:account.res_config_settings_view_form
|
||||
msgid "Fiscal Localization"
|
||||
msgstr ""
|
||||
msgstr "Налоговая локализация"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.model.fields,field_description:account.field_account_fiscal_position_account_template__position_id
|
||||
@@ -4285,7 +4287,7 @@ msgstr "Все операции по этому счету принудител
|
||||
#: code:addons/account/report/account_tax.py:13
|
||||
#, python-format
|
||||
msgid "Form content is missing, this report cannot be printed."
|
||||
msgstr ""
|
||||
msgstr "Не найдены данные в форме, отчет не сформирован"
|
||||
|
||||
#. module: account
|
||||
#: code:addons/account/models/account_invoice.py:100
|
||||
@@ -4380,6 +4382,7 @@ msgstr ""
|
||||
#: model:ir.ui.view,arch_db:account.res_config_settings_view_form
|
||||
msgid "Get warnings when invoicing specific customers"
|
||||
msgstr ""
|
||||
"Получайте уведомления при фактурировании счетов по определенным клиентам"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.ui.view,arch_db:account.res_config_settings_view_form
|
||||
@@ -4530,7 +4533,7 @@ msgstr ""
|
||||
#. module: account
|
||||
#: model:ir.ui.view,arch_db:account.res_config_settings_view_form
|
||||
msgid "How total tax amount is computed in orders and invoices"
|
||||
msgstr ""
|
||||
msgstr "Как рассчитывается сумма налогов в заказах и счетах"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.model.fields,field_description:account.field_account_abstract_payment__id
|
||||
@@ -5182,7 +5185,7 @@ msgstr ""
|
||||
#. module: account
|
||||
#: model:ir.model.fields,help:account.field_account_invoice_line__is_rounding_line
|
||||
msgid "Is a rounding line in case of cash rounding."
|
||||
msgstr ""
|
||||
msgstr "Позиция к округлению в случае наличного расчета"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.model.fields,field_description:account.field_account_bank_statement__is_difference_zero
|
||||
@@ -5880,7 +5883,7 @@ msgstr "РАЗНОЕ"
|
||||
#. module: account
|
||||
#: model:ir.ui.view,arch_db:account.res_config_settings_view_form
|
||||
msgid "Mail your invoices in one-click using"
|
||||
msgstr ""
|
||||
msgstr "Отправляйте ваши счета в один клик, используя "
|
||||
|
||||
#. module: account
|
||||
#: model:ir.ui.view,arch_db:account.res_config_settings_view_form
|
||||
@@ -5900,7 +5903,7 @@ msgstr "Основная валюта компании."
|
||||
#. module: account
|
||||
#: model:ir.ui.view,arch_db:account.res_config_settings_view_form
|
||||
msgid "Main currency of your company"
|
||||
msgstr ""
|
||||
msgstr "Основная валюта вашей компании"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.ui.menu,name:account.account_management_menu
|
||||
@@ -5970,7 +5973,7 @@ msgstr "Март"
|
||||
#. module: account
|
||||
#: model:ir.ui.view,arch_db:account.res_config_settings_view_form
|
||||
msgid "Margin Analysis"
|
||||
msgstr ""
|
||||
msgstr "Анализ прибыли"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.ui.view,arch_db:account.setup_bank_journal_form
|
||||
@@ -6111,7 +6114,7 @@ msgstr ""
|
||||
#. module: account
|
||||
#: model:ir.ui.view,arch_db:account.res_config_settings_view_form
|
||||
msgid "Monitor your product margins from invoices"
|
||||
msgstr ""
|
||||
msgstr "Следите за маржинальностью ваших продуктов по инвойсам"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.actions.act_window,name:account.act_account_invoice_partner_relation
|
||||
@@ -6804,7 +6807,7 @@ msgstr "Прошлые"
|
||||
#. module: account
|
||||
#: model:ir.ui.view,arch_db:account.res_config_settings_view_form
|
||||
msgid "Pay your bills in one-click using Euro SEPA service"
|
||||
msgstr ""
|
||||
msgstr "Оплачивайте ваши счета в один клик, используя сервис Euro SEPA"
|
||||
|
||||
#. module: account
|
||||
#: model:account.account.type,name:account.data_account_type_payable
|
||||
@@ -7814,12 +7817,12 @@ msgstr "Округление по Строке"
|
||||
#. module: account
|
||||
#: model:ir.ui.view,arch_db:account.rounding_form_view
|
||||
msgid "Rounding Form"
|
||||
msgstr ""
|
||||
msgstr "Округление"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.model.fields,field_description:account.field_account_invoice_line__is_rounding_line
|
||||
msgid "Rounding Line"
|
||||
msgstr ""
|
||||
msgstr "Округление по строкам"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.model.fields,field_description:account.field_account_cash_rounding__rounding_method
|
||||
@@ -7835,12 +7838,12 @@ msgstr "Точность округления"
|
||||
#. module: account
|
||||
#: model:ir.model.fields,field_description:account.field_account_cash_rounding__strategy
|
||||
msgid "Rounding Strategy"
|
||||
msgstr ""
|
||||
msgstr "Стратегия округления"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.ui.view,arch_db:account.rounding_tree_view
|
||||
msgid "Rounding Tree"
|
||||
msgstr ""
|
||||
msgstr "Дерево округления"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.model.fields,field_description:account.field_res_config_settings__module_account_sepa
|
||||
@@ -8633,6 +8636,7 @@ msgid ""
|
||||
"Taxes, fiscal positions, chart of accounts & legal statements for your "
|
||||
"country"
|
||||
msgstr ""
|
||||
"Налоги, фискальные позиции план счетов и правовые особенности вашей страны"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.model.fields,help:account.field_account_move_line__balance
|
||||
@@ -8935,6 +8939,9 @@ msgid ""
|
||||
"The cash rounding cannot be computed because the difference must be added on the biggest tax found and no tax are specified.\n"
|
||||
"Please set up a tax or change the cash rounding method."
|
||||
msgstr ""
|
||||
"Невозможно рассчитать округления, потому что разница должна быть отнесена к "
|
||||
"самому большому налогу, но налоги не указаны. Пожалуйста, укажите "
|
||||
"применяемый налог или измените правило денежного округления."
|
||||
|
||||
#. module: account
|
||||
#: model:ir.model.fields,help:account.field_res_company__chart_template_id
|
||||
@@ -9208,7 +9215,7 @@ msgstr "Последовательность журнала%s дезактиви
|
||||
#. module: account
|
||||
#: model:ir.model.fields,help:account.field_account_cash_rounding__rounding_method
|
||||
msgid "The tie-breaking rule used for float rounding operations"
|
||||
msgstr ""
|
||||
msgstr "Правило округления, используемое в операциях с дробными числами"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.ui.view,arch_db:account.portal_my_invoices
|
||||
@@ -9714,12 +9721,12 @@ msgstr "Итоговая сумма долга покупателя перед
|
||||
#. module: account
|
||||
#: model:ir.model.fields,help:account.field_account_invoice_line__price_total
|
||||
msgid "Total amount with taxes"
|
||||
msgstr ""
|
||||
msgstr "Итого с налогами"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.model.fields,help:account.field_account_invoice_line__price_subtotal
|
||||
msgid "Total amount without taxes"
|
||||
msgstr ""
|
||||
msgstr "Итого без налогов"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.model.fields,help:account.field_res_partner__debit
|
||||
|
||||
@@ -9271,6 +9271,8 @@ msgid ""
|
||||
"This %s has been created from: <a href=# data-oe-model=account.invoice data-"
|
||||
"oe-id=%d>%s</a>"
|
||||
msgstr ""
|
||||
"Bu %s şu adresten oluşturuldu: <a href=# data-oe-model=account.invoice data-"
|
||||
"oe-id=%d>%s</a>"
|
||||
|
||||
#. module: account
|
||||
#: model:ir.ui.view,arch_db:account.view_account_invoice_report_search
|
||||
|
||||
@@ -602,7 +602,8 @@ class AccountInvoice(models.Model):
|
||||
for invoice in self:
|
||||
# Delete non-manual tax lines
|
||||
self._cr.execute("DELETE FROM account_invoice_tax WHERE invoice_id=%s AND manual is False", (invoice.id,))
|
||||
self.invalidate_cache()
|
||||
if self._cr.rowcount:
|
||||
self.invalidate_cache()
|
||||
|
||||
# Generate one tax line per tax, however many invoice lines it's applied to
|
||||
tax_grouped = invoice.get_taxes_values()
|
||||
|
||||
@@ -55,7 +55,8 @@ class AccountMove(models.Model):
|
||||
total_amount += amount
|
||||
for partial_line in (line.matched_debit_ids + line.matched_credit_ids):
|
||||
total_reconciled += partial_line.amount
|
||||
if float_is_zero(total_amount, precision_rounding=move.currency_id.rounding):
|
||||
precision_currency = move.currency_id or move.company_id.currency_id
|
||||
if float_is_zero(total_amount, precision_rounding=precision_currency.rounding):
|
||||
move.matched_percentage = 1.0
|
||||
else:
|
||||
move.matched_percentage = total_reconciled / total_amount
|
||||
@@ -102,8 +103,7 @@ class AccountMove(models.Model):
|
||||
partner_id = fields.Many2one('res.partner', compute='_compute_partner_id', string="Partner", store=True, readonly=True)
|
||||
amount = fields.Monetary(compute='_amount_compute', store=True)
|
||||
narration = fields.Text(string='Internal Note')
|
||||
company_id = fields.Many2one('res.company', related='journal_id.company_id', string='Company', store=True, readonly=True,
|
||||
default=lambda self: self.env.user.company_id)
|
||||
company_id = fields.Many2one('res.company', related='journal_id.company_id', string='Company', store=True, readonly=True)
|
||||
matched_percentage = fields.Float('Percentage Matched', compute='_compute_matched_percentage', digits=0, store=True, readonly=True, help="Technical field used in cash basis method")
|
||||
# Dummy Account field to search on account.move by account_id
|
||||
dummy_account_id = fields.Many2one('account.account', related='line_ids.account_id', string='Account', store=False, readonly=True)
|
||||
@@ -677,8 +677,6 @@ class AccountMoveLine(models.Model):
|
||||
raise UserError(_('Entries are not of the same account!'))
|
||||
if not (all_accounts[0].reconcile or all_accounts[0].internal_type == 'liquidity'):
|
||||
raise UserError(_('Account %s (%s) does not allow reconciliation. First change the configuration of this account to allow it.') % (all_accounts[0].name, all_accounts[0].code))
|
||||
if len(partners) > 1:
|
||||
raise UserError(_('The partner has to be the same on all lines for receivable and payable accounts!'))
|
||||
|
||||
#reconcile everything that can be
|
||||
remaining_moves = self.auto_reconcile_lines()
|
||||
@@ -796,19 +794,22 @@ class AccountMoveLine(models.Model):
|
||||
|
||||
#create an empty move that will hold all the exchange rate adjustments
|
||||
exchange_move = False
|
||||
if aml_to_balance_currency:
|
||||
if aml_to_balance_currency and any([residual for dummy, residual in aml_to_balance_currency.values()]):
|
||||
exchange_move = self.env['account.move'].create(
|
||||
self.env['account.full.reconcile']._prepare_exchange_diff_move(move_date=maxdate, company=self[0].company_id))
|
||||
|
||||
for currency, values in aml_to_balance_currency.items():
|
||||
aml_to_balance = values[0]
|
||||
total_amount_currency = values[1]
|
||||
#eventually create journal entries to book the difference due to foreign currency's exchange rate that fluctuates
|
||||
aml_recs, partial_recs = self.env['account.partial.reconcile'].create_exchange_rate_entry(aml_to_balance, 0.0, total_amount_currency, currency, exchange_move)
|
||||
if total_amount_currency:
|
||||
#eventually create journal entries to book the difference due to foreign currency's exchange rate that fluctuates
|
||||
aml_recs, partial_recs = self.env['account.partial.reconcile'].create_exchange_rate_entry(aml_to_balance, 0.0, total_amount_currency, currency, exchange_move)
|
||||
|
||||
#add the exchange rate line and the exchange rate partial reconciliation in the et of the full reconcile
|
||||
self |= aml_recs
|
||||
partial_rec_set |= partial_recs
|
||||
# add the exchange rate line and the exchange rate partial reconciliation in the et of the full reconcile
|
||||
self |= aml_recs
|
||||
partial_rec_set |= partial_recs
|
||||
else:
|
||||
aml_to_balance.reconcile()
|
||||
|
||||
if exchange_move:
|
||||
exchange_move.post()
|
||||
@@ -836,8 +837,9 @@ class AccountMoveLine(models.Model):
|
||||
rec_move_ids += account_move_line.matched_credit_ids
|
||||
if self.env.context.get('invoice_id'):
|
||||
current_invoice = self.env['account.invoice'].browse(self.env.context['invoice_id'])
|
||||
aml_to_keep = current_invoice.move_id.line_ids | current_invoice.move_id.line_ids.mapped('full_reconcile_id.exchange_move_id.line_ids')
|
||||
rec_move_ids = rec_move_ids.filtered(
|
||||
lambda r: (r.debit_move_id + r.credit_move_id) & current_invoice.move_id.line_ids
|
||||
lambda r: (r.debit_move_id + r.credit_move_id) & aml_to_keep
|
||||
)
|
||||
return rec_move_ids.unlink()
|
||||
|
||||
|
||||
@@ -394,8 +394,7 @@ class ResPartner(models.Model):
|
||||
required=True)
|
||||
property_account_position_id = fields.Many2one('account.fiscal.position', company_dependent=True,
|
||||
string="Fiscal Position",
|
||||
help="The fiscal position will determine taxes and accounts used for the partner.", oldname="property_account_position",
|
||||
domain="[('company_id', 'in', [company_id, False])]")
|
||||
help="The fiscal position will determine taxes and accounts used for the partner.", oldname="property_account_position")
|
||||
property_payment_term_id = fields.Many2one('account.payment.term', company_dependent=True,
|
||||
string='Customer Payment Terms',
|
||||
help="This payment term will be used instead of the default one for sales orders and customer invoices", oldname="property_payment_term")
|
||||
@@ -445,8 +444,12 @@ class ResPartner(models.Model):
|
||||
|
||||
@api.onchange('company_id')
|
||||
def _onchange_company_id(self):
|
||||
company = self.env['res.company']
|
||||
if self.company_id:
|
||||
return {'domain': {'property_account_position_id': [('company_id', 'in', [self.company_id.id, False])]}}
|
||||
company = self.company_id
|
||||
else:
|
||||
company = self.env.user.company_id
|
||||
return {'domain': {'property_account_position_id': [('company_id', 'in', [company.id, False])]}}
|
||||
|
||||
def can_edit_vat(self):
|
||||
can_edit_vat = super(ResPartner, self).can_edit_vat()
|
||||
|
||||
@@ -990,6 +990,7 @@ var StatementModel = BasicModel.extend({
|
||||
var formatOptions = {
|
||||
currency_id: line.st_line.currency_id,
|
||||
};
|
||||
var amount = values.amount !== undefined ? values.amount : line.balance.amount;
|
||||
var prop = {
|
||||
'id': _.uniqueId('createLine'),
|
||||
'label': values.label || line.st_line.name,
|
||||
@@ -1002,8 +1003,7 @@ var StatementModel = BasicModel.extend({
|
||||
'debit': 0,
|
||||
'credit': 0,
|
||||
'base_amount': values.amount_type !== "percentage" ?
|
||||
(values.amount || line.balance.amount) :
|
||||
line.balance.amount * values.amount / 100,
|
||||
(amount) : line.balance.amount * values.amount / 100,
|
||||
'percent': values.amount_type === "percentage" ? values.amount : null,
|
||||
'link': values.link,
|
||||
'display': true,
|
||||
|
||||
@@ -661,6 +661,54 @@ class TestReconciliation(AccountingTestCase):
|
||||
self.assertAlmostEquals(inv1.residual, 10)
|
||||
self.assertAlmostEquals(inv2.residual, 20)
|
||||
|
||||
def test_unreconcile_exchange(self):
|
||||
# Use case:
|
||||
# - Company currency in EUR
|
||||
# - Create 2 rates for USD:
|
||||
# 1.0 on 2018-01-01
|
||||
# 0.5 on 2018-02-01
|
||||
# - Create an invoice on 2018-01-02 of 111 USD
|
||||
# - Register a payment on 2018-02-02 of 111 USD
|
||||
# - Unreconcile the payment
|
||||
|
||||
self.env['res.currency.rate'].create({
|
||||
'name': time.strftime('%Y') + '-07-01',
|
||||
'rate': 1.0,
|
||||
'currency_id': self.currency_usd_id,
|
||||
'company_id': self.env.ref('base.main_company').id
|
||||
})
|
||||
self.env['res.currency.rate'].create({
|
||||
'name': time.strftime('%Y') + '-08-01',
|
||||
'rate': 0.5,
|
||||
'currency_id': self.currency_usd_id,
|
||||
'company_id': self.env.ref('base.main_company').id
|
||||
})
|
||||
inv = self.create_invoice(invoice_amount=111, currency_id=self.currency_usd_id)
|
||||
payment = self.env['account.payment'].create({
|
||||
'payment_type': 'inbound',
|
||||
'payment_method_id': self.env.ref('account.account_payment_method_manual_in').id,
|
||||
'partner_type': 'customer',
|
||||
'partner_id': self.partner_agrolait_id,
|
||||
'amount': 111,
|
||||
'currency_id': self.currency_usd_id,
|
||||
'journal_id': self.bank_journal_usd.id,
|
||||
'payment_date': time.strftime('%Y') + '-08-01',
|
||||
})
|
||||
payment.post()
|
||||
credit_aml = payment.move_line_ids.filtered('credit')
|
||||
|
||||
# Check residual before assignation
|
||||
self.assertAlmostEquals(inv.residual, 111)
|
||||
|
||||
# Assign credit, check exchange move and residual
|
||||
inv.assign_outstanding_credit(credit_aml.id)
|
||||
self.assertEqual(len(payment.move_line_ids.mapped('full_reconcile_id').exchange_move_id), 1)
|
||||
self.assertAlmostEquals(inv.residual, 0)
|
||||
|
||||
# Unreconcile invoice and check residual
|
||||
credit_aml.with_context(invoice_id=inv.id).remove_move_reconcile()
|
||||
self.assertAlmostEquals(inv.residual, 111)
|
||||
|
||||
def test_partial_reconcile_currencies_02(self):
|
||||
####
|
||||
# Day 1: Invoice Cust/001 to customer (expressed in USD)
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<div name="button_box" position="inside">
|
||||
<button type="object" class="oe_stat_button" icon="fa-pencil-square-o" name="action_view_partner_invoices"
|
||||
attrs="{'invisible': [('customer', '=', False)]}">
|
||||
attrs="{'invisible': [('customer', '=', False)]}" context="{'default_partner_id': active_id}">
|
||||
<div class="o_form_field o_stat_info">
|
||||
<span class="o_stat_value">
|
||||
<field name="total_invoiced" widget='monetary' options="{'currency_field': 'currency_id'}"/>
|
||||
|
||||
@@ -284,7 +284,7 @@ msgstr "Cheques afdrukken"
|
||||
#: model:ir.model.fields,field_description:account_check_printing.field_res_company__account_check_printing_date_label
|
||||
#: model:ir.model.fields,field_description:account_check_printing.field_res_config_settings__account_check_printing_date_label
|
||||
msgid "Print Date Label"
|
||||
msgstr ""
|
||||
msgstr "Print datum label"
|
||||
|
||||
#. module: account_check_printing
|
||||
#: code:addons/account_check_printing/models/account_payment.py:101
|
||||
@@ -302,7 +302,7 @@ msgstr "Betalingen voor meerdere facturen registreren"
|
||||
#. module: account_check_printing
|
||||
#: model:ir.model.fields,field_description:account_check_printing.field_res_company__account_check_printing_margin_right
|
||||
msgid "Right Margin"
|
||||
msgstr ""
|
||||
msgstr "Rechtermarge"
|
||||
|
||||
#. module: account_check_printing
|
||||
#: model:ir.model.fields,help:account_check_printing.field_res_company__account_check_printing_layout
|
||||
|
||||
@@ -34,7 +34,7 @@ class AccountRegisterPayments(models.TransientModel):
|
||||
res = super(AccountRegisterPayments, self)._prepare_payment_vals(invoices)
|
||||
if self.payment_method_id == self.env.ref('account_check_printing.account_payment_method_check'):
|
||||
res.update({
|
||||
'check_manual_sequencing': self.check_manual_sequencing,
|
||||
'check_amount_in_words': self.currency_id.amount_to_text(res['amount']) if self.multi else self.check_amount_in_words,
|
||||
})
|
||||
return res
|
||||
|
||||
|
||||
@@ -3,14 +3,14 @@
|
||||
# * account_invoicing
|
||||
#
|
||||
# Translators:
|
||||
# Dimko Pythonic <d.v.selitsky@gmail.com>, 2017
|
||||
# Dmitry sky <d.v.selitsky@gmail.com>, 2017
|
||||
# Aidos Kakimzhanov <aidos.kakimzhan@gmail.com>, 2017
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 10.saas~18\n"
|
||||
"Project-Id-Version: Odoo Server saas~11.2\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-09-20 09:53+0000\n"
|
||||
"PO-Revision-Date: 2017-09-20 09:53+0000\n"
|
||||
"POT-Creation-Date: 2018-03-22 14:10+0000\n"
|
||||
"PO-Revision-Date: 2018-03-22 14:10+0000\n"
|
||||
"Last-Translator: Aidos Kakimzhanov <aidos.kakimzhan@gmail.com>, 2017\n"
|
||||
"Language-Team: Russian (https://www.transifex.com/odoo/teams/41243/ru/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
@@ -11,13 +11,14 @@
|
||||
# 老窦 北京 <2662059195@qq.com>, 2018
|
||||
# liAnGjiA <liangjia@qq.com>, 2018
|
||||
# e2f <projects@e2f.com>, 2018
|
||||
# John Lin <linyinhuan@139.com>, 2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server saas~11.2\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-03-22 14:10+0000\n"
|
||||
"PO-Revision-Date: 2018-03-22 14:10+0000\n"
|
||||
"Last-Translator: e2f <projects@e2f.com>, 2018\n"
|
||||
"Last-Translator: John Lin <linyinhuan@139.com>, 2018\n"
|
||||
"Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -168,7 +169,7 @@ msgstr "状态"
|
||||
msgid ""
|
||||
"The invoice was not confirmed despite response from the acquirer (%s): "
|
||||
"invoice amount is %r but acquirer replied with %r."
|
||||
msgstr ""
|
||||
msgstr "该发票未被确认,尽管对方(%s)回复:发票金额 %r但对方回复%r。"
|
||||
|
||||
#. module: account_payment
|
||||
#: model:ir.ui.view,arch_db:account_payment.portal_invoice_error
|
||||
|
||||
@@ -273,13 +273,13 @@ msgstr "Laatst bijgewerkt op"
|
||||
#: code:addons/account_voucher/models/account_voucher.py:101
|
||||
#, python-format
|
||||
msgid "Missing Company"
|
||||
msgstr ""
|
||||
msgstr "Bedrijf ontbreekt"
|
||||
|
||||
#. module: account_voucher
|
||||
#: code:addons/account_voucher/models/account_voucher.py:103
|
||||
#, python-format
|
||||
msgid "Missing Currency"
|
||||
msgstr ""
|
||||
msgstr "Valuta ontbreekt"
|
||||
|
||||
#. module: account_voucher
|
||||
#: model:ir.model.fields,field_description:account_voucher.field_account_voucher__narration
|
||||
|
||||
@@ -344,12 +344,12 @@ msgstr "Naam"
|
||||
#. module: analytic
|
||||
#: model:ir.actions.act_window,help:analytic.account_analytic_line_action_entries
|
||||
msgid "No activity yet"
|
||||
msgstr ""
|
||||
msgstr "Nog geen activiteit"
|
||||
|
||||
#. module: analytic
|
||||
#: model:ir.actions.act_window,help:analytic.account_analytic_line_action
|
||||
msgid "No activity yet on this account"
|
||||
msgstr ""
|
||||
msgstr "Nog geen activiteit voor deze kostenplaats"
|
||||
|
||||
#. module: analytic
|
||||
#: model:ir.model.fields,field_description:analytic.field_account_analytic_group__parent_id
|
||||
@@ -359,7 +359,7 @@ msgstr "Bovenliggend"
|
||||
#. module: analytic
|
||||
#: model:ir.model.fields,field_description:analytic.field_account_analytic_distribution__tag_id
|
||||
msgid "Parent tag"
|
||||
msgstr ""
|
||||
msgstr "Bovenliggend label"
|
||||
|
||||
#. module: analytic
|
||||
#: model:ir.model.fields,field_description:analytic.field_account_analytic_line__partner_id
|
||||
|
||||
@@ -291,7 +291,7 @@ msgstr "Query"
|
||||
#. module: anonymization
|
||||
#: model:ir.model.fields,field_description:anonymization.field_ir_model_fields_anonymization_migration_fix__query_type
|
||||
msgid "Query Type"
|
||||
msgstr ""
|
||||
msgstr "Query soort"
|
||||
|
||||
#. module: anonymization
|
||||
#: model:ir.ui.view,arch_db:anonymization.view_ir_model_fields_anonymize_wizard_form
|
||||
|
||||
@@ -53,7 +53,7 @@ var BarcodeEvents = core.Class.extend(mixins.PropertiesMixin, {
|
||||
navigator.userAgent.match(/iPod/i) ||
|
||||
navigator.userAgent.match(/BlackBerry/i) ||
|
||||
navigator.userAgent.match(/Windows Phone/i);
|
||||
this.isChromeMobile = isMobile && window.chrome;
|
||||
this.isChromeMobile = isMobile && navigator.userAgent.match(/Chrome/i);
|
||||
|
||||
// Creates an input who will receive the barcode scanner value.
|
||||
if (this.isChromeMobile) {
|
||||
@@ -61,7 +61,9 @@ var BarcodeEvents = core.Class.extend(mixins.PropertiesMixin, {
|
||||
name: 'barcode',
|
||||
type: 'text',
|
||||
css: {
|
||||
'position': 'absolute',
|
||||
'position': 'fixed',
|
||||
'top': '50%',
|
||||
'transform': 'translateY(-50%)',
|
||||
'opacity': 0,
|
||||
},
|
||||
});
|
||||
|
||||
@@ -12,6 +12,9 @@ _logger = logging.getLogger(__name__)
|
||||
|
||||
try:
|
||||
import stdnum.eu.vat as stdnum_vat
|
||||
if not hasattr(stdnum_vat, "country_codes"):
|
||||
# stdnum version >= 1.9
|
||||
stdnum_vat.country_codes = stdnum_vat._country_codes
|
||||
except ImportError:
|
||||
_logger.warning('Python `stdnum` library not found, unable to call VIES service to detect address based on VAT number.')
|
||||
stdnum_vat = None
|
||||
@@ -29,6 +32,11 @@ class ResPartner(models.Model):
|
||||
cp = lines.pop()
|
||||
city = lines.pop()
|
||||
return (cp, city)
|
||||
elif country == 'SE':
|
||||
result = re.match('([0-9]{3}\s?[0-9]{2})\s?([A-Z]+)', lines[-1])
|
||||
if result:
|
||||
lines.pop()
|
||||
return (result.group(1), result.group(2))
|
||||
else:
|
||||
result = re.match('((?:L-|AT-)?[0-9\-]+[A-Z]{,2}) (.+)', lines[-1])
|
||||
if result:
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='vat']" position="replace" />
|
||||
<field name="partner_id" position="after">
|
||||
<field name="vat" />
|
||||
<field name="vat" string="VAT"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -2492,7 +2492,7 @@ msgstr "Cet objectif n'existe pas."
|
||||
#: model:ir.ui.view,arch_db:crm.crm_case_form_view_leads
|
||||
#: model:ir.ui.view,arch_db:crm.crm_case_form_view_oppor
|
||||
msgid "Title"
|
||||
msgstr "Civilité"
|
||||
msgstr "Titre"
|
||||
|
||||
#. module: crm
|
||||
#: model:ir.ui.view,arch_db:crm.view_crm_case_opportunities_filter
|
||||
|
||||
@@ -500,7 +500,7 @@ msgstr ""
|
||||
#: code:addons/crm/static/src/js/tour.js:54
|
||||
#, python-format
|
||||
msgid "Click on the opportunity to zoom in."
|
||||
msgstr ""
|
||||
msgstr "Klik op de prospect om in te zoomen."
|
||||
|
||||
#. module: crm
|
||||
#: model:ir.model.fields,field_description:crm.field_crm_opportunity_report__date_closed
|
||||
@@ -1115,7 +1115,7 @@ msgstr "Hoog"
|
||||
#. module: crm
|
||||
#: model:ir.model.fields,help:crm.field_crm_team__dashboard_graph_group_pipeline
|
||||
msgid "How this channel's dashboard graph will group the results."
|
||||
msgstr "Hoe dit kanaal zijn dashboard grafieken het resultaat groeperen."
|
||||
msgstr "Hoe dit kanaal zijn dashboard grafieken zal groeperen."
|
||||
|
||||
#. module: crm
|
||||
#: model:ir.model.fields,field_description:crm.field_crm_activity_report__id
|
||||
|
||||
@@ -482,7 +482,7 @@ msgstr "Lengte moet positief zijn"
|
||||
#. module: delivery
|
||||
#: model:ir.model.fields,help:delivery.field_delivery_carrier__debug_logging
|
||||
msgid "Log requests in order to ease debugging"
|
||||
msgstr "Log aanvragen in volgorde om makkelijker fouten te kunnen traceren"
|
||||
msgstr "Log aanvragen om gemakkelijker fouten te kunnen traceren"
|
||||
|
||||
#. module: delivery
|
||||
#: model:ir.ui.view,arch_db:delivery.view_picking_withcarrier_out_form
|
||||
|
||||
@@ -250,7 +250,7 @@ msgstr "Teslimat Paketi Seçim Sihirbazı"
|
||||
#: model:ir.ui.menu,name:delivery.menu_delivery_packagings
|
||||
#: model:ir.ui.view,arch_db:delivery.product_packaging_delivery_tree
|
||||
msgid "Delivery Packages"
|
||||
msgstr ""
|
||||
msgstr "Teslimat Paketi"
|
||||
|
||||
#. module: delivery
|
||||
#: model:ir.model.fields,field_description:delivery.field_choose_delivery_package__delivery_packaging_id
|
||||
|
||||
@@ -11,13 +11,14 @@
|
||||
# 老窦 北京 <2662059195@qq.com>, 2018
|
||||
# e2f <projects@e2f.com>, 2018
|
||||
# e2f_cn c5 <jarvisn@ecinnovations.com>, 2018
|
||||
# John Lin <linyinhuan@139.com>, 2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server saas~11.2\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-03-22 14:10+0000\n"
|
||||
"PO-Revision-Date: 2018-03-22 14:10+0000\n"
|
||||
"Last-Translator: e2f_cn c5 <jarvisn@ecinnovations.com>, 2018\n"
|
||||
"Last-Translator: John Lin <linyinhuan@139.com>, 2018\n"
|
||||
"Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -720,7 +721,7 @@ msgstr "发货重量"
|
||||
#: model:ir.ui.view,arch_db:delivery.report_package_barcode_delivery
|
||||
#: model:ir.ui.view,arch_db:delivery.report_package_barcode_small_delivery
|
||||
msgid "Shipping Weight:"
|
||||
msgstr ""
|
||||
msgstr "装运重量:"
|
||||
|
||||
#. module: delivery
|
||||
#: model:ir.model.fields,help:delivery.field_product_product__hs_code
|
||||
@@ -849,7 +850,7 @@ msgstr ""
|
||||
#: model:ir.ui.view,arch_db:delivery.report_package_barcode_delivery
|
||||
#: model:ir.ui.view,arch_db:delivery.report_package_barcode_small_delivery
|
||||
msgid "Weight:"
|
||||
msgstr ""
|
||||
msgstr "重量:"
|
||||
|
||||
#. module: delivery
|
||||
#: model:ir.model.fields,field_description:delivery.field_product_packaging__width
|
||||
|
||||
@@ -159,6 +159,8 @@ class StockPicking(models.Model):
|
||||
def send_to_shipper(self):
|
||||
self.ensure_one()
|
||||
res = self.carrier_id.send_shipping(self)[0]
|
||||
if self.carrier_id.free_over and self.sale_id._compute_amount_total_without_delivery() >= self.carrier_id.amount:
|
||||
res['exact_price'] = 0.0
|
||||
self.carrier_price = res['exact_price']
|
||||
self.carrier_tracking_ref = res['tracking_number']
|
||||
order_currency = self.sale_id.currency_id or self.company_id.currency_id
|
||||
|
||||
@@ -30,7 +30,10 @@ class TestDeliveryCost(common.TransactionCase):
|
||||
self.free_delivery = self.env.ref('delivery.free_delivery_carrier')
|
||||
# as the tests hereunder assume all the prices in USD, we must ensure
|
||||
# that the company actually uses USD
|
||||
self.env.user.company_id.write({'currency_id': self.env.ref('base.USD').id})
|
||||
self.env.cr.execute(
|
||||
"UPDATE res_company SET currency_id = %s WHERE id = %s",
|
||||
[self.env.ref('base.USD').id, self.env.user.company_id.id])
|
||||
self.pricelist.currency_id = self.env.ref('base.USD').id
|
||||
|
||||
def test_00_delivery_cost(self):
|
||||
# In order to test Carrier Cost
|
||||
|
||||
@@ -363,7 +363,7 @@ msgstr ""
|
||||
#. module: fleet
|
||||
#: model:ir.actions.act_window,help:fleet.fleet_vehicle_costs_action
|
||||
msgid "Create a new cost"
|
||||
msgstr ""
|
||||
msgstr "Maak een nieuwe kost"
|
||||
|
||||
#. module: fleet
|
||||
#: model:ir.actions.act_window,help:fleet.fleet_vehicle_log_fuel_action
|
||||
@@ -378,7 +378,7 @@ msgstr ""
|
||||
#. module: fleet
|
||||
#: model:ir.actions.act_window,help:fleet.fleet_vehicle_model_action
|
||||
msgid "Create a new model"
|
||||
msgstr ""
|
||||
msgstr "Maak een nieuw model"
|
||||
|
||||
#. module: fleet
|
||||
#: model:ir.actions.act_window,help:fleet.fleet_vehicle_odometer_action
|
||||
|
||||
@@ -929,7 +929,7 @@ msgstr "Gebruiker aanmaken"
|
||||
#. module: gamification
|
||||
#: model:ir.actions.act_window,help:gamification.badge_list_action
|
||||
msgid "Create a new badge"
|
||||
msgstr ""
|
||||
msgstr "Maak een nieuwe badge"
|
||||
|
||||
#. module: gamification
|
||||
#: model:ir.actions.act_window,help:gamification.challenge_list_action
|
||||
@@ -944,7 +944,7 @@ msgstr "Maak een nieuw doel"
|
||||
#. module: gamification
|
||||
#: model:ir.actions.act_window,help:gamification.goal_definition_list_action
|
||||
msgid "Create a new goal definition"
|
||||
msgstr ""
|
||||
msgstr "Maak een nieuwe doeldefinitie aan"
|
||||
|
||||
#. module: gamification
|
||||
#: model:ir.actions.act_window,help:gamification.action_new_simplified_res_users
|
||||
|
||||
@@ -259,7 +259,7 @@ class Goal(models.Model):
|
||||
If the end date is passed (at least +1 day, time not considered) without
|
||||
the target value being reached, the goal is set as failed."""
|
||||
goals_by_definition = {}
|
||||
for goal in self:
|
||||
for goal in self.with_context(prefetch_fields=False):
|
||||
goals_by_definition.setdefault(goal.definition_id, []).append(goal)
|
||||
|
||||
for definition, goals in goals_by_definition.items():
|
||||
|
||||
@@ -4,14 +4,15 @@
|
||||
#
|
||||
# Translators:
|
||||
# Максим Дронь <dronmax@gmail.com>, 2017
|
||||
# Martin Trigaux <mat@odoo.com>, 2017
|
||||
# Martin Trigaux, 2017
|
||||
# sergeiruzkiicode <sergei.ruzki@icode.by>, 2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 10.saas~18\n"
|
||||
"Project-Id-Version: Odoo Server saas~11.2\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-09-20 09:53+0000\n"
|
||||
"PO-Revision-Date: 2017-09-20 09:53+0000\n"
|
||||
"Last-Translator: Martin Trigaux <mat@odoo.com>, 2017\n"
|
||||
"POT-Creation-Date: 2018-03-22 14:10+0000\n"
|
||||
"PO-Revision-Date: 2018-03-22 14:10+0000\n"
|
||||
"Last-Translator: sergeiruzkiicode <sergei.ruzki@icode.by>, 2018\n"
|
||||
"Language-Team: Russian (https://www.transifex.com/odoo/teams/41243/ru/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -70,7 +71,7 @@ msgstr "Время для подготовки инициативы"
|
||||
#. module: gamification_sale_crm
|
||||
#: model:gamification.goal.definition,name:gamification_sale_crm.definition_crm_tot_customer_refunds
|
||||
msgid "Total Customer Credit Notes"
|
||||
msgstr ""
|
||||
msgstr "Всего кредит-нот клиента"
|
||||
|
||||
#. module: gamification_sale_crm
|
||||
#: model:gamification.challenge.line,name:gamification_sale_crm.line_crm_sale1
|
||||
|
||||
+22
-12
@@ -14,13 +14,14 @@
|
||||
# Denis Trepalin <zekarious@gmail.com>, 2017
|
||||
# Masha Koc <mariya.kos.ua@gmail.com>, 2017
|
||||
# Dmitry sky <d.v.selitsky@gmail.com>, 2017
|
||||
# sergeiruzkiicode <sergei.ruzki@icode.by>, 2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server saas~11.2\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-03-22 14:10+0000\n"
|
||||
"PO-Revision-Date: 2018-03-22 14:10+0000\n"
|
||||
"Last-Translator: Dmitry sky <d.v.selitsky@gmail.com>, 2017\n"
|
||||
"Last-Translator: sergeiruzkiicode <sergei.ruzki@icode.by>, 2018\n"
|
||||
"Language-Team: Russian (https://www.transifex.com/odoo/teams/41243/ru/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -130,7 +131,7 @@ msgstr "Компания"
|
||||
#. module: hr
|
||||
#: model:ir.model.fields,field_description:hr.field_res_config_settings__resource_calendar_id
|
||||
msgid "Company Working Hours"
|
||||
msgstr ""
|
||||
msgstr "Рабочие часы компании"
|
||||
|
||||
#. module: hr
|
||||
#: model:ir.model.fields,field_description:hr.field_hr_department__complete_name
|
||||
@@ -287,6 +288,7 @@ msgid ""
|
||||
"Enter here the private address of the employee, not the one linked to your "
|
||||
"company."
|
||||
msgstr ""
|
||||
"Сюда следует вводить личный адрес сотрудника, не связанный с компанией."
|
||||
|
||||
#. module: hr
|
||||
#: code:addons/hr/models/hr.py:310
|
||||
@@ -556,6 +558,9 @@ msgid ""
|
||||
" related to employees by departments: expenses, timesheets,\n"
|
||||
" leaves, recruitments, etc."
|
||||
msgstr ""
|
||||
"В Odoo структура отдела используется, чтобы управлять всеми документами,\n"
|
||||
" относящимися к сотрудникам отдела: расходыми, табелями,\n"
|
||||
" отгулами, рекрутиногом и т.п."
|
||||
|
||||
#. module: hr
|
||||
#: model:res.groups,name:hr.group_hr_user
|
||||
@@ -595,12 +600,12 @@ msgstr "Должность"
|
||||
#. module: hr
|
||||
#: model:ir.model.fields,field_description:hr.field_hr_employee__address_home_id
|
||||
msgid "Private Address"
|
||||
msgstr ""
|
||||
msgstr "Личный адрес"
|
||||
|
||||
#. module: hr
|
||||
#: model:ir.ui.view,arch_db:hr.view_employee_form
|
||||
msgid "Private Information"
|
||||
msgstr ""
|
||||
msgstr "Личная информация"
|
||||
|
||||
#. module: hr
|
||||
#: model:ir.actions.act_window,help:hr.action_hr_job
|
||||
@@ -658,6 +663,8 @@ msgid ""
|
||||
"Set default calendar used to compute time allocation for leaves, timesheets,"
|
||||
" ..."
|
||||
msgstr ""
|
||||
"Выберите календарь по умолчанию, который используется для распределения "
|
||||
"рабочего времени табелях, отуглах и т.д."
|
||||
|
||||
#. module: hr
|
||||
#: model:ir.model.fields,help:hr.field_hr_job__state
|
||||
@@ -677,17 +684,17 @@ msgstr "Настройки"
|
||||
#. module: hr
|
||||
#: model:ir.model.fields,field_description:hr.field_res_config_settings__module_hr_org_chart
|
||||
msgid "Show Organizational Chart"
|
||||
msgstr ""
|
||||
msgstr "Показать организационную структуру"
|
||||
|
||||
#. module: hr
|
||||
#: model:ir.ui.view,arch_db:hr.res_config_settings_view_form
|
||||
msgid "Show organizational chart on employee form"
|
||||
msgstr ""
|
||||
msgstr "Показать организационную структуру в карточке сотрудника"
|
||||
|
||||
#. module: hr
|
||||
#: model:ir.ui.view,arch_db:hr.res_config_settings_view_form
|
||||
msgid "Show organizational chart on employee form."
|
||||
msgstr ""
|
||||
msgstr "Показать организационную структуру в карточке сотрудника."
|
||||
|
||||
#. module: hr
|
||||
#: selection:hr.employee,marital:0
|
||||
@@ -760,7 +767,7 @@ msgstr "Теги"
|
||||
#. module: hr
|
||||
#: model:ir.model.fields,field_description:hr.field_hr_employee__is_address_home_a_company
|
||||
msgid "The employee adress has a company linked"
|
||||
msgstr ""
|
||||
msgstr "Адрес сотрудника привязан к адресу компании"
|
||||
|
||||
#. module: hr
|
||||
#: sql_constraint:hr.job:0
|
||||
@@ -809,6 +816,9 @@ msgid ""
|
||||
" This private address is used in the expense report reimbursement document.\n"
|
||||
" It should be different from the work address."
|
||||
msgstr ""
|
||||
"Введите личный(домашний) адрес сотрудника.\n"
|
||||
" Они используется в документах по возмещениям расходов и пр.\n"
|
||||
" Должен отличаться от рабочего адреса."
|
||||
|
||||
#. module: hr
|
||||
#: model:ir.model.fields,field_description:hr.field_hr_employee__user_id
|
||||
@@ -823,7 +833,7 @@ msgstr "Пользователи"
|
||||
#. module: hr
|
||||
#: model:ir.ui.view,arch_db:hr.hr_job_view_kanban
|
||||
msgid "Vacancies :"
|
||||
msgstr ""
|
||||
msgstr "Вакансии :"
|
||||
|
||||
#. module: hr
|
||||
#: model:ir.model.fields,field_description:hr.field_hr_employee__visa_expire
|
||||
@@ -855,7 +865,7 @@ msgstr ""
|
||||
#. module: hr
|
||||
#: model:ir.model.fields,field_description:hr.field_hr_employee__address_id
|
||||
msgid "Work Address"
|
||||
msgstr ""
|
||||
msgstr "Рабочий адрес"
|
||||
|
||||
#. module: hr
|
||||
#: model:ir.model.fields,field_description:hr.field_hr_employee__work_email
|
||||
@@ -865,7 +875,7 @@ msgstr "Рабочая эл. почта"
|
||||
#. module: hr
|
||||
#: model:ir.ui.view,arch_db:hr.view_employee_form
|
||||
msgid "Work Information"
|
||||
msgstr ""
|
||||
msgstr "Информация по работе"
|
||||
|
||||
#. module: hr
|
||||
#: model:ir.model.fields,field_description:hr.field_hr_employee__work_location
|
||||
@@ -880,7 +890,7 @@ msgstr "Рабочий сотовый телефон"
|
||||
#. module: hr
|
||||
#: model:ir.ui.view,arch_db:hr.res_config_settings_view_form
|
||||
msgid "Work Organization"
|
||||
msgstr ""
|
||||
msgstr "Организация работы"
|
||||
|
||||
#. module: hr
|
||||
#: model:ir.ui.view,arch_db:hr.view_employee_form
|
||||
|
||||
@@ -14,13 +14,14 @@
|
||||
# Sergey <naviserg1@gmail.com>, 2017
|
||||
# Gennady Marchenko <gennadym@gmail.com>, 2017
|
||||
# Nikita Moshkalov <CLTanuki@gmail.com>, 2017
|
||||
# sergeiruzkiicode <sergei.ruzki@icode.by>, 2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server saas~11.2\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-03-22 14:10+0000\n"
|
||||
"PO-Revision-Date: 2018-03-22 14:10+0000\n"
|
||||
"Last-Translator: Nikita Moshkalov <CLTanuki@gmail.com>, 2017\n"
|
||||
"Last-Translator: sergeiruzkiicode <sergei.ruzki@icode.by>, 2018\n"
|
||||
"Language-Team: Russian (https://www.transifex.com/odoo/teams/41243/ru/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -187,7 +188,7 @@ msgstr "Отображаемое Имя"
|
||||
#. module: hr_contract
|
||||
#: model:ir.ui.view,arch_db:hr_contract.hr_contract_view_kanban
|
||||
msgid "Edit Contract"
|
||||
msgstr ""
|
||||
msgstr "Редактировать договор"
|
||||
|
||||
#. module: hr_contract
|
||||
#: model:ir.model,name:hr_contract.model_hr_employee
|
||||
@@ -204,12 +205,12 @@ msgstr "Договор с сотрудником"
|
||||
#. module: hr_contract
|
||||
#: model:ir.model.fields,help:hr_contract.field_hr_contract__wage
|
||||
msgid "Employee's monthly gross wage."
|
||||
msgstr ""
|
||||
msgstr "Месячная зарплата сотрудника брутто."
|
||||
|
||||
#. module: hr_contract
|
||||
#: model:ir.model.fields,help:hr_contract.field_hr_contract__resource_calendar_id
|
||||
msgid "Employee's working schedule."
|
||||
msgstr ""
|
||||
msgstr "График работы сотрудника"
|
||||
|
||||
#. module: hr_contract
|
||||
#: model:ir.model.fields,field_description:hr_contract.field_hr_contract__date_end
|
||||
@@ -219,17 +220,17 @@ msgstr "Дата окончания"
|
||||
#. module: hr_contract
|
||||
#: model:ir.model.fields,help:hr_contract.field_hr_contract__date_end
|
||||
msgid "End date of the contract (if it's a fixed-term contract)."
|
||||
msgstr ""
|
||||
msgstr "Дата окончания контракта(контракт с фиксированным сроком)"
|
||||
|
||||
#. module: hr_contract
|
||||
#: model:ir.model.fields,help:hr_contract.field_hr_contract__trial_date_end
|
||||
msgid "End date of the trial period (if there is one)."
|
||||
msgstr ""
|
||||
msgstr "Дата окончания испытательного срока(если таковой имеется)"
|
||||
|
||||
#. module: hr_contract
|
||||
#: model:ir.model.fields,field_description:hr_contract.field_hr_contract__trial_date_end
|
||||
msgid "End of Trial Period"
|
||||
msgstr ""
|
||||
msgstr "Конец испытательного срока"
|
||||
|
||||
#. module: hr_contract
|
||||
#: selection:hr.contract,state:0
|
||||
@@ -326,7 +327,7 @@ msgstr "Дата медицинского осмотра"
|
||||
#. module: hr_contract
|
||||
#: model:ir.ui.view,arch_db:hr_contract.hr_contract_view_form
|
||||
msgid "Monthly Advantages in Cash"
|
||||
msgstr ""
|
||||
msgstr "Месячные поощрения в деньгах"
|
||||
|
||||
#. module: hr_contract
|
||||
#: selection:hr.contract,state:0
|
||||
@@ -357,7 +358,7 @@ msgstr "Выполняется"
|
||||
#. module: hr_contract
|
||||
#: model:ir.ui.view,arch_db:hr_contract.hr_contract_view_form
|
||||
msgid "Salary Information"
|
||||
msgstr ""
|
||||
msgstr "Информация по заработной плате"
|
||||
|
||||
#. module: hr_contract
|
||||
#: model:ir.ui.view,arch_db:hr_contract.hr_contract_view_search
|
||||
@@ -383,7 +384,7 @@ msgstr "Дата начала"
|
||||
#. module: hr_contract
|
||||
#: model:ir.model.fields,help:hr_contract.field_hr_contract__date_start
|
||||
msgid "Start date of the contract."
|
||||
msgstr ""
|
||||
msgstr "Дата начала договора"
|
||||
|
||||
#. module: hr_contract
|
||||
#: model:ir.ui.view,arch_db:hr_contract.hr_contract_view_search
|
||||
|
||||
@@ -1187,7 +1187,7 @@ msgstr "A napló amit a kiadás elvégzése után használ."
|
||||
#: code:addons/hr_expense/wizard/hr_expense_sheet_register_payment.py:35
|
||||
#, python-format
|
||||
msgid "The payment amount must be strictly positive."
|
||||
msgstr ""
|
||||
msgstr "A fizetés összege csak pozitív lehet"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,help:hr_expense.field_hr_expense_sheet__bank_journal_id
|
||||
|
||||
@@ -275,12 +275,12 @@ msgstr "Goedgekeurde declaraties"
|
||||
#: model:ir.actions.act_window,help:hr_expense.hr_expense_actions_all
|
||||
#: model:ir.actions.act_window,help:hr_expense.hr_expense_actions_my_unsubmitted
|
||||
msgid "Create a new expense"
|
||||
msgstr ""
|
||||
msgstr "Maak een nieuwe uitgave"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.actions.act_window,help:hr_expense.hr_expense_product
|
||||
msgid "Create a new expense category"
|
||||
msgstr ""
|
||||
msgstr "Maak een nieuwe uitgave categorie"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.actions.act_window,help:hr_expense.action_hr_expense_sheet_all_all
|
||||
@@ -288,7 +288,7 @@ msgstr ""
|
||||
#: model:ir.actions.act_window,help:hr_expense.action_hr_expense_sheet_all_to_post
|
||||
#: model:ir.actions.act_window,help:hr_expense.action_hr_expense_sheet_my_all
|
||||
msgid "Create a new expense report"
|
||||
msgstr ""
|
||||
msgstr "Maak een nieuw uitgave rapport"
|
||||
|
||||
#. module: hr_expense
|
||||
#: model:ir.model.fields,field_description:hr_expense.field_hr_expense__create_uid
|
||||
|
||||
@@ -418,6 +418,7 @@ class HrExpense(models.Model):
|
||||
expense_description = expense_description.replace(product_code.group(), '')
|
||||
products = self.env['product.product'].search([('default_code', 'ilike', product_code.group(1))]) or default_product
|
||||
product = products.filtered(lambda p: p.default_code == product_code.group(1)) or products[0]
|
||||
account = product.product_tmpl_id._get_product_accounts()['expense']
|
||||
|
||||
pattern = '[-+]?(\d+(\.\d*)?|\.\d+)([eE][-+]?\d+)?'
|
||||
# Match the last occurence of a float in the string
|
||||
@@ -444,6 +445,8 @@ class HrExpense(models.Model):
|
||||
'unit_amount': price,
|
||||
'company_id': employee.company_id.id,
|
||||
})
|
||||
if account:
|
||||
custom_values['account_id'] = account.id
|
||||
return super(HrExpense, self).message_new(msg_dict, custom_values)
|
||||
|
||||
|
||||
|
||||
@@ -9,13 +9,14 @@
|
||||
# Collex100, 2017
|
||||
# Sergey Vilizhanin <sv@grimmette.ru>, 2017
|
||||
# Максим Дронь <dronmax@gmail.com>, 2017
|
||||
# sergeiruzkiicode <sergei.ruzki@icode.by>, 2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server saas~11.2\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-03-22 14:10+0000\n"
|
||||
"PO-Revision-Date: 2018-03-22 14:10+0000\n"
|
||||
"Last-Translator: Максим Дронь <dronmax@gmail.com>, 2017\n"
|
||||
"Last-Translator: sergeiruzkiicode <sergei.ruzki@icode.by>, 2018\n"
|
||||
"Language-Team: Russian (https://www.transifex.com/odoo/teams/41243/ru/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -160,7 +161,7 @@ msgstr "Награжденые"
|
||||
#. module: hr_gamification
|
||||
#: model:ir.model.fields,field_description:hr_gamification.field_gamification_badge__granted_employees_count
|
||||
msgid "Granted Employees Count"
|
||||
msgstr ""
|
||||
msgstr "Количество сотрудников с наградами"
|
||||
|
||||
#. module: hr_gamification
|
||||
#: model:ir.model.fields,field_description:hr_gamification.field_hr_employee__has_badges
|
||||
|
||||
@@ -262,12 +262,12 @@ msgstr "Verloftoewijzing goedkeuren"
|
||||
#. module: hr_holidays
|
||||
#: model:mail.message.subtype,name:hr_holidays.mt_department_leave_allocation_confirmed
|
||||
msgid "Allocations Confirmed"
|
||||
msgstr ""
|
||||
msgstr "Bevestigde verloven"
|
||||
|
||||
#. module: hr_holidays
|
||||
#: model:mail.message.subtype,name:hr_holidays.mt_department_leave_allocation_first_validated
|
||||
msgid "Allocations First Approval"
|
||||
msgstr ""
|
||||
msgstr "Verloven eerste goedkeuring"
|
||||
|
||||
#. module: hr_holidays
|
||||
#: model:ir.ui.menu,name:hr_holidays.menu_open_department_leave_allocation_approve
|
||||
@@ -319,7 +319,7 @@ msgstr "Goedgekeurd"
|
||||
#. module: hr_holidays
|
||||
#: model:ir.ui.view,arch_db:hr_holidays.view_hr_leave_allocation_filter
|
||||
msgid "Approved Allocations"
|
||||
msgstr ""
|
||||
msgstr "Goedgekeurde verloven"
|
||||
|
||||
#. module: hr_holidays
|
||||
#: model:ir.ui.view,arch_db:hr_holidays.view_hr_holidays_filter
|
||||
@@ -329,7 +329,7 @@ msgstr "Goedgekeurd verlof"
|
||||
#. module: hr_holidays
|
||||
#: model:ir.ui.view,arch_db:hr_holidays.view_hr_holidays_filter_report
|
||||
msgid "Approved Requests"
|
||||
msgstr ""
|
||||
msgstr "Goedgekeurde aanvragen"
|
||||
|
||||
#. module: hr_holidays
|
||||
#: model:ir.ui.view,arch_db:hr_holidays.hr_holidays_leaves_assign_tree_view
|
||||
|
||||
@@ -16,13 +16,14 @@
|
||||
# Алексей Билькевич (belskiy) <mmmbrsk@gmail.com>, 2017
|
||||
# Viktor Pogrebniak <vp@aifil.ru>, 2017
|
||||
# Max Belyanin <maxbelyanin@gmail.com>, 2017
|
||||
# sergeiruzkiicode <sergei.ruzki@icode.by>, 2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server saas~11.2\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-03-22 14:10+0000\n"
|
||||
"PO-Revision-Date: 2018-03-22 14:10+0000\n"
|
||||
"Last-Translator: Max Belyanin <maxbelyanin@gmail.com>, 2017\n"
|
||||
"Last-Translator: sergeiruzkiicode <sergei.ruzki@icode.by>, 2018\n"
|
||||
"Language-Team: Russian (https://www.transifex.com/odoo/teams/41243/ru/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -65,7 +66,7 @@ msgstr "%g оставаясь вне %g"
|
||||
#: code:addons/hr_holidays/models/hr_leave.py:205
|
||||
#, python-format
|
||||
msgid "%s : %.2f day(s)"
|
||||
msgstr ""
|
||||
msgstr "%s : %.2f дней"
|
||||
|
||||
#. module: hr_holidays
|
||||
#: code:addons/hr_holidays/models/hr_leave.py:207
|
||||
@@ -105,12 +106,12 @@ msgstr "<th class=\"text-center\" colspan="
|
||||
#. module: hr_holidays
|
||||
#: model:ir.ui.view,arch_db:hr_holidays.hr_leave_report_kanban
|
||||
msgid "<small class=\"text-muted\">from</small>"
|
||||
msgstr ""
|
||||
msgstr "<small class=\"text-muted\">from</small>"
|
||||
|
||||
#. module: hr_holidays
|
||||
#: model:ir.ui.view,arch_db:hr_holidays.hr_leave_report_kanban
|
||||
msgid "<small class=\"text-muted\">to</small>"
|
||||
msgstr ""
|
||||
msgstr "<small class=\"text-muted\">to</small>"
|
||||
|
||||
#. module: hr_holidays
|
||||
#: model:ir.ui.view,arch_db:hr_holidays.report_holidayssummary
|
||||
@@ -260,7 +261,7 @@ msgstr "Распределение для %s"
|
||||
#: code:addons/hr_holidays/models/hr_leave_allocation.py:114
|
||||
#, python-format
|
||||
msgid "Allocation of %s : %.2f day(s) To %s"
|
||||
msgstr ""
|
||||
msgstr "Планирование для %s : %.2f день(дней) до %s"
|
||||
|
||||
#. module: hr_holidays
|
||||
#: model:ir.model.fields,field_description:hr_holidays.field_hr_department__allocation_to_approve_count
|
||||
@@ -639,7 +640,7 @@ msgstr "Первое утверждение"
|
||||
#: code:addons/hr_holidays/report/holidays_summary_report.py:112
|
||||
#, python-format
|
||||
msgid "Form content is missing, this report cannot be printed."
|
||||
msgstr ""
|
||||
msgstr "Не найдены данные в форме, отчет не сформирован"
|
||||
|
||||
#. module: hr_holidays
|
||||
#: model:ir.model.fields,field_description:hr_holidays.field_hr_holidays_summary_dept__date_from
|
||||
@@ -929,7 +930,7 @@ msgstr "Обзор отгулов"
|
||||
#. module: hr_holidays
|
||||
#: model:ir.ui.view,arch_db:hr_holidays.hr_holiday_status_view_kanban
|
||||
msgid "Leaves Taken:"
|
||||
msgstr ""
|
||||
msgstr "Использованные отпуска:"
|
||||
|
||||
#. module: hr_holidays
|
||||
#: model:ir.actions.act_window,name:hr_holidays.action_hr_holidays_summary_dept
|
||||
@@ -963,7 +964,7 @@ msgstr "Отпуска."
|
||||
#. module: hr_holidays
|
||||
#: model:hr.leave.type,name:hr_holidays.holiday_status_cl
|
||||
msgid "Legal Leaves 2018"
|
||||
msgstr ""
|
||||
msgstr "Обязательные отпуска 2018"
|
||||
|
||||
#. module: hr_holidays
|
||||
#: selection:hr.leave.type,color_name:0
|
||||
@@ -1027,7 +1028,7 @@ msgstr "Менеджеры"
|
||||
#. module: hr_holidays
|
||||
#: model:ir.ui.view,arch_db:hr_holidays.hr_holiday_status_view_kanban
|
||||
msgid "Max Leaves:"
|
||||
msgstr ""
|
||||
msgstr "Макс. отпуск:"
|
||||
|
||||
#. module: hr_holidays
|
||||
#: model:ir.model.fields,field_description:hr_holidays.field_hr_leave_type__max_leaves
|
||||
@@ -1124,6 +1125,7 @@ msgstr "Количество отпуска"
|
||||
msgid ""
|
||||
"Number of days of the leave request according to your working schedule."
|
||||
msgstr ""
|
||||
"Количество рабочих дней по календарю, приходящихся на запрашиваемый период."
|
||||
|
||||
#. module: hr_holidays
|
||||
#: model:res.groups,name:hr_holidays.group_hr_holidays_user
|
||||
@@ -1148,6 +1150,10 @@ msgid ""
|
||||
" type (recuperation, legal leaves, sickness) and the exact\n"
|
||||
" number of open days related to your leave."
|
||||
msgstr ""
|
||||
"После того, как вы запишите запрос на отпуск, он будет отправлен\n"
|
||||
" к менеджеру на утверждение. Убедитесь, что вы отсылаете запрос на отпуск\n"
|
||||
" на верное количество дней, а также правильного вида(по болезни, плановый \n"
|
||||
"\t\tотпуск, компенсация и т.п.)."
|
||||
|
||||
#. module: hr_holidays
|
||||
#: code:addons/hr_holidays/models/hr_leave.py:366
|
||||
@@ -1415,6 +1421,10 @@ msgid ""
|
||||
"The status is 'Refused', when leave request is refused by manager.\n"
|
||||
"The status is 'Approved', when leave request is approved by manager."
|
||||
msgstr ""
|
||||
"Статус 'Запросить', когда запрос создан.\n"
|
||||
"Статус 'Утвердить', когда запрос подтвержден пользователем.\n"
|
||||
"Статус 'Отклонен', когда запрос отклонен менеджером.\n"
|
||||
"Статус 'Утверждён', когда запрос одобрен менеджером."
|
||||
|
||||
#. module: hr_holidays
|
||||
#: model:ir.model.fields,help:hr_holidays.field_hr_leave__first_approver_id
|
||||
@@ -1447,12 +1457,16 @@ msgstr ""
|
||||
msgid ""
|
||||
"This value is given by the sum of all leaves requests with a negative value."
|
||||
msgstr ""
|
||||
"Это значение считается как сумма всех запросов на отпусков с отрицательным "
|
||||
"значением."
|
||||
|
||||
#. module: hr_holidays
|
||||
#: model:ir.model.fields,help:hr_holidays.field_hr_leave_type__max_leaves
|
||||
msgid ""
|
||||
"This value is given by the sum of all leaves requests with a positive value."
|
||||
msgstr ""
|
||||
"Это значение считается как сумма всех запросов на отпусков с положительным "
|
||||
"значением."
|
||||
|
||||
#. module: hr_holidays
|
||||
#: selection:hr.leave,state:0 selection:hr.leave.allocation,state:0
|
||||
@@ -1536,7 +1550,7 @@ msgstr "Проверить"
|
||||
#: model:ir.ui.view,arch_db:hr_holidays.view_hr_holidays_filter_report
|
||||
#: model:ir.ui.view,arch_db:hr_holidays.view_hr_leave_allocation_filter
|
||||
msgid "Validator"
|
||||
msgstr ""
|
||||
msgstr "Утверждающий"
|
||||
|
||||
#. module: hr_holidays
|
||||
#: selection:hr.leave.type,color_name:0
|
||||
|
||||
@@ -305,7 +305,7 @@ msgstr "Дочернее определение"
|
||||
#. module: hr_payroll
|
||||
#: model:ir.ui.view,arch_db:hr_payroll.res_config_settings_view_form
|
||||
msgid "Choose a Payroll Localization"
|
||||
msgstr ""
|
||||
msgstr "Выберите локализацию расчетного листа"
|
||||
|
||||
#. module: hr_payroll
|
||||
#: selection:hr.payslip.run,state:0
|
||||
@@ -331,7 +331,7 @@ msgstr "Код"
|
||||
#: model:ir.ui.view,arch_db:hr_payroll.hr_payroll_structure_view_kanban
|
||||
#: model:ir.ui.view,arch_db:hr_payroll.hr_salary_rule_view_kanban
|
||||
msgid "Code:"
|
||||
msgstr ""
|
||||
msgstr "Код:"
|
||||
|
||||
#. module: hr_payroll
|
||||
#: model:ir.ui.view,arch_db:hr_payroll.view_hr_payslip_filter
|
||||
@@ -656,7 +656,7 @@ msgstr ""
|
||||
#: code:addons/hr_payroll/report/report_contribution_register.py:34
|
||||
#, python-format
|
||||
msgid "Form content is missing, this report cannot be printed."
|
||||
msgstr ""
|
||||
msgstr "Не найдены данные в форме, отчет не сформирован"
|
||||
|
||||
#. module: hr_payroll
|
||||
#: model:ir.model.fields,field_description:hr_payroll.field_res_config_settings__module_l10n_fr_hr_payroll
|
||||
@@ -1021,12 +1021,12 @@ msgstr "Платёжная ведомость"
|
||||
#. module: hr_payroll
|
||||
#: model:ir.ui.view,arch_db:hr_payroll.res_config_settings_view_form
|
||||
msgid "Payroll Entries"
|
||||
msgstr ""
|
||||
msgstr "Строки платежной ведомости"
|
||||
|
||||
#. module: hr_payroll
|
||||
#: model:ir.ui.view,arch_db:hr_payroll.res_config_settings_view_form
|
||||
msgid "Payroll Rules"
|
||||
msgstr ""
|
||||
msgstr "Правила платежной ведомости"
|
||||
|
||||
#. module: hr_payroll
|
||||
#: model:ir.ui.view,arch_db:hr_payroll.view_hr_payroll_structure_filter
|
||||
@@ -1036,7 +1036,7 @@ msgstr "Структуры платежной ведомости"
|
||||
#. module: hr_payroll
|
||||
#: model:ir.ui.view,arch_db:hr_payroll.res_config_settings_view_form
|
||||
msgid "Payroll rules that apply to your country"
|
||||
msgstr ""
|
||||
msgstr "Правила составления платежной ведомости в вашей стране"
|
||||
|
||||
#. module: hr_payroll
|
||||
#: model:ir.actions.report,name:hr_payroll.action_report_payslip
|
||||
@@ -1157,7 +1157,7 @@ msgstr "Период"
|
||||
#. module: hr_payroll
|
||||
#: model:ir.ui.view,arch_db:hr_payroll.res_config_settings_view_form
|
||||
msgid "Post payroll slips in accounting"
|
||||
msgstr ""
|
||||
msgstr "Отправить расчетники в бухгалтерию"
|
||||
|
||||
#. module: hr_payroll
|
||||
#: model:ir.ui.view,arch_db:hr_payroll.view_payslip_lines_contribution_register
|
||||
|
||||
@@ -233,7 +233,7 @@ msgstr "Project -"
|
||||
#: model:ir.actions.act_window,help:hr_timesheet.timesheet_action_report_by_project
|
||||
#: model:ir.actions.act_window,help:hr_timesheet.timesheet_action_report_by_task
|
||||
msgid "Record a new activity"
|
||||
msgstr ""
|
||||
msgstr "Registreer een nieuwe activiteit"
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: model:ir.model.fields,field_description:hr_timesheet.field_report_project_task_user__remaining_hours
|
||||
|
||||
@@ -12,13 +12,14 @@
|
||||
# Masha Koc <mariya.kos.ua@gmail.com>, 2017
|
||||
# Sergey Vilizhanin <sv@grimmette.ru>, 2017
|
||||
# Max Belyanin <maxbelyanin@gmail.com>, 2017
|
||||
# sergeiruzkiicode <sergei.ruzki@icode.by>, 2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server saas~11.2\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-03-22 14:10+0000\n"
|
||||
"PO-Revision-Date: 2018-03-22 14:10+0000\n"
|
||||
"Last-Translator: Max Belyanin <maxbelyanin@gmail.com>, 2017\n"
|
||||
"Last-Translator: sergeiruzkiicode <sergei.ruzki@icode.by>, 2018\n"
|
||||
"Language-Team: Russian (https://www.transifex.com/odoo/teams/41243/ru/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -34,7 +35,7 @@ msgstr "<span class=\"o_label\">Табели</span>"
|
||||
#. module: hr_timesheet
|
||||
#: model:ir.ui.view,arch_db:hr_timesheet.hr_employee_view_form_inherit_timesheet
|
||||
msgid "<span class=\"o_stat_text\">Timesheets</span>"
|
||||
msgstr ""
|
||||
msgstr "Табели"
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: model:ir.ui.view,arch_db:hr_timesheet.view_task_form2_inherited
|
||||
@@ -91,7 +92,7 @@ msgstr "Apple App магазин"
|
||||
#. module: hr_timesheet
|
||||
#: model:ir.model.fields,field_description:hr_timesheet.field_res_config_settings__module_project_timesheet_synchro
|
||||
msgid "Awesome Timesheet"
|
||||
msgstr ""
|
||||
msgstr "Шикарные табели"
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: model:ir.ui.view,arch_db:hr_timesheet.res_config_settings_view_form
|
||||
@@ -114,7 +115,7 @@ msgstr "По Проекту"
|
||||
#: model:ir.actions.act_window,name:hr_timesheet.timesheet_action_report_by_task
|
||||
#: model:ir.ui.menu,name:hr_timesheet.timesheet_menu_report_timesheet_by_task
|
||||
msgid "By Task"
|
||||
msgstr ""
|
||||
msgstr "По задаче"
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: model:ir.model.fields,help:hr_timesheet.field_project_task__total_hours_spent
|
||||
@@ -269,11 +270,15 @@ msgid ""
|
||||
"Timesheets app and invoice them based on a fixed price (ordered quantity) or"
|
||||
" on the time spent (delivered quantity)"
|
||||
msgstr ""
|
||||
"Продавайте услуги(например, проекты, обслуживание), записывайте затраченное "
|
||||
"время в приложение Табели и выставляйте счета на основании фиксированных "
|
||||
"цен(заказанного количества) или на основании затраченного "
|
||||
"времени(поставленного количества)"
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: model:ir.ui.view,arch_db:hr_timesheet.res_config_settings_view_form
|
||||
msgid "Sell services and invoice time spent"
|
||||
msgstr ""
|
||||
msgstr "Продавайте услуги и выставляйте счета за время"
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: model:ir.actions.act_window,name:hr_timesheet.hr_timesheet_config_settings_action
|
||||
@@ -299,7 +304,7 @@ msgstr ""
|
||||
#. module: hr_timesheet
|
||||
#: model:ir.ui.view,arch_db:hr_timesheet.res_config_settings_view_form
|
||||
msgid "Synchronize time spent with web/mobile app"
|
||||
msgstr ""
|
||||
msgstr "Синхронизируйте затраты времени с веб/мобильным приложением"
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: model:ir.model,name:hr_timesheet.model_project_task
|
||||
@@ -328,7 +333,7 @@ msgstr "Эта неделя"
|
||||
#: code:addons/hr_timesheet/models/project.py:63
|
||||
#, python-format
|
||||
msgid "This task must have a project since they are linked to timesheets."
|
||||
msgstr ""
|
||||
msgstr "У задачи должен быть проект, раз она связана с табелями."
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: model:ir.ui.view,arch_db:hr_timesheet.report_timesheet
|
||||
@@ -338,12 +343,12 @@ msgstr "Время"
|
||||
#. module: hr_timesheet
|
||||
#: model:ir.ui.view,arch_db:hr_timesheet.hr_timesheet_line_tree
|
||||
msgid "Time (Hours)"
|
||||
msgstr ""
|
||||
msgstr "Время(часы)"
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: model:ir.model.fields,field_description:hr_timesheet.field_res_config_settings__module_sale_timesheet
|
||||
msgid "Time Billing"
|
||||
msgstr ""
|
||||
msgstr "Биллинг времени"
|
||||
|
||||
#. module: hr_timesheet
|
||||
#: model:ir.ui.menu,name:hr_timesheet.menu_hr_time_tracking
|
||||
|
||||
@@ -5,13 +5,14 @@
|
||||
# Translators:
|
||||
# Murat Kaplan <muratk@projetgrup.com>, 2017
|
||||
# Umur Akın <umura@projetgrup.com>, 2018
|
||||
# Ertuğrul Güreş <ertugrulg@projetgrup.com>, 2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server saas~11.2\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-03-22 14:10+0000\n"
|
||||
"PO-Revision-Date: 2018-03-22 14:10+0000\n"
|
||||
"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n"
|
||||
"Last-Translator: Ertuğrul Güreş <ertugrulg@projetgrup.com>, 2018\n"
|
||||
"Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -104,7 +105,7 @@ msgstr "Yetersiz Bakiye"
|
||||
#: code:addons/iap/static/src/xml/iap_templates.xml:14
|
||||
#, python-format
|
||||
msgid "Insufficient credit to perform this service."
|
||||
msgstr ""
|
||||
msgstr "Bu hizmeti vermek için yetersiz kredi."
|
||||
|
||||
#. module: iap
|
||||
#: model:ir.model.fields,field_description:iap.field_iap_account____last_update
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -5,37 +5,37 @@
|
||||
Update states
|
||||
-->
|
||||
<record id="state_SJ" model="res.country.state">
|
||||
<field name="code">SJ</field>
|
||||
<field name="code">CR-SJ</field>
|
||||
<field name="name">San José</field>
|
||||
<field name="country_id" ref="base.cr"/>
|
||||
</record>
|
||||
<record id="state_A" model="res.country.state">
|
||||
<field name="code">A</field>
|
||||
<field name="code">CR-A</field>
|
||||
<field name="name">Alajuela</field>
|
||||
<field name="country_id" ref="base.cr"/>
|
||||
</record>
|
||||
<record id="state_H" model="res.country.state">
|
||||
<field name="code">H</field>
|
||||
<field name="code">CR-H</field>
|
||||
<field name="name">Heredia</field>
|
||||
<field name="country_id" ref="base.cr"/>
|
||||
</record>
|
||||
<record id="state_C" model="res.country.state">
|
||||
<field name="code">C</field>
|
||||
<field name="code">CR-C</field>
|
||||
<field name="name">Cartago</field>
|
||||
<field name="country_id" ref="base.cr"/>
|
||||
</record>
|
||||
<record id="state_P" model="res.country.state">
|
||||
<field name="code">P</field>
|
||||
<field name="code">CR-P</field>
|
||||
<field name="name">Puntarenas</field>
|
||||
<field name="country_id" ref="base.cr"/>
|
||||
</record>
|
||||
<record id="state_G" model="res.country.state">
|
||||
<field name="code">G</field>
|
||||
<field name="code">CR-G</field>
|
||||
<field name="name">Guanacaste</field>
|
||||
<field name="country_id" ref="base.cr"/>
|
||||
</record>
|
||||
<record id="state_L" model="res.country.state">
|
||||
<field name="code">L</field>
|
||||
<field name="code">CR-L</field>
|
||||
<field name="name">Limón</field>
|
||||
<field name="country_id" ref="base.cr"/>
|
||||
</record>
|
||||
|
||||
@@ -13,6 +13,49 @@ class WizardMultiChartsAccounts(models.TransientModel):
|
||||
return [
|
||||
{'acc_name': _('Cash'), 'account_type': 'cash'},
|
||||
{'acc_name': _('Caja Chica'), 'account_type': 'cash'},
|
||||
{'acc_name': _('Cheques Clientes'), 'account_type': 'cash'},
|
||||
{'acc_name': _('Bank'), 'account_type': 'bank'}
|
||||
]
|
||||
return super(WizardMultiChartsAccounts, self)._get_default_bank_account_ids()
|
||||
|
||||
|
||||
class AccountChartTemplate(models.Model):
|
||||
_inherit = "account.chart.template"
|
||||
|
||||
@api.multi
|
||||
def _prepare_all_journals(self, acc_template_ref, company, journals_dict=None):
|
||||
"""Create fiscal journals for buys"""
|
||||
res = super(AccountChartTemplate, self)._prepare_all_journals(
|
||||
acc_template_ref, company, journals_dict=journals_dict)
|
||||
if not self == self.env.ref('l10n_do.do_chart_template'):
|
||||
return res
|
||||
for journal in res:
|
||||
if journal['code'] == 'FACT':
|
||||
journal['name'] = _('Compras Fiscales')
|
||||
res += [{
|
||||
'type': 'purchase',
|
||||
'name': _('Compras Informales'),
|
||||
'code': 'CINF',
|
||||
'company_id': company.id,
|
||||
'show_on_dashboard': True
|
||||
}, {
|
||||
'type': 'purchase',
|
||||
'name': _('Gastos Menores'),
|
||||
'code': 'GASM',
|
||||
'company_id': company.id,
|
||||
'show_on_dashboard': True
|
||||
}, {
|
||||
'type': 'purchase',
|
||||
'name': _('Compras al Exterior'),
|
||||
'code': 'CEXT',
|
||||
'company_id': company.id,
|
||||
'show_on_dashboard': True
|
||||
}, {
|
||||
'type': 'purchase',
|
||||
'name': _('Gastos No Deducibles'),
|
||||
'code': 'GASTO',
|
||||
'company_id': company.id,
|
||||
'show_on_dashboard': True
|
||||
}]
|
||||
return res
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
<field name="name">Data Inalterability Check</field>
|
||||
<field name="model_id" ref="account.model_account_move"/>
|
||||
<field name="type">ir.actions.server</field>
|
||||
<field name="state">code</field>
|
||||
<field name="code">
|
||||
action = env['account.move']._check_hash_integrity(env.user.company_id.id)
|
||||
</field>
|
||||
@@ -12,6 +13,7 @@
|
||||
<field name="name">Get the certification now!</field>
|
||||
<field name="type">ir.actions.server</field>
|
||||
<field name="model_id" ref="account.model_res_company"/>
|
||||
<field name="state">code</field>
|
||||
<field name="code">
|
||||
db_uuid = env['ir.config_parameter'].sudo().get_param('database.uuid')
|
||||
action = {"type": "ir.actions.act_url",
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
<field name="name">Pos Orders Inalterability Check</field>
|
||||
<field name="model_id" ref="point_of_sale.model_pos_order"/>
|
||||
<field name="type">ir.actions.server</field>
|
||||
<field name="state">code</field>
|
||||
<field name="code">
|
||||
action = env['pos.order']._check_hash_integrity(env.user.company_id.id)
|
||||
</field>
|
||||
|
||||
@@ -32,14 +32,14 @@ class AccountChartTemplate(models.Model):
|
||||
for element in in_ids.with_context(lang=None):
|
||||
if value[element.id]:
|
||||
#copy Translation from Source to Destination object
|
||||
xlat_obj.create({
|
||||
'name': out_ids._name + ',' + in_field,
|
||||
'type': 'model',
|
||||
'res_id': out_ids[counter].id,
|
||||
'lang': lang,
|
||||
'src': element[in_field],
|
||||
'value': value[element.id],
|
||||
})
|
||||
xlat_obj._set_ids(
|
||||
out_ids._name + ',' + in_field,
|
||||
'model',
|
||||
lang,
|
||||
out_ids[counter].ids,
|
||||
value[element.id],
|
||||
element[in_field]
|
||||
)
|
||||
else:
|
||||
_logger.info('Language: %s. Translation from template: there is no translation available for %s!' % (lang, element[in_field]))
|
||||
counter += 1
|
||||
|
||||
@@ -52,12 +52,6 @@ class IrModel(models.Model):
|
||||
model_class._inherit = parents + ['mail.thread']
|
||||
return model_class
|
||||
|
||||
def unlink(self):
|
||||
# Delete followers for models that will be unlinked.
|
||||
query = "DELETE FROM mail_followers WHERE res_model IN %s"
|
||||
self.env.cr.execute(query, [tuple(self.mapped('model'))])
|
||||
return super(IrModel, self).unlink()
|
||||
|
||||
|
||||
class IrModelField(models.Model):
|
||||
_inherit = 'ir.model.fields'
|
||||
|
||||
@@ -89,7 +89,7 @@ class MailActivity(models.Model):
|
||||
summary = fields.Char('Summary')
|
||||
note = fields.Html('Note')
|
||||
feedback = fields.Html('Feedback')
|
||||
date_deadline = fields.Date('Due Date', index=True, required=True, default=fields.Date.today)
|
||||
date_deadline = fields.Date('Due Date', index=True, required=True, default=fields.Date.context_today)
|
||||
automated = fields.Boolean(
|
||||
'Automated activity', readonly=True,
|
||||
help='Indicates this activity has been created automatically and not by any user.')
|
||||
@@ -154,7 +154,8 @@ class MailActivity(models.Model):
|
||||
|
||||
@api.onchange('recommended_activity_type_id')
|
||||
def _onchange_recommended_activity_type_id(self):
|
||||
self.activity_type_id = self.recommended_activity_type_id
|
||||
if self.recommended_activity_type_id:
|
||||
self.activity_type_id = self.recommended_activity_type_id
|
||||
|
||||
@api.multi
|
||||
def _check_access(self, operation):
|
||||
|
||||
@@ -75,16 +75,19 @@ class Users(models.Model):
|
||||
def activity_user_count(self):
|
||||
query = """SELECT m.id, count(*), act.res_model as model,
|
||||
CASE
|
||||
WHEN now()::date - act.date_deadline::date = 0 Then 'today'
|
||||
WHEN now()::date - act.date_deadline::date > 0 Then 'overdue'
|
||||
WHEN now()::date - act.date_deadline::date < 0 Then 'planned'
|
||||
WHEN %(today)s::date - act.date_deadline::date = 0 Then 'today'
|
||||
WHEN %(today)s::date - act.date_deadline::date > 0 Then 'overdue'
|
||||
WHEN %(today)s::date - act.date_deadline::date < 0 Then 'planned'
|
||||
END AS states
|
||||
FROM mail_activity AS act
|
||||
JOIN ir_model AS m ON act.res_model_id = m.id
|
||||
WHERE user_id = %s
|
||||
WHERE user_id = %(user_id)s
|
||||
GROUP BY m.id, states, act.res_model;
|
||||
"""
|
||||
self.env.cr.execute(query, [self.env.uid])
|
||||
self.env.cr.execute(query, {
|
||||
'today': fields.Date.context_today(self),
|
||||
'user_id': self.env.uid,
|
||||
})
|
||||
activity_data = self.env.cr.dictfetchall()
|
||||
model_ids = [a['id'] for a in activity_data]
|
||||
model_names = {n[0]: n[1] for n in self.env['ir.model'].browse(model_ids).name_get()}
|
||||
|
||||
@@ -16,7 +16,8 @@ var HEIGHT_FOLDED = '34px';
|
||||
return Widget.extend({
|
||||
template: "mail.ChatWindow",
|
||||
custom_events: {
|
||||
escape_pressed: '_onEscapePressed'
|
||||
escape_pressed: '_onEscapePressed',
|
||||
document_viewer_closed: '_onDocumentViewerClose',
|
||||
},
|
||||
events: {
|
||||
'click .o_chat_composer': '_onComposerClick',
|
||||
@@ -182,6 +183,9 @@ return Widget.extend({
|
||||
}
|
||||
this.focus_input();
|
||||
},
|
||||
_onDocumentViewerClose: function (ev) {
|
||||
this.focus_input();
|
||||
},
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
|
||||
@@ -565,6 +565,9 @@ var BasicComposer = Widget.extend({
|
||||
on_click_add_attachment: function () {
|
||||
this.$('input.o_input_file').click();
|
||||
this.$input.focus();
|
||||
// set ignoreEscape to avoid escape_pressed event when file selector dialog is opened
|
||||
// when user press escape to cancel file selector dialog then escape_pressed event should not be trigerred
|
||||
this.ignoreEscape = true;
|
||||
},
|
||||
|
||||
setState: function (state) {
|
||||
@@ -635,6 +638,8 @@ var BasicComposer = Widget.extend({
|
||||
if (this.mention_manager.is_open()) {
|
||||
event.stopPropagation();
|
||||
this.mention_manager.reset_suggestions();
|
||||
} else if (this.ignoreEscape) {
|
||||
this.ignoreEscape = false;
|
||||
} else {
|
||||
this.trigger_up("escape_pressed");
|
||||
}
|
||||
@@ -871,6 +876,7 @@ var BasicComposer = Widget.extend({
|
||||
* @param {MouseEvent} event
|
||||
*/
|
||||
_onAttachmentView: function (event) {
|
||||
event.stopPropagation();
|
||||
var activeAttachmentID = $(event.currentTarget).data('id');
|
||||
var attachments = this.get('attachment_ids');
|
||||
if (activeAttachmentID) {
|
||||
|
||||
@@ -26,6 +26,7 @@ var DocumentViewer = Widget.extend({
|
||||
'DOMMouseScroll .o_viewer_content': '_onScroll', // Firefox
|
||||
'mousewheel .o_viewer_content': '_onScroll', // Chrome, Safari, IE
|
||||
'keydown': '_onKeydown',
|
||||
'keyup': '_onKeyUp',
|
||||
'mousedown .o_viewer_img': '_onStartDrag',
|
||||
'mousemove .o_viewer_content': '_onDrag',
|
||||
'mouseup .o_viewer_content': '_onEndDrag'
|
||||
@@ -156,6 +157,7 @@ var DocumentViewer = Widget.extend({
|
||||
_onClose: function (e) {
|
||||
e.preventDefault();
|
||||
this.$el.modal('hide');
|
||||
this.trigger_up('document_viewer_closed');
|
||||
},
|
||||
/**
|
||||
* When popup close complete destroyed modal even DOM footprint too
|
||||
@@ -238,6 +240,20 @@ var DocumentViewer = Widget.extend({
|
||||
break;
|
||||
}
|
||||
},
|
||||
/**
|
||||
* Close popup on ESCAPE keyup
|
||||
*
|
||||
* @private
|
||||
* @param {KeyEvent} e
|
||||
*/
|
||||
_onKeyUp: function (e) {
|
||||
switch (e.which) {
|
||||
case $.ui.keyCode.ESCAPE:
|
||||
e.preventDefault();
|
||||
this._onClose(e);
|
||||
break;
|
||||
}
|
||||
},
|
||||
/**
|
||||
* @private
|
||||
* @param {MouseEvent} e
|
||||
|
||||
@@ -1357,7 +1357,15 @@ var ChatManager = AbstractService.extend({
|
||||
//add o_mail_emoji class on each unicode to manage size and font
|
||||
var unicode = String(value);
|
||||
var regexp = new RegExp("(?:^|\\s|<[a-z]*>)(" + unicode + ")(?=\\s|$|</[a-z]*>)", "g");
|
||||
var msg_bak = msg.body;
|
||||
msg.body = msg.body.replace(regexp, ' <span class="o_mail_emoji">'+unicode+'</span> ');
|
||||
// Idiot-proof limit. If the user had the amazing idea of copy-pasting thousands of emojis,
|
||||
// the image rendering can lead to memory overflow errors on some browsers (e.g. Chrome).
|
||||
// Set an arbitrary limit to 200 from which we simply don't replace them (anyway, they are
|
||||
// already replaced by the unicode counterpart).
|
||||
if (_.str.count(msg.body, 'o_mail_emoji') > 200) {
|
||||
msg.body = msg_bak;
|
||||
}
|
||||
});
|
||||
function propertyDescr(channel) {
|
||||
return {
|
||||
|
||||
@@ -380,6 +380,7 @@ var Thread = Widget.extend({
|
||||
* @param {MouseEvent} event
|
||||
*/
|
||||
_onAttachmentView: function (event) {
|
||||
event.stopPropagation();
|
||||
var activeAttachmentID = $(event.currentTarget).data('id');
|
||||
if (activeAttachmentID) {
|
||||
var attachmentViewer = new DocumentViewer(this, this.attachments, activeAttachmentID);
|
||||
|
||||
@@ -16,7 +16,6 @@
|
||||
position: relative;
|
||||
.o-flex(0, 0, auto);
|
||||
.o-flex-display();
|
||||
margin: 1px 0;
|
||||
border-top: none;
|
||||
background: @gray-lighter;
|
||||
|
||||
@@ -51,10 +50,12 @@
|
||||
cursor: text;
|
||||
display: inline-block;
|
||||
height: 100%;
|
||||
padding: 0px 0px @o-mail-chatter-gap;
|
||||
white-space: pre-wrap;
|
||||
word-break: break-all;
|
||||
}
|
||||
.o_composer_text_field {
|
||||
padding: 0 0 @o-mail-chatter-gap;
|
||||
}
|
||||
.o_composer_mention_dropdown .o_mention_proposition > a {
|
||||
.o-text-overflow();
|
||||
width: 100%;
|
||||
@@ -163,7 +164,6 @@
|
||||
.o_composer {
|
||||
display: flex;
|
||||
min-height: 40px;
|
||||
padding: @o-mail-chatter-gap @o-mail-chatter-gap 0 @o-mail-chatter-gap;
|
||||
border-radius: 2px 0 0 2px;
|
||||
border-right-width: 0;
|
||||
}
|
||||
@@ -175,6 +175,7 @@
|
||||
.o-flex-flow(row, wrap);
|
||||
}
|
||||
.o_composer_text_field {
|
||||
padding: @o-mail-chatter-gap;
|
||||
.o-flex(1, 1, 50%);
|
||||
}
|
||||
.o_chatter_composer_tools {
|
||||
@@ -187,8 +188,8 @@
|
||||
.o_chatter_composer_tools {
|
||||
border: none;
|
||||
border-left: 1px solid @gray-lighter-dark;
|
||||
padding-top: @o-mail-chatter-gap*0.5;
|
||||
padding-left: @o-mail-chatter-gap*0.5;
|
||||
.o-transform(translateY(-@o-mail-chatter-gap*0.5));
|
||||
}
|
||||
|
||||
.o_composer_button_send {
|
||||
@@ -212,6 +213,7 @@
|
||||
border-bottom-width: 1px;
|
||||
}
|
||||
.o_composer_input {
|
||||
padding: @o-mail-chatter-gap;
|
||||
.o-flex-flow(row, nowrap);
|
||||
|
||||
.o_chatter_composer_tools {
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
</t>
|
||||
|
||||
<t t-name="DocumentViewer">
|
||||
<div class="modal o_modal_fullscreen" tabindex="-1" role="dialog" aria-hidden="true">
|
||||
<div class="modal o_modal_fullscreen" tabindex="-1" data-keyboard="false" role="dialog" aria-hidden="true">
|
||||
<t t-call="DocumentViewer.Content"/>
|
||||
|
||||
<t t-if="widget.attachment.length != 1">
|
||||
|
||||
@@ -62,6 +62,84 @@ QUnit.module('mail', {
|
||||
parent.destroy();
|
||||
});
|
||||
|
||||
QUnit.test('open document viewer and close using ESCAPE key should reset focus to chat window', function (assert) {
|
||||
assert.expect(6);
|
||||
|
||||
function createParent(params) {
|
||||
var widget = new Widget();
|
||||
|
||||
testUtils.addMockEnvironment(widget, params);
|
||||
return widget;
|
||||
}
|
||||
var messages = [{
|
||||
attachment_ids: [{
|
||||
filename: 'image1.jpg',
|
||||
id:1,
|
||||
mimetype: 'image/jpeg',
|
||||
name: 'Test Image 1',
|
||||
url: '/web/content/1?download=true'
|
||||
}],
|
||||
author_id: ["1", "John Doe"],
|
||||
body: "A message",
|
||||
date: moment("2016-12-20 09:35:40"),
|
||||
displayed_author: "John Doe",
|
||||
id: 1,
|
||||
is_note: false,
|
||||
is_starred: false,
|
||||
model: 'partner',
|
||||
res_id: 2
|
||||
}];
|
||||
var parent = createParent({
|
||||
mockRPC: function (route, args) {
|
||||
if(_.str.contains(route, '/mail/attachment/preview/') ||
|
||||
_.str.contains(route, '/web/static/lib/pdfjs/web/viewer.html')){
|
||||
var canvas = document.createElement('canvas');
|
||||
return $.when(canvas.toDataURL());
|
||||
}
|
||||
return this._super.apply(this, arguments);
|
||||
},
|
||||
data: {},
|
||||
});
|
||||
|
||||
var chatWindow = new ChatWindow(parent, 1, "user", false, messages.length, {});
|
||||
chatWindow.appendTo($('#qunit-fixture'));
|
||||
chatWindow.render(messages);
|
||||
|
||||
testUtils.intercept(chatWindow, 'get_messages', function(event) {
|
||||
event.stopPropagation();
|
||||
var requested_msgs = _.filter(messages, function (msg) {
|
||||
return _.contains(event.data.options.ids, msg.id);
|
||||
});
|
||||
event.data.callback($.when(requested_msgs));
|
||||
}, true);
|
||||
|
||||
testUtils.intercept(chatWindow, 'get_bus', function(event) {
|
||||
event.stopPropagation();
|
||||
event.data.callback(new Bus());
|
||||
}, true);
|
||||
|
||||
chatWindow.on('document_viewer_closed', null, function () {
|
||||
assert.ok(true, "chat window should trigger a close document viewer event");
|
||||
});
|
||||
assert.strictEqual(chatWindow.$('.o_thread_message .o_attachment').length, 1,
|
||||
"there should be three attachment on message");
|
||||
// click on first image attachement
|
||||
chatWindow.$('.o_thread_message .o_attachment .o_image_box .o_image_overlay').first().click();
|
||||
// check focus is on document viewer popup and then press escape to close it
|
||||
assert.strictEqual(document.activeElement, $('.o_modal_fullscreen')[0], "Modal popup should have focus");
|
||||
assert.strictEqual($('.o_modal_fullscreen img.o_viewer_img[src*="/web/image/1?unique=1"]').length, 1,
|
||||
"Modal popup should open with first image src");
|
||||
// trigger ESCAPE keyup on document viewer popup
|
||||
var upKeyEvent = jQuery.Event("keyup", {which: 27});
|
||||
$('.o_modal_fullscreen').trigger(upKeyEvent);
|
||||
assert.strictEqual(document.activeElement, chatWindow.$input[0],
|
||||
"input should be focused");
|
||||
var upKeyEvent = jQuery.Event( "keyup", {which: 27});
|
||||
chatWindow.$('.o_composer_input').trigger(upKeyEvent);
|
||||
assert.strictEqual(chatWindow.folded, false, "Closed chat Window");
|
||||
parent.destroy();
|
||||
});
|
||||
|
||||
QUnit.test('chat window\'s input can still be focused when the UI is blocked', function (assert) {
|
||||
assert.expect(2);
|
||||
|
||||
|
||||
@@ -274,7 +274,7 @@ msgstr "Aangemaakt door"
|
||||
#. module: maintenance
|
||||
#: model:ir.model.fields,field_description:maintenance.field_maintenance_request__owner_user_id
|
||||
msgid "Created by User"
|
||||
msgstr ""
|
||||
msgstr "Aangemaakt door gebruiker"
|
||||
|
||||
#. module: maintenance
|
||||
#: model:ir.model.fields,field_description:maintenance.field_maintenance_equipment__create_date
|
||||
|
||||
@@ -292,7 +292,7 @@ msgstr "Voeg een omschrijving toe..."
|
||||
#. module: mrp
|
||||
#: model:ir.actions.act_window,help:mrp.action_work_orders
|
||||
msgid "Add a work center"
|
||||
msgstr ""
|
||||
msgstr "Voeg een werkcenter toe"
|
||||
|
||||
#. module: mrp
|
||||
#: model:ir.ui.view,arch_db:mrp.res_config_settings_view_form
|
||||
|
||||
@@ -557,7 +557,7 @@ class MrpProduction(models.Model):
|
||||
order._cal_price(moves_to_do)
|
||||
moves_to_finish = order.move_finished_ids.filtered(lambda x: x.state not in ('done','cancel'))
|
||||
moves_to_finish._action_done()
|
||||
#order.action_assign()
|
||||
order.action_assign()
|
||||
consume_move_lines = moves_to_do.mapped('active_move_line_ids')
|
||||
for moveline in moves_to_finish.mapped('active_move_line_ids'):
|
||||
if moveline.product_id == order.product_id and moveline.move_id.has_tracking != 'none':
|
||||
|
||||
@@ -290,6 +290,18 @@ class MrpWorkorder(models.Model):
|
||||
self.final_lot_id = self.env['stock.production.lot'].search([('use_next_on_work_order_id', '=', self.id)],
|
||||
order='create_date, id', limit=1)
|
||||
|
||||
def _get_byproduct_move_line(self, by_product_move, quantity):
|
||||
return {
|
||||
'move_id': by_product_move.id,
|
||||
'product_id': by_product_move.product_id.id,
|
||||
'product_uom_qty': quantity,
|
||||
'product_uom_id': by_product_move.product_uom.id,
|
||||
'qty_done': quantity,
|
||||
'workorder_id': self.id,
|
||||
'location_id': by_product_move.location_id.id,
|
||||
'location_dest_id': by_product_move.location_dest_id.id,
|
||||
}
|
||||
|
||||
@api.multi
|
||||
def record_production(self):
|
||||
self.ensure_one()
|
||||
@@ -367,8 +379,14 @@ class MrpWorkorder(models.Model):
|
||||
|
||||
if not self.next_work_order_id:
|
||||
for by_product_move in self.production_id.move_finished_ids.filtered(lambda x: (x.product_id.id != self.production_id.product_id.id) and (x.state not in ('done', 'cancel'))):
|
||||
if by_product_move.has_tracking == 'none':
|
||||
by_product_move.quantity_done += self.qty_producing * by_product_move.unit_factor
|
||||
if by_product_move.has_tracking != 'serial':
|
||||
values = self._get_byproduct_move_line(by_product_move, self.qty_producing * by_product_move.unit_factor)
|
||||
self.env['stock.move.line'].create(values)
|
||||
elif by_product_move.has_tracking == 'serial':
|
||||
qty_todo = by_product_move.product_uom._compute_quantity(self.qty_producing * by_product_move.unit_factor, by_product_move.product_id.uom_id)
|
||||
for i in range(0, int(float_round(qty_todo, precision_digits=0))):
|
||||
values = self._get_byproduct_move_line(by_product_move, 1)
|
||||
self.env['stock.move.line'].create(values)
|
||||
|
||||
# Update workorder quantity produced
|
||||
self.qty_produced += self.qty_producing
|
||||
|
||||
@@ -38,7 +38,8 @@ class MrpProductProduce(models.TransientModel):
|
||||
if 'produce_line_ids' in fields:
|
||||
lines = []
|
||||
for move in production.move_raw_ids.filtered(lambda x: (x.product_id.tracking != 'none') and x.state not in ('done', 'cancel') and x.bom_line_id):
|
||||
qty_to_consume = todo_quantity / move.bom_line_id.bom_id.product_qty * move.bom_line_id.product_qty
|
||||
qty_to_consume = float_round(todo_quantity / move.bom_line_id.bom_id.product_qty * move.bom_line_id.product_qty,
|
||||
precision_rounding=move.product_uom.rounding, rounding_method="UP")
|
||||
for move_line in move.move_line_ids:
|
||||
if float_compare(qty_to_consume, 0.0, precision_rounding=move.product_uom.rounding) <= 0:
|
||||
break
|
||||
@@ -176,9 +177,9 @@ class MrpProductProduceLine(models.TransientModel):
|
||||
product_produce_id = fields.Many2one('mrp.product.produce')
|
||||
product_id = fields.Many2one('product.product', 'Product')
|
||||
lot_id = fields.Many2one('stock.production.lot', 'Lot')
|
||||
qty_to_consume = fields.Float('To Consume')
|
||||
qty_to_consume = fields.Float('To Consume', digits=dp.get_precision('Product Unit of Measure'))
|
||||
product_uom_id = fields.Many2one('uom.uom', 'Unit of Measure')
|
||||
qty_done = fields.Float('Done')
|
||||
qty_done = fields.Float('Done', digits=dp.get_precision('Product Unit of Measure'))
|
||||
move_id = fields.Many2one('stock.move')
|
||||
|
||||
@api.onchange('lot_id')
|
||||
|
||||
@@ -77,7 +77,7 @@ msgstr "<i>Annuleer,</i> Uw betaling is geannuleerd."
|
||||
msgid ""
|
||||
"<i>Done,</i> Your online payment has been successfully processed. Thank you "
|
||||
"for your order."
|
||||
msgstr "Gelukt,</i> Uw online betaling is geslaagd. bedankt voor uw opdracht."
|
||||
msgstr "Gelukt,</i> Uw online betaling is geslaagd. Bedankt voor uw opdracht."
|
||||
|
||||
#. module: payment
|
||||
#: code:addons/payment/models/payment_acquirer.py:117
|
||||
@@ -351,7 +351,7 @@ msgstr "Kan de betaling niet verwerken"
|
||||
#: code:addons/payment/controllers/portal.py:110
|
||||
#, python-format
|
||||
msgid "Cannot setup the payment."
|
||||
msgstr ""
|
||||
msgstr "Kan de betaling niet opzetten."
|
||||
|
||||
#. module: payment
|
||||
#: model:ir.model.fields,field_description:payment.field_payment_acquirer__capture_manually
|
||||
@@ -643,7 +643,7 @@ msgid ""
|
||||
"If you leave it empty, the payment acquirer will be available for all the "
|
||||
"countries."
|
||||
msgstr ""
|
||||
"Indien u het leeg, is de betalingsverwerker beschikbaar in alle landen."
|
||||
"Indien u dit leeg laat, is de betalingsverwerker beschikbaar in alle landen."
|
||||
|
||||
#. module: payment
|
||||
#: model:ir.model.fields,field_description:payment.field_payment_acquirer__image
|
||||
|
||||
@@ -16,13 +16,14 @@
|
||||
# Doğan Altunbay <doganaltunbay@gmail.com>, 2017
|
||||
# Levent Karakaş <levent@mektup.at>, 2017
|
||||
# Umur Akın <umura@projetgrup.com>, 2018
|
||||
# Ertuğrul Güreş <ertugrulg@projetgrup.com>, 2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server saas~11.2\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-03-22 14:10+0000\n"
|
||||
"PO-Revision-Date: 2018-03-22 14:10+0000\n"
|
||||
"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n"
|
||||
"Last-Translator: Ertuğrul Güreş <ertugrulg@projetgrup.com>, 2018\n"
|
||||
"Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -222,7 +223,7 @@ msgstr "Alıcılar"
|
||||
#. module: payment
|
||||
#: model:ir.ui.view,arch_db:payment.payment_icon_form_view
|
||||
msgid "Acquirers list"
|
||||
msgstr ""
|
||||
msgstr "Alıcılar Listesi"
|
||||
|
||||
#. module: payment
|
||||
#: model:ir.ui.view,arch_db:payment.acquirer_kanban
|
||||
|
||||
@@ -3,3 +3,4 @@
|
||||
from . import payment_acquirer
|
||||
from . import res_partner
|
||||
from . import account_payment
|
||||
from . import chart_template
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
|
||||
|
||||
class WizardMultiChartsAccounts(models.TransientModel):
|
||||
_inherit = 'wizard.multi.charts.accounts'
|
||||
|
||||
@api.multi
|
||||
def _create_bank_journals_from_o2m(self, company, acc_template_ref):
|
||||
res = super(WizardMultiChartsAccounts, self)._create_bank_journals_from_o2m(company, acc_template_ref)
|
||||
|
||||
# Try to generate the missing journals
|
||||
return res + self.env['payment.acquirer']._create_missing_journal_for_acquirers(company=company)
|
||||
@@ -9,6 +9,7 @@ from odoo import api, exceptions, fields, models, _
|
||||
from odoo.tools import consteq, float_round, image_resize_images, image_resize_image, ustr
|
||||
from odoo.addons.base.models import ir_module
|
||||
from odoo.exceptions import ValidationError
|
||||
from odoo import api, SUPERUSER_ID
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -21,6 +22,11 @@ def _partner_split_name(partner_name):
|
||||
return [' '.join(partner_name.split()[:-1]), ' '.join(partner_name.split()[-1:])]
|
||||
|
||||
|
||||
def create_missing_journal_for_acquirers(cr, registry):
|
||||
env = api.Environment(cr, SUPERUSER_ID, {})
|
||||
env['payment.acquirer']._create_missing_journal_for_acquirers()
|
||||
|
||||
|
||||
class PaymentAcquirer(models.Model):
|
||||
""" Acquirer Model. Each specific acquirer can extend the model by adding
|
||||
its own fields, using the acquirer_name as a prefix for the new fields.
|
||||
@@ -52,6 +58,9 @@ class PaymentAcquirer(models.Model):
|
||||
_description = 'Payment Acquirer'
|
||||
_order = 'website_published desc, sequence, name'
|
||||
|
||||
def _get_default_view_template_id(self):
|
||||
return self.env.ref('payment.default_acquirer_button', raise_if_not_found=False)
|
||||
|
||||
name = fields.Char('Name', required=True, translate=True)
|
||||
description = fields.Html('Description')
|
||||
sequence = fields.Integer('Sequence', default=10, help="Determine the display order")
|
||||
@@ -62,7 +71,8 @@ class PaymentAcquirer(models.Model):
|
||||
'res.company', 'Company',
|
||||
default=lambda self: self.env.user.company_id.id, required=True)
|
||||
view_template_id = fields.Many2one(
|
||||
'ir.ui.view', 'Form Button Template', required=True)
|
||||
'ir.ui.view', 'Form Button Template', required=True,
|
||||
default=_get_default_view_template_id)
|
||||
registration_view_template_id = fields.Many2one(
|
||||
'ir.ui.view', 'S2S Form Template', domain=[('type', '=', 'qweb')],
|
||||
help="Template for method registration")
|
||||
@@ -197,6 +207,58 @@ class PaymentAcquirer(models.Model):
|
||||
"""
|
||||
return dict(authorize=[], tokenize=[], fees=[])
|
||||
|
||||
@api.multi
|
||||
def _prepare_account_journal_vals(self):
|
||||
'''Prepare the values to create the acquirer's journal.
|
||||
:return: a dictionary to create a account.journal record.
|
||||
'''
|
||||
self.ensure_one()
|
||||
account_vals = self.env['account.journal']._prepare_liquidity_account(
|
||||
self.name, self.company_id, None, 'bank')
|
||||
account_vals['user_type_id'] = self.env.ref('account.data_account_type_current_assets').id
|
||||
account_vals['reconcile'] = True
|
||||
account = self.env['account.account'].create(account_vals)
|
||||
return {
|
||||
'name': self.name,
|
||||
'code': self.name.upper(),
|
||||
'sequence': 999,
|
||||
'type': 'bank',
|
||||
'company_id': self.company_id.id,
|
||||
'default_debit_account_id': account.id,
|
||||
'default_credit_account_id': account.id,
|
||||
# Show the journal on dashboard if the acquirer is published on the website.
|
||||
'show_on_dashboard': self.website_published,
|
||||
# Don't show payment methods in the backend.
|
||||
'inbound_payment_method_ids': [],
|
||||
'outbound_payment_method_ids': [],
|
||||
}
|
||||
|
||||
@api.model
|
||||
def _create_missing_journal_for_acquirers(self, company=None):
|
||||
'''Create the journal for active acquirers.
|
||||
We want one journal per acquirer. However, we can't create them during the 'create' of the payment.acquirer
|
||||
because every acquirers are defined on the 'payment' module but is active only when installing their own module
|
||||
(e.g. payment_paypal for Paypal). We can't do that in such modules because we have no guarantee the chart template
|
||||
is already installed.
|
||||
'''
|
||||
# Search for installed acquirers modules.
|
||||
# If this method is triggered by a post_init_hook, the module is 'to install'.
|
||||
# If the trigger comes from the chart template wizard, the modules are already installed.
|
||||
acquirer_modules = self.env['ir.module.module'].search(
|
||||
[('name', 'like', 'payment_%'), ('state', 'in', ('to install', 'installed'))])
|
||||
acquirer_names = [a.name.split('_')[1] for a in acquirer_modules]
|
||||
|
||||
# Search for acquirers having no journal
|
||||
company = company or self.env.user.company_id
|
||||
acquirers = self.env['payment.acquirer'].search(
|
||||
[('provider', 'in', acquirer_names), ('journal_id', '=', False), ('company_id', '=', company.id)])
|
||||
|
||||
journals = self.env['account.journal']
|
||||
for acquirer in acquirers.filtered(lambda l: not l.journal_id and l.company_id.chart_template_id):
|
||||
acquirer.journal_id = self.env['account.journal'].create(acquirer._prepare_account_journal_vals())
|
||||
journals += acquirer.journal_id
|
||||
return journals
|
||||
|
||||
@api.model
|
||||
def create(self, vals):
|
||||
image_resize_images(vals)
|
||||
@@ -209,7 +271,13 @@ class PaymentAcquirer(models.Model):
|
||||
|
||||
@api.multi
|
||||
def toggle_website_published(self):
|
||||
self.write({'website_published': not self.website_published})
|
||||
''' When clicking on the website publish toggle button, the website_published is reversed and
|
||||
the acquirer journal is set or not in favorite on the dashboard.
|
||||
'''
|
||||
self.ensure_one()
|
||||
self.website_published = not self.website_published
|
||||
if self.journal_id:
|
||||
self.journal_id.show_on_dashboard = self.website_published
|
||||
return True
|
||||
|
||||
@api.multi
|
||||
|
||||
@@ -81,7 +81,7 @@
|
||||
</page>
|
||||
<page string="Configuration">
|
||||
<group name="acquirer_config">
|
||||
<field name="journal_id" context="{'default_type': 'bank'}" required="1"/>
|
||||
<field name="journal_id" context="{'default_type': 'bank'}"/>
|
||||
<field name="capture_manually" attrs="{'invisible': [('authorize_implemented', '=', False)]}"/>
|
||||
<field name="save_token" widget="radio" attrs="{'invisible': ['|', ('token_implemented', '=', False), ('payment_flow', '=', 's2s')]}"/>
|
||||
<field name="fees_active" attrs="{'invisible': [('fees_implemented', '=', False)]}"/>
|
||||
@@ -113,7 +113,7 @@
|
||||
</div>
|
||||
<field name="registration_view_template_id" groups="base.group_no_one"/>
|
||||
<field name="payment_icon_ids" widget="many2many_tags"/>
|
||||
<field name="payment_flow" widget="radio"/>
|
||||
<field name="payment_flow" widget="radio" attrs="{'invisible': [('token_implemented', '=', False)]}"/>
|
||||
</group>
|
||||
</page>
|
||||
</notebook>
|
||||
|
||||
@@ -3,3 +3,4 @@
|
||||
|
||||
from . import models
|
||||
from . import controllers
|
||||
from odoo.addons.payment.models.payment_acquirer import create_missing_journal_for_acquirers
|
||||
|
||||
@@ -13,4 +13,5 @@
|
||||
'data/payment_acquirer_data.xml',
|
||||
],
|
||||
'installable': True,
|
||||
'post_init_hook': 'create_missing_journal_for_acquirers',
|
||||
}
|
||||
|
||||
@@ -3,3 +3,4 @@
|
||||
|
||||
from . import models
|
||||
from . import controllers
|
||||
from odoo.addons.payment.models.payment_acquirer import create_missing_journal_for_acquirers
|
||||
|
||||
@@ -13,4 +13,5 @@
|
||||
'data/payment_acquirer_data.xml',
|
||||
],
|
||||
'installable': True,
|
||||
'post_init_hook': 'create_missing_journal_for_acquirers',
|
||||
}
|
||||
|
||||
@@ -3,3 +3,4 @@
|
||||
|
||||
from . import models
|
||||
from . import controllers
|
||||
from odoo.addons.payment.models.payment_acquirer import create_missing_journal_for_acquirers
|
||||
|
||||
@@ -13,4 +13,5 @@
|
||||
'data/payment_acquirer_data.xml',
|
||||
],
|
||||
'installable': True,
|
||||
'post_init_hook': 'create_missing_journal_for_acquirers',
|
||||
}
|
||||
|
||||
@@ -3,3 +3,4 @@
|
||||
|
||||
from . import models
|
||||
from . import controllers
|
||||
from odoo.addons.payment.models.payment_acquirer import create_missing_journal_for_acquirers
|
||||
|
||||
@@ -13,4 +13,5 @@
|
||||
'data/payment_acquirer_data.xml',
|
||||
],
|
||||
'installable': True,
|
||||
'post_init_hook': 'create_missing_journal_for_acquirers',
|
||||
}
|
||||
|
||||
@@ -8,13 +8,14 @@
|
||||
# Ediz Duman <neps1192@gmail.com>, 2017
|
||||
# Murat Kaplan <muratk@projetgrup.com>, 2017
|
||||
# Umur Akın <umura@projetgrup.com>, 2018
|
||||
# Ertuğrul Güreş <ertugrulg@projetgrup.com>, 2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server saas~11.2\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-03-22 14:10+0000\n"
|
||||
"PO-Revision-Date: 2018-03-22 14:10+0000\n"
|
||||
"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n"
|
||||
"Last-Translator: Ertuğrul Güreş <ertugrulg@projetgrup.com>, 2018\n"
|
||||
"Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -47,7 +48,7 @@ msgstr "API Kullanıcı Şifresi"
|
||||
#. module: payment_ogone
|
||||
#: model:ir.model.fields,field_description:payment_ogone.field_payment_acquirer__ogone_alias_usage
|
||||
msgid "Alias Usage"
|
||||
msgstr ""
|
||||
msgstr "Alias Kullanımı"
|
||||
|
||||
#. module: payment_ogone
|
||||
#: model:ir.ui.view,arch_db:payment_ogone.ogone_s2s_form
|
||||
|
||||
@@ -3,3 +3,4 @@
|
||||
|
||||
from . import models
|
||||
from . import controllers
|
||||
from odoo.addons.payment.models.payment_acquirer import create_missing_journal_for_acquirers
|
||||
|
||||
@@ -13,4 +13,5 @@
|
||||
'data/payment_acquirer_data.xml',
|
||||
],
|
||||
'installable': True,
|
||||
'post_init_hook': 'create_missing_journal_for_acquirers',
|
||||
}
|
||||
|
||||
@@ -3,3 +3,4 @@
|
||||
|
||||
from . import models
|
||||
from . import controllers
|
||||
from odoo.addons.payment.models.payment_acquirer import create_missing_journal_for_acquirers
|
||||
|
||||
@@ -16,4 +16,5 @@
|
||||
'views/payment_payumoney_templates.xml',
|
||||
'data/payment_acquirer_data.xml',
|
||||
],
|
||||
'post_init_hook': 'create_missing_journal_for_acquirers',
|
||||
}
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
from . import models
|
||||
from . import controllers
|
||||
from odoo.addons.payment.models.payment_acquirer import create_missing_journal_for_acquirers
|
||||
|
||||
@@ -20,4 +20,5 @@ payments acquirer using Worldline SIPS.""",
|
||||
'data/payment_acquirer_data.xml',
|
||||
],
|
||||
'installable': True,
|
||||
'post_init_hook': 'create_missing_journal_for_acquirers',
|
||||
}
|
||||
|
||||
@@ -3,3 +3,4 @@
|
||||
|
||||
from . import models
|
||||
from . import controllers
|
||||
from odoo.addons.payment.models.payment_acquirer import create_missing_journal_for_acquirers
|
||||
|
||||
@@ -14,4 +14,5 @@
|
||||
],
|
||||
'images': ['static/description/icon.png'],
|
||||
'installable': True,
|
||||
'post_init_hook': 'create_missing_journal_for_acquirers',
|
||||
}
|
||||
|
||||
@@ -3,3 +3,4 @@
|
||||
|
||||
from . import models
|
||||
from . import controllers
|
||||
from odoo.addons.payment.models.payment_acquirer import create_missing_journal_for_acquirers
|
||||
|
||||
@@ -14,4 +14,5 @@
|
||||
],
|
||||
'installable': True,
|
||||
'auto_install': True,
|
||||
'post_init_hook': 'create_missing_journal_for_acquirers',
|
||||
}
|
||||
|
||||
@@ -15,6 +15,19 @@ class TransferPaymentAcquirer(models.Model):
|
||||
|
||||
provider = fields.Selection(selection_add=[('transfer', 'Wire Transfer')], default='transfer')
|
||||
|
||||
@api.model
|
||||
def _create_missing_journal_for_acquirers(self, company=None):
|
||||
# By default, the wire transfer method uses the default Bank journal.
|
||||
company = company or self.env.user.company_id
|
||||
acquirers = self.env['payment.acquirer'].search(
|
||||
[('provider', '=', 'transfer'), ('journal_id', '=', False), ('company_id', '=', company.id)])
|
||||
|
||||
bank_journal = self.env['account.journal'].search(
|
||||
[('type', '=', 'bank'), ('company_id', '=', company.id)], limit=1)
|
||||
if bank_journal:
|
||||
acquirers.write({'journal_id': bank_journal.id})
|
||||
return super(TransferPaymentAcquirer, self)._create_missing_journal_for_acquirers(company=company)
|
||||
|
||||
def transfer_get_form_action_url(self):
|
||||
return '/payment/transfer/feedback'
|
||||
|
||||
|
||||
@@ -383,7 +383,7 @@ msgstr "Voeg een aangepaste tekst doe aan de hoofding en het voeteinde"
|
||||
#. module: point_of_sale
|
||||
#: model:ir.actions.act_window,help:point_of_sale.action_account_journal_form
|
||||
msgid "Add a new payment method"
|
||||
msgstr ""
|
||||
msgstr "Voeg een nieuwe betaling toe"
|
||||
|
||||
#. module: point_of_sale
|
||||
#. openerp-web
|
||||
@@ -1259,7 +1259,7 @@ msgid ""
|
||||
" devices already benefit from a native keyboard."
|
||||
msgstr ""
|
||||
"Schakel deze optie niet in als u bestellingen via smartphones of tablets "
|
||||
"opneemt. Dergelijke apparaten beschikken al van een eigen toetsenbord."
|
||||
"opneemt. Dergelijke apparaten beschikken al over een eigen toetsenbord."
|
||||
|
||||
#. module: point_of_sale
|
||||
#: model:ir.ui.view,arch_db:point_of_sale.view_pos_order_filter
|
||||
|
||||
@@ -4213,6 +4213,8 @@ msgstr "Şirketiniz için bir logo ya da bir layout ayarlamalısınız."
|
||||
#, python-format
|
||||
msgid "You have to set your reports's header and footer layout."
|
||||
msgstr ""
|
||||
"Raporlarınız için üst bilgi ve alt bilgi satırlarını ayalamanız "
|
||||
"gerekmektedir."
|
||||
|
||||
#. module: point_of_sale
|
||||
#: model:ir.actions.act_window,help:point_of_sale.product_product_action
|
||||
|
||||
@@ -13,13 +13,14 @@
|
||||
# Saban Yildiz <sabany@projetgrup.com>, 2017
|
||||
# Güven YILMAZ <guvenyilmaz@outlook.com.tr>, 2017
|
||||
# Umur Akın <umura@projetgrup.com>, 2018
|
||||
# Ertuğrul Güreş <ertugrulg@projetgrup.com>, 2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server saas~11.2\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-03-22 14:11+0000\n"
|
||||
"PO-Revision-Date: 2018-03-22 14:11+0000\n"
|
||||
"Last-Translator: Umur Akın <umura@projetgrup.com>, 2018\n"
|
||||
"Last-Translator: Ertuğrul Güreş <ertugrulg@projetgrup.com>, 2018\n"
|
||||
"Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -102,7 +103,7 @@ msgstr "Temizle"
|
||||
#: code:addons/portal/static/src/xml/portal_signature.xml:27
|
||||
#, python-format
|
||||
msgid "Click here to see your document."
|
||||
msgstr ""
|
||||
msgstr "Dokümanınızı görmek için buraya tıklayınız."
|
||||
|
||||
#. module: portal
|
||||
#: model:ir.ui.view,arch_db:portal.portal_my_details
|
||||
|
||||
@@ -363,7 +363,7 @@ msgstr "Kassa orders"
|
||||
#: code:addons/pos_mercury/static/src/js/pos_mercury.js:345
|
||||
#, python-format
|
||||
msgid "Refunds not supported"
|
||||
msgstr ""
|
||||
msgstr "Terugbetalingen niet ondersteund"
|
||||
|
||||
#. module: pos_mercury
|
||||
#. openerp-web
|
||||
|
||||
@@ -381,7 +381,7 @@ msgstr "Order"
|
||||
#. module: pos_restaurant
|
||||
#: model:ir.model.fields,field_description:pos_restaurant.field_pos_config__is_order_printer
|
||||
msgid "Order Printer"
|
||||
msgstr ""
|
||||
msgstr "Order Printer"
|
||||
|
||||
#. module: pos_restaurant
|
||||
#: model:ir.actions.act_window,name:pos_restaurant.action_restaurant_printer_form
|
||||
|
||||
@@ -6,13 +6,14 @@
|
||||
# Güven YILMAZ <guvenyilmaz@outlook.com.tr>, 2017
|
||||
# Murat Kaplan <muratk@projetgrup.com>, 2017
|
||||
# Martin Trigaux, 2017
|
||||
# Ertuğrul Güreş <ertugrulg@projetgrup.com>, 2018
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server saas~11.2\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2018-03-22 14:09+0000\n"
|
||||
"PO-Revision-Date: 2018-03-22 14:09+0000\n"
|
||||
"Last-Translator: Martin Trigaux, 2017\n"
|
||||
"Last-Translator: Ertuğrul Güreş <ertugrulg@projetgrup.com>, 2018\n"
|
||||
"Language-Team: Turkish (https://www.transifex.com/odoo/teams/41243/tr/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -23,7 +24,7 @@ msgstr ""
|
||||
#. module: pos_sale
|
||||
#: model:ir.model,name:pos_sale.model_report_all_channels_sales
|
||||
msgid "All sales orders grouped by sales channels"
|
||||
msgstr ""
|
||||
msgstr "Tüm satış siparişleri satış kanalları tarafından gruplandırıldı"
|
||||
|
||||
#. module: pos_sale
|
||||
#: code:addons/pos_sale/models/crm_team.py:103
|
||||
|
||||
@@ -1900,6 +1900,8 @@ msgid ""
|
||||
"This vendor's product code will be used when printing a request for "
|
||||
"quotation. Keep empty to use the internal one."
|
||||
msgstr ""
|
||||
"Bu tedarikçi ürün kodu bir teklif ihtiyacı için yazdırılırken "
|
||||
"kullanılacaktır. İçini kullanmak için boş tutunuz."
|
||||
|
||||
#. module: product
|
||||
#: model:ir.model.fields,help:product.field_product_supplierinfo__product_name
|
||||
@@ -1907,6 +1909,8 @@ msgid ""
|
||||
"This vendor's product name will be used when printing a request for "
|
||||
"quotation. Keep empty to use the internal one."
|
||||
msgstr ""
|
||||
"Bu tedarikçi ürün adı, bir teklif ihtiyacı için yazdırılırken "
|
||||
"kullanılacaktır. İçini kullanmak için boş tutunuz."
|
||||
|
||||
#. module: product
|
||||
#: model:ir.ui.view,arch_db:product.product_template_search_view
|
||||
@@ -2019,7 +2023,7 @@ msgstr "Varyant Fiyatları"
|
||||
#: model:ir.model.fields,field_description:product.field_product_product__variant_seller_ids
|
||||
#: model:ir.model.fields,field_description:product.field_product_template__variant_seller_ids
|
||||
msgid "Variant Seller"
|
||||
msgstr ""
|
||||
msgstr "Satıcı Varyantı"
|
||||
|
||||
#. module: product
|
||||
#: model:ir.actions.act_window,name:product.product_attribute_value_action
|
||||
@@ -2154,6 +2158,8 @@ msgstr "Şirketiniz için bir logo ya da bir layout ayarlamalısınız."
|
||||
#, python-format
|
||||
msgid "You have to set your reports's header and footer layout."
|
||||
msgstr ""
|
||||
"Raporlarınız için üst bilgi ve alt bilgi satırlarını ayalamanız "
|
||||
"gerekmektedir."
|
||||
|
||||
#. module: product
|
||||
#: model:ir.actions.act_window,help:product.product_uom_form_action
|
||||
@@ -2161,6 +2167,8 @@ msgid ""
|
||||
"You must define a conversion rate between several Units of\n"
|
||||
" Measure within the same category."
|
||||
msgstr ""
|
||||
"Aynı kategori dahilinde bazı Ölçü Birimleri arasında değişim oranı "
|
||||
"tanımlanmalı."
|
||||
|
||||
#. module: product
|
||||
#: model:ir.actions.act_window,help:product.product_normal_action
|
||||
@@ -2187,6 +2195,8 @@ msgid ""
|
||||
"You must define at least one product category in order to be able to create "
|
||||
"products."
|
||||
msgstr ""
|
||||
"Ürünleri oluşturabilmek için en az bir ürün kategorisi tanımlamanız "
|
||||
"gerekmektedir."
|
||||
|
||||
#. module: product
|
||||
#: model:product.uom,name:product.product_uom_cm
|
||||
@@ -2206,7 +2216,7 @@ msgstr "decimal.precision"
|
||||
#. module: product
|
||||
#: model:ir.ui.view,arch_db:product.product_category_form_view
|
||||
msgid "e.g. Lamps"
|
||||
msgstr ""
|
||||
msgstr "Örn. Aydınlatma"
|
||||
|
||||
#. module: product
|
||||
#: model:ir.ui.view,arch_db:product.product_variant_easy_edit_view
|
||||
@@ -2216,7 +2226,7 @@ msgstr ""
|
||||
#. module: product
|
||||
#: model:ir.ui.view,arch_db:product.product_pricelist_view
|
||||
msgid "e.g. USD Retailers"
|
||||
msgstr ""
|
||||
msgstr "Örn. Dolar Perakendeceliği"
|
||||
|
||||
#. module: product
|
||||
#: model:ir.ui.view,arch_db:product.product_uom_form_view
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user