summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorChristophe Simonis <chs@odoo.com>2018-04-24 17:42:41 +0200
committerChristophe Simonis <chs@odoo.com>2018-04-24 17:42:41 +0200
commitb192431aeecc59b48898ce9c6f276b82d65cbfa6 (patch)
tree598ec468eac64914858e24d2235827d905692c80 /addons
parentddf601d44367a791848da38df9cff02b3e32b95b (diff)
parentec5e27bb7cc7808d7128eae4e7e67910f40492c0 (diff)
[MERGE] forward port branch saas-11.3 up to ec5e27bb7cc
Diffstat (limited to 'addons')
-rw-r--r--addons/account/i18n/pt_BR.po9
-rw-r--r--addons/account/i18n/zh_CN.po21
-rw-r--r--addons/account/models/account_invoice.py5
-rw-r--r--addons/account/models/chart_template.py4
-rw-r--r--addons/account/models/reconciliation_widget.py1
-rw-r--r--addons/account/views/account_report.xml1
-rw-r--r--addons/account_check_printing/i18n/pt_BR.po5
-rw-r--r--addons/account_check_printing/models/account_payment.py3
-rw-r--r--addons/account_payment/i18n/pt_BR.po5
-rw-r--r--addons/analytic/i18n/pt_BR.po11
-rw-r--r--addons/analytic/i18n/zh_CN.po5
-rw-r--r--addons/base_import_module/models/ir_module.py9
-rw-r--r--addons/contacts/i18n/zh_CN.po7
-rw-r--r--addons/crm/i18n/zh_CN.po27
-rw-r--r--addons/crm_phone_validation/i18n/tr.po18
-rw-r--r--addons/delivery/i18n/fr.po5
-rw-r--r--addons/fleet/i18n/zh_CN.po5
-rw-r--r--addons/hr/i18n/zh_CN.po17
-rw-r--r--addons/hr_attendance/i18n/tr.po110
-rw-r--r--addons/hr_expense/security/ir.model.access.csv2
-rw-r--r--addons/hr_holidays/i18n/tr.po5
-rw-r--r--addons/hr_holidays/models/hr_leave.py2
-rw-r--r--addons/hr_holidays/views/hr_leave_allocation_views.xml4
-rw-r--r--addons/hr_holidays/views/hr_leave_views.xml5
-rw-r--r--addons/hr_payroll/i18n/fr.po7
-rw-r--r--addons/hr_payroll/i18n/tr.po41
-rw-r--r--addons/hr_recruitment/i18n/zh_CN.po9
-rw-r--r--addons/hr_timesheet/i18n/tr.po32
-rw-r--r--addons/hr_timesheet_attendance/i18n/tr.po7
-rw-r--r--addons/iap/i18n/tr.po15
-rw-r--r--addons/im_livechat/i18n/tr.po13
-rw-r--r--addons/l10n_mx/data/account_tag_data.xml2
-rw-r--r--addons/link_tracker/i18n/tr.po35
-rw-r--r--addons/lunch/i18n/tr.po68
-rw-r--r--addons/mail/i18n/tr.po23
-rw-r--r--addons/mail/models/res_users.py5
-rw-r--r--addons/mail/static/src/js/systray.js5
-rw-r--r--addons/mail/static/src/js/utils.js2
-rw-r--r--addons/mail/static/src/scss/composer.scss8
-rw-r--r--addons/mail/static/tests/helpers/mock_server.js24
-rw-r--r--addons/mail/static/tests/mail_utils_tests.js5
-rw-r--r--addons/mail/static/tests/systray_tests.js194
-rw-r--r--addons/maintenance/i18n/tr.po39
-rw-r--r--addons/mass_mailing/i18n/tr.po11
-rw-r--r--addons/mass_mailing/i18n/zh_CN.po7
-rw-r--r--addons/mrp/i18n/tr.po32
-rw-r--r--addons/mrp/models/mrp_production.py2
-rw-r--r--addons/mrp/report/mrp_report_bom_structure.py8
-rw-r--r--addons/mrp/wizard/change_production_qty.py3
-rw-r--r--addons/note/i18n/zh_CN.po5
-rw-r--r--addons/pad_project/i18n/tr.po24
-rw-r--r--addons/payment/i18n/fr.po4
-rw-r--r--addons/payment/i18n/pt_BR.po5
-rw-r--r--addons/payment/i18n/tr.po137
-rw-r--r--addons/payment_adyen/i18n/tr.po21
-rw-r--r--addons/payment_authorize/i18n/fr.po7
-rw-r--r--addons/payment_authorize/i18n/tr.po17
-rw-r--r--addons/payment_ogone/i18n/tr.po46
-rw-r--r--addons/payment_paypal/i18n/tr.po43
-rw-r--r--addons/payment_sips/i18n/tr.po11
-rw-r--r--addons/payment_stripe/i18n/tr.po50
-rw-r--r--addons/payment_stripe/models/payment.py5
-rw-r--r--addons/phone_validation/i18n/tr.po27
-rw-r--r--addons/point_of_sale/i18n/tr.po124
-rw-r--r--addons/portal/i18n/tr.po23
-rw-r--r--addons/portal/views/portal_templates.xml15
-rw-r--r--addons/pos_cache/i18n/tr.po49
-rw-r--r--addons/pos_discount/i18n/tr.po5
-rw-r--r--addons/pos_mercury/i18n/tr.po79
-rw-r--r--addons/pos_restaurant/i18n/tr.po62
-rw-r--r--addons/product/i18n/tr.po59
-rw-r--r--addons/product/i18n/zh_CN.po8
-rw-r--r--addons/project/controllers/portal.py18
-rw-r--r--addons/project/i18n/zh_CN.po16
-rw-r--r--addons/project/views/project_portal_templates.xml57
-rw-r--r--addons/purchase_requisition/i18n/tr.po5
-rw-r--r--addons/repair/i18n/tr.po11
-rw-r--r--addons/sale/i18n/pt_BR.po7
-rw-r--r--addons/sale_payment/i18n/pt_BR.po5
-rw-r--r--addons/stock/i18n/tr.po5
-rw-r--r--addons/stock/i18n/zh_CN.po5
-rw-r--r--addons/stock/models/product.py28
-rw-r--r--addons/stock/models/stock_move.py82
-rw-r--r--addons/stock/models/stock_move_line.py9
-rw-r--r--addons/stock/models/stock_picking.py3
-rw-r--r--addons/stock/tests/test_move.py159
-rw-r--r--addons/web/controllers/main.py16
-rw-r--r--addons/web/i18n/fr.po4
-rw-r--r--addons/web/static/src/js/chrome/action_manager_act_window.js9
-rw-r--r--addons/web/static/src/js/fields/field_registry.js1
-rw-r--r--addons/web/static/src/js/views/basic/basic_model.js4
-rw-r--r--addons/web/static/src/js/views/calendar/calendar_model.js12
-rw-r--r--addons/web/static/src/js/views/kanban/kanban_controller.js18
-rw-r--r--addons/web/static/tests/chrome/action_manager_tests.js39
-rw-r--r--addons/web/static/tests/fields/relational_fields_tests.js19
-rw-r--r--addons/web/static/tests/helpers/mock_server.js3
-rw-r--r--addons/web/static/tests/views/calendar_tests.js26
-rw-r--r--addons/web/static/tests/views/form_tests.js29
-rw-r--r--addons/web/static/tests/views/kanban_tests.js9
-rw-r--r--addons/web/views/report_templates.xml6
-rw-r--r--addons/web_editor/i18n/tr.po5
-rw-r--r--addons/web_editor/static/src/js/editor/editor.js4
-rw-r--r--addons/web_editor/static/src/js/editor/rte.summernote.js10
-rw-r--r--addons/web_editor/static/src/js/editor/transcoder.js76
-rw-r--r--addons/website/static/src/scss/website.ui.scss2
-rw-r--r--addons/website_blog/static/src/js/website_blog.editor.js6
-rw-r--r--addons/website_sale/controllers/main.py11
-rw-r--r--addons/website_sale/models/res_config_settings.py7
-rw-r--r--addons/website_sale/views/sale_order_views.xml8
109 files changed, 1698 insertions, 745 deletions
diff --git a/addons/account/i18n/pt_BR.po b/addons/account/i18n/pt_BR.po
index b18ae9875d8..0060a5cf8de 100644
--- a/addons/account/i18n/pt_BR.po
+++ b/addons/account/i18n/pt_BR.po
@@ -17,7 +17,7 @@
# Luiz Carlos de Lima <luiz.carlos@akretion.com.br>, 2016
# Ademílson F. Tonato <apraqueisso@gmail.com>, 2016
# Kayky de Brito <kayky_debritodossantos@hotmail.com>, 2016
-# THIAGO MACÊDO <thiago95macedo@gmail.com>, 2016
+# Thiago MACÊDO <thiago95macedo@gmail.com>, 2016
# Manel Tinoco <maneltinoco@gmail.com>, 2016
# Fábio Novais <fabionovais@aptu.com.br>, 2016
# zimbora <alexandre.ruffer@tkobr.com>, 2016
@@ -30,13 +30,14 @@
# mariana rodrigues <mariana12v@gmail.com>, 2017
# Raphael Rodrigues <raphael0608@gmail.com>, 2018
# Hildeberto Abreu Magalhães <hildeberto@gmail.com>, 2018
+# Diego Bittencourt <diegomb86@gmail.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: Hildeberto Abreu Magalhães <hildeberto@gmail.com>, 2018\n"
+"Last-Translator: Diego Bittencourt <diegomb86@gmail.com>, 2018\n"
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/odoo/teams/41243/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -7260,6 +7261,8 @@ msgid ""
"Please install a chart of accounts or create a miscellaneous journal before "
"proceeding."
msgstr ""
+"Por favor instale o plano de contas ou crie um lançamento contábil variado "
+"antes de proceder"
#. module: account
#: model:ir.ui.view,arch_db:account.view_account_form
@@ -10601,6 +10604,8 @@ msgid ""
"You cannot change the currency of the company since some journal items "
"already exist"
msgstr ""
+"Você não pode alterar a moeda da empresa desde que já exista algum "
+"lançamento contábil"
#. module: account
#: code:addons/account/models/account.py:271
diff --git a/addons/account/i18n/zh_CN.po b/addons/account/i18n/zh_CN.po
index 3c27eac763d..037958561e2 100644
--- a/addons/account/i18n/zh_CN.po
+++ b/addons/account/i18n/zh_CN.po
@@ -47,13 +47,14 @@
# e2f_cn c5 <jarvisn@ecinnovations.com>, 2018
# sunny sun <sunxiaoxia@inspur.com>, 2018
# John Lin <linyinhuan@139.com>, 2018
+# Maie <m@maie.name>, 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: John Lin <linyinhuan@139.com>, 2018\n"
+"Last-Translator: Maie <m@maie.name>, 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"
@@ -1175,17 +1176,17 @@ msgstr "添加退款单"
#. module: account
#: model:ir.actions.act_window,help:account.action_account_journal_form
msgid "Add a journal"
-msgstr ""
+msgstr "添加一个日记账"
#. module: account
#: model:ir.actions.act_window,help:account.action_account_form
msgid "Add a new account"
-msgstr ""
+msgstr "添加一个新账户"
#. module: account
#: model:ir.actions.act_window,help:account.account_tag_action
msgid "Add a new tag"
-msgstr ""
+msgstr "添加一个新标签"
#. module: account
#: selection:account.cash.rounding,strategy:0
@@ -1219,7 +1220,7 @@ msgstr "额外的备注..."
#: selection:account.tax,type_tax_use:0
#: selection:account.tax.template,type_tax_use:0
msgid "Adjustment"
-msgstr ""
+msgstr "调整"
#. module: account
#: model:ir.model.fields,field_description:account.field_tax_adjustments_wizard__tax_id
@@ -1452,12 +1453,12 @@ msgstr "总额"
#. module: account
#: model:ir.model.fields,field_description:account.field_account_invoice_line__price_total
msgid "Amount (with Taxes)"
-msgstr ""
+msgstr "金额 (含税)"
#. module: account
#: model:ir.model.fields,field_description:account.field_account_invoice_line__price_subtotal
msgid "Amount (without Taxes)"
-msgstr ""
+msgstr "金额 (不含税)"
#. module: account
#: model:ir.model.fields,field_description:account.field_account_bank_statement_line__amount_currency
@@ -2909,7 +2910,7 @@ msgstr ""
#. module: account
#: model:ir.actions.act_window,help:account.action_invoice_tree1
msgid "Create a customer invoice"
-msgstr ""
+msgstr "创建一个客户发票"
#. module: account
#: selection:account.invoice.refund,filter_refund:0
@@ -2955,7 +2956,7 @@ msgstr ""
#. module: account
#: model:ir.actions.act_window,help:account.action_tax_form
msgid "Create a new tax"
-msgstr ""
+msgstr "创建一个新的税项"
#. module: account
#: model:ir.actions.act_window,help:account.action_invoice_in_refund
@@ -5778,7 +5779,7 @@ msgstr "负债"
#. module: account
#: model:ir.model.fields,field_description:account.field_account_invoice_report__nbr
msgid "Line Count"
-msgstr ""
+msgstr "行数"
#. module: account
#: model:ir.model.fields,help:account.field_account_invoice__move_id
diff --git a/addons/account/models/account_invoice.py b/addons/account/models/account_invoice.py
index 7e6f9bdf20e..2c0da345e3f 100644
--- a/addons/account/models/account_invoice.py
+++ b/addons/account/models/account_invoice.py
@@ -553,7 +553,10 @@ class AccountInvoice(models.Model):
"""
self.ensure_one()
self.sent = True
- return self.env.ref('account.account_invoices').report_action(self)
+ if self.user_has_groups('account.group_account_invoice'):
+ return self.env.ref('account.account_invoices').report_action(self)
+ else:
+ return self.env.ref('account.account_invoices_without_payment').report_action(self)
@api.multi
def action_invoice_sent(self):
diff --git a/addons/account/models/chart_template.py b/addons/account/models/chart_template.py
index 7832a2354aa..69413f6bd66 100644
--- a/addons/account/models/chart_template.py
+++ b/addons/account/models/chart_template.py
@@ -853,7 +853,7 @@ class WizardMultiChartsAccounts(models.TransientModel):
@api.multi
def existing_accounting(self, company_id):
- model_to_check = ['account.move.line', 'account.invoice', 'account.move', 'account.payment', 'account.bank.statement']
+ model_to_check = ['account.move.line', 'account.invoice', 'account.payment', 'account.bank.statement']
for model in model_to_check:
if len(self.env[model].search([('company_id', '=', company_id.id)])) > 0:
return True
@@ -888,7 +888,7 @@ class WizardMultiChartsAccounts(models.TransientModel):
accounting_props.unlink()
# delete account, journal, tax, fiscal position and reconciliation model
- models_to_delete = ['account.reconcile.model', 'account.fiscal.position', 'account.tax', 'account.journal']
+ models_to_delete = ['account.reconcile.model', 'account.fiscal.position', 'account.tax', 'account.move', 'account.journal']
for model in models_to_delete:
res = self.env[model].search([('company_id', '=', self.company_id.id)])
if len(res):
diff --git a/addons/account/models/reconciliation_widget.py b/addons/account/models/reconciliation_widget.py
index 8cd405ac5be..b0ce440093f 100644
--- a/addons/account/models/reconciliation_widget.py
+++ b/addons/account/models/reconciliation_widget.py
@@ -338,6 +338,7 @@ class AccountReconciliation(models.AbstractModel):
partner_id = is_partner and row['partner_id'] or None
rec_prop = self._get_move_line_reconciliation_proposition(account.id, partner_id)
row['reconciliation_proposition'] = self._prepare_move_lines(rec_prop, target_currency=currency)
+ row['company_id'] = account.company_id.id
return rows
@api.model
diff --git a/addons/account/views/account_report.xml b/addons/account/views/account_report.xml
index 2ba116e884a..8918d2763e7 100644
--- a/addons/account/views/account_report.xml
+++ b/addons/account/views/account_report.xml
@@ -11,6 +11,7 @@
file="account.report_invoice_with_payments"
attachment="(object.state in ('open','paid')) and ('INV'+(object.number or '').replace('/','')+'.pdf')"
print_report_name="(object._get_printed_report_name())"
+ groups="account.group_account_invoice"
/>
<report
diff --git a/addons/account_check_printing/i18n/pt_BR.po b/addons/account_check_printing/i18n/pt_BR.po
index e1096daea52..2cfe7bed05b 100644
--- a/addons/account_check_printing/i18n/pt_BR.po
+++ b/addons/account_check_printing/i18n/pt_BR.po
@@ -9,13 +9,14 @@
# falexandresilva <falexandresilva@gmail.com>, 2016
# danimaribeiro <danimaribeiro@gmail.com>, 2016
# Rodrigo de Almeida Sottomaior Macedo <rmsolucoeseminformatic4@gmail.com>, 2017
+# Diego Bittencourt <diegomb86@gmail.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: Rodrigo de Almeida Sottomaior Macedo <rmsolucoeseminformatic4@gmail.com>, 2017\n"
+"Last-Translator: Diego Bittencourt <diegomb86@gmail.com>, 2018\n"
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/odoo/teams/41243/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -86,7 +87,7 @@ msgstr "Impressão de Cheque"
#. module: account_check_printing
#: model:ir.model.fields,field_description:account_check_printing.field_account_journal__check_printing_payment_method_selected
msgid "Check Printing Payment Method Selected"
-msgstr ""
+msgstr "Verifique a impressão do método de pagamento selecionada"
#. module: account_check_printing
#: model:ir.model.fields,field_description:account_check_printing.field_res_config_settings__account_check_printing_margin_right
diff --git a/addons/account_check_printing/models/account_payment.py b/addons/account_check_printing/models/account_payment.py
index 9bd4a429cf5..b195814843f 100644
--- a/addons/account_check_printing/models/account_payment.py
+++ b/addons/account_check_printing/models/account_payment.py
@@ -11,7 +11,7 @@ class AccountRegisterPayments(models.TransientModel):
_inherit = "account.register.payments"
check_amount_in_words = fields.Char(string="Amount in Words")
- check_manual_sequencing = fields.Boolean(related='journal_id.check_manual_sequencing')
+ check_manual_sequencing = fields.Boolean(related='journal_id.check_manual_sequencing', readonly=1)
# Note: a check_number == 0 means that it will be attributed when the check is printed
check_number = fields.Integer(string="Check Number", readonly=True, copy=False, default=0,
help="Number of the check corresponding to this payment. If your pre-printed check are not already numbered, "
@@ -34,7 +34,6 @@ 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_amount_in_words': self.currency_id.amount_to_text(res['amount']) if self.multi else self.check_amount_in_words,
'check_manual_sequencing': self.check_manual_sequencing,
})
return res
diff --git a/addons/account_payment/i18n/pt_BR.po b/addons/account_payment/i18n/pt_BR.po
index 22f9bcf3401..197bbaf9e39 100644
--- a/addons/account_payment/i18n/pt_BR.po
+++ b/addons/account_payment/i18n/pt_BR.po
@@ -9,13 +9,14 @@
# danimaribeiro <danimaribeiro@gmail.com>, 2017
# mariana rodrigues <mariana12v@gmail.com>, 2018
# Raphael Rodrigues <raphael0608@gmail.com>, 2018
+# Diego Bittencourt <diegomb86@gmail.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: Raphael Rodrigues <raphael0608@gmail.com>, 2018\n"
+"Last-Translator: Diego Bittencourt <diegomb86@gmail.com>, 2018\n"
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/odoo/teams/41243/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -236,4 +237,4 @@ msgstr "Transações"
#. module: account_payment
#: model:ir.ui.view,arch_db:account_payment.payment_confirmation_status
msgid "Your payment has been authorized."
-msgstr ""
+msgstr "Seu pagamento foi autorizado."
diff --git a/addons/analytic/i18n/pt_BR.po b/addons/analytic/i18n/pt_BR.po
index 2bbda639a67..8588a418666 100644
--- a/addons/analytic/i18n/pt_BR.po
+++ b/addons/analytic/i18n/pt_BR.po
@@ -9,13 +9,14 @@
# Martin Trigaux, 2016
# Luiz Carlos de Lima <luiz.carlos@akretion.com.br>, 2016
# falexandresilva <falexandresilva@gmail.com>, 2018
+# Diego Bittencourt <diegomb86@gmail.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: falexandresilva <falexandresilva@gmail.com>, 2018\n"
+"Last-Translator: Diego Bittencourt <diegomb86@gmail.com>, 2018\n"
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/odoo/teams/41243/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -146,7 +147,7 @@ msgstr "Saldo"
#. module: analytic
#: model:ir.ui.view,arch_db:analytic.view_account_analytic_account_kanban
msgid "Balance:"
-msgstr ""
+msgstr "Saldo:"
#. module: analytic
#: model:ir.actions.act_window,name:analytic.action_analytic_account_form
@@ -298,6 +299,8 @@ msgid ""
" analytic accounts. You can track costs and revenues to analyse\n"
" your margins easily."
msgstr ""
+"No Odoo, ordens de vendas e projetos são implementados usando\n"
+"o analisador de contas. Você pode rastrear os custos e receitas para analisar suas margens facilmente."
#. module: analytic
#: model:ir.model.fields,field_description:analytic.field_account_analytic_account____last_update
@@ -388,6 +391,10 @@ msgid ""
" (fixed price invoices), on timesheets (based on the work done) or\n"
" on expenses (e.g. reinvoicing of travel costs)."
msgstr ""
+"Receitas serão criadas automaticamente quando você cria uma fatura\n"
+"para o cliente. As faturas podem ser criadas baseadas em ordens de venda\n"
+"(faturas com preço fixo), no apontamento de horas (baseado no trabalho feito) ou \n"
+"nas despesas (ex. reembolso de viagem)."
#. module: analytic
#: model:ir.model.fields,field_description:analytic.field_account_analytic_group__parent_right
diff --git a/addons/analytic/i18n/zh_CN.po b/addons/analytic/i18n/zh_CN.po
index 55b2ae65ae3..b4064414908 100644
--- a/addons/analytic/i18n/zh_CN.po
+++ b/addons/analytic/i18n/zh_CN.po
@@ -8,13 +8,14 @@
# Martin Trigaux, 2018
# liAnGjiA <liangjia@qq.com>, 2018
# 老窦 北京 <2662059195@qq.com>, 2018
+# Maie <m@maie.name>, 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: 老窦 北京 <2662059195@qq.com>, 2018\n"
+"Last-Translator: Maie <m@maie.name>, 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"
@@ -37,7 +38,7 @@ msgstr ""
#. module: analytic
#: model:ir.actions.act_window,help:analytic.account_analytic_tag_action
msgid "Add a new tag"
-msgstr ""
+msgstr "添加一个新标签"
#. module: analytic
#: model:ir.model.fields,field_description:analytic.field_account_analytic_line__amount
diff --git a/addons/base_import_module/models/ir_module.py b/addons/base_import_module/models/ir_module.py
index d9c3d4092a2..df7ad832d86 100644
--- a/addons/base_import_module/models/ir_module.py
+++ b/addons/base_import_module/models/ir_module.py
@@ -24,6 +24,13 @@ class IrModule(models.Model):
imported = fields.Boolean(string="Imported Module")
+ @api.depends('name')
+ def _get_latest_version(self):
+ imported_modules = self.filtered(lambda m: m.imported and m.latest_version)
+ for module in imported_modules:
+ module.installed_version = module.latest_version
+ super(IrModule, self - imported_modules)._get_latest_version()
+
@api.multi
def _import_module(self, module, path, force=False):
known_mods = self.search([])
@@ -32,6 +39,8 @@ class IrModule(models.Model):
terp = load_information_from_description_file(module, mod_path=path)
values = self.get_values_from_terp(terp)
+ if 'version' in terp:
+ values['latest_version'] = terp['version']
unmet_dependencies = set(terp['depends']).difference(installed_mods)
diff --git a/addons/contacts/i18n/zh_CN.po b/addons/contacts/i18n/zh_CN.po
index f29d9053840..c81dd186e3a 100644
--- a/addons/contacts/i18n/zh_CN.po
+++ b/addons/contacts/i18n/zh_CN.po
@@ -5,13 +5,14 @@
# Translators:
# Jeffery CHEN Fan <jeffery9@gmail.com>, 2016
# Martin Trigaux, 2017
+# Maie <m@maie.name>, 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: Martin Trigaux, 2017\n"
+"Last-Translator: Maie <m@maie.name>, 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"
@@ -65,7 +66,7 @@ msgstr "国家组"
#. module: contacts
#: model:ir.actions.act_window,help:contacts.action_contacts
msgid "Create a contact in your address book"
-msgstr ""
+msgstr "在你的地址簿中创建一个联系人"
#. module: contacts
#: model:ir.ui.menu,name:contacts.menu_country_state_partner
@@ -80,7 +81,7 @@ msgstr "定位"
#. module: contacts
#: model:ir.actions.act_window,help:contacts.action_contacts
msgid "Odoo helps you to easily track all activities related to a customer."
-msgstr ""
+msgstr "Odoo 帮助您轻松跟进与客户相关的所有活动。"
#. module: contacts
#: model:ir.ui.menu,name:contacts.res_partner_industry_menu
diff --git a/addons/crm/i18n/zh_CN.po b/addons/crm/i18n/zh_CN.po
index e06041ecba2..de3540a7eaf 100644
--- a/addons/crm/i18n/zh_CN.po
+++ b/addons/crm/i18n/zh_CN.po
@@ -16,13 +16,14 @@
# e2f <projects@e2f.com>, 2018
# e2f_cn c5 <jarvisn@ecinnovations.com>, 2018
# mrshelly <mrshelly@hotmail.com>, 2018
+# Maie <m@maie.name>, 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: mrshelly <mrshelly@hotmail.com>, 2018\n"
+"Last-Translator: Maie <m@maie.name>, 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"
@@ -163,7 +164,7 @@ msgstr "# 活动"
#: code:addons/crm/static/src/js/tour.js:22
#, python-format
msgid "<b>Choose a name</b> for your opportunity."
-msgstr ""
+msgstr "为你的商机 <b>选择一个名字</b>"
#. module: crm
#. openerp-web
@@ -475,7 +476,7 @@ msgstr "归类和分析线索/商机类别, 例如:培训,服务"
#: code:addons/crm/static/src/js/tour.js:26
#, python-format
msgid "Click here to <b>add your opportunity</b>."
-msgstr ""
+msgstr "点击这里 <b>添加你的商机</b>."
#. module: crm
#. openerp-web
@@ -670,7 +671,7 @@ msgstr ""
#. module: crm
#: model:ir.actions.act_window,help:crm.crm_lead_tag_action
msgid "Create a new tag for your opportunities"
-msgstr ""
+msgstr "为你的商机创建一个新的标签"
#. module: crm
#: model:ir.actions.act_window,name:crm.create_opportunity_simplified
@@ -681,7 +682,7 @@ msgstr "创建商机"
#. module: crm
#: model:ir.actions.act_window,help:crm.relate_partner_opportunities
msgid "Create an new opportunity related to this customer"
-msgstr ""
+msgstr "创建一个新的商机关联到此客户"
#. module: crm
#: model:ir.actions.act_window,help:crm.crm_lead_tag_action
@@ -826,7 +827,7 @@ msgstr "默认值"
#. module: crm
#: model:ir.actions.act_window,help:crm.crm_lost_reason_action
msgid "Define a new lost reason"
-msgstr ""
+msgstr "定义一个丢失的理由。"
#. module: crm
#: model:ir.ui.view,arch_db:crm.crm_case_kanban_view_leads
@@ -935,7 +936,7 @@ msgstr "预期结束日期"
#. module: crm
#: selection:crm.team,dashboard_graph_group_pipeline:0
msgid "Expected Closing Day"
-msgstr ""
+msgstr "预计截止日"
#. module: crm
#: selection:crm.team,dashboard_graph_group_pipeline:0
@@ -965,7 +966,7 @@ msgstr "预期收益"
#. module: crm
#: model:ir.model.fields,field_description:crm.field_crm_team__dashboard_graph_period_pipeline
msgid "Expected to Close"
-msgstr ""
+msgstr "预计关闭"
#. module: crm
#: model:ir.ui.view,arch_db:crm.crm_opportunity_report_view_search
@@ -1581,7 +1582,7 @@ msgstr "无主题"
#. module: crm
#: model:ir.actions.act_window,help:crm.crm_lead_action_activities
msgid "No next activity"
-msgstr ""
+msgstr "没有下一个活动"
#. module: crm
#: selection:crm.lead,kanban_state:0
@@ -1634,7 +1635,7 @@ msgstr "Odoo帮助您追踪销售漏斗,关注潜在销售并更好的预测æœ
#. module: crm
#: model:ir.ui.view,arch_db:crm.crm_team_salesteams_view_kanban
msgid "Open Opportunities"
-msgstr ""
+msgstr "打开商机"
#. module: crm
#: model:ir.ui.view,arch_db:crm.crm_team_salesteams_view_kanban
@@ -2067,7 +2068,7 @@ msgstr "选择商机/线索"
#. module: crm
#: model:ir.actions.act_window,name:crm.action_lead_mass_mail
msgid "Send an email"
-msgstr ""
+msgstr "发送电子邮件"
#. module: crm
#: model:ir.model.fields,field_description:crm.field_crm_stage__sequence
@@ -2544,7 +2545,7 @@ msgstr "网站"
#. module: crm
#: model:ir.model.fields,help:crm.field_crm_lead__website
msgid "Website of the contact"
-msgstr ""
+msgstr "联系人网站"
#. module: crm
#: model:ir.ui.view,arch_db:crm.res_config_settings_view_form
@@ -2679,7 +2680,7 @@ msgstr "例如:www.odoo.com"
#: code:addons/crm/models/crm_lead.py:926
#, python-format
msgid "or send an email to %s"
-msgstr ""
+msgstr "或者发送电子邮件给 %s"
#. module: crm
#: model:ir.model,name:crm.model_res_config_settings
diff --git a/addons/crm_phone_validation/i18n/tr.po b/addons/crm_phone_validation/i18n/tr.po
index 83ffe7f249b..05c08061670 100644
--- a/addons/crm_phone_validation/i18n/tr.po
+++ b/addons/crm_phone_validation/i18n/tr.po
@@ -4,14 +4,14 @@
#
# Translators:
# Murat Kaplan <muratk@projetgrup.com>, 2017
-# Martin Trigaux <mat@odoo.com>, 2017
+# Umur Akın <umura@projetgrup.com>, 2018
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server 11.0\n"
+"Project-Id-Version: Odoo Server saas~11.2\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-24 09:00+0000\n"
-"PO-Revision-Date: 2017-10-24 09:00+0000\n"
-"Last-Translator: Martin Trigaux <mat@odoo.com>, 2017\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"
"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"
@@ -20,12 +20,14 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: crm_phone_validation
-#: model:ir.model.fields,help:crm_phone_validation.field_res_config_settings_crm_phone_valid_method
+#: model:ir.model.fields,help:crm_phone_validation.field_res_config_settings__crm_phone_valid_method
msgid ""
"Always encode phone numbers using international format. Otherwise numbers "
"coming from the company's country are nationaly formatted. International "
"numbers are always using international format."
msgstr ""
+"Her zaman telefon numaraları uluslararası formatta kodlanır. Yoksa "
+"numaralar, şirketin bağlı olduğu ülkeden ulusal formatta alınır."
#. module: crm_phone_validation
#: model:ir.model,name:crm_phone_validation.model_res_partner
@@ -38,9 +40,9 @@ msgid "Lead/Opportunity"
msgstr "Aday/Fırsat"
#. module: crm_phone_validation
-#: model:ir.model.fields,field_description:crm_phone_validation.field_res_config_settings_crm_phone_valid_method
+#: model:ir.model.fields,field_description:crm_phone_validation.field_res_config_settings__crm_phone_valid_method
msgid "Local Numbers"
-msgstr ""
+msgstr "Yerel Numaralar"
#. module: crm_phone_validation
#: model:ir.model,name:crm_phone_validation.model_res_config_settings
diff --git a/addons/delivery/i18n/fr.po b/addons/delivery/i18n/fr.po
index a38bfb1d348..f34c03d935d 100644
--- a/addons/delivery/i18n/fr.po
+++ b/addons/delivery/i18n/fr.po
@@ -24,13 +24,14 @@
# fr trans <e2ftrans1@yahoo.com>, 2017
# fr rev <e2ffr02@hotmail.com>, 2017
# e2f <projects@e2f.com>, 2018
+# Cécile Collart <cco@odoo.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: Cécile Collart <cco@odoo.com>, 2018\n"
"Language-Team: French (https://www.transifex.com/odoo/teams/41243/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -884,7 +885,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 "Poids:"
#. module: delivery
#: model:ir.model.fields,field_description:delivery.field_product_packaging__width
diff --git a/addons/fleet/i18n/zh_CN.po b/addons/fleet/i18n/zh_CN.po
index 04a464def91..6e72eb28ebe 100644
--- a/addons/fleet/i18n/zh_CN.po
+++ b/addons/fleet/i18n/zh_CN.po
@@ -9,13 +9,14 @@
# liAnGjiA <liangjia@qq.com>, 2017
# 老窦 北京 <2662059195@qq.com>, 2018
# e2f <projects@e2f.com>, 2018
+# Maie <m@maie.name>, 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: e2f <projects@e2f.com>, 2018\n"
+"Last-Translator: Maie <m@maie.name>, 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"
@@ -60,7 +61,7 @@ msgstr "有效"
#. module: fleet
#: model:ir.actions.act_window,help:fleet.fleet_vehicle_tag_action
msgid "Add a new tag"
-msgstr ""
+msgstr "添加一个新标签"
#. module: fleet
#: model:ir.ui.view,arch_db:fleet.fleet_vehicle_log_fuel_view_form
diff --git a/addons/hr/i18n/zh_CN.po b/addons/hr/i18n/zh_CN.po
index ae922b1b3e0..e33bb2666db 100644
--- a/addons/hr/i18n/zh_CN.po
+++ b/addons/hr/i18n/zh_CN.po
@@ -12,13 +12,14 @@
# Martin Trigaux, 2017
# nle_odoo, 2018
# fausthuang, 2018
+# Maie <m@maie.name>, 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: fausthuang, 2018\n"
+"Last-Translator: Maie <m@maie.name>, 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"
@@ -71,7 +72,7 @@ msgstr "有效"
#: model:ir.actions.act_window,help:hr.act_employee_from_department
#: model:ir.actions.act_window,help:hr.open_view_employee_list_my
msgid "Add a new employee"
-msgstr ""
+msgstr "添加一个新的员工"
#. module: hr
#: model:ir.ui.view,arch_db:hr.view_department_filter
@@ -153,7 +154,7 @@ msgstr "合同信息"
#. module: hr
#: model:ir.actions.act_window,help:hr.open_module_tree_department
msgid "Create a new department"
-msgstr ""
+msgstr "创建一个新的部门"
#. module: hr
#: model:ir.model.fields,field_description:hr.field_hr_department__create_uid
@@ -443,12 +444,12 @@ msgstr "最后更新时间"
#. module: hr
#: selection:hr.employee,marital:0
msgid "Legal Cohabitant"
-msgstr ""
+msgstr "合法同居者"
#. module: hr
#: model:ir.actions.act_window,help:hr.action_hr_job
msgid "Let's create a job position."
-msgstr ""
+msgstr "让我们创建一个工作职位"
#. module: hr
#: selection:hr.employee,gender:0
@@ -595,7 +596,7 @@ msgstr "个人隐私信息"
#. module: hr
#: model:ir.actions.act_window,help:hr.action_hr_job
msgid "Ready to recruit more efficiently?"
-msgstr ""
+msgstr "准备更有效地招聘?"
#. module: hr
#: model:ir.ui.view,arch_db:hr.view_hr_job_form
@@ -755,14 +756,14 @@ msgstr "公司内部门的工作岗位名称必须唯一!"
#. module: hr
#: model:res.groups,comment:hr.group_hr_user
msgid "The user will be able to approve document created by employees."
-msgstr ""
+msgstr "此用户将能审批员工创建的单据"
#. module: hr
#: model:res.groups,comment:hr.group_hr_manager
msgid ""
"The user will have an access to the human resources configuration as well as"
" statistic reports."
-msgstr ""
+msgstr "此用户将有权限访问人力资源配置以及统计报表。"
#. module: hr
#: model:ir.model.fields,help:hr.field_hr_employee__image
diff --git a/addons/hr_attendance/i18n/tr.po b/addons/hr_attendance/i18n/tr.po
index 484e98b7b62..6ce3df77fde 100644
--- a/addons/hr_attendance/i18n/tr.po
+++ b/addons/hr_attendance/i18n/tr.po
@@ -12,13 +12,14 @@
# UNIBRAVO SOFTWARE <unibravo@gmail.com>, 2017
# Güven YILMAZ <guvenyilmaz@outlook.com.tr>, 2017
# İlknur Püskül <ilknurpuskull@gmail.com>, 2017
+# Umur Akın <umura@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: İlknur Püskül <ilknurpuskull@gmail.com>, 2017\n"
+"Last-Translator: Umur Akın <umura@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"
@@ -61,14 +62,14 @@ msgstr ""
#: code:addons/hr_attendance/static/src/js/greeting_message.js:117
#, python-format
msgid "An apple a day keeps the doctor away"
-msgstr ""
+msgstr "Günlük bir elma doktoru uzakta tutar."
#. module: hr_attendance
#. openerp-web
#: code:addons/hr_attendance/static/src/js/greeting_message.js:106
#, python-format
msgid "Another good day's work! See you soon!"
-msgstr ""
+msgstr "Çalışmak için başka iyi bir gün! Yakında görüşürüz!"
#. module: hr_attendance
#: model:ir.actions.client,name:hr_attendance.hr_attendance_action_my_attendances
@@ -128,7 +129,7 @@ msgstr ""
#: code:addons/hr_attendance/models/hr_employee.py:108
#, python-format
msgid "Cannot perform check in or check out on multiple employees."
-msgstr ""
+msgstr "Birden fazla personelin girişini ya da çıkışını yapamazsınız."
#. module: hr_attendance
#: code:addons/hr_attendance/models/hr_employee.py:122
@@ -142,48 +143,48 @@ msgstr ""
#. module: hr_attendance
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance__check_in
msgid "Check In"
-msgstr ""
+msgstr "Giriş"
#. module: hr_attendance
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_my_attendances
msgid "Check In / Check Out"
-msgstr ""
+msgstr "Giriş/Çıkış"
#. module: hr_attendance
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance__check_out
msgid "Check Out"
-msgstr ""
+msgstr "Çıkış"
#. module: hr_attendance
#. openerp-web
#: code:addons/hr_attendance/static/src/xml/attendance.xml:53
#, python-format
msgid "Check in"
-msgstr ""
+msgstr "Giriş"
#. module: hr_attendance
#. openerp-web
#: code:addons/hr_attendance/static/src/xml/attendance.xml:49
#, python-format
msgid "Check out"
-msgstr ""
+msgstr "Çıkış"
#. module: hr_attendance
#: model:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
msgid "Check-In/Out"
-msgstr ""
+msgstr "Giriş/Çıkış"
#. module: hr_attendance
#: selection:hr.employee,attendance_state:0
msgid "Checked in"
-msgstr ""
+msgstr "Giriş Yapıldı"
#. module: hr_attendance
#. openerp-web
#: code:addons/hr_attendance/static/src/xml/attendance.xml:109
#, python-format
msgid "Checked in at"
-msgstr ""
+msgstr "Kayıt yapıldı"
#. module: hr_attendance
#: selection:hr.employee,attendance_state:0
@@ -195,21 +196,21 @@ msgstr ""
#: code:addons/hr_attendance/static/src/xml/attendance.xml:97
#, python-format
msgid "Checked out at"
-msgstr ""
+msgstr "Çıkış kaydı yapıldı"
#. module: hr_attendance
#. openerp-web
#: code:addons/hr_attendance/static/src/xml/attendance.xml:27
#, python-format
msgid "Click to check in"
-msgstr ""
+msgstr "Giriş yapmak için tıklayınız"
#. module: hr_attendance
#. openerp-web
#: code:addons/hr_attendance/static/src/xml/attendance.xml:31
#, python-format
msgid "Click to check out"
-msgstr ""
+msgstr "Çıkış yapmak için tıklayınız"
#. module: hr_attendance
#. openerp-web
@@ -260,6 +261,7 @@ msgstr "Görünüm Adı"
#, python-format
msgid "Early to bed and early to rise, makes a man healthy, wealthy and wise"
msgstr ""
+"Erken yatmak ve erken kalkmak insanı sağlıklı, zengin ve akıllı yapar."
#. module: hr_attendance
#. openerp-web
@@ -278,13 +280,13 @@ msgstr "Personel"
#. module: hr_attendance
#: model:ir.ui.view,arch_db:hr_attendance.print_employee_badge
msgid "Employee Image"
-msgstr ""
+msgstr "Personel Resmi"
#. module: hr_attendance
#: model:ir.model.fields,field_description:hr_attendance.field_res_config_settings__group_attendance_use_pin
#: model:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
msgid "Employee PIN"
-msgstr ""
+msgstr "Personel PIN"
#. module: hr_attendance
#: model:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_form
@@ -306,49 +308,49 @@ msgstr "Personeller"
#. module: hr_attendance
#: model:res.groups,name:hr_attendance.group_hr_attendance_use_pin
msgid "Enable PIN use"
-msgstr ""
+msgstr "PIN kullanımını etkinleştir"
#. module: hr_attendance
#. openerp-web
#: code:addons/hr_attendance/static/src/js/my_attendances.js:29
#, python-format
msgid "Error : Could not find employee linked to user"
-msgstr ""
+msgstr "Hata: Kullanıcıya bağlı personel bulunamadı"
#. module: hr_attendance
#. openerp-web
#: code:addons/hr_attendance/static/src/xml/attendance.xml:35
#, python-format
msgid "Error : Could not find employee linked to user."
-msgstr ""
+msgstr "Hata: Kullanıcıya bağlı personel bulunamadı"
#. module: hr_attendance
#. openerp-web
#: code:addons/hr_attendance/static/src/xml/attendance.xml:81
#, python-format
msgid "Error: could not find corresponding employee."
-msgstr ""
+msgstr "Hata: Personel uyuşması bulunamadı"
#. module: hr_attendance
#. openerp-web
#: code:addons/hr_attendance/static/src/js/greeting_message.js:70
#, python-format
msgid "First come, first served"
-msgstr ""
+msgstr "İlk geliş, ilk hizmet."
#. module: hr_attendance
#. openerp-web
#: code:addons/hr_attendance/static/src/js/greeting_message.js:85
#, python-format
msgid "Glad to have you back, it's been a while!"
-msgstr ""
+msgstr "Geri döndüğüne sevindim, uzun zaman olmuştu!"
#. module: hr_attendance
#. openerp-web
#: code:addons/hr_attendance/static/src/js/greeting_message.js:76
#, python-format
msgid "Good afternoon"
-msgstr ""
+msgstr "İyi Günler"
#. module: hr_attendance
#. openerp-web
@@ -362,7 +364,7 @@ msgstr ""
#: code:addons/hr_attendance/static/src/js/greeting_message.js:73
#, python-format
msgid "Good morning"
-msgstr ""
+msgstr "Günaydın"
#. module: hr_attendance
#. openerp-web
@@ -370,14 +372,14 @@ msgstr ""
#: code:addons/hr_attendance/static/src/js/greeting_message.js:80
#, python-format
msgid "Good night"
-msgstr ""
+msgstr "İyi geceler"
#. module: hr_attendance
#. openerp-web
#: code:addons/hr_attendance/static/src/xml/attendance.xml:100
#, python-format
msgid "Goodbye"
-msgstr ""
+msgstr "Hoşçakal"
#. module: hr_attendance
#: model:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
@@ -389,7 +391,7 @@ msgstr "Grupla"
#: code:addons/hr_attendance/static/src/js/greeting_message.js:120
#, python-format
msgid "Have a good afternoon"
-msgstr ""
+msgstr "İyi günler dilerim."
#. module: hr_attendance
#. openerp-web
@@ -403,14 +405,14 @@ msgstr ""
#: code:addons/hr_attendance/static/src/js/greeting_message.js:125
#, python-format
msgid "Have a good evening"
-msgstr ""
+msgstr "İyi akşamlar dilerim."
#. module: hr_attendance
#. openerp-web
#: code:addons/hr_attendance/static/src/js/greeting_message.js:113
#, python-format
msgid "Have a nice lunch!"
-msgstr ""
+msgstr "Öğle yemeğiniz iyi geçsin."
#. module: hr_attendance
#: model:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
@@ -432,24 +434,24 @@ msgstr ""
#: code:addons/hr_attendance/static/src/js/greeting_message.js:88
#, python-format
msgid "If a job is worth doing, it is worth doing well!"
-msgstr ""
+msgstr "Bir iş yapmaya değer ise, iyi yapmaya değer!"
#. module: hr_attendance
#. openerp-web
#: code:addons/hr_attendance/static/src/xml/attendance.xml:120
#, python-format
msgid "Invalid request, please return to the main menu."
-msgstr ""
+msgstr "Geçersiz talep, lütfen ana menüye geri dönün."
#. module: hr_attendance
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_kiosk_mode
msgid "Kiosk Mode"
-msgstr ""
+msgstr "Kiosk Modu"
#. module: hr_attendance
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee__last_attendance_id
msgid "Last Attendance"
-msgstr ""
+msgstr "Son Katılım"
#. module: hr_attendance
#: model:ir.model.fields,field_description:hr_attendance.field_hr_attendance____last_update
@@ -469,7 +471,7 @@ msgstr "Son Güncelleme"
#. module: hr_attendance
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_manage_attendances
msgid "Manage Attendances"
-msgstr ""
+msgstr "Katılımları Yönet"
#. module: hr_attendance
#: model:res.groups,name:hr_attendance.group_hr_attendance_manager
@@ -480,7 +482,7 @@ msgstr "Yönetici"
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee__manual_attendance
#: model:res.groups,name:hr_attendance.group_hr_attendance
msgid "Manual Attendance"
-msgstr ""
+msgstr "Manuel Katılım"
#. module: hr_attendance
#: model:ir.actions.client,name:hr_attendance.hr_attendance_action_greeting_message
@@ -500,7 +502,7 @@ msgstr ""
#. module: hr_attendance
#: model:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
msgid "No Check Out"
-msgstr ""
+msgstr "Çıkış kaydı yok"
#. module: hr_attendance
#: model:ir.actions.act_window,help:hr_attendance.hr_attendance_action
@@ -526,7 +528,7 @@ msgstr "Memur"
#. module: hr_attendance
#: model:ir.model.fields,field_description:hr_attendance.field_hr_employee__pin
msgid "PIN"
-msgstr ""
+msgstr "PIN"
#. module: hr_attendance
#: model:ir.model.fields,help:hr_attendance.field_hr_employee__pin
@@ -545,7 +547,7 @@ msgstr ""
#: code:addons/hr_attendance/static/src/xml/attendance.xml:59
#, python-format
msgid "Please enter your PIN to check out"
-msgstr ""
+msgstr "Lütfen çıkış için PIN girin"
#. module: hr_attendance
#. openerp-web
@@ -557,7 +559,7 @@ msgstr ""
#. module: hr_attendance
#: model:ir.actions.report,name:hr_attendance.hr_employee_print_badge
msgid "Print Badge"
-msgstr ""
+msgstr "Rozeti Yazdır"
#. module: hr_attendance
#: model:ir.ui.menu,name:hr_attendance.menu_hr_attendance_report
@@ -569,19 +571,19 @@ msgstr "Raporlama"
#: code:addons/hr_attendance/static/src/xml/attendance.xml:13
#, python-format
msgid "Scan your badge"
-msgstr ""
+msgstr "Rozetinizi Tarayın"
#. module: hr_attendance
#. openerp-web
#: code:addons/hr_attendance/static/src/xml/attendance.xml:15
#, python-format
msgid "Select Employee"
-msgstr ""
+msgstr "Personel Seç"
#. module: hr_attendance
#: model:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
msgid "Set PIN codes in the employee detail form (in HR Settings tab)."
-msgstr ""
+msgstr "Personel detay formunda PIN kodlarını ayarla (İK Ayarları sekmesinde)"
#. module: hr_attendance
#: model:ir.actions.act_window,name:hr_attendance.action_hr_attendance_settings
@@ -603,26 +605,26 @@ msgstr ""
msgid ""
"The Badge ID must be unique, this one is already assigned to another "
"employee."
-msgstr ""
+msgstr "Rozet ID eşsiz olmalıdır, bu başka bir personele daha önce atanmış."
#. module: hr_attendance
#: code:addons/hr_attendance/models/hr_employee.py:63
#, python-format
msgid "The PIN must be a sequence of digits."
-msgstr ""
+msgstr "PIN rakamlardan oluşmalıdır."
#. module: hr_attendance
#: model:ir.actions.act_window,help:hr_attendance.hr_attendance_action
#: model:ir.actions.act_window,help:hr_attendance.hr_attendance_action_employee
msgid "The attendance records of your employees will be displayed here."
-msgstr ""
+msgstr "Personelinizin katılım kayıtları burada gösterilecektir."
#. module: hr_attendance
#. openerp-web
#: code:addons/hr_attendance/static/src/js/greeting_message.js:68
#, python-format
msgid "The early bird catches the worm"
-msgstr ""
+msgstr "Erken kalkan yol alır"
#. module: hr_attendance
#: model:ir.model.fields,help:hr_attendance.field_hr_employee__manual_attendance
@@ -630,6 +632,8 @@ msgid ""
"The employee will have access to the \"My Attendances\" menu to check in and"
" out from his session"
msgstr ""
+"Personel kendi oturumlarının giriş/çıkışlarına \"Katılımlarım\" menüsünden "
+"ulaşabilecek."
#. module: hr_attendance
#: model:res.groups,comment:hr_attendance.group_hr_attendance
@@ -644,6 +648,8 @@ msgid ""
"The user will have to enter his PIN to check in and out manually at the "
"company screen."
msgstr ""
+"Kullanıcı, şirket ekranında manuel olarak giriş/çıkışlarını kontrol etmek "
+"için PIN kodunu girmelidir."
#. module: hr_attendance
#: model:ir.ui.view,arch_db:hr_attendance.hr_attendance_view_filter
@@ -653,7 +659,7 @@ msgstr "Bugün"
#. module: hr_attendance
#: model:ir.ui.view,arch_db:hr_attendance.res_config_settings_view_form
msgid "Use PIN codes to check in in Kiosk Mode"
-msgstr ""
+msgstr "Kiosk Modu'nda giriş için PIN kodu kullanın"
#. module: hr_attendance
#. openerp-web
@@ -689,25 +695,25 @@ msgstr "Çalışılan Saatler"
#: code:addons/hr_attendance/models/hr_employee.py:79
#, python-format
msgid "Wrong PIN"
-msgstr ""
+msgstr "nlış PIN"
#. module: hr_attendance
#: code:addons/hr_attendance/models/hr_attendance.py:106
#, python-format
msgid "You cannot duplicate an attendance."
-msgstr ""
+msgstr "Bir katılımı çoğaltamazsınız."
#. module: hr_attendance
#: model:ir.model.fields,help:hr_attendance.field_hr_employee__attendance_ids
msgid "list of attendances for the employee"
-msgstr ""
+msgstr "Personel için katılım listesi"
#. module: hr_attendance
#. openerp-web
#: code:addons/hr_attendance/static/src/xml/attendance.xml:123
#, python-format
msgid "ok"
-msgstr ""
+msgstr "Tamam"
#. module: hr_attendance
#. openerp-web
diff --git a/addons/hr_expense/security/ir.model.access.csv b/addons/hr_expense/security/ir.model.access.csv
index c059ed5d393..b0e187d617f 100644
--- a/addons/hr_expense/security/ir.model.access.csv
+++ b/addons/hr_expense/security/ir.model.access.csv
@@ -14,4 +14,4 @@ access_account_invoice_tax_user,account.invoice.tax.user,account.model_account_i
access_account_move_user,account.move.user,account.model_account_move,hr_expense.group_hr_expense_user,1,0,0,0
access_account_move_line_user,account.move.line.user,account.model_account_move_line,hr_expense.group_hr_expense_user,1,0,0,0
access_account_analytic_line_user,account.analytic.line.user,account.model_account_analytic_line,hr_expense.group_hr_expense_user,1,1,1,1
-access_mail_activity_type_expense_user,mail.activity.type.expense.user,mail.model_mail_activity_type,hr_expense.group_hr_expense_user,1,1,1,1
+access_mail_activity_type_expense_user,mail.activity.type.expense.user,mail.model_mail_activity_type,hr_expense.group_hr_expense_manager,1,1,1,1
diff --git a/addons/hr_holidays/i18n/tr.po b/addons/hr_holidays/i18n/tr.po
index 2252af18bba..fed53503b27 100644
--- a/addons/hr_holidays/i18n/tr.po
+++ b/addons/hr_holidays/i18n/tr.po
@@ -18,13 +18,14 @@
# UNIBRAVO SOFTWARE <unibravo@gmail.com>, 2017
# Esin Kandemir <esaykandemir@gmail.com>, 2017
# Levent Karakaş <levent@mektup.at>, 2017
+# Umur Akın <umura@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: Levent Karakaş <levent@mektup.at>, 2017\n"
+"Last-Translator: Umur Akın <umura@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"
@@ -1016,7 +1017,7 @@ msgstr "Yönetici"
#. module: hr_holidays
#: model:ir.ui.menu,name:hr_holidays.menu_hr_holidays_approvals
msgid "Managers"
-msgstr ""
+msgstr "Yöneticiler"
#. module: hr_holidays
#: model:ir.ui.view,arch_db:hr_holidays.hr_holiday_status_view_kanban
diff --git a/addons/hr_holidays/models/hr_leave.py b/addons/hr_holidays/models/hr_leave.py
index 377e6d7d640..57595b2643e 100644
--- a/addons/hr_holidays/models/hr_leave.py
+++ b/addons/hr_holidays/models/hr_leave.py
@@ -209,7 +209,7 @@ class HolidaysRequest(models.Model):
if nholidays:
raise ValidationError(_('You can not have 2 leaves that overlaps on same day!'))
- @api.constrains('state', 'number_of_days_temp')
+ @api.constrains('state', 'number_of_days_temp', 'holiday_status_id')
def _check_holidays(self):
for holiday in self:
if holiday.holiday_type != 'employee' or not holiday.employee_id or holiday.holiday_status_id.limit:
diff --git a/addons/hr_holidays/views/hr_leave_allocation_views.xml b/addons/hr_holidays/views/hr_leave_allocation_views.xml
index 5dc76e7d752..efc3b36879e 100644
--- a/addons/hr_holidays/views/hr_leave_allocation_views.xml
+++ b/addons/hr_holidays/views/hr_leave_allocation_views.xml
@@ -139,6 +139,7 @@
Create a new leave allocation request
</p>
</field>
+ <field name="context">{}</field>
<field name="domain">[('employee_id.user_id', '=', uid)]</field>
<field name="view_id" ref="edit_new_allocation"/>
<field name="search_view_id" ref="view_hr_leave_allocation_filter"/>
@@ -151,6 +152,7 @@
<field name="context">{
'search_default_approve':1,
}</field>
+ <field name="domain">[]</field>
<field name="view_id" ref="edit_new_allocation"/>
<field name="search_view_id" ref="view_hr_leave_allocation_filter"/>
</record>
@@ -161,6 +163,7 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form,kanban</field>
<field name="context">{'search_default_department':1, 'search_default_approve':1}</field>
+ <field name="domain">[]</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create a new leave allocation
@@ -179,6 +182,7 @@
'default_department_id': active_id,
'search_default_approve':1}
</field>
+ <field name="domain">[]</field>
<field name="search_view_id" ref="view_hr_leave_allocation_filter"/>
</record>
diff --git a/addons/hr_holidays/views/hr_leave_views.xml b/addons/hr_holidays/views/hr_leave_views.xml
index f1b990a88cb..1b210c22eb4 100644
--- a/addons/hr_holidays/views/hr_leave_views.xml
+++ b/addons/hr_holidays/views/hr_leave_views.xml
@@ -210,6 +210,7 @@
<field name="res_model">hr.leave</field>
<field name="view_type">form</field>
<field name="view_id" ref="edit_holiday_new_request"/>
+ <field name="context">{}</field>
<field name="domain">[('user_id', '=', uid)]</field>
<field name="search_view_id" ref="view_hr_holidays_filter"/>
<field name="help" type="html">
@@ -262,6 +263,8 @@
Create a new leave request
</p>
</field>
+ <field name="context">{}</field>
+ <field name="domain">[]</field>
<field name="search_view_id" ref="view_hr_holidays_filter"/>
</record>
@@ -271,6 +274,7 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form,calendar,kanban</field>
<field name="context">{'search_default_department':1, 'search_default_approve':1}</field>
+ <field name="domain">[]</field>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Create a new leave request
@@ -338,6 +342,7 @@
'default_department_id': active_id,
'search_default_approve':1}
</field>
+ <field name="domain">[]</field>
<field name="view_id" ref="view_holiday"/>
<field name="search_view_id" ref="view_hr_holidays_filter"/>
</record>
diff --git a/addons/hr_payroll/i18n/fr.po b/addons/hr_payroll/i18n/fr.po
index 1dd19e13e45..4b4d95b2b45 100644
--- a/addons/hr_payroll/i18n/fr.po
+++ b/addons/hr_payroll/i18n/fr.po
@@ -24,13 +24,14 @@
# e2f <projects@e2f.com>, 2018
# Clo <clo@odoo.com>, 2018
# nthnnl <nathan070@me.com>, 2018
+# Cécile Collart <cco@odoo.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: nthnnl <nathan070@me.com>, 2018\n"
+"Last-Translator: Cécile Collart <cco@odoo.com>, 2018\n"
"Language-Team: French (https://www.transifex.com/odoo/teams/41243/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -241,7 +242,7 @@ msgstr "Basique"
#. module: hr_payroll
#: model:hr.salary.rule,name:hr_payroll.hr_rule_basic
msgid "Basic Salary"
-msgstr ""
+msgstr "Salaire de Base"
#. module: hr_payroll
#: model:ir.model.fields,field_description:hr_payroll.field_res_config_settings__module_l10n_be_hr_payroll
@@ -925,7 +926,7 @@ msgstr "Net"
#. module: hr_payroll
#: model:hr.salary.rule,name:hr_payroll.hr_rule_net
msgid "Net Salary"
-msgstr ""
+msgstr "Salaire Net"
#. module: hr_payroll
#: code:addons/hr_payroll/models/hr_payslip.py:199
diff --git a/addons/hr_payroll/i18n/tr.po b/addons/hr_payroll/i18n/tr.po
index 1b7c2c5b5d2..1d754ddd66d 100644
--- a/addons/hr_payroll/i18n/tr.po
+++ b/addons/hr_payroll/i18n/tr.po
@@ -13,13 +13,14 @@
# Ayhan KIZILTAN <akiziltan76@hotmail.com>, 2017
# Ahmet Altinisik <aaltinisik@altinkaya.com.tr>, 2017
# cagri erarslan <cagri.erarslan@mechsoft.com.tr>, 2017
+# Umur Akın <umura@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: cagri erarslan <cagri.erarslan@mechsoft.com.tr>, 2017\n"
+"Last-Translator: Umur Akın <umura@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"
@@ -44,6 +45,10 @@ msgid ""
" \n"
"* When user cancel payslip the status is 'Rejected'."
msgstr ""
+"* Bordro oluşturulduğunda durum 'Taslak' dır. \n"
+"* Eğer bordro onaylanmadıysa, durum 'Bekliyor' dur.\n"
+"* Eğer bordro doğrulandıysa, durum 'Yapıldı' olarak ayarlanır.\n"
+"* Kullanıcı bordroyu iptal ederse durum 'İptal Edildi' olur."
#. module: hr_payroll
#: model:ir.ui.view,arch_db:hr_payroll.report_payslip
@@ -163,7 +168,7 @@ msgstr "Bir iç not ekle..."
#. module: hr_payroll
#: model:ir.ui.view,arch_db:hr_payroll.hr_contract_advantage_template_view_form
msgid "Advantage Name"
-msgstr ""
+msgstr "Yan Hak Adı"
#. module: hr_payroll
#: model:ir.actions.act_window,name:hr_payroll.act_children_salary_rules
@@ -226,12 +231,12 @@ msgstr "Temel"
#. module: hr_payroll
#: model:hr.salary.rule,name:hr_payroll.hr_rule_basic
msgid "Basic Salary"
-msgstr ""
+msgstr "Temel Maaş"
#. module: hr_payroll
#: model:ir.model.fields,field_description:hr_payroll.field_res_config_settings__module_l10n_be_hr_payroll
msgid "Belgium Payroll"
-msgstr ""
+msgstr "Belçika Bordrosu"
#. module: hr_payroll
#: selection:hr.contract,schedule_pay:0
@@ -262,7 +267,7 @@ msgstr "Bordro İptal"
#: code:addons/hr_payroll/models/hr_payslip.py:98
#, python-format
msgid "Cannot cancel a payslip that is done."
-msgstr ""
+msgstr "Yapılan bordrolar iptal edilemez."
#. module: hr_payroll
#: model:ir.model.fields,field_description:hr_payroll.field_hr_payslip_line__category_id
@@ -296,7 +301,7 @@ msgstr "Alt Tanımı"
#. module: hr_payroll
#: model:ir.ui.view,arch_db:hr_payroll.res_config_settings_view_form
msgid "Choose a Payroll Localization"
-msgstr ""
+msgstr "Bir Bordro Yerelleştirmesi seçiniz."
#. module: hr_payroll
#: selection:hr.payslip.run,state:0
@@ -322,7 +327,7 @@ msgstr "Kod"
#: 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 "Kod:"
#. module: hr_payroll
#: model:ir.ui.view,arch_db:hr_payroll.view_hr_payslip_filter
@@ -604,7 +609,7 @@ msgstr "Personel Bordroları"
#. module: hr_payroll
#: model:ir.model,name:hr_payroll.model_hr_contract_advantage_template
msgid "Employee's Advantage on Contract"
-msgstr ""
+msgstr "Sözleşmedeki Personel Yan Hakları"
#. module: hr_payroll
#: model:ir.model.fields,field_description:hr_payroll.field_hr_payslip_employees__employee_ids
@@ -676,7 +681,7 @@ msgstr "Seçilen tüm personeller için maaş bordroları oluşturma"
#: model:hr.salary.rule,name:hr_payroll.hr_rule_taxable
#: model:hr.salary.rule.category,name:hr_payroll.GROSS
msgid "Gross"
-msgstr ""
+msgstr "Brüt"
#. module: hr_payroll
#: model:ir.ui.view,arch_db:hr_payroll.view_hr_payslip_filter
@@ -762,7 +767,7 @@ msgid ""
"It is used in computation for percentage and fixed amount. For e.g. A rule "
"for Meal Voucher having fixed amount of 1€ per worked day can have its "
"quantity defined in expression like worked_days.WORK100.number_of_days."
-msgstr ""
+msgstr "Bu, yüzde ve sabitlenmiş miktarların hesabı için kullanıldı."
#. module: hr_payroll
#: model:ir.model.fields,help:hr_payroll.field_hr_payslip_input__amount
@@ -843,7 +848,7 @@ msgstr ""
#. module: hr_payroll
#: model:ir.model.fields,help:hr_payroll.field_hr_contract_advantage_template__lower_bound
msgid "Lower bound authorized by the employer for this advantage"
-msgstr ""
+msgstr "Bu yan hak için işveren tarafından yetki verilen alt sınır."
#. module: hr_payroll
#: model:ir.model.fields,field_description:hr_payroll.field_hr_payslip__paid
@@ -899,7 +904,7 @@ msgstr "Net"
#. module: hr_payroll
#: model:hr.salary.rule,name:hr_payroll.hr_rule_net
msgid "Net Salary"
-msgstr ""
+msgstr "Net Maaş"
#. module: hr_payroll
#: code:addons/hr_payroll/models/hr_payslip.py:199
@@ -1004,12 +1009,12 @@ msgstr "Bordro"
#. module: hr_payroll
#: model:ir.ui.view,arch_db:hr_payroll.res_config_settings_view_form
msgid "Payroll Entries"
-msgstr ""
+msgstr "Ödeme Kayıtları"
#. module: hr_payroll
#: model:ir.ui.view,arch_db:hr_payroll.res_config_settings_view_form
msgid "Payroll Rules"
-msgstr ""
+msgstr "Bordro Kuralları"
#. module: hr_payroll
#: model:ir.ui.view,arch_db:hr_payroll.view_hr_payroll_structure_filter
@@ -1019,7 +1024,7 @@ msgstr "Bordro Yapısı"
#. 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 "Ülkenizde uygulanan bordro kuralları."
#. module: hr_payroll
#: model:ir.actions.report,name:hr_payroll.action_report_payslip
@@ -1140,7 +1145,7 @@ msgstr "Dönem"
#. module: hr_payroll
#: model:ir.ui.view,arch_db:hr_payroll.res_config_settings_view_form
msgid "Post payroll slips in accounting"
-msgstr ""
+msgstr "Muhasebedeki bordro fişlerini postala"
#. module: hr_payroll
#: model:ir.ui.view,arch_db:hr_payroll.view_payslip_lines_contribution_register
@@ -1454,12 +1459,12 @@ msgstr "Toplam Çalışma Günleri"
#. module: hr_payroll
#: model:ir.model.fields,field_description:hr_payroll.field_hr_contract_advantage_template__upper_bound
msgid "Upper Bound"
-msgstr ""
+msgstr "Üst Sınır"
#. module: hr_payroll
#: model:ir.model.fields,help:hr_payroll.field_hr_contract_advantage_template__upper_bound
msgid "Upper bound authorized by the employer for this advantage"
-msgstr ""
+msgstr "Bu yan hak için işveren tarafından izin verilen üst sınır."
#. module: hr_payroll
#: model:ir.model.fields,help:hr_payroll.field_hr_payslip_line__sequence
diff --git a/addons/hr_recruitment/i18n/zh_CN.po b/addons/hr_recruitment/i18n/zh_CN.po
index 21ad666086b..45c9d3bacc1 100644
--- a/addons/hr_recruitment/i18n/zh_CN.po
+++ b/addons/hr_recruitment/i18n/zh_CN.po
@@ -14,13 +14,14 @@
# fausthuang, 2017
# e2f <projects@e2f.com>, 2018
# e2f_cn c5 <jarvisn@ecinnovations.com>, 2018
+# Maie <m@maie.name>, 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: Maie <m@maie.name>, 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"
@@ -788,7 +789,7 @@ msgstr "有效"
#. module: hr_recruitment
#: model:ir.actions.act_window,help:hr_recruitment.action_hr_job_no_employee
msgid "Add a new employee"
-msgstr ""
+msgstr "添加一个新的员工"
#. module: hr_recruitment
#: model:ir.actions.act_window,help:hr_recruitment.hr_job_stage_act
@@ -799,7 +800,7 @@ msgstr ""
#. module: hr_recruitment
#: model:ir.actions.act_window,help:hr_recruitment.hr_applicant_category_action
msgid "Add a new tag"
-msgstr ""
+msgstr "添加一个新标签"
#. module: hr_recruitment
#: model:ir.model.fields,help:hr_recruitment.field_hr_job__address_id
@@ -1816,7 +1817,7 @@ msgstr "在网站上发布现有职位"
#: model:ir.actions.act_window,help:hr_recruitment.action_hr_job
#: model:ir.actions.act_window,help:hr_recruitment.action_hr_job_config
msgid "Ready to recruit more efficiently?"
-msgstr ""
+msgstr "准备更有效地招聘?"
#. module: hr_recruitment
#: model:ir.model.fields,field_description:hr_recruitment.field_hr_job__alias_force_thread_id
diff --git a/addons/hr_timesheet/i18n/tr.po b/addons/hr_timesheet/i18n/tr.po
index 7b6c0fe98ca..e7a8190db86 100644
--- a/addons/hr_timesheet/i18n/tr.po
+++ b/addons/hr_timesheet/i18n/tr.po
@@ -13,13 +13,14 @@
# UNIBRAVO SOFTWARE <unibravo@gmail.com>, 2017
# Levent Karakaş <levent@mektup.at>, 2017
# Ayhan KIZILTAN <akiziltan76@hotmail.com>, 2017
+# Umur Akın <umura@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: Ayhan KIZILTAN <akiziltan76@hotmail.com>, 2017\n"
+"Last-Translator: Umur Akın <umura@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"
@@ -87,12 +88,12 @@ msgstr "Analitik Satırı"
#. module: hr_timesheet
#: model:ir.ui.view,arch_db:hr_timesheet.res_config_settings_view_form
msgid "Apple App Store"
-msgstr ""
+msgstr "Apple App Store"
#. module: hr_timesheet
#: model:ir.model.fields,field_description:hr_timesheet.field_res_config_settings__module_project_timesheet_synchro
msgid "Awesome Timesheet"
-msgstr ""
+msgstr "Mükemmel Zaman Çizelgesi"
#. module: hr_timesheet
#: model:ir.ui.view,arch_db:hr_timesheet.res_config_settings_view_form
@@ -115,7 +116,7 @@ msgstr "Projeye göre"
#: 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 "Görev"
#. module: hr_timesheet
#: model:ir.model.fields,help:hr_timesheet.field_project_task__total_hours_spent
@@ -174,12 +175,12 @@ msgstr "Personel"
#. module: hr_timesheet
#: model:ir.ui.view,arch_db:hr_timesheet.res_config_settings_view_form
msgid "Google Chrome Store"
-msgstr ""
+msgstr "Google Chrome Store"
#. module: hr_timesheet
#: model:ir.ui.view,arch_db:hr_timesheet.res_config_settings_view_form
msgid "Google Play Store"
-msgstr ""
+msgstr "Google Play Store"
#. module: hr_timesheet
#: model:ir.ui.view,arch_db:hr_timesheet.hr_timesheet_line_search
@@ -270,11 +271,15 @@ msgid ""
"Timesheets app and invoice them based on a fixed price (ordered quantity) or"
" on the time spent (delivered quantity)"
msgstr ""
+"Zaman çizelgesi uygulamasını kullanarak satış hizmetleri (örn. Proje, "
+"bakım), harcama sürelerini kaydedin ve bunları belirlenen fiyata (sipariş "
+"edilen miktar) veya harcanan süreye (teslim edilen miktar) göre "
+"faturalandırın."
#. 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 "Hizmet satın ve harcanan zamanı faturalandır"
#. module: hr_timesheet
#: model:ir.actions.act_window,name:hr_timesheet.hr_timesheet_config_settings_action
@@ -300,7 +305,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 "Web/mobil ile zaman harcamalarını senkronize et."
#. module: hr_timesheet
#: model:ir.model,name:hr_timesheet.model_project_task
@@ -329,7 +334,7 @@ msgstr "Bu Hafta"
#: 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 "Bu görev, zaman çizelgesine bağlanmış bir projeye sahip olmalı."
#. module: hr_timesheet
#: model:ir.ui.view,arch_db:hr_timesheet.report_timesheet
@@ -344,7 +349,7 @@ msgstr ""
#. module: hr_timesheet
#: model:ir.model.fields,field_description:hr_timesheet.field_res_config_settings__module_sale_timesheet
msgid "Time Billing"
-msgstr ""
+msgstr "Saat Faturalaması"
#. module: hr_timesheet
#: model:ir.ui.menu,name:hr_timesheet.menu_hr_time_tracking
@@ -363,7 +368,7 @@ msgstr "Zaman Çizelgesi Aktiviteler"
#. module: hr_timesheet
#: model:ir.ui.view,arch_db:hr_timesheet.res_config_settings_view_form
msgid "Timesheet Apps"
-msgstr ""
+msgstr "Zaman Çizelgesi Uygulaması"
#. module: hr_timesheet
#: model:ir.actions.act_window,name:hr_timesheet.project_task_action_view_timesheet
@@ -412,7 +417,7 @@ msgstr "Kullanıcı"
#. module: hr_timesheet
#: model:ir.ui.view,arch_db:hr_timesheet.res_config_settings_view_form
msgid "Validated leaves create timesheets automatically."
-msgstr ""
+msgstr "Onaylanmış izinler otomatik olarak zaman çizelgesine yansır."
#. module: hr_timesheet
#: model:ir.actions.act_window,help:hr_timesheet.act_hr_timesheet_line
@@ -425,6 +430,9 @@ msgid ""
" day. Every time spent on a project will become a cost and can be re-invoiced to\n"
" customers if required."
msgstr ""
+"Çalışma saatlerinizi proje tarafından her gün kaydedebilir ve "
+"izleyebilirsiniz. Projede harcanan bütün zamanlar, bir maliyet olacak ve "
+"eğer müşteri arzu ederse yeniden faturalanacaktır."
#. module: hr_timesheet
#: model:ir.model,name:hr_timesheet.model_res_config_settings
diff --git a/addons/hr_timesheet_attendance/i18n/tr.po b/addons/hr_timesheet_attendance/i18n/tr.po
index 79f4cee2130..5588db3e311 100644
--- a/addons/hr_timesheet_attendance/i18n/tr.po
+++ b/addons/hr_timesheet_attendance/i18n/tr.po
@@ -8,13 +8,14 @@
# Martin Trigaux, 2017
# Gökhan Erdoğdu <gokhan.erdogdu@mechsoft.com.tr>, 2017
# gezgin biri <gezginbiri@hotmail.com>, 2017
+# Umur Akın <umura@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: gezgin biri <gezginbiri@hotmail.com>, 2017\n"
+"Last-Translator: Umur Akın <umura@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"
@@ -60,7 +61,7 @@ msgstr "Bu Hafta"
#. module: hr_timesheet_attendance
#: model:ir.ui.menu,name:hr_timesheet_attendance.menu_hr_timesheet_attendance_report
msgid "Timesheet / Attendance"
-msgstr ""
+msgstr "Zaman Çizelgesi / Katılım"
#. module: hr_timesheet_attendance
#: model:ir.model.fields,field_description:hr_timesheet_attendance.field_hr_timesheet_attendance_report__total_attendance
@@ -91,4 +92,4 @@ msgstr ""
#: model:ir.ui.view,arch_db:hr_timesheet_attendance.view_hr_timesheet_attendance_report_pivot
#: model:ir.ui.view,arch_db:hr_timesheet_attendance.view_hr_timesheet_attendance_report_search
msgid "timesheet attendance"
-msgstr ""
+msgstr "Zaman çizelgesi katılımı"
diff --git a/addons/iap/i18n/tr.po b/addons/iap/i18n/tr.po
index 480fc6face2..117e4b5bf1c 100644
--- a/addons/iap/i18n/tr.po
+++ b/addons/iap/i18n/tr.po
@@ -4,13 +4,14 @@
#
# Translators:
# Murat Kaplan <muratk@projetgrup.com>, 2017
+# Umur Akın <umura@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: Murat Kaplan <muratk@projetgrup.com>, 2017\n"
+"Last-Translator: Umur Akın <umura@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"
@@ -65,19 +66,19 @@ msgstr "Görünüm Adı"
#. module: iap
#: model:ir.ui.menu,name:iap.iap_root_menu
msgid "IAP"
-msgstr ""
+msgstr "IAP"
#. module: iap
#: model:ir.actions.act_window,name:iap.iap_account_action
#: model:ir.ui.view,arch_db:iap.iap_account_view_form
msgid "IAP Account"
-msgstr ""
+msgstr "IAP Hesabı"
#. module: iap
#: model:ir.ui.menu,name:iap.iap_account_menu
#: model:ir.ui.view,arch_db:iap.iap_account_view_tree
msgid "IAP Accounts"
-msgstr ""
+msgstr "IAP Hesabı"
#. module: iap
#: model:ir.model.fields,field_description:iap.field_iap_account__id
@@ -89,14 +90,14 @@ msgstr "ID"
#: code:addons/iap/static/src/xml/iap_templates.xml:23
#, python-format
msgid "In-App Purchases"
-msgstr ""
+msgstr "Satın Alma Uygulamalarında"
#. module: iap
#. openerp-web
#: code:addons/iap/static/src/js/crash_manager.js:37
#, python-format
msgid "Insufficient Balance"
-msgstr ""
+msgstr "Yetersiz Bakiye"
#. module: iap
#. openerp-web
@@ -123,7 +124,7 @@ msgstr "Son Güncelleme"
#. module: iap
#: model:ir.model.fields,field_description:iap.field_iap_account__service_name
msgid "Service Name"
-msgstr ""
+msgstr "Hizmet Adı"
#. module: iap
#: model:ir.model,name:iap.model_iap_account
diff --git a/addons/im_livechat/i18n/tr.po b/addons/im_livechat/i18n/tr.po
index 7025a38b92c..996f2a4e8a3 100644
--- a/addons/im_livechat/i18n/tr.po
+++ b/addons/im_livechat/i18n/tr.po
@@ -13,13 +13,14 @@
# Emre Akayoğlu <emre.akayoglu@mechsoft.com.tr>, 2017
# Ramiz Deniz Öner <deniz@denizoner.com>, 2017
# Ahmet Altinisik <aaltinisik@altinkaya.com.tr>, 2017
+# Umur Akın <umura@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: Ahmet Altinisik <aaltinisik@altinkaya.com.tr>, 2017\n"
+"Last-Translator: Umur Akın <umura@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"
@@ -218,7 +219,7 @@ msgstr "Kopyalandı!"
#: code:addons/im_livechat/static/src/xml/copy_clipboard.xml:12
#, python-format
msgid "Copy Text"
-msgstr ""
+msgstr "Metni Kopyala"
#. module: im_livechat
#: model:ir.ui.view,arch_db:im_livechat.im_livechat_channel_view_form
@@ -502,7 +503,7 @@ msgstr "Kanaldan Ayrıl"
#. module: im_livechat
#: model:ir.model,name:im_livechat.model_mail_channel_partner
msgid "Listeners of a Channel"
-msgstr ""
+msgstr "Bir Kanal Dinleyicileri"
#. module: im_livechat
#: model:ir.ui.menu,name:im_livechat.menu_livechat_root
@@ -704,17 +705,17 @@ msgstr "Değerlendirme: :rating_%d"
#. module: im_livechat
#: model:ir.ui.view,arch_db:im_livechat.im_livechat_channel_view_kanban
msgid "Rating: Bad"
-msgstr ""
+msgstr "Not: Kötü"
#. module: im_livechat
#: model:ir.ui.view,arch_db:im_livechat.im_livechat_channel_view_kanban
msgid "Rating: Great"
-msgstr ""
+msgstr "Not: İyi"
#. module: im_livechat
#: model:ir.ui.view,arch_db:im_livechat.im_livechat_channel_view_kanban
msgid "Rating: Okay"
-msgstr ""
+msgstr "Puan: Fena Değil"
#. module: im_livechat
#: model:ir.actions.act_window,name:im_livechat.rating_rating_action_view_livechat_rating
diff --git a/addons/l10n_mx/data/account_tag_data.xml b/addons/l10n_mx/data/account_tag_data.xml
index 5160151c821..244c9b65ff3 100644
--- a/addons/l10n_mx/data/account_tag_data.xml
+++ b/addons/l10n_mx/data/account_tag_data.xml
@@ -5399,7 +5399,7 @@
<field name='name'>802.02 Contra cuenta CUFIN</field>
<field name='color'>4</field>
<field name='applicability'>accounts</field>
- <field name='nature'>D</field>
+ <field name='nature'>A</field>
</record>
<record id='account_tag_803_01' model='account.account.tag'>
<field name='name'>803.01 CUFIN de ejercicios anteriores</field>
diff --git a/addons/link_tracker/i18n/tr.po b/addons/link_tracker/i18n/tr.po
index 7019333aea2..21f4defb143 100644
--- a/addons/link_tracker/i18n/tr.po
+++ b/addons/link_tracker/i18n/tr.po
@@ -10,13 +10,14 @@
# gezgin biri <gezginbiri@hotmail.com>, 2017
# Ediz Duman <neps1192@gmail.com>, 2017
# Emre Akayoğlu <emre.akayoglu@mechsoft.com.tr>, 2017
+# Umur Akın <umura@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: Emre Akayoğlu <emre.akayoglu@mechsoft.com.tr>, 2017\n"
+"Last-Translator: Umur Akın <umura@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"
@@ -79,17 +80,17 @@ msgstr "Görünüm Adı"
#. module: link_tracker
#: model:ir.model.fields,field_description:link_tracker.field_link_tracker__favicon
msgid "Favicon"
-msgstr ""
+msgstr "Sık Kullanılan İkonu"
#. module: link_tracker
#: model:ir.model.fields,field_description:link_tracker.field_link_tracker__icon_src
msgid "Favicon Source"
-msgstr ""
+msgstr "Sık Kullanılan İkon Kaynağı"
#. module: link_tracker
#: model:ir.model.fields,field_description:link_tracker.field_link_tracker__short_url_host
msgid "Host of the short URL"
-msgstr ""
+msgstr "Kısa URL sunucusu"
#. module: link_tracker
#: model:ir.model.fields,field_description:link_tracker.field_link_tracker__id
@@ -101,7 +102,7 @@ msgstr "ID"
#. module: link_tracker
#: model:ir.model.fields,field_description:link_tracker.field_link_tracker_click__ip
msgid "Internet Protocol"
-msgstr ""
+msgstr "İnternet Protokolü"
#. module: link_tracker
#: model:ir.model.fields,field_description:link_tracker.field_link_tracker____last_update
@@ -149,7 +150,7 @@ msgstr "Sayfa Başlığı"
#. module: link_tracker
#: model:ir.model.fields,field_description:link_tracker.field_link_tracker__redirected_url
msgid "Redirected URL"
-msgstr ""
+msgstr "Yönlendirilmiş URL"
#. module: link_tracker
#: model:ir.model.fields,field_description:link_tracker.field_link_tracker_code__code
@@ -159,12 +160,12 @@ msgstr "Kısa URL Kodu "
#. module: link_tracker
#: model:ir.model.fields,field_description:link_tracker.field_link_tracker__code
msgid "Short URL code"
-msgstr ""
+msgstr "Kısa URL kodu"
#. module: link_tracker
#: model:ir.actions.act_window,name:link_tracker.action_view_click_statistics
msgid "Statistics of Clicks"
-msgstr ""
+msgstr "Tıklanma İstatistikleri"
#. module: link_tracker
#: model:ir.model.fields,field_description:link_tracker.field_link_tracker__url
@@ -174,28 +175,28 @@ msgstr ""
#. module: link_tracker
#: model:ir.ui.view,arch_db:link_tracker.view_link_tracker_filter
msgid "Title and URL"
-msgstr ""
+msgstr "Başlı ve URL"
#. module: link_tracker
#: model:ir.ui.view,arch_db:link_tracker.view_link_tracker_filter
msgid "Tracked Link"
-msgstr ""
+msgstr "İzlenen Bağlantı"
#. module: link_tracker
#: model:ir.model.fields,field_description:link_tracker.field_link_tracker__short_url
msgid "Tracked URL"
-msgstr ""
+msgstr "İzlenen URL"
#. module: link_tracker
#: model:ir.ui.view,arch_db:link_tracker.view_link_tracker_form
msgid "Visit Page"
-msgstr ""
+msgstr "Sayfayı Ziyaret Et"
#. module: link_tracker
#: code:addons/link_tracker/models/link_tracker.py:141
#, python-format
msgid "Visit Webpage"
-msgstr ""
+msgstr "Web Sayfasını Ziyaret Et"
#. module: link_tracker
#: model:ir.ui.view,arch_db:link_tracker.view_link_tracker_form
@@ -206,23 +207,23 @@ msgstr ""
#: model:ir.ui.view,arch_db:link_tracker.view_link_tracker_click_form
#: model:ir.ui.view,arch_db:link_tracker.view_link_tracker_click_graph
msgid "Website Link Clicks"
-msgstr ""
+msgstr "Website Link Tıklamaları"
#. module: link_tracker
#: model:ir.ui.view,arch_db:link_tracker.view_link_tracker_form_stats
msgid "Website Link Graph"
-msgstr ""
+msgstr "Website Link Grafiği"
#. module: link_tracker
#: model:ir.ui.view,arch_db:link_tracker.view_link_tracker_graph
#: model:ir.ui.view,arch_db:link_tracker.view_link_tracker_tree
msgid "Website Links"
-msgstr ""
+msgstr "Website Linkleri"
#. module: link_tracker
#: model:ir.ui.view,arch_db:link_tracker.view_link_tracker_click_tree
msgid "Website Links Clicks"
-msgstr ""
+msgstr "Website Link Tıklamaları"
#. module: link_tracker
#: model:ir.model,name:link_tracker.model_link_tracker
diff --git a/addons/lunch/i18n/tr.po b/addons/lunch/i18n/tr.po
index 6e924877da9..6fd066e863d 100644
--- a/addons/lunch/i18n/tr.po
+++ b/addons/lunch/i18n/tr.po
@@ -51,7 +51,7 @@ msgstr ""
#. module: lunch
#: model:ir.actions.act_window,help:lunch.lunch_product_action
msgid "A product is defined by its name, category, price and vendor."
-msgstr ""
+msgstr "Bir ürün ismi, kategorisi, fiyatı ve tedarikçisi ile tanımlanır."
#. module: lunch
#: model:ir.model.fields,field_description:lunch.field_lunch_alert__active
@@ -85,6 +85,9 @@ msgid ""
"Alerts are used to warn employee from possible issues concerning the lunch orders.\n"
" To create a lunch alert you have to define its recurrence, the time interval during which the alert should be executed and the message to display."
msgstr ""
+"Uyarılar, çalışanı öğle yemeği siparişleriyle ilgili olası sorunlara karşı uyarmak için kullanılır.\n"
+"\n"
+"Bir öğle yemeği uyarısı oluşturmak için, tekrarlamasını, uyarının gerçekleştirileceği zaman aralığını ve görüntülenecek mesajı tanımlamanız gerekir."
#. module: lunch
#: model:ir.model.fields,field_description:lunch.field_lunch_cashmove__amount
@@ -105,7 +108,7 @@ msgstr "Arşivlenmiş"
#. module: lunch
#: model:ir.model.fields,field_description:lunch.field_lunch_order__balance_visible
msgid "Balance Visible"
-msgstr ""
+msgstr "Görünür Bakiye"
#. module: lunch
#: model:ir.model.fields,field_description:lunch.field_lunch_alert__start_hour
@@ -115,7 +118,7 @@ msgstr "Arasında"
#. module: lunch
#: model:ir.ui.view,arch_db:lunch.view_lunch_alert_kanban
msgid "Between:"
-msgstr ""
+msgstr "Arasında:"
#. module: lunch
#: model:ir.ui.view,arch_db:lunch.lunch_cashmove_view_search_2
@@ -125,7 +128,7 @@ msgstr "Çalışan tarafından"
#. module: lunch
#: model:ir.ui.view,arch_db:lunch.lunch_order_line_view_search
msgid "By Order"
-msgstr ""
+msgstr "Siparişe Göre"
#. module: lunch
#: model:ir.ui.view,arch_db:lunch.lunch_cashmove_view_search
@@ -135,12 +138,12 @@ msgstr "Kullanıcıya Göre"
#. module: lunch
#: model:ir.ui.view,arch_db:lunch.lunch_order_line_view_search
msgid "By Vendor"
-msgstr ""
+msgstr "Tedarikçiye göre"
#. module: lunch
#: model:ir.model.fields,help:lunch.field_lunch_cashmove__description
msgid "Can be an order or a payment"
-msgstr ""
+msgstr "Bir sipariş ya da bir ödeme olabilir."
#. module: lunch
#: model:ir.model.fields,help:lunch.field_lunch_cashmove__amount
@@ -148,6 +151,8 @@ msgid ""
"Can be positive (payment) or negative (order or payment if user wants to get"
" his money back)"
msgstr ""
+"Pozitif (ödeme) ya da negatif (eğer kullanıcı parasını geri "
+"istediyse,sipariş ya da ödeme) olabilir."
#. module: lunch
#: model:ir.ui.view,arch_db:lunch.lunch_order_line_view_kanban
@@ -170,7 +175,7 @@ msgstr "Nakit Hareketi"
#. module: lunch
#: model:ir.model.fields,field_description:lunch.field_lunch_order__cash_move_balance
msgid "Cash Move Balance"
-msgstr ""
+msgstr "Nakit Hareket Dengesi "
#. module: lunch
#: model:ir.actions.act_window,help:lunch.lunch_order_line_action_control_suppliers
@@ -207,7 +212,7 @@ msgstr "Denetim Hesapları"
#. module: lunch
#: model:ir.actions.act_window,name:lunch.lunch_order_line_action_control_suppliers
msgid "Control Vendors"
-msgstr ""
+msgstr "Tedarikçi Kontrolü"
#. module: lunch
#: model:ir.actions.act_window,help:lunch.lunch_alert_action
@@ -308,6 +313,8 @@ msgstr "Çalışan Ödemeleri"
#: model:ir.model.fields,help:lunch.field_lunch_order_line_lucky__is_max_budget
msgid "Enable this option to set a maximal budget for your lucky order."
msgstr ""
+"Şanslı siparişinizin maksimum bütçesini ayarlamak için bu seçeneği "
+"etkinleştirin."
#. module: lunch
#: selection:lunch.alert,alert_type:0
@@ -331,7 +338,7 @@ msgstr ""
#. module: lunch
#: model:ir.ui.view,arch_db:lunch.lunch_order_view_form
msgid "Feeling Lucky"
-msgstr ""
+msgstr "Şanslı Hisset"
#. module: lunch
#: model:ir.model.fields,field_description:lunch.field_lunch_alert__friday
@@ -359,11 +366,14 @@ msgstr ""
#: model:ir.actions.act_window,help:lunch.lunch_product_category_action
msgid "Here you can access all categories for the lunch products."
msgstr ""
+"Öğle yemeği ürünleri ile ilgili bütün kategorilere buradan ulaşabilirsiniz."
#. module: lunch
#: model:ir.actions.act_window,help:lunch.lunch_order_line_action_by_supplier
msgid "Here you can see today's orders grouped by vendors."
msgstr ""
+"Burada tedarikçiler tarafından gruplanmış bugünün siparişlerini "
+"görebilirsiniz."
#. module: lunch
#: model:ir.actions.act_window,help:lunch.lunch_cashmove_action_account
@@ -375,7 +385,7 @@ msgstr ""
#. module: lunch
#: model:ir.ui.view,arch_db:lunch.view_lunch_order_line_lucky
msgid "I'm feeling lucky"
-msgstr ""
+msgstr "Kendimi şanslı hissediyorum."
#. module: lunch
#: model:ir.actions.act_window,name:lunch.action_lunch_order_line_lucky
@@ -457,7 +467,7 @@ msgstr "Öğle yemeği Uyarısı"
#: code:addons/lunch/models/lunch.py:265
#, python-format
msgid "Lunch Cashmove"
-msgstr ""
+msgstr "Öğle Yemeği Nakit Hareketi"
#. module: lunch
#: code:addons/lunch/models/lunch.py:66
@@ -476,22 +486,22 @@ msgstr ""
#. module: lunch
#: model:ir.actions.server,name:lunch.action_server_lunch_archive_product
msgid "Lunch: Archive/Restore products"
-msgstr ""
+msgstr "Öğle Yemeği: Ürünleri Arşivle/Restore Et"
#. module: lunch
#: model:ir.actions.server,name:lunch.lunch_order_line_action_cancel
msgid "Lunch: Cancel meals"
-msgstr ""
+msgstr "Öğle Yemeği: Yemek İptali"
#. module: lunch
#: model:ir.actions.server,name:lunch.lunch_order_line_action_order
msgid "Lunch: Order meals"
-msgstr ""
+msgstr "Öğle Yemeği: Yemek Siparişi"
#. module: lunch
#: model:ir.actions.server,name:lunch.lunch_order_line_action_confirm
msgid "Lunch: Receive meals"
-msgstr ""
+msgstr "Öğle Yemeği:Yemeği Teslim Al"
#. module: lunch
#: model:ir.ui.menu,name:lunch.menu_lunch_admin
@@ -502,7 +512,7 @@ msgstr "Yönetici"
#. module: lunch
#: model:ir.model.fields,field_description:lunch.field_lunch_order_line_lucky__max_budget
msgid "Max Budget"
-msgstr ""
+msgstr "Maksimum Bütçe"
#. module: lunch
#: model:ir.model.fields,field_description:lunch.field_lunch_alert__message
@@ -523,7 +533,7 @@ msgstr "Hesaplarım gruplandı"
#. module: lunch
#: model:ir.ui.menu,name:lunch.menu_lunch_title
msgid "My Lunch"
-msgstr ""
+msgstr "Öğle Yemeğim"
#. module: lunch
#: model:ir.ui.view,arch_db:lunch.lunch_order_line_view_search
@@ -565,7 +575,7 @@ msgstr ""
#: code:addons/lunch/wizard/lucky_order.py:39
#, python-format
msgid "No product is matching your request. Now you will starve to death."
-msgstr ""
+msgstr "Hiçbir ürün isteğinizle uyuşmadı. Şimdi açlıktan öleceksin."
#. module: lunch
#: model:ir.ui.view,arch_db:lunch.lunch_order_line_view_search
@@ -586,19 +596,19 @@ msgstr ""
#: code:addons/lunch/models/lunch.py:225
#, python-format
msgid "Only your lunch manager cancels the orders."
-msgstr ""
+msgstr "Sadece senin öğle yemeği yöneticin siparişleri iptal edebilir."
#. module: lunch
#: code:addons/lunch/models/lunch.py:194
#, python-format
msgid "Only your lunch manager processes the orders."
-msgstr ""
+msgstr "Sadece senin öğle yemeği yöneticin siparişleri verebilir."
#. module: lunch
#: code:addons/lunch/models/lunch.py:214
#, python-format
msgid "Only your lunch manager sets the orders as received."
-msgstr ""
+msgstr "Sadece senin öğle yemeği yöneticin siparişleri alındı olarak ayarlar."
#. module: lunch
#: model:ir.model.fields,field_description:lunch.field_lunch_cashmove__order_id
@@ -639,7 +649,7 @@ msgstr "Sipariş Ağacı"
#: model:ir.actions.act_window,name:lunch.lunch_order_line_action_by_supplier
#: model:ir.ui.menu,name:lunch.lunch_order_line_menu_control_suppliers
msgid "Orders by Vendor"
-msgstr ""
+msgstr "Tedarikçi Siparişleri"
#. module: lunch
#: model:ir.ui.view,arch_db:lunch.lunch_cashmove_view_search
@@ -657,12 +667,12 @@ msgstr ""
#. module: lunch
#: model:ir.model.fields,field_description:lunch.field_lunch_order__previous_order_ids
msgid "Previous Order"
-msgstr ""
+msgstr "Önceki Sipariş"
#. module: lunch
#: model:ir.model.fields,field_description:lunch.field_lunch_order__previous_order_widget
msgid "Previous Order Widget"
-msgstr ""
+msgstr "Önceki Sipariş Widget'ı"
#. module: lunch
#: model:ir.ui.menu,name:lunch.lunch_order_menu_tree
@@ -815,7 +825,7 @@ msgstr "Durum"
#. module: lunch
#: model:ir.actions.act_window,help:lunch.lunch_order_line_action_control_suppliers
msgid "Summary of all lunch orders, grouped by vendor and by date."
-msgstr ""
+msgstr "Tüm siparişlerinizin özeti tedarikçiye ve tarihe göre gruplanır."
#. module: lunch
#: model:ir.model.fields,field_description:lunch.field_lunch_alert__sunday
@@ -831,7 +841,7 @@ msgstr "Kullanıcının halihazırda çalıştığı firma"
#: code:addons/lunch/models/lunch.py:129
#, python-format
msgid "The date of your order is in the past."
-msgstr ""
+msgstr "Sipariş tarihiniz geçmişte kalmıştır"
#. module: lunch
#: model:ir.actions.act_window,help:lunch.lunch_order_line_action
@@ -839,6 +849,8 @@ msgid ""
"There is no previous order recorded. Click on \"My Lunch\" and then create a"
" new lunch order."
msgstr ""
+"Önceki sipariş kaydı bulunamamıştır. 'Benim Öğle Yemeğim'i tıklayın ve yeni "
+"bir yemek siparişi verin."
#. module: lunch
#. openerp-web
@@ -860,7 +872,7 @@ msgstr "Bugün"
#. module: lunch
#: model:ir.ui.menu,name:lunch.lunch_order_line_menu_by_supplier
msgid "Today's Orders"
-msgstr ""
+msgstr "Bugünün Siğarişleri"
#. module: lunch
#: model:ir.model.fields,field_description:lunch.field_lunch_order__total
@@ -900,7 +912,7 @@ msgstr "Tedarikçi"
#. module: lunch
#: model:ir.ui.view,arch_db:lunch.lunch_order_line_view_search
msgid "Vendor Orders by Month"
-msgstr ""
+msgstr "Aylara Göre Siparişlerin Tedarikçisi"
#. module: lunch
#: model:ir.model.fields,field_description:lunch.field_lunch_alert__wednesday
diff --git a/addons/mail/i18n/tr.po b/addons/mail/i18n/tr.po
index 65f6a140a96..b989dc5f3bd 100644
--- a/addons/mail/i18n/tr.po
+++ b/addons/mail/i18n/tr.po
@@ -24,13 +24,14 @@
# Mehmet Demirel <mdemirell@gmail.com>, 2017
# İlknur Püskül <ilknurpuskull@gmail.com>, 2017
# Levent Karakaş <levent@mektup.at>, 2017
+# Umur Akın <umura@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: Levent Karakaş <levent@mektup.at>, 2017\n"
+"Last-Translator: Umur Akın <umura@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"
@@ -678,6 +679,8 @@ msgid ""
"Answers do not go in the original document discussion thread. This has an "
"impact on the generated message-id."
msgstr ""
+"Cevaplar orijinal belge tartışma dizisine gitmiyor. Bunun oluşturulan mesaj "
+"kimliği üzerinde bir etkisi vardır."
#. module: mail
#: model:ir.model.fields,field_description:mail.field_email_template_preview__model_id
@@ -1569,7 +1572,7 @@ msgstr "Hata, bir iş ortağı aynı nesneyi iki defa izleyemez."
#: sql_constraint:mail.followers:0
msgid ""
"Error: A follower must be either a partner or a channel (but not both)."
-msgstr ""
+msgstr "Hata: Takipçi ya partner ya da kanal olmak zorunda (ikisi olamaz)"
#. module: mail
#: selection:mail.alias,alias_contact:0 selection:mail.channel,public:0
@@ -1614,6 +1617,8 @@ msgid ""
"Failure reason. This is usually the exception thrown by the email server, "
"stored to ease the debugging of mailing issues."
msgstr ""
+"Arıza nedeni. Arıza nedeni. Bu genellikle e-posta sunucusu tarafından "
+"atılan, e-posta sorunlarının ayıklanmasını kolaylaştırmak için saklanır."
#. module: mail
#: model:ir.model.fields,field_description:mail.field_mail_compose_message__starred_partner_ids
@@ -2383,7 +2388,7 @@ msgstr "Davet sihirbazı"
#. module: mail
#: selection:mail.channel,public:0
msgid "Invited people only"
-msgstr ""
+msgstr "Sadece Davet Edilen Kişiler"
#. module: mail
#: model:ir.model.fields,field_description:mail.field_account_analytic_account__message_is_follower
@@ -2593,7 +2598,7 @@ msgstr ""
#: model:ir.model.fields,help:mail.field_mail_wizard_invite__channel_ids
msgid ""
"List of channels that will be added as listeners of the current document."
-msgstr ""
+msgstr "Kanalları listesi güncel doküman dinleyicisi olarak eklenmiş olacak."
#. module: mail
#: model:ir.model.fields,help:mail.field_mail_wizard_invite__partner_ids
@@ -2620,7 +2625,7 @@ msgstr "Dinleyeciler"
#. module: mail
#: model:ir.model,name:mail.model_mail_channel_partner
msgid "Listeners of a Channel"
-msgstr ""
+msgstr "Bir Kanal Dinleyicileri"
#. module: mail
#: selection:mail.channel,channel_type:0
@@ -2862,7 +2867,7 @@ msgstr "Mesaj referansları, tanımlayıcılar ya da önceki mesajlar"
#: code:addons/mail/static/src/xml/discuss.xml:124
#, python-format
msgid "Message sent in \""
-msgstr ""
+msgstr "Mesaj gönderildi"
#. module: mail
#: model:ir.model.fields,help:mail.field_mail_message_subtype__name
@@ -3123,17 +3128,17 @@ msgstr ""
#. module: mail
#: model:ir.model.fields,field_description:mail.field_mail_tracking_value__new_value_datetime
msgid "New Value Datetime"
-msgstr ""
+msgstr "Yeni Değerleme Zamanı"
#. module: mail
#: model:ir.model.fields,field_description:mail.field_mail_tracking_value__new_value_float
msgid "New Value Float"
-msgstr ""
+msgstr "Yeni Değer Kaydırma"
#. module: mail
#: model:ir.model.fields,field_description:mail.field_mail_tracking_value__new_value_integer
msgid "New Value Integer"
-msgstr ""
+msgstr "Yeni Tam Sayı Değeri"
#. module: mail
#: model:ir.model.fields,field_description:mail.field_mail_tracking_value__new_value_monetary
diff --git a/addons/mail/models/res_users.py b/addons/mail/models/res_users.py
index 40032cac40f..2068e66c834 100644
--- a/addons/mail/models/res_users.py
+++ b/addons/mail/models/res_users.py
@@ -53,7 +53,10 @@ class Users(models.Model):
msg = _("You cannot create a new user from here.\n To create new user please go to configuration panel.")
raise exceptions.RedirectWarning(msg, action.id, _('Go to the configuration panel'))
- return super(Users, self).create(values)
+ user = super(Users, self).create(values)
+ # Auto-subscribe to channels
+ self.env['mail.channel'].search([('group_ids', 'in', user.groups_id.ids)])._subscribe_users()
+ return user
@api.multi
def write(self, vals):
diff --git a/addons/mail/static/src/js/systray.js b/addons/mail/static/src/js/systray.js
index 5a4c8ea4675..1c320515fa9 100644
--- a/addons/mail/static/src/js/systray.js
+++ b/addons/mail/static/src/js/systray.js
@@ -139,7 +139,7 @@ var MessagingMenu = Widget.extend({
this.do_action('mail.mail_channel_action_client_chat', {clear_breadcrumbs: true})
.then(function () {
self.trigger_up('hide_home_menu'); // we cannot 'go back to previous page' otherwise
- core.bus.trigger('change_menu_section', self.call('chat_manager', 'getDiscussMenuID').bind(self));
+ core.bus.trigger('change_menu_section', self.call('chat_manager', 'getDiscussMenuID'));
});
}
} else {
@@ -284,8 +284,9 @@ var ActivityMenu = Widget.extend({
SystrayMenu.Items.push(MessagingMenu);
SystrayMenu.Items.push(ActivityMenu);
-// to test activity menu in qunit test cases we need it
+// to test activity and messaging menus in qunit test cases we need it
return {
ActivityMenu: ActivityMenu,
+ MessagingMenu: MessagingMenu,
};
});
diff --git a/addons/mail/static/src/js/utils.js b/addons/mail/static/src/js/utils.js
index 43f4ae2a477..16507035982 100644
--- a/addons/mail/static/src/js/utils.js
+++ b/addons/mail/static/src/js/utils.js
@@ -18,7 +18,7 @@ function _parse_and_transform(nodes, transform_function) {
// Suggested URL Javascript regex of http://stackoverflow.com/questions/3809401/what-is-a-good-regular-expression-to-match-a-url
// Adapted to make http(s):// not required if (and only if) www. is given. So `should.notmatch` does not match.
-var url_regexp = /\b(?:https?:\/\/\d{1,3}(?:\.\d{1,3}){3}|(?:https?:\/\/|(?:www\.))[-a-z0-9@:%._\+~#=]{2,256}\.[a-z]{2,13})\b(?:[-a-z0-9@:%_\+.~#?&//=]*)/gi;
+var url_regexp = /\b(?:https?:\/\/\d{1,3}(?:\.\d{1,3}){3}|(?:https?:\/\/|(?:www\.))[-a-z0-9@:%._\+~#=]{2,256}\.[a-z]{2,13})\b(?:[-a-z0-9@:%_\+.~#?&'$//=]*)/gi;
function linkify(text, attrs) {
attrs = attrs || {};
if (attrs.target === undefined) {
diff --git a/addons/mail/static/src/scss/composer.scss b/addons/mail/static/src/scss/composer.scss
index 59f529789ab..e7caf3821d0 100644
--- a/addons/mail/static/src/scss/composer.scss
+++ b/addons/mail/static/src/scss/composer.scss
@@ -43,11 +43,15 @@
.o_composer {
.o_composer_input[contenteditable=true]:empty:before {
content: attr(placeholder);
- opacity: 0.75;
+ opacity: 0.4;
}
.o_composer_input {
+ border: none;
+ box-shadow: none;
+ cursor: text;
display: inline-block;
height: 100%;
+ padding: 0px 0px $o-mail-chatter-gap;
white-space: pre-wrap;
word-break: break-all;
}
@@ -172,8 +176,6 @@
}
.o_composer_text_field {
@include o-flex(1, 1, 50%);
- margin: -4px 7px 5px 0px;
- padding: 2.5px 0px 0px 5px;
}
.o_chatter_composer_tools {
@include o-flex(0, 1, auto);
diff --git a/addons/mail/static/tests/helpers/mock_server.js b/addons/mail/static/tests/helpers/mock_server.js
index 08766126717..22c1783f5a3 100644
--- a/addons/mail/static/tests/helpers/mock_server.js
+++ b/addons/mail/static/tests/helpers/mock_server.js
@@ -12,7 +12,7 @@ MockServer.include({
* handled as a model definition.
*
* @override
- * @param {Object} [data.initMessaging]
+ * @param {Object} [data.initMessaging]
*/
init: function (data, options) {
if (data && data.initMessaging) {
@@ -23,6 +23,25 @@ MockServer.include({
},
/**
+ * Simulate the '/mail.channel/channel_fetch_preview' route
+ *
+ * @private
+ * @return {$.Promise<Object[]>} resolved with list of channels previews
+ */
+ _mockChannelFetchPreview: function (args) {
+ var self = this;
+ var ids = args.args[0]; // list of channel ids to fetch preview
+ var model = args.model;
+ var channels = this._getRecords(model, [['id', 'in', ids]]);
+ var previews = _.map(channels, function (channel) {
+ var maxMessageID = _.max(channel.channel_message_ids);
+ var lastMessage = self._getRecords('mail.message', [['id', '=', maxMessageID]])[0];
+ channel.last_message = lastMessage;
+ return channel;
+ });
+ return $.when(previews);
+ },
+ /**
* Simulate the '/mail/init_messaging' route
*
* @private
@@ -73,6 +92,9 @@ MockServer.include({
if (args.method === 'channel_seen') {
return $.when();
}
+ if (args.method === 'channel_fetch_preview') {
+ return this._mockChannelFetchPreview(args);
+ }
return this._super(route, args);
},
});
diff --git a/addons/mail/static/tests/mail_utils_tests.js b/addons/mail/static/tests/mail_utils_tests.js
index e8ec776a8d5..9bb8271e990 100644
--- a/addons/mail/static/tests/mail_utils_tests.js
+++ b/addons/mail/static/tests/mail_utils_tests.js
@@ -8,7 +8,7 @@ QUnit.module('mail', {}, function () {
QUnit.module('Mail utils');
QUnit.test('add_link utility function', function (assert) {
- assert.expect(7);
+ assert.expect(15);
var testInputs = {
'http://admin:password@example.com:8/%2020': true,
@@ -18,12 +18,15 @@ QUnit.test('add_link utility function', function (assert) {
'www.127.0.0.5': false,
'should.notmatch': false,
'fhttps://test.example.com/test': false,
+ "https://www.transifex.com/odoo/odoo-11/translate/#fr/lunch?q=text%3A'La+Tartiflette'": true,
+ 'https://www.transifex.com/odoo/odoo-11/translate/#fr/$/119303430?q=text%3ATartiflette': true,
};
_.each(testInputs, function (willLinkify, content) {
var output = utils.parse_and_transform(content, utils.add_link);
if (willLinkify) {
assert.strictEqual(output.indexOf('<a '), 0, "There should be a link");
+ assert.strictEqual(output.indexOf('</a>'), (output.length - 4), "Link should match the whole text");
} else {
assert.strictEqual(output.indexOf('<a '), -1, "There should be no link");
}
diff --git a/addons/mail/static/tests/systray_tests.js b/addons/mail/static/tests/systray_tests.js
index f8585d37699..b6161453d33 100644
--- a/addons/mail/static/tests/systray_tests.js
+++ b/addons/mail/static/tests/systray_tests.js
@@ -5,6 +5,7 @@ var ChatManager = require('mail.ChatManager');
var systray = require('mail.systray');
var mailTestUtils = require('mail.testUtils');
+var Bus = require('web.Bus');
var testUtils = require('web.test_utils');
var createBusService = mailTestUtils.createBusService;
@@ -126,4 +127,197 @@ QUnit.test('activity menu widget: activity menu with 3 records', function (asser
activityMenu.destroy();
});
});
+
+QUnit.module('MessagingMenu', {
+ beforeEach: function () {
+ // patch _.debounce and _.throttle to be fast and synchronous
+ this.underscoreDebounce = _.debounce;
+ this.underscoreThrottle = _.throttle;
+ _.debounce = _.identity;
+ _.throttle = _.identity;
+
+ this.data = {
+ 'mail.channel': {
+ fields: {
+ name: {
+ string: "Name",
+ type: "char",
+ required: true,
+ },
+ channel_type: {
+ string: "Channel Type",
+ type: "selection",
+ },
+ channel_message_ids: {
+ string: "Messages",
+ type: "many2many",
+ relation: 'mail.message'
+ },
+ },
+ records: [{
+ id: 1,
+ name: "general",
+ channel_type: "channel",
+ channel_message_ids: [1],
+ }],
+ },
+ 'mail.message': {
+ fields: {
+ body: {
+ string: "Contents",
+ type: 'html',
+ },
+ author_id: {
+ string: "Author",
+ relation: 'res.partner',
+ },
+ channel_ids: {
+ string: "Channels",
+ type: 'many2many',
+ relation: 'mail.channel',
+ },
+ starred: {
+ string: "Starred",
+ type: 'boolean',
+ },
+ needaction: {
+ string: "Need Action",
+ type: 'boolean',
+ },
+ starred_partner_ids: {
+ string: "partner ids",
+ type: 'integer',
+ }
+ },
+ records: [{
+ id: 1,
+ author_id: ['1', 'Me'],
+ body: '<p>test</p>',
+ channel_ids: [1],
+ }],
+ },
+ initMessaging: {
+ channel_slots: {
+ channel_channel: [{
+ id: 1,
+ channel_type: "channel",
+ name: "general",
+ }],
+ },
+ },
+ };
+ this.services = [ChatManager, createBusService()];
+ },
+ afterEach: function () {
+ // unpatch _.debounce and _.throttle
+ _.debounce = this.underscoreDebounce;
+ _.throttle = this.underscoreThrottle;
+ }
+});
+
+QUnit.test('messaging menu widget: menu with no records', function (assert) {
+ assert.expect(1);
+
+ var messagingMenu = new systray.MessagingMenu();
+ testUtils.addMockEnvironment(messagingMenu, {
+ services: this.services,
+ mockRPC: function (route, args) {
+ if (args.method === 'message_fetch') {
+ return $.when([]);
+ }
+ return this._super.apply(this, arguments);
+ }
+ });
+ messagingMenu.appendTo($('#qunit-fixture'));
+ messagingMenu.$('.dropdown-toggle').click();
+ assert.ok(messagingMenu.$('.o_no_activity').hasClass('o_no_activity'), "should not have instance of widget");
+ messagingMenu.destroy();
+});
+
+QUnit.test('messaging menu widget: messaging menu with 1 record', function (assert) {
+ assert.expect(3);
+ var messagingMenu = new systray.MessagingMenu();
+ testUtils.addMockEnvironment(messagingMenu, {
+ services: this.services,
+ data: this.data,
+ });
+ messagingMenu.appendTo($('#qunit-fixture'));
+
+ messagingMenu.$('.dropdown-toggle').click();
+
+ assert.strictEqual(messagingMenu.$('.o_mail_channel_preview').length, 1,
+ "should display a channel preview");
+ assert.strictEqual(messagingMenu.$('.o_channel_name').text().trim(), "general",
+ "should display correct name of channel in channel preview");
+
+ // remove any space-character inside text
+ var lastMessagePreviewText =
+ messagingMenu.$('.o_last_message_preview').text().replace(/\s/g, "");
+ assert.strictEqual(lastMessagePreviewText,
+ "Me:test",
+ "should display correct last message preview in channel preview");
+
+ messagingMenu.destroy();
+});
+
+QUnit.test('messaging menu widget: no crash when clicking on inbox notification not associated to a document', function (assert) {
+ assert.expect(3);
+
+ var bus = new Bus();
+
+ var messagingMenu = new systray.MessagingMenu();
+ testUtils.addMockEnvironment(messagingMenu, {
+ services: [ChatManager, createBusService(bus)],
+ data: this.data,
+ session: {
+ partner_id: 1,
+ },
+ intercepts: {
+ /**
+ * Simulate action 'mail.mail_channel_action_client_chat'
+ * successfully performed.
+ *
+ * @param {OdooEvent} ev
+ * @param {function} ev.data.on_success called when success action performed
+ */
+ do_action: function (ev) {
+ ev.data.on_success();
+ },
+ },
+ });
+ messagingMenu.appendTo($('#qunit-fixture'));
+
+ // Simulate received needaction message without associated document,
+ // so that we have a message in inbox without a model and a resID
+ var message = {
+ id: 2,
+ author_id: [1, "Me"],
+ body: '<p>test</p>',
+ channel_ids: [],
+ needaction_partner_ids: [1],
+ };
+ var notifications = [
+ [['myDB', 'ir.needaction'], message]
+ ];
+ bus.trigger('notification', notifications);
+
+ // Open messaging menu
+ messagingMenu.$('.dropdown-toggle').click();
+
+ var $firstChannelPreview =
+ messagingMenu.$('.o_mail_channel_preview').first();
+
+ assert.strictEqual($firstChannelPreview.length, 1,
+ "should have at least one channel preview");
+ assert.strictEqual($firstChannelPreview.data('channel_id'),
+ 'channel_inbox',
+ "should be a preview from channel inbox");
+ try {
+ $firstChannelPreview.click();
+ assert.ok(true, "should not have crashed when clicking on needaction preview message");
+ } finally {
+ messagingMenu.destroy();
+ }
+});
+
}); \ No newline at end of file
diff --git a/addons/maintenance/i18n/tr.po b/addons/maintenance/i18n/tr.po
index b14a78028d2..bbac3f16eee 100644
--- a/addons/maintenance/i18n/tr.po
+++ b/addons/maintenance/i18n/tr.po
@@ -16,13 +16,14 @@
# Ayhan KIZILTAN <akiziltan76@hotmail.com>, 2017
# Ramiz Deniz Öner <deniz@denizoner.com>, 2017
# Levent Karakaş <levent@mektup.at>, 2018
+# Umur Akın <umura@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: Levent Karakaş <levent@mektup.at>, 2018\n"
+"Last-Translator: Umur Akın <umura@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"
@@ -155,7 +156,7 @@ msgstr "Hepsi"
#. module: maintenance
#: sql_constraint:maintenance.equipment:0
msgid "Another asset already exists with this serial number!"
-msgstr ""
+msgstr "Başka bir varlık bu seri numarası ile zaten var."
#. module: maintenance
#: model:ir.model.fields,field_description:maintenance.field_maintenance_request__archive
@@ -189,7 +190,7 @@ msgstr "Atanmış"
#. module: maintenance
#: model:ir.model.fields,field_description:maintenance.field_maintenance_equipment__assign_date
msgid "Assigned Date"
-msgstr ""
+msgstr "Atama Tarihi"
#. module: maintenance
#: model:ir.ui.view,arch_db:maintenance.hr_equipment_view_search
@@ -387,6 +388,8 @@ msgid ""
"Email alias for this equipment category. New emails will automatically "
"create new maintenance request for this equipment category."
msgstr ""
+"Bu ekipman kategorisi için eposta takma adı. Yeni epostalar bu ekipman "
+"kategorisi için otomatik olarak bakım talebi oluşturacaklar. "
#. module: maintenance
#: model:ir.model,name:maintenance.model_maintenance_equipment
@@ -401,14 +404,14 @@ msgstr "Ekipman"
#: model:mail.message.subtype,name:maintenance.mt_cat_mat_assign
#: model:mail.message.subtype,name:maintenance.mt_mat_assign
msgid "Equipment Assigned"
-msgstr ""
+msgstr "Atanmış Ekipman"
#. module: maintenance
#: model:ir.actions.act_window,name:maintenance.hr_equipment_category_action
#: model:ir.ui.menu,name:maintenance.menu_maintenance_cat
#: model:ir.ui.view,arch_db:maintenance.hr_equipment_category_view_form
msgid "Equipment Categories"
-msgstr ""
+msgstr "Ekipman Kategorileri"
#. module: maintenance
#: model:ir.model.fields,field_description:maintenance.field_maintenance_equipment__category_id
@@ -418,7 +421,7 @@ msgstr "Ekipman Kategorisi"
#. module: maintenance
#: model:res.groups,name:maintenance.group_equipment_manager
msgid "Equipment Manager"
-msgstr ""
+msgstr "Ekipman Yöneticisi"
#. module: maintenance
#: model:ir.model.fields,field_description:maintenance.field_maintenance_equipment__name
@@ -451,7 +454,7 @@ msgstr "Bakım Kanalında Katlanmış"
#: model:ir.actions.act_window,help:maintenance.maintenance_request_action_reports
msgid ""
"Follow the process of the request and communicate with the collaborator."
-msgstr ""
+msgstr "Gerekli işlemleri takip edin ve çalışanlarla iletişimde olun."
#. module: maintenance
#: model:ir.ui.view,arch_db:maintenance.hr_equipment_request_view_search
@@ -500,12 +503,12 @@ msgstr "Devam Eden"
#. module: maintenance
#: model:maintenance.team,name:maintenance.equipment_team_maintenance
msgid "Internal Maintenance"
-msgstr ""
+msgstr "İç Bakım"
#. module: maintenance
#: model:ir.ui.view,arch_db:maintenance.hr_equipment_request_view_form
msgid "Internal Note ......."
-msgstr ""
+msgstr "İç Not"
#. module: maintenance
#: model:ir.model.fields,field_description:maintenance.field_maintenance_request__kanban_state
@@ -681,7 +684,7 @@ msgstr "Aktivitelerim"
#. module: maintenance
#: model:ir.ui.view,arch_db:maintenance.hr_equipment_view_search
msgid "My Equipments"
-msgstr ""
+msgstr "Ekipmanlarım"
#. module: maintenance
#: model:ir.ui.view,arch_db:maintenance.hr_equipment_request_view_search
@@ -720,27 +723,27 @@ msgstr "Bilgi"
#. module: maintenance
#: model:ir.model.fields,field_description:maintenance.field_maintenance_team__todo_request_count
msgid "Number of Requests"
-msgstr ""
+msgstr "Talep Sayısı"
#. module: maintenance
#: model:ir.model.fields,field_description:maintenance.field_maintenance_team__todo_request_count_block
msgid "Number of Requests Blocked"
-msgstr ""
+msgstr "Engellenen İstek Sayısı"
#. module: maintenance
#: model:ir.model.fields,field_description:maintenance.field_maintenance_team__todo_request_count_date
msgid "Number of Requests Scheduled"
-msgstr ""
+msgstr "Planlanan İstek Sayısı"
#. module: maintenance
#: model:ir.model.fields,field_description:maintenance.field_maintenance_team__todo_request_count_unscheduled
msgid "Number of Requests Unscheduled"
-msgstr ""
+msgstr "Planlanmayan İstek Sayısı"
#. module: maintenance
#: model:ir.model.fields,field_description:maintenance.field_maintenance_team__todo_request_count_high_priority
msgid "Number of Requests in High Priority"
-msgstr ""
+msgstr "Yüksek Öncelikli İhtiyaç Sayısı"
#. module: maintenance
#: model:ir.model.fields,help:maintenance.field_maintenance_equipment_category__alias_force_thread_id
@@ -892,7 +895,7 @@ msgstr "Talep Eden :"
#. module: maintenance
#: model:ir.model.fields,field_description:maintenance.field_maintenance_team__todo_request_ids
msgid "Requests"
-msgstr ""
+msgstr "Talepler"
#. module: maintenance
#: model:ir.model.fields,field_description:maintenance.field_maintenance_equipment_category__technician_user_id
@@ -1047,7 +1050,7 @@ msgstr ""
#. module: maintenance
#: model:res.groups,comment:maintenance.group_equipment_manager
msgid "The user will be able to manage equipments."
-msgstr ""
+msgstr "Kullanıcı, ekipmanları yönetebilecek."
#. module: maintenance
#: model:ir.ui.view,arch_db:maintenance.maintenance_team_kanban
@@ -1134,6 +1137,8 @@ msgid ""
"You cannot delete an equipment category containing equipments or maintenance"
" requests."
msgstr ""
+"Ekipman içeren ya da bakım talebi olan bir ekipman kategorisini "
+"silemezsiniz."
#. module: maintenance
#: model:ir.ui.view,arch_db:maintenance.hr_equipment_view_form
diff --git a/addons/mass_mailing/i18n/tr.po b/addons/mass_mailing/i18n/tr.po
index 7bb803e7f05..6df27d5b6b1 100644
--- a/addons/mass_mailing/i18n/tr.po
+++ b/addons/mass_mailing/i18n/tr.po
@@ -17,13 +17,14 @@
# UNIBRAVO SOFTWARE <unibravo@gmail.com>, 2017
# Güven YILMAZ <guvenyilmaz@outlook.com.tr>, 2017
# İlknur Püskül <ilknurpuskull@gmail.com>, 2017
+# Umur Akın <umura@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: İlknur Püskül <ilknurpuskull@gmail.com>, 2017\n"
+"Last-Translator: Umur Akın <umura@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"
@@ -219,7 +220,7 @@ msgstr ""
#. module: mass_mailing
#: model:ir.ui.view,arch_db:mass_mailing.s_mail_block_three_cols
msgid "A short description"
-msgstr ""
+msgstr "Kısa tanımlama"
#. module: mass_mailing
#: model:ir.ui.view,arch_db:mass_mailing.s_mail_block_text_image
@@ -548,7 +549,7 @@ msgstr "E-posta gönderilmiyor önde gelen teknik hata tarihi"
#. module: mass_mailing
#: model:ir.model.fields,help:mass_mailing.field_mail_mail_statistics__clicked
msgid "Date when customer clicked on at least one tracked link"
-msgstr ""
+msgstr "Müşterini en az bir izlenen bağlantıyı tıkladığı tarih"
#. module: mass_mailing
#: model:ir.model.fields,help:mass_mailing.field_mail_mail_statistics__scheduled
@@ -1509,7 +1510,7 @@ msgstr "Aylık Planlanan"
#. module: mass_mailing
#: model:ir.model.fields,field_description:mass_mailing.field_mail_mass_mailing__next_departure
msgid "Scheduled date"
-msgstr ""
+msgstr "Planlanan tarih"
#. module: mass_mailing
#: model:ir.ui.view,arch_db:mass_mailing.email_designer_snippets
@@ -1654,7 +1655,7 @@ msgstr "İstatistikler"
#: model:ir.actions.act_window,name:mass_mailing.action_view_mass_mailing_links_statistics
#: model:ir.actions.act_window,name:mass_mailing.dropdb snipp
msgid "Statistics of Clicks"
-msgstr ""
+msgstr "Tıklanma İstatistikleri"
#. module: mass_mailing
#: model:ir.model.fields,field_description:mass_mailing.field_mail_mass_mailing__state
diff --git a/addons/mass_mailing/i18n/zh_CN.po b/addons/mass_mailing/i18n/zh_CN.po
index 6116a01beb5..6badf4f3721 100644
--- a/addons/mass_mailing/i18n/zh_CN.po
+++ b/addons/mass_mailing/i18n/zh_CN.po
@@ -19,13 +19,14 @@
# e2f <projects@e2f.com>, 2018
# liAnGjiA <liangjia@qq.com>, 2018
# e2f_cn c7 <e2f_cn_c7@outlook.com>, 2018
+# Maie <m@maie.name>, 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: e2f_cn c7 <e2f_cn_c7@outlook.com>, 2018\n"
+"Last-Translator: Maie <m@maie.name>, 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"
@@ -245,7 +246,7 @@ msgstr "有效"
#. module: mass_mailing
#: model:ir.actions.act_window,help:mass_mailing.mass_mailing_tag_action
msgid "Add a new tag"
-msgstr ""
+msgstr "添加一个新标签"
#. module: mass_mailing
#: model:ir.model.fields,field_description:mass_mailing.field_mail_mass_mailing_campaign__unique_ab_testing
@@ -457,7 +458,7 @@ msgstr ""
#. module: mass_mailing
#: model:ir.actions.act_window,help:mass_mailing.action_view_mass_mailing_contacts
msgid "Create a contact in your address book"
-msgstr ""
+msgstr "在你的地址簿中创建一个联系人"
#. module: mass_mailing
#: model:ir.actions.act_window,help:mass_mailing.action_create_ab_mass_mailings_from_campaign
diff --git a/addons/mrp/i18n/tr.po b/addons/mrp/i18n/tr.po
index 0baf4258661..accf6afbdc9 100644
--- a/addons/mrp/i18n/tr.po
+++ b/addons/mrp/i18n/tr.po
@@ -7,13 +7,14 @@
# Ediz Duman <neps1192@gmail.com>, 2017
# Martin Trigaux, 2017
# Güven YILMAZ <guvenyilmaz@outlook.com.tr>, 2017
+# Umur Akın <umura@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: Güven YILMAZ <guvenyilmaz@outlook.com.tr>, 2017\n"
+"Last-Translator: Umur Akın <umura@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"
@@ -1229,6 +1230,8 @@ msgid ""
" the raw materials of that product will be added to the\n"
" manufacturing order of the final product."
msgstr ""
+"Eğer ürün tam olarak bitmemişse: bileşen olarak bu ürünü içeren üretim emri "
+"işlemi, bu ürünün hamaddesi son ürünün üretim siparişine eklenecektir. "
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.mrp_workcenter_kanban
@@ -1255,7 +1258,7 @@ msgstr "Bilgilendirici, eşleştirmede kullanılmaz"
#: code:addons/mrp/models/mrp_unbuild.py:210
#, python-format
msgid "Insufficient Quantity"
-msgstr ""
+msgstr "Yetersiz Miktar"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.mrp_message_view_form
@@ -1299,7 +1302,7 @@ msgstr "Bu genel belgemi"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_mrp_workorder__is_user_working
msgid "Is the Current User Working"
-msgstr ""
+msgstr "Mevctu Kullanıcı Çalışıyor Mu?"
#. module: mrp
#: code:addons/mrp/models/mrp_workcenter.py:162
@@ -1314,6 +1317,9 @@ msgid ""
"Set a location if you produce at a fixed location. This can be a partner "
"location if you subcontract the manufacturing operations."
msgstr ""
+"Hammaddeleri bulduğunuz konumda üretiyorsanız boş bırakın. Sabit konumda "
+"üretiyorsanız konum ekleyin. Eğer alt yüklenici ile üretim operasyonu "
+"yapıyorsanız partnerinizin konumunu ekleyebilirsin."
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.view_mrp_bom_filter selection:mrp.bom,type:0
@@ -2600,6 +2606,9 @@ msgid ""
"to produce after the quantity set in 'Quantity To Process' has been "
"produced."
msgstr ""
+"Önceki iş emrinden sonra, sıradaki iş emrini planlamak için ayarınızı "
+"'hayır' olarak yapın. 'İşlenecek Miktar' dan üretim yapmak için ayarınızı "
+"'evet' olarak yapın."
#. module: mrp
#: selection:mrp.routing.workcenter,time_mode:0
@@ -2677,7 +2686,7 @@ msgstr "Stok Hareketi"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_mrp_production__move_dest_ids
msgid "Stock Movements of Produced Goods"
-msgstr ""
+msgstr "Üretilen Malların Stok Hareketi"
#. module: mrp
#: model:ir.actions.act_window,name:mrp.action_mrp_unbuild_moves
@@ -2790,7 +2799,7 @@ msgstr "1. operasyonun bileşenleri"
#. module: mrp
#: model:ir.model.fields,help:mrp.field_mrp_document__res_model
msgid "The database object this attachment will be attached to."
-msgstr ""
+msgstr "Bu eki içeren veritabanı eklenecektir."
#. module: mrp
#: model:ir.model.fields,help:mrp.field_mrp_production__routing_id
@@ -2859,7 +2868,7 @@ msgstr "Üretilecek miktar pozitif olmalıdır!"
#. module: mrp
#: model:ir.model.fields,help:mrp.field_mrp_document__res_id
msgid "The record id this is attached to."
-msgstr ""
+msgstr "Kayıtlı ID eklenmiştir."
#. module: mrp
#: model:ir.model.fields,help:mrp.field_mrp_routing_workcenter__routing_id
@@ -2868,6 +2877,8 @@ msgid ""
"create work orders afterwards which alters the execution of the "
"manufacturing order."
msgstr ""
+"Rota, kullanılan tüm Çalışma Merkezlerini ve ne kadar kullanıldığını içerir."
+" Bu daha sonra üretim emrini değiştirecek işler oluşturacaktır."
#. module: mrp
#: code:addons/mrp/models/procurement.py:20
@@ -3053,7 +3064,7 @@ msgstr "Toplam Çalışan Siparişler"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.mrp_production_workcenter_form_view_inherit
msgid "Total duration"
-msgstr ""
+msgstr "Toplam Süre"
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.mrp_production_form_view
@@ -3142,6 +3153,7 @@ msgid ""
"Unlock the manufacturing order to correct what has been consumed or "
"produced."
msgstr ""
+"Üretilen ya da tüketilen şeyi düzeltmek için üretim emrinin kilidini aç."
#. module: mrp
#: model:ir.ui.view,arch_db:mrp.mrp_production_form_view
@@ -3188,7 +3200,7 @@ msgstr ""
#: model:ir.ui.view,arch_db:mrp.product_product_form_view_bom_button
#: model:ir.ui.view,arch_db:mrp.product_template_form_view_bom_button
msgid "Used In"
-msgstr ""
+msgstr "Burada Kullanıldı"
#. module: mrp
#: model:ir.model.fields,field_description:mrp.field_mrp_workcenter_productivity__user_id
@@ -3520,6 +3532,8 @@ msgid ""
"You can either upload a file from your computer or copy/paste an internet "
"link to your file."
msgstr ""
+"Bilgisayarınızdan bir dosya yükleyebilir ya da dosyanıza internet "
+"bağlantınızı kopyalayıp yapıştırabilirsiniz."
#. module: mrp
#: code:addons/mrp/models/mrp_production.py:523
@@ -3583,7 +3597,7 @@ msgstr ""
#: code:addons/mrp/models/mrp_unbuild.py:93
#, python-format
msgid "You cannot unbuild a undone manufacturing order."
-msgstr ""
+msgstr "Yapılmamış bir üretim emri oluşturamazsınız."
#. module: mrp
#: code:addons/mrp/wizard/change_production_qty.py:46
diff --git a/addons/mrp/models/mrp_production.py b/addons/mrp/models/mrp_production.py
index 337a7798ad0..aee988d09f8 100644
--- a/addons/mrp/models/mrp_production.py
+++ b/addons/mrp/models/mrp_production.py
@@ -388,7 +388,7 @@ class MrpProduction(models.Model):
source_location = routing.location_id
else:
source_location = self.location_src_id
- original_quantity = self.product_qty - self.qty_produced
+ original_quantity = (self.product_qty - self.qty_produced) or 1.0
data = {
'sequence': bom_line.sequence,
'name': self.name,
diff --git a/addons/mrp/report/mrp_report_bom_structure.py b/addons/mrp/report/mrp_report_bom_structure.py
index f60c0693ff4..03d193cb7b5 100644
--- a/addons/mrp/report/mrp_report_bom_structure.py
+++ b/addons/mrp/report/mrp_report_bom_structure.py
@@ -120,9 +120,9 @@ class ReportBomStructure(models.AbstractModel):
price = line.product_id.uom_id._compute_price(line.product_id.standard_price, line.product_uom_id) * line_quantity
if line.child_bom_id:
factor = line.product_uom_id._compute_quantity(line_quantity, line.child_bom_id.product_uom_id) * line.child_bom_id.product_qty
- total = self._get_price(line.child_bom_id, factor)
+ sub_total = self._get_price(line.child_bom_id, factor)
else:
- total = price
+ sub_total = price
components.append({
'prod_id': line.product_id.id,
'prod_name': line.product_id.display_name,
@@ -132,11 +132,11 @@ class ReportBomStructure(models.AbstractModel):
'parent_id': bom.id,
'line_id': line.id,
'level': level or 0,
- 'total': total,
+ 'total': sub_total,
'child_bom': line.child_bom_id.id,
'phantom_bom': line.child_bom_id and line.child_bom_id.type == 'phantom' or False,
})
- total += total
+ total += sub_total
return components, total
def _get_operation_line(self, routing, qty, level):
diff --git a/addons/mrp/wizard/change_production_qty.py b/addons/mrp/wizard/change_production_qty.py
index 5c3aeb07dd2..eac470a8be5 100644
--- a/addons/mrp/wizard/change_production_qty.py
+++ b/addons/mrp/wizard/change_production_qty.py
@@ -43,7 +43,8 @@ class ChangeProductionQty(models.TransientModel):
production = wizard.mo_id
produced = sum(production.move_finished_ids.filtered(lambda m: m.product_id == production.product_id).mapped('quantity_done'))
if wizard.product_qty < produced:
- raise UserError(_("You have already processed %d. Please input a quantity higher than %d ")%(produced, produced))
+ format_qty = '%.{precision}f'.format(precision=precision)
+ raise UserError(_("You have already processed %s. Please input a quantity higher than %s ") % (format_qty % produced, format_qty % produced))
production.write({'product_qty': wizard.product_qty})
done_moves = production.move_finished_ids.filtered(lambda x: x.state == 'done' and x.product_id == production.product_id)
qty_produced = production.product_id.uom_id._compute_quantity(sum(done_moves.mapped('product_qty')), production.product_uom_id)
diff --git a/addons/note/i18n/zh_CN.po b/addons/note/i18n/zh_CN.po
index d779217fa4f..638ff66582c 100644
--- a/addons/note/i18n/zh_CN.po
+++ b/addons/note/i18n/zh_CN.po
@@ -7,13 +7,14 @@
# liulixia <liu.lixia@elico-corp.com>, 2017
# 卓忆科技 <zhanghao@jointd.com>, 2017
# 老窦 北京 <2662059195@qq.com>, 2017
+# Maie <m@maie.name>, 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: 老窦 北京 <2662059195@qq.com>, 2017\n"
+"Last-Translator: Maie <m@maie.name>, 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"
@@ -35,7 +36,7 @@ msgstr ""
#. module: note
#: model:ir.actions.act_window,help:note.note_tag_action
msgid "Add a new tag"
-msgstr ""
+msgstr "添加一个新标签"
#. module: note
#: model:ir.ui.view,arch_db:note.view_note_note_filter
diff --git a/addons/pad_project/i18n/tr.po b/addons/pad_project/i18n/tr.po
index 4639f6e8dfd..c23adbe0106 100644
--- a/addons/pad_project/i18n/tr.po
+++ b/addons/pad_project/i18n/tr.po
@@ -4,14 +4,16 @@
#
# Translators:
# Ayhan KIZILTAN <akiziltan76@hotmail.com>, 2017
+# Gökhan Erdoğdu <gokhan.erdogdu@mechsoft.com.tr>, 2017
# Murat Kaplan <muratk@projetgrup.com>, 2017
+# Umur Akın <umura@projetgrup.com>, 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: Murat Kaplan <muratk@projetgrup.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: Umur Akın <umura@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"
@@ -20,7 +22,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: pad_project
-#: model:ir.model.fields,field_description:pad_project.field_project_task_description_pad
+#: model:ir.model.fields,field_description:pad_project.field_project_task__description_pad
msgid "Pad URL"
msgstr "PAD adresi"
@@ -35,17 +37,17 @@ msgid "Task"
msgstr "Görev"
#. module: pad_project
-#: model:ir.model.fields,field_description:pad_project.field_project_task_use_pad
+#: model:ir.model.fields,field_description:pad_project.field_project_task__use_pad
msgid "Use collaborative pad"
-msgstr ""
+msgstr "Ortak çalışma pedi kullan"
#. module: pad_project
-#: model:ir.model.fields,help:pad_project.field_project_project_use_pads
-#: model:ir.model.fields,help:pad_project.field_project_task_use_pad
+#: model:ir.model.fields,help:pad_project.field_project_project__use_pads
+#: model:ir.model.fields,help:pad_project.field_project_task__use_pad
msgid "Use collaborative pad for the tasks on this project."
-msgstr ""
+msgstr "Bu projedeki görevler için ortak çalışma pedi kullan"
#. module: pad_project
-#: model:ir.model.fields,field_description:pad_project.field_project_project_use_pads
+#: model:ir.model.fields,field_description:pad_project.field_project_project__use_pads
msgid "Use collaborative pads"
msgstr ""
diff --git a/addons/payment/i18n/fr.po b/addons/payment/i18n/fr.po
index 7ebb308a396..2333f80df5f 100644
--- a/addons/payment/i18n/fr.po
+++ b/addons/payment/i18n/fr.po
@@ -29,13 +29,14 @@
# fr trans <e2ftrans1@yahoo.com>, 2017
# e2f <projects@e2f.com>, 2018
# Olivier Dony <odo@odoo.com>, 2018
+# Cécile Collart <cco@odoo.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: Olivier Dony <odo@odoo.com>, 2018\n"
+"Last-Translator: Cécile Collart <cco@odoo.com>, 2018\n"
"Language-Team: French (https://www.transifex.com/odoo/teams/41243/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -1077,6 +1078,7 @@ msgstr "Veuillez sélectionner une méthode de paiement."
#, python-format
msgid "Please select the option to add a new payment method."
msgstr ""
+"Veuillez sélectionner l'option d'ajouter une nouvelle méthode de paiement."
#. module: payment
#: model:payment.acquirer,post_msg:payment.payment_acquirer_custom
diff --git a/addons/payment/i18n/pt_BR.po b/addons/payment/i18n/pt_BR.po
index 1c833e2d527..3fafeafcf3a 100644
--- a/addons/payment/i18n/pt_BR.po
+++ b/addons/payment/i18n/pt_BR.po
@@ -13,13 +13,14 @@
# Fábio Novais <fabionovais@aptu.com.br>, 2017
# Marcos Abreu <marcoos.abreu@gmail.com>, 2017
# Caio Leonardo Mendes de Sousa <caleozao@gmail.com>, 2017
+# Diego Bittencourt <diegomb86@gmail.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: Caio Leonardo Mendes de Sousa <caleozao@gmail.com>, 2017\n"
+"Last-Translator: Diego Bittencourt <diegomb86@gmail.com>, 2018\n"
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/odoo/teams/41243/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -1444,7 +1445,7 @@ msgstr ""
#. module: payment
#: model:ir.ui.view,arch_db:payment.payment_confirmation_status
msgid "Your payment has been authorized."
-msgstr ""
+msgstr "Seu pagamento foi autorizado."
#. module: payment
#: model:ir.ui.view,arch_db:payment.transaction_form
diff --git a/addons/payment/i18n/tr.po b/addons/payment/i18n/tr.po
index 8861f5568e4..2f65714d7fe 100644
--- a/addons/payment/i18n/tr.po
+++ b/addons/payment/i18n/tr.po
@@ -217,7 +217,7 @@ msgstr "Alıcının Referansı"
#. module: payment
#: model:ir.model.fields,field_description:payment.field_payment_icon__acquirer_ids
msgid "Acquirers"
-msgstr ""
+msgstr "Alıcılar"
#. module: payment
#: model:ir.ui.view,arch_db:payment.payment_icon_form_view
@@ -266,7 +266,7 @@ msgstr "Tutar"
#. module: payment
#: model:ir.model.fields,field_description:payment.field_payment_acquirer__authorize_implemented
msgid "Authorize Mechanism Supported"
-msgstr ""
+msgstr "Yetkili Mekanizma Desteklendi"
#. module: payment
#: model:payment.acquirer,name:payment.payment_acquirer_authorize
@@ -277,7 +277,7 @@ msgstr "Authorize.Net"
#. module: payment
#: selection:payment.transaction,state:0
msgid "Authorized"
-msgstr ""
+msgstr "Yetkili"
#. module: payment
#: model:payment.acquirer,post_msg:payment.payment_acquirer_custom
@@ -294,12 +294,12 @@ msgstr "Buckaroo"
#. module: payment
#: model:ir.model.fields,field_description:payment.field_payment_transaction__callback_res_id
msgid "Callback Document ID"
-msgstr ""
+msgstr "Dokuman ID'sini Geri Çağır"
#. module: payment
#: model:ir.model.fields,field_description:payment.field_payment_transaction__callback_model_id
msgid "Callback Document Model"
-msgstr ""
+msgstr "Geri Arama Dokuman Modeli"
#. module: payment
#: model:ir.model.fields,field_description:payment.field_payment_transaction__callback_hash
@@ -309,7 +309,7 @@ msgstr ""
#. module: payment
#: model:ir.model.fields,field_description:payment.field_payment_transaction__callback_method
msgid "Callback Method"
-msgstr ""
+msgstr "Geri Çağırma Yöntemi"
#. module: payment
#. openerp-web
@@ -333,7 +333,7 @@ msgstr "İptal Edildi"
#: code:addons/payment/static/src/js/payment_form.js:189
#, python-format
msgid "Cannot set-up the payment"
-msgstr ""
+msgstr "Ödeme ayarlanamadı."
#. module: payment
#: code:addons/payment/controllers/portal.py:110
@@ -344,17 +344,17 @@ msgstr ""
#. module: payment
#: model:ir.model.fields,field_description:payment.field_payment_acquirer__capture_manually
msgid "Capture Amount Manually"
-msgstr ""
+msgstr "Miktarı Manuel Yakala"
#. module: payment
#: model:ir.ui.view,arch_db:payment.transaction_form
msgid "Capture Transaction"
-msgstr ""
+msgstr "İşlem Yakala"
#. module: payment
#: model:ir.model.fields,help:payment.field_payment_acquirer__capture_manually
msgid "Capture the amount from Odoo, when the delivery is completed."
-msgstr ""
+msgstr "Teslimat tamamlandığında, Odoo'dan miktarı yakalayın."
#. module: payment
#: model:ir.model.fields,field_description:payment.field_payment_transaction__partner_city
@@ -388,7 +388,7 @@ msgstr "Yapılandırma"
#: code:addons/payment/static/src/js/payment_form.js:358
#, python-format
msgid "Confirm Deletion"
-msgstr ""
+msgstr "Silme İşlemini Onayla"
#. module: payment
#: model:ir.model,name:payment.model_res_partner
@@ -398,7 +398,7 @@ msgstr "Kontak"
#. module: payment
#: model:ir.model.fields,field_description:payment.field_payment_acquirer__module_id
msgid "Corresponding Module"
-msgstr ""
+msgstr "İlgili Modül"
#. module: payment
#: model:ir.model.fields,field_description:payment.field_res_partner__payment_token_count
@@ -551,7 +551,7 @@ msgstr "Hata Mesajı"
#: code:addons/payment/static/src/js/payment_form.js:423
#, python-format
msgid "Error: "
-msgstr ""
+msgstr "Hata:"
#. module: payment
#: model:ir.model.fields,field_description:payment.field_payment_transaction__fees
@@ -561,7 +561,7 @@ msgstr "Ücret"
#. module: payment
#: model:ir.model.fields,field_description:payment.field_payment_acquirer__fees_implemented
msgid "Fees Computation Supported"
-msgstr ""
+msgstr "Ücret Hesaplama Desteği"
#. module: payment
#: model:ir.model.fields,help:payment.field_payment_transaction__fees
@@ -598,7 +598,7 @@ msgstr "Düğme Form Şablonu"
#. module: payment
#: selection:payment.transaction,type:0
msgid "Form with tokenization"
-msgstr ""
+msgstr "Fiş ile form"
#. module: payment
#: model:ir.ui.view,arch_db:payment.confirm
@@ -629,6 +629,7 @@ msgid ""
"If you leave it empty, the payment acquirer will be available for all the "
"countries."
msgstr ""
+"Eğer boş bırakırsanız, ödeme alıcısı tüm ülkeler için uygun olacaktır."
#. module: payment
#: model:ir.model.fields,field_description:payment.field_payment_acquirer__image
@@ -644,7 +645,7 @@ msgstr ""
#. module: payment
#: model:payment.acquirer,name:payment.payment_acquirer_ogone
msgid "Ingenico"
-msgstr ""
+msgstr "Ingenico"
#. module: payment
#: model:ir.ui.view,arch_db:payment.acquirer_form
@@ -655,7 +656,7 @@ msgstr "Kur"
#. module: payment
#: model:ir.model.fields,field_description:payment.field_payment_acquirer__module_state
msgid "Installation State"
-msgstr ""
+msgstr "Yükleme Durumu"
#. module: payment
#: model:ir.model.fields,help:payment.field_payment_transaction__reference
@@ -694,12 +695,12 @@ msgstr "Son Güncelleme"
#. module: payment
#: selection:payment.acquirer,save_token:0
msgid "Let the customer decide"
-msgstr ""
+msgstr "Müşteri kararına izin ver."
#. module: payment
#: model:ir.model.fields,help:payment.field_payment_icon__acquirer_ids
msgid "List of Acquirers supporting this payment icon."
-msgstr ""
+msgstr "Bu ödeme ikonunu destekleyen alıcıların listesi."
#. module: payment
#: model:ir.model.fields,help:payment.field_payment_acquirer__website_published
@@ -709,7 +710,7 @@ msgstr "Bu ödeme alıcısını kullanılabilir yap (Müşteri faturaları, vb.)
#. module: payment
#: model:ir.ui.view,arch_db:payment.pay_methods
msgid "Manage your Payment Methods"
-msgstr ""
+msgstr "Ödeme Yöntemlerinizi yönetin"
#. module: payment
#: model:ir.ui.view,arch_db:payment.pay_meth_link
@@ -790,7 +791,7 @@ msgstr "Mesajlar"
#: code:addons/payment/models/payment_acquirer.py:389
#, python-format
msgid "Missing partner reference when trying to create a new payment token"
-msgstr ""
+msgstr "Yeni ödeme fişi oluşturmaya çalışırken, kaçan partner referansı"
#. module: payment
#: model:ir.model.fields,field_description:payment.field_payment_acquirer__name
@@ -805,7 +806,7 @@ msgstr "İsim"
#. module: payment
#: model:ir.model.fields,help:payment.field_payment_token__name
msgid "Name of the payment token"
-msgstr ""
+msgstr "Ödeme fişinin adı"
#. module: payment
#: selection:payment.acquirer,save_token:0
@@ -823,7 +824,7 @@ msgstr ""
#: code:addons/payment/static/src/js/payment_form.js:309
#, python-format
msgid "No payment method selected"
-msgstr ""
+msgstr "Ödeme yöntemi seçilmedi."
#. module: payment
#: model:ir.model.fields,help:payment.field_account_payment__payment_token_id
@@ -838,6 +839,8 @@ msgid ""
"Note: Subscriptions does not take this field in account, it uses server to "
"server by default."
msgstr ""
+"Not: Abonelikler hesapta bu alanı dikkate almaz, o varsayılan sunucuyu "
+"kullanır."
#. module: payment
#: selection:payment.acquirer,provider:0
@@ -855,13 +858,13 @@ msgstr "Tamam"
#: code:addons/payment/models/payment_acquirer.py:754
#, python-format
msgid "Only transactions in the Authorized status can be captured."
-msgstr ""
+msgstr "Sadece Yetkili durumundaki işlemler yakalanabilir."
#. module: payment
#: code:addons/payment/models/payment_acquirer.py:761
#, python-format
msgid "Only transactions in the Authorized status can be voided."
-msgstr ""
+msgstr "Sadece Yetkili durumundaki işlemler iptal edilebilir."
#. module: payment
#: model:ir.model.fields,field_description:payment.field_payment_token__partner_id
@@ -877,7 +880,7 @@ msgstr "İş Ortağı Adı"
#: model:payment.acquirer,name:payment.payment_acquirer_payu
#: selection:payment.acquirer,provider:0
msgid "PayUmoney"
-msgstr ""
+msgstr "PayUmoney"
#. module: payment
#: model:ir.ui.view,arch_db:payment.confirm
@@ -901,13 +904,13 @@ msgstr "Ödeme Alıcısı"
#. module: payment
#: model:ir.model.fields,field_description:payment.field_payment_acquirer__payment_flow
msgid "Payment Flow"
-msgstr ""
+msgstr "Ödeme Akışı"
#. module: payment
#: model:ir.model,name:payment.model_payment_icon
#: model:ir.ui.view,arch_db:payment.payment_icon_form_view
msgid "Payment Icon"
-msgstr ""
+msgstr "Ödeme İkonu"
#. module: payment
#: model:ir.actions.act_window,name:payment.action_payment_icon
@@ -958,7 +961,7 @@ msgstr "Ödeme İşlemleri"
#. module: payment
#: selection:payment.acquirer,payment_flow:0
msgid "Payment from Odoo"
-msgstr ""
+msgstr "Odoo'dan Ödeme"
#. module: payment
#: code:addons/payment/models/account_payment.py:59
@@ -991,6 +994,14 @@ msgid ""
" reconcile the bank statement line with this temporary transfer account. Use reconciliation\n"
" templates to do it in one-click."
msgstr ""
+"Ödemeler bu yevmiyeye kaydedilecektir. Eğer ödemenizi direk banka "
+"hesabınızdan yaparsanız, banka hesabınızı seçin. Eğer ödemenizi birçok işlem"
+" için mevduata alıyorsanız, banka uzlaştırması kolayca yönetmek için özel "
+"bir ödeme yevmiyesi oluşturun. Defterinizin geçici transfer hesabında tutun "
+"(ödeme yevmiyesi oluşturduğunuzda otomatik olarak oluşur). Daha sonra ödeme "
+"alıcısı tarafından banka hesabınıza ödemeyi aldığınızda, banka hesap özetini"
+" geçici transfer hesabı ile uzlaştırın. Bir tık ile uzlaştırma şablonunu "
+"kullanarak bu işlemi yapın."
#. module: payment
#: model:payment.acquirer,name:payment.payment_acquirer_paypal
@@ -1030,24 +1041,24 @@ msgstr "Lütfen bir ödeme yöntemi seçin."
#: code:addons/payment/static/src/js/payment_form.js:310
#, python-format
msgid "Please select the option to add a new payment method."
-msgstr ""
+msgstr "Yeni ödeme yöntemi ekleme için lütfen seçenekleri seçin."
#. module: payment
#: model:payment.acquirer,post_msg:payment.payment_acquirer_custom
#: model:payment.acquirer,post_msg:payment.payment_acquirer_transfer
msgid "Please use the following transfer details"
-msgstr ""
+msgstr "Lütfen devam eden transfer detaylarını kullanın."
#. module: payment
#: model:payment.acquirer,post_msg:payment.payment_acquirer_custom
#: model:payment.acquirer,post_msg:payment.payment_acquirer_transfer
msgid "Please use the order name as communication reference."
-msgstr ""
+msgstr "Lütfen iletişim referansı olarak sipariş adı kullanın."
#. module: payment
#: model:ir.ui.view,arch_db:payment.confirm
msgid "Processed by"
-msgstr ""
+msgstr "Tarafından işlenen "
#. module: payment
#: selection:payment.acquirer,environment:0
@@ -1064,7 +1075,7 @@ msgstr "Sağlayıcı"
#. module: payment
#: selection:payment.acquirer,payment_flow:0
msgid "Redirection to the acquirer website"
-msgstr ""
+msgstr "Alıcı websitesine yönlendir"
#. module: payment
#: model:ir.model.fields,field_description:payment.field_payment_transaction__reference
@@ -1080,12 +1091,12 @@ msgstr "Alıcı veritabanında tutulan TX referansı"
#. module: payment
#: selection:payment.transaction,state:0
msgid "Refunded"
-msgstr ""
+msgstr "İade Edildi"
#. module: payment
#: selection:payment.transaction,state:0
msgid "Refunding"
-msgstr ""
+msgstr "İade Etme"
#. module: payment
#: constraint:payment.acquirer:0
@@ -1100,12 +1111,12 @@ msgstr "S2S Form Şablonu"
#. module: payment
#: model:ir.model.fields,field_description:payment.field_payment_acquirer__save_token
msgid "Save Cards"
-msgstr ""
+msgstr "Kartları Kaydet"
#. module: payment
#: model:ir.ui.view,arch_db:payment.payment_tokens_list
msgid "Save my payment data"
-msgstr ""
+msgstr "Ödeme bilgilerimi kaydet"
#. module: payment
#: model:ir.actions.act_window,name:payment.payment_token_action
@@ -1116,12 +1127,12 @@ msgstr "Kaydedilen Ödeme Verisi"
#. module: payment
#: model:ir.model.fields,field_description:payment.field_account_payment__payment_token_id
msgid "Saved payment token"
-msgstr ""
+msgstr "Ödeme fişlerimi kaydet"
#. module: payment
#: model:ir.model.fields,field_description:payment.field_payment_acquirer__token_implemented
msgid "Saving Card Data supported"
-msgstr ""
+msgstr "Kaydedilen Kart Bilgisi desteklendi"
#. module: payment
#: model:ir.model.fields,field_description:payment.field_payment_acquirer__sequence
@@ -1151,18 +1162,18 @@ msgstr "Sunucudan Sunucuya"
#: code:addons/payment/static/src/js/payment_form.js:301
#, python-format
msgid "Server error"
-msgstr ""
+msgstr "Sunucu hatas"
#. module: payment
#: model:ir.model.fields,field_description:payment.field_payment_token__short_name
msgid "Short name"
-msgstr ""
+msgstr "Kısa ad"
#. module: payment
#: model:payment.acquirer,name:payment.payment_acquirer_sips
#: selection:payment.acquirer,provider:0
msgid "Sips"
-msgstr ""
+msgstr "Sips"
#. module: payment
#: model:ir.model.fields,field_description:payment.field_payment_acquirer__image_small
@@ -1194,12 +1205,12 @@ msgstr "Durum"
#: model:payment.acquirer,name:payment.payment_acquirer_stripe
#: selection:payment.acquirer,provider:0
msgid "Stripe"
-msgstr ""
+msgstr "Stripe"
#. module: payment
#: model:ir.model.fields,field_description:payment.field_payment_acquirer__payment_icon_ids
msgid "Supported Payment Icons"
-msgstr ""
+msgstr "Desteklenen Ödeme İkonları"
#. module: payment
#: model:ir.model.fields,help:payment.field_payment_acquirer__registration_view_template_id
@@ -1242,6 +1253,7 @@ msgid ""
"This field holds the image used for this payment icon, limited to "
"1024x1024px"
msgstr ""
+"Bu alan 1024x1024 px ile sınırlı ödeme ikonu için kullanılan resmi tutar. "
#. module: payment
#: model:ir.model.fields,help:payment.field_payment_acquirer__image
@@ -1259,6 +1271,10 @@ msgid ""
" invoicing), you need it to automatically charge the customer when you issue"
" an invoice."
msgstr ""
+"Bu seçenek müşterilere bir ödeme fişi olarak kredi kartlarını kaydetmelerine"
+" ve onları daha sonraki satın almalarda kullanmalarına izin verir. Eğer "
+"aboneliklerinizi yönetiyorsanız (yinelenen faturalar), bir fatura "
+"düzenlediğiniz zaman, müşteriyi otomatik olarak ücretlendirmeniz gerekir. "
#. module: payment
#: model:ir.model.fields,help:payment.field_payment_acquirer__country_ids
@@ -1273,12 +1289,14 @@ msgid ""
"This template renders the acquirer button with all necessary values.\n"
" It is rendered with qWeb with the following evaluation context:"
msgstr ""
+"Bu şablon, tüm gerekli değerler ile alıcı düğmesine dönüşür. Aşağıdaki "
+"değerlendirme bağlamında qWeb ile oluşturulur:"
#. module: payment
#: model:payment.acquirer,pre_msg:payment.payment_acquirer_transfer
msgid ""
"Transfer information will be provided after choosing the payment aquirer."
-msgstr ""
+msgstr "Ödeme alıcısı seçildikten sonra transfer bilgiler sağlanacaktır."
#. module: payment
#: model:ir.model.fields,field_description:payment.field_payment_transaction__type
@@ -1293,7 +1311,7 @@ msgstr "Geçerlilik Tarihi"
#. module: payment
#: selection:payment.transaction,type:0
msgid "Validation of the bank card"
-msgstr ""
+msgstr "Banka kartının onayı"
#. module: payment
#: model:ir.model.fields,field_description:payment.field_payment_acquirer__fees_dom_var
@@ -1308,7 +1326,7 @@ msgstr "Değişken uluslararası ücretler (yüzde olarak)"
#. module: payment
#: model:ir.model.fields,field_description:payment.field_payment_token__verified
msgid "Verified"
-msgstr ""
+msgstr "Doğrulanmış"
#. module: payment
#: model:ir.model.fields,field_description:payment.field_payment_acquirer__website_published
@@ -1318,7 +1336,7 @@ msgstr "Portalda / Wesitesinde görünür"
#. module: payment
#: model:ir.ui.view,arch_db:payment.transaction_form
msgid "Void Transaction"
-msgstr ""
+msgstr "Geçersiz İşlem"
#. module: payment
#. openerp-web
@@ -1332,7 +1350,7 @@ msgstr "Uyarı!"
#: code:addons/payment/static/src/js/payment_form.js:136
#, python-format
msgid "We are not able to add your payment method at the moment."
-msgstr ""
+msgstr "Şuanda ödeme metodunuzu ekleyemiyoruz."
#. module: payment
#. openerp-web
@@ -1347,28 +1365,28 @@ msgstr ""
#: code:addons/payment/static/src/js/payment_form.js:369
#, python-format
msgid "We are not able to delete your payment method at the moment."
-msgstr ""
+msgstr "Şuanda ödeme metodunuzu silemiyoruz."
#. module: payment
#. openerp-web
#: code:addons/payment/static/src/js/payment_form.js:175
#, python-format
msgid "We are not able to redirect you to the payment form."
-msgstr ""
+msgstr "Ödeme formuna yönlendiremiyoruz."
#. module: payment
#. openerp-web
#: code:addons/payment/static/src/js/payment_form.js:181
#, python-format
msgid "We are not able to redirect you to the payment form.<"
-msgstr ""
+msgstr "Ödeme formuna yönlendiremiyoruz.<"
#. module: payment
#. openerp-web
#: code:addons/payment/static/src/js/payment_form.js:190
#, python-format
msgid "We're unable to process your payment."
-msgstr ""
+msgstr "Ödemenizi işleyemiyoruz."
#. module: payment
#: model:payment.acquirer,name:payment.payment_acquirer_transfer
@@ -1387,6 +1405,7 @@ msgid ""
"You will be redirected to the Adyen website after clicking on the payment "
"button."
msgstr ""
+"Ödeme butonuna tıkladıktan sonra Adyen websitesine yönlendirileceksiniz."
#. module: payment
#: model:payment.acquirer,pre_msg:payment.payment_acquirer_authorize
@@ -1394,6 +1413,8 @@ msgid ""
"You will be redirected to the Authorize website after clicking on the "
"payment button."
msgstr ""
+"Ödeme butonuna tıkladıktan sonra Yetkilendirme websiteye "
+"yönlendirileceksiniz."
#. module: payment
#: model:payment.acquirer,pre_msg:payment.payment_acquirer_buckaroo
@@ -1401,6 +1422,7 @@ msgid ""
"You will be redirected to the Buckaroo website after clicking on the payment"
" button."
msgstr ""
+"Ödeme butonuna tıkladıktan sonra Buckaroo websitesine yönlendirileceksiniz"
#. module: payment
#: model:payment.acquirer,pre_msg:payment.payment_acquirer_ogone
@@ -1408,6 +1430,7 @@ msgid ""
"You will be redirected to the Ingenico website after clicking on the payment"
" button."
msgstr ""
+"Ödeme butonuna tıkladıktan sonra Ingenico websitesine yönlendirileceksiniz."
#. module: payment
#: model:payment.acquirer,pre_msg:payment.payment_acquirer_payu
@@ -1415,6 +1438,8 @@ msgid ""
"You will be redirected to the PayUmoney website after clicking on the "
"payment button."
msgstr ""
+"Ödeme butonuna taıkladıktan sonra PayUmoney websitesine "
+"yönlendirileceksiniz."
#. module: payment
#: model:payment.acquirer,pre_msg:payment.payment_acquirer_paypal
@@ -1422,12 +1447,14 @@ msgid ""
"You will be redirected to the Paypal website after clicking on the payment "
"button."
msgstr ""
+"Ödeme butonuna tıkladıktan sonra PayPal websitesine yönlendirileceksiniz."
#. module: payment
#: model:payment.acquirer,pre_msg:payment.payment_acquirer_sips
msgid ""
"You will be redirected to the Sips website after clicking on payment button."
msgstr ""
+"Ödeme butonuna tıkladıktan sonra Sips websitesine yönlendirileceksiniz."
#. module: payment
#: model:ir.ui.view,arch_db:payment.payment_confirmation_status
@@ -1475,7 +1502,7 @@ msgstr "para birimi: kayıtlardaki işlem para birimi"
#: code:addons/payment/static/src/js/payment_form.js:287
#, python-format
msgid "e.g. Your credit card details are wrong. Please verify."
-msgstr ""
+msgstr "örn: Kredi kartı detaylarınız yanlış. Lütfen doğrulayın."
#. module: payment
#: model:ir.ui.view,arch_db:payment.acquirer_form
diff --git a/addons/payment_adyen/i18n/tr.po b/addons/payment_adyen/i18n/tr.po
index d0a968cd457..257fb6789b4 100644
--- a/addons/payment_adyen/i18n/tr.po
+++ b/addons/payment_adyen/i18n/tr.po
@@ -5,14 +5,15 @@
# Translators:
# Ediz Duman <neps1192@gmail.com>, 2017
# Ahmet Altinisik <aaltinisik@altinkaya.com.tr>, 2017
-# Martin Trigaux <mat@odoo.com>, 2017
+# Martin Trigaux, 2017
+# Umur Akın <umura@projetgrup.com>, 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: Umur Akın <umura@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"
@@ -36,7 +37,7 @@ msgstr "; sipariş bulunmadı"
#: code:addons/payment_adyen/models/payment.py:234
#, python-format
msgid "Adyen: feedback error"
-msgstr ""
+msgstr "Adyen: Geri bildirim hatası"
#. module: payment_adyen
#: code:addons/payment_adyen/models/payment.py:196
@@ -61,10 +62,10 @@ msgstr ""
#. module: payment_adyen
#: model:ir.ui.view,arch_db:payment_adyen.acquirer_form_adyen
msgid "How to configure your Adyen account?"
-msgstr ""
+msgstr "Adyen hesabı nasıl konfigüre edilir?"
#. module: payment_adyen
-#: model:ir.model.fields,field_description:payment_adyen.field_payment_acquirer_adyen_merchant_account
+#: model:ir.model.fields,field_description:payment_adyen.field_payment_acquirer__adyen_merchant_account
msgid "Merchant Account"
msgstr "Ticari Kimliği (Merchant ID)"
@@ -79,11 +80,11 @@ msgid "Payment Transaction"
msgstr "Ödeme İşlemi"
#. module: payment_adyen
-#: model:ir.model.fields,field_description:payment_adyen.field_payment_acquirer_adyen_skin_code
+#: model:ir.model.fields,field_description:payment_adyen.field_payment_acquirer__adyen_skin_code
msgid "Skin Code"
msgstr "Skin Kodu"
#. module: payment_adyen
-#: model:ir.model.fields,field_description:payment_adyen.field_payment_acquirer_adyen_skin_hmac_key
+#: model:ir.model.fields,field_description:payment_adyen.field_payment_acquirer__adyen_skin_hmac_key
msgid "Skin HMAC Key"
msgstr "Skin HMAC Anahtarı"
diff --git a/addons/payment_authorize/i18n/fr.po b/addons/payment_authorize/i18n/fr.po
index f09b9687ff8..5520b96f53b 100644
--- a/addons/payment_authorize/i18n/fr.po
+++ b/addons/payment_authorize/i18n/fr.po
@@ -11,13 +11,14 @@
# Richard Mathot <rim@odoo.com>, 2017
# Florian Hatat, 2017
# e2f <projects@e2f.com>, 2018
+# Cécile Collart <cco@odoo.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: Cécile Collart <cco@odoo.com>, 2018\n"
"Language-Team: French (https://www.transifex.com/odoo/teams/41243/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -97,13 +98,13 @@ msgstr "Transaction"
#: code:addons/payment_authorize/controllers/main.py:63
#, python-format
msgid "Please complete your profile. "
-msgstr ""
+msgstr "Complétez votre profil s'il vous plaît."
#. module: payment_authorize
#: code:addons/payment_authorize/controllers/main.py:58
#, python-format
msgid "Please sign in to complete your profile."
-msgstr ""
+msgstr "Veuillez vous connecter afin de compléter votre profil."
#. module: payment_authorize
#: model:ir.model.fields,field_description:payment_authorize.field_payment_token__provider
diff --git a/addons/payment_authorize/i18n/tr.po b/addons/payment_authorize/i18n/tr.po
index aeda6e41716..f7d758f56d1 100644
--- a/addons/payment_authorize/i18n/tr.po
+++ b/addons/payment_authorize/i18n/tr.po
@@ -7,13 +7,14 @@
# Ediz Duman <neps1192@gmail.com>, 2017
# Hüseyin Cem Aras <hcemaras@gmail.com>, 2017
# Murat Kaplan <muratk@projetgrup.com>, 2017
+# Umur Akın <umura@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: Murat Kaplan <muratk@projetgrup.com>, 2017\n"
+"Last-Translator: Umur Akın <umura@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"
@@ -59,12 +60,12 @@ msgstr "Kart numarası"
#. module: payment_authorize
#: model:ir.ui.view,arch_db:payment_authorize.authorize_s2s_form
msgid "Cardholder name"
-msgstr ""
+msgstr "Kart Sahibinin Adı"
#. module: payment_authorize
#: model:ir.ui.view,arch_db:payment_authorize.authorize_s2s_form
msgid "Expires (MM / YY)"
-msgstr ""
+msgstr "Son Kullanma Tarihi (AA/YY)"
#. module: payment_authorize
#: model:ir.ui.view,arch_db:payment_authorize.acquirer_form_authorize
@@ -78,6 +79,8 @@ msgid ""
"If you don't have any account, please ask your salesperson to update your "
"profile. "
msgstr ""
+"Eğer hiç hesabınız yoksa, lütfen satış personeli ile profilinizi güncellemek"
+" için görüşün."
#. module: payment_authorize
#: model:ir.model,name:payment_authorize.model_payment_acquirer
@@ -93,7 +96,7 @@ msgstr "Ödeme İşlemi"
#: code:addons/payment_authorize/controllers/main.py:63
#, python-format
msgid "Please complete your profile. "
-msgstr ""
+msgstr "Lütfen profilinizi tamamlayınız."
#. module: payment_authorize
#: code:addons/payment_authorize/controllers/main.py:58
@@ -109,7 +112,7 @@ msgstr "Sağlayıcı"
#. module: payment_authorize
#: model:ir.model.fields,field_description:payment_authorize.field_payment_token__save_token
msgid "Save Cards"
-msgstr ""
+msgstr "Kartları Kaydet"
#. module: payment_authorize
#: code:addons/payment_authorize/models/payment.py:383
@@ -142,6 +145,10 @@ msgid ""
" invoicing), you need it to automatically charge the customer when you issue"
" an invoice."
msgstr ""
+"Bu seçenek müşterilere bir ödeme fişi olarak kredi kartlarını kaydetmelerine"
+" ve onları daha sonraki satın almalarda kullanmalarına izin verir. Eğer "
+"aboneliklerinizi yönetiyorsanız (yinelenen faturalar), bir fatura "
+"düzenlediğiniz zaman, müşteriyi otomatik olarak ücretlendirmeniz gerekir. "
#. module: payment_authorize
#: model:ir.model,name:payment_authorize.model_payment_token
diff --git a/addons/payment_ogone/i18n/tr.po b/addons/payment_ogone/i18n/tr.po
index 0949f1a3856..62d6105cf8c 100644
--- a/addons/payment_ogone/i18n/tr.po
+++ b/addons/payment_ogone/i18n/tr.po
@@ -3,17 +3,18 @@
# * payment_ogone
#
# Translators:
-# Martin Trigaux <mat@odoo.com>, 2017
+# Martin Trigaux, 2017
+# Ahmet Altinisik <aaltinisik@altinkaya.com.tr>, 2017
# Ediz Duman <neps1192@gmail.com>, 2017
# Murat Kaplan <muratk@projetgrup.com>, 2017
-# Ahmet Altinisik <aaltinisik@altinkaya.com.tr>, 2017
+# Umur Akın <umura@projetgrup.com>, 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: Ahmet Altinisik <aaltinisik@altinkaya.com.tr>, 2017\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"
"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"
@@ -22,29 +23,29 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: payment_ogone
-#: code:addons/payment_ogone/models/payment.py:240
+#: code:addons/payment_ogone/models/payment.py:242
#, python-format
msgid "; multiple order found"
msgstr "; birden çok emir bulundu"
#. module: payment_ogone
-#: code:addons/payment_ogone/models/payment.py:238
+#: code:addons/payment_ogone/models/payment.py:240
#, python-format
msgid "; no order found"
msgstr "; sipariş bulunmadı"
#. module: payment_ogone
-#: model:ir.model.fields,field_description:payment_ogone.field_payment_acquirer_ogone_userid
+#: model:ir.model.fields,field_description:payment_ogone.field_payment_acquirer__ogone_userid
msgid "API User ID"
msgstr "API Kullanıcı Kimliği (ID)"
#. module: payment_ogone
-#: model:ir.model.fields,field_description:payment_ogone.field_payment_acquirer_ogone_password
+#: model:ir.model.fields,field_description:payment_ogone.field_payment_acquirer__ogone_password
msgid "API User Password"
msgstr "API Kullanıcı Şifresi"
#. module: payment_ogone
-#: model:ir.model.fields,field_description:payment_ogone.field_payment_acquirer_ogone_alias_usage
+#: model:ir.model.fields,field_description:payment_ogone.field_payment_acquirer__ogone_alias_usage
msgid "Alias Usage"
msgstr ""
@@ -61,39 +62,42 @@ msgstr "Kart numarası"
#. module: payment_ogone
#: model:ir.ui.view,arch_db:payment_ogone.ogone_s2s_form
msgid "Cardholder name"
-msgstr ""
+msgstr "Kart Sahibinin Adı"
#. module: payment_ogone
#: model:ir.ui.view,arch_db:payment_ogone.ogone_s2s_form
msgid "Expires (MM / YY)"
-msgstr ""
+msgstr "Son Kullanma Tarihi (AA/YY)"
#. module: payment_ogone
#: model:ir.ui.view,arch_db:payment_ogone.acquirer_form_ogone
msgid "How to configure your Ogone account?"
-msgstr ""
+msgstr "Ogone hesabınız nasıl ayarlanı?"
#. module: payment_ogone
-#: model:ir.model.fields,help:payment_ogone.field_payment_acquirer_ogone_alias_usage
+#: model:ir.model.fields,help:payment_ogone.field_payment_acquirer__ogone_alias_usage
msgid ""
"If you want to use Ogone Aliases, this default Alias Usage will be presented"
" to the customer as the reason you want to keep his payment data"
msgstr ""
+"Ogone Aliases'i kullanmak isterseniz, bu varsayılan Alias ​​Kullanımı, "
+"müşteri ödeme verilerini saklamak isteme nedeni olarak müşteriye "
+"sunulacaktır."
#. module: payment_ogone
-#: code:addons/payment_ogone/models/payment.py:247
+#: code:addons/payment_ogone/models/payment.py:249
#, python-format
msgid "Ogone: invalid shasign, received %s, computed %s, for data %s"
msgstr ""
#. module: payment_ogone
-#: code:addons/payment_ogone/models/payment.py:236
+#: code:addons/payment_ogone/models/payment.py:238
#, python-format
msgid "Ogone: received data for reference %s"
msgstr ""
#. module: payment_ogone
-#: code:addons/payment_ogone/models/payment.py:229
+#: code:addons/payment_ogone/models/payment.py:231
#, python-format
msgid ""
"Ogone: received data with missing reference (%s) or pay_id (%s) or shasign "
@@ -101,7 +105,7 @@ msgid ""
msgstr ""
#. module: payment_ogone
-#: model:ir.model.fields,field_description:payment_ogone.field_payment_acquirer_ogone_pspid
+#: model:ir.model.fields,field_description:payment_ogone.field_payment_acquirer__ogone_pspid
msgid "PSPID"
msgstr "PSPID"
@@ -116,12 +120,12 @@ msgid "Payment Transaction"
msgstr "Ödeme İşlemi"
#. module: payment_ogone
-#: model:ir.model.fields,field_description:payment_ogone.field_payment_acquirer_ogone_shakey_in
+#: model:ir.model.fields,field_description:payment_ogone.field_payment_acquirer__ogone_shakey_in
msgid "SHA Key IN"
msgstr "SHA Giriş Anahtarı"
#. module: payment_ogone
-#: model:ir.model.fields,field_description:payment_ogone.field_payment_acquirer_ogone_shakey_out
+#: model:ir.model.fields,field_description:payment_ogone.field_payment_acquirer__ogone_shakey_out
msgid "SHA Key OUT"
msgstr "SHA Çıkış Anahtarı"
diff --git a/addons/payment_paypal/i18n/tr.po b/addons/payment_paypal/i18n/tr.po
index 6b909710c75..9ed39bc7fd5 100644
--- a/addons/payment_paypal/i18n/tr.po
+++ b/addons/payment_paypal/i18n/tr.po
@@ -3,16 +3,17 @@
# * payment_paypal
#
# Translators:
-# Martin Trigaux <mat@odoo.com>, 2017
+# Martin Trigaux, 2017
# Ediz Duman <neps1192@gmail.com>, 2017
# Murat Kaplan <muratk@projetgrup.com>, 2017
+# Umur Akın <umura@projetgrup.com>, 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: Murat Kaplan <muratk@projetgrup.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: Umur Akın <umura@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"
@@ -21,19 +22,19 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: payment_paypal
-#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer_paypal_api_access_token
+#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer__paypal_api_access_token
msgid "Access Token"
msgstr "Acess Token"
#. module: payment_paypal
-#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer_paypal_api_access_token_validity
+#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer__paypal_api_access_token_validity
msgid "Access Token Validity"
msgstr "Access Token Geçerliliği"
#. module: payment_paypal
#: model:ir.ui.view,arch_db:payment_paypal.acquirer_form_paypal
msgid "How to configure your paypal account?"
-msgstr ""
+msgstr "Paypal hesabınız nasıl ayarlanır?"
#. module: payment_paypal
#: model:ir.model,name:payment_paypal.model_payment_acquirer
@@ -41,11 +42,13 @@ msgid "Payment Acquirer"
msgstr "Ödeme Alıcısı"
#. module: payment_paypal
-#: model:ir.model.fields,help:payment_paypal.field_payment_acquirer_paypal_pdt_token
+#: model:ir.model.fields,help:payment_paypal.field_payment_acquirer__paypal_pdt_token
msgid ""
"Payment Data Transfer allows you to receive notification of successful "
"payments as they are made."
msgstr ""
+"Payment Bilgi Transferi, başarılı ödemeler oldukça sizin bildirim almanıza "
+"izin verir."
#. module: payment_paypal
#: model:ir.model,name:payment_paypal.model_payment_transaction
@@ -53,24 +56,24 @@ msgid "Payment Transaction"
msgstr "Ödeme İşlemi"
#. module: payment_paypal
-#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer_paypal_email_account
+#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer__paypal_email_account
msgid "Paypal Email ID"
msgstr "Paypal Email Kimliği (ID)"
#. module: payment_paypal
-#: model:ir.model.fields,help:payment_paypal.field_payment_acquirer_paypal_use_ipn
+#: model:ir.model.fields,help:payment_paypal.field_payment_acquirer__paypal_use_ipn
msgid "Paypal Instant Payment Notification"
msgstr "Paypal Ödeme Bildirimi"
#. module: payment_paypal
-#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer_paypal_seller_account
+#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer__paypal_seller_account
msgid "Paypal Merchant ID"
msgstr "Paypal Ticari Kimliği (Merchant ID)"
#. module: payment_paypal
-#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer_paypal_pdt_token
+#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer__paypal_pdt_token
msgid "Paypal PDT Token"
-msgstr ""
+msgstr "Paypal PDT Fişi"
#. module: payment_paypal
#: code:addons/payment_paypal/models/payment.py:138
@@ -79,33 +82,33 @@ msgid "Paypal: received data with missing reference (%s) or txn_id (%s)"
msgstr ""
#. module: payment_paypal
-#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer_paypal_api_password
+#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer__paypal_api_password
msgid "Rest API Password"
msgstr "Rest API Şifresi"
#. module: payment_paypal
-#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer_paypal_api_username
+#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer__paypal_api_username
msgid "Rest API Username"
msgstr "Rest API Kullanıcı Adı"
#. module: payment_paypal
-#: model:ir.model.fields,help:payment_paypal.field_payment_acquirer_paypal_seller_account
+#: model:ir.model.fields,help:payment_paypal.field_payment_acquirer__paypal_seller_account
msgid ""
"The Merchant ID is used to ensure communications coming from Paypal are "
"valid and secured."
msgstr "Paypal'dan gelen ticari kimlik bilgileri doğru ve güvenli."
#. module: payment_paypal
-#: model:ir.model.fields,field_description:payment_paypal.field_payment_transaction_paypal_txn_type
+#: model:ir.model.fields,field_description:payment_paypal.field_payment_transaction__paypal_txn_type
msgid "Transaction type"
msgstr "İşlem Tipi"
#. module: payment_paypal
-#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer_paypal_use_ipn
+#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer__paypal_use_ipn
msgid "Use IPN"
msgstr "IPN Kullan"
#. module: payment_paypal
-#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer_paypal_api_enabled
+#: model:ir.model.fields,field_description:payment_paypal.field_payment_acquirer__paypal_api_enabled
msgid "Use Rest API"
msgstr "Rest API Kullan"
diff --git a/addons/payment_sips/i18n/tr.po b/addons/payment_sips/i18n/tr.po
index 3491d1fd61e..bdcdc3855ef 100644
--- a/addons/payment_sips/i18n/tr.po
+++ b/addons/payment_sips/i18n/tr.po
@@ -6,13 +6,14 @@
# Ediz Duman <neps1192@gmail.com>, 2017
# Ahmet Altinisik <aaltinisik@altinkaya.com.tr>, 2017
# Martin Trigaux, 2017
+# Umur Akın <umura@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: Martin Trigaux, 2017\n"
+"Last-Translator: Umur Akın <umura@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"
@@ -42,17 +43,17 @@ msgstr ""
#: code:addons/payment_sips/models/payment.py:55
#, python-format
msgid "Incorrect payment acquirer provider"
-msgstr ""
+msgstr "Yanlış ödeme alıcısı sağlayıcı"
#. module: payment_sips
#: model:ir.model.fields,field_description:payment_sips.field_payment_acquirer__sips_version
msgid "Interface Version"
-msgstr ""
+msgstr "Arayüz Sürümü"
#. module: payment_sips
#: model:ir.model.fields,field_description:payment_sips.field_payment_acquirer__sips_merchant_id
msgid "Merchant ID"
-msgstr ""
+msgstr "Ticari ID"
#. module: payment_sips
#: model:ir.model,name:payment_sips.model_payment_acquirer
@@ -88,4 +89,4 @@ msgstr ""
#. module: payment_sips
#: model:ir.model.fields,help:payment_sips.field_payment_acquirer__sips_merchant_id
msgid "Used for production only"
-msgstr ""
+msgstr "Sadece üretim için kullanılır"
diff --git a/addons/payment_stripe/i18n/tr.po b/addons/payment_stripe/i18n/tr.po
index c55b0dccdfb..037efb3529e 100644
--- a/addons/payment_stripe/i18n/tr.po
+++ b/addons/payment_stripe/i18n/tr.po
@@ -4,15 +4,16 @@
#
# Translators:
# Ediz Duman <neps1192@gmail.com>, 2017
-# Martin Trigaux <mat@odoo.com>, 2017
+# Martin Trigaux, 2017
# Murat Kaplan <muratk@projetgrup.com>, 2017
+# Umur Akın <umura@projetgrup.com>, 2018
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server 11.0\n"
+"Project-Id-Version: Odoo Server saas~11.2\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-24 09:00+0000\n"
-"PO-Revision-Date: 2017-10-24 09:00+0000\n"
-"Last-Translator: Murat Kaplan <muratk@projetgrup.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: Umur Akın <umura@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"
@@ -28,12 +29,15 @@ msgid "&times;"
msgstr "&times;"
#. module: payment_stripe
-#: model:ir.model.fields,help:payment_stripe.field_payment_acquirer_stripe_image_url
+#: model:ir.model.fields,help:payment_stripe.field_payment_acquirer__stripe_image_url
msgid ""
"A relative or absolute URL pointing to a square image of your brand or "
"product. As defined in your Stripe profile. See: "
"https://stripe.com/docs/checkout"
msgstr ""
+"Markanızın veya ürünün kare resmine yönlendiren ilişkili veya mutlak bir "
+"URL. Stripe porfilinde tanımladığınız gibi. See: "
+"https://stripe.com/docs/checkout"
#. module: payment_stripe
#: model:ir.ui.view,arch_db:payment_stripe.stripe_s2s_form
@@ -48,10 +52,10 @@ msgstr "Kart numarası"
#. module: payment_stripe
#: model:ir.ui.view,arch_db:payment_stripe.stripe_s2s_form
msgid "Cardholder name"
-msgstr ""
+msgstr "Kart Sahibinin Adı"
#. module: payment_stripe
-#: model:ir.model.fields,field_description:payment_stripe.field_payment_acquirer_stripe_image_url
+#: model:ir.model.fields,field_description:payment_stripe.field_payment_acquirer__stripe_image_url
msgid "Checkout Image URL"
msgstr ""
@@ -72,14 +76,14 @@ msgstr "Hata"
#. module: payment_stripe
#: model:ir.ui.view,arch_db:payment_stripe.stripe_s2s_form
msgid "Expires (MM / YY)"
-msgstr ""
+msgstr "Son Kullanma Tarihi (AA/YY)"
#. module: payment_stripe
#. openerp-web
-#: code:addons/payment_stripe/static/src/js/stripe.js:32
+#: code:addons/payment_stripe/static/src/js/stripe.js:33
#, python-format
msgid "Just one more second, confirming your payment..."
-msgstr ""
+msgstr "Lütfen bekleyiniz, ödemeniz onaylanıyor"
#. module: payment_stripe
#: model:ir.model,name:payment_stripe.model_payment_acquirer
@@ -93,52 +97,54 @@ msgstr "Ödeme İşlemi"
#. module: payment_stripe
#. openerp-web
-#: code:addons/payment_stripe/static/src/js/stripe.js:57
+#: code:addons/payment_stripe/static/src/js/stripe.js:59
#, python-format
msgid "Payment error"
-msgstr ""
+msgstr "Ödeme hatası"
#. module: payment_stripe
-#: code:addons/payment_stripe/models/payment.py:167
+#: code:addons/payment_stripe/models/payment.py:175
#, python-format
msgid ""
"Perhaps the problem can be solved by double-checking your credit card "
"details, or contacting your bank?"
msgstr ""
+"Belki problem kredi kartı bilgilerinizi ya da bankanızla anlaşmanızı bir kez"
+" daha kontrol ederek çözülebilir? "
#. module: payment_stripe
-#: model:ir.model.fields,field_description:payment_stripe.field_payment_acquirer_stripe_publishable_key
+#: model:ir.model.fields,field_description:payment_stripe.field_payment_acquirer__stripe_publishable_key
msgid "Stripe Publishable Key"
-msgstr ""
+msgstr "Stripe yayınlanabilir şifre"
#. module: payment_stripe
-#: model:ir.model.fields,field_description:payment_stripe.field_payment_acquirer_stripe_secret_key
+#: model:ir.model.fields,field_description:payment_stripe.field_payment_acquirer__stripe_secret_key
msgid "Stripe Secret Key"
msgstr ""
#. module: payment_stripe
-#: code:addons/payment_stripe/models/payment.py:165
+#: code:addons/payment_stripe/models/payment.py:173
#, python-format
msgid "Stripe gave us the following info about the problem: '%s'"
msgstr ""
#. module: payment_stripe
-#: code:addons/payment_stripe/models/payment.py:177
+#: code:addons/payment_stripe/models/payment.py:185
#, python-format
msgid "Stripe: %s orders found for reference %s"
msgstr ""
#. module: payment_stripe
-#: code:addons/payment_stripe/models/payment.py:173
+#: code:addons/payment_stripe/models/payment.py:181
#, python-format
msgid "Stripe: no order found for reference %s"
msgstr ""
#. module: payment_stripe
-#: code:addons/payment_stripe/models/payment.py:163
+#: code:addons/payment_stripe/models/payment.py:171
#, python-format
msgid "We're sorry to report that the transaction has failed."
-msgstr ""
+msgstr "Bu işlem başarısız olduğu için üzgünüz."
#. module: payment_stripe
#: model:ir.model,name:payment_stripe.model_payment_token
diff --git a/addons/payment_stripe/models/payment.py b/addons/payment_stripe/models/payment.py
index 9645a5e4288..80450d5fa5a 100644
--- a/addons/payment_stripe/models/payment.py
+++ b/addons/payment_stripe/models/payment.py
@@ -8,6 +8,7 @@ from odoo import api, fields, models, _
from odoo.addons.payment.models.payment_acquirer import ValidationError
from odoo.exceptions import UserError
from odoo.tools.safe_eval import safe_eval
+from odoo.tools.float_utils import float_round
_logger = logging.getLogger(__name__)
@@ -106,7 +107,7 @@ class PaymentTransactionStripe(models.Model):
def _create_stripe_charge(self, acquirer_ref=None, tokenid=None, email=None):
api_url_charge = 'https://%s/charges' % (self.acquirer_id._get_stripe_api_url())
charge_params = {
- 'amount': int(self.amount if self.currency_id.name in INT_CURRENCIES else self.amount*100),
+ 'amount': int(self.amount if self.currency_id.name in INT_CURRENCIES else float_round(self.amount * 100, 2)),
'currency': self.currency_id.name,
'metadata[reference]': self.reference,
'description': self.reference,
@@ -139,7 +140,7 @@ class PaymentTransactionStripe(models.Model):
refund_params = {
'charge': self.acquirer_reference,
- 'amount': int(self.amount*100), # by default, stripe refund the full amount (we don't really need to specify the value)
+ 'amount': int(float_round(self.amount * 100, 2)), # by default, stripe refund the full amount (we don't really need to specify the value)
'metadata[reference]': self.reference,
}
diff --git a/addons/phone_validation/i18n/tr.po b/addons/phone_validation/i18n/tr.po
index 07914ca0754..d154d793e22 100644
--- a/addons/phone_validation/i18n/tr.po
+++ b/addons/phone_validation/i18n/tr.po
@@ -4,13 +4,14 @@
#
# Translators:
# Murat Kaplan <muratk@projetgrup.com>, 2017
+# Umur Akın <umura@projetgrup.com>, 2018
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server 11.0\n"
+"Project-Id-Version: Odoo Server saas~11.2\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-10-24 09:00+0000\n"
-"PO-Revision-Date: 2017-10-24 09:00+0000\n"
-"Last-Translator: Murat Kaplan <muratk@projetgrup.com>, 2017\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"
"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"
@@ -21,15 +22,17 @@ msgstr ""
#. module: phone_validation
#: selection:res.company,phone_international_format:0
msgid "Add international prefix"
-msgstr ""
+msgstr "Uluslararası kodu ekleyin"
#. module: phone_validation
-#: model:ir.model.fields,help:phone_validation.field_res_company_phone_international_format
+#: model:ir.model.fields,help:phone_validation.field_res_company__phone_international_format
msgid ""
"Always encode phone numbers using international format. Otherwise numbers "
"coming from the company's country are nationaly formatted. International "
"numbers are always using international format."
msgstr ""
+"Her zaman telefon numaraları uluslararası formatta kodlanır. Yoksa "
+"numaralar, şirketin bağlı olduğu ülkeden ulusal formatta alınır."
#. module: phone_validation
#: model:ir.model,name:phone_validation.model_res_company
@@ -37,12 +40,12 @@ msgid "Companies"
msgstr "Şirketler"
#. module: phone_validation
-#: model:ir.model.fields,field_description:phone_validation.field_phone_validation_mixin_display_name
+#: model:ir.model.fields,field_description:phone_validation.field_phone_validation_mixin__display_name
msgid "Display Name"
msgstr "Görünüm Adı"
#. module: phone_validation
-#: model:ir.model.fields,field_description:phone_validation.field_phone_validation_mixin_id
+#: model:ir.model.fields,field_description:phone_validation.field_phone_validation_mixin__id
msgid "ID"
msgstr "ID"
@@ -59,19 +62,19 @@ msgid "Invalid number %s: probably incorrect prefix"
msgstr ""
#. module: phone_validation
-#: model:ir.model.fields,field_description:phone_validation.field_phone_validation_mixin___last_update
+#: model:ir.model.fields,field_description:phone_validation.field_phone_validation_mixin____last_update
msgid "Last Modified on"
msgstr "Son Güncelleme"
#. module: phone_validation
-#: model:ir.model.fields,field_description:phone_validation.field_res_company_phone_international_format
+#: model:ir.model.fields,field_description:phone_validation.field_res_company__phone_international_format
msgid "Local Numbers"
-msgstr ""
+msgstr "Yerel Numaralar"
#. module: phone_validation
#: selection:res.company,phone_international_format:0
msgid "No prefix"
-msgstr ""
+msgstr "Kod yok"
#. module: phone_validation
#: code:addons/phone_validation/tools/phone_validation.py:44
diff --git a/addons/point_of_sale/i18n/tr.po b/addons/point_of_sale/i18n/tr.po
index 834bae301b6..555c69377cb 100644
--- a/addons/point_of_sale/i18n/tr.po
+++ b/addons/point_of_sale/i18n/tr.po
@@ -23,13 +23,14 @@
# eren b <inactive+erenbn@transifex.com>, 2017
# Levent Karakaş <levent@mektup.at>, 2017
# Saban Yildiz <sabany@projetgrup.com>, 2017
+# Umur Akın <umura@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: Saban Yildiz <sabany@projetgrup.com>, 2017\n"
+"Last-Translator: Umur Akın <umura@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"
@@ -290,6 +291,8 @@ msgid ""
"A globally unique identifier for this pos configuration, used to prevent "
"conflicts in client-generated data."
msgstr ""
+"Müşteri tarafından oluşturulan verilerin çakışmasını önlemek için bu pos "
+"yapılandırması için küresel olarak benzersiz bir tanımlayıcı."
#. module: point_of_sale
#: model:ir.model.fields,help:point_of_sale.field_pos_session__login_number
@@ -319,12 +322,12 @@ msgstr "Oturum için benzersiz sipariş sıra numarası"
#. module: point_of_sale
#: model:ir.model.fields,help:point_of_sale.field_pos_config__receipt_footer
msgid "A short text that will be inserted as a footer in the printed receipt."
-msgstr ""
+msgstr "Yazdırılan makbuzda altbilgi olarak eklenecek kısa bir metin."
#. module: point_of_sale
#: model:ir.model.fields,help:point_of_sale.field_pos_config__receipt_header
msgid "A short text that will be inserted as a header in the printed receipt."
-msgstr ""
+msgstr "Yazdırılan makbuzda üst bilgi olarak eklenecek kısa bir metin"
#. module: point_of_sale
#. openerp-web
@@ -408,6 +411,9 @@ msgid ""
"the Sales Journal set on this point of sale if you use the Accounting "
"application."
msgstr ""
+"Tüm erişilebilir fiyat listeleri, eğer Muhasebe uygulamasını kullanıyorsanız"
+" ya Satış Yevmiyesinde belirlenmiş olan para birimini ya da şirketin para "
+"birimi ile aynı birimi kullanmalı."
#. module: point_of_sale
#: code:addons/point_of_sale/models/pos_config.py:256
@@ -493,6 +499,8 @@ msgstr "Nitelikler"
#: model:ir.model.fields,help:point_of_sale.field_pos_session__rescue
msgid "Auto-generated session for orphan orders, ignored in constraints"
msgstr ""
+"Kısıtlamalarda yok sayılan yetim siparişleri için otomatik olarak "
+"oluşturulan oturum"
#. module: point_of_sale
#: model:ir.model.fields,field_description:point_of_sale.field_pos_config__iface_print_auto
@@ -502,7 +510,7 @@ msgstr "Otomatik Makbuz Yazdırma"
#. module: point_of_sale
#: model:ir.model.fields,help:point_of_sale.field_pos_config__iface_cashdrawer
msgid "Automatically open the cashdrawer."
-msgstr ""
+msgstr "Otomatik olarak nakit çekici açılır."
#. module: point_of_sale
#: model:ir.model.fields,field_description:point_of_sale.field_pos_config__journal_ids
@@ -668,7 +676,7 @@ msgstr "Nakit Kasa Satırı"
#. module: point_of_sale
#: model:ir.ui.view,arch_db:point_of_sale.account_cashbox_line_view_tree
msgid "Cashbox balance"
-msgstr ""
+msgstr "Kasa Bakiyesi"
#. module: point_of_sale
#: model:ir.model.fields,field_description:point_of_sale.field_pos_config__iface_cashdrawer
@@ -764,6 +772,8 @@ msgstr ""
msgid ""
"Check if you want to group products of this category in point of sale orders"
msgstr ""
+"İsterseniz, satış noktası siparişlerinde, bu kategorinin ürün gruplarını "
+"kontrol edebilirsiniz."
#. module: point_of_sale
#: model:ir.model.fields,help:point_of_sale.field_pos_config__cash_control
@@ -785,6 +795,8 @@ msgid ""
"Check this if you want to group the Journal Items by Product while closing a"
" Session."
msgstr ""
+"Bir oturum kapanırken, Yevmiye Kalemlerini, Ürüne göre gruplandırmak "
+"istiyorsanız bunu işaretleyin."
#. module: point_of_sale
#. openerp-web
@@ -809,11 +821,13 @@ msgid ""
"Choose a specific tax regime at the order depending on the kind of customer "
"(tax exempt, onsite vs. takeaway, etc.)."
msgstr ""
+"Müşteriye türüne bağlı olarak, siparişleriniz için özel vergi düzeni seçin "
+"(vergi muafiyeti, yerinde ya da hızlı alım gibi)"
#. module: point_of_sale
#: model:ir.ui.view,arch_db:point_of_sale.pos_config_view_form
msgid "Choose among several tax regimes when processing an order"
-msgstr ""
+msgstr "Siparişiniz işlenirken vergi düzeni içinden seçim yapın"
#. module: point_of_sale
#. openerp-web
@@ -1002,7 +1016,7 @@ msgstr "Şu Anki Oturum"
#. module: point_of_sale
#: model:ir.model.fields,field_description:point_of_sale.field_pos_config__current_session_state
msgid "Current Session State"
-msgstr ""
+msgstr "Mevcut Oturum Durumu"
#. module: point_of_sale
#. openerp-web
@@ -1024,7 +1038,7 @@ msgstr "Müşteri Ekranı"
#. module: point_of_sale
#: model:ir.model.fields,field_description:point_of_sale.field_pos_config__iface_customer_facing_display
msgid "Customer Facing Display"
-msgstr ""
+msgstr "Müşteri Yüz Ekranı"
#. module: point_of_sale
#: code:addons/point_of_sale/models/pos_order.py:545
@@ -1036,7 +1050,7 @@ msgstr "Müşteri Faturası"
#. module: point_of_sale
#: model:ir.model.fields,field_description:point_of_sale.field_pos_config__customer_facing_display_html
msgid "Customer facing display content"
-msgstr ""
+msgstr "Müşteri yüze ekranı içeriği"
#. module: point_of_sale
#: model:ir.ui.menu,name:point_of_sale.menu_pos_dashboard
@@ -1073,7 +1087,7 @@ msgstr "Varsayılan Mali Koşul"
#. module: point_of_sale
#: model:ir.ui.view,arch_db:point_of_sale.pos_config_view_form
msgid "Default Opening"
-msgstr ""
+msgstr "Varsayılan Açılış"
#. module: point_of_sale
#: model:ir.model.fields,field_description:point_of_sale.field_pos_config__pricelist_id
@@ -1097,6 +1111,8 @@ msgid ""
"Defines what kind of barcodes are available and how they are assigned to "
"products, customers and cashiers."
msgstr ""
+"Hangi çeşit barkotların erişilebilir olduğunu ve ürünlere, müşterilere, "
+"kasiyere nasıl atanacağını tanımla. "
#. module: point_of_sale
#: model:ir.model.fields,field_description:point_of_sale.field_report_pos_order__delay_validation
@@ -1247,6 +1263,8 @@ msgid ""
"Don't turn this option on if you take orders on smartphones or tablets. Such"
" devices already benefit from a native keyboard."
msgstr ""
+"Akıllı telefonlarda veya tabletlerde sipariş alırsanız bu seçeneği açmayın. "
+"Bu tür cihazlar zaten bir yerel klavyeden faydalanır."
#. module: point_of_sale
#: model:ir.ui.view,arch_db:point_of_sale.view_pos_order_filter
@@ -1316,21 +1334,22 @@ msgstr "Boş Seri/Lot Numarası"
#: model:ir.model.fields,help:point_of_sale.field_pos_config__iface_scan_via_proxy
msgid "Enable barcode scanning with a remotely connected barcode scanner."
msgstr ""
+"Uzaktan bağlı bir barkod tarayıcı ile barkod taramasını etkinleştirin."
#. module: point_of_sale
#: model:ir.model.fields,help:point_of_sale.field_pos_config__iface_electronic_scale
msgid "Enables Electronic Scale integration."
-msgstr ""
+msgstr "Elektronik Ölçek Entegrasyonunu etkinleştir"
#. module: point_of_sale
#: model:ir.model.fields,help:point_of_sale.field_pos_config__iface_payment_terminal
msgid "Enables Payment Terminal integration."
-msgstr ""
+msgstr "Ödeme Terminali Entegrasyonunu etkinleştir."
#. module: point_of_sale
#: model:ir.model.fields,help:point_of_sale.field_pos_config__iface_invoicing
msgid "Enables invoice generation from the Point of Sale."
-msgstr ""
+msgstr "Satış Noktasından fatura oluşturmayı etkinleştir."
#. module: point_of_sale
#: model:ir.model.fields,field_description:point_of_sale.field_pos_details_wizard__end_date
@@ -1431,7 +1450,7 @@ msgstr "Altbilgi"
#. module: point_of_sale
#: model:ir.model.fields,help:point_of_sale.field_pos_config__iface_big_scrollbars
msgid "For imprecise industrial touchscreens."
-msgstr ""
+msgstr "Kesin olmayan endüstriyel dokunmatik ekranlar için."
#. module: point_of_sale
#: model:ir.ui.view,arch_db:point_of_sale.view_pos_pos_form
@@ -1452,6 +1471,11 @@ msgid ""
"recommended for an easy review of your journal entries when managing lots of"
" orders."
msgstr ""
+"Ürün başına bir yevmiye kalemi almak yerine makbuz satırı başına yevmiye "
+"kalemi alın. Bu iş her sipariş işin geçerlidir. Eğer müşteri sipariş "
+"üzerinde ayarlama yaparsa, her makbuz satırı için bir yevmiye kalemi "
+"oluşturulur. Bu seçenek, bir çok siparişi yönetirken yevmiye kayıtlarını "
+"kolayca gözden geçirmek için önerilir."
#. module: point_of_sale
#: model:ir.ui.view,arch_db:point_of_sale.pos_config_view_form
@@ -1491,7 +1515,7 @@ msgstr "Grup Yevmiye Kalemleri"
#: model:ir.model.fields,field_description:point_of_sale.field_product_uom__is_pos_groupable
#: model:ir.model.fields,field_description:point_of_sale.field_product_uom_categ__is_pos_groupable
msgid "Group Products in POS"
-msgstr ""
+msgstr "POS da grup ürünleri"
#. module: point_of_sale
#. openerp-web
@@ -1726,7 +1750,7 @@ msgstr "Son Oturum Kapatma Sırasındaki Nakit"
#. module: point_of_sale
#: model:ir.model.fields,field_description:point_of_sale.field_pos_config__last_session_closing_date
msgid "Last Session Closing Date"
-msgstr ""
+msgstr "Son Oturumun Kapanış Tarihi"
#. module: point_of_sale
#: model:ir.model.fields,field_description:point_of_sale.field_pos_category__write_uid
@@ -1823,7 +1847,7 @@ msgstr "Sadakat Programı"
#. module: point_of_sale
#: model:ir.ui.view,arch_db:point_of_sale.pos_config_view_form
msgid "Loyalty program to use for this point of sale."
-msgstr ""
+msgstr "Satış noktası için kullanılan sadakat programı."
#. module: point_of_sale
#: model:ir.ui.view,arch_db:point_of_sale.view_pos_payment
@@ -1838,12 +1862,16 @@ msgid ""
"be valid, this pricelist must be listed here as an available pricelist. "
"Otherwise the default pricelist will apply."
msgstr ""
+"Satış Noktası'nda erişilebilir bir çok fiyat listesi yapın. Ayrıca "
+"kontaklarınızdan belirli müşteriler için belirli fiyat listeleri "
+"uygulayabilirsiniz (Satış sekmesinde). Bu fiyat listesi erişilebilir fiyat "
+"listesi olarak onaylanmak için listelenmeli."
#. module: point_of_sale
#: model:ir.ui.view,arch_db:point_of_sale.customer_facing_display_html
#: model:pos.config,customer_facing_display_html:point_of_sale.pos_config_main
msgid "Malibu Drink"
-msgstr ""
+msgstr "Malibu Drink"
#. module: point_of_sale
#: model:res.groups,name:point_of_sale.group_pos_manager
@@ -2039,6 +2067,8 @@ msgid ""
"Only users with Manager access rights for PoS app can modify the product "
"prices on orders."
msgstr ""
+"Sadece Yetkili erişim hakkı ile kullanıcılar ürün fiyatlarını ya da "
+"siparişlerini POS uygulaması için değiştirebilir."
#. module: point_of_sale
#. openerp-web
@@ -2078,7 +2108,7 @@ msgstr "Kasa Aç"
#. module: point_of_sale
#: model:ir.model,name:point_of_sale.model_pos_details_wizard
msgid "Open Sales Details Report"
-msgstr ""
+msgstr "Açık Satış Detay Raporu"
#. module: point_of_sale
#: model:ir.ui.view,arch_db:point_of_sale.view_pos_config_kanban
@@ -2113,7 +2143,7 @@ msgstr "Açılış Tarihi"
#: model:ir.actions.act_window,name:point_of_sale.account_cashbox_line_action
#: model:ir.ui.view,arch_db:point_of_sale.pos_config_view_form
msgid "Opening/Closing Values"
-msgstr ""
+msgstr "Açılış/Kapanış Değerleri"
#. module: point_of_sale
#: model:ir.model.fields,field_description:point_of_sale.field_pos_config__picking_type_id
@@ -2166,7 +2196,7 @@ msgstr "Satış Noktası Arayüzü"
#. module: point_of_sale
#: model:ir.model.fields,field_description:point_of_sale.field_pos_config__sequence_line_id
msgid "Order Line IDs Sequence"
-msgstr ""
+msgstr "Sipariş Satırı ID Dizisi"
#. module: point_of_sale
#: model:ir.model.fields,field_description:point_of_sale.field_pos_order__lines
@@ -2846,7 +2876,7 @@ msgstr "Makbuz Ref"
#. module: point_of_sale
#: model:ir.model.fields,field_description:point_of_sale.field_pos_session__rescue
msgid "Recovery Session"
-msgstr ""
+msgstr "Kurtarma Oturumu"
#. module: point_of_sale
#. openerp-web
@@ -2880,7 +2910,7 @@ msgstr "Sorumlu"
#. module: point_of_sale
#: model:ir.model.fields,field_description:point_of_sale.field_pos_config__restrict_price_control
msgid "Restrict Price Modifications to Managers"
-msgstr ""
+msgstr "Fiyat Değişikliklerini Yöneticilere Sınırla"
#. module: point_of_sale
#: model:ir.ui.view,arch_db:point_of_sale.pos_config_view_form
@@ -2958,6 +2988,7 @@ msgstr "Kaydet"
#: model:ir.ui.view,arch_db:point_of_sale.pos_config_view_form
msgid "Save this configuration to see and edit the customer display"
msgstr ""
+"Müşteri ekranını düzenlemek ve görmek için bu yapılandırmayı kaydedin."
#. module: point_of_sale
#. openerp-web
@@ -3159,7 +3190,7 @@ msgstr "Mağazaya özel fiyatlar ayarlayın. (Sezonluk indirimler vb.)"
#: code:addons/point_of_sale/static/src/js/pos.web_editor.js:33
#, python-format
msgid "Set your customized advertisement here"
-msgstr ""
+msgstr "Özel reklamlarınızı burada ayarlayın."
#. module: point_of_sale
#: model:ir.ui.view,arch_db:point_of_sale.view_pos_config_kanban
@@ -3224,7 +3255,7 @@ msgstr "Başlama Tarih"
#. module: point_of_sale
#: model:ir.ui.view,arch_db:point_of_sale.pos_config_view_form
msgid "Start selling from a default product category"
-msgstr ""
+msgstr "Varsayılan bir ürün kategorisinde satışa başla."
#. module: point_of_sale
#: model:ir.model.fields,field_description:point_of_sale.field_pos_session__cash_register_balance_start
@@ -3373,7 +3404,7 @@ msgstr "Vergi Rejimi"
#. module: point_of_sale
#: model:ir.model.fields,field_description:point_of_sale.field_pos_config__tax_regime_selection
msgid "Tax Regime Selection value"
-msgstr ""
+msgstr "Vergi Yönetim Seçimi değeri"
#. module: point_of_sale
#: selection:pos.config,iface_tax_included:0
@@ -3451,7 +3482,7 @@ msgstr "Firma ödeme yöntemi firma satış noktası olandan farklıdır"
#, python-format
msgid ""
"The company of the sales journal is different than the one of point of sale"
-msgstr ""
+msgstr "Satış yevmiyesi şirketi, bir satış noktasından farklıdır."
#. module: point_of_sale
#: code:addons/point_of_sale/models/pos_config.py:228
@@ -3464,7 +3495,7 @@ msgstr "Stok konumu firma satış noktası'dan farklı"
#: code:addons/point_of_sale/models/pos_config.py:248
#, python-format
msgid "The default pricelist must be included in the available pricelists."
-msgstr ""
+msgstr "Varsayılan fiyat listesi mevcut fiyat listesine dahil edilmelidir."
#. module: point_of_sale
#: model:ir.model.fields,help:point_of_sale.field_pos_config__proxy_ip
@@ -3472,6 +3503,8 @@ msgid ""
"The hostname or ip address of the hardware proxy, Will be autodetected if "
"left empty."
msgstr ""
+"Donanım proxysinin sunucu adı ya da ip adresleri eğer boş bırakılırsa "
+"otomatik olarak belirlenecektir."
#. module: point_of_sale
#: code:addons/point_of_sale/models/pos_config.py:238
@@ -3497,7 +3530,7 @@ msgstr "Bu POS Oturum adı benzersiz olmalıdır!"
#: model:ir.model.fields,help:point_of_sale.field_res_partner__pos_order_count
#: model:ir.model.fields,help:point_of_sale.field_res_users__pos_order_count
msgid "The number of point of sales orders related to this customer"
-msgstr ""
+msgstr "Bu müşteri ile ilgili satış noktası siparişlerinin sayısı"
#. module: point_of_sale
#. openerp-web
@@ -3519,6 +3552,8 @@ msgid ""
"The payment input will behave similarily to bank payment input, and will be "
"prefilled with the exact due amount."
msgstr ""
+"Ödeme girdileri, banka ödeme girdileri ile benzer şekilde davranacaktır ve "
+"kesin tutarla daha önceden doldurulacaktır."
#. module: point_of_sale
#: model:ir.model.fields,help:point_of_sale.field_pos_order__config_id
@@ -3532,6 +3567,8 @@ msgid ""
"The point of sale will display this product category by default. If no "
"category is specified, all available products will be shown."
msgstr ""
+"Satış noktası varsayılan bu ürün kategorilerini gösterecektir. Eğer "
+"özelleşmiş kategori yoksa, tüm erişilir ürünler gösterilecektir."
#. module: point_of_sale
#: model:ir.model.fields,help:point_of_sale.field_pos_config__pricelist_id
@@ -3539,6 +3576,8 @@ msgid ""
"The pricelist used if no customer is selected or if the customer has no Sale"
" Pricelist configured."
msgstr ""
+"Eğer hiç bir müşteri seçilmedi ise ya da müşteri ayarlanmış Satış Fiyat "
+"Listesine sahip değilse, var olan fiyat listesi kullanılır."
#. module: point_of_sale
#: model:ir.model.fields,help:point_of_sale.field_pos_config__iface_display_categ_images
@@ -3562,7 +3601,7 @@ msgstr "Fiş otomatik yazdırılabiliyorsa önizleme ekranı gösterilmeyecektir
#. module: point_of_sale
#: model:ir.model.fields,help:point_of_sale.field_pos_config__iface_print_auto
msgid "The receipt will automatically be printed at the end of each order."
-msgstr ""
+msgstr "Makbuz her siparişin sonunda otomatik olarak yazdırılır"
#. module: point_of_sale
#. openerp-web
@@ -3691,6 +3730,8 @@ msgid ""
"This field is there to pass the id of the pos manager group to the point of "
"sale client."
msgstr ""
+"Bu alan pos yönetim grubunun kimliğini satış noktası müşterisine taşımak "
+"için var."
#. module: point_of_sale
#: model:ir.model.fields,help:point_of_sale.field_pos_config__group_pos_user_id
@@ -3715,6 +3756,8 @@ msgid ""
"This is useful for restaurants with onsite and take-away services that imply"
" specific tax rates."
msgstr ""
+"Yerinde ya da take-away servislerle ve özel vergi oranları ile çalışan "
+"restoranlar için çok faydalıdır."
#. module: point_of_sale
#. openerp-web
@@ -3740,7 +3783,7 @@ msgstr ""
#. module: point_of_sale
#: model:ir.model.fields,help:point_of_sale.field_pos_config__tip_product_id
msgid "This product is used as reference on customer receipts."
-msgstr ""
+msgstr "Bu ürün müşteri makbuzu üzerinde referans olarak kullanılır."
#. module: point_of_sale
#: model:ir.model.fields,help:point_of_sale.field_pos_config__sequence_line_id
@@ -3748,6 +3791,9 @@ msgid ""
"This sequence is automatically created by Odoo but you can change it to "
"customize the reference numbers of your orders lines."
msgstr ""
+"Bu satır Odoo tarafından otomatik olarak oluşturulur ancak sipariş "
+"satırlarınızın referans numaralarının özelleştirmek için bunu "
+"değiştirebilirsiniz."
#. module: point_of_sale
#: model:ir.model.fields,help:point_of_sale.field_pos_config__sequence_id
@@ -3854,7 +3900,7 @@ msgstr "Vergiler Toplamı"
#. module: point_of_sale
#: model:ir.model.fields,help:point_of_sale.field_pos_session__cash_register_total_entry_encoding
msgid "Total of all paid sales orders"
-msgstr ""
+msgstr "Satış noktalarındaki tüm ödemelerin toplamı"
#. module: point_of_sale
#: model:ir.model.fields,help:point_of_sale.field_pos_session__cash_register_balance_end_real
@@ -3894,6 +3940,7 @@ msgid ""
"Unable to open the session. You have to assign a sales journal to your point"
" of sale."
msgstr ""
+"Oturum açılamıyor. Satış noktanıza bir satış yevmiyesi atamanız gerekiyor"
#. module: point_of_sale
#: model:ir.model.fields,field_description:point_of_sale.field_pos_order_line__price_unit
@@ -3924,7 +3971,7 @@ msgstr "Desteklenmeyen Dosya Biçimi"
#. module: point_of_sale
#: model:ir.ui.view,arch_db:point_of_sale.view_pos_config_kanban
msgid "Unused"
-msgstr ""
+msgstr "Kullanılmayan"
#. module: point_of_sale
#: model:ir.model.fields,field_description:point_of_sale.field_pos_config__use_existing_lots
@@ -3939,7 +3986,7 @@ msgstr "Varsayılan mali koşulu ayarlayın"
#. module: point_of_sale
#: model:ir.model.fields,field_description:point_of_sale.field_pos_config__use_pricelist
msgid "Use a pricelist."
-msgstr ""
+msgstr "Bir fiyat listesi kullan."
#. module: point_of_sale
#: model:ir.ui.view,arch_db:point_of_sale.pos_config_view_form
@@ -4044,6 +4091,9 @@ msgid ""
"accounting journal for all the orders not invoiced. Invoices are recorded in"
" accounting separately."
msgstr ""
+"Bir oturum kapatılıyorsa, tüm faturalanmayan siparişler için, takip eden "
+"muhasebe yevmiyesinde bir kayıt oluşturulur. Faturalar muhasebede ayrı ayrı "
+"kaydedilir."
#. module: point_of_sale
#. openerp-web
@@ -4156,7 +4206,7 @@ msgstr "Bu POS için Satış Yevmiyesi beliremelisiniz:%s"
#: code:addons/point_of_sale/wizard/pos_details.py:48
#, python-format
msgid "You have to set a logo or a layout for your company."
-msgstr ""
+msgstr "Şirketiniz için bir logo ya da bir layout ayarlamalısınız."
#. module: point_of_sale
#: code:addons/point_of_sale/wizard/pos_details.py:50
@@ -4287,12 +4337,12 @@ msgstr "indirim"
#. module: point_of_sale
#: model:ir.ui.view,arch_db:point_of_sale.pos_config_view_form
msgid "e.g. Company Address, Website"
-msgstr ""
+msgstr "Örn: Şirket Adersi, Website"
#. module: point_of_sale
#: model:ir.ui.view,arch_db:point_of_sale.pos_config_view_form
msgid "e.g. Return Policy, Thanks for shopping with us!"
-msgstr ""
+msgstr "Örn: Geri Dönüş Poliçesi,"
#. module: point_of_sale
#. openerp-web
diff --git a/addons/portal/i18n/tr.po b/addons/portal/i18n/tr.po
index a05a3e4b593..fff747eca1c 100644
--- a/addons/portal/i18n/tr.po
+++ b/addons/portal/i18n/tr.po
@@ -12,13 +12,14 @@
# Ayhan KIZILTAN <akiziltan76@hotmail.com>, 2017
# Saban Yildiz <sabany@projetgrup.com>, 2017
# Güven YILMAZ <guvenyilmaz@outlook.com.tr>, 2017
+# Umur Akın <umura@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: Güven YILMAZ <guvenyilmaz@outlook.com.tr>, 2017\n"
+"Last-Translator: Umur Akın <umura@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"
@@ -154,7 +155,7 @@ msgstr "Oluşturulma zamanı"
#: model:ir.model.fields,help:portal.field_project_task__portal_url
#: model:ir.model.fields,help:portal.field_sale_order__portal_url
msgid "Customer Portal URL"
-msgstr ""
+msgstr "Müşteri Portal URL"
#. module: portal
#: model:ir.model.fields,field_description:portal.field_portal_mixin__display_name
@@ -168,7 +169,7 @@ msgstr "Görünüm Adı"
#: code:addons/portal/static/src/xml/portal_signature.xml:14
#, python-format
msgid "Draw your signature"
-msgstr ""
+msgstr "İmzanızı çizi"
#. module: portal
#: model:ir.model.fields,field_description:portal.field_portal_wizard_user__email
@@ -281,7 +282,7 @@ msgstr "Portal Giriş Yönetimi"
#: model:ir.model.fields,field_description:portal.field_project_task__portal_url
#: model:ir.model.fields,field_description:portal.field_sale_order__portal_url
msgid "Portal Access URL"
-msgstr ""
+msgstr "Portal Erişim URL"
#. module: portal
#: model:ir.model,name:portal.model_portal_wizard_user
@@ -357,14 +358,14 @@ msgstr "Sokak/Cadde"
#: code:addons/portal/static/src/xml/portal_signature.xml:25
#, python-format
msgid "Thank You !"
-msgstr ""
+msgstr "Teşekkürler !"
#. module: portal
#. openerp-web
#: code:addons/portal/static/src/xml/portal_chatter.xml:11
#, python-format
msgid "There are no comments for now."
-msgstr ""
+msgstr "Burada şimdilik hiç yorum yok."
#. module: portal
#: model:ir.ui.view,arch_db:portal.wizard_view
@@ -562,7 +563,7 @@ msgstr ""
#. module: portal
#: model:ir.ui.view,arch_db:portal.portal_my_details
msgid "Your Contact Details"
-msgstr ""
+msgstr "Bağlantı Detayları"
#. module: portal
#: model:ir.ui.view,arch_db:portal.portal_layout
@@ -573,7 +574,7 @@ msgstr "Detaylarınız"
#. module: portal
#: model:ir.ui.view,arch_db:portal.portal_my_home
msgid "Your Documents"
-msgstr ""
+msgstr "Dokumanlarınız"
#. module: portal
#. openerp-web
@@ -598,7 +599,7 @@ msgstr "Posta Kodu"
#: code:addons/portal/static/src/xml/portal_chatter.xml:56
#, python-format
msgid "avatar"
-msgstr ""
+msgstr "avatar"
#. module: portal
#. openerp-web
@@ -619,7 +620,7 @@ msgstr "Yorumlar"
#: code:addons/portal/static/src/xml/portal_chatter.xml:21
#, python-format
msgid "logged in"
-msgstr ""
+msgstr "oturum açıldı"
#. module: portal
#: model:ir.model,name:portal.model_portal_mixin
@@ -636,4 +637,4 @@ msgstr "Seçin ..."
#: code:addons/portal/static/src/xml/portal_chatter.xml:21
#, python-format
msgid "to post a comment."
-msgstr ""
+msgstr "bir yorum gönder"
diff --git a/addons/portal/views/portal_templates.xml b/addons/portal/views/portal_templates.xml
index 2d7ec49ca90..abdfada255a 100644
--- a/addons/portal/views/portal_templates.xml
+++ b/addons/portal/views/portal_templates.xml
@@ -198,6 +198,21 @@
</li>
</ul>
</div>
+ <div t-if="searchbar_groupby" class="dropdown pull-right mr4">
+ <button id="portal_searchbar_groupby" class="o_portal_search_panel_fixed_width btn btn-default" type="button" data-toggle="dropdown">
+ <span class="fa fa-bars fa-lg" />
+ <span class='hidden-xs hidden-sm hidden-md' t-esc="searchbar_groupby[groupby].get('label', 'None')"/>
+ <span class="caret"></span>
+ </button>
+ <ul class="dropdown-menu" aria-labelledby="portal_searchbar_groupby">
+ <li t-foreach="searchbar_groupby" t-as="option" t-att-class="groupby == option and 'active'">
+ <a t-att-href="default_url + '?' + keep_query('*', groupby=option)">
+ <span t-esc="searchbar_groupby[option].get('label')"/>
+ </a>
+ </li>
+ </ul>
+ </div>
+
</template>
<template id="portal_contact" name="Contact">
diff --git a/addons/pos_cache/i18n/tr.po b/addons/pos_cache/i18n/tr.po
index 9176ef577fb..85565d72609 100644
--- a/addons/pos_cache/i18n/tr.po
+++ b/addons/pos_cache/i18n/tr.po
@@ -6,14 +6,15 @@
# Murat Kaplan <muratk@projetgrup.com>, 2017
# gezgin biri <gezginbiri@hotmail.com>, 2017
# Ayhan KIZILTAN <akiziltan76@hotmail.com>, 2017
-# Martin Trigaux <mat@odoo.com>, 2017
+# Martin Trigaux, 2017
+# Umur Akın <umura@projetgrup.com>, 2018
msgid ""
msgstr ""
-"Project-Id-Version: Odoo Server saas~11.1\n"
+"Project-Id-Version: Odoo Server saas~11.2\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-12-13 14:37+0000\n"
-"PO-Revision-Date: 2017-12-13 14:37+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: Umur Akın <umura@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"
@@ -22,58 +23,58 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: pos_cache
-#: model:ir.model.fields,field_description:pos_cache.field_pos_cache_cache
-#: model:ir.model.fields,field_description:pos_cache.field_pos_config_cache_ids
+#: model:ir.model.fields,field_description:pos_cache.field_pos_cache__cache
+#: model:ir.model.fields,field_description:pos_cache.field_pos_config__cache_ids
msgid "Cache"
msgstr "Önbellek"
#. module: pos_cache
-#: model:ir.model.fields,field_description:pos_cache.field_pos_cache_compute_user_id
+#: model:ir.model.fields,field_description:pos_cache.field_pos_cache__compute_user_id
msgid "Cache compute user"
-msgstr ""
+msgstr "Kullanıcı ön belleğini hesapla"
#. module: pos_cache
-#: model:ir.model.fields,field_description:pos_cache.field_pos_cache_config_id
+#: model:ir.model.fields,field_description:pos_cache.field_pos_cache__config_id
msgid "Config"
msgstr ""
#. module: pos_cache
-#: model:ir.model.fields,field_description:pos_cache.field_pos_cache_create_uid
+#: model:ir.model.fields,field_description:pos_cache.field_pos_cache__create_uid
msgid "Created by"
msgstr "Oluşturan"
#. module: pos_cache
-#: model:ir.model.fields,field_description:pos_cache.field_pos_cache_create_date
+#: model:ir.model.fields,field_description:pos_cache.field_pos_cache__create_date
msgid "Created on"
msgstr "Oluşturulma"
#. module: pos_cache
-#: model:ir.model.fields,field_description:pos_cache.field_pos_cache_display_name
+#: model:ir.model.fields,field_description:pos_cache.field_pos_cache__display_name
msgid "Display Name"
msgstr "Görünüm Adı"
#. module: pos_cache
-#: model:ir.model.fields,field_description:pos_cache.field_pos_cache_id
+#: model:ir.model.fields,field_description:pos_cache.field_pos_cache__id
msgid "ID"
msgstr "ID"
#. module: pos_cache
#: model:ir.ui.view,arch_db:pos_cache.pos_config_view_form_inherit_pos_cache
msgid "Invalidate cache"
-msgstr ""
+msgstr "Ön belleği iptal et"
#. module: pos_cache
-#: model:ir.model.fields,field_description:pos_cache.field_pos_cache___last_update
+#: model:ir.model.fields,field_description:pos_cache.field_pos_cache____last_update
msgid "Last Modified on"
msgstr "Son Güncelleme"
#. module: pos_cache
-#: model:ir.model.fields,field_description:pos_cache.field_pos_cache_write_uid
+#: model:ir.model.fields,field_description:pos_cache.field_pos_cache__write_uid
msgid "Last Updated by"
msgstr "Son Güncelleyen"
#. module: pos_cache
-#: model:ir.model.fields,field_description:pos_cache.field_pos_cache_write_date
+#: model:ir.model.fields,field_description:pos_cache.field_pos_cache__write_date
msgid "Last Updated on"
msgstr "Son Güncelleme"
@@ -85,7 +86,7 @@ msgid "Loading"
msgstr "Yükleniyor"
#. module: pos_cache
-#: model:ir.model.fields,field_description:pos_cache.field_pos_config_oldest_cache_time
+#: model:ir.model.fields,field_description:pos_cache.field_pos_config__oldest_cache_time
msgid "Oldest cache time"
msgstr ""
@@ -94,17 +95,17 @@ msgstr ""
#: model:ir.cron,cron_name:pos_cache.refresh_pos_cache_cron
#: model:ir.cron,name:pos_cache.refresh_pos_cache_cron
msgid "PoS: refresh cache"
-msgstr ""
+msgstr "PoS: Önbelleği güncelle"
#. module: pos_cache
-#: model:ir.model.fields,field_description:pos_cache.field_pos_cache_product_domain
+#: model:ir.model.fields,field_description:pos_cache.field_pos_cache__product_domain
msgid "Product Domain"
-msgstr ""
+msgstr "Ürün Domaini"
#. module: pos_cache
-#: model:ir.model.fields,field_description:pos_cache.field_pos_cache_product_fields
+#: model:ir.model.fields,field_description:pos_cache.field_pos_cache__product_fields
msgid "Product Fields"
-msgstr ""
+msgstr "Ürün Alanı"
#. module: pos_cache
#: model:ir.model,name:pos_cache.model_pos_cache
diff --git a/addons/pos_discount/i18n/tr.po b/addons/pos_discount/i18n/tr.po
index 905684109d9..df6a84914b7 100644
--- a/addons/pos_discount/i18n/tr.po
+++ b/addons/pos_discount/i18n/tr.po
@@ -6,13 +6,14 @@
# Martin Trigaux, 2017
# Ramiz Deniz Öner <deniz@denizoner.com>, 2017
# Ahmet Altinisik <aaltinisik@altinkaya.com.tr>, 2017
+# Umur Akın <umura@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: Ahmet Altinisik <aaltinisik@altinkaya.com.tr>, 2017\n"
+"Last-Translator: Umur Akın <umura@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"
@@ -35,7 +36,7 @@ msgstr "İndirim"
#. module: pos_discount
#: model:ir.ui.view,arch_db:pos_discount.pos_config_view_form_inherit_pos_discount
msgid "Discount %"
-msgstr ""
+msgstr "İndirim %"
#. module: pos_discount
#. openerp-web
diff --git a/addons/pos_mercury/i18n/tr.po b/addons/pos_mercury/i18n/tr.po
index 2c385b22ff2..30887742167 100644
--- a/addons/pos_mercury/i18n/tr.po
+++ b/addons/pos_mercury/i18n/tr.po
@@ -9,13 +9,14 @@
# gezgin biri <gezginbiri@hotmail.com>, 2017
# Gökhan Erdoğdu <gokhan.erdogdu@mechsoft.com.tr>, 2017
# Martin Trigaux, 2017
+# Umur Akın <umura@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: Umur Akın <umura@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"
@@ -108,7 +109,7 @@ msgstr ""
#: code:addons/pos_mercury/static/src/js/pos_mercury.js:360
#, python-format
msgid "Could not read card"
-msgstr ""
+msgstr "Kart okunamadı."
#. module: pos_mercury
#: model:ir.model.fields,field_description:pos_mercury.field_pos_mercury_configuration__create_uid
@@ -165,20 +166,23 @@ msgid ""
" (without having pressed anything else) will charge the full amount of the order to\n"
" the card."
msgstr ""
+"Siparişleri hızlı bir şekilde ele almak için: Sadece ödeme ekranındayken "
+"(başka bir şeye basmadan) kredi kartı geçmek, siparişin tamamını kartta "
+"tahsil edecektir."
#. module: pos_mercury
#. openerp-web
#: code:addons/pos_mercury/static/src/js/pos_mercury.js:256
#, python-format
msgid "Go to payment screen to use cards"
-msgstr ""
+msgstr "Kart kullanmak için ödeme ekranına git"
#. module: pos_mercury
#. openerp-web
#: code:addons/pos_mercury/static/src/js/pos_mercury.js:396
#, python-format
msgid "Handling transaction..."
-msgstr ""
+msgstr "İşlem gerçekleştiriliyor"
#. module: pos_mercury
#: model:ir.model.fields,field_description:pos_mercury.field_pos_mercury_configuration__id
@@ -190,6 +194,8 @@ msgstr "ID"
#: model:ir.model.fields,help:pos_mercury.field_pos_mercury_configuration__merchant_id
msgid "ID of the merchant to authenticate him on the payment provider server"
msgstr ""
+"Ödeme sağlayıcı sunucusunda satıcının kimliğini doğrulamak için satıcı "
+"kimliği"
#. module: pos_mercury
#: model:ir.ui.view,arch_db:pos_mercury.view_pos_mercury_configuration_form
@@ -197,11 +203,13 @@ msgid ""
"If you don't already have a Mercury account, contact Mercury at +1 (800) 846-4472\n"
" to create one."
msgstr ""
+"Eğer bir Mercury hesabınız yoksa, oluşturmak için Mercury ile bağlantıya "
+"geçiniz +1 (800) 846-4472"
#. module: pos_mercury
#: model:ir.model.fields,help:pos_mercury.field_account_bank_statement_line__mercury_invoice_no
msgid "Invoice number from Mercury Pay"
-msgstr ""
+msgstr "Mercury Ödeme'den fatura numarası"
#. module: pos_mercury
#: model:ir.model,name:pos_mercury.model_account_journal
@@ -229,12 +237,12 @@ msgstr "Son Güncelleme"
#. module: pos_mercury
#: model:ir.model.fields,field_description:pos_mercury.field_pos_mercury_configuration__merchant_id
msgid "Merchant ID"
-msgstr ""
+msgstr "Ticari ID"
#. module: pos_mercury
#: model:ir.model.fields,field_description:pos_mercury.field_pos_mercury_configuration__merchant_pwd
msgid "Merchant Password"
-msgstr ""
+msgstr "Satıcı Şifresi"
#. module: pos_mercury
#: model:ir.actions.act_window,name:pos_mercury.action_configuration_form
@@ -245,22 +253,22 @@ msgstr ""
#. module: pos_mercury
#: model:ir.model.fields,field_description:pos_mercury.field_account_journal__pos_mercury_config_id
msgid "Mercury Credentials"
-msgstr ""
+msgstr "Mercury Kimlik Bilgileri"
#. module: pos_mercury
#: model:ir.model.fields,field_description:pos_mercury.field_account_bank_statement_line__mercury_invoice_no
msgid "Mercury invoice number"
-msgstr ""
+msgstr "Mercury fatura numarası"
#. module: pos_mercury
#: model:ir.model.fields,field_description:pos_mercury.field_account_bank_statement_line__mercury_record_no
msgid "Mercury record number"
-msgstr ""
+msgstr "Mercury Kayıt Numarası"
#. module: pos_mercury
#: model:ir.model.fields,field_description:pos_mercury.field_account_bank_statement_line__mercury_ref_no
msgid "Mercury reference number"
-msgstr ""
+msgstr "Mercury Referans Numarası"
#. module: pos_mercury
#: model:ir.model.fields,field_description:pos_mercury.field_pos_mercury_configuration__name
@@ -270,13 +278,13 @@ msgstr "İsim"
#. module: pos_mercury
#: model:ir.model.fields,help:pos_mercury.field_pos_mercury_configuration__name
msgid "Name of this Mercury configuration"
-msgstr ""
+msgstr "Mercury yapılandırmasının adı"
#. module: pos_mercury
#: code:addons/pos_mercury/models/pos_mercury_transaction.py:33
#, python-format
msgid "No Mercury configuration associated with the journal."
-msgstr ""
+msgstr "Yevmiye ile bağlı bir Mercury yapılandırması bulunmuyor."
#. module: pos_mercury
#: code:addons/pos_mercury/models/pos_mercury_transaction.py:21
@@ -289,14 +297,14 @@ msgstr ""
#: code:addons/pos_mercury/static/src/js/pos_mercury.js:328
#, python-format
msgid "No response from Mercury (Mercury down?)"
-msgstr ""
+msgstr "Mercury'den cevap yok (Mercury çöktü mü?)"
#. module: pos_mercury
#. openerp-web
#: code:addons/pos_mercury/static/src/js/pos_mercury.js:330
#, python-format
msgid "No response from server (connected to network?)"
-msgstr ""
+msgstr "Mercury'den cevap yok (Ağa bağlı mı?)"
#. module: pos_mercury
#. openerp-web
@@ -304,44 +312,44 @@ msgstr ""
#: code:addons/pos_mercury/static/src/js/pos_mercury.js:576
#, python-format
msgid "Odoo error while processing transaction."
-msgstr ""
+msgstr "İşlem yapılırken Odoo hata verdi."
#. module: pos_mercury
#. openerp-web
#: code:addons/pos_mercury/static/src/js/pos_mercury.js:651
#, python-format
msgid "One credit card swipe already pending."
-msgstr ""
+msgstr "Bir kredi kartı okutması zaten bekliyor."
#. module: pos_mercury
#. openerp-web
#: code:addons/pos_mercury/static/src/js/pos_mercury.js:469
#, python-format
msgid "Partially approved"
-msgstr ""
+msgstr "Kısmen onaylanmış"
#. module: pos_mercury
#: model:ir.model.fields,help:pos_mercury.field_pos_mercury_configuration__merchant_pwd
msgid ""
"Password of the merchant to authenticate him on the payment provider server"
-msgstr ""
+msgstr "Ödeme sağlayıcı sunucusunda satıcının kimliğini doğrulama şifresi."
#. module: pos_mercury
#: model:ir.model.fields,help:pos_mercury.field_account_bank_statement_line__mercury_record_no
msgid "Payment record number from Mercury Pay"
-msgstr ""
+msgstr "Mercury Ödemesi'nden ödeme kaydı numarası"
#. module: pos_mercury
#: model:ir.model.fields,help:pos_mercury.field_account_bank_statement_line__mercury_ref_no
msgid "Payment reference number from Mercury Pay"
-msgstr ""
+msgstr "Öercury Ödemesi'nden ödeme referans numarası"
#. module: pos_mercury
#. openerp-web
#: code:addons/pos_mercury/static/src/js/pos_mercury.js:416
#, python-format
msgid "Please setup your Mercury merchant account."
-msgstr ""
+msgstr "Lütfen Mercury satıcı hesabınızı kurun."
#. module: pos_mercury
#: model:ir.model,name:pos_mercury.model_pos_order
@@ -360,14 +368,14 @@ msgstr ""
#: code:addons/pos_mercury/static/src/js/pos_mercury.js:548
#, python-format
msgid "Reversal failed, sending VoidSale..."
-msgstr ""
+msgstr "Ters kayıt başarısız oldu, VoidSale gönderiliyor."
#. module: pos_mercury
#. openerp-web
#: code:addons/pos_mercury/static/src/js/pos_mercury.js:590
#, python-format
msgid "Reversal succeeded"
-msgstr ""
+msgstr "Ters Kayıt başarılı oldu."
#. module: pos_mercury
#. openerp-web
@@ -381,7 +389,7 @@ msgstr ""
#: code:addons/pos_mercury/static/src/xml/pos_mercury.xml:47
#, python-format
msgid "TO CARDHOLDER AGREEMENT"
-msgstr ""
+msgstr "Kart Sahibi Sözleşmesi"
#. module: pos_mercury
#: model:ir.model.fields,help:pos_mercury.field_account_bank_statement_line__mercury_card_brand
@@ -391,17 +399,17 @@ msgstr "Ödeme kartının markası (örn. Visa, AMEX, ...)"
#. module: pos_mercury
#: model:ir.model.fields,help:pos_mercury.field_account_bank_statement_line__mercury_prefixed_card_number
msgid "The card number used for the payment."
-msgstr ""
+msgstr "Ödeme için kullanılan kart numarası"
#. module: pos_mercury
#: model:ir.model.fields,help:pos_mercury.field_account_journal__pos_mercury_config_id
msgid "The configuration of Mercury used for this journal"
-msgstr ""
+msgstr "Bu yevmiye için kullanılan Mercury yapılandırması"
#. module: pos_mercury
#: model:ir.model.fields,help:pos_mercury.field_account_bank_statement_line__mercury_card_number
msgid "The last 4 numbers of the card used to pay"
-msgstr ""
+msgstr "Ödeme için kullanılan kartın son 4 numarası"
#. module: pos_mercury
#: model:ir.model.fields,help:pos_mercury.field_account_bank_statement_line__mercury_card_owner_name
@@ -416,6 +424,8 @@ msgid ""
"This can be caused by a badly executed swipe or by not having your keyboard "
"layout set to US QWERTY (not US International)."
msgstr ""
+"Bu kötü gerçekleştirilmiş bir kart işleminden ya da klavyenizin US QWERTY "
+"olarak ayarlanmadığından olabilir. (US International değil)"
#. module: pos_mercury
#. openerp-web
@@ -432,25 +442,28 @@ msgid ""
" just like on any other payment line. Whenever the payment line is set up, a card\n"
" can be swiped through the card reader device."
msgstr ""
+"Satış Noktasında, Mercury entegrasyonu kullanmak basittir: Sadece ilişkili "
+"ödeme yöntemine basın. Sonra tutar ayarlanmış olacaktır (örn. Para üstü). "
+"Ödeme satırı ne zaman kurulursa, kart okuyucudan kartla işlem yapılabilir."
#. module: pos_mercury
#: model:ir.ui.view,arch_db:pos_mercury.pos_config_view_form_inherit_pos_mercury
msgid "Vantiv Accounts"
-msgstr ""
+msgstr "Vantiv Hesabı"
#. module: pos_mercury
#. openerp-web
#: code:addons/pos_mercury/static/src/js/pos_mercury.js:598
#, python-format
msgid "VoidSale succeeded"
-msgstr ""
+msgstr "VoidSale Başarıyla Gerçekleşti"
#. module: pos_mercury
#. openerp-web
#: code:addons/pos_mercury/static/src/xml/pos_mercury.xml:17
#, python-format
msgid "WAITING FOR SWIPE"
-msgstr ""
+msgstr "KART İŞLEMİ İÇİN BEKLEYİNİZ"
#. module: pos_mercury
#: model:ir.ui.view,arch_db:pos_mercury.view_pos_mercury_configuration_form
@@ -458,13 +471,15 @@ msgid ""
"We currently support the MagTek Dynamag card reader device. It can be connected\n"
" directly to the Point Of Sale device or it can be connected to the POSBox."
msgstr ""
+"Biz şu anda MagTek Dynamag kart okuyucu cihazları destekliyoruz.Cihaz Satış "
+"Noktasına ya da POSBox'a bağlanmış olabilir."
#. module: pos_mercury
#. openerp-web
#: code:addons/pos_mercury/static/src/xml/pos_mercury.xml:50
#, python-format
msgid "X______________________________"
-msgstr ""
+msgstr "X_______________________________"
#. module: pos_mercury
#: model:ir.model,name:pos_mercury.model_barcode_rule
diff --git a/addons/pos_restaurant/i18n/tr.po b/addons/pos_restaurant/i18n/tr.po
index f712c79e3d9..f403a4cc836 100644
--- a/addons/pos_restaurant/i18n/tr.po
+++ b/addons/pos_restaurant/i18n/tr.po
@@ -12,13 +12,14 @@
# gezgin biri <gezginbiri@hotmail.com>, 2017
# Ahmet Altinisik <aaltinisik@altinkaya.com.tr>, 2017
# Gökhan Erdoğdu <gokhan.erdogdu@mechsoft.com.tr>, 2017
+# Umur Akın <umura@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: Gökhan Erdoğdu <gokhan.erdogdu@mechsoft.com.tr>, 2017\n"
+"Last-Translator: Umur Akın <umura@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"
@@ -51,11 +52,15 @@ msgid ""
"A restaurant floor represents the place where customers are served, this is where you can\n"
" define and position the tables."
msgstr ""
+"Bir restoran katı, müşterilerin hizmet edildiği yeri temsil eder, burası "
+"tabloları tanımlayıp konumlandırabileceğiniz yerdir."
#. module: pos_restaurant
#: model:ir.ui.view,arch_db:pos_restaurant.pos_config_view_form_inherit_restaurant
msgid "Accept customer tips or convert their change to a tip"
msgstr ""
+"Müşteri bahşişlerini kabul edin ya da değişikleri bir bahşiş olarak "
+"değiştirin"
#. module: pos_restaurant
#: model:ir.model.fields,field_description:pos_restaurant.field_restaurant_table__active
@@ -87,12 +92,12 @@ msgstr ""
#. module: pos_restaurant
#: model:ir.model.fields,help:pos_restaurant.field_pos_config__iface_orderline_notes
msgid "Allow custom notes on Orderlines."
-msgstr ""
+msgstr "Sipariş Satırlarına özel notlara izin verin"
#. module: pos_restaurant
#: model:ir.ui.view,arch_db:pos_restaurant.pos_config_view_form_inherit_restaurant
msgid "Allow to print bill before payment"
-msgstr ""
+msgstr "Ödemeden önce fatura yazdırılmasına izin ver"
#. module: pos_restaurant
#: model:ir.model.fields,help:pos_restaurant.field_pos_config__iface_printbill
@@ -112,7 +117,7 @@ msgstr "Yazıcının iç kimliği"
#. module: pos_restaurant
#: model:ir.model.fields,help:pos_restaurant.field_restaurant_floor__name
msgid "An internal identification of the restaurant floor"
-msgstr ""
+msgstr "Restoran katının iç kimliği"
#. module: pos_restaurant
#: model:ir.ui.view,arch_db:pos_restaurant.view_restaurant_table_form
@@ -231,11 +236,15 @@ msgid ""
" An Order Printer will only print updates for products belonging to one of\n"
" its categories."
msgstr ""
+"Her Sipariş Yazıcısı, yazıcının ve bir ürün kategori listesinin "
+"bulunabileceği, PosBox/Donanım Proxy si tarafından tanımlanan bir IP "
+"adresine sahiptir. Bir Sipariş Yazıcısı ait olduğu kategorilerinden "
+"birindeki güncellemeler için çıktı alacaktır"
#. module: pos_restaurant
#: model:ir.model.fields,help:pos_restaurant.field_pos_config__iface_splitbill
msgid "Enables Bill Splitting in the Point of Sale."
-msgstr ""
+msgstr "Satış Noktasında Fatura Bölmeyi Etkinleştir"
#. module: pos_restaurant
#: model:ir.model.fields,field_description:pos_restaurant.field_restaurant_table__floor_id
@@ -256,7 +265,7 @@ msgstr "Kat Planı"
#. module: pos_restaurant
#: model:ir.ui.view,arch_db:pos_restaurant.pos_config_view_form_inherit_restaurant
msgid "Floors"
-msgstr ""
+msgstr "Katlar"
#. module: pos_restaurant
#. openerp-web
@@ -304,6 +313,8 @@ msgid ""
"If false, the table is deactivated and will not be available in the point of"
" sale"
msgstr ""
+"Eğer yanlışsa, masa iptal etkin değildir ve satış noktası için erişilebilir "
+"olmayacaktır."
#. module: pos_restaurant
#: model:ir.model.fields,field_description:pos_restaurant.field_restaurant_floor____last_update
@@ -329,7 +340,7 @@ msgstr "Son Güncelleme"
#. module: pos_restaurant
#: model:ir.ui.view,arch_db:pos_restaurant.pos_config_view_form_inherit_restaurant
msgid "Manage table orders"
-msgstr ""
+msgstr "Masa Siparişlerini Yönet"
#. module: pos_restaurant
#. openerp-web
@@ -392,6 +403,8 @@ msgid ""
"Order Printers are used by restaurants and bars to print the\n"
" order updates in the kitchen/bar when the waiter updates the order."
msgstr ""
+"Sipariş Yazıcılar, garson siparişi güncellediğinde mutfakta / barda sipariş "
+"güncellemelerini yazdırmak için restoranlar ve barlar tarafından kullanılır."
#. module: pos_restaurant
#: model:ir.model.fields,field_description:pos_restaurant.field_pos_config__iface_orderline_notes
@@ -430,7 +443,7 @@ msgstr "Yazdır"
#. module: pos_restaurant
#: model:ir.ui.view,arch_db:pos_restaurant.pos_config_view_form_inherit_restaurant
msgid "Print orders at the kitchen, at the bar, etc."
-msgstr ""
+msgstr "Mutfakta, barda siparişleri yazdır."
#. module: pos_restaurant
#: model:ir.model.fields,field_description:pos_restaurant.field_restaurant_printer__product_categories_ids
@@ -445,7 +458,7 @@ msgstr "Yazıcı Adı"
#. module: pos_restaurant
#: model:ir.ui.view,arch_db:pos_restaurant.pos_config_view_form_inherit_restaurant
msgid "Printers"
-msgstr ""
+msgstr "Yazıcılar"
#. module: pos_restaurant
#: model:ir.model.fields,field_description:pos_restaurant.field_restaurant_printer__proxy_ip
@@ -517,7 +530,7 @@ msgstr "Böl"
#. module: pos_restaurant
#: model:ir.ui.view,arch_db:pos_restaurant.pos_config_view_form_inherit_restaurant
msgid "Split total or order lines"
-msgstr ""
+msgstr "Bölünmüş toplam ya da sipariş satırları"
#. module: pos_restaurant
#: selection:restaurant.table,shape:0
@@ -546,7 +559,7 @@ msgstr "Tablo"
#. module: pos_restaurant
#: model:ir.model.fields,field_description:pos_restaurant.field_pos_config__is_table_management
msgid "Table Management"
-msgstr ""
+msgstr "Masa Yönetimi"
#. module: pos_restaurant
#: model:ir.model.fields,field_description:pos_restaurant.field_restaurant_table__name
@@ -581,7 +594,7 @@ msgstr "Yazıcının proxy donanımının ip adresi veya hostname'i"
#. module: pos_restaurant
#: model:ir.model.fields,help:pos_restaurant.field_pos_order__customer_count
msgid "The amount of customers that have been served by this order."
-msgstr ""
+msgstr "Bu sipariş ile hizmet edilen müşteri sayısı"
#. module: pos_restaurant
#: model:ir.model.fields,help:pos_restaurant.field_restaurant_floor__background_color
@@ -589,11 +602,12 @@ msgid ""
"The background color of the floor layout, (must be specified in a html-"
"compatible format)"
msgstr ""
+"Zemin düzeninin arka plan rengi, (html uyumlu bir biçimde belirtilmelidir)"
#. module: pos_restaurant
#: model:ir.model.fields,help:pos_restaurant.field_restaurant_table__seats
msgid "The default number of customer served at this table."
-msgstr ""
+msgstr "Bu masadaki müşteri hizmetinin varsayılan numarası."
#. module: pos_restaurant
#: model:ir.model.fields,help:pos_restaurant.field_restaurant_floor__table_ids
@@ -603,18 +617,19 @@ msgstr "Bu Kattaki masa listesi"
#. module: pos_restaurant
#: model:ir.model.fields,help:pos_restaurant.field_pos_config__floor_ids
msgid "The restaurant floors served by this point of sale."
-msgstr ""
+msgstr "Restoran katına bu satış noktası tarafından hizmet verilmiştir."
#. module: pos_restaurant
#: model:ir.model.fields,help:pos_restaurant.field_pos_order__table_id
msgid "The table where this order was served"
-msgstr ""
+msgstr "Bu siparişin servis edildiği masa."
#. module: pos_restaurant
#: model:ir.model.fields,help:pos_restaurant.field_restaurant_table__color
msgid ""
"The table's color, expressed as a valid 'background' CSS property value"
msgstr ""
+"Geçerli bir 'arka plan' CSS özellik değeri olarak ifade edilen masanın rengi"
#. module: pos_restaurant
#: model:ir.model.fields,help:pos_restaurant.field_restaurant_table__height
@@ -627,29 +642,30 @@ msgid ""
"The table's horizontal position from the left side to the table's center, in"
" pixels"
msgstr ""
+"Masanın piksel olarak yatay pozisyonda sol tarafından merkezine konumu."
#. module: pos_restaurant
#: model:ir.model.fields,help:pos_restaurant.field_restaurant_table__position_v
msgid ""
"The table's vertical position from the top to the table's center, in pixels"
-msgstr ""
+msgstr "Masanın piksel olarak dikey olarak "
#. module: pos_restaurant
#: model:ir.model.fields,help:pos_restaurant.field_restaurant_table__width
msgid "The table's width in pixels"
-msgstr ""
+msgstr "Piksel olarak masanın genişliği"
#. module: pos_restaurant
#. openerp-web
#: code:addons/pos_restaurant/static/src/xml/floors.xml:106
#, python-format
msgid "This floor has no tables yet, use the"
-msgstr ""
+msgstr "Bu zeminde henüz masalar yok, kullanın"
#. module: pos_restaurant
#: model:ir.ui.view,arch_db:pos_restaurant.pos_config_view_form_inherit_restaurant
msgid "This product is used as reference on customer receipts."
-msgstr ""
+msgstr "Bu ürün müşteri makbuzu üzerinde referans olarak kullanılır."
#. module: pos_restaurant
#: model:ir.ui.view,arch_db:pos_restaurant.pos_config_view_form_inherit_restaurant
@@ -671,7 +687,7 @@ msgstr "Transfer"
#. module: pos_restaurant
#: model:ir.model.fields,help:pos_restaurant.field_restaurant_floor__sequence
msgid "Used to sort Floors"
-msgstr ""
+msgstr "Kullanılmış Zemin Çeşitleri"
#. module: pos_restaurant
#: model:ir.model.fields,field_description:pos_restaurant.field_restaurant_table__position_v
@@ -697,7 +713,7 @@ msgstr "bir ile"
#: code:addons/pos_restaurant/static/src/js/floors.js:426
#, python-format
msgid "You must be connected to the internet to save your changes."
-msgstr ""
+msgstr "Değişikliklerinizi kaydetmek için internete bağlı olmalısınız."
#. module: pos_restaurant
#. openerp-web
@@ -712,14 +728,14 @@ msgstr "de"
#: code:addons/pos_restaurant/static/src/xml/floors.xml:17
#, python-format
msgid "at table"
-msgstr ""
+msgstr "Masada"
#. module: pos_restaurant
#. openerp-web
#: code:addons/pos_restaurant/static/src/xml/floors.xml:107
#, python-format
msgid "button in the editing toolbar to create new tables."
-msgstr ""
+msgstr "Yeni masalar oluşturmak için düzenleme araç çubuğundaki buton"
#. module: pos_restaurant
#. openerp-web
diff --git a/addons/product/i18n/tr.po b/addons/product/i18n/tr.po
index 5e673cd87b1..b0d08e45a04 100644
--- a/addons/product/i18n/tr.po
+++ b/addons/product/i18n/tr.po
@@ -12,13 +12,14 @@
# Levent Karakaş <levent@mektup.at>, 2018
# Saban Yildiz <sabany@projetgrup.com>, 2018
# Ramiz Deniz Öner <deniz@denizoner.com>, 2018
+# Umur Akın <umura@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: Ramiz Deniz Öner <deniz@denizoner.com>, 2018\n"
+"Last-Translator: Umur Akın <umura@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"
@@ -125,7 +126,7 @@ msgstr ""
#. module: product
#: sql_constraint:product.product:0
msgid "A barcode can only be assigned to one product !"
-msgstr ""
+msgstr "Bir barkod sadece bir ürüne atanabilir!"
#. module: product
#: model:ir.model.fields,help:product.field_product_product__description_sale
@@ -245,7 +246,7 @@ msgstr "Arşiv"
#. module: product
#: model:ir.model.fields,help:product.field_product_supplierinfo__sequence
msgid "Assigns the priority to the list of product vendor."
-msgstr ""
+msgstr "Ürün tedarikçi listesine öncelik atar."
#. module: product
#: model:ir.model.fields,field_description:product.field_product_attribute_line__attribute_id
@@ -300,7 +301,7 @@ msgstr "Barkod"
#. module: product
#: model:ir.model.fields,help:product.field_product_packaging__barcode
msgid "Barcode used for packaging identification."
-msgstr ""
+msgstr "Paketleme tanımlaması için kullanılan barkod"
#. module: product
#: model:ir.model.fields,help:product.field_product_pricelist_item__base
@@ -310,6 +311,8 @@ msgid ""
"Cost Price : The base price will be the cost price.\n"
"Other Pricelist : Computation of the base price based on another Pricelist."
msgstr ""
+"Hesaplama için temel fiyat.\n"
+"Genel Liste Fiyatı: Temel fiyat Satış/Genel Liste Fiyatı olacak."
#. module: product
#: model:ir.model.fields,help:product.field_product_product__list_price
@@ -392,6 +395,8 @@ msgstr "Kategori: %s"
#: model:ir.model.fields,help:product.field_product_attribute__create_variant
msgid "Check this if you want to create multiple variants for this attribute."
msgstr ""
+"Bu eğiliminiz için bir çok değişiklik oluşturmak istiyorsunuz bunu "
+"işaretleyiniz."
#. module: product
#: model:ir.model.fields,field_description:product.field_product_category__child_id
@@ -412,7 +417,7 @@ msgstr "Renk İndeksi"
#. module: product
#: model:ir.ui.view,arch_db:product.res_config_settings_view_form
msgid "Common Product Catalog"
-msgstr ""
+msgstr "Yaygın Ürün Kataloğu"
#. module: product
#: model:ir.model,name:product.model_res_company
@@ -491,6 +496,9 @@ msgid ""
"in average/fifo. Also used as a base price for pricelists. Expressed in the "
"default unit of measure of the product."
msgstr ""
+"Standart fiyat ve ilk fiyat olarak stok değerlemesi için kullanılan maliyet,"
+" ortalama/fifo olarak ayarlanır. Ayrıca fiyat listesi için temel fiyat "
+"olarak da kullanılır. Varsayılan ürün ölçü biriminde ifade edilir."
#. module: product
#: model:ir.model.fields,help:product.field_product_template__standard_price
@@ -499,6 +507,9 @@ msgid ""
"in average/fifo. Also used as a base price for pricelists. Expressed in the "
"default unit of measure of the product. "
msgstr ""
+"Standart fiyat ve ilk fiyat olarak stok değerlemesi için kullanılan maliyet,"
+" ortalama/fifo olarak ayarlanır. Ayrıca fiyat listesi için temel fiyat "
+"olarak da kullanılır. Varsayılan ürün ölçü biriminde ifade edilir."
#. module: product
#: model:ir.model,name:product.model_res_country_group
@@ -631,7 +642,7 @@ msgstr "Açıklama"
#. module: product
#: model:ir.ui.view,arch_db:product.product_template_form_view
msgid "Description for Customers"
-msgstr ""
+msgstr "Müşteri İçin Tanımlama"
#. module: product
#: model:ir.model.fields,help:product.field_product_attribute__sequence
@@ -678,7 +689,7 @@ msgstr ""
#. module: product
#: model:ir.model.fields,help:product.field_product_pricelist_item__date_end
msgid "Ending valid for the pricelist item validation"
-msgstr ""
+msgstr "Fiyat listesi öğe doğrulaması için geçerli bitiş."
#. module: product
#: code:addons/product/models/product.py:56
@@ -699,6 +710,8 @@ msgid ""
"Error! It is not allowed to choose more than one value for a given "
"attribute."
msgstr ""
+"Hata! Belirli bir özellik için birden fazla değerin seçilmesine izin "
+"verilmez."
#. module: product
#: code:addons/product/models/product_pricelist.py:427
@@ -748,6 +761,8 @@ msgid ""
"For the rule to apply, bought/sold quantity must be greater than or equal to the minimum quantity specified in this field.\n"
"Expressed in the default unit of measure of the product."
msgstr ""
+"Kuralın uygulanması için, satın alınan/satılan miktar, bu alanda belirlenen "
+"minimum miktardan daha fazla ya da eşit olmalıdır."
#. module: product
#: selection:product.pricelist.item,compute_price:0
@@ -774,7 +789,7 @@ msgstr "Bir ürün için farklı paketleme yolları tanımlayın"
#: model:ir.model.fields,help:product.field_product_product__sequence
#: model:ir.model.fields,help:product.field_product_template__sequence
msgid "Gives the sequence order when displaying a product list"
-msgstr ""
+msgstr "Ürün listesi gösterildiğinde sıralama emri ver."
#. module: product
#: selection:product.pricelist.item,applied_on:0
@@ -803,6 +818,8 @@ msgid ""
"How many times this Unit of Measure is bigger than the reference Unit of "
"Measure in this category: 1 * (this unit) = ratio * (reference unit)"
msgstr ""
+"Bu kategoride bu birim ölçüleri, referans birim ölçülerinden kaç kat daha "
+"büyüktür: 1*(bu birim)= oran*(referans birim)"
#. module: product
#: model:ir.model.fields,help:product.field_product_uom__factor
@@ -810,6 +827,8 @@ msgid ""
"How much bigger or smaller this unit is compared to the reference Unit of "
"Measure for this category: 1 * (reference unit) = ratio * (this unit)"
msgstr ""
+"Bu kategoride bu birim referans birim ölçüleri ile kıyaslandığında ne kadar "
+"büyük ya da küçük: 1* (referans birim)=oran*(bu birim)"
#. module: product
#: model:ir.model.fields,field_description:product.field_product_attribute__id
@@ -889,7 +908,7 @@ msgstr ""
#. module: product
#: model:ir.model,name:product.model_product_supplierinfo
msgid "Information about a product vendor"
-msgstr ""
+msgstr "Ürün tedarikçisi hakkında bilgi"
#. module: product
#: model:ir.model.fields,field_description:product.field_product_product__default_code
@@ -1224,7 +1243,7 @@ msgstr "Fiyat Listesi Öğesi"
#. module: product
#: model:ir.model.fields,help:product.field_product_pricelist_item__applied_on
msgid "Pricelist Item applicable on selected option"
-msgstr ""
+msgstr "Seçilen seçeneğe uygulanabilen Fiyat Listesi Öğeleri"
#. module: product
#: model:ir.model.fields,field_description:product.field_product_pricelist__item_ids
@@ -1616,6 +1635,9 @@ msgid ""
" * Checked : Product are visible for every company, even if a company is defined on the partner.\n"
" * Unchecked : Each company can see only its product (product where company is defined). Product not related to a company are visible for all companies."
msgstr ""
+"İş ortaklarını, tanımlı tüm şirketlerle paylaş.\n"
+" * İşaretlenmiş : Bir şirketinizde iş ortağı olarak tanımlı olsa bile tüm şirketlerinizde görünür.\n"
+" * İşaretlenmemiş : Her şirket yalnız kendi tanımlı iş ortaklarını görür. Bir şirketle ilişkilendirilmemiş iş ortakları tüm şirketlere görünür."
#. module: product
#: model:ir.ui.view,arch_db:product.product_template_search_view
@@ -1719,7 +1741,7 @@ msgstr ""
#. module: product
#: model:ir.model.fields,help:product.field_product_pricelist_item__date_start
msgid "Starting date for the pricelist item validation"
-msgstr ""
+msgstr "Fiyat listesi öğe doğrulaması için başlangıç tarihi"
#. module: product
#: selection:product.template,type:0
@@ -1759,7 +1781,7 @@ msgstr "Ölçü birimi çevrimi için çevrim oranı 0 olamaz !"
#. module: product
#: model:ir.model.fields,help:product.field_product_packaging__sequence
msgid "The first in the sequence is the default one."
-msgstr ""
+msgstr "İlk sırada olan varsayılan bir tanedir."
#. module: product
#: model:ir.model.fields,help:product.field_product_supplierinfo__min_qty
@@ -1768,13 +1790,16 @@ msgid ""
"Product Unit of Measure if not any, in the default unit of measure of the "
"product otherwise."
msgstr ""
+"Tedarikçi Ürün Birim Ölçülerinde belirtilen ya da belirtilmeyen, bu "
+"tedarikçiden alınacak minimum miktar, eğer belirtilmezse varsayılan ürün "
+"ölçü birimi kullanılır."
#. module: product
#: model:ir.model.fields,help:product.field_product_category__product_count
msgid ""
"The number of products under this category (Does not consider the children "
"categories)"
-msgstr ""
+msgstr "Bu kategori altındaki ürün sayısı (Çocuk kategorisini içermez)"
#. module: product
#: code:addons/product/models/product_attribute.py:74
@@ -1783,11 +1808,13 @@ msgid ""
"The operation cannot be completed:\n"
"You are trying to delete an attribute value with a reference on a product variant."
msgstr ""
+"Operasyon tamamlanamadı.\n"
+"Bir nitelik değerini ürün varyantı üzerindeki referansı ile silmeye çalışıyorsunuz."
#. module: product
#: model:ir.model.fields,help:product.field_product_supplierinfo__price
msgid "The price to purchase a product"
-msgstr ""
+msgstr "Bir ürün satın alma fiyatı"
#. module: product
#: sql_constraint:product.uom:0
@@ -1806,7 +1833,7 @@ msgstr ""
#. module: product
#: model:ir.model.fields,help:product.field_product_packaging__qty
msgid "The total number of products you can have per pallet or box."
-msgstr ""
+msgstr "Palet ya da kutu başına sahip olabileceğiniz ürünlerin toplam sayısı."
#. module: product
#: model:ir.model.fields,help:product.field_product_product__volume
@@ -2120,7 +2147,7 @@ msgstr ""
#: code:addons/product/wizard/product_price_list.py:26
#, python-format
msgid "You have to set a logo or a layout for your company."
-msgstr ""
+msgstr "Şirketiniz için bir logo ya da bir layout ayarlamalısınız."
#. module: product
#: code:addons/product/wizard/product_price_list.py:28
diff --git a/addons/product/i18n/zh_CN.po b/addons/product/i18n/zh_CN.po
index 57b05f6aee6..f322a82f49a 100644
--- a/addons/product/i18n/zh_CN.po
+++ b/addons/product/i18n/zh_CN.po
@@ -34,7 +34,7 @@ msgstr ""
#: code:addons/product/static/src/js/product_template_import.js:13
#, python-format
msgid " Import Template for Products"
-msgstr ""
+msgstr "产品导入模板"
#. module: product
#: selection:product.pricelist.item,applied_on:0
@@ -514,7 +514,7 @@ msgstr "创建变体"
#. module: product
#: model:ir.actions.act_window,help:product.product_pricelist_action2
msgid "Create a new pricelist"
-msgstr ""
+msgstr "创建一个新的价目表"
#. module: product
#: model:ir.actions.act_window,help:product.product_template_action
@@ -1331,7 +1331,7 @@ msgstr "产品包装"
#: model:ir.model.fields,field_description:product.field_res_config_settings__group_stock_packaging
#: model:ir.ui.view,arch_db:product.product_packaging_tree_view
msgid "Product Packagings"
-msgstr ""
+msgstr "产品包装"
#. module: product
#: model:ir.model,name:product.model_product_template
@@ -2216,7 +2216,7 @@ msgstr "盎司"
#: code:addons/product/models/product_template.py:479
#, python-format
msgid "product"
-msgstr ""
+msgstr "产品"
#. module: product
#: model:ir.model,name:product.model_product_attribute_line
diff --git a/addons/project/controllers/portal.py b/addons/project/controllers/portal.py
index e847875f2d1..105e90e9fba 100644
--- a/addons/project/controllers/portal.py
+++ b/addons/project/controllers/portal.py
@@ -2,10 +2,12 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from collections import OrderedDict
+from operator import itemgetter
from odoo import http, _
from odoo.http import request
from odoo.addons.portal.controllers.portal import get_records_pager, CustomerPortal, pager as portal_pager
+from odoo.tools import groupby as groupbyelem
from odoo.osv.expression import OR
@@ -78,6 +80,7 @@ class CustomerPortal(CustomerPortal):
@http.route(['/my/tasks', '/my/tasks/page/<int:page>'], type='http', auth="user", website=True)
def portal_my_tasks(self, page=1, date_begin=None, date_end=None, sortby=None, filterby=None, search=None, search_in='content', **kw):
+ groupby = kw.get('groupby', 'project') #TODO master fix this
values = self._prepare_portal_layout_values()
searchbar_sortings = {
'date': {'label': _('Newest'), 'order': 'create_date desc'},
@@ -95,6 +98,10 @@ class CustomerPortal(CustomerPortal):
'stage': {'input': 'stage', 'label': _('Search in Stages')},
'all': {'input': 'all', 'label': _('Search in All')},
}
+ searchbar_groupby = {
+ 'none': {'input': 'none', 'label': _('None')},
+ 'project': {'input': 'project', 'label': _('Project')},
+ }
# extends filterby criteria with project (criteria name is the project id)
# Note: portal users can't view projects they don't follow
projects = request.env['project.project'].sudo().search([('privacy_visibility', '=', 'portal')])
@@ -142,22 +149,31 @@ class CustomerPortal(CustomerPortal):
step=self._items_per_page
)
# content according to pager and archive selected
+ if groupby == 'project':
+ order = "project_id, %s" % order # force sort on project first to group by project in view
tasks = request.env['project.task'].search(domain, order=order, limit=self._items_per_page, offset=pager['offset'])
request.session['my_tasks_history'] = tasks.ids[:100]
+ if groupby == 'project':
+ grouped_tasks = [request.env['project.task'].concat(*g) for k, g in groupbyelem(tasks, itemgetter('project_id'))]
+ else:
+ grouped_tasks = [tasks]
values.update({
'date': date_begin,
'date_end': date_end,
'projects': projects,
- 'tasks': tasks,
+ 'tasks': tasks, #TODO master remove this, grouped_tasks is enough
+ 'grouped_tasks': grouped_tasks,
'page_name': 'task',
'archive_groups': archive_groups,
'default_url': '/my/tasks',
'pager': pager,
'searchbar_sortings': searchbar_sortings,
+ 'searchbar_groupby': searchbar_groupby,
'searchbar_inputs': searchbar_inputs,
'search_in': search_in,
'sortby': sortby,
+ 'groupby': groupby,
'searchbar_filters': OrderedDict(sorted(searchbar_filters.items())),
'filterby': filterby,
})
diff --git a/addons/project/i18n/zh_CN.po b/addons/project/i18n/zh_CN.po
index 0e0d4569f37..21651cc370f 100644
--- a/addons/project/i18n/zh_CN.po
+++ b/addons/project/i18n/zh_CN.po
@@ -827,7 +827,7 @@ msgstr "合同/分析"
#: code:addons/project/static/src/js/project_task_kanban_examples.js:64
#, python-format
msgid "Copywriting"
-msgstr ""
+msgstr "文案"
#. module: project
#: model:ir.model.fields,field_description:project.field_project_task__displayed_image_id
@@ -853,17 +853,17 @@ msgstr "创建项目"
#: model:ir.actions.act_window,help:project.open_view_project_all
#: model:ir.actions.act_window,help:project.open_view_project_all_config
msgid "Create a new project"
-msgstr ""
+msgstr "创建一个新的项目"
#. module: project
#: model:ir.actions.act_window,help:project.open_task_type_form
msgid "Create a new stage in the task pipeline"
-msgstr ""
+msgstr "在任务管道创建一个新阶段"
#. module: project
#: model:ir.actions.act_window,help:project.project_tags_action
msgid "Create a new tag"
-msgstr ""
+msgstr "创建一个新标签"
#. module: project
#: model:ir.actions.act_window,help:project.action_view_task
@@ -936,7 +936,7 @@ msgstr "客户邮件"
#: code:addons/project/static/src/js/project_task_kanban_examples.js:44
#, python-format
msgid "Customer Feedback"
-msgstr ""
+msgstr "客户反馈"
#. module: project
#: model:ir.actions.act_window,name:project.rating_rating_action_project_report
@@ -2521,7 +2521,7 @@ msgstr "任务分析"
#. module: project
#: model:ir.ui.view,arch_db:project.res_config_settings_view_form
msgid "Tasks Management"
-msgstr ""
+msgstr "任务管理"
#. module: project
#: model:ir.model.fields,field_description:project.field_project_project__type_ids
@@ -2532,7 +2532,7 @@ msgstr "任务阶段"
#. module: project
#: model:ir.model,name:project.model_project_tags
msgid "Tasks Tags"
-msgstr ""
+msgstr "任务标签"
#. module: project
#: model:ir.model,name:project.model_report_project_task_user
@@ -2980,7 +2980,7 @@ msgstr "设置-基础设置"
#: code:addons/project/models/project.py:690
#, python-format
msgid "task"
-msgstr ""
+msgstr "任务"
#. module: project
#: model:ir.actions.act_window,help:project.open_view_project_all
diff --git a/addons/project/views/project_portal_templates.xml b/addons/project/views/project_portal_templates.xml
index cc8ef10df57..c9b54dda06f 100644
--- a/addons/project/views/project_portal_templates.xml
+++ b/addons/project/views/project_portal_templates.xml
@@ -120,36 +120,41 @@
<h3>Tasks
<t t-call="portal.portal_searchbar"/>
</h3>
- <t t-if="not tasks">
+ <t t-if="not grouped_tasks">
<div class="alert alert-warning mt8" role="alert">
There are no tasks.
</div>
</t>
- <div t-if="tasks" class="panel panel-default">
- <div class="table-responsive"><table class="table table-hover o_portal_my_doc_table">
- <thead>
- <tr class="active">
- <th class="col-md-9">Task</th>
- <th class="col-md-2">Stage</th>
- <th>Ref</th>
- </tr>
- </thead>
- <tbody>
- <t t-foreach="tasks" t-as="task">
- <tr>
- <td>
- <a t-attf-href="/my/task/#{task.id}?{{ keep_query() }}"><span t-field="task.name"/></a>
- </td>
- <td>
- <span class="label label-info" title="Current stage of the task" t-esc="task.stage_id.name" />
- </td>
- <td>
- <span t-esc="task.id"/>
- </td>
- </tr>
- </t>
- </tbody>
- </table></div>
+ <div t-if="grouped_tasks" class="panel panel-default">
+ <div class="table-responsive">
+ <t t-foreach="grouped_tasks" t-as="tasks">
+ <table class="table table-hover o_portal_my_doc_table">
+ <thead>
+ <tr class="active">
+ <th t-if="groupby == 'none'" class="col-md-9">Name</th>
+ <th t-else="" class="col-md-9"><span t-field="tasks[0].project_id.label_tasks"/> for project: <span t-field="tasks[0].project_id.name"/></th>
+ <th class="col-md-2">Stage</th>
+ <th>Ref</th>
+ </tr>
+ </thead>
+ <tbody>
+ <t t-foreach="tasks" t-as="task">
+ <tr>
+ <td>
+ <a t-attf-href="/my/task/#{task.id}?{{ keep_query() }}"><span t-field="task.name"/></a>
+ </td>
+ <td>
+ <span class="label label-info" title="Current stage of the task" t-esc="task.stage_id.name" />
+ </td>
+ <td>
+ <span t-esc="task.id"/>
+ </td>
+ </tr>
+ </t>
+ </tbody>
+ </table>
+ </t>
+ </div>
</div>
<div t-if="pager" class="o_portal_pager text-center">
<t t-call="portal.pager"/>
diff --git a/addons/purchase_requisition/i18n/tr.po b/addons/purchase_requisition/i18n/tr.po
index 3cbbcf82248..fb968a38fe4 100644
--- a/addons/purchase_requisition/i18n/tr.po
+++ b/addons/purchase_requisition/i18n/tr.po
@@ -14,13 +14,14 @@
# Güven YILMAZ <guvenyilmaz@outlook.com.tr>, 2017
# Fırat Kaya <firat.kaya@mechsoft.com.tr>, 2017
# Levent Karakaş <levent@mektup.at>, 2018
+# Umur Akın <umura@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: Levent Karakaş <levent@mektup.at>, 2018\n"
+"Last-Translator: Umur Akın <umura@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"
@@ -304,7 +305,7 @@ msgstr ""
#. module: purchase_requisition
#: model:ir.model,name:purchase_requisition.model_product_supplierinfo
msgid "Information about a product vendor"
-msgstr ""
+msgstr "Ürün tedarikçisi hakkında bilgi"
#. module: purchase_requisition
#: model:ir.model.fields,field_description:purchase_requisition.field_purchase_requisition____last_update
diff --git a/addons/repair/i18n/tr.po b/addons/repair/i18n/tr.po
index f3676d83223..88357d2a8f6 100644
--- a/addons/repair/i18n/tr.po
+++ b/addons/repair/i18n/tr.po
@@ -9,13 +9,14 @@
# Levent Karakaş <levent@mektup.at>, 2018
# Murat Kaplan <muratk@projetgrup.com>, 2018
# Ramiz Deniz Öner <deniz@denizoner.com>, 2018
+# Umur Akın <umura@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: Ramiz Deniz Öner <deniz@denizoner.com>, 2018\n"
+"Last-Translator: Umur Akın <umura@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"
@@ -568,7 +569,7 @@ msgstr "İş Ortağı"
#: model:ir.model.fields,field_description:repair.field_repair_order__operations
#: model:ir.ui.view,arch_db:repair.view_repair_order_form
msgid "Parts"
-msgstr ""
+msgstr "Parçalar"
#. module: repair
#: model:ir.ui.view,arch_db:repair.report_repairorder
@@ -716,7 +717,7 @@ msgstr "Onarım Referansı"
#: code:addons/repair/models/repair.py:196
#, python-format
msgid "Repair must be canceled in order to reset it to draft."
-msgstr ""
+msgstr "Taslak sıfırlanması için tamir iptal olmalı."
#. module: repair
#: code:addons/repair/models/repair.py:401
@@ -728,13 +729,13 @@ msgstr "Onarıma başlamadan önce onay gereklidir."
#: code:addons/repair/models/repair.py:429
#, python-format
msgid "Repair must be repaired in order to make the product moves."
-msgstr ""
+msgstr "Ürün hareketi için tamir iptal olmalı."
#. module: repair
#: code:addons/repair/models/repair.py:412
#, python-format
msgid "Repair must be under repair in order to end reparation."
-msgstr ""
+msgstr "Tamirin sona ermesi için tamir durumu altında olmalıdır."
#. module: repair
#: code:addons/repair/models/repair.py:244
diff --git a/addons/sale/i18n/pt_BR.po b/addons/sale/i18n/pt_BR.po
index 24cc143b3b7..a91aeb2dec7 100644
--- a/addons/sale/i18n/pt_BR.po
+++ b/addons/sale/i18n/pt_BR.po
@@ -15,13 +15,14 @@
# Anderson Fratuci <ander.frat@gmail.com>, 2017
# mariana rodrigues <mariana12v@gmail.com>, 2018
# Hildeberto Abreu Magalhães <hildeberto@gmail.com>, 2018
+# lukasgarcya <lukasgarcya@hotmail.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: Hildeberto Abreu Magalhães <hildeberto@gmail.com>, 2018\n"
+"Last-Translator: lukasgarcya <lukasgarcya@hotmail.com>, 2018\n"
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/odoo/teams/41243/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -1831,7 +1832,7 @@ msgstr "Cotação / Pedido"
#. module: sale
#: model:ir.ui.view,arch_db:sale.view_quotation_tree
msgid "Quotation Date"
-msgstr ""
+msgstr "Data da cotação"
#. module: sale
#: model:ir.ui.view,arch_db:sale.view_quotation_tree
@@ -2246,7 +2247,7 @@ msgstr "Configurações"
#. module: sale
#: model:ir.ui.view,arch_db:sale.view_order_form
msgid "Setup default terms and conditions in your sales settings"
-msgstr ""
+msgstr "Definir os termos e as condições padrão nas configurações de vendas"
#. module: sale
#: model:ir.ui.view,arch_db:sale.res_config_settings_view_form
diff --git a/addons/sale_payment/i18n/pt_BR.po b/addons/sale_payment/i18n/pt_BR.po
index ed02fbf5735..2a33df4577f 100644
--- a/addons/sale_payment/i18n/pt_BR.po
+++ b/addons/sale_payment/i18n/pt_BR.po
@@ -10,13 +10,14 @@
# mariana rodrigues <mariana12v@gmail.com>, 2018
# Raphael Rodrigues <raphael0608@gmail.com>, 2018
# Hildeberto Abreu Magalhães <hildeberto@gmail.com>, 2018
+# Diego Bittencourt <diegomb86@gmail.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: Hildeberto Abreu Magalhães <hildeberto@gmail.com>, 2018\n"
+"Last-Translator: Diego Bittencourt <diegomb86@gmail.com>, 2018\n"
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/odoo/teams/41243/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -278,4 +279,4 @@ msgstr "Transações"
#. module: sale_payment
#: model:ir.ui.view,arch_db:sale_payment.payment_confirmation_status
msgid "Your payment has been authorized."
-msgstr ""
+msgstr "Seu pagamento foi autorizado."
diff --git a/addons/stock/i18n/tr.po b/addons/stock/i18n/tr.po
index 2df60064c66..0c1443817db 100644
--- a/addons/stock/i18n/tr.po
+++ b/addons/stock/i18n/tr.po
@@ -11,13 +11,14 @@
# Levent Karakaş <levent@mektup.at>, 2017
# Ayhan KIZILTAN <akiziltan76@hotmail.com>, 2018
# Saban Yildiz <sabany@projetgrup.com>, 2018
+# Umur Akın <umura@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: Saban Yildiz <sabany@projetgrup.com>, 2018\n"
+"Last-Translator: Umur Akın <umura@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"
@@ -2336,7 +2337,7 @@ msgstr "Giriş Konumu"
#: code:addons/stock/models/stock_scrap.py:135
#, python-format
msgid "Insufficient Quantity"
-msgstr ""
+msgstr "Yetersiz Miktar"
#. module: stock
#: model:stock.location,name:stock.stock_location_inter_wh
diff --git a/addons/stock/i18n/zh_CN.po b/addons/stock/i18n/zh_CN.po
index 7c16067af50..cfdf61faf36 100644
--- a/addons/stock/i18n/zh_CN.po
+++ b/addons/stock/i18n/zh_CN.po
@@ -26,13 +26,14 @@
# 山西清水欧度(QQ:54773801) <54773801@qq.com>, 2018
# e2f <projects@e2f.com>, 2018
# e2f_cn c5 <jarvisn@ecinnovations.com>, 2018
+# Maie <m@maie.name>, 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: e2f_cn c5 <jarvisn@ecinnovations.com>, 2018\n"
+"Last-Translator: Maie <m@maie.name>, 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"
@@ -4055,7 +4056,7 @@ msgstr "产品移动"
#: model:ir.ui.menu,name:stock.menu_product_packagings
#: model:ir.ui.view,arch_db:stock.res_config_settings_view_form
msgid "Product Packagings"
-msgstr ""
+msgstr "产品包装"
#. module: stock
#: model:ir.model,name:stock.model_product_template
diff --git a/addons/stock/models/product.py b/addons/stock/models/product.py
index 89284e61147..4146e2ef586 100644
--- a/addons/stock/models/product.py
+++ b/addons/stock/models/product.py
@@ -218,6 +218,19 @@ class Product(models.Model):
domain + loc_domain + ['!'] + dest_loc_domain if dest_loc_domain else domain + loc_domain
)
+ def _search_qty_available(self, operator, value):
+ # In the very specific case we want to retrieve products with stock available, we only need
+ # to use the quants, not the stock moves. Therefore, we bypass the usual
+ # '_search_product_quantity' method and call '_search_qty_available_new' instead. This
+ # allows better performances.
+ if value == 0.0 and operator == '>' and not ({'from_date', 'to_date'} & set(self.env.context.keys())):
+ product_ids = self._search_qty_available_new(
+ operator, value, self.env.context.get('lot_id'), self.env.context.get('owner_id'),
+ self.env.context.get('package_id')
+ )
+ return [('id', 'in', product_ids)]
+ return self._search_product_quantity(operator, value, 'qty_available')
+
def _search_virtual_available(self, operator, value):
# TDE FIXME: should probably clean the search methods
return self._search_product_quantity(operator, value, 'virtual_available')
@@ -242,24 +255,13 @@ class Product(models.Model):
# TODO: Still optimization possible when searching virtual quantities
ids = []
- for product in self.search([]):
+ for product in self.with_context(prefetch_fields=False).search([]):
if OPERATORS[operator](product[field], value):
ids.append(product.id)
return [('id', 'in', ids)]
- def _search_qty_available(self, operator, value):
- # TDE FIXME: should probably clean the search methods
- if value == 0.0 and operator in ('=', '>=', '<='):
- return self._search_product_quantity(operator, value, 'qty_available')
- product_ids = self._search_qty_available_new(operator, value, self._context.get('lot_id'), self._context.get('owner_id'), self._context.get('package_id'))
- if (value > 0 and operator in ('<=', '<')) or (value < 0 and operator in ('>=', '>')):
- # include also unavailable products
- domain = self._search_product_quantity(operator, value, 'qty_available')
- product_ids += domain[0][2]
- return [('id', 'in', product_ids)]
-
def _search_qty_available_new(self, operator, value, lot_id=False, owner_id=False, package_id=False):
- # TDE FIXME: should probably clean the search methods
+ ''' Optimized method which doesn't search on stock.moves, only on stock.quants. '''
product_ids = set()
domain_quant = self._get_domain_locations()[0]
if lot_id:
diff --git a/addons/stock/models/stock_move.py b/addons/stock/models/stock_move.py
index 5ea5f48c4cb..78b6f34c938 100644
--- a/addons/stock/models/stock_move.py
+++ b/addons/stock/models/stock_move.py
@@ -244,14 +244,23 @@ class StockMove(models.Model):
""" This will return the move lines to consider when applying _quantity_done_compute on a stock.move.
In some context, such as MRP, it is necessary to compute quantity_done on filtered sock.move.line."""
self.ensure_one()
- return self.move_line_ids
+ return self.move_line_ids or self.move_line_nosuggest_ids
- @api.depends('move_line_ids.qty_done', 'move_line_ids.product_uom_id')
+ @api.depends('move_line_ids.qty_done', 'move_line_ids.product_uom_id', 'move_line_nosuggest_ids.qty_done')
def _quantity_done_compute(self):
+ """ This field represents the sum of the move lines `qty_done`. It allows the user to know
+ if there is still work to do.
+
+ We take care of rounding this value at the general decimal precision and not the rounding
+ of the move's UOM to make sure this value is really close to the real sum, because this
+ field will be used in `_action_done` in order to know if the move will need a backorder or
+ an extra move.
+ """
for move in self:
+ quantity_done = 0
for move_line in move._get_move_lines():
- # Transform the move_line quantity_done into the move uom.
- move.quantity_done += move_line.product_uom_id._compute_quantity(move_line.qty_done, move.product_uom)
+ quantity_done += move_line.product_uom_id._compute_quantity(move_line.qty_done, move.product_uom, round=False)
+ move.quantity_done = quantity_done
def _quantity_done_set(self):
quantity_done = self[0].quantity_done # any call to create will invalidate `move.quantity_done`
@@ -827,12 +836,22 @@ class StockMove(models.Model):
taken_quantity = min(available_quantity, need)
+ # `taken_quantity` is in the quants unit of measure. There's a possibility that the move's
+ # unit of measure won't be respected if we blindly reserve this quantity, a common usecase
+ # is if the move's unit of measure's rounding does not allow fractional reservation. We chose
+ # to convert `taken_quantity` to the move's unit of measure with a down rounding method and
+ # then get it back in the quants unit of measure with an half-up rounding_method. This
+ # way, we'll never reserve more than allowed.
+ taken_quantity_move_uom = self.product_id.uom_id._compute_quantity(taken_quantity, self.product_uom, rounding_method='DOWN')
+ taken_quantity = self.product_uom._compute_quantity(taken_quantity_move_uom, self.product_id.uom_id, rounding_method='HALF-UP')
+
quants = []
try:
- quants = self.env['stock.quant']._update_reserved_quantity(
- self.product_id, location_id, taken_quantity, lot_id=lot_id,
- package_id=package_id, owner_id=owner_id, strict=strict
- )
+ if not float_is_zero(taken_quantity, precision_rounding=self.product_id.uom_id.rounding):
+ quants = self.env['stock.quant']._update_reserved_quantity(
+ self.product_id, location_id, taken_quantity, lot_id=lot_id,
+ package_id=package_id, owner_id=owner_id, strict=strict
+ )
except UserError:
# If it raises here, it means that the `available_quantity` brought by a done move line
# is not available on the quants itself. This could be the result of an inventory
@@ -893,6 +912,8 @@ class StockMove(models.Model):
continue
need = move.product_qty - move.reserved_availability
taken_quantity = move._update_reserved_quantity(need, available_quantity, move.location_id, strict=False)
+ if float_is_zero(taken_quantity, precision_rounding=move.product_id.uom_id.rounding):
+ continue
if need == taken_quantity:
assigned_moves |= move
else:
@@ -949,6 +970,8 @@ class StockMove(models.Model):
for (location_id, lot_id, package_id, owner_id), quantity in available_move_lines.items():
need = move.product_qty - sum(move.move_line_ids.mapped('product_qty'))
taken_quantity = move._update_reserved_quantity(need, quantity, location_id, lot_id, package_id, owner_id)
+ if float_is_zero(taken_quantity, precision_rounding=move.product_id.uom_id.rounding):
+ continue
if need - taken_quantity == 0.0:
assigned_moves |= move
break
@@ -1052,8 +1075,10 @@ class StockMove(models.Model):
# Split moves where necessary and move quants
for move in moves_todo:
- rounding = move.product_uom.rounding
- if float_compare(move.quantity_done, move.product_uom_qty, precision_rounding=rounding) < 0:
+ # To know whether we need to create a backorder or not, round to the general product's
+ # decimal precision and not the product's UOM.
+ rounding = self.env['decimal.precision'].precision_get('Product Unit of Measure')
+ if float_compare(move.quantity_done, move.product_uom_qty, precision_digits=rounding) < 0:
# Need to do some kind of conversion here
qty_split = move.product_uom._compute_quantity(move.product_uom_qty - move.quantity_done, move.product_id.uom_id, rounding_method='HALF-UP')
new_move = move._split(qty_split)
@@ -1097,15 +1122,17 @@ class StockMove(models.Model):
self.mapped('move_line_ids').unlink()
return super(StockMove, self).unlink()
- def _prepare_move_split_vals(self, uom_qty):
+ def _prepare_move_split_vals(self, qty):
vals = {
- 'product_uom_qty': uom_qty,
+ 'product_uom_qty': qty,
'procure_method': 'make_to_stock',
'move_dest_ids': [(4, x.id) for x in self.move_dest_ids if x.state not in ('done', 'cancel')],
'move_orig_ids': [(4, x.id) for x in self.move_orig_ids],
'origin_returned_move_id': self.origin_returned_move_id.id,
'price_unit': self.price_unit,
}
+ if self.env.context.get('force_split_uom_id'):
+ vals['product_uom'] = self.env.context['force_split_uom_id']
return vals
def _split(self, qty, restrict_partner_id=False):
@@ -1124,9 +1151,18 @@ class StockMove(models.Model):
raise UserError(_('You cannot split a draft move. It needs to be confirmed first.'))
if float_is_zero(qty, precision_rounding=self.product_id.uom_id.rounding) or self.product_qty <= qty:
return self.id
- # HALF-UP rounding as only rounding errors will be because of propagation of error from default UoM
+
+ decimal_precision = self.env['decimal.precision'].precision_get('Product Unit of Measure')
+
+ # `qty` passed as argument is the quantity to backorder and is always expressed in the
+ # quants UOM. If we're able to convert back and forth this quantity in the move's and the
+ # quants UOM, the backordered move can keep the UOM of the move. Else, we'll create is in
+ # the UOM of the quants.
uom_qty = self.product_id.uom_id._compute_quantity(qty, self.product_uom, rounding_method='HALF-UP')
- defaults = self._prepare_move_split_vals(uom_qty)
+ if float_compare(qty, self.product_uom._compute_quantity(uom_qty, self.product_id.uom_id, rounding_method='HALF-UP'), precision_digits=decimal_precision) == 0:
+ defaults = self._prepare_move_split_vals(uom_qty)
+ else:
+ defaults = self.with_context(force_split_uom_id=self.product_id.uom_id.id)._prepare_move_split_vals(qty)
if restrict_partner_id:
defaults['restrict_partner_id'] = restrict_partner_id
@@ -1135,21 +1171,15 @@ class StockMove(models.Model):
if self.env.context.get('source_location_id'):
defaults['location_id'] = self.env.context['source_location_id']
new_move = self.with_context(rounding_method='HALF-UP').copy(defaults)
- # ctx = context.copy()
- # TDE CLEANME: used only in write in this file, to clean
- # ctx['do_not_propagate'] = True
# FIXME: pim fix your crap
- self.with_context(do_not_propagate=True, do_not_unreserve=True, rounding_method='HALF-UP').write({'product_uom_qty': self.product_uom_qty - uom_qty})
-
- # if self.move_dest_id and self.propagate and self.move_dest_id.state not in ('done', 'cancel'):
- # new_move_prop = self.move_dest_id.split(qty)
- # new_move.write({'move_dest_id': new_move_prop})
- # returning the first element of list returned by action_confirm is ok because we checked it wouldn't be exploded (and
- # thus the result of action_confirm should always be a list of 1 element length)
- # In this case we don't merge move since the new move with 0 quantity done will be used for the backorder.
+ # Update the original `product_qty` of the move. Use the general product's decimal
+ # precision and not the move's UOM to handle case where the `quantity_done` is not
+ # compatible with the move's UOM.
+ new_product_qty = self.product_id.uom_id._compute_quantity(self.product_qty - qty, self.product_uom, round=False)
+ new_product_qty = float_round(new_product_qty, precision_digits=self.env['decimal.precision'].precision_get('Product Unit of Measure'))
+ self.with_context(do_not_propagate=True, do_not_unreserve=True, rounding_method='HALF-UP').write({'product_uom_qty': new_product_qty})
new_move = new_move._action_confirm(merge=False)
- # TDE FIXME: due to action confirm change
return new_move.id
def _recompute_state(self):
diff --git a/addons/stock/models/stock_move_line.py b/addons/stock/models/stock_move_line.py
index fccfcf11e91..3344ed00ed9 100644
--- a/addons/stock/models/stock_move_line.py
+++ b/addons/stock/models/stock_move_line.py
@@ -369,6 +369,15 @@ class StockMoveLine(models.Model):
# `action_done` on the next move lines.
ml_to_delete = self.env['stock.move.line']
for ml in self:
+ # Check here if `ml.qty_done` respects the rounding of `ml.product_uom_id`.
+ uom_qty = float_round(ml.qty_done, precision_rounding=ml.product_uom_id.rounding, rounding_method='HALF-UP')
+ precision_digits = self.env['decimal.precision'].precision_get('Product Unit of Measure')
+ qty_done = float_round(ml.qty_done, precision_digits=precision_digits, rounding_method='HALF-UP')
+ if float_compare(uom_qty, qty_done, precision_digits=precision_digits) != 0:
+ raise UserError(_('The quantity done for the product "%s" doesn\'t respect the rounding precision \
+ defined on the unit of measure "%s". Please change the quantity done or the \
+ rounding precision of your unit of measure.') % (ml.product_id.display_name, ml.product_uom_id.name))
+
qty_done_float_compared = float_compare(ml.qty_done, 0, precision_rounding=ml.product_uom_id.rounding)
if qty_done_float_compared > 0:
if ml.product_id.tracking != 'none':
diff --git a/addons/stock/models/stock_picking.py b/addons/stock/models/stock_picking.py
index 02278e5c71a..a928857ab9e 100644
--- a/addons/stock/models/stock_picking.py
+++ b/addons/stock/models/stock_picking.py
@@ -694,7 +694,8 @@ class Picking(models.Model):
# If no lots when needed, raise error
picking_type = self.picking_type_id
- no_quantities_done = all(float_is_zero(move_line.qty_done, precision_rounding=move_line.product_uom_id.rounding) for move_line in self.move_line_ids)
+ precision_digits = self.env['decimal.precision'].precision_get('Product Unit of Measure')
+ no_quantities_done = all(float_is_zero(move_line.qty_done, precision_digits=precision_digits) for move_line in self.move_line_ids)
no_reserved_quantities = all(float_is_zero(move_line.product_qty, precision_rounding=move_line.product_uom_id.rounding) for move_line in self.move_line_ids)
if no_reserved_quantities and no_quantities_done:
raise UserError(_('You cannot validate a transfer if no quantites are reserved nor done. To force the transfer, switch in edit more and encode the done quantities.'))
diff --git a/addons/stock/tests/test_move.py b/addons/stock/tests/test_move.py
index 620bb7a4097..a98ed3fd72c 100644
--- a/addons/stock/tests/test_move.py
+++ b/addons/stock/tests/test_move.py
@@ -976,6 +976,63 @@ class StockMove(TransactionCase):
self.assertEqual(len(move.move_line_ids), 4.0)
+ def test_availability_6(self):
+ """ Check that, in the scenario where a move is in a bigger uom than the uom of the quants
+ and this uom only allows entire numbers, we don't make a partial reservation when the
+ quantity available is not enough to reserve the move. Check also that it is not possible
+ to set `quantity_done` with a value not honouring the UOM's rounding.
+ """
+ # on the dozen uom, set the rounding set 1.0
+ self.uom_dozen.rounding = 1
+
+ # 6 units are available in stock
+ self.env['stock.quant']._update_available_quantity(self.product1, self.stock_location, 6.0)
+
+ # the move should not be reserved
+ move = self.env['stock.move'].create({
+ 'name': 'test_availability_6',
+ 'location_id': self.stock_location.id,
+ 'location_dest_id': self.customer_location.id,
+ 'product_id': self.product1.id,
+ 'product_uom': self.uom_dozen.id,
+ 'product_uom_qty': 1,
+ })
+ move._action_confirm()
+ move._action_assign()
+ self.assertEqual(move.state, 'confirmed')
+
+ # the quants should be left untouched
+ self.assertEqual(self.env['stock.quant']._get_available_quantity(self.product1, self.stock_location), 6.0)
+
+ # make 8 units available, the move should again not be reservabale
+ self.env['stock.quant']._update_available_quantity(self.product1, self.stock_location, 2.0)
+ move._action_assign()
+ self.assertEqual(move.state, 'confirmed')
+ self.assertEqual(self.env['stock.quant']._get_available_quantity(self.product1, self.stock_location), 8.0)
+
+ # make 12 units available, this time the move should be reservable
+ self.env['stock.quant']._update_available_quantity(self.product1, self.stock_location, 4.0)
+ move._action_assign()
+ self.assertEqual(move.state, 'assigned')
+ self.assertEqual(self.env['stock.quant']._get_available_quantity(self.product1, self.stock_location), 0.0)
+
+ # Check it isn't possible to set any value to quantity_done
+ with self.assertRaises(UserError):
+ move.quantity_done = 0.1
+ move._action_done()
+
+ with self.assertRaises(UserError):
+ move.quantity_done = 1.1
+ move._action_done()
+
+ with self.assertRaises(UserError):
+ move.quantity_done = 0.9
+ move._action_done()
+
+ move.quantity_done = 1
+ move._action_done()
+ self.assertEqual(self.env['stock.quant']._get_available_quantity(self.product1, self.customer_location), 12.0)
+
def test_unreserve_1(self):
""" Check that unreserving a stock move sets the products reserved as available and
set the state back to confirmed.
@@ -1505,6 +1562,108 @@ class StockMove(TransactionCase):
self.assertEqual(move_stock_stock_1.state, 'assigned')
self.assertEqual(move_stock_stock_2.state, 'waiting')
+ def test_link_assign_7(self):
+ # on the dozen uom, set the rounding set 1.0
+ self.uom_dozen.rounding = 1
+
+ # 6 units are available in stock
+ self.env['stock.quant']._update_available_quantity(self.product1, self.stock_location, 6.0)
+
+ # create pickings and moves for a pick -> pack mto scenario
+ picking_stock_pack = self.env['stock.picking'].create({
+ 'location_id': self.stock_location.id,
+ 'location_dest_id': self.pack_location.id,
+ 'picking_type_id': self.env.ref('stock.picking_type_internal').id,
+ })
+ move_stock_pack = self.env['stock.move'].create({
+ 'name': 'test_link_assign_7',
+ 'location_id': self.stock_location.id,
+ 'location_dest_id': self.pack_location.id,
+ 'product_id': self.product1.id,
+ 'product_uom': self.uom_dozen.id,
+ 'product_uom_qty': 1.0,
+ 'picking_id': picking_stock_pack.id,
+ })
+ picking_pack_cust = self.env['stock.picking'].create({
+ 'location_id': self.pack_location.id,
+ 'location_dest_id': self.customer_location.id,
+ 'picking_type_id': self.env.ref('stock.picking_type_out').id,
+ })
+ move_pack_cust = self.env['stock.move'].create({
+ 'name': 'test_link_assign_7',
+ 'location_id': self.pack_location.id,
+ 'location_dest_id': self.customer_location.id,
+ 'product_id': self.product1.id,
+ 'product_uom': self.uom_dozen.id,
+ 'product_uom_qty': 1.0,
+ 'picking_id': picking_pack_cust.id,
+ })
+ move_stock_pack.write({'move_dest_ids': [(4, move_pack_cust.id, 0)]})
+ move_pack_cust.write({'move_orig_ids': [(4, move_stock_pack.id, 0)]})
+ (move_stock_pack + move_pack_cust)._action_confirm()
+
+ # the pick should not be reservable because of the rounding of the dozen
+ move_stock_pack._action_assign()
+ self.assertEqual(move_stock_pack.state, 'confirmed')
+ move_pack_cust._action_assign()
+ self.assertEqual(move_pack_cust.state, 'waiting')
+
+ # move the 6 units by adding an unreserved move line
+ move_stock_pack.write({'move_line_ids': [(0, 0, {
+ 'product_id': self.product1.id,
+ 'product_uom_id': self.uom_unit.id,
+ 'qty_done': 6,
+ 'product_uom_qty': 0,
+ 'lot_id': False,
+ 'package_id': False,
+ 'result_package_id': False,
+ 'location_id': move_stock_pack.location_id.id,
+ 'location_dest_id': move_stock_pack.location_dest_id.id,
+ 'picking_id': picking_stock_pack.id,
+ })]})
+
+ # the quantity done on the move should not respect the rounding of the move line
+ self.assertEqual(move_stock_pack.quantity_done, 0.5)
+
+ # create the backorder in the uom of the quants
+ backorder_wizard_dict = picking_stock_pack.button_validate()
+ backorder_wizard = self.env[backorder_wizard_dict['res_model']].browse(backorder_wizard_dict['res_id'])
+ backorder_wizard.process()
+ self.assertEqual(move_stock_pack.state, 'done')
+ self.assertEqual(move_stock_pack.quantity_done, 0.5)
+ self.assertEqual(move_stock_pack.product_uom_qty, 0.5)
+
+ # the second move should not be reservable because of the rounding on the dozen
+ move_pack_cust._action_assign()
+ self.assertEqual(move_pack_cust.state, 'waiting')
+
+ # move a dozen on the backorder to see how we handle the extra move
+ backorder = self.env['stock.picking'].search([('backorder_id', '=', picking_stock_pack.id)])
+ backorder.move_lines.write({'move_line_ids': [(0, 0, {
+ 'product_id': self.product1.id,
+ 'product_uom_id': self.uom_dozen.id,
+ 'qty_done': 1,
+ 'product_uom_qty': 0,
+ 'lot_id': False,
+ 'package_id': False,
+ 'result_package_id': False,
+ 'location_id': backorder.location_id.id,
+ 'location_dest_id': backorder.location_dest_id.id,
+ 'picking_id': backorder.id,
+ })]})
+ overprocessed_wizard_dict = backorder.button_validate()
+ overprocessed_wizard = self.env[overprocessed_wizard_dict['res_model']].browse(overprocessed_wizard_dict['res_id'])
+ overprocessed_wizard.action_confirm()
+ backorder_move = backorder.move_lines
+ self.assertEqual(backorder_move.state, 'done')
+ self.assertEqual(backorder_move.quantity_done, 12.0)
+ self.assertEqual(backorder_move.product_uom_qty, 12.0)
+ self.assertEqual(backorder_move.product_uom, self.uom_unit)
+
+ # the second move should now be reservable
+ move_pack_cust._action_assign()
+ self.assertEqual(move_pack_cust.state, 'assigned')
+
def test_use_unreserved_move_line_1(self):
""" Test that validating a stock move linked to an untracked product reserved by another one
correctly unreserves the other one.
diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py
index c1eb41ac13e..709fbb61d9c 100644
--- a/addons/web/controllers/main.py
+++ b/addons/web/controllers/main.py
@@ -28,6 +28,7 @@ import werkzeug.wsgi
from collections import OrderedDict
from werkzeug.urls import url_decode, iri_to_uri
from xml.etree import ElementTree
+import unicodedata
import odoo
@@ -1110,20 +1111,27 @@ class Binary(http.Controller):
</script>"""
args = []
for ufile in files:
+
+ filename = ufile.filename
+ if request.httprequest.user_agent.browser == 'safari':
+ # Safari sends NFD UTF-8 (where é is composed by 'e' and [accent])
+ # we need to send it the same stuff, otherwise it'll fail
+ filename = unicodedata.normalize('NFD', ufile.filename).encode('UTF-8')
+
try:
attachment = Model.create({
- 'name': ufile.filename,
+ 'name': filename,
'datas': base64.encodestring(ufile.read()),
- 'datas_fname': ufile.filename,
+ 'datas_fname': filename,
'res_model': model,
'res_id': int(id)
})
except Exception:
- args = args.append({'error': _("Something horrible happened")})
+ args.append({'error': _("Something horrible happened")})
_logger.exception("Fail to upload attachment %s" % ufile.filename)
else:
args.append({
- 'filename': ufile.filename,
+ 'filename': filename,
'mimetype': ufile.content_type,
'id': attachment.id
})
diff --git a/addons/web/i18n/fr.po b/addons/web/i18n/fr.po
index acefde7c3b1..9f9d154f062 100644
--- a/addons/web/i18n/fr.po
+++ b/addons/web/i18n/fr.po
@@ -4,9 +4,9 @@
#
# Translators:
# Xavier Belmere <Info@cartmeleon.com>, 2016
+# Martin Trigaux, 2016
# Lionel Sausin <ls@numerigraphe.com>, 2017
# Melanie Bernard <mbe@odoo.com>, 2017
-# Martin Trigaux, 2017
# Olivier Lenoir <olivier.lenoir@free.fr>, 2017
# Maxime Chambreuil <mchambreuil@ursainfosystems.com>, 2017
# Olivier Dony <odo@odoo.com>, 2017
@@ -2256,7 +2256,7 @@ msgstr "Rechercher %(value)s dans %(field)s"
#: code:addons/web/static/src/js/fields/relational_fields.js:400
#, python-format
msgid "Search More..."
-msgstr "Chercher plus..."
+msgstr "Recherche avancée..."
#. module: web
#. openerp-web
diff --git a/addons/web/static/src/js/chrome/action_manager_act_window.js b/addons/web/static/src/js/chrome/action_manager_act_window.js
index 0ed909e2512..e040096f60b 100644
--- a/addons/web/static/src/js/chrome/action_manager_act_window.js
+++ b/addons/web/static/src/js/chrome/action_manager_act_window.js
@@ -615,7 +615,14 @@ ActionManager.include({
};
var controllerDef = action.controllers[viewType];
- if (!controllerDef) {
+ if (!controllerDef || controllerDef.state() === 'rejected') {
+ // if the controllerDef is rejected, it probably means that the js
+ // code or the requests made to the server crashed. In that case,
+ // if we reuse the same deferred, then the switch to the view is
+ // definitely blocked. We want to use a new controller, even though
+ // it is very likely that it will recrash again. At least, it will
+ // give more feedback to the user, and it could happen that one
+ // record crashes, but not another.
controllerDef = newController();
} else {
controllerDef = controllerDef.then(function (controller) {
diff --git a/addons/web/static/src/js/fields/field_registry.js b/addons/web/static/src/js/fields/field_registry.js
index 53a12fc8944..135243398fe 100644
--- a/addons/web/static/src/js/fields/field_registry.js
+++ b/addons/web/static/src/js/fields/field_registry.js
@@ -26,6 +26,7 @@ registry
.add('datetime', basic_fields.FieldDateTime)
.add('domain', basic_fields.FieldDomain)
.add('text', basic_fields.FieldText)
+ .add('html', basic_fields.FieldText)
.add('float', basic_fields.FieldFloat)
.add('char', basic_fields.FieldChar)
.add('link_button', basic_fields.LinkButton)
diff --git a/addons/web/static/src/js/views/basic/basic_model.js b/addons/web/static/src/js/views/basic/basic_model.js
index 45d698cd75b..ec0fad66a06 100644
--- a/addons/web/static/src/js/views/basic/basic_model.js
+++ b/addons/web/static/src/js/views/basic/basic_model.js
@@ -358,6 +358,7 @@ var BasicModel = AbstractModel.extend({
var element = this.localData[id];
var isNew = this.isNew(id);
var rollback = 'rollback' in options ? options.rollback : isNew;
+ var initialOffset = element.offset;
this._visitChildren(element, function (elem) {
if (rollback && elem._savePoint) {
if (elem._savePoint instanceof Array) {
@@ -376,6 +377,7 @@ var BasicModel = AbstractModel.extend({
delete elem.tempLimitIncrement;
}
});
+ element.offset = initialOffset;
},
/**
* Duplicate a record (by calling the 'copy' route)
@@ -3667,7 +3669,7 @@ var BasicModel = AbstractModel.extend({
r._changes[fieldName] = rec.id;
many2ones[fieldName] = true;
} else if (_.contains(['one2many', 'many2many'], fieldType)) {
- var x2mCommands = commands[0][2][fieldName];
+ var x2mCommands = value[2][fieldName];
defs.push(self._processX2ManyCommands(r, fieldName, x2mCommands));
} else {
r._changes[fieldName] = self._parseServerValue(field, r._changes[fieldName]);
diff --git a/addons/web/static/src/js/views/calendar/calendar_model.js b/addons/web/static/src/js/views/calendar/calendar_model.js
index b847d7ca391..240beb9f1dc 100644
--- a/addons/web/static/src/js/views/calendar/calendar_model.js
+++ b/addons/web/static/src/js/views/calendar/calendar_model.js
@@ -559,6 +559,7 @@ return AbstractModel.extend({
});
var fs = [];
+ var undefined_fs = [];
_.each(events, function (event) {
var data = event.record[fieldName];
if (!_.contains(['many2many', 'one2many'], field.type)) {
@@ -568,15 +569,18 @@ return AbstractModel.extend({
}
_.each(data, function (_value) {
var value = _.isArray(_value) ? _value[0] : _value;
- fs.push({
+ var f = {
'color_index': self.model_color === (field.relation || element.model) ? value : false,
'value': value,
- 'label': fieldUtils.format[field.type](_value, field),
+ 'label': fieldUtils.format[field.type](_value, field) || _t("Undefined"),
'avatar_model': field.relation || element.model,
- });
+ };
+ // if field used as color does not have value then push filter in undefined_fs,
+ // such filters should come last in filter list with Undefined string, later merge it with fs
+ value ? fs.push(f) : undefined_fs.push(f);
});
});
- _.each(fs, function (f) {
+ _.each(_.union(fs, undefined_fs), function (f) {
var f1 = _.findWhere(filter.filters, f);
if (f1) {
f1.display = true;
diff --git a/addons/web/static/src/js/views/kanban/kanban_controller.js b/addons/web/static/src/js/views/kanban/kanban_controller.js
index 5e8bcbf963f..986fff3a53e 100644
--- a/addons/web/static/src/js/views/kanban/kanban_controller.js
+++ b/addons/web/static/src/js/views/kanban/kanban_controller.js
@@ -79,6 +79,16 @@ var KanbanController = BasicController.extend({
return this.renderer.updateRecord(this.model.get(id));
},
/**
+ * @param {number[]} ids
+ * @private
+ * @returns {Deferred}
+ */
+ _resequenceColumns: function (ids) {
+ var state = this.model.get(this.handle, {raw: true});
+ var model = state.fields[state.groupedBy[0]].relation;
+ return this.model.resequence(model, ids, this.handle);
+ },
+ /**
* This method calls the server to ask for a resequence. Note that this
* does not rerender the user interface, because in most case, the
* resequencing operation has already been displayed by the renderer.
@@ -134,6 +144,10 @@ var KanbanController = BasicController.extend({
_onAddColumn: function (event) {
var self = this;
this.model.createGroup(event.data.value, this.handle).then(function () {
+ var state = self.model.get(self.handle, {raw: true});
+ var ids = _.pluck(state.data, 'res_id').filter(_.isNumber);
+ return self._resequenceColumns(ids);
+ }).then(function () {
return self.update({}, {reload: false});
}).then(function () {
self._updateButtons();
@@ -396,9 +410,7 @@ var KanbanController = BasicController.extend({
*/
_onResequenceColumn: function (event) {
var self = this;
- var state = this.model.get(this.handle, {raw: true});
- var model = state.fields[state.groupedBy[0]].relation;
- this.model.resequence(model, event.data.ids, this.handle).then(function () {
+ this._resequenceColumns(event.data.ids).then(function () {
self._updateEnv();
});
},
diff --git a/addons/web/static/tests/chrome/action_manager_tests.js b/addons/web/static/tests/chrome/action_manager_tests.js
index 656bc3b8e42..dfafdc85801 100644
--- a/addons/web/static/tests/chrome/action_manager_tests.js
+++ b/addons/web/static/tests/chrome/action_manager_tests.js
@@ -3197,6 +3197,45 @@ QUnit.module('ActionManager', {
delete core.action_registry.ClientAction;
});
+ QUnit.test('web client is not deadlocked when a view crashes', function (assert) {
+ assert.expect(3);
+
+ var readOnFirstRecordDef = $.Deferred();
+
+ var actionManager = createActionManager({
+ actions: this.actions,
+ archs: this.archs,
+ data: this.data,
+ mockRPC: function (route, args) {
+ if (args.method === 'read' && args.args[0][0] === 1) {
+ return readOnFirstRecordDef;
+ }
+ return this._super.apply(this, arguments);
+ }
+ });
+
+ actionManager.doAction(3);
+
+ // open first record in form view. this will crash and will not
+ // display a form view
+ actionManager.$('.o_list_view .o_data_row:first').click();
+
+ readOnFirstRecordDef.reject("not working as intended");
+
+ assert.strictEqual(actionManager.$('.o_list_view').length, 1,
+ "there should still be a list view in dom");
+
+ // open another record, the read will not crash
+ actionManager.$('.o_list_view .o_data_row:eq(2)').click();
+
+ assert.strictEqual(actionManager.$('.o_list_view').length, 0,
+ "there should not be a list view in dom");
+
+ assert.strictEqual(actionManager.$('.o_form_view').length, 1,
+ "there should be a form view in dom");
+
+ actionManager.destroy();
+ });
});
});
diff --git a/addons/web/static/tests/fields/relational_fields_tests.js b/addons/web/static/tests/fields/relational_fields_tests.js
index 01739c7888c..4ba6c124db2 100644
--- a/addons/web/static/tests/fields/relational_fields_tests.js
+++ b/addons/web/static/tests/fields/relational_fields_tests.js
@@ -7109,7 +7109,7 @@ QUnit.module('relational_fields', {
});
QUnit.test('nested x2many default values', function (assert) {
- assert.expect(2);
+ assert.expect(3);
var form = createView({
View: FormView,
@@ -7124,18 +7124,23 @@ QUnit.module('relational_fields', {
'</form>',
mockRPC: function (route, args) {
if (args.model === 'partner' && args.method === 'default_get') {
- return $.when({turtles: [[0, 0, {
- partner_ids: [[6, 0, [4]]],
- }]]});
+ return $.when({
+ turtles: [
+ [0, 0, {partner_ids: [[6, 0, [4]]]}],
+ [0, 0, {partner_ids: [[6, 0, [1]]]}],
+ ],
+ });
}
return this._super.apply(this, arguments);
},
});
- assert.strictEqual(form.$('.o_list_view .o_field_many2manytags[name="partner_ids"] .badge').length, 1,
- "m2mtags should contain one tag");
+ assert.strictEqual(form.$('.o_list_view .o_data_row').length, 2,
+ "one2many list should contain 2 rows");
+ assert.strictEqual(form.$('.o_list_view .o_field_many2manytags[name="partner_ids"] .badge').length, 2,
+ "m2mtags should contain two tags");
assert.strictEqual(form.$('.o_list_view .o_field_many2manytags[name="partner_ids"] .o_badge_text').text(),
- 'aaa', "tag name should have been correctly loaded");
+ 'aaafirst record', "tag names should have been correctly loaded");
form.destroy();
});
diff --git a/addons/web/static/tests/helpers/mock_server.js b/addons/web/static/tests/helpers/mock_server.js
index a66f78ff159..148b7452678 100644
--- a/addons/web/static/tests/helpers/mock_server.js
+++ b/addons/web/static/tests/helpers/mock_server.js
@@ -1015,6 +1015,9 @@ var MockServer = Class.extend({
case '/web/dataset/search_read':
return $.when(this._mockSearchReadController(args));
+
+ case '/web/dataset/resequence':
+ return $.when();
}
if (route.indexOf('/web/image') >= 0 || _.contains(['.png', '.jpg'], route.substr(route.length - 4))) {
return $.when();
diff --git a/addons/web/static/tests/views/calendar_tests.js b/addons/web/static/tests/views/calendar_tests.js
index bc92254d2ad..f24039f2d8d 100644
--- a/addons/web/static/tests/views/calendar_tests.js
+++ b/addons/web/static/tests/views/calendar_tests.js
@@ -124,7 +124,19 @@ QUnit.module('Views', {
};
QUnit.test('simple calendar rendering', function (assert) {
- assert.expect(22);
+ assert.expect(24);
+
+ this.data.event.records.push({
+ id: 7,
+ user_id: session.uid,
+ partner_id: false,
+ name: "event 7",
+ start: "2016-12-18 09:00:00",
+ stop: "2016-12-18 10:00:00",
+ allday: false,
+ partner_ids: [2],
+ type: 1
+ });
var calendar = createView({
View: CalendarView,
@@ -165,7 +177,7 @@ QUnit.module('Views', {
assert.strictEqual($sidebar.find('.o_selected_range').length, 1, "should highlight the target day in mini calendar");
calendar.$buttons.find('.o_calendar_button_month').trigger('click'); // display all the month
- assert.strictEqual(calendar.$('.fc-event').length, 6, "should display 6 events on the month (5 events + 2 week event - 1 'event 6' is filtered)");
+ assert.strictEqual(calendar.$('.fc-event').length, 7, "should display 7 events on the month (5 events + 2 week event - 1 'event 6' is filtered + 1 'Undefined event')");
assert.strictEqual($sidebar.find('.o_selected_range').length, 31, "month scale should highlight all days in mini calendar");
// test filters
@@ -174,15 +186,19 @@ QUnit.module('Views', {
var $typeFilter = $sidebar.find('.o_calendar_filter:has(h3:contains(user))');
assert.ok($typeFilter.length, "should display 'user' filter");
- assert.strictEqual($typeFilter.find('.o_calendar_filter_item').length, 2, "should display 2 filter items for 'user'");
+ assert.strictEqual($typeFilter.find('.o_calendar_filter_item').length, 3, "should display 3 filter items for 'user'");
+
+ // filters which has no value should show with string "Undefined" and should show at the last
+ assert.strictEqual($typeFilter.find('.o_calendar_filter_item:last').data('value'), false, "filters having false value should be displayed at last in filter items");
+ assert.strictEqual($typeFilter.find('.o_calendar_filter_item:last > span').text(), "Undefined", "filters having false value should display 'Undefined' string");
var $attendeesFilter = $sidebar.find('.o_calendar_filter:has(h3:contains(attendees))');
assert.ok($attendeesFilter.length, "should display 'attendees' filter");
assert.strictEqual($attendeesFilter.find('.o_calendar_filter_item').length, 3, "should display 3 filter items for 'attendees' who use write_model (2 saved + Everything)");
assert.ok($attendeesFilter.find('.o_field_many2one').length, "should display one2many search bar for 'attendees' filter");
- assert.strictEqual(calendar.$('.fc-event').length, 6,
- "should display 6 events ('event 5' counts for 2 because it spans two weeks and thus generate two fc-event elements)");
+ assert.strictEqual(calendar.$('.fc-event').length, 7,
+ "should display 7 events ('event 5' counts for 2 because it spans two weeks and thus generate two fc-event elements)");
calendar.$('.o_calendar_filter .o_checkbox input').first().click(); // Disable first filter
assert.strictEqual(calendar.$('.fc-event').length, 4, "should now only display 4 event");
calendar.$('.o_calendar_filter .o_checkbox input').eq(1).click(); // Disable second filter
diff --git a/addons/web/static/tests/views/form_tests.js b/addons/web/static/tests/views/form_tests.js
index 76c97b10d70..4468897010f 100644
--- a/addons/web/static/tests/views/form_tests.js
+++ b/addons/web/static/tests/views/form_tests.js
@@ -6584,6 +6584,35 @@ QUnit.module('Views', {
testUtils.unpatch(mixins.ParentedMixin);
});
+ QUnit.test('do not change pager when discarding current record', function (assert) {
+ assert.expect(2);
+
+ var form = createView({
+ View: FormView,
+ model: 'partner',
+ data: this.data,
+ arch: '<form string="Partners">' +
+ '<field name="foo"/>' +
+ '</form>',
+ viewOptions: {
+ ids: [1, 2],
+ index: 0,
+ },
+ res_id: 2,
+ });
+
+ assert.strictEqual(form.pager.$('.o_pager_counter').text().trim(), '2 / 2',
+ 'pager should indicate that we are on second record');
+
+ form.$buttons.find('.o_form_button_edit').click();
+ form.$buttons.find('.o_form_button_cancel').click();
+
+ assert.strictEqual(form.pager.$('.o_pager_counter').text().trim(), '2 / 2',
+ 'pager should not have changed');
+
+ form.destroy();
+ });
+
QUnit.test('edition in form view on a "noCache" model', function (assert) {
assert.expect(4);
diff --git a/addons/web/static/tests/views/kanban_tests.js b/addons/web/static/tests/views/kanban_tests.js
index fbe345887f3..c5e5f606f61 100644
--- a/addons/web/static/tests/views/kanban_tests.js
+++ b/addons/web/static/tests/views/kanban_tests.js
@@ -1579,7 +1579,7 @@ QUnit.module('Views', {
});
QUnit.test('create a column in grouped on m2o', function (assert) {
- assert.expect(13);
+ assert.expect(14);
var nbRPCs = 0;
var kanban = createView({
@@ -1598,6 +1598,11 @@ QUnit.module('Views', {
if (args.method === 'name_create') {
assert.ok(true, "should call name_create");
}
+ //Create column will call resequence to set column order
+ if (route === '/web/dataset/resequence') {
+ assert.ok(true, "should call resequence");
+ return $.when(true);
+ }
return this._super(route, args);
},
});
@@ -1679,7 +1684,7 @@ QUnit.module('Views', {
});
QUnit.test('delete a column in grouped on m2o', function (assert) {
- assert.expect(28);
+ assert.expect(29);
testUtils.patch(KanbanRenderer, {
_renderGrouped: function () {
diff --git a/addons/web/views/report_templates.xml b/addons/web/views/report_templates.xml
index 6e4cb28702e..9347dff1c07 100644
--- a/addons/web/views/report_templates.xml
+++ b/addons/web/views/report_templates.xml
@@ -68,6 +68,12 @@
<t t-call-assets="web_editor.summernote" t-css="false"/>
<t t-call-assets="web_editor.assets_editor" t-css="false"/>
<t t-call-assets="web.report_assets_editor" t-css="false"/>
+
+ <script type="text/javascript" src="/web/static/src/js/services/session.js"></script>
+ <script type="text/javascript" src="/web_editor/static/src/js/content/body_manager.js"/>
+ <script type="text/javascript" src="/web_editor/static/src/js/root_widget.js"/>
+ <script type="text/javascript" src="/web_editor/static/src/js/iframe.js"></script>
+ <script t-if="enable_editor and inline_mode" type="text/javascript" src="/web_editor/static/src/js/inline.js"></script>
</t>
</head>
<body class="container">
diff --git a/addons/web_editor/i18n/tr.po b/addons/web_editor/i18n/tr.po
index fc757d677a0..619a84af27d 100644
--- a/addons/web_editor/i18n/tr.po
+++ b/addons/web_editor/i18n/tr.po
@@ -15,13 +15,14 @@
# Saban Yildiz <sabany@projetgrup.com>, 2017
# Cem Uygur <cemuygur.beb@gmail.com>, 2017
# İlknur Püskül <ilknurpuskull@gmail.com>, 2017
+# Umur Akın <umura@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: İlknur Püskül <ilknurpuskull@gmail.com>, 2017\n"
+"Last-Translator: Umur Akın <umura@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"
@@ -1219,7 +1220,7 @@ msgstr ""
#: code:addons/web_editor/static/src/js/widgets/ace.js:572
#, python-format
msgid "Server error"
-msgstr ""
+msgstr "Sunucu hatas"
#. module: web_editor
#. openerp-web
diff --git a/addons/web_editor/static/src/js/editor/editor.js b/addons/web_editor/static/src/js/editor/editor.js
index 353104c2c93..95831dd306a 100644
--- a/addons/web_editor/static/src/js/editor/editor.js
+++ b/addons/web_editor/static/src/js/editor/editor.js
@@ -47,8 +47,8 @@ var EditorMenuBar = Widget.extend({
var self = this;
var defs = [this._super.apply(this, arguments)];
- core.bus.on('editor_save_request', this, this._onSaveRequest);
- core.bus.on('editor_discard_request', this, this._onDiscardRequest);
+ core.bus.on('editor_save_request', this, this.save);
+ core.bus.on('editor_discard_request', this, this.cancel);
$('.dropdown-toggle').dropdown();
diff --git a/addons/web_editor/static/src/js/editor/rte.summernote.js b/addons/web_editor/static/src/js/editor/rte.summernote.js
index f6e2ac63aa9..ddf588eb569 100644
--- a/addons/web_editor/static/src/js/editor/rte.summernote.js
+++ b/addons/web_editor/static/src/js/editor/rte.summernote.js
@@ -665,7 +665,15 @@ function summernote_mousedown(event) {
}
// restore range if range lost after clicking on non-editable area
- r = range.create();
+ try {
+ r = range.create();
+ } catch (e) {
+ // If this code is running inside an iframe-editor and that the range
+ // is outside of this iframe, this will fail as the iframe does not have
+ // the permission to check the outside content this way. In that case,
+ // we simply ignore the exception as it is as if there was no range.
+ return;
+ }
var editables = $(".o_editable[contenteditable], .note-editable[contenteditable]");
var r_editable = editables.has((r||{}).sc);
if (!r_editable.closest('.note-editor').is($editable) && !r_editable.filter('.o_editable').is(editables)) {
diff --git a/addons/web_editor/static/src/js/editor/transcoder.js b/addons/web_editor/static/src/js/editor/transcoder.js
index 1a77b3d19e7..4fa30978f84 100644
--- a/addons/web_editor/static/src/js/editor/transcoder.js
+++ b/addons/web_editor/static/src/js/editor/transcoder.js
@@ -105,25 +105,47 @@ function getMatchedCSSRules(a) {
delete style.display;
}
- _.each(['margin', 'padding'], function (p) {
- if (style[p+'-top'] || style[p+'-right'] || style[p+'-bottom'] || style[p+'-left']) {
- if (style[p+'-top'] === style[p+'-right'] && style[p+'-top'] === style[p+'-bottom'] && style[p+'-top'] === style[p+'-left']) {
+ // The css generates all the attributes separately and not in simplified form.
+ // In order to have a better compatibility (outlook for example) we simplify the css tags.
+ // e.g. border-left-style: none; border-bottom-s .... will be simplified in border-style = none
+ _.each([['margin'], ['padding'], ['border', 'style']], function (attr) {
+ var p = attr[0];
+ var e = attr[1] ? '-' + attr[1] : '';
+
+ if (style[p+'-top'+e] || style[p+'-right'+e] || style[p+'-bottom'+e] || style[p+'-left'+e]) {
+ if (style[p+'-top'+e] === style[p+'-right'+e] && style[p+'-top'+e] === style[p+'-bottom'+e] && style[p+'-top'+e] === style[p+'-left'+e]) {
// keep => property: [top/right/bottom/left value];
- style[p] = style[p+'-top'];
+ style[p+e] = style[p+'-top'+e];
}
else {
// keep => property: [top value] [right value] [bottom value] [left value];
- style[p] = (style[p+'-top'] || 0) + ' ' + (style[p+'-right'] || 0) + ' ' + (style[p+'-bottom'] || 0) + ' ' + (style[p+'-left'] || 0);
- if (style[p].indexOf('inherit') !== -1 || style[p].indexOf('initial') !== -1) {
+ style[p+e] = (style[p+'-top'+e] || 0) + ' ' + (style[p+'-right'+e] || 0) + ' ' + (style[p+'-bottom'+e] || 0) + ' ' + (style[p+'-left'+e] || 0);
+ if (style[p+e].indexOf('inherit') !== -1 || style[p+e].indexOf('initial') !== -1) {
// keep => property-top: [top value]; property-right: [right value]; property-bottom: [bottom value]; property-left: [left value];
- delete style[p];
+ delete style[p+e];
return;
}
}
- delete style[p+'-top'];
- delete style[p+'-right'];
- delete style[p+'-bottom'];
- delete style[p+'-left'];
+ delete style[p+'-top'+e];
+ delete style[p+'-right'+e];
+ delete style[p+'-bottom'+e];
+ delete style[p+'-left'+e];
+ }
+ });
+
+ if (style['border-bottom-left-radius']) {
+ style['border-radius'] = style['border-bottom-left-radius'];
+ delete style['border-bottom-left-radius'];
+ delete style['border-bottom-right-radius'];
+ delete style['border-top-left-radius'];
+ delete style['border-top-right-radius'];
+ }
+
+ // if the border styling is initial we remove it to simplify the css tags for compatibility.
+ // Also, since we do not send a css style tag, the initial value of the border is useless.
+ _.each(_.keys(style), function (k) {
+ if (k.indexOf('border') !== -1 && style[k] === 'initial') {
+ delete style[k];
}
});
@@ -229,6 +251,33 @@ function classToStyle($editable) {
} else {
$target.attr('style', style);
}
+ // Apple Mail
+ if (this.nodeName === 'TD' && !this.childNodes.length) {
+ this.innerHTML = '&nbsp;';
+ }
+
+ // Outlook
+ if (this.nodeName === 'A' && $target.hasClass('btn') && !$target.children().length) {
+ var $hack = $('<table class="o_outlook_hack"><tr><td></td></tr></table>');
+ $hack.find('td')
+ .attr('height', $target.outerHeight())
+ .css({
+ 'margin': $target.css('padding'),
+ 'border-radius': $target.css('border-radius'),
+ 'background-color': $target.css('background-color'),
+ });
+ $target.after($hack);
+ $target.appendTo($hack.find('td'));
+ // the space add a line when it's a table but it's invisible when it's a link
+ var node = $hack[0].previousSibling;
+ if (node && node.nodeType === Node.TEXT_NODE && !node.textContent.match(/\S/)) {
+ $(node).remove();
+ }
+ node = $hack[0].nextSibling;
+ if (node && node.nodeType === Node.TEXT_NODE && !node.textContent.match(/\S/)) {
+ $(node).remove();
+ }
+ }
});
}
@@ -239,6 +288,11 @@ function classToStyle($editable) {
* @param {jQuery} $editable
*/
function styleToClass($editable) {
+ // Outlook revert
+ $editable.find('table.o_outlook_hack').each(function () {
+ $(this).after($('a', this));
+ }).remove();
+
getMatchedCSSRules($editable[0]);
var $c = $('<span/>').appendTo(document.body);
diff --git a/addons/website/static/src/scss/website.ui.scss b/addons/website/static/src/scss/website.ui.scss
index a87be36a855..319dc591dbb 100644
--- a/addons/website/static/src/scss/website.ui.scss
+++ b/addons/website/static/src/scss/website.ui.scss
@@ -108,7 +108,7 @@ body .modal {
@include o-w-preserve-modals;
@include o-w-preserve-tabs;
- button.close {
+ &:not(.oe_mobile_preview) button.close {
@include o-w-close-icon(12px);
margin-right: -2px;
}
diff --git a/addons/website_blog/static/src/js/website_blog.editor.js b/addons/website_blog/static/src/js/website_blog.editor.js
index 3cf1b92647f..b5ca03689b0 100644
--- a/addons/website_blog/static/src/js/website_blog.editor.js
+++ b/addons/website_blog/static/src/js/website_blog.editor.js
@@ -132,7 +132,11 @@ options.registry.blog_cover = options.Class.extend({
this.$image.css("background-image", "");
},
change: function (previewMode, value, $li) {
- var $image = $("<img/>", {src: this.$image.css("background-image")});
+ var $image = $("<img/>");
+ var background = this.$image.css("background-image");
+ if (background && background !== "none") {
+ $image.attr('src', background.match(/^url\(["']?(.+?)["']?\)$/)[1]);
+ }
var editor = new weWidgets.MediaDialog(this, {
onlyImages: true,
diff --git a/addons/website_sale/controllers/main.py b/addons/website_sale/controllers/main.py
index 8ea0fab72d0..41b45932c15 100644
--- a/addons/website_sale/controllers/main.py
+++ b/addons/website_sale/controllers/main.py
@@ -2,7 +2,7 @@
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import json
import logging
-from werkzeug.exceptions import Forbidden
+from werkzeug.exceptions import Forbidden, NotFound
from odoo import fields, http, tools, _
from odoo.http import request
@@ -220,6 +220,11 @@ class WebsiteSale(http.Controller):
else:
ppg = PPG
+ if category:
+ category = request.env['product.public.category'].search([('id', '=', int(category))], limit=1)
+ if not category:
+ raise NotFound()
+
attrib_list = request.httprequest.args.getlist('attrib')
attrib_values = [[int(x) for x in v.split("-")] for v in attrib_list if v]
attributes_ids = {v[0] for v in attrib_values}
@@ -236,9 +241,6 @@ class WebsiteSale(http.Controller):
url = "/shop"
if search:
post["search"] = search
- if category:
- category = request.env['product.public.category'].browse(int(category))
- url = "/shop/category/%s" % slug(category)
if attrib_list:
post['attrib'] = attrib_list
@@ -247,6 +249,7 @@ class WebsiteSale(http.Controller):
parent_category_ids = []
if category:
+ url = "/shop/category/%s" % slug(category)
parent_category_ids = [category.id]
current_category = category
while current_category.parent_id:
diff --git a/addons/website_sale/models/res_config_settings.py b/addons/website_sale/models/res_config_settings.py
index a5eae035448..9de089dee86 100644
--- a/addons/website_sale/models/res_config_settings.py
+++ b/addons/website_sale/models/res_config_settings.py
@@ -44,7 +44,12 @@ class ResConfigSettings(models.TransientModel):
default=_default_order_mail_template, domain="[('model', '=', 'sale.order')]",
help="Email sent to customer at the end of the checkout process")
- automatic_invoice = fields.Boolean("Automatic Invoice")
+ automatic_invoice = fields.Boolean("Automatic Invoice",
+ help="The invoice is generated automatically and available in the customer portal "
+ "when the transaction is confirmed by the payment acquirer.\n"
+ "The invoice is marked as paid and the payment is registered in the payment journal "
+ "defined in the configuration of the payment acquirer.\n"
+ "This mode is advised if you issue the final invoice at the order and not after the delivery.")
module_l10n_eu_service = fields.Boolean(string="EU Digital Goods VAT")
diff --git a/addons/website_sale/views/sale_order_views.xml b/addons/website_sale/views/sale_order_views.xml
index ac90ec39db6..848ce6106d4 100644
--- a/addons/website_sale/views/sale_order_views.xml
+++ b/addons/website_sale/views/sale_order_views.xml
@@ -222,17 +222,9 @@
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form"/>
<field name="arch" type="xml">
- <xpath expr="//button[@name='action_quotation_send']" position="after">
- <button name="action_mark_as_paid" type="object"
- string="Mark as Paid" class="btn-primary"
- attrs="{'invisible': ['|', ('can_directly_mark_as_paid', '=', False), ('state', 'not in', ['sent', 'sale'])]}"/>
- </xpath>
<field name="partner_id" position="after">
<field name="can_directly_mark_as_paid" invisible="1"/>
</field>
- <xpath expr="//button[@id='action_confirm']" position="attributes">
- <attribute name="attrs">{'invisible': ['|',('can_directly_mark_as_paid', '=', True), ('state', 'not in', ['sent'])]}</attribute>
- </xpath>
</field>
</record>