diff --git a/addons/account/i18n/fr.po b/addons/account/i18n/fr.po index 6ea1c304c29..599e14ab1e7 100644 --- a/addons/account/i18n/fr.po +++ b/addons/account/i18n/fr.po @@ -3256,7 +3256,7 @@ msgstr "Configurer" #: code:addons/account/static/src/js/section_and_note_fields_backend.js:102 #, python-format msgid "Configure a product" -msgstr "" +msgstr "Configurer un article" #. module: account #: model:ir.actions.act_window,name:account.action_open_account_onboarding_invoice_layout diff --git a/addons/account/i18n/hr.po b/addons/account/i18n/hr.po index e2cbdea01d7..f2ca18af9c9 100644 --- a/addons/account/i18n/hr.po +++ b/addons/account/i18n/hr.po @@ -799,7 +799,7 @@ msgstr "" #. module: account #: model:ir.model,name:account.model_account_chart_template msgid "Account Chart Template" -msgstr "" +msgstr "Predložak kontnog plana" #. module: account #: model:ir.model,name:account.model_account_common_report @@ -3038,7 +3038,7 @@ msgstr "" #. module: account #: model:ir.model,name:account.model_res_config_settings msgid "Config Settings" -msgstr "" +msgstr "Postavke" #. module: account #: model:ir.ui.menu,name:account.menu_finance_configuration @@ -11935,13 +11935,6 @@ msgstr "za ovog dobavljača. Možete označiti ove račune kao plaćene." msgid "have been reconciled automatically." msgstr "" -#. module: account -#. openerp-web -#: code:addons/account/static/src/xml/account_reconciliation.xml:44 -#, python-format -msgid "o_manual_statement" -msgstr "" - #. module: account #: selection:account.payment.term.line,option:0 msgid "of the current month" diff --git a/addons/account/i18n/hu.po b/addons/account/i18n/hu.po index 71970867f2a..60d435a6dc7 100644 --- a/addons/account/i18n/hu.po +++ b/addons/account/i18n/hu.po @@ -751,7 +751,7 @@ msgstr "Figyelmeztetés beállítható partnerenként (Könyvelés)" #. module: account #: model:ir.model.fields,field_description:account.field_account_invoice__access_warning msgid "Access warning" -msgstr "" +msgstr "Hozzáférési figyelmeztetés" #. module: account #. openerp-web @@ -3639,7 +3639,7 @@ msgstr "Vevői befizetések" #. module: account #: model:ir.model.fields,help:account.field_account_invoice__access_url msgid "Customer Portal URL" -msgstr "" +msgstr "Ügyfélportál URL-je" #. module: account #: model:ir.model.fields,field_description:account.field_product_product__taxes_id @@ -7408,7 +7408,7 @@ msgstr "Lejárt számlák, lejárt fizetési határidő" #. module: account #: model:ir.ui.menu,name:account.menu_board_journal_1 msgid "Overview" -msgstr "" +msgstr "Áttekintés" #. module: account #: model_terms:ir.ui.view,arch_db:account.res_config_settings_view_form @@ -7897,7 +7897,7 @@ msgstr "" #. module: account #: model:ir.model.fields,field_description:account.field_account_invoice__access_url msgid "Portal Access URL" -msgstr "" +msgstr "Portálelérés URL-je" #. module: account #: model_terms:ir.ui.view,arch_db:account.view_move_form diff --git a/addons/account/i18n/nl.po b/addons/account/i18n/nl.po index 617fc9372fb..0491df8b8ec 100644 --- a/addons/account/i18n/nl.po +++ b/addons/account/i18n/nl.po @@ -4191,9 +4191,10 @@ msgid "" "used by itself, however it can still be used in a group. 'adjustment' is " "used to perform tax adjustment." msgstr "" -"Bepaald waar de belasting selecteerbaar is. Note : 'None' betekend dat een " -"belasting niet gebruikt kan worden. Ze kan wel toegepast worden in een groep" -" gebruikt. 'adjustment' is used to perform tax adjustment." +"Bepaald waar de belasting selecteerbaar is. Opmerking: 'None' betekend dat " +"een belasting niet gebruikt kan worden. Ze kan wel toegepast worden in een " +"groep gebruikt. 'aanpassing' wordt gebruikt om wijzigingen in belastingen te" +" doen." #. module: account #: model:ir.model.fields,field_description:account.field_account_bank_statement__difference diff --git a/addons/account/i18n/ru.po b/addons/account/i18n/ru.po index e5c4b69b871..e26f26e9ed7 100644 --- a/addons/account/i18n/ru.po +++ b/addons/account/i18n/ru.po @@ -36,6 +36,7 @@ # Martin Trigaux, 2019 # Collex100, 2019 # Sergo S, 2019 +# Vasiliy Korobatov , 2019 # msgid "" msgstr "" @@ -43,7 +44,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-01-16 07:59+0000\n" "PO-Revision-Date: 2016-08-05 12:55+0000\n" -"Last-Translator: Sergo S, 2019\n" +"Last-Translator: Vasiliy Korobatov , 2019\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" @@ -1004,7 +1005,7 @@ msgstr "Шаблон налогового счета" #. module: account #: model:ir.model.fields,field_description:account.field_res_config_settings__module_account_taxcloud msgid "Account TaxCloud" -msgstr "" +msgstr "Учет TaxCloud" #. module: account #: model_terms:ir.ui.view,arch_db:account.view_account_chart_template_seacrh @@ -1386,7 +1387,7 @@ msgstr "Корректировка налога" #. module: account #: model:ir.model.fields,field_description:account.field_tax_adjustments_wizard__adjustment_type msgid "Adjustment Type" -msgstr "" +msgstr "Тип регулировки" #. module: account #: model_terms:ir.ui.view,arch_db:account.view_account_tax_template_form @@ -2192,7 +2193,7 @@ msgstr "Банковская выписка" #: code:addons/account/models/account_bank_statement.py:602 #, python-format msgid "Bank Statement %s" -msgstr "" +msgstr "Банковская выписка %s" #. module: account #: model:ir.model,name:account.model_account_bank_statement_cashbox @@ -11691,6 +11692,8 @@ msgid "" "You cannot change the currency of the company since some journal items " "already exist" msgstr "" +"Вы не можете изменить валюту компании, так как некоторые записи журнала уже " +"существуют" #. module: account #: code:addons/account/models/account.py:317 @@ -11910,7 +11913,7 @@ msgstr "Вы имеете" #: code:addons/account/models/account_payment.py:622 #, python-format msgid "You have to define a sequence for %s in your company." -msgstr "" +msgstr "Вы должны определить последовательность для %s в вашей компании." #. module: account #: code:addons/account/wizard/pos_box.py:50 @@ -12075,13 +12078,6 @@ msgstr "" msgid "have been reconciled automatically." msgstr "" -#. module: account -#. openerp-web -#: code:addons/account/static/src/xml/account_reconciliation.xml:44 -#, python-format -msgid "o_manual_statement" -msgstr "" - #. module: account #: selection:account.payment.term.line,option:0 msgid "of the current month" diff --git a/addons/account/i18n/tr.po b/addons/account/i18n/tr.po index ececfaa7de5..0e0adc23c2b 100644 --- a/addons/account/i18n/tr.po +++ b/addons/account/i18n/tr.po @@ -13,13 +13,13 @@ # Ahmet Altinisik , 2019 # gezgin biri , 2019 # Ramiz Deniz Öner , 2019 -# Umur Akın , 2019 -# Ediz Duman , 2019 # Martin Trigaux, 2019 # Murat Kaplan , 2019 # Güven YILMAZ , 2019 # Buket Şeker , 2019 # Metin Akın , 2019 +# Umur Akın , 2019 +# Ediz Duman , 2019 # msgid "" msgstr "" @@ -27,7 +27,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-01-16 07:59+0000\n" "PO-Revision-Date: 2016-08-05 12:55+0000\n" -"Last-Translator: Metin Akın , 2019\n" +"Last-Translator: Ediz Duman , 2019\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" @@ -88,7 +88,7 @@ msgstr "%s (kopya)" #: code:addons/account/models/account.py:695 #, python-format msgid "%s Sequence" -msgstr "" +msgstr "%s Sıra" #. module: account #: model_terms:ir.ui.view,arch_db:account.report_invoice_document @@ -305,6 +305,11 @@ msgid "" " Bill \n" " Credit Note " msgstr "" +"Taslak Fatura\n" +" Taslak Alacak Notu\n" +" Fatura \n" +" Alacak Notu " #. module: account #: model_terms:ir.ui.view,arch_db:account.invoice_form @@ -320,6 +325,8 @@ msgid "" "and" msgstr "" +"ve" #. module: account #: model_terms:ir.ui.view,arch_db:account.validate_account_move_view @@ -386,11 +393,13 @@ msgid "" "Amount\n" " Total Price" msgstr "" +"Tutar\n" +" Toplam Fiyat" #. module: account #: model_terms:ir.ui.view,arch_db:account.account_journal_dashboard_kanban_view msgid " Statements" -msgstr "" +msgstr " Ekstreleri" #. module: account #: model_terms:ir.ui.view,arch_db:account.account_journal_dashboard_kanban_view @@ -400,7 +409,7 @@ msgstr "Yeni" #. module: account #: model_terms:ir.ui.view,arch_db:account.account_journal_dashboard_kanban_view msgid "Reconciliation" -msgstr "" +msgstr "Uzlaştırma" #. module: account #: model_terms:ir.ui.view,arch_db:account.account_journal_dashboard_kanban_view @@ -410,7 +419,7 @@ msgstr "Göster" #. module: account #: model_terms:ir.ui.view,arch_db:account.account_journal_dashboard_kanban_view msgid "Balance in General Ledger" -msgstr "" +msgstr "Hesap Bakiyesi" #. module: account #: model_terms:ir.ui.view,arch_db:account.account_journal_dashboard_kanban_view @@ -450,7 +459,7 @@ msgstr "İnd.(%)" #. module: account #: model_terms:ir.ui.view,arch_db:account.account_journal_dashboard_kanban_view msgid "Import Bills" -msgstr "" +msgstr "Faturaları İçe Aktar" #. module: account #: model_terms:ir.ui.view,arch_db:account.report_payment_receipt_document @@ -546,7 +555,7 @@ msgstr "" #. module: account #: model_terms:ir.ui.view,arch_db:account.portal_invoice_page msgid "Your Contact" -msgstr "" +msgstr "İlgili Kişi" #. module: account #: model_terms:ir.ui.view,arch_db:account.report_invoice_document_with_payments @@ -797,6 +806,8 @@ msgid "" "Account %s (%s) does not allow reconciliation. First change the " "configuration of this account to allow it." msgstr "" +"%s (%s) hesap uzlaştırmaya izin vermiyor. Öncelikle izin vermek için bu " +"hesabın yapılandırmasını değiştirin." #. module: account #: model:ir.model,name:account.model_account_cash_rounding @@ -1084,6 +1095,8 @@ msgid "" "Account that will be set on lines created in cash basis journal entry and " "used to keep track of the tax base amount." msgstr "" +"Gerçekleşme esaslı yevmiye girişine oluşturulan ve vergi esaslı miktarı " +"takip etmek için kayıtlarda kullanılacak hesap." #. module: account #: model:ir.model.fields,field_description:account.field_account_fiscal_position_account__account_dest_id @@ -1248,7 +1261,7 @@ msgstr "Bir Banka Ekle" #. module: account #: model_terms:ir.actions.act_window,help:account.action_account_journal_form msgid "Add a journal" -msgstr "" +msgstr "Yevmiye ekle" #. module: account #: model_terms:ir.ui.view,arch_db:account.invoice_form @@ -1371,7 +1384,7 @@ msgstr "Yaşlandırılmış İş Ortağı Bakiyesi" #. module: account #: model:ir.model,name:account.model_report_account_report_agedpartnerbalance msgid "Aged Partner Balance Report" -msgstr "" +msgstr "Yaşlandırılmış İş Ortağı Bakiye Raporu" #. module: account #: model:ir.model.fields,field_description:account.field_account_journal__alias_id @@ -1561,7 +1574,7 @@ msgstr "Fatura Para Birimi Tutarı" #: model:ir.model.fields,field_description:account.field_account_reconcile_model__match_total_amount #: model:ir.model.fields,field_description:account.field_account_reconcile_model_template__match_total_amount msgid "Amount Matching" -msgstr "" +msgstr "Tutar Eşleştirme" #. module: account #: model:ir.model.fields,field_description:account.field_account_reconcile_model__match_total_amount_param @@ -1795,12 +1808,12 @@ msgstr "Uygulanabilirlik" #. module: account #: selection:tax.adjustments.wizard,adjustment_type:0 msgid "Applied on credit journal item" -msgstr "" +msgstr "Alacak yevmiye kalemine uygulandı." #. module: account #: selection:tax.adjustments.wizard,adjustment_type:0 msgid "Applied on debit journal item" -msgstr "" +msgstr "Borç yevmiye kalemine uygulandı" #. module: account #: model_terms:ir.ui.view,arch_db:account.account_invoice_onboarding_invoice_layout_form @@ -1908,6 +1921,7 @@ msgid "" "Attachments are linked to a document through model / res_id and to the " "message through this field." msgstr "" +"Ekler, model / res_id üzerinden bir belgeye ve bu alandaki iletiye bağlanır." #. module: account #: selection:res.company,fiscalyear_last_month:0 @@ -1936,7 +1950,7 @@ msgstr "Yazanın Avatarı" #. module: account #: model_terms:ir.ui.view,arch_db:account.invoice_supplier_form msgid "Auto-Complete" -msgstr "" +msgstr "Otomatik Tamamla" #. module: account #: model:ir.model.fields,help:account.field_account_invoice__vendor_bill_id @@ -1952,7 +1966,7 @@ msgstr "Kendiliğinden algıla" #: model:ir.model.fields,field_description:account.field_account_reconcile_model__auto_reconcile #: model:ir.model.fields,field_description:account.field_account_reconcile_model_template__auto_reconcile msgid "Auto-validate" -msgstr "" +msgstr "Otomatik Doğrulama" #. module: account #: model_terms:ir.ui.view,arch_db:account.res_config_settings_view_form @@ -2138,7 +2152,7 @@ msgstr "Banka Uzlaştırma Hareketi Önayarı" #: model:ir.model.fields,field_description:account.field_res_company__account_bank_reconciliation_start #: model:ir.model.fields,field_description:account.field_res_config_settings__account_bank_reconciliation_start msgid "Bank Reconciliation Threshold" -msgstr "" +msgstr "Banka Uzlaştırma Eşiği" #. module: account #: model:ir.model,name:account.model_account_bank_statement @@ -2231,7 +2245,7 @@ msgstr "Matrah Tutarı" #: model:ir.model.fields,field_description:account.field_account_tax__cash_basis_base_account_id #: model:ir.model.fields,field_description:account.field_account_tax_template__cash_basis_base_account_id msgid "Base Tax Received Account" -msgstr "" +msgstr "Temel Vergi Alınan Hesap" #. module: account #: code:addons/account/models/company.py:19 @@ -2270,7 +2284,7 @@ msgstr "Ödemeye Dayalı" #. module: account #: model_terms:ir.ui.view,arch_db:account.res_config_settings_view_form msgid "Batch Payments" -msgstr "" +msgstr "Toplu Ödeme" #. module: account #: model:ir.model.fields,field_description:account.field_account_journal__belongs_to_company @@ -2324,7 +2338,7 @@ msgstr "Ödenecek Faturalar" #. module: account #: model_terms:ir.ui.view,arch_db:account.account_journal_dashboard_kanban_view msgid "Bills to Validate" -msgstr "" +msgstr "Onaylanacak Faturalar" #. module: account #: code:addons/account/models/account_journal_dashboard.py:178 @@ -2812,7 +2826,7 @@ msgstr "" #: code:addons/account/static/src/xml/account_reconciliation.xml:137 #, python-format msgid "Choose counterpart or Create Write-off" -msgstr "" +msgstr "Karşı hesap seçin yada borcu silin" #. module: account #: model:ir.model.fields,help:account.field_account_invoice_refund__filter_refund @@ -2848,6 +2862,8 @@ msgid "" "Click to validate your invoice. A reference will be assigned to this " "invoice and you will not be able to modify it anymore." msgstr "" +"Faturanızı doğrulamak için tıklayın. Bu faturaya bir referans " +"atanacak ve artık faturada değişikli yapamayacaksınız." #. module: account #. openerp-web @@ -2937,7 +2953,7 @@ msgstr "" #. module: account #: model:ir.model,name:account.model_account_common_journal_report msgid "Common Journal Report" -msgstr "" +msgstr "Ortak Yevmiye Raporu" #. module: account #: model:ir.actions.act_window,name:account.action_account_common_menu @@ -3256,7 +3272,7 @@ msgstr "Taslak İade/Fiyat Farkı oluşturun" #. module: account #: model_terms:ir.actions.act_window,help:account.action_move_journal_line msgid "Create a journal entry" -msgstr "" +msgstr "Yevmiye girişi oluştur" #. module: account #: model_terms:ir.actions.act_window,help:account.action_account_group_tree @@ -3287,7 +3303,7 @@ msgstr "Yeni Satınalınabilir Ürün Oluştur." #. module: account #: model_terms:ir.actions.act_window,help:account.action_account_reconcile_model msgid "Create a new reconciliation model" -msgstr "" +msgstr "Yeni uzlaşma modeli oluşturun" #. module: account #: model_terms:ir.actions.act_window,help:account.product_product_action_sellable @@ -3775,7 +3791,7 @@ msgstr "Tarihler" #: model:ir.model.fields,field_description:account.field_account_payment_term_line__day_of_the_month #: model_terms:ir.ui.view,arch_db:account.view_payment_term_line_tree msgid "Day of the month" -msgstr "" +msgstr "Ayın Günü" #. module: account #: model:ir.model.fields,help:account.field_account_payment_term_line__day_of_the_month @@ -4075,7 +4091,7 @@ msgstr "" #. module: account #: model_terms:ir.ui.view,arch_db:account.invoice_form msgid "Disc (%)" -msgstr "" +msgstr "İnd (%)" #. module: account #: model:ir.model.fields,field_description:account.field_account_invoice_line__discount @@ -4173,6 +4189,8 @@ msgid "" "Do not keep a copy of the email in the document communication history (mass " "mailing only)" msgstr "" +"E-postanın bir kopyasını belge iletişim geçmişinde saklamayın (yalnızca " +"toplu postalama)" #. module: account #: selection:res.company,account_dashboard_onboarding_state:0 @@ -4490,7 +4508,7 @@ msgstr "Gemide Masrafsız (FOB)" #. module: account #: model:ir.model.fields,field_description:account.field_account_invoice_send__starred_partner_ids msgid "Favorited By" -msgstr "" +msgstr "Favori" #. module: account #: model_terms:ir.ui.view,arch_db:account.view_account_journal_search @@ -4684,12 +4702,12 @@ msgstr "Tekipçiler (İş ortakları)" #. module: account #: model:ir.model.fields,field_description:account.field_account_journal__inbound_payment_method_ids msgid "For Incoming Payments" -msgstr "" +msgstr "Gelen Ödemeler İçin" #. module: account #: model:ir.model.fields,field_description:account.field_account_journal__outbound_payment_method_ids msgid "For Outgoing Payments" -msgstr "" +msgstr "Giden Ödemeler İçin" #. module: account #: model:ir.model.fields,help:account.field_account_payment_term_line__value_amount @@ -4874,7 +4892,7 @@ msgstr "Yapılandırma paneline git" #: code:addons/account/models/company.py:482 #, python-format msgid "Go to the journal configuration" -msgstr "" +msgstr "Yevmiye yapılandırmasına git" #. module: account #: selection:res.partner,trust:0 @@ -5481,7 +5499,7 @@ msgstr "" #: model:ir.model.fields,field_description:account.field_account_account__internal_group #: model:ir.model.fields,field_description:account.field_account_account_type__internal_group msgid "Internal Group" -msgstr "" +msgstr "İç Grup" #. module: account #: model:ir.model.fields,field_description:account.field_account_move__narration @@ -5749,7 +5767,7 @@ msgstr "Fatura borçları" #. module: account #: model_terms:ir.ui.view,arch_db:account.account_journal_dashboard_kanban_view msgid "Invoices to Validate" -msgstr "" +msgstr "Doğrulanacak Faturalar" #. module: account #: model:ir.model.fields,help:account.field_account_payment__reconciled_invoice_ids @@ -6030,7 +6048,7 @@ msgstr "" #. module: account #: model:ir.model.fields,field_description:account.field_account_bank_statement_line__journal_currency_id msgid "Journal's Currency" -msgstr "" +msgstr "Yevmiye Para Birimi" #. module: account #: model:ir.actions.act_window,name:account.action_account_journal_form @@ -6068,7 +6086,7 @@ msgstr "Haziran" #: selection:res.company,account_setup_coa_state:0 #: selection:res.company,account_setup_fy_data_state:0 msgid "Just done" -msgstr "" +msgstr "Yeni bitti" #. module: account #: model:ir.model.fields,field_description:account.field_tax_adjustments_wizard__reason @@ -6426,7 +6444,7 @@ msgstr "" #. module: account #: selection:account.setup.bank.manual.config,create_or_link_option:0 msgid "Link to an existing journal" -msgstr "" +msgstr "Mevcut bir yevmiyeyi kullan" #. module: account #: model:ir.model.fields,help:account.field_account_invoice__move_id @@ -6627,7 +6645,7 @@ msgstr "Toplu Postalama Kampanya" #. module: account #: model:ir.model.fields,field_description:account.field_account_invoice_send__mass_mailing_name msgid "Mass Mailing Name" -msgstr "" +msgstr "Toplu Posta Adı" #. module: account #: selection:account.reconcile.model,match_label:0 @@ -6949,7 +6967,7 @@ msgstr "Sonraki Sayı" #. module: account #: model:ir.model.fields,field_description:account.field_account_invoice__sequence_number_next_prefix msgid "Next Number Prefix" -msgstr "" +msgstr "Sonraki Numara Öneki" #. module: account #: model:ir.model.fields,field_description:account.field_account_move_line__blocked @@ -7142,7 +7160,7 @@ msgstr "Eylem gerektiren mesaj sayısı" #: model:ir.model.fields,help:account.field_account_invoice__message_has_error_counter #: model:ir.model.fields,help:account.field_account_payment__message_has_error_counter msgid "Number of messages with delivery error" -msgstr "" +msgstr "Teslimat hatası olan mesaj sayısı" #. module: account #: model:ir.model.fields,help:account.field_account_bank_statement__message_unread_counter @@ -7546,7 +7564,7 @@ msgstr "İş Ortağı Şirketi" #. module: account #: model:ir.model.fields,field_description:account.field_account_invoice_report__country_id msgid "Partner Company's Country" -msgstr "" +msgstr "İş Ortağı Şirket Ülkesi" #. module: account #: model:ir.model.fields,field_description:account.field_res_partner__contract_ids @@ -7678,7 +7696,7 @@ msgstr "Ödeme Yöntem Türü" #: model_terms:ir.ui.view,arch_db:account.view_account_bank_journal_form #: model_terms:ir.ui.view,arch_db:account.view_account_journal_form msgid "Payment Method Types" -msgstr "" +msgstr "Ödeme Yöntemi Türleri" #. module: account #. openerp-web @@ -7710,7 +7728,7 @@ msgstr "Ödeme Makbuzu:" #. module: account #: model:ir.model.fields,field_description:account.field_account_invoice__reference msgid "Payment Ref." -msgstr "" +msgstr "Ödeme Ref." #. module: account #: model:ir.model.fields,field_description:account.field_account_payment__payment_reference @@ -7889,7 +7907,7 @@ msgstr "Planlanan" #: code:addons/account/models/account_invoice.py:1187 #, python-format msgid "Please add at least one invoice line." -msgstr "" +msgstr "Lütfen en az bir fatura satırı ekleyin." #. module: account #: code:addons/account/wizard/pos_box.py:27 @@ -8036,7 +8054,7 @@ msgstr "Önizle" #. module: account #: model_terms:ir.ui.view,arch_db:account.account_invoice_send_wizard_form msgid "Preview as a PDF" -msgstr "" +msgstr "PDF olarak önizle" #. module: account #: model_terms:ir.ui.view,arch_db:account.invoice_form @@ -8163,7 +8181,7 @@ msgstr "Satınalma" #. module: account #: model_terms:ir.ui.view,arch_db:account.invoice_supplier_form msgid "Purchase Representative" -msgstr "" +msgstr "Satınalma Temsilcisi" #. module: account #: model_terms:ir.ui.view,arch_db:account.res_config_settings_view_form @@ -8209,7 +8227,7 @@ msgstr "Miktar:" #. module: account #: model:ir.model.fields,field_description:account.field_account_invoice_send__rating_value msgid "Rating Value" -msgstr "" +msgstr "Değerlendirme Puanı" #. module: account #: model:ir.model.fields,field_description:account.field_account_invoice_refund__description @@ -8244,7 +8262,7 @@ msgstr "Alacak Hesapları" #. module: account #: model:ir.model.fields,field_description:account.field_account_invoice_report__account_id msgid "Receivable/Payable Account" -msgstr "" +msgstr "Alacak / Borç Hesabı" #. module: account #: model_terms:ir.ui.view,arch_db:account.product_template_form_view @@ -8273,7 +8291,7 @@ msgstr "Alıcılar" #. module: account #: model:ir.model.fields,field_description:account.field_account_move_line__recompute_tax_line msgid "Recompute Tax Line" -msgstr "" +msgstr "Vergi Satırını Yeniden Hesapla" #. module: account #. openerp-web @@ -8306,7 +8324,7 @@ msgstr "Uzlaştırılmış" #. module: account #: model:ir.model.fields,field_description:account.field_account_payment__reconciled_invoice_ids msgid "Reconciled Invoices" -msgstr "" +msgstr "Uzlaştırılmış Faturalar" #. module: account #: model_terms:ir.ui.view,arch_db:account.view_move_form @@ -8436,7 +8454,7 @@ msgstr "" #: model_terms:ir.actions.act_window,help:account.action_account_payments_payable #: model_terms:ir.actions.act_window,help:account.action_account_payments_transfer msgid "Register a payment" -msgstr "" +msgstr "Ödeme kaydet" #. module: account #: selection:account.account.type,type:0 @@ -8456,7 +8474,7 @@ msgstr "İlgili Döküman Modeli" #. module: account #: model:ir.model.fields,field_description:account.field_account_invoice_send__rating_ids msgid "Related ratings" -msgstr "" +msgstr "İlişkili değerlendirmeler" #. module: account #: model:ir.model.fields,help:account.field_account_invoice__residual_company_signed @@ -8990,7 +9008,7 @@ msgstr "Eposta Gönder" #: code:addons/account/models/account_invoice.py:622 #, python-format msgid "Send Invoice" -msgstr "" +msgstr "Fatura Gönder" #. module: account #: selection:account.abstract.payment,payment_type:0 @@ -9007,12 +9025,12 @@ msgstr "E-postayla Makbuz Gönder" #. module: account #: model:ir.actions.act_window,name:account.action_open_account_onboarding_sample_invoice msgid "Send a sample invoice" -msgstr "" +msgstr "Örnek fatura gönder" #. module: account #: model_terms:ir.ui.view,arch_db:account.onboarding_sample_invoice_step msgid "Send an invoice to test the customer portal." -msgstr "" +msgstr "Müşteri portalını test etmek için bir fatura gönderin." #. module: account #: model_terms:ir.ui.view,arch_db:account.onboarding_sample_invoice_step @@ -9395,6 +9413,10 @@ msgid "" "Today: Activity date is today\n" "Planned: Future activities." msgstr "" +"Etkinliklerdeki aşamalar\n" +"Zamanı Geçmiş: Tarihi geçmiş \n" +"Bugün: Etkinlik günü bugün\n" +"Planlanan: Gelecek etkinlikler." #. module: account #: model_terms:ir.ui.view,arch_db:account.onboarding_bank_account_step @@ -10267,7 +10289,7 @@ msgstr "" #: code:addons/account/models/company.py:161 #, python-format msgid "The lock date for advisors is irreversible and can't be removed." -msgstr "" +msgstr "Müşavirler için kilit tarihleri geri alınamaz ve değiştirilemez." #. module: account #: model:ir.model.fields,help:account.field_account_move_line__move_id @@ -10285,6 +10307,8 @@ msgstr "Hesap hareket satırlarında kullanılacak ad" msgid "" "The new lock date for advisors must be set after the previous lock date." msgstr "" +"Müşavirler için yeni kilit tarihi, önceki kilit tarihinden sonraya " +"ayarlanmalıdır." #. module: account #: model:ir.model.fields,help:account.field_account_journal__refund_sequence_number_next @@ -10995,6 +11019,8 @@ msgid "" "Tracked values are stored in a separate model. This field allow to " "reconstruct the tracking and to generate statistics on the model." msgstr "" +"Takip edilen değerler ayrı modellerde depolanır. Bu alan, takip etmeyi " +"yeniden oluşturmaya ve model üzerinde istatistik oluşturmanıza imkan verir." #. module: account #: model:ir.model.fields,field_description:account.field_account_invoice_send__tracking_value_ids @@ -11718,6 +11744,9 @@ msgid "" "You cannot define stricter conditions on advisors than on users. Please make" " sure that the lock date on advisor is set before the lock date for users." msgstr "" +"Müşavirler için, kullanıcılardan daha katı kurallar tanımlayamazsınız. " +"Lütfen, müşavirler için tanımladığınız kilit tarihinin, kullanıcılar için " +"tanımlanan kilit tarihinden önce olduğuna emin olun." #. module: account #: code:addons/account/models/account_payment.py:583 @@ -11785,6 +11814,8 @@ msgid "" "You cannot have a receivable/payable account that is not reconcilable. " "(account code: %s)" msgstr "" +"Uzlaştırılamayan bir alacak / borç hesabına sahip olamazsınız. (hesap kodu: " +"%s)" #. module: account #: code:addons/account/models/account.py:76 @@ -11801,6 +11832,8 @@ msgid "" "You cannot lock a period that is not finished yet. Please make sure that the" " lock date for advisors is not set after the last day of the previous month." msgstr "" +"Henüz bitmemiş bir dönemi kilitleyemezsiniz. Lütfen müşavirler için kilit " +"tarihini, önceki ayın son gününden sonraya ayarlamadığınızdan emin olun." #. module: account #. openerp-web @@ -11872,6 +11905,8 @@ msgid "" "You cannot set a currency on this account as it already has some journal " "entries having a different foreign currency." msgstr "" +"Farklı para biriminde yevmiye kayıtları olduğu için bu hesap üzerinde bir " +"para birimi tanımlayamazsınız." #. module: account #: code:addons/account/models/account.py:301 @@ -11918,7 +11953,7 @@ msgstr "Var" #: code:addons/account/models/account_payment.py:622 #, python-format msgid "You have to define a sequence for %s in your company." -msgstr "" +msgstr "Şirketiniz için %s bir dizi tanımlamanız gerekmekte." #. module: account #: code:addons/account/wizard/pos_box.py:50 @@ -12082,13 +12117,6 @@ msgstr "" msgid "have been reconciled automatically." msgstr "" -#. module: account -#. openerp-web -#: code:addons/account/static/src/xml/account_reconciliation.xml:44 -#, python-format -msgid "o_manual_statement" -msgstr "" - #. module: account #: selection:account.payment.term.line,option:0 msgid "of the current month" @@ -12147,7 +12175,7 @@ msgstr "ana şirket" #: code:addons/account/static/src/xml/account_reconciliation.xml:55 #, python-format msgid "transactions in" -msgstr "" +msgstr "İşlemler" #. module: account #: model:ir.model.fields,help:account.field_account_invoice__amount_by_group diff --git a/addons/account/i18n/uk.po b/addons/account/i18n/uk.po index 485989d2cd2..d4cf685f529 100644 --- a/addons/account/i18n/uk.po +++ b/addons/account/i18n/uk.po @@ -42,6 +42,11 @@ 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 "" +" * Статус \"Чернетка\" використовується, коли користувач кодує новий і непідтверджений рахунок.\n" +" * Статус \"Відкрито\" використовується, коли користувач створює рахунок-фактуру, генерується номер рахунку-фактури. Він залишається у відкритому стані, поки користувач не оплатить рахунок.\n" +" * Статус \"В оплаті\" використовується, коли платежі були зареєстровані для загального рахунку в журналі, налаштованому для розміщення записів тільки при узгодженні банківської виписки, а деякі з них ще не узгоджені з рядком банківської виписки.\n" +" * Статус \"Оплачено\" встановлюється автоматично після оплати рахунка-фактури. Його пов'язані записи журналу можуть або не можуть бути узгоджені.\n" +" * Статус \"Скасовано\" використовується, коли користувач скасовує рахунок-фактуру." #. module: account #: model:ir.model.fields,field_description:account.field_account_chart_template__code_digits @@ -158,6 +163,22 @@ msgid "" "

\n" "\n" msgstr "" +"\n" +"
\n" +"

\n" +" Шановний(а) ${object.partner_id.name}

\n" +" Дякуємо за вашу оплату.\n" +" Це ваша квитанція про оплату ${(object.name or '').replace('/','-')} у сумі\n" +" в ${format_amount(object.amount, object.currency_id)} від ${object.company_id.name}.\n" +"

\n" +" Не соромтеся звертатися до нас, якщо у вас виникли питання.\n" +"

\n" +" З найкращими побажаннями,
\n" +" % if user and user.signature:\n" +" ${user.signature | safe}\n" +" % endif\n" +"

\n" +"
\n" #. module: account #: model:mail.template,body_html:account.email_template_edi_invoice @@ -191,6 +212,34 @@ msgid "" "\n" " " msgstr "" +"
\n" +"

\n" +" Шановий(а) ${object.partner_id.name}\n" +" % if object.partner_id.parent_id:\n" +" (${object.partner_id.parent_id.name})\n" +" % endif\n" +"

\n" +" Це ваш рахунок \n" +" % if object.number:\n" +" invoice ${object.number}\n" +" % else:\n" +" invoice\n" +" %endif\n" +" % if object.origin:\n" +" (with reference: ${object.origin})\n" +" % endif\n" +" у сумі ${format_amount(object.amount_total, object.currency_id)}\n" +" від ${object.company_id.name}.\n" +" % if object.state=='paid':\n" +" Цей рахунок вже оплачено.\n" +" % else:\n" +" Здійсніть платіж якомога швидше.\n" +" % endif\n" +"

\n" +" Не соромтеся зв'язатися з нами, якщо у вас є запитання.\n" +"

\n" +"
\n" +" " #. module: account #: model_terms:ir.ui.view,arch_db:account.portal_my_home_menu_invoice @@ -358,6 +407,8 @@ msgid "" "All selected journal entries will be validated " "and posted. You won't be able to modify them afterwards." msgstr "" +"Всі вибрані записи журналу будуть перевірені та" +" опубліковані. Після цього ви не зможете змінити їх." #. module: account #: model_terms:ir.ui.view,arch_db:account.res_config_settings_view_form @@ -412,6 +463,8 @@ msgid "" "Only journals not yet linked to a bank account " "are proposed" msgstr "" +"Запропоновано лише журнали, які ще не пов'язані з" +" банківським рахунком" #. module: account #: model_terms:ir.ui.view,arch_db:account.report_invoice_document @@ -577,6 +630,8 @@ msgid "" "The SEPA QR Code informations are not set " "correctly.
" msgstr "" +"Інформація QR-коду SEPA не встановлена " +"правильно.
" #. module: account #: model_terms:ir.ui.view,arch_db:account.portal_invoice_page @@ -714,7 +769,7 @@ msgstr "Тільки один рядок терміну оплати повин #: code:addons/account/models/account.py:861 #, python-format msgid "A bank account can belong to only one journal." -msgstr "" +msgstr "Банківський рахунок може належати лише одному журналу." #. module: account #: model_terms:ir.actions.act_window,help:account.action_bank_statement_tree @@ -730,7 +785,7 @@ msgstr "" #. module: account #: model_terms:ir.actions.act_window,help:account.action_bank_statement_line msgid "A bank statement line is a financial transaction on a bank account" -msgstr "" +msgstr "Банківська виписка - це фінансова операція на банківському рахунку" #. module: account #: model_terms:ir.actions.act_window,help:account.action_move_journal_line @@ -759,6 +814,10 @@ msgid "" "posted. Those will be posted automatically after performing the bank " "reconciliation." msgstr "" +"Запис журналу платежів, згенерований у журналі, налаштований для публікації " +"записів тільки тоді, коли платежі узгоджуються з випискою банку, не може " +"бути опубліковано вручну. Вони будуть опубліковані автоматично після " +"виконання банківської звірки." #. module: account #: code:addons/account/models/reconciliation_widget.py:692 @@ -792,6 +851,7 @@ msgstr "Вибраний рядок заяви вже був узгоджени #: sql_constraint:account.fiscal.position.tax:0 msgid "A tax fiscal position could be defined only one time on same taxes." msgstr "" +"Схема оподаткування може бути визначена лише один раз на однакові податки." #. module: account #: model:res.groups,name:account.group_warning_account @@ -834,11 +894,13 @@ msgid "" "Account %s (%s) does not allow reconciliation. First change the " "configuration of this account to allow it." msgstr "" +"Рахунок %s (%s) не дозволяє узгодження. Спочатку змініть налаштування цього " +"рахунку, щоби дозволити узгодження." #. module: account #: model:ir.model,name:account.model_account_cash_rounding msgid "Account Cash Rounding" -msgstr "" +msgstr "Округлення рахунку в бухобліку" #. module: account #: model:ir.model,name:account.model_account_chart_template @@ -1313,7 +1375,7 @@ msgstr "Додати примітку" #. module: account #: model_terms:ir.ui.view,arch_db:account.res_config_settings_view_form msgid "Add a payment QR code to your invoices" -msgstr "" +msgstr "Додайте QR-код оплати до ваших рахунків" #. module: account #: selection:account.cash.rounding,strategy:0 @@ -2376,7 +2438,7 @@ msgstr "Рахунки до оплати" #. module: account #: model_terms:ir.ui.view,arch_db:account.account_journal_dashboard_kanban_view msgid "Bills to Validate" -msgstr "" +msgstr "Рахунки для перевірки" #. module: account #: code:addons/account/models/account_journal_dashboard.py:178 @@ -6564,7 +6626,7 @@ msgstr "Введіть внутрішню примітку" #. module: account #: model_terms:ir.ui.view,arch_db:account.onboarding_invoice_layout_step msgid "Looks great!" -msgstr "" +msgstr "Виглядає чудово!" #. module: account #: code:addons/account/models/account_bank_statement.py:175 @@ -7794,7 +7856,7 @@ msgstr "Квитанція про оплату:" #. module: account #: model:ir.model.fields,field_description:account.field_account_invoice__reference msgid "Payment Ref." -msgstr "" +msgstr "Референс оплати" #. module: account #: model:ir.model.fields,field_description:account.field_account_payment__payment_reference @@ -9110,7 +9172,7 @@ msgstr "" #. module: account #: model_terms:ir.ui.view,arch_db:account.onboarding_sample_invoice_step msgid "Send sample" -msgstr "" +msgstr "Надіслати зразок" #. module: account #: selection:account.payment,state:0 @@ -9753,7 +9815,7 @@ msgstr "" #. module: account #: model:ir.model.fields,field_description:account.field_account_invoice__amount_by_group msgid "Tax amount by group" -msgstr "" +msgstr "Сума податку за групами" #. module: account #: model:ir.model.fields,field_description:account.field_res_config_settings__tax_calculation_rounding_method @@ -12277,7 +12339,7 @@ msgstr "транзакція в" #. module: account #: model:ir.model.fields,help:account.field_account_invoice__amount_by_group msgid "type: [(name, amount, base, formated amount, formated base)]" -msgstr "" +msgstr "type: [(name, amount, base, formated amount, formated base)]" #. module: account #: model_terms:ir.ui.view,arch_db:account.view_bank_statement_form diff --git a/addons/account/models/account_journal_dashboard.py b/addons/account/models/account_journal_dashboard.py index c0be7dad2d7..f815820da4a 100644 --- a/addons/account/models/account_journal_dashboard.py +++ b/addons/account/models/account_journal_dashboard.py @@ -392,12 +392,11 @@ class account_journal(models.Model): 'journal_type': self.type, 'default_journal_id': self.id, 'default_type': invoice_type, - 'type': invoice_type + 'type': invoice_type, + 'search_default_journal_id': self.id, }) [action] = self.env.ref('account.%s' % action_name).read() - if not self.env.context.get('use_domain'): - ctx['search_default_journal_id'] = self.id action['context'] = ctx action['domain'] = self._context.get('use_domain', []) account_invoice_filter = self.env.ref('account.view_account_invoice_filter', False) diff --git a/addons/account/views/account_invoice_view.xml b/addons/account/views/account_invoice_view.xml index d8a7a9c7cc5..42138b29f8e 100644 --- a/addons/account/views/account_invoice_view.xml +++ b/addons/account/views/account_invoice_view.xml @@ -655,6 +655,7 @@ + diff --git a/addons/account_analytic_default/i18n/nl.po b/addons/account_analytic_default/i18n/nl.po index da5e493ea26..d6316fa4f8e 100644 --- a/addons/account_analytic_default/i18n/nl.po +++ b/addons/account_analytic_default/i18n/nl.po @@ -5,10 +5,9 @@ # Translators: # Erwin van der Ploeg , 2016 # Martin Trigaux, 2016 -# Yenthe Van Ginneken , 2017 # Cas Vissers , 2017 # Eric Geens , 2018 -# Wynand Tastenhoye , 2018 +# Yenthe Van Ginneken , 2018 # msgid "" msgstr "" @@ -16,7 +15,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-09-18 09:49+0000\n" "PO-Revision-Date: 2016-08-05 12:55+0000\n" -"Last-Translator: Wynand Tastenhoye , 2018\n" +"Last-Translator: Yenthe Van Ginneken , 2018\n" "Language-Team: Dutch (https://www.transifex.com/odoo/teams/41243/nl/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -51,8 +50,8 @@ msgid "" "An analytic default requires at least an analytic account or an analytic " "tag." msgstr "" -"Een analytische standaardwaarde vereist ten minste een analytische rekening " -"of een analytische tag." +"Een kostenplaats standaardwaarde vereist ten minste een kostenplaats " +"rekening of een kostenplaats label." #. module: account_analytic_default #: model:ir.model.fields,field_description:account_analytic_default.field_account_analytic_default__analytic_id diff --git a/addons/account_bank_statement_import/i18n/tr.po b/addons/account_bank_statement_import/i18n/tr.po index b44e82c7c77..82386eb3c00 100644 --- a/addons/account_bank_statement_import/i18n/tr.po +++ b/addons/account_bank_statement_import/i18n/tr.po @@ -6,6 +6,7 @@ # Levent Karakaş , 2017 # Umur Akın , 2018 # Murat Kaplan , 2018 +# Ediz Duman , 2019 # msgid "" msgstr "" @@ -13,7 +14,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-09-21 13:17+0000\n" "PO-Revision-Date: 2016-08-05 12:55+0000\n" -"Last-Translator: Murat Kaplan , 2018\n" +"Last-Translator: Ediz Duman , 2019\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" @@ -287,12 +288,12 @@ msgstr "Dosya Adı" #. module: account_bank_statement_import #: model:ir.model.fields,field_description:account_bank_statement_import.field_account_bank_statement_import_journal_creation__inbound_payment_method_ids msgid "For Incoming Payments" -msgstr "" +msgstr "Gelen Ödemeler İçin" #. module: account_bank_statement_import #: model:ir.model.fields,field_description:account_bank_statement_import.field_account_bank_statement_import_journal_creation__outbound_payment_method_ids msgid "For Outgoing Payments" -msgstr "" +msgstr "Giden Ödemeler İçin" #. module: account_bank_statement_import #: model:ir.model.fields,help:account_bank_statement_import.field_account_bank_statement_import__data_file diff --git a/addons/account_check_printing/i18n/hr.po b/addons/account_check_printing/i18n/hr.po index febb8e6d584..a06a746186f 100644 --- a/addons/account_check_printing/i18n/hr.po +++ b/addons/account_check_printing/i18n/hr.po @@ -39,7 +39,7 @@ msgstr "Ček memo ne može sadržavati više od 60 znakova." #. module: account_check_printing #: model:ir.model,name:account_check_printing.model_account_chart_template msgid "Account Chart Template" -msgstr "" +msgstr "Predložak kontnog plana" #. module: account_check_printing #: model:ir.model.fields,help:account_check_printing.field_res_company__account_check_printing_margin_left @@ -159,7 +159,7 @@ msgstr "" #. module: account_check_printing #: model:ir.model,name:account_check_printing.model_res_config_settings msgid "Config Settings" -msgstr "" +msgstr "Postavke" #. module: account_check_printing #: model:ir.model.fields,field_description:account_check_printing.field_print_prenumbered_checks__create_uid diff --git a/addons/account_payment/i18n/tr.po b/addons/account_payment/i18n/tr.po index c9788ab956f..07546100642 100644 --- a/addons/account_payment/i18n/tr.po +++ b/addons/account_payment/i18n/tr.po @@ -4,12 +4,12 @@ # # Translators: # Saban Yildiz , 2017 -# Ediz Duman , 2017 # Martin Trigaux, 2017 # Hakan ıı, 2017 # Murat Kaplan , 2017 -# Umur Akın , 2018 # Ahmet Altinisik , 2019 +# Umur Akın , 2019 +# Ediz Duman , 2019 # msgid "" msgstr "" @@ -17,7 +17,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-09-18 09:49+0000\n" "PO-Revision-Date: 2017-12-13 14:50+0000\n" -"Last-Translator: Ahmet Altinisik , 2019\n" +"Last-Translator: Ediz Duman , 2019\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" @@ -41,21 +41,23 @@ msgid "" " " "Pay Now" msgstr "" +" " +"Şimdi Öde" #. module: account_payment #: model_terms:ir.ui.view,arch_db:account_payment.portal_invoice_page_inherit_payment msgid " Pay Now" -msgstr "" +msgstr " Şimdi Öde" #. module: account_payment #: model_terms:ir.ui.view,arch_db:account_payment.portal_invoice_page_inherit_payment msgid " Paid" -msgstr "" +msgstr " Ödendi" #. module: account_payment #: model_terms:ir.ui.view,arch_db:account_payment.portal_invoice_page_inherit_payment msgid " Pending" -msgstr "" +msgstr " Bekliyor" #. module: account_payment #: model_terms:ir.ui.view,arch_db:account_payment.portal_invoice_page_inherit_payment @@ -63,6 +65,8 @@ msgid "" " You have credits card registered, you can log-in " "to be able to use them." msgstr "" +" Kayıtlı bir kredi kartınız var, kullanabilmek için" +" giriş yapabilirsiniz." #. module: account_payment #: model_terms:ir.ui.view,arch_db:account_payment.portal_my_invoices_payment @@ -70,6 +74,8 @@ msgid "" " Cancelled" msgstr "" +" İptal Edildi" #. module: account_payment #: model_terms:ir.ui.view,arch_db:account_payment.portal_my_invoices_payment @@ -78,6 +84,9 @@ msgid "" "clock-o\"/> Waiting for " "Payment
" msgstr "" +" Ödeme " +"Bekleniyor" #. module: account_payment #: model_terms:ir.ui.view,arch_db:account_payment.portal_my_invoices_payment @@ -92,6 +101,8 @@ msgid "" " Paid" msgstr "" +" Ödendi" #. module: account_payment #: model_terms:ir.ui.view,arch_db:account_payment.portal_my_invoices_payment @@ -99,6 +110,8 @@ msgid "" " Pending" msgstr "" +" Bekliyor" #. module: account_payment #: model_terms:ir.ui.view,arch_db:account_payment.portal_invoice_success @@ -106,6 +119,8 @@ msgid "" "Done, your online payment has been successfully processed. Thank you for " "your order." msgstr "" +"Tamam, çevrimiçi ödemeniz başarıyla işlendi. Siparişiniz için teşekkür " +"ederiz." #. module: account_payment #: code:addons/account_payment/controllers/payment.py:47 @@ -132,7 +147,7 @@ msgstr "Şimdi Öde" #. module: account_payment #: model_terms:ir.ui.view,arch_db:account_payment.portal_my_invoices_payment msgid "Pay now" -msgstr "" +msgstr "Şimdi Öde" #. module: account_payment #: model_terms:ir.ui.view,arch_db:account_payment.portal_invoice_payment @@ -165,7 +180,7 @@ msgstr "" #. module: account_payment #: model_terms:ir.ui.view,arch_db:account_payment.portal_invoice_error msgid "There was an error processing your payment: transaction failed.
" -msgstr "" +msgstr "Ödeme işlemi sırasında bir sorun oluştu: işlem başarısız.
" #. module: account_payment #: model_terms:ir.ui.view,arch_db:account_payment.portal_invoice_error diff --git a/addons/account_voucher/i18n/tr.po b/addons/account_voucher/i18n/tr.po index 51dc0194577..7f0311c836e 100644 --- a/addons/account_voucher/i18n/tr.po +++ b/addons/account_voucher/i18n/tr.po @@ -8,7 +8,6 @@ # Gökhan Erdoğdu , 2017 # gezgin biri , 2017 # Fırat Kaya , 2017 -# Ediz Duman , 2017 # Ayhan KIZILTAN , 2018 # Martin Trigaux, 2018 # Ahmet Altinisik , 2018 @@ -16,6 +15,7 @@ # Ramiz Deniz Öner , 2018 # Murat Kaplan , 2019 # Buket Şeker , 2019 +# Ediz Duman , 2019 # msgid "" msgstr "" @@ -23,7 +23,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-09-21 13:17+0000\n" "PO-Revision-Date: 2016-08-05 12:55+0000\n" -"Last-Translator: Buket Şeker , 2019\n" +"Last-Translator: Ediz Duman , 2019\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" @@ -379,7 +379,7 @@ msgstr "Eylem gerektiren mesaj sayısı" #. module: account_voucher #: model:ir.model.fields,help:account_voucher.field_account_voucher__message_has_error_counter msgid "Number of messages with delivery error" -msgstr "" +msgstr "Teslimat hatası olan mesaj sayısı" #. module: account_voucher #: model:ir.model.fields,help:account_voucher.field_account_voucher__message_unread_counter diff --git a/addons/analytic/i18n/tr.po b/addons/analytic/i18n/tr.po index 954f14b7993..dfb45f30daf 100644 --- a/addons/analytic/i18n/tr.po +++ b/addons/analytic/i18n/tr.po @@ -12,10 +12,10 @@ # Mehmet Demirel , 2018 # Ramiz Deniz Öner , 2018 # Metin Akın , 2018 -# Ediz Duman , 2018 # Martin Trigaux, 2019 # Murat Kaplan , 2019 # Buket Şeker , 2019 +# Ediz Duman , 2019 # msgid "" msgstr "" @@ -23,7 +23,7 @@ msgstr "" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2018-09-21 13:17+0000\n" "PO-Revision-Date: 2016-08-05 12:56+0000\n" -"Last-Translator: Buket Şeker , 2019\n" +"Last-Translator: Ediz Duman , 2019\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" @@ -444,7 +444,7 @@ msgstr "Eylem gerektiren mesaj sayısı" #. module: analytic #: model:ir.model.fields,help:analytic.field_account_analytic_account__message_has_error_counter msgid "Number of messages with delivery error" -msgstr "" +msgstr "Teslimat hatası olan mesaj sayısı" #. module: analytic #: model:ir.model.fields,help:analytic.field_account_analytic_account__message_unread_counter diff --git a/addons/board/static/src/js/board_view.js b/addons/board/static/src/js/board_view.js index 0d9c90beb0e..bcfc892213d 100644 --- a/addons/board/static/src/js/board_view.js +++ b/addons/board/static/src/js/board_view.js @@ -120,7 +120,6 @@ var BoardController = FormController.extend({ var BoardRenderer = FormRenderer.extend({ custom_events: _.extend({}, FormRenderer.prototype.custom_events, { - do_action: '_onDoAction', update_filters: '_onUpdateFilters', switch_view: '_onSwitchView', }), diff --git a/addons/board/static/tests/dashboard_tests.js b/addons/board/static/tests/dashboard_tests.js index 6b3f98cd3eb..19e3ec8c6bd 100644 --- a/addons/board/static/tests/dashboard_tests.js +++ b/addons/board/static/tests/dashboard_tests.js @@ -25,19 +25,23 @@ QUnit.module('Dashboard', { display_name: {string: "Displayed name", type: "char", searchable: true}, foo: {string: "Foo", type: "char", default: "My little Foo Value", searchable: true}, bar: {string: "Bar", type: "boolean"}, + int_field: {string: "Integer field", type: "integer"}, }, records: [{ id: 1, display_name: "first record", foo: "yop", + int_field: 3, }, { id: 2, display_name: "second record", foo: "lalala", + int_field: 5, }, { id: 4, display_name: "aaa", foo: "abc", + int_field: 2, }], }, }; @@ -859,4 +863,47 @@ QUnit.test("Dashboard should use correct groupby", function (assert) { form.destroy(); }); + +QUnit.test('click on a cell of pivot view inside dashboard', function (assert) { + assert.expect(3); + + var form = createView({ + View: BoardView, + model: 'board', + data: this.data, + arch: '
' + + '' + + '' + + '' + + '' + + '' + + '
', + mockRPC: function (route) { + if (route === '/web/action/load') { + return $.when({ + res_model: 'partner', + views: [[4, 'pivot']], + }); + } + return this._super.apply(this, arguments); + }, + archs: { + 'partner,4,pivot': '', + }, + intercepts: { + do_action: function () { + assert.step('do action'); + }, + }, + }); + + assert.verifySteps([]); + + testUtils.dom.click(form.$('.o_pivot .o_pivot_cell_value')); + + assert.verifySteps(['do action']); + + form.destroy(); +}); + }); diff --git a/addons/hr_holidays/i18n/hr_holidays.pot b/addons/hr_holidays/i18n/hr_holidays.pot index 116d071dbcc..0836ffa40a3 100644 --- a/addons/hr_holidays/i18n/hr_holidays.pot +++ b/addons/hr_holidays/i18n/hr_holidays.pot @@ -1724,6 +1724,11 @@ msgstr "" msgid "My Team Leaves" msgstr "" +#. module: hr_holidays +#: model:ir.ui.menu,name:hr_holidays.menu_hr_holidays_dashboard +msgid "My Team" +msgstr "" + #. module: hr_holidays #: selection:hr.employee,current_leave_state:0 msgid "New" diff --git a/addons/hr_holidays/models/hr_leave.py b/addons/hr_holidays/models/hr_leave.py index 65760f4f6d1..be18aaa71d6 100644 --- a/addons/hr_holidays/models/hr_leave.py +++ b/addons/hr_holidays/models/hr_leave.py @@ -507,6 +507,8 @@ class HolidaysRequest(models.Model): holiday = super(HolidaysRequest, self.with_context(mail_create_nolog=True, mail_create_nosubscribe=True)).create(values) if not self._context.get('leave_fast_create'): holiday.add_follower(employee_id) + if holiday.validation_type == 'hr': + holiday.message_subscribe(partner_ids=(holiday.employee_id.parent_id.user_id.partner_id | holiday.employee_id.leave_manager_id.partner_id).ids) if employee_id: holiday._onchange_employee_id() if 'number_of_days' not in values and ('date_from' in values or 'date_to' in values): @@ -515,7 +517,7 @@ class HolidaysRequest(models.Model): holiday.sudo().action_validate() holiday.message_subscribe(partner_ids=[holiday._get_responsible_for_approval().partner_id.id]) holiday.sudo().message_post(body=_("The time off has been automatically approved"), subtype="mt_comment") # Message from OdooBot (sudo) - if not self._context.get('import_file'): + elif not self._context.get('import_file'): holiday.activity_update() return holiday @@ -719,7 +721,7 @@ class HolidaysRequest(models.Model): employee_requests = self.filtered(lambda hol: hol.holiday_type == 'employee') employee_requests._validate_leave_request() if not self.env.context.get('leave_fast_create'): - employee_requests.activity_update() + employee_requests.filtered(lambda holiday: holiday.validation_type != 'no_validation').activity_update() return True @api.multi @@ -746,48 +748,69 @@ class HolidaysRequest(models.Model): """ Check if target state is achievable. """ current_employee = self.env['hr.employee'].search([('user_id', '=', self.env.uid)], limit=1) is_team_leader = self.env.user.has_group('hr_holidays.group_hr_holidays_team_leader') + is_officer = self.env.user.has_group('hr_holidays.group_hr_holidays_user') is_manager = self.env.user.has_group('hr_holidays.group_hr_holidays_manager') + + # FIXME This is probably handled by hr_leave_allocation_rule_employee_update ir.rule + if state in ['refuse', 'validate1', 'validate'] and not is_team_leader: + raise UserError(_('Only a Team Leader, Time Off Officer or Manager can approve or refuse time off requests.')) + for holiday in self: val_type = holiday.holiday_status_id.validation_type - if state == 'confirm': - continue - if state == 'draft': - if holiday.employee_id != current_employee and not is_manager: - raise UserError(_('Only a Time Off Manager can reset other people time off.')) - continue + if not is_manager: + if state == 'confirm': + continue + elif state == 'draft': + if holiday.employee_id != current_employee: + raise UserError(_('Only a Time Off Manager can reset other people time off.')) + else: + # use ir.rule based first access check: department, members, ... (see security.xml) + holiday.check_access_rule('write') - if not is_team_leader: - raise UserError(_('Only a Team Leader, Time Off Officer or Manager can approve or refuse time off requests.')) + # FIXME Should probably be handled via ir.rule + # This handles states validate1 validate and refuse + if holiday.employee_id == current_employee: + raise UserError(_('Only a Time Off Manager can approve its own requests.')) - if is_team_leader: - # use ir.rule based first access check: department, members, ... (see security.xml) - holiday.check_access_rule('write') + if (state == 'validate1' and val_type == 'both') or (state == 'validate' and val_type == 'manager') and holiday.holiday_type == 'employee': + manager = holiday.employee_id.parent_id or holiday.employee_id.department_id.manager_id + team_leader = holiday.employee_id.leave_manager_id + error = False - if holiday.employee_id == current_employee and not is_manager: - raise UserError(_('Only a Time Off Manager can approve its own requests.')) + if not manager and not team_leader: + error = not is_officer + else: + error = (not (manager and manager == current_employee) and not (team_leader and team_leader == self.env.user)) - if (state == 'validate1' and val_type == 'both') or (state == 'validate' and val_type == 'manager'): - manager = holiday.employee_id.parent_id or holiday.employee_id.department_id.manager_id - if (manager and manager != current_employee) and not self.env.user.has_group('hr_holidays.group_hr_holidays_manager'): - raise UserError(_('You must be either %s\'s manager or Time Off Manager to approve this time off') % (holiday.employee_id.name)) + if error: + raise UserError(_('You must be either %s\'s manager or Time Off Manager to approve this time off') % (holiday.employee_id.name)) - if state == 'validate' and val_type == 'both': - if not self.env.user.has_group('hr_holidays.group_hr_holidays_manager'): - raise UserError(_('Only an Time Off Manager can apply the second approval on time off requests.')) + if state == 'validate' and val_type == 'both': + raise UserError(_('Only an Time Off Manager can apply the second approval on time off requests.')) # ------------------------------------------------------------ # Activity methods # ------------------------------------------------------------ def _get_responsible_for_approval(self): - if self.state == 'confirm' and self.employee_id.leave_manager_id and self.employee_id.leave_manager_id.has_group('hr_holidays.group_hr_holidays_team_leader'): - return self.employee_id.leave_manager_id - elif self.state == 'confirm' and self.employee_id.parent_id.user_id and self.employee_id.parent_id.user_id.has_group('hr_holidays.group_hr_holidays_team_leader'): - return self.employee_id.parent_id.user_id - elif self.department_id.manager_id.user_id: - return self.department_id.manager_id.user_id - return self.env.user + self.ensure_one() + responsible = self.env.user + + if self.validation_type == 'hr' or (self.validation_type == 'both' and self.state == 'validate1'): + responsible = self.env['res.users'].search([ + ('company_id', '=', self.employee_id.company_id.id), + ('groups_id', 'in', self.env.ref('hr_holidays.group_hr_holidays_user').id) + ], limit=1) + elif self.state == 'confirm' or (self.state == 'validate' and self.validation_type == 'no_validation'): + if self.employee_id.leave_manager_id and self.employee_id.leave_manager_id.has_group('hr_holidays.group_hr_holidays_team_leader'): + responsible = self.employee_id.leave_manager_id + elif self.employee_id.parent_id.user_id and self.employee_id.parent_id.user_id.has_group('hr_holidays.group_hr_holidays_team_leader'): + responsible = self.employee_id.parent_id.user_id + elif self.department_id.manager_id.user_id: + responsible = self.department_id.manager_id.user_id + + return responsible def activity_update(self): to_clean, to_do = self.env['hr.leave'], self.env['hr.leave'] @@ -838,7 +861,7 @@ class HolidaysRequest(models.Model): ref_action = self._notify_get_action_link('controller', controller='/leave/refuse') hr_actions += [{'url': ref_action, 'title': _('Refuse')}] - holiday_user_group_id = self.env.ref('hr_holidays.group_hr_holidays_user').id + holiday_user_group_id = self.env.ref('hr_holidays.group_hr_holidays_team_leader').id new_group = ( 'group_hr_holidays_user', lambda pdata: pdata['type'] == 'user' and holiday_user_group_id in pdata['groups'], { 'actions': hr_actions, diff --git a/addons/hr_holidays/models/hr_leave_allocation.py b/addons/hr_holidays/models/hr_leave_allocation.py index 206a3933555..8be3c4ac604 100644 --- a/addons/hr_holidays/models/hr_leave_allocation.py +++ b/addons/hr_holidays/models/hr_leave_allocation.py @@ -338,6 +338,8 @@ class HolidaysAllocation(models.Model): values.update({'department_id': self.env['hr.employee'].browse(employee_id).department_id.id}) holiday = super(HolidaysAllocation, self.with_context(mail_create_nolog=True, mail_create_nosubscribe=True)).create(values) holiday.add_follower(employee_id) + if holiday.validation_type == 'hr': + holiday.message_subscribe(partner_ids=(holiday.employee_id.parent_id.user_id.partner_id | holiday.employee_id.leave_manager_id.partner_id).ids) if 'employee_id' in values: holiday._onchange_employee() holiday.activity_update() @@ -520,6 +522,12 @@ class HolidaysAllocation(models.Model): # ------------------------------------------------------------ def _get_responsible_for_approval(self): + self.ensure_one() + if self.validation_type == 'hr' or (self.validation_type == 'both' and self.state == 'validate1'): + return self.env['res.users'].search([ + ('company_id', '=', self.employee_id.company_id.id), + ('groups_id', 'in', self.env.ref('hr_holidays.group_hr_holidays_user').id) + ], limit=1) if self.state == 'confirm' and self.employee_id.parent_id.user_id: return self.employee_id.parent_id.user_id elif self.department_id.manager_id.user_id: diff --git a/addons/hr_holidays/models/hr_leave_type.py b/addons/hr_holidays/models/hr_leave_type.py index 8d461c53a78..e5a5d810240 100644 --- a/addons/hr_holidays/models/hr_leave_type.py +++ b/addons/hr_holidays/models/hr_leave_type.py @@ -70,14 +70,6 @@ class HolidaysType(models.Model): ('hr', 'Payroll Officer'), ('manager', 'Team Leader'), ('both', 'Team Leader and Payroll Officer')], default='hr', string='Validation') - # TODO: remove me in master, the behavior is exactly the same if you choose 'hr' or 'manager' - # in the validation_type field. This field is used only to hide this possibility to the user - # to avoid misunderstandings. This field and its corresponding's functions must be removed once - # the functional part is implemented. - double_validation = fields.Boolean(string='Apply Double Validation', - compute='_compute_validation_type', inverse='_inverse_validation_type', - help="When selected, the Allocation/Leave Requests for this type require a second validation to be approved.") - allocation_type = fields.Selection([ ('no', 'No Allocation Needed'), ('fixed_allocation', 'Free Allocation Request'), @@ -99,25 +91,6 @@ class HolidaysType(models.Model): leave_notif_subtype_id = fields.Many2one('mail.message.subtype', string='Time Off Notification Subtype', default=lambda self: self.env.ref('hr_holidays.mt_leave', raise_if_not_found=False)) allocation_notif_subtype_id = fields.Many2one('mail.message.subtype', string='Allocation Notification Subtype', default=lambda self: self.env.ref('hr_holidays.mt_leave_allocation', raise_if_not_found=False)) - # TODO: remove me in master - @api.depends('validation_type') - def _compute_validation_type(self): - for holiday_type in self: - if holiday_type.validation_type == 'both': - holiday_type.double_validation = True - else: - holiday_type.double_validation = False - - # TODO: remove me in master - def _inverse_validation_type(self): - for holiday_type in self: - if holiday_type.double_validation == True: - holiday_type.validation_type = 'both' - else: - #IF to preserve the information (hr or manager) - if holiday_type.validation_type == 'both': - holiday_type.validation_type = 'hr' - @api.multi @api.constrains('validity_start', 'validity_stop') def _check_validity_dates(self): diff --git a/addons/hr_holidays/views/hr_leave_type_views.xml b/addons/hr_holidays/views/hr_leave_type_views.xml index 45b8b1a727d..f2c01f8e7f8 100644 --- a/addons/hr_holidays/views/hr_leave_type_views.xml +++ b/addons/hr_holidays/views/hr_leave_type_views.xml @@ -39,8 +39,8 @@ options='{"terminology": "archive"}'/> -
-

+
+

@@ -49,8 +49,7 @@ - - + @@ -111,8 +110,7 @@ - - + diff --git a/addons/hr_holidays/views/hr_leave_views.xml b/addons/hr_holidays/views/hr_leave_views.xml index c38c2d9f7dd..f1e2865fd66 100644 --- a/addons/hr_holidays/views/hr_leave_views.xml +++ b/addons/hr_holidays/views/hr_leave_views.xml @@ -30,7 +30,7 @@ - + @@ -367,7 +367,7 @@ hr.leave form calendar - {'search_default_year': 1, 'search_default_group_employee': 1, 'search_default_managed_people': 1, 'search_default_my_leaves': 1} + {'search_default_year': 1, 'search_default_group_employee': 1, 'search_default_managed_people': 1, 'search_default_managed_people': 1, 'search_default_my_team_leaves': 1} [('holiday_type','=','employee'), ('state', '!=', 'refuse')] @@ -382,7 +382,7 @@ form tree,kanban,form,calendar,activity { - 'search_default_department':1, + 'search_default_managed_people': 1, + 'search_default_my_team_leaves': 1 'search_default_approve':1} [] diff --git a/addons/mail/models/mail_channel.py b/addons/mail/models/mail_channel.py index 5ba1fd08ea9..1ae85a249ca 100644 --- a/addons/mail/models/mail_channel.py +++ b/addons/mail/models/mail_channel.py @@ -756,7 +756,7 @@ class Channel(models.Model): self.ensure_one() if self.channel_message_ids.ids: last_message_id = self.channel_message_ids.ids[0] # zero is the index of the last message - channel_partner = self.env['mail.channel.partner'].search([('channel_id', 'in', self.ids), ('partner_id', '=', self.env.user.partner_id.id)]) + channel_partner = self.env['mail.channel.partner'].search([('channel_id', 'in', self.ids), ('partner_id', '=', self.env.user.partner_id.id)], limit=1) if channel_partner.seen_message_id.id == last_message_id: # last message seen by user is already up-to-date return @@ -787,7 +787,7 @@ class Channel(models.Model): if channel.channel_type != 'chat': return last_message_id = channel.channel_message_ids.ids[0] # zero is the index of the last message - channel_partner = self.env['mail.channel.partner'].search([('channel_id', '=', channel.id), ('partner_id', '=', self.env.user.partner_id.id)]) + channel_partner = self.env['mail.channel.partner'].search([('channel_id', '=', channel.id), ('partner_id', '=', self.env.user.partner_id.id)], limit=1) if channel_partner.fetched_message_id.id == last_message_id: # last message fetched by user is already up-to-date return diff --git a/addons/mail/static/src/js/composers/basic_composer.js b/addons/mail/static/src/js/composers/basic_composer.js index 58e334808bf..9def912612c 100644 --- a/addons/mail/static/src/js/composers/basic_composer.js +++ b/addons/mail/static/src/js/composers/basic_composer.js @@ -694,6 +694,7 @@ var BasicComposer = Widget.extend({ * @param {Event} ev */ _onEmojiImageClick: function (ev) { + ev.preventDefault(); var cursorPosition = this.getSelectionPositions(); var inputVal = this.$input.val(); var leftSubstring = inputVal.substring(0, cursorPosition.start); diff --git a/addons/web/static/src/js/fields/relational_fields.js b/addons/web/static/src/js/fields/relational_fields.js index d30d263fa12..bd46faf1e08 100644 --- a/addons/web/static/src/js/fields/relational_fields.js +++ b/addons/web/static/src/js/fields/relational_fields.js @@ -107,6 +107,7 @@ var FieldMany2One = AbstractField.extend({ 'click': '_onClick', }), AUTOCOMPLETE_DELAY: 200, + SEARCH_MORE_LIMIT: 320, /** * @override @@ -501,18 +502,33 @@ var FieldMany2One = AbstractField.extend({ values.push({ label: _t("Search More..."), action: function () { - self._rpc({ + var prom; + if (search_val !== '') { + prom = self._rpc({ model: self.field.relation, method: 'name_search', kwargs: { name: search_val, args: domain, operator: "ilike", - limit: 160, + limit: self.SEARCH_MORE_LIMIT, context: context, }, - }) - .then(self._searchCreatePopup.bind(self, "search")); + }); + } + $.when(prom).then(function (results) { + var dynamicFilters; + if (results) { + var ids = _.map(results, function (x) { + return x[0]; + }); + dynamicFilters = [{ + description: _.str.sprintf(_t('Quick search: %s'), search_val), + domain: [['id', 'in', ids]], + }]; + } + self._searchCreatePopup("search", false, {}, dynamicFilters); + }); }, classname: 'o_m2o_dropdown_option', }); @@ -555,19 +571,25 @@ var FieldMany2One = AbstractField.extend({ /** * all search/create popup handling * + * TODO: ids argument is no longer used, remove it in master (as well as + * initial_ids param of the dialog) + * * @private * @param {any} view * @param {any} ids * @param {any} context + * @param {Object[]} [dynamicFilters=[]] filters to add to the search view + * in the dialog (each filter has keys 'description' and 'domain') */ - _searchCreatePopup: function (view, ids, context) { + _searchCreatePopup: function (view, ids, context, dynamicFilters) { var self = this; return new dialogs.SelectCreateDialog(this, _.extend({}, this.nodeOptions, { res_model: this.field.relation, domain: this.record.getDomain({fieldName: this.name}), context: _.extend({}, this.record.getContext(this.recordParams), context || {}), + dynamicFilters: dynamicFilters || [], title: (view === 'search' ? _t("Search: ") : _t("Create: ")) + this.string, - initial_ids: ids ? _.map(ids, function (x) { return x[0]; }) : undefined, + initial_ids: ids, initial_view: view, disable_multiple_selection: true, no_create: !self.can_create, diff --git a/addons/web/static/src/js/views/abstract_view.js b/addons/web/static/src/js/views/abstract_view.js index 72108e3c8ad..ce8951f6ee8 100644 --- a/addons/web/static/src/js/views/abstract_view.js +++ b/addons/web/static/src/js/views/abstract_view.js @@ -78,6 +78,8 @@ var AbstractView = Factory.extend({ * @param {string} [params.controllerState] * @param {string} [params.displayName] * @param {Array[]} [params.domain=[]] + * @param {Object[]} [params.dynamicFilters] transmitted to the + * ControlPanelView * @param {number[]} [params.ids] * @param {boolean} [params.isEmbedded=false] * @param {Object} [params.searchQuery={}] @@ -165,6 +167,7 @@ var AbstractView = Factory.extend({ this.controlPanelParams = { action: action, activateDefaultFavorite: params.activateDefaultFavorite, + dynamicFilters: params.dynamicFilters, breadcrumbs: params.breadcrumbs, context: this.loadParams.context, domain: this.loadParams.domain, diff --git a/addons/web/static/src/js/views/control_panel/control_panel_view.js b/addons/web/static/src/js/views/control_panel/control_panel_view.js index 2bde26340e7..0a140e1f901 100644 --- a/addons/web/static/src/js/views/control_panel/control_panel_view.js +++ b/addons/web/static/src/js/views/control_panel/control_panel_view.js @@ -43,6 +43,10 @@ var ControlPanelView = Factory.extend({ * breadcrumbs won't be rendered * @param {boolean} [params.withSearchBar=true] if set to false, no default * search bar will be rendered + * @param {Object[]} [params.dynamicFilters=[]] filters to add to the + * search (in addition to those described in the arch), each filter being + * an object with keys 'description' (what is displayed in the searchbar) + * and 'domain' */ init: function (params) { var self = this; @@ -101,6 +105,19 @@ var ControlPanelView = Factory.extend({ INTERVAL_OPTIONS = INTERVAL_OPTIONS.map(function (option) { return _.extend(option, {description: option.description.toString()}); }); + + // add a filter group with the dynamic filters, if any + if (params.dynamicFilters && params.dynamicFilters.length) { + var dynamicFiltersGroup = params.dynamicFilters.map(function (filter) { + return { + description: filter.description, + domain: JSON.stringify(filter.domain), + isDefault: true, + type: 'filter', + }; + }); + this.loadParams.groups.unshift(dynamicFiltersGroup); + } }, //-------------------------------------------------------------------------- diff --git a/addons/web/static/src/js/views/view_dialogs.js b/addons/web/static/src/js/views/view_dialogs.js index 65fee4a01b4..befe4247c00 100644 --- a/addons/web/static/src/js/views/view_dialogs.js +++ b/addons/web/static/src/js/views/view_dialogs.js @@ -317,6 +317,7 @@ var SelectCreateDialog = ViewDialog.extend({ * - list_view_options: dict of options to pass to the List View * - on_selected: optional callback to execute when records are selected * - disable_multiple_selection: true to allow create/select multiple records + * - dynamicFilters: filters to add to the searchview */ init: function () { this._super.apply(this, arguments); @@ -359,6 +360,7 @@ var SelectCreateDialog = ViewDialog.extend({ controlPanelFieldsView: fieldsViews.search, }, action_buttons: false, + dynamicFilters: this.options.dynamicFilters, context: this.context, domain: domain, hasSelectors: !this.options.disable_multiple_selection, diff --git a/addons/web/static/tests/fields/relational_fields/field_many2one_tests.js b/addons/web/static/tests/fields/relational_fields/field_many2one_tests.js index 84fac135ad2..04b58b017ba 100644 --- a/addons/web/static/tests/fields/relational_fields/field_many2one_tests.js +++ b/addons/web/static/tests/fields/relational_fields/field_many2one_tests.js @@ -958,7 +958,7 @@ QUnit.module('fields', {}, function () { return result; }, }); - await testUtils.fields.many2one.searchAndClickItem('trululu', 'b'); + await testUtils.fields.many2one.searchAndClickItem('trululu', {search: 'b'}); testUtils.form.clickSave(form); assert.verifySteps(['name_create'], @@ -2596,6 +2596,107 @@ QUnit.module('fields', {}, function () { form.destroy(); }); + QUnit.test('search more in many2one: no text in input', async function (assert) { + // when the user clicks on 'Search More...' in a many2one dropdown, and there is no text + // in the input (i.e. no value to search on), we bypass the name_search that is meant to + // return a list of preselected ids to filter on in the list view (opened in a dialog) + assert.expect(6); + + for (var i = 0; i < 8; i++) { + this.data.partner.records.push({id: 100 + i, display_name: 'test_' + i}); + } + + var form = createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: '
', + archs: { + 'partner,false,list': '', + 'partner,false,search': '', + }, + mockRPC: function (route, args) { + assert.step(args.method || route); + if (route === '/web/dataset/search_read') { + assert.deepEqual(args.domain, [], + "should not preselect ids as there as nothing in the m2o input"); + } + return this._super.apply(this, arguments); + }, + }); + + await testUtils.fields.many2one.searchAndClickItem('trululu', { + item: 'Search More', + search: '', + }); + + assert.verifySteps([ + 'default_get', + 'name_search', // to display results in the dropdown + 'load_views', // list view in dialog + '/web/dataset/search_read', // to display results in the dialog + ]); + + form.destroy(); + }); + + QUnit.test('search more in many2one: text in input', async function (assert) { + // when the user clicks on 'Search More...' in a many2one dropdown, and there is some + // text in the input, we perform a name_search to get a (limited) list of preselected + // ids and we add a dynamic filter (with those ids) to the search view in the dialog, so + // that the user can remove this filter to bypass the limit + assert.expect(12); + + for (var i = 0; i < 8; i++) { + this.data.partner.records.push({id: 100 + i, display_name: 'test_' + i}); + } + + var expectedDomain; + var form = createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: '
', + archs: { + 'partner,false,list': '', + 'partner,false,search': '', + }, + mockRPC: function (route, args) { + assert.step(args.method || route); + if (route === '/web/dataset/search_read') { + assert.deepEqual(args.domain, expectedDomain); + } + return this._super.apply(this, arguments); + }, + }); + + expectedDomain = [['id', 'in', [100, 101, 102, 103, 104, 105, 106, 107]]]; + await testUtils.fields.many2one.searchAndClickItem('trululu', { + item: 'Search More', + search: 'test', + }); + + assert.containsOnce(document.body, '.modal .o_list_view'); + assert.containsOnce(document.body, '.modal .o_cp_searchview .o_facet_values', + "should have a special facet for the pre-selected ids"); + + // remove the filter on ids + expectedDomain = []; + testUtils.dom.click($('.modal .o_cp_searchview .o_facet_remove')); + + assert.verifySteps([ + 'default_get', + 'name_search', // empty search, triggered when the user clicks in the input + 'name_search', // to display results in the dropdown + 'name_search', // to get preselected ids matching the search + 'load_views', // list view in dialog + '/web/dataset/search_read', // to display results in the dialog + '/web/dataset/search_read', // after removal of dynamic filter + ]); + + form.destroy(); + }); + QUnit.test('updating a many2one from a many2many', function (assert) { assert.expect(4); diff --git a/addons/web/static/tests/helpers/mock_server.js b/addons/web/static/tests/helpers/mock_server.js index 09f6852951b..ff75722b333 100644 --- a/addons/web/static/tests/helpers/mock_server.js +++ b/addons/web/static/tests/helpers/mock_server.js @@ -705,8 +705,8 @@ var MockServer = Class.extend({ var result = _.map(records, function (record) { return [record.id, record.display_name]; }); - if (args.limit) { - return result.slice(0, args.limit); + if (_kwargs.limit) { + return result.slice(0, _kwargs.limit); } return result; }, diff --git a/addons/web/static/tests/helpers/test_utils_fields.js b/addons/web/static/tests/helpers/test_utils_fields.js index f7d8829ce82..f0f29839a9d 100644 --- a/addons/web/static/tests/helpers/test_utils_fields.js +++ b/addons/web/static/tests/helpers/test_utils_fields.js @@ -125,15 +125,16 @@ function clickM2OItem(fieldName, searchText) { * - click to open the dropdown * - enter a search string in the input * - wait for the selection - * - click on the active menuitem + * - click on the requested menuitem, or the active one by default * * Example: - * testUtils.fields.many2one.searchAndClickM2OItem('partner_id', 'George'); + * testUtils.fields.many2one.searchAndClickM2OItem('partner_id', {search: 'George'}); * * @param {string} fieldName * @param {[Object]} options * @param {[string]} options.selector * @param {[string]} options.search + * @param {[string]} options.item * @returns {Promise} */ function searchAndClickM2OItem(fieldName, options) { @@ -156,7 +157,11 @@ function searchAndClickM2OItem(fieldName, options) { } return $.when(def).then(function () { - clickM2OHighlightedItem(fieldName, options.selector); + if (options.item) { + clickM2OItem(fieldName, options.item); + } else { + clickM2OHighlightedItem(fieldName, options.selector); + } }); } return { diff --git a/addons/website_crm_partner_assign/static/src/js/crm_partner_assign.js b/addons/website_crm_partner_assign/static/src/js/crm_partner_assign.js index fa9af18a51b..3fc3bfc4fd2 100644 --- a/addons/website_crm_partner_assign/static/src/js/crm_partner_assign.js +++ b/addons/website_crm_partner_assign/static/src/js/crm_partner_assign.js @@ -13,7 +13,7 @@ publicWidget.registry.crmPartnerAssign = publicWidget.Widget.extend({ 'click .edit_contact_confirm': '_onEditContactConfirm', 'click .new_opp_confirm': '_onNewOppConfirm', 'click .edit_opp_confirm': '_onEditOppConfirm', - 'change .edit_opp_form .next_activity': '_onEditOppConfirm', + 'change .edit_opp_form .next_activity': '_onEditOppForm', 'click div.input-group span.fa-calendar': '_onCalendarIconClick', }, diff --git a/addons/website_sale_slides/views/website_slides_templates.xml b/addons/website_sale_slides/views/website_slides_templates.xml index 334616bc30b..ad980a29a7a 100644 --- a/addons/website_sale_slides/views/website_slides_templates.xml +++ b/addons/website_sale_slides/views/website_slides_templates.xml @@ -1,9 +1,9 @@ -