diff --git a/addons/account/data/mail_template_data.xml b/addons/account/data/mail_template_data.xml
index f461a27145232043a0ff7899d3e94bddc22d2393..4bb340a4f5c38f2ba6b356cf25a8f0e3a2824d15 100644
--- a/addons/account/data/mail_template_data.xml
+++ b/addons/account/data/mail_template_data.xml
@@ -7,7 +7,7 @@
         <!--Email template -->
         <record id="email_template_edi_invoice" model="mail.template">
             <field name="name">Invoicing: Invoice email</field>
-            <field name="email_from">${(object.user_id.email and '%s &lt;%s&gt;' % (object.user_id.name, object.user_id.email) or '')|safe}</field>
+            <field name="email_from">${(object.user_id.email and '&quot;%s&quot; &lt;%s&gt;' % (object.user_id.name, object.user_id.email) or '')|safe}</field>
             <field name="subject">${object.company_id.name} Invoice (Ref ${object.number or 'n/a'})</field>
             <field name="partner_to">${object.partner_id.id}</field>
             <field name="model_id" ref="account.model_account_invoice"/>
diff --git a/addons/account/models/account_invoice.py b/addons/account/models/account_invoice.py
index 905f10f4334cd92de94e1bcdf081f21126da06e1..020d725e3caf6071ef1a8e53587e7618f71b2e35 100644
--- a/addons/account/models/account_invoice.py
+++ b/addons/account/models/account_invoice.py
@@ -1374,8 +1374,6 @@ class AccountInvoice(models.Model):
         else:
             payment_method = self.env.ref('account.account_payment_method_manual_out')
             journal_payment_methods = pay_journal.outbound_payment_method_ids
-        if payment_method not in journal_payment_methods:
-            raise UserError(_('No appropriate payment method enabled on journal %s') % pay_journal.name)
 
         communication = self.type in ('in_invoice', 'in_refund') and self.reference or self.number
         if self.origin:
diff --git a/addons/account/models/company.py b/addons/account/models/company.py
index 8ae4230a7b20ee03037630df9410555b26c91ec3..0209ea5c849ea2193d89b00264fa1c15bfceba07 100644
--- a/addons/account/models/company.py
+++ b/addons/account/models/company.py
@@ -2,10 +2,12 @@
 
 from datetime import timedelta, datetime
 import calendar
+import time
+from dateutil.relativedelta import relativedelta
 
 from odoo import fields, models, api, _
 from odoo.exceptions import ValidationError, UserError
-from odoo.exceptions import UserError
+from odoo.tools.misc import DEFAULT_SERVER_DATE_FORMAT
 from odoo.tools.float_utils import float_round, float_is_zero
 
 
@@ -63,6 +65,61 @@ Best Regards,'''))
     account_setup_coa_done = fields.Boolean(string='Chart of Account Checked', help="Technical field holding the status of the chart of account setup step.")
     account_setup_bar_closed = fields.Boolean(string='Setup Bar Closed', help="Technical field set to True when setup bar has been closed by the user.")
 
+    @api.multi
+    def _check_lock_dates(self, vals):
+        '''Check the lock dates for the current companies. This can't be done in a api.constrains because we need
+        to perform some comparison between new/old values. This method forces the lock dates to be irreversible.
+
+        * You cannot define stricter conditions on advisors than on users. Then, the lock date on advisor must be set
+        after the lock date for users.
+        * You cannot lock a period that is not finished yet. Then, the lock date for advisors must be set after the
+        last day of the previous month.
+        * The new lock date for advisors must be set after the previous lock date.
+
+        :param vals: The values passed to the write method.
+        '''
+        period_lock_date = vals.get('period_lock_date') and\
+            time.strptime(vals['period_lock_date'], DEFAULT_SERVER_DATE_FORMAT)
+        fiscalyear_lock_date = vals.get('fiscalyear_lock_date') and\
+            time.strptime(vals['fiscalyear_lock_date'], DEFAULT_SERVER_DATE_FORMAT)
+
+        previous_month = datetime.strptime(fields.Date.today(), DEFAULT_SERVER_DATE_FORMAT) + relativedelta(months=-1)
+        days_previous_month = calendar.monthrange(previous_month.year, previous_month.month)
+        previous_month = previous_month.replace(day=days_previous_month[1]).timetuple()
+        for company in self:
+            old_fiscalyear_lock_date = company.fiscalyear_lock_date and\
+                time.strptime(company.fiscalyear_lock_date, DEFAULT_SERVER_DATE_FORMAT)
+
+            # The user attempts to remove the lock date for advisors
+            if old_fiscalyear_lock_date and not fiscalyear_lock_date and 'fiscalyear_lock_date' in vals:
+                raise ValidationError(_('The lock date for advisors is irreversible and can\'t be removed.'))
+
+            # The user attempts to set a lock date for advisors prior to the previous one
+            if old_fiscalyear_lock_date and fiscalyear_lock_date and fiscalyear_lock_date < old_fiscalyear_lock_date:
+                raise ValidationError(_('The new lock date for advisors must be set after the previous lock date.'))
+
+            # In case of no new fiscal year in vals, fallback to the oldest
+            if not fiscalyear_lock_date:
+                if old_fiscalyear_lock_date:
+                    fiscalyear_lock_date = old_fiscalyear_lock_date
+                else:
+                    continue
+
+            # The user attempts to set a lock date for advisors prior to the last day of previous month
+            if fiscalyear_lock_date > previous_month:
+                raise ValidationError(_('You cannot lock a period that is not finished yet. Please make sure that the lock date for advisors is not set after the last day of the previous month.'))
+
+            # In case of no new period lock date in vals, fallback to the one defined in the company
+            if not period_lock_date:
+                if company.period_lock_date:
+                    period_lock_date = time.strptime(company.period_lock_date, DEFAULT_SERVER_DATE_FORMAT)
+                else:
+                    continue
+
+            # The user attempts to set a lock date for advisors prior to the lock date for users
+            if period_lock_date < fiscalyear_lock_date:
+                raise ValidationError(_('You cannot define stricter conditions on advisors than on users. Please make sure that the lock date on advisor is set before the lock date for users.'))
+
     @api.model
     def _verify_fiscalyear_last_day(self, company_id, last_day, last_month):
         company = self.browse(company_id)
diff --git a/addons/account/tests/test_account_move_closed_period.py b/addons/account/tests/test_account_move_closed_period.py
index 298738a0d6c54ebbbd7c86f133ae0ff59e8a0576..5de3e97ac4fe632b990b4dd7429ce7679cccfad8 100644
--- a/addons/account/tests/test_account_move_closed_period.py
+++ b/addons/account/tests/test_account_move_closed_period.py
@@ -1,6 +1,8 @@
 from odoo.addons.account.tests.account_test_classes import AccountingTestCase
 from odoo.osv.orm import except_orm
-from datetime import datetime, timedelta
+from datetime import datetime
+from dateutil.relativedelta import relativedelta
+from calendar import monthrange
 from odoo.tools import DEFAULT_SERVER_DATE_FORMAT
 from odoo.tests import tagged
 
@@ -14,14 +16,16 @@ class TestPeriodState(AccountingTestCase):
     def setUp(self):
         super(TestPeriodState, self).setUp()
         self.user_id = self.env.user
-        self.day_before_yesterday = datetime.now() - timedelta(2)
-        self.yesterday = datetime.now() - timedelta(1)
-        self.yesterday_str = self.yesterday.strftime(DEFAULT_SERVER_DATE_FORMAT)
+
+        last_day_month = datetime.now() - relativedelta(months=1)
+        last_day_month = last_day_month.replace(day=monthrange(last_day_month.year, last_day_month.month)[1])
+        self.last_day_month_str = last_day_month.strftime(DEFAULT_SERVER_DATE_FORMAT)
+
         #make sure there is no unposted entry
-        draft_entries = self.env['account.move'].search([('date', '<=', self.yesterday_str), ('state', '=', 'draft')])
+        draft_entries = self.env['account.move'].search([('date', '<=', self.last_day_month_str), ('state', '=', 'draft')])
         if draft_entries:
             draft_entries.post()
-        self.user_id.company_id.write({'fiscalyear_lock_date': self.yesterday_str})
+        self.user_id.company_id.fiscalyear_lock_date = self.last_day_month_str
         self.sale_journal_id = self.env['account.journal'].search([('type', '=', 'sale')])[0]
         self.account_id = self.env['account.account'].search([('internal_type', '=', 'receivable')])[0]
 
@@ -30,7 +34,7 @@ class TestPeriodState(AccountingTestCase):
             move = self.env['account.move'].create({
                 'name': '/',
                 'journal_id': self.sale_journal_id.id,
-                'date': self.day_before_yesterday.strftime(DEFAULT_SERVER_DATE_FORMAT),
+                'date': self.last_day_month_str,
                 'line_ids': [(0, 0, {
                         'name': 'foo',
                         'debit': 10,
diff --git a/addons/account/tests/test_reconciliation.py b/addons/account/tests/test_reconciliation.py
index 4a50c812620f7e6fdeacf9fd9110fb9db534cf83..1fce897b602243105e93eecc3bc72588537b6a9d 100644
--- a/addons/account/tests/test_reconciliation.py
+++ b/addons/account/tests/test_reconciliation.py
@@ -42,6 +42,12 @@ class TestReconciliation(AccountingTestCase):
         self.diff_income_account = self.env['res.users'].browse(self.env.uid).company_id.income_currency_exchange_account_id
         self.diff_expense_account = self.env['res.users'].browse(self.env.uid).company_id.expense_currency_exchange_account_id
 
+        self.inbound_payment_method = self.env['account.payment.method'].create({
+            'name': 'inbound',
+            'code': 'IN',
+            'payment_type': 'inbound',
+        })
+
     def create_invoice(self, type='out_invoice', invoice_amount=50, currency_id=None):
         #we create an invoice in given currency
         invoice = self.account_invoice_model.create({'partner_id': self.partner_agrolait_id,
@@ -709,6 +715,49 @@ class TestReconciliation(AccountingTestCase):
         credit_aml.with_context(invoice_id=inv.id).remove_move_reconcile()
         self.assertAlmostEquals(inv.residual, 111)
 
+    def test_revert_payment_and_reconcile(self):
+        payment = self.env['account.payment'].create({
+            'payment_method_id': self.inbound_payment_method.id,
+            'payment_type': 'inbound',
+            'partner_type': 'customer',
+            'partner_id': self.partner_agrolait_id,
+            'journal_id': self.bank_journal_usd.id,
+            'payment_date': '2018-06-04',
+            'amount': 666,
+        })
+        payment.post()
+
+        self.assertEqual(len(payment.move_line_ids), 2)
+
+        bank_line = payment.move_line_ids.filtered(lambda l: l.account_id.id == self.bank_journal_usd.default_debit_account_id.id)
+        customer_line = payment.move_line_ids - bank_line
+
+        self.assertEqual(len(bank_line), 1)
+        self.assertEqual(len(customer_line), 1)
+        self.assertNotEqual(bank_line.id, customer_line.id)
+
+        self.assertEqual(bank_line.move_id.id, customer_line.move_id.id)
+        move = bank_line.move_id
+
+        # Reversing the payment's move
+        reversed_move_list = move.reverse_moves('2018-06-04')
+        self.assertEqual(len(reversed_move_list), 1)
+        reversed_move = self.env['account.move'].browse(reversed_move_list[0])
+
+        self.assertEqual(len(reversed_move.line_ids), 2)
+
+        # Testing the reconciliation matching between the move lines and their reversed counterparts
+        reversed_bank_line = reversed_move.line_ids.filtered(lambda l: l.account_id.id == self.bank_journal_usd.default_debit_account_id.id)
+        reversed_customer_line = reversed_move.line_ids - reversed_bank_line
+
+        self.assertEqual(len(reversed_bank_line), 1)
+        self.assertEqual(len(reversed_customer_line), 1)
+        self.assertNotEqual(reversed_bank_line.id, reversed_customer_line.id)
+        self.assertEqual(reversed_bank_line.move_id.id, reversed_customer_line.move_id.id)
+
+        self.assertEqual(reversed_bank_line.full_reconcile_id.id, bank_line.full_reconcile_id.id)
+        self.assertEqual(reversed_customer_line.full_reconcile_id.id, customer_line.full_reconcile_id.id)
+
     def test_partial_reconcile_currencies_02(self):
         ####
         # Day 1: Invoice Cust/001 to customer (expressed in USD)
diff --git a/addons/account/views/account_view.xml b/addons/account/views/account_view.xml
index 00b716edb51ae19877c9d4171afdd24cd3c16404..503ac0bd0a75fbe5dde3a0fcc97bf9a719ffd648 100644
--- a/addons/account/views/account_view.xml
+++ b/addons/account/views/account_view.xml
@@ -1166,7 +1166,8 @@
                         <group>
                             <field name="name"/>
                             <field name="partner_id"
-                                domain="['|', ('parent_id', '=', False), ('is_company', '=', True)]"/>
+                                domain="['|', ('parent_id', '=', False), ('is_company', '=', True)]"
+                                attrs="{'readonly': [('parent_state', '=', 'posted')]}"/>
                         </group>
                         <notebook colspan="4">
                             <page string="Information">
diff --git a/addons/account_lock/__init__.py b/addons/account_lock/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..cde864bae21a11c0e4f50067aa46b4c497549b4c
--- /dev/null
+++ b/addons/account_lock/__init__.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+
+from . import models
diff --git a/addons/account_lock/__manifest__.py b/addons/account_lock/__manifest__.py
new file mode 100644
index 0000000000000000000000000000000000000000..67e76b49098bc2eaeeb9eeec4d28e2f64621e5d4
--- /dev/null
+++ b/addons/account_lock/__manifest__.py
@@ -0,0 +1,16 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+{
+    'name' : 'Irreversible Lock Date',
+    'version' : '1.0',
+    'category': 'Accounting',
+    'description': """
+    Make the lock date irreversible:
+
+    * You cannot define stricter conditions on advisors than on users. Then, the lock date on advisor must be set before the lock date for users.
+    * You cannot lock a period that is not finished yet. Then, the lock date for advisors must be set before the last day of the previous month.
+    * The new lock date for advisors must be set after the previous lock date.
+    """,
+    'depends' : ['account'],
+    'data': [],
+}
diff --git a/addons/account_lock/models/__init__.py b/addons/account_lock/models/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e759f74fc8dba3b0da63684c75f0ac24dc55fc99
--- /dev/null
+++ b/addons/account_lock/models/__init__.py
@@ -0,0 +1,3 @@
+# -*- coding: utf-8 -*-
+
+from . import res_company
diff --git a/addons/account_lock/models/res_company.py b/addons/account_lock/models/res_company.py
new file mode 100644
index 0000000000000000000000000000000000000000..5a01046f36bbb0a09533840ad9a304bb1205fcb0
--- /dev/null
+++ b/addons/account_lock/models/res_company.py
@@ -0,0 +1,14 @@
+# -*- coding: utf-8 -*-
+
+from odoo import models, api
+
+
+class ResCompany(models.Model):
+    _inherit = 'res.company'
+
+    @api.multi
+    def write(self, vals):
+        # fiscalyear_lock_date can't be set to a prior date
+        if 'fiscalyear_lock_date' in vals or 'period_lock_date' in vals:
+            self._check_lock_dates(vals)
+        return super(ResCompany, self).write(vals)
diff --git a/addons/analytic/models/analytic_account.py b/addons/analytic/models/analytic_account.py
index 9cd801144e8c5181fe25e9fa788608fcea01fdc9..7096852528c4b0c1fa33a1a5ce82ae93aea962b1 100644
--- a/addons/analytic/models/analytic_account.py
+++ b/addons/analytic/models/analytic_account.py
@@ -97,6 +97,7 @@ class AccountAnalyticAccount(models.Model):
             domain=domain + [('amount', '>=', 0.0)],
             fields=['account_id', 'currency_id', 'amount'],
             groupby=['account_id', 'currency_id'],
+            lazy=False,
         )
         data_credit = defaultdict(float)
         for l in credit_groups:
@@ -106,6 +107,7 @@ class AccountAnalyticAccount(models.Model):
             domain=domain + [('amount', '<', 0.0)],
             fields=['account_id', 'currency_id', 'amount'],
             groupby=['account_id', 'currency_id'],
+            lazy=False,
         )
         data_debit = defaultdict(float)
         for l in debit_groups:
diff --git a/addons/barcodes/static/src/js/barcode_events.js b/addons/barcodes/static/src/js/barcode_events.js
index a2e5808f8be3ff6ffec34d5d0ad678be6fbc637d..2d602a36b9701a302cdce4faf5ab50275bbdbd14 100644
--- a/addons/barcodes/static/src/js/barcode_events.js
+++ b/addons/barcodes/static/src/js/barcode_events.js
@@ -64,12 +64,14 @@ var BarcodeEvents = core.Class.extend(mixins.PropertiesMixin, {
                     'position': 'fixed',
                     'top': '50%',
                     'transform': 'translateY(-50%)',
-                    'opacity': 0,
+                    'z-index': '-1',
                 },
             });
+            // Avoid to show autocomplete for a non appearing input
+            this.$barcodeInput.attr('autocomplete', 'off');
         }
 
-        this.__removeBarcodeField = _.debounce(this._removeBarcodeField, this.inputTimeOut);
+        this.__blurBarcodeInput = _.debounce(this._blurBarcodeInput, this.inputTimeOut);
     },
 
     handle_buffered_keys: function() {
@@ -232,7 +234,7 @@ var BarcodeEvents = core.Class.extend(mixins.PropertiesMixin, {
                     this.max_time_between_keys_in_ms);
             }
             // if the barcode input doesn't receive keydown for a while, remove it.
-            this.__removeBarcodeField();
+            this.__blurBarcodeInput();
         }
     },
 
@@ -247,21 +249,22 @@ var BarcodeEvents = core.Class.extend(mixins.PropertiesMixin, {
         var barcodeValue = this.$barcodeInput.val();
         if (barcodeValue.match(this.regexp)) {
             core.bus.trigger('barcode_scanned', barcodeValue, $(e.target).parent()[0]);
-            this.$barcodeInput.val('');
+            this._blurBarcodeInput();
         }
     },
 
     /**
-     * Remove the temporary input created to store the barcode value.
-     * If nothing happens, this input will be removed, so the focus will be lost
-     * and the virtual keyboard on mobile devices will be closed.
+     * Removes the value and focus from the barcode input.
+     * If nothing happens, the focus will be lost and
+     * the virtual keyboard on mobile devices will be closed.
      *
      * @private
      */
-    _removeBarcodeField: function () {
+    _blurBarcodeInput: function () {
         if (this.$barcodeInput) {
-            // Reset the value and remove from the DOM.
-            this.$barcodeInput.val('').remove();
+            // Close the virtual keyboard on mobile browsers
+            // FIXME: actually we can't prevent keyboard from opening
+            this.$barcodeInput.val('').blur();
         }
     },
 
diff --git a/addons/base_automation/i18n/tr.po b/addons/base_automation/i18n/tr.po
index f943fc6fda0a8afe4425a8809d3858216e7b79a6..f1bdb579a5d4c3b5a31012ac236a8eb7c8006104 100644
--- a/addons/base_automation/i18n/tr.po
+++ b/addons/base_automation/i18n/tr.po
@@ -123,7 +123,7 @@ msgstr "Bağlantı Modeli"
 #. module: base_automation
 #: model:ir.model.fields,field_description:base_automation.field_base_automation__binding_type
 msgid "Binding Type"
-msgstr ""
+msgstr "Bağlantı Türü"
 
 #. module: base_automation
 #: selection:base.automation.lead.test,state:0
diff --git a/addons/base_geolocalize/i18n/tr.po b/addons/base_geolocalize/i18n/tr.po
index b858540b3b8cf6d445d656388a50dd7fa8bda221..506cb5037a71da4fe630e4830b698f80ed4342b7 100644
--- a/addons/base_geolocalize/i18n/tr.po
+++ b/addons/base_geolocalize/i18n/tr.po
@@ -3,19 +3,19 @@
 # * base_geolocalize
 # 
 # Translators:
-# Martin Trigaux <mat@odoo.com>, 2017
+# Martin Trigaux, 2017
 # Ahmet Altinisik <aaltinisik@altinkaya.com.tr>, 2017
 # Ayhan KIZILTAN <akiziltan76@hotmail.com>, 2017
 # gezgin biri <gezginbiri@hotmail.com>, 2017
-# Murat Kaplan <muratk@projetgrup.com>, 2017
 # Matanat Ahmadova <ahmadova.matanat01@gmail.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: Matanat Ahmadova <ahmadova.matanat01@gmail.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"
@@ -45,6 +45,8 @@ msgid ""
 "Cannot contact geolocation servers. Please make sure that your Internet "
 "connection is up and running (%s)."
 msgstr ""
+"Coğrafi konumlandıma sunucusuna bağlanılamıyor. Lütfen internet bağlantınızı"
+" açık ve çalışmakta olduğundan emin olun (%s)."
 
 #. module: base_geolocalize
 #: model:ir.model,name:base_geolocalize.model_res_partner
@@ -52,21 +54,21 @@ msgid "Contact"
 msgstr "Kontak"
 
 #. module: base_geolocalize
-#: model:ir.model.fields,field_description:base_geolocalize.field_res_partner_partner_latitude
-#: model:ir.model.fields,field_description:base_geolocalize.field_res_users_partner_latitude
+#: model:ir.model.fields,field_description:base_geolocalize.field_res_partner__partner_latitude
+#: model:ir.model.fields,field_description:base_geolocalize.field_res_users__partner_latitude
 msgid "Geo Latitude"
 msgstr "CoÄŸrafi Enlem"
 
 #. module: base_geolocalize
-#: model:ir.model.fields,field_description:base_geolocalize.field_res_partner_partner_longitude
-#: model:ir.model.fields,field_description:base_geolocalize.field_res_users_partner_longitude
+#: model:ir.model.fields,field_description:base_geolocalize.field_res_partner__partner_longitude
+#: model:ir.model.fields,field_description:base_geolocalize.field_res_users__partner_longitude
 msgid "Geo Longitude"
 msgstr "CoÄŸ Boylam"
 
 #. module: base_geolocalize
 #: model:ir.ui.view,arch_db:base_geolocalize.view_crm_partner_geo_form
 msgid "Geolocate"
-msgstr ""
+msgstr "Yer Etiketi"
 
 #. module: base_geolocalize
 #: model:ir.ui.view,arch_db:base_geolocalize.view_crm_partner_geo_form
@@ -74,8 +76,8 @@ msgid "Geolocation"
 msgstr "CoÄŸrafi Konum"
 
 #. module: base_geolocalize
-#: model:ir.model.fields,field_description:base_geolocalize.field_res_partner_date_localization
-#: model:ir.model.fields,field_description:base_geolocalize.field_res_users_date_localization
+#: model:ir.model.fields,field_description:base_geolocalize.field_res_partner__date_localization
+#: model:ir.model.fields,field_description:base_geolocalize.field_res_users__date_localization
 msgid "Geolocation Date"
 msgstr "CoÄŸrafi Konum"
 
diff --git a/addons/base_import/i18n/zh_CN.po b/addons/base_import/i18n/zh_CN.po
index 0eb1389d7a7ff3957f942378d694d3ae08ff0cfc..222ed8f1b4abf24608ad781aab4ffd5b7c012a1b 100644
--- a/addons/base_import/i18n/zh_CN.po
+++ b/addons/base_import/i18n/zh_CN.po
@@ -8,13 +8,14 @@
 # 苏州远鼎 <tiexinliu@126.com>, 2016
 # liAnGjiA <liangjia@qq.com>, 2016
 # 山西清水欧度(QQ:54773801) <54773801@qq.com>, 2018
+# John Lin <linyinhuan@139.com>, 2018
 msgid ""
 msgstr ""
 "Project-Id-Version: Odoo Server saas~11.2\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2018-03-22 14:10+0000\n"
 "PO-Revision-Date: 2018-03-22 14:10+0000\n"
-"Last-Translator: 山西清水欧度(QQ:54773801) <54773801@qq.com>, 2018\n"
+"Last-Translator: John Lin <linyinhuan@139.com>, 2018\n"
 "Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -143,7 +144,7 @@ msgstr "十进制分隔符:"
 #: code:addons/base_import/static/src/xml/base_import.xml:76
 #, python-format
 msgid "Defer parent/child computation"
-msgstr ""
+msgstr "推迟父/子计算"
 
 #. module: base_import
 #: model:ir.model.fields,field_description:base_import.field_base_import_import__display_name
@@ -317,7 +318,7 @@ msgid ""
 "If the model uses parent/child relations, computing the"
 "                      parent / child relation occurs on every line, and lead"
 " to a slower import.                     Defering it can speed up import."
-msgstr ""
+msgstr "如果该模型使用父/子关系,每行都会发生父/子关系计算,并使导入更慢。推迟她能提升导入速度。"
 
 #. module: base_import
 #. openerp-web
diff --git a/addons/calendar/i18n/calendar.pot b/addons/calendar/i18n/calendar.pot
index 2ed94168f2ad56caecf6e221dafa42de88ef064a..ab1483026ae277857e16d6d1c5869093d547e18f 100644
--- a/addons/calendar/i18n/calendar.pot
+++ b/addons/calendar/i18n/calendar.pot
@@ -6,8 +6,8 @@ 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"
+"POT-Creation-Date: 2018-06-06 08:01+0000\n"
+"PO-Revision-Date: 2018-06-06 08:01+0000\n"
 "Last-Translator: <>\n"
 "Language-Team: \n"
 "MIME-Version: 1.0\n"
@@ -865,6 +865,13 @@ msgstr ""
 msgid "Meeting"
 msgstr ""
 
+#. module: calendar
+#: code:addons/calendar/models/calendar.py:933
+#: code:addons/calendar/models/calendar.py:937
+#, python-format
+msgid "Meeting '%s' starts '%s' and ends '%s'"
+msgstr ""
+
 #. module: calendar
 #: model:ir.ui.view,arch_db:calendar.view_calendar_event_form
 msgid "Meeting Details"
diff --git a/addons/calendar/i18n/zh_CN.po b/addons/calendar/i18n/zh_CN.po
index 8e768bb2786e91065fe8acff3cf8bb4d60457a68..37ccc73777294ca7df3370df4513219729e4900d 100644
--- a/addons/calendar/i18n/zh_CN.po
+++ b/addons/calendar/i18n/zh_CN.po
@@ -13,13 +13,14 @@
 # 老窦 北京 <2662059195@qq.com>, 2018
 # e2f <projects@e2f.com>, 2018
 # e2f_cn c5 <jarvisn@ecinnovations.com>, 2018
+# John Lin <linyinhuan@139.com>, 2018
 msgid ""
 msgstr ""
 "Project-Id-Version: Odoo Server saas~11.2\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2018-03-22 14:11+0000\n"
 "PO-Revision-Date: 2018-03-22 14:11+0000\n"
-"Last-Translator: e2f_cn c5 <jarvisn@ecinnovations.com>, 2018\n"
+"Last-Translator: John Lin <linyinhuan@139.com>, 2018\n"
 "Language-Team: Chinese (China) (https://www.transifex.com/odoo/teams/41243/zh_CN/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -1062,7 +1063,7 @@ msgstr "邀请向导"
 #. module: calendar
 #: model:ir.model.fields,field_description:calendar.field_calendar_event__is_highlighted
 msgid "Is the Event Highlighted"
-msgstr ""
+msgstr "是事件高亮"
 
 #. module: calendar
 #: selection:calendar.event,byday:0
diff --git a/addons/calendar/models/calendar.py b/addons/calendar/models/calendar.py
index 161130e1e9402f947968f0a46864d1f164304f9e..7a338adc52bf9bd22ea284e91bf25aec7692b340 100644
--- a/addons/calendar/models/calendar.py
+++ b/addons/calendar/models/calendar.py
@@ -930,9 +930,13 @@ class Meeting(models.Model):
     def _check_closing_date(self):
         for meeting in self:
             if meeting.start_datetime and meeting.stop_datetime and meeting.stop_datetime < meeting.start_datetime:
-                raise ValidationError(_('Ending datetime cannot be set before starting datetime.'))
+                raise ValidationError(_('Ending datetime cannot be set before starting datetime.') + "\n" +
+                                      _("Meeting '%s' starts '%s' and ends '%s'") % (meeting.name, meeting.start_datetime, meeting.stop_datetime)
+                    )
             if meeting.start_date and meeting.stop_date and meeting.stop_date < meeting.start_date:
-                raise ValidationError(_('Ending date cannot be set before starting date.'))
+                raise ValidationError(_('Ending date cannot be set before starting date.') + "\n" +
+                                      _("Meeting '%s' starts '%s' and ends '%s'") % (meeting.name, meeting.start_date, meeting.stop_date)
+                    )
 
     @api.onchange('start_datetime', 'duration')
     def _onchange_duration(self):
diff --git a/addons/crm/i18n/tr.po b/addons/crm/i18n/tr.po
index 1dc1294b67b732797ba8897dcb04fdfcdbf1d209..503973f4250fad1e004db148c12250c2671ff810 100644
--- a/addons/crm/i18n/tr.po
+++ b/addons/crm/i18n/tr.po
@@ -1021,7 +1021,7 @@ msgstr "Atamaya Zorla"
 #. module: crm
 #: model:ir.ui.view,arch_db:crm.res_config_settings_view_form
 msgid "Format phone numbers based on national conventions"
-msgstr ""
+msgstr "Telefon numaralarını ulusal sözleşmelere göre biçimlendirme"
 
 #. module: crm
 #: code:addons/crm/models/crm_lead.py:588
@@ -1869,7 +1869,7 @@ msgstr "Telefon"
 #. module: crm
 #: model:ir.model.fields,field_description:crm.field_res_config_settings__module_crm_phone_validation
 msgid "Phone Formatting"
-msgstr ""
+msgstr "Telefon Biçimlendirmesi"
 
 #. module: crm
 #: code:addons/crm/models/crm_team.py:165
diff --git a/addons/crm_project/i18n/tr.po b/addons/crm_project/i18n/tr.po
index f1d4348f47747a02592a9fb886db00cd888f6f17..9406b7286abbd14c96a8596c0105e77823352e0e 100644
--- a/addons/crm_project/i18n/tr.po
+++ b/addons/crm_project/i18n/tr.po
@@ -91,4 +91,4 @@ msgstr "Proje"
 #. module: crm_project
 #: model:ir.model,name:crm_project.model_crm_lead_convert2task
 msgid "crm.lead.convert2task"
-msgstr ""
+msgstr "crm.lead.convert2task"
diff --git a/addons/delivery/models/stock_picking.py b/addons/delivery/models/stock_picking.py
index 86517b1d0ecd120fc03c402e387134be79969b3b..908b7587c5127640a6d2d35705cb024a716c36d8 100644
--- a/addons/delivery/models/stock_picking.py
+++ b/addons/delivery/models/stock_picking.py
@@ -162,7 +162,8 @@ class StockPicking(models.Model):
         if self.carrier_id.free_over and self.sale_id and self.sale_id._compute_amount_total_without_delivery() >= self.carrier_id.amount:
             res['exact_price'] = 0.0
         self.carrier_price = res['exact_price']
-        self.carrier_tracking_ref = res['tracking_number']
+        if res['tracking_number']:
+            self.carrier_tracking_ref = res['tracking_number']
         order_currency = self.sale_id.currency_id or self.company_id.currency_id
         msg = _("Shipment sent to carrier %s for shipping with tracking number %s<br/>Cost: %.2f %s") % (self.carrier_id.name, self.carrier_tracking_ref, self.carrier_price, order_currency.name)
         self.message_post(body=msg)
diff --git a/addons/event/i18n/es.po b/addons/event/i18n/es.po
index f55e9ffd371af1e75c36180ad7fd91bdaaa37a00..418660796dea900fd5a39ed5b10c58089929a528 100644
--- a/addons/event/i18n/es.po
+++ b/addons/event/i18n/es.po
@@ -206,6 +206,168 @@ msgid ""
 "</div>\n"
 "            "
 msgstr ""
+"\n"
+"<div style=\"background:#F3F5F6;color:#515166;padding:25px 0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;\">\n"
+"% set date_begin = format_tz(object.event_id.date_begin, tz='UTC', format='%Y%m%dT%H%M%SZ')\n"
+"% set date_end = format_tz(object.event_id.date_end, tz='UTC', format='%Y%m%dT%H%M%SZ')\n"
+"    <table style=\"width:600px;margin:5px auto;\">\n"
+"        <tbody>\n"
+"            <tr>\n"
+"                <td>\n"
+"                    <a href=\"/\">\n"
+"                        <img src=\"/logo\" alt=\"${object.company_id.name}\" style=\"vertical-align:baseline;max-width:100px;\" />\n"
+"                    </a>\n"
+"                </td>\n"
+"                <td style=\"text-align:right;vertical-align:middle;\">\n"
+"                    % if 'website_url' in object.event_id and object.event_id.website_url:\n"
+"                        <a href=\"${object.event_id.website_url}\" style=\"background-color: #1abc9c; padding: 12px; font-weight: 12px; text-decoration: none; color: #fff; border-radius: 5px; font-size:16px;\">Ver evento</a>\n"
+"                    % endif\n"
+"                </td>\n"
+"            </tr>\n"
+"        </tbody>\n"
+"    </table>\n"
+"    <table style=\"width:600px;margin:0px auto;background:white;border:1px solid #e1e1e1;\">\n"
+"        <tbody>\n"
+"            <tr>\n"
+"                <td style=\"padding:15px 20px 0px 20px; font-size:16px; font-weight:300;\">\n"
+"                    <p style=\"font-size:16px;\">\n"
+"                        Hi,\n"
+"                    </p><p style=\"font-size:16px;\">\n"
+"                        Nos alegra confirmarle su registro en el evento:\n"
+"                    </p>\n"
+"                    <ul>\n"
+"                        <li>Evento: \n"
+"                        % if 'website_url' in object.event_id and object.event_id.website_url:\n"
+"                            <a href=\"${object.event_id.website_url}\" style=\"color:#875A7B;text-decoration:none;\">${object.event_id.name}</a>\n"
+"                        % else:\n"
+"                            <strong>${object.event_id.name}</strong>\n"
+"                        % endif\n"
+"                        </li>\n"
+"                        <li>Asistente: ${object.name}</li>\n"
+"                    </ul>\n"
+"                    <p style=\"font-size:16px;\">\n"
+"                        Nos vemos pronto,\n"
+"                    </p>\n"
+"                    <p style=\"font-size:16px; margin-bottom: 30px\">\n"
+"                        <i>\n"
+"                           -- <br/>\n"
+"                        % if object.event_id.organizer_id:\n"
+"                            ${object.event_id.organizer_id.name}\n"
+"                        % else:\n"
+"                            Los organizadores.\n"
+"                        % endif\n"
+"                        </i>\n"
+"                    </p>\n"
+"                </td>\n"
+"            </tr>\n"
+"            <tr>\n"
+"                <td style=\"padding:15px 20px 0px 20px;\">\n"
+"                    <table style=\"width:100%;border-top:1px solid #e1e1e1;\">\n"
+"                        <tr>\n"
+"                            <td style=\"padding:25px 0px;vertical-align:top;\">\n"
+"                                <img src=\"/web_editor/font_to_img/61555/rgb(81,81,102)/34\" style=\"padding:4px;max-width:inherit;\" height=\"34\">\n"
+"                            </td>\n"
+"                            <td style=\"padding:25px 10px 25px 10px;width:50%;line-height:20px;vertical-align:top;\">\n"
+"                                <div><strong>Desde</strong> ${object.event_id.date_begin_located}</div>\n"
+"                                <div><strong>Hasta</strong> ${object.event_id.date_end_located}</div>\n"
+"                                <div style=\"font-size:12px;color:#9e9e9e\"><i><strong>TZ</strong> ${object.event_id.date_tz}</i></div>\n"
+"                            </td>\n"
+"                            % if object.event_id.address_id.country_id.name:\n"
+"                                <td style=\"padding:25px 0px;vertical-align:top;\">\n"
+"                                    <img src=\"/web_editor/font_to_img/61505/rgb(81,81,102)/34\" style=\"padding:4px;max-width:inherit;\" height=\"34\">\n"
+"                                </td>\n"
+"                                <td style=\"padding:30px 10px 25px 10px;width:50%;vertical-align:top;\">\n"
+"                                    % set location = ''\n"
+"                                    % if object.event_id.address_id.name:\n"
+"                                        <p style=\"margin:0px 0px 0px 0px;\">${object.event_id.address_id.name}</p>\n"
+"                                    % endif\n"
+"                                    % if object.event_id.address_id.street:\n"
+"                                        <p style=\"margin:0px 0px 0px 0px;\">${object.event_id.address_id.street}</p>\n"
+"                                        % set location = object.event_id.address_id.street\n"
+"                                    % endif\n"
+"                                    % if object.event_id.address_id.street2:\n"
+"                                        <p style=\"margin:0px 0px 0px 0px;\">${object.event_id.address_id.street2}</p>\n"
+"                                        % set location = '%s, %s' % (location, object.event_id.address_id.street2)\n"
+"                                    % endif\n"
+"                                    <p style=\"margin:0px 0px 0px 0px;\">\n"
+"                                    % if object.event_id.address_id.city:\n"
+"                                        ${object.event_id.address_id.city},\n"
+"                                        % set location = '%s, %s' % (location, object.event_id.address_id.city)\n"
+"                                    % endif\n"
+"                                    % if object.event_id.address_id.state_id.name:\n"
+"                                        ${object.event_id.address_id.state_id.name},\n"
+"                                        % set location = '%s, %s' % (location, object.event_id.address_id.state_id.name)\n"
+"                                    % endif\n"
+"                                    % if object.event_id.address_id.zip:\n"
+"                                        ${object.event_id.address_id.zip}\n"
+"                                        % set location = '%s, %s' % (location, object.event_id.address_id.zip)\n"
+"                                    % endif\n"
+"                                    </p>\n"
+"                                    % if object.event_id.address_id.country_id.name:\n"
+"                                        <p style=\"margin:0px 0px 0px 0px;\">${object.event_id.address_id.country_id.name}</p>\n"
+"                                        % set location = '%s, %s' % (location, object.event_id.address_id.country_id.name)\n"
+"                                    % endif\n"
+"                                </td>\n"
+"                            % endif\n"
+"                        </tr>\n"
+"                    </table>\n"
+"                    % if object.event_id.organizer_id:\n"
+"                        <table style=\"width:100%;border-top:1px solid #e1e1e1;\">\n"
+"                            <tr>\n"
+"                                <td style=\"padding:10px 0px 25px 0px;\">\n"
+"                                    <h2 style=\"font-weight:300;margin:10px 0px\">¿Preguntas sobre este evento?</h2>\n"
+"                                    <p>Por favor contacte con el organizador:</p>\n"
+"                                    <ul>\n"
+"                                        <li>${object.event_id.organizer_id.name}</li>\n"
+"                                        % if object.event_id.organizer_id.email\n"
+"                                            <li>Correo: <a href=\"mailto:${object.event_id.organizer_id.email}\" style=\"text-decoration:none;color:#875A7B;\">${object.event_id.organizer_id.email}</a></li>\n"
+"                                        % endif\n"
+"                                        % if object.event_id.organizer_id.phone\n"
+"                                            <li>Teléfono: ${object.event_id.organizer_id.phone}</li>\n"
+"                                        % endif\n"
+"                                    </ul>\n"
+"\n"
+"                                </td>\n"
+"                            </tr>\n"
+"                        </table>\n"
+"                    % endif\n"
+"                    <table style=\"width:100%;border-top:1px solid #e1e1e1;\">\n"
+"                        <tr>\n"
+"                            <td style=\"padding:25px 0px;\">\n"
+"                                <strong>Añada este evento a su calendario</strong>\n"
+"                                <a href=\"https://www.google.com/calendar/render?action=TEMPLATE&text=${object.event_id.name}&dates=${date_begin}/${date_end}&location=${location}\" style=\"padding:3px 5px;border:1px solid #875A7B;color:#875A7B;text-decoration:none;border-radius:3px;\" target=\"new\"><img src=\"/web_editor/font_to_img/61525/rgb(135,90,123)/16\" style=\"vertical-align:middle;\" height=\"16\"> Google</a>\n"
+"                                <a href=\"https://bay02.calendar.live.com/calendar/calendar.aspx?rru=addevent&summary=${object.event_id.name}&dtstart=${date_begin}&dtend=${date_end}&location=${location}\" style=\"padding:3px 5px;border:1px solid #875A7B;color:#875A7B;text-decoration:none;border-radius:3px;\" target=\"new\"><img src=\"/web_editor/font_to_img/61525/rgb(135,90,123)/16\" style=\"vertical-align:middle;\" height=\"16\"> Outlook</a>\n"
+"                                <a href=\"https://calendar.yahoo.com/?v=60&view=d&type=20&title=${object.event_id.name}&in_loc=${location}&st=${format_tz(object.event_id.date_begin, tz='UTC', format='%Y%m%dT%H%M%S')}&et=${format_tz(object.event_id.date_end, tz='UTC', format='%Y%m%dT%H%M%S')}\" style=\"padding:3px 5px;border:1px solid #875A7B;color:#875A7B;text-decoration:none;border-radius:3px;\" target=\"new\"><img src=\"/web_editor/font_to_img/61525/rgb(135,90,123)/16\" style=\"vertical-align:middle;\" height=\"16\"> Yahoo</a>\n"
+"                            </td>\n"
+"                        </tr>\n"
+"                    </table>\n"
+"                </td>\n"
+"            </tr>\n"
+"        </tbody>\n"
+"    </table>\n"
+"    % if object.event_id.address_id:\n"
+"    <div style=\"width:598px;margin:0px auto;border-left:1px solid #dddddd;border-right:1px solid #dddddd;border-bottom:1px solid #dddddd;\">\n"
+"        <a href=\"https://maps.google.com/maps?q=${location}\" target=\"new\">\n"
+"            <img src=\"http://maps.googleapis.com/maps/api/staticmap?autoscale=1&size=598x200&maptype=roadmap&format=png&visual_refresh=true&markers=size:mid%7Ccolor:0xa5117d%7Clabel:%7C${location}\" style=\"vertical-align:bottom;\" />\n"
+"        </a>\n"
+"    </div>\n"
+"    % endif\n"
+"    <table style=\"width:600px;margin:0px auto;text-align:center;\">\n"
+"        <tbody>\n"
+"            <tr>\n"
+"                <td style=\"padding-top:10px;font-size: 12px;\">\n"
+"                    <div>Enviado por ${object.company_id.name}</div>\n"
+"                    % if 'website_url' in object.event_id and object.event_id.website_url:\n"
+"                    <div>\n"
+"                        Descubra <a href=\"/event\" style=\"text-decoration:none;color:#717188;\">todos nuestros eventos</a>.\n"
+"                    </div>\n"
+"                    % endif\n"
+"                </td>\n"
+"            </tr>\n"
+"        </tbody>\n"
+"    </table>\n"
+"</div>\n"
+"            "
 
 #. module: event
 #: model:mail.template,body_html:event.event_reminder
diff --git a/addons/event/views/res_partner_views.xml b/addons/event/views/res_partner_views.xml
index 8fd4b774c5ee928b8c880d3f6dddc1729dde2388..59d096efcd1528d7834b32574744e4fa1d136677 100644
--- a/addons/event/views/res_partner_views.xml
+++ b/addons/event/views/res_partner_views.xml
@@ -5,6 +5,7 @@
             <field name="name">view.res.partner.form.event.inherited</field>
             <field name="model">res.partner</field>
             <field name="inherit_id" ref="base.view_partner_form"/>
+            <field name="groups_id" eval="[(4, ref('event.group_event_user'))]"/>
             <field name="arch" type="xml">
                 <div name="button_box" position="inside">
                     <button class="oe_stat_button"
diff --git a/addons/google_calendar/models/google_calendar.py b/addons/google_calendar/models/google_calendar.py
index df0df9e3388c231c1d9e3c6974c8dc455275c032..a422438778ce5dd550fda4f9d2f243aabd9ba966 100644
--- a/addons/google_calendar/models/google_calendar.py
+++ b/addons/google_calendar/models/google_calendar.py
@@ -677,7 +677,7 @@ class GoogleCalendar(models.AbstractModel):
             try:
                 all_event_from_google = self.get_event_synchro_dict(lastSync=lastSync)
             except requests.HTTPError as e:
-                if e.response.code == 410:  # GONE, Google is lost.
+                if e.response.status_code == 410:  # GONE, Google is lost.
                     # we need to force the rollback from this cursor, because it locks my res_users but I need to write in this tuple before to raise.
                     self.env.cr.rollback()
                     self.env.user.write({'google_calendar_last_sync_date': False})
@@ -842,7 +842,7 @@ class GoogleCalendar(models.AbstractModel):
                         try:
                             # if already deleted from gmail or never created
                             recs.delete_an_event(current_event[0])
-                        except Exception as e:
+                        except requests.exceptions.HTTPError as e:
                             if e.response.status_code in (401, 410,):
                                 pass
                             else:
diff --git a/addons/hr_holidays/report/hr_leave_report.py b/addons/hr_holidays/report/hr_leave_report.py
index acca821f58a9b672be043c19053d13cb19fd8cc2..5df7a3e46367d45bb8c084de9225850a3fb2fc08 100644
--- a/addons/hr_holidays/report/hr_leave_report.py
+++ b/addons/hr_holidays/report/hr_leave_report.py
@@ -5,9 +5,10 @@ from odoo import fields, models, tools
 
 
 class LeaveReport(models.Model):
-
     _name = "hr.leave.report"
+    _description = 'Leave Summary / Report'
     _auto = False
+    _order = "date_from DESC, employee_id"
 
     employee_id = fields.Many2one('hr.employee', string="Employee", readonly=True)
     name = fields.Char('Description', readonly=True)
diff --git a/addons/hr_holidays/report/hr_leave_reports.xml b/addons/hr_holidays/report/hr_leave_reports.xml
index 6f884671c3754e0cacb5dca6f76efab0dbfc62be..5afe663eaf5b3274631dcc2062762d10f52bef5e 100644
--- a/addons/hr_holidays/report/hr_leave_reports.xml
+++ b/addons/hr_holidays/report/hr_leave_reports.xml
@@ -46,12 +46,13 @@
         <field name="model">hr.leave.report</field>
         <field name="arch" type="xml">
             <tree create="0" edit="0" delete="0">
-                <field name="type"/>
-                <field name="name"/>
+                <field name="employee_id"/>
                 <field name="number_of_days" string="Number of Days" sum="Remaining Days"/>
                 <field name="date_from"/>
                 <field name="date_to"/>
                 <field name="state"/>
+                <field name="type"/>
+                <field name="name"/>
             </tree>
         </field>
     </record>
diff --git a/addons/hr_holidays/views/hr_leave_views.xml b/addons/hr_holidays/views/hr_leave_views.xml
index 1b210c22eb4ee2d6ca58a4b7b918d7713cdecd72..97c88dfcbfad0225fb9b0253e2dff4b464db63f9 100644
--- a/addons/hr_holidays/views/hr_leave_views.xml
+++ b/addons/hr_holidays/views/hr_leave_views.xml
@@ -20,6 +20,9 @@
         <field name="model">hr.leave</field>
         <field name="arch" type="xml">
             <search string="Search Leave">
+                <field name="employee_id"/>
+                <field name="department_id"/>
+                <field name="holiday_status_id"/>
                 <field name="name"/>
                 <filter domain="[('state','in',('confirm','validate1'))]" string="To Approve" name="approve"/>
                 <filter string="Approved Leaves" domain="[('state', '=', 'validate')]" name="validated"/>
@@ -40,10 +43,6 @@
                 <separator/>
                 <filter string="My Leaves" name="my_leaves" domain="[('employee_id.user_id', '=', uid)]"/>
                 <separator/>
-                <field name="employee_id"/>
-                <field name="department_id"/>
-                <field name="holiday_status_id"/>
-                <separator/>
                 <filter string="Late Activities" name="activities_overdue"
                     domain="[('activity_ids.date_deadline', '&lt;', context_today().strftime('%Y-%m-%d'))]"
                     help="Show all records which has next action date is before today"/>
diff --git a/addons/hr_timesheet/models/project.py b/addons/hr_timesheet/models/project.py
index 6276aa166ca55866b359f9b11f4da577e47d99f8..f58f49a32186a4a34a8dfe0792a3a9895c2657e3 100644
--- a/addons/hr_timesheet/models/project.py
+++ b/addons/hr_timesheet/models/project.py
@@ -111,7 +111,7 @@ class Task(models.Model):
     @api.depends('timesheet_ids.unit_amount')
     def _compute_effective_hours(self):
         for task in self:
-            task.effective_hours = sum(task.timesheet_ids.mapped('unit_amount'))
+            task.effective_hours = round(sum(task.timesheet_ids.mapped('unit_amount')), 2)
 
     @api.depends('effective_hours', 'subtask_effective_hours', 'planned_hours')
     def _compute_progress_hours(self):
diff --git a/addons/hw_escpos/escpos/escpos.py b/addons/hw_escpos/escpos/escpos.py
index 7159ac3b31e5f28e4e093187665bb3eeac6f02ab..f31b16198943dd21ee0b4dfc3ec63f2dbc109fe8 100644
--- a/addons/hw_escpos/escpos/escpos.py
+++ b/addons/hw_escpos/escpos/escpos.py
@@ -522,6 +522,10 @@ class Escpos:
         # Print Code
         if code:
             self._raw(code)
+            # We are using type A commands
+            # So we need to add the 'NULL' character
+            # https://github.com/python-escpos/python-escpos/pull/98/files#diff-a0b1df12c7c67e38915adbe469051e2dR444
+            self._raw('\x00')
         else:
             raise exception.BarcodeCodeError()
 
diff --git a/addons/l10n_fr_certification/models/res_company.py b/addons/l10n_fr_certification/models/res_company.py
index 97aa993aa7e6b3d670265a44ca01e8c4e7680a89..f5f962f6fa326a4c4c65e8cf41ade14e43ba43b7 100644
--- a/addons/l10n_fr_certification/models/res_company.py
+++ b/addons/l10n_fr_certification/models/res_company.py
@@ -30,6 +30,9 @@ class ResCompany(models.Model):
             if company._is_accounting_unalterable():
                 sequence_fields = ['l10n_fr_secure_sequence_id']
                 company._create_secure_sequence(sequence_fields)
+        # fiscalyear_lock_date can't be set to a prior date
+        if 'fiscalyear_lock_date' in vals or 'period_lock_date' in vals:
+            self._check_lock_dates(vals)
         return res
 
     def _create_secure_sequence(self, sequence_fields):
diff --git a/addons/l10n_generic_coa/__init__.py b/addons/l10n_generic_coa/__init__.py
index 67dee8c60dbf8317b263fbc3279f0823b2eb4b35..d417dc6807ce40bce885a2985d34ab3a70b396be 100644
--- a/addons/l10n_generic_coa/__init__.py
+++ b/addons/l10n_generic_coa/__init__.py
@@ -1,2 +1,8 @@
 # -*- coding: utf-8 -*-
 # Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+
+def uninstall_hook(cr, registry):
+    cr.execute(
+        "DELETE FROM ir_model_data WHERE module = 'l10n_generic_coa'"
+    )
diff --git a/addons/l10n_generic_coa/__manifest__.py b/addons/l10n_generic_coa/__manifest__.py
index 314e13f44ff61c86f7727153fc826e0c2787afac..2f04d8df53012803e700d23b4eebc23b7d019f9d 100644
--- a/addons/l10n_generic_coa/__manifest__.py
+++ b/addons/l10n_generic_coa/__manifest__.py
@@ -24,4 +24,5 @@ Install some generic chart of accounts.
         'data/account_invoice_demo.xml',
     ],
     'website': 'https://www.odoo.com/page/accounting',
+    'uninstall_hook': 'uninstall_hook',
 }
diff --git a/addons/mail/i18n/tr.po b/addons/mail/i18n/tr.po
index b989dc5f3bded69d3dcdf9269fcee28ee481b234..10f755b2fecbcb3485f2000c1d2131de94640f16 100644
--- a/addons/mail/i18n/tr.po
+++ b/addons/mail/i18n/tr.po
@@ -3048,7 +3048,7 @@ msgstr "Modeller"
 #. module: mail
 #: model:ir.model,name:mail.model_base_module_uninstall
 msgid "Module Uninstallation"
-msgstr ""
+msgstr "Yüklemeyi Kaldırma Modülü"
 
 #. module: mail
 #: model:ir.ui.view,arch_db:mail.view_mail_search
diff --git a/addons/mass_mailing/i18n/tr.po b/addons/mass_mailing/i18n/tr.po
index c43c4af4b0dac1ee07a75b568f388621b1891889..03ea4cd2a459bf8d38b7a6abe13bfce26560de81 100644
--- a/addons/mass_mailing/i18n/tr.po
+++ b/addons/mass_mailing/i18n/tr.po
@@ -667,7 +667,7 @@ msgstr "E-Posta"
 #: model:ir.ui.menu,name:mass_mailing.mass_mailing_menu_root
 #: model:ir.ui.view,arch_db:mass_mailing.res_config_settings_view_form
 msgid "Email Marketing"
-msgstr ""
+msgstr "E-posta Pazarlama"
 
 #. module: mass_mailing
 #: model:ir.model,name:mass_mailing.model_mail_mail_statistics
diff --git a/addons/mass_mailing/models/mail_mail.py b/addons/mass_mailing/models/mail_mail.py
index 1589f22d5a416f9fa3430981dd1f9b22fcd087e4..c89986556d07acd0dcfffd47a8229ad956514908 100644
--- a/addons/mass_mailing/models/mail_mail.py
+++ b/addons/mass_mailing/models/mail_mail.py
@@ -84,7 +84,7 @@ class MailMail(models.Model):
     def _send_prepare_values(self, partner=None):
         # TDE: temporary addition (mail was parameter) due to semi-new-API
         res = super(MailMail, self)._send_prepare_values(partner)
-        base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
+        base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url').rstrip('/')
         if self.mailing_id and res.get('body') and res.get('email_to'):
             emails = tools.email_split(res.get('email_to')[0])
             email_to = emails and emails[0] or False
diff --git a/addons/mrp/i18n/nl.po b/addons/mrp/i18n/nl.po
index a9638223b4fdc75b3727da6bc69cd071c794d98a..b179108cd7dbb639e7fae14c58b8b399b1c7fae5 100644
--- a/addons/mrp/i18n/nl.po
+++ b/addons/mrp/i18n/nl.po
@@ -3604,7 +3604,7 @@ msgid ""
 "link to your file."
 msgstr ""
 "U kan een bestand van uw computer uploaden of een internet link "
-"kopiëren/plakken die linkt naar uw bestand"
+"kopiëren/plakken die linkt naar uw bestand."
 
 #. module: mrp
 #: code:addons/mrp/models/mrp_production.py:523
diff --git a/addons/point_of_sale/i18n/nl.po b/addons/point_of_sale/i18n/nl.po
index 85cd5756e5135ecace42e176eea42822ad7df033..b04366f186e69d284e30ec8c2c621f332370e7c1 100644
--- a/addons/point_of_sale/i18n/nl.po
+++ b/addons/point_of_sale/i18n/nl.po
@@ -3575,7 +3575,7 @@ msgid ""
 "category is specified, all available products will be shown."
 msgstr ""
 "De kassa toont de productcategorieën standaard. Als er geen categorie is "
-"gespecificeerd worden alle producten getoond"
+"gespecificeerd worden alle producten getoond."
 
 #. module: point_of_sale
 #: model:ir.model.fields,help:point_of_sale.field_pos_config__pricelist_id
diff --git a/addons/point_of_sale/models/pos_config.py b/addons/point_of_sale/models/pos_config.py
index 1b41565401db7dafcd720492d485dfd0377ad0ef..2ef110a6dae79d45a4dba0cd8f3be3828b0e974a 100644
--- a/addons/point_of_sale/models/pos_config.py
+++ b/addons/point_of_sale/models/pos_config.py
@@ -364,11 +364,12 @@ class PosConfig(models.Model):
 
     @api.multi
     def write(self, vals):
-        if (self.is_posbox or vals.get('is_posbox')) and (self.iface_customer_facing_display or vals.get('iface_customer_facing_display')):
-            facing_display = (self.customer_facing_display_html or vals.get('customer_facing_display_html') or '').strip()
-            if not facing_display:
-                vals['customer_facing_display_html'] = self._compute_default_customer_html()
         result = super(PosConfig, self).write(vals)
+
+        config_display = self.filtered(lambda c: c.is_posbox and c.iface_customer_facing_display and not (c.customer_facing_display_html or '').strip())
+        if config_display:
+            super(PosConfig, config_display).write({'customer_facing_display_html': self._compute_default_customer_html()})
+
         self.sudo()._set_fiscal_position()
         self.sudo()._check_modules_to_install()
         self.sudo()._check_groups_implied()
diff --git a/addons/purchase/data/mail_template_data.xml b/addons/purchase/data/mail_template_data.xml
index d3c075c3ff05c7f8e026f5d16394790d432a08f3..072342afc871c8374d5fcf57adcd9f40a7ef74df 100644
--- a/addons/purchase/data/mail_template_data.xml
+++ b/addons/purchase/data/mail_template_data.xml
@@ -5,7 +5,7 @@
         <!--Email template -->
         <record id="email_template_edi_purchase" model="mail.template">
             <field name="name">RFQ - Send by Email</field>
-            <field name="email_from">${(object.create_uid.email and '%s &lt;%s&gt;' % (object.create_uid.name, object.create_uid.email) or '')|safe}</field>
+            <field name="email_from">${(object.create_uid.email and '&quot;%s&quot; &lt;%s&gt;' % (object.create_uid.name, object.create_uid.email) or '')|safe}</field>
             <field name="subject">${object.company_id.name} Order (Ref ${object.name or 'n/a' })</field>
             <field name="partner_to">${object.partner_id.id}</field>
             <field name="model_id" ref="purchase.model_purchase_order"/>
@@ -46,7 +46,7 @@ from ${object.company_id.name}.
         <!--Email template -->
         <record id="email_template_edi_purchase_done" model="mail.template">
             <field name="name">Purchase Order - Send by Email</field>
-            <field name="email_from">${(object.create_uid.email and '%s &lt;%s&gt;' % (object.create_uid.name, object.create_uid.email) or '')|safe}</field>
+            <field name="email_from">${(object.create_uid.email and '&quot;%s&quot; &lt;%s&gt;' % (object.create_uid.name, object.create_uid.email) or '')|safe}</field>
             <field name="subject">${object.company_id.name} Order (Ref ${object.name or 'n/a' })</field>
             <field name="partner_to">${object.partner_id.id}</field>
             <field name="model_id" ref="purchase.model_purchase_order"/>
diff --git a/addons/purchase/models/purchase.py b/addons/purchase/models/purchase.py
index 78997867716d0af535e0e53d4f890542663ff122..72c1cedab76d8da65b66a51122cee36dfbbbc701 100644
--- a/addons/purchase/models/purchase.py
+++ b/addons/purchase/models/purchase.py
@@ -943,12 +943,12 @@ class ProcurementRule(models.Model):
         if domain in cache:
             po = cache[domain]
         else:
-            po = self.env['purchase.order'].search([dom for dom in domain])
+            po = self.env['purchase.order'].sudo().search([dom for dom in domain])
             po = po[0] if po else False
             cache[domain] = po
         if not po:
             vals = self._prepare_purchase_order(product_id, product_qty, product_uom, origin, values, partner)
-            po = self.env['purchase.order'].create(vals)
+            po = self.env['purchase.order'].sudo().create(vals)
             cache[domain] = po
         elif not po.origin or origin not in po.origin.split(', '):
             if po.origin:
@@ -969,7 +969,7 @@ class ProcurementRule(models.Model):
                     break
         if not po_line:
             vals = self._prepare_purchase_order_line(product_id, product_qty, product_uom, values, po, partner)
-            self.env['purchase.order.line'].create(vals)
+            self.env['purchase.order.line'].sudo().create(vals)
 
     def _get_purchase_schedule_date(self, values):
         """Return the datetime value to use as Schedule Date (``date_planned``) for the
diff --git a/addons/purchase/tests/test_stockvaluation.py b/addons/purchase/tests/test_stockvaluation.py
index 54fd5bc63f041946de95900be91621e1f207899b..e515bd32c82d19ff477da975fed88ab4fa148758 100644
--- a/addons/purchase/tests/test_stockvaluation.py
+++ b/addons/purchase/tests/test_stockvaluation.py
@@ -184,7 +184,7 @@ class TestStockValuation(TransactionCase):
             'company_id': po1.company_id.id,
         })
         eur_currency._compute_current_rate()
-        price_unit_usd_new_rate = po1.currency_id.compute(po1.order_line.price_unit, po1.company_id.currency_id, round=True)
+        price_unit_usd_new_rate = po1.currency_id.compute(po1.order_line.price_unit, po1.company_id.currency_id, round=False)
 
         # the new price_unit is lower than th initial because of the rate's change
         self.assertLess(price_unit_usd_new_rate, price_unit_usd)
@@ -198,7 +198,7 @@ class TestStockValuation(TransactionCase):
         wizard.process()
 
         # the unit price of the stock move has been updated to the latest value
-        self.assertAlmostEqual(move1.price_unit, price_unit_usd_new_rate, places=2)
+        self.assertAlmostEqual(move1.price_unit, price_unit_usd_new_rate)
 
         self.assertAlmostEqual(self.product1.stock_value, price_unit_usd_new_rate * 10, delta=0.1)
 
@@ -412,4 +412,3 @@ class TestStockValuationWithCOA(AccountingTestCase):
         # check the anglo saxon entries
         price_diff_entry = self.env['account.move.line'].search([('account_id', '=', price_diff_account.id)])
         self.assertEqual(price_diff_entry.credit, 100)
-
diff --git a/addons/repair/i18n/es.po b/addons/repair/i18n/es.po
index 32b246189f6ad3805bab1628d21604dde01c58ba..b38c0edb03bdc5c7bfcc0f0e5dc4cb0b6f3772d4 100644
--- a/addons/repair/i18n/es.po
+++ b/addons/repair/i18n/es.po
@@ -26,13 +26,14 @@
 # Fernando San Martín Woerner <fsnmartin@gmail.com>, 2018
 # José Matias Zuazo <jose.zuazo@tpsistemas.com.ar>, 2018
 # Nicolás Broggi <rnbroggi@gmail.com>, 2018
+# Carlos Vásquez <carlos.vasquez@clearcorp.co.cr>, 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: Nicolás Broggi <rnbroggi@gmail.com>, 2018\n"
+"Last-Translator: Carlos Vásquez <carlos.vasquez@clearcorp.co.cr>, 2018\n"
 "Language-Team: Spanish (https://www.transifex.com/odoo/teams/41243/es/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -97,6 +98,20 @@ msgid ""
 "                <p>Thank you,</p>\n"
 "            </data>"
 msgstr ""
+"<?xml version=\"1.0\"?>\n"
+"<data>Estimado(a) ${object.partner_id.name}</p>\n"
+"                <p>\n"
+"                Ésta es su orden de reparación ${doc_name} <strong>${object.name}</strong>\n"
+"                % if object.origin:\n"
+"                (con referencia: ${object.origin} )\n"
+"                % endif\n"
+"                % if object.invoice_method != 'none':\n"
+"                por un total de <strong>${format_amount(object.amount_total, object.pricelist_id.currency_id)}.</strong>\n"
+"                % endif\n"
+"                </p>\n"
+"                <p>Puede responder a este correo electrónico si tiene alguna duda.</p>\n"
+"                <p>Gracias,</p>\n"
+"            </data>"
 
 #. module: repair
 #: model:ir.ui.view,arch_db:repair.report_repairorder
diff --git a/addons/sale/data/mail_data.xml b/addons/sale/data/mail_data.xml
index 5c9d0b6a2e54b9b91b08e0e878dd3ce7a496a966..ce8dcc651a17d02a6f47b5f88809595452cb50ac 100644
--- a/addons/sale/data/mail_data.xml
+++ b/addons/sale/data/mail_data.xml
@@ -55,7 +55,7 @@
         <!--Email template -->
         <record id="email_template_edi_sale" model="mail.template">
             <field name="name">Sales Order - Send by Email</field>
-            <field name="email_from">${(object.user_id.email and '%s &lt;%s&gt;' % (object.user_id.name, object.user_id.email) or '')|safe}</field>
+            <field name="email_from">${(object.user_id.email and '&quot;%s&quot; &lt;%s&gt;' % (object.user_id.name, object.user_id.email) or '')|safe}</field>
             <field name="subject">${object.company_id.name} ${object.state in ('draft', 'sent') and 'Quotation' or 'Order'} (Ref ${object.name or 'n/a' })</field>
             <field name="partner_to">${object.partner_id.id}</field>
             <field name="model_id" ref="sale.model_sale_order"/>
diff --git a/addons/sale/models/product_template.py b/addons/sale/models/product_template.py
index e1ffda478abf948695a5b74ed41a9be18d69c35d..79dffdd719bbea33c2bcb4ae0db8477afe54820e 100644
--- a/addons/sale/models/product_template.py
+++ b/addons/sale/models/product_template.py
@@ -24,7 +24,7 @@ class ProductTemplate(models.Model):
     @api.depends('product_variant_ids.sales_count')
     def _sales_count(self):
         for product in self:
-            product.sales_count = sum([p.sales_count for p in product.product_variant_ids])
+            product.sales_count = sum([p.sales_count for p in product.with_context(active_test=False).product_variant_ids])
 
     @api.multi
     def action_view_sales(self):
diff --git a/addons/stock/i18n/nl.po b/addons/stock/i18n/nl.po
index 90ec0e3c55a4c3124355a609962e939621541fd5..1541859ac42bdf8c5773c8f42bc0bded21dcba6b 100644
--- a/addons/stock/i18n/nl.po
+++ b/addons/stock/i18n/nl.po
@@ -4454,7 +4454,8 @@ msgstr "Aantallen"
 #, python-format
 msgid "Quants cannot be created for consumables or services."
 msgstr ""
-"Quants kunnen niet worden aangemaakt voor verbruiksartikelen of diensten."
+"Hoeveelheden kunnen niet worden aangemaakt voor verbruiksartikelen of "
+"diensten."
 
 #. module: stock
 #: model:ir.model.fields,field_description:stock.field_stock_picking_type__rate_picking_backorders
@@ -5429,8 +5430,8 @@ msgid ""
 "Technical field used to compute whether the mark as todo button should be "
 "shown."
 msgstr ""
-"Technisch veld waarmee berekend wordt of de markeer als ToDo zichtbaar mag "
-"zijn."
+"Technisch veld waarmee berekend wordt of de markeer als \"Te doen\" "
+"zichtbaar mag zijn."
 
 #. module: stock
 #: model:ir.model.fields,help:stock.field_stock_picking__show_validate
diff --git a/addons/stock/models/stock_move.py b/addons/stock/models/stock_move.py
index e621a86c61af83abb51f97700076479320ea9f57..28a0055b5a49188daa22cb43f8fedda0a1c3a377 100644
--- a/addons/stock/models/stock_move.py
+++ b/addons/stock/models/stock_move.py
@@ -930,11 +930,15 @@ class StockMove(models.Model):
                 if not move.move_orig_ids:
                     if move.procure_method == 'make_to_order':
                         continue
+                    # If we don't need any quantity, consider the move assigned.
+                    need = move.product_qty - move.reserved_availability
+                    if float_is_zero(need, precision_rounding=move.product_id.uom_id.rounding):
+                        assigned_moves |= move
+                        continue
                     # Reserve new quants and create move lines accordingly.
                     available_quantity = self.env['stock.quant']._get_available_quantity(move.product_id, move.location_id)
                     if available_quantity <= 0:
                         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
diff --git a/addons/stock/report/report_stock_forecast.py b/addons/stock/report/report_stock_forecast.py
index 700aa5455de80563897188e3cc37091b5d74c91b..1ca3b1195b5b4a7fd804e7eaee34ff438ed79c22 100644
--- a/addons/stock/report/report_stock_forecast.py
+++ b/addons/stock/report/report_stock_forecast.py
@@ -66,7 +66,7 @@ class ReportStockForecat(models.Model):
             LEFT JOIN
             stock_location source_location ON sm.location_id = source_location.id
             WHERE
-            sm.state IN ('confirmed','assigned','waiting') and
+            sm.state IN ('confirmed','partially_available','assigned','waiting') and
             source_location.usage != 'internal' and dest_location.usage = 'internal'
             GROUP BY sm.date_expected,sm.product_id, sm.company_id
             UNION ALL
@@ -88,7 +88,7 @@ class ReportStockForecat(models.Model):
             LEFT JOIN
                stock_location dest_location ON sm.location_dest_id = dest_location.id
             WHERE
-                sm.state IN ('confirmed','assigned','waiting') and
+                sm.state IN ('confirmed','partially_available','assigned','waiting') and
             source_location.usage = 'internal' and dest_location.usage != 'internal'
             GROUP BY sm.date_expected,sm.product_id, sm.company_id)
          as MAIN
diff --git a/addons/stock/tests/test_move.py b/addons/stock/tests/test_move.py
index f1879f97d0620f37e3975ccd19c44539a868f3d8..9b5de71473ce7ac4590fff876769d8f93380db1b 100644
--- a/addons/stock/tests/test_move.py
+++ b/addons/stock/tests/test_move.py
@@ -1074,6 +1074,31 @@ class StockMove(TransactionCase):
         self.assertEqual(self.env['stock.quant']._get_available_quantity(self.product2, self.customer_location), 12.0)
         self.assertEqual(len(self.env['stock.quant']._gather(self.product2, self.customer_location)), 12)
 
+    def test_availability_8(self):
+        """ Test the assignment mechanism when the product quantity is decreased on a partially
+            reserved stock move.
+        """
+        # make some stock
+        self.env['stock.quant']._update_available_quantity(self.product1, self.stock_location, 3.0)
+        self.assertAlmostEqual(self.product1.qty_available, 3.0)
+
+        move_partial = self.env['stock.move'].create({
+            'name': 'test_partial',
+            'location_id': self.stock_location.id,
+            'location_dest_id': self.customer_location.id,
+            'product_id': self.product1.id,
+            'product_uom': self.uom_unit.id,
+            'product_uom_qty': 5.0,
+        })
+
+        move_partial._action_confirm()
+        move_partial._action_assign()
+        self.assertAlmostEqual(self.product1.virtual_available, -2.0)
+        self.assertEqual(move_partial.state, 'partially_available')
+        move_partial.product_uom_qty = 3.0
+        move_partial._action_assign()
+        self.assertEqual(move_partial.state, 'assigned')
+
     def test_unreserve_1(self):
         """ Check that unreserving a stock move sets the products reserved as available and
         set the state back to confirmed.
@@ -3917,4 +3942,3 @@ class StockMove(TransactionCase):
         picking.button_validate()
         self.assertEqual(self.env['stock.quant']._get_available_quantity(self.product1, self.stock_location), 0)
         self.assertEqual(self.env['stock.quant']._get_available_quantity(self.product1, self.customer_location), 2)
-
diff --git a/addons/stock_account/views/stock_account_views.xml b/addons/stock_account/views/stock_account_views.xml
index 656d6ea7364f6cfa125292eab41ce8075dea84a4..77747cdea5ce388f75402745300b1027ef335bb4 100644
--- a/addons/stock_account/views/stock_account_views.xml
+++ b/addons/stock_account/views/stock_account_views.xml
@@ -44,7 +44,7 @@
             <field name="model">stock.return.picking</field>
             <field name="arch" type="xml">
                 <xpath expr="//field[@name='product_return_moves']/tree" position="inside">
-                    <field name="to_refund" widget="boolean_toggle"/>
+                    <field name="to_refund"/>
                 </xpath>
             </field>
         </record>
diff --git a/addons/survey/wizard/survey_email_compose_message.py b/addons/survey/wizard/survey_email_compose_message.py
index f23d836bc30ef7bca657a54f2738f07582e4ee36..8088454358579757eb32384656e3954d7b176a7f 100644
--- a/addons/survey/wizard/survey_email_compose_message.py
+++ b/addons/survey/wizard/survey_email_compose_message.py
@@ -87,8 +87,6 @@ class SurveyMailComposeMessage(models.TransientModel):
             #set url
             url = wizard.survey_id.public_url
 
-            url = urls.url_parse(url).path[1:]  # dirty hack to avoid incorrect urls
-
             if token:
                 url = url + '/' + token
 
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 4c2b213243f711bd10bd69db4a0f47906632c363..c6f67bc23fac275022758678e35fc3c71ba31a15 100644
--- a/addons/web/static/src/js/views/basic/basic_model.js
+++ b/addons/web/static/src/js/views/basic/basic_model.js
@@ -1990,9 +1990,7 @@ var BasicModel = AbstractModel.extend({
         var records = [];
         var ids = [];
         list = this._applyX2ManyOperations(list);
-        if (_.isEmpty(list.data)) {
-            return $.when();
-        }
+
         _.each(list.data, function (localId) {
             var record = self.localData[localId];
             var data = record._changes || record.data;
@@ -2003,6 +2001,9 @@ var BasicModel = AbstractModel.extend({
             ids.push(many2oneRecord.res_id);
             model = many2oneRecord.model;
         });
+        if (!ids.length) {
+            return $.when();
+        }
         return this._rpc({
                 model: model,
                 method: 'name_get',
diff --git a/addons/web/static/src/less/list_view.less b/addons/web/static/src/less/list_view.less
index 666b4a8e116de85bbcd7383a3032ab6fe3916902..e56e94fff934f4d2e93d6ad19e36af17e8f6bd7e 100644
--- a/addons/web/static/src/less/list_view.less
+++ b/addons/web/static/src/less/list_view.less
@@ -84,7 +84,6 @@
         padding: 0px;
         background-style: none;
         border-style: none;
-        height: 0px;
         display: table-cell;
     }
 
diff --git a/addons/web/static/tests/fields/relational_fields_tests.js b/addons/web/static/tests/fields/relational_fields_tests.js
index 67698bc285c64fa215579fde6c686ec7ab5ba4d6..a9e6a27e07738144567e9b6eff49e83473fb4eb2 100644
--- a/addons/web/static/tests/fields/relational_fields_tests.js
+++ b/addons/web/static/tests/fields/relational_fields_tests.js
@@ -2551,6 +2551,58 @@ QUnit.module('relational_fields', {
 
     QUnit.module('FieldOne2Many');
 
+    QUnit.test('New record with a o2m also with 2 new records, ordered, and resequenced', function (assert) {
+        assert.expect(3);
+
+        // Needed to have two new records in a single stroke
+        this.data.partner.onchanges = {
+            foo: function(obj) {
+                obj.p = [
+                            [5],
+                            [0, 0, {trululu: false}],
+                            [0, 0, {trululu: false}],
+                ]
+            }
+        };
+
+        var form = createView({
+            View: FormView,
+            model: 'partner',
+            data: this.data,
+            arch:'<form string="Partners">' +
+                    '<field name="foo" />' +
+                    '<field name="p">' +
+                        '<tree editable="bottom" default_order="int_field">' +
+                            '<field name="int_field" widget="handle"/>' +
+                            '<field name="trululu"/>' +
+                        '</tree>' +
+                    '</field>' +
+                '</form>',
+            viewOptions: {
+                mode: 'create',
+            },
+            mockRPC: function (route, args) {
+                assert.step(args.method + ' ' + args.model)
+                return this._super(route, args);
+            },
+        });
+
+        // change the int_field through drag and drop
+        // that way, we'll trigger the sorting and the name_get
+        // of the lines of "p"
+        testUtils.dragAndDrop(
+            form.$('.ui-sortable-handle').eq(1),
+            form.$('tbody tr').first(),
+            {position: 'top'}
+        );
+
+        // Only those two should have been called
+        // name_get on trululu would trigger an traceback
+        assert.verifySteps(['default_get partner', 'onchange partner']);
+
+        form.destroy();
+    });
+
     QUnit.test('O2M List with pager, decoration and default_order: add and cancel adding', function (assert) {
         assert.expect(3);
 
diff --git a/addons/web_editor/static/src/js/editor/summernote.js b/addons/web_editor/static/src/js/editor/summernote.js
index b3e06fa1716b646cd09d2f18766cb74d7c71a44d..657a8bbac8c904256fc2433ee7e10e77de830dde 100644
--- a/addons/web_editor/static/src/js/editor/summernote.js
+++ b/addons/web_editor/static/src/js/editor/summernote.js
@@ -2255,7 +2255,7 @@ $.summernote.pluginEvents.backColor = function (event, editor, layoutInfo, backC
 };
 
 options.onCreateLink = function (sLinkUrl) {
-    if (sLinkUrl.indexOf('mailto:') === 0) {
+    if (sLinkUrl.indexOf('mailto:') === 0 || sLinkUrl.indexOf('tel:') === 0) {
       // pass
     } else if (sLinkUrl.indexOf('@') !== -1 && sLinkUrl.indexOf(':') === -1) {
       sLinkUrl =  'mailto:' + sLinkUrl;
diff --git a/addons/website/controllers/main.py b/addons/website/controllers/main.py
index 62d862afe35a6ca90cd9b397fd075eec67eea76e..ead68c28274df05dbc63c1ff5590c4d088d69428 100644
--- a/addons/website/controllers/main.py
+++ b/addons/website/controllers/main.py
@@ -18,8 +18,9 @@ from odoo import http, models, fields, _
 from odoo.http import request
 from odoo.tools import pycompat, OrderedSet
 from odoo.addons.http_routing.models.ir_http import slug, _guess_mimetype
-from odoo.addons.web.controllers.main import WebClient, Binary, Home
+from odoo.addons.web.controllers.main import WebClient, Binary
 from odoo.addons.portal.controllers.portal import pager as portal_pager
+from odoo.addons.portal.controllers.web import Home
 
 logger = logging.getLogger(__name__)
 
diff --git a/addons/website_crm_partner_assign/models/res_partner.py b/addons/website_crm_partner_assign/models/res_partner.py
index aa0d40af98e185309c1c581ed755ece168fb4691..9b47a9f791d461c4bb5bfcbeff96c0f0697aeca8 100644
--- a/addons/website_crm_partner_assign/models/res_partner.py
+++ b/addons/website_crm_partner_assign/models/res_partner.py
@@ -34,11 +34,11 @@ class ResPartnerActivation(models.Model):
 class ResPartner(models.Model):
     _inherit = "res.partner"
 
-    partner_weight = fields.Integer('Level Weight', default=lambda *args: 0,
+    partner_weight = fields.Integer('Level Weight', default=0, track_visibility='onchange',
         help="Gives the probability to assign a lead to this partner. (0 means no assignation.)")
-    grade_id = fields.Many2one('res.partner.grade', 'Level')
+    grade_id = fields.Many2one('res.partner.grade', 'Level', track_visibility='onchange')
     grade_sequence = fields.Integer(related='grade_id.sequence', readonly=True, store=True)
-    activation = fields.Many2one('res.partner.activation', 'Activation', index=True)
+    activation = fields.Many2one('res.partner.activation', 'Activation', index=True, track_visibility='onchange')
     date_partnership = fields.Date('Partnership Date')
     date_review = fields.Date('Latest Partner Review')
     date_review_next = fields.Date('Next Partner Review')
diff --git a/addons/website_event/static/src/js/website_event.js b/addons/website_event/static/src/js/website_event.js
index 3aa8691fca74524a30e70fb694b3d4956ac946cc..ebe38118559e399e53f2bf8f54421b82b81a2ab6 100644
--- a/addons/website_event/static/src/js/website_event.js
+++ b/addons/website_event/static/src/js/website_event.js
@@ -20,8 +20,11 @@ return instance.appendTo($form).then(function () {
 odoo.define('website_event.website_event', function (require) {
 
 var ajax = require('web.ajax');
+var core = require('web.core');
 var Widget = require('web.Widget');
 
+var _t = core._t;
+
 // Catch registration form event, because of JS for attendee details
 var EventRegistrationForm = Widget.extend({
     start: function () {
@@ -31,7 +34,6 @@ var EventRegistrationForm = Widget.extend({
                 .off('click')
                 .removeClass('a-submit')
                 .click(function (ev) {
-                    $(this).attr('disabled', true);
                     self.on_click(ev);
                 });
         });
@@ -43,15 +45,18 @@ var EventRegistrationForm = Widget.extend({
         var $form = $(ev.currentTarget).closest('form');
         var $button = $(ev.currentTarget).closest('[type="submit"]');
         var post = {};
+        $('#registration_form table').siblings('.alert').remove();
         $('#registration_form select').each(function () {
             post[$(this).attr('name')] = $(this).val();
         });
         var tickets_ordered = _.some(_.map(post, function (value, key) { return parseInt(value); }));
         if (!tickets_ordered) {
-            return $('#registration_form table').after(
-                '<div class="alert alert-info">Please select at least one ticket.</div>'
-            );
+            $('<div class="alert alert-info"/>')
+                .text(_t('Please select at least one ticket.'))
+                .insertAfter('#registration_form table');
+            return $.Deferred();
         } else {
+            $button.attr('disabled', true);
             return ajax.jsonRpc($form.attr('action'), 'call', post).then(function (modal) {
                 var $modal = $(modal);
                 $modal.find('.modal-body > div').removeClass('container'); // retrocompatibility - REMOVE ME in master / saas-19
diff --git a/addons/website_sale/views/templates.xml b/addons/website_sale/views/templates.xml
index a99870fae86d79b0a9d5728275f6ee9a1628f816..3026da8365e2684df8d144302e2f36cbcec29b3a 100644
--- a/addons/website_sale/views/templates.xml
+++ b/addons/website_sale/views/templates.xml
@@ -427,7 +427,7 @@
                             <div id="o-carousel-product" class="carousel slide" data-ride="carousel" data-interval="0">
                               <div class="carousel-outer">
                                 <div class="carousel-inner">
-                                    <div t-if="variant_img" class="item active" itemprop="image" t-field="product.product_variant_id.image" t-options="{'widget': 'image', 'class': 'product_detail_img js_variant_img', 'alt-field': 'name', 'zoom': 'image', 'unique': product['__last_update'] + (product.product_variant_id['__last_update'] or '')}"/>
+                                    <div t-if="variant_img" class="item active" itemprop="image" t-field="product[:1].product_variant_id.image" t-options="{'widget': 'image', 'class': 'product_detail_img js_variant_img', 'alt-field': 'name', 'zoom': 'image', 'unique': product['__last_update'] + (product.product_variant_id['__last_update'] or '')}"/>
                                     <div t-attf-class="item#{'' if variant_img else ' active'}" itemprop="image" t-field="product.image" t-options="{'widget': 'image', 'class': 'product_detail_img', 'alt-field': 'name', 'zoom': 'image', 'unique': product['__last_update']}"/>
                                     <t t-if="len(image_ids)" t-foreach="image_ids" t-as="pimg">
                                         <div class="item" t-field="pimg.image" t-options='{"widget": "image", "class": "product_detail_img", "alt-field": "name", "zoom": "image" }'/>
diff --git a/doc/setup/deploy.rst b/doc/setup/deploy.rst
index 13d4198cceb3ae2ebe3a695f5c6e378686fd6887..dadd1484d460d02832f114964e52fabb13a4f411 100644
--- a/doc/setup/deploy.rst
+++ b/doc/setup/deploy.rst
@@ -534,10 +534,14 @@ Supported Browsers
 Odoo is supported by multiple browsers for each of its versions. No 
 distinction is made according to the browser version in order to be
 up-to-date. Odoo is supported on the current browser version. The list 
-of the supported browsers by Odoo version is the following:
+of the supported browsers is the following:
+
+- IE11,
+- Mozilla Firefox,
+- Google Chrome,
+- Safari,
+- Microsoft Edge
 
-- **Odoo 9:** IE11, Mozilla Firefox, Google Chrome, Safari, Microsoft Edge
-- **Odoo 10+:** Mozilla Firefox, Google Chrome, Safari, Microsoft Edge
 
 .. [#different-machines]
     to have multiple Odoo installations use the same PostgreSQL database,
diff --git a/odoo/addons/base/i18n/tr.po b/odoo/addons/base/i18n/tr.po
index fe58a04c1a82f1035cbf950702bd79db769695cb..ff3637e92d364fa25ae89c419b0090588172f7f2 100644
--- a/odoo/addons/base/i18n/tr.po
+++ b/odoo/addons/base/i18n/tr.po
@@ -8009,7 +8009,7 @@ msgstr ""
 #. module: base
 #: model:ir.module.module,summary:base.module_web_grid
 msgid "Basic 2D Grid view for odoo"
-msgstr ""
+msgstr "Odoo için Temel 2D Tablo görünümü"
 
 #. module: base
 #: model:ir.module.module,summary:base.module_quality
@@ -8020,6 +8020,7 @@ msgstr ""
 #: model:ir.module.module,summary:base.module_iap
 msgid "Basic models and helpers to support In-App purchases."
 msgstr ""
+"Uygulama içi satın alımları destekleyecek temel modeller ve yardımcılar."
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_account_batch_deposit
@@ -8029,7 +8030,7 @@ msgstr "Toplu Mevduat"
 #. module: base
 #: selection:res.country,name_position:0
 msgid "Before Address"
-msgstr ""
+msgstr "Adresten Önce"
 
 #. module: base
 #: selection:res.currency,position:0
@@ -8041,7 +8042,7 @@ msgstr "Tutar Önce"
 #, python-format
 msgid ""
 "Before clicking on 'Change Password', you have to write a new password."
-msgstr ""
+msgstr "'Şifreyi Değiştir' e tıklamadan önce, yeni bir şifre yazmalısınız."
 
 #. module: base
 #: model:res.country,name:base.by
@@ -8056,7 +8057,7 @@ msgstr "Belçika Intrastat beyannamesi"
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_pos_blackbox_be
 msgid "Belgian Registered Cash Register"
-msgstr ""
+msgstr "Belçika Kaydedilmiş Kasa Hareketleri "
 
 #. module: base
 #: model:res.country,name:base.be
@@ -8086,7 +8087,7 @@ msgstr "Belçika - Bordro"
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_l10n_be_hr_payroll_fleet
 msgid "Belgium - Payroll - Fleet"
-msgstr ""
+msgstr "Belçika - Bordro - Filo"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_l10n_be_hr_payroll_account
@@ -8121,7 +8122,7 @@ msgstr "Bütan"
 #. module: base
 #: model:ir.module.module,summary:base.module_mrp_plm
 msgid "Bill of Materials, Routings, Versions, Engineering Change Orders"
-msgstr ""
+msgstr "Ürün Reçeteleri, Rotalar, Sürümler, Mühendislik Değişim Siparişleri"
 
 #. module: base
 #: selection:ir.property,type:0
@@ -8151,12 +8152,12 @@ msgstr "Bağlantı Modeli"
 #: model:ir.model.fields,field_description:base.field_ir_actions_server__binding_type
 #: model:ir.model.fields,field_description:base.field_ir_cron__binding_type
 msgid "Binding Type"
-msgstr ""
+msgstr "Bağlantı Türü"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_hw_blackbox_be
 msgid "Blackbox Hardware Driver"
-msgstr ""
+msgstr "Blackbox Donanım Sürücüsü"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_website_blog
@@ -8196,7 +8197,7 @@ msgstr "Bootswatch Tema"
 #. module: base
 #: model:res.country,name:base.ba
 msgid "Bosnia and Herzegovina"
-msgstr ""
+msgstr "Bosna Hersek"
 
 #. module: base
 #: model:res.country,name:base.bw
@@ -8216,7 +8217,7 @@ msgstr "Bouvet Adası"
 #. module: base
 #: selection:res.company,external_report_layout:0
 msgid "Boxed"
-msgstr ""
+msgstr "Kutulanmış"
 
 #. module: base
 #: model:res.country,name:base.br
@@ -8242,7 +8243,7 @@ msgstr "Web sitesi ve acquirers köprü modülü."
 #: model:ir.module.module,description:base.module_website_helpdesk
 #: model:ir.module.module,summary:base.module_website_helpdesk
 msgid "Bridge module for helpdesk modules using the website."
-msgstr ""
+msgstr "Websitesini kullanarak yardım masası modülleri için köprü modülü."
 
 #. module: base
 #: model:res.country,name:base.io
@@ -8298,7 +8299,7 @@ msgstr "Ä°le"
 #. module: base
 #: model:res.partner.industry,full_name:base.res_partner_industry_C
 msgid "C MANUFACTURING"
-msgstr ""
+msgstr "C Ãœretimi"
 
 #. module: base
 #: selection:report.paperformat,format:0
@@ -8318,7 +8319,7 @@ msgstr "CRM Ödüllendirme"
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_crm_livechat
 msgid "CRM Livechat"
-msgstr ""
+msgstr "CRM Canlı Sohbet"
 
 #. module: base
 #: selection:base.language.export,format:0
@@ -8349,7 +8350,7 @@ msgstr ""
 #. module: base
 #: model:res.country,name:base.kh
 msgid "Cambodia"
-msgstr ""
+msgstr "Kamboçya"
 
 #. module: base
 #: model:res.country,name:base.cm
@@ -8362,6 +8363,8 @@ msgstr "Kamerun"
 msgid ""
 "Can not create Many-To-One records indirectly, import the field separately"
 msgstr ""
+"Dolaylı olarak Many-To-One kayıtları oluşturamaz, alanı ayrı olarak içe "
+"aktarabilir"
 
 #. module: base
 #: code:addons/base/models/ir_module.py:616
@@ -8373,7 +8376,7 @@ msgstr "'%s' modülü güncellenemiyor. Yüklü değil"
 #: code:addons/base/models/ir_model.py:669
 #, python-format
 msgid "Can only rename one field at a time!"
-msgstr ""
+msgstr "Bir seferde sadece bir alanı yeniden adlandırabilir!"
 
 #. module: base
 #: model:res.country,name:base.ca
@@ -8439,12 +8442,13 @@ msgstr "Yapılandırmasını çoğaltması yamazsınız!"
 #, python-format
 msgid "Cannot rename/delete fields that are still present in views:"
 msgstr ""
+"Görünümlerde hâlâ mevcut olan alanları yeniden adlandıramaz / silemezsiniz:"
 
 #. module: base
 #: code:addons/base/models/res_lang.py:228
 #, python-format
 msgid "Cannot unactivate a language that is currently used by users."
-msgstr ""
+msgstr "Kullanıcı tarafından kullanılan bir dili pasif hale getiremez."
 
 #. module: base
 #: model:res.country,name:base.cv
@@ -8506,7 +8510,7 @@ msgstr "Parolayı değiştir"
 #. module: base
 #: model:ir.ui.view,arch_db:base.view_country_form
 msgid "Change the way addresses are displayed in reports"
-msgstr ""
+msgstr "Adreslerin raporlarda gösterilme şeklini değiştirin"
 
 #. module: base
 #: code:addons/base/models/res_partner.py:337
@@ -8517,6 +8521,10 @@ msgid ""
 "a new contact should be created under that new company. You can use the "
 "\"Discard\" button to abandon this change."
 msgstr ""
+"Bir kişinin şirketini değiştirmek, doğru bir şekilde ayarlanmadığında "
+"yapılmalıdır. Var olan bir kişi yeni bir şirket için çalışmaya başlarsa, o "
+"zaman yeni şirketin altında yeni bir bağlantı kurulmalıdır. Bu değişikliği "
+"iptal etmek için \"Atma\" düğmesini kullanabilirsiniz."
 
 #. module: base
 #: code:addons/base/models/ir_model.py:656
@@ -8531,6 +8539,8 @@ msgid ""
 "Changing the type of a field is not yet supported. Please drop it and create"
 " it again!"
 msgstr ""
+"Bir alan türünün değişikliği henüz desteklenmiyor. Lütfen bunu bırakın ve "
+"yeniden oluÅŸturun!"
 
 #. module: base
 #: selection:ir.property,type:0
@@ -8550,12 +8560,12 @@ msgstr "Çek Yazdırma"
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_account_check_printing
 msgid "Check Printing Base"
-msgstr ""
+msgstr "Çek Yazdırma Temeli"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_hr_expense_check
 msgid "Check Printing in Expenses"
-msgstr ""
+msgstr "Giderlerde Çek Yazdırma"
 
 #. module: base
 #: model:ir.model.fields,help:base.field_res_partner__is_company
@@ -8567,7 +8577,7 @@ msgstr ""
 #. module: base
 #: model:ir.module.module,summary:base.module_account_check_printing
 msgid "Check printing commons"
-msgstr ""
+msgstr "Genel Çek Yazdırma"
 
 #. module: base
 #: model:ir.model.fields,help:base.field_res_partner__customer
@@ -8684,6 +8694,8 @@ msgid ""
 "Choose a subview of partners that includes only address fields, to change "
 "the way users can input addresses."
 msgstr ""
+"Kullanıcıların adres girme şeklini değiştirmek için yalnızca adres "
+"alanlarını içeren iş ortaklarının alt görünümünü seçin."
 
 #. module: base
 #: model:ir.model.fields,help:base.field_ir_mail_server__smtp_encryption
@@ -8693,6 +8705,10 @@ msgid ""
 "- TLS (STARTTLS): TLS encryption is requested at start of SMTP session (Recommended)\n"
 "- SSL/TLS: SMTP sessions are encrypted with SSL/TLS through a dedicated port (default: 465)"
 msgstr ""
+"Bağlantı şifreleme şemasını seçin:\n"
+"- Yok: SMTP oturumları açık metin içinde yapılır.\n"
+"- TLS (STARTTLS): SMTP oturumunun başlangıcında TLS şifrelemesi istenir (Tavsiye edilir)\n"
+"- SSL / TLS: SMTP oturumları özel bir port üzerinden SSL / TLS ile şifrelenir (varsayılan: 465)"
 
 #. module: base
 #: model:res.country,name:base.cx
@@ -8715,12 +8731,12 @@ msgstr "Semt/İlçe"
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_base_address_city
 msgid "City Addresses"
-msgstr ""
+msgstr "Åžehir "
 
 #. module: base
 #: selection:res.company,external_report_layout:0
 msgid "Clean"
-msgstr ""
+msgstr "Temizle"
 
 #. module: base
 #: model:ir.ui.view,arch_db:base.view_base_module_update
@@ -8777,6 +8793,7 @@ msgstr "İşbirliği Bloknotları"
 #: model:ir.module.module,summary:base.module_account_sepa_direct_debit
 msgid "Collect payments from your customers through SEPA direct debit."
 msgstr ""
+"SEPA doğrudan ödeme yoluyla, müşterilerinizden ödemelerinizi toplayın."
 
 #. module: base
 #: model:res.country,name:base.co
@@ -8819,12 +8836,12 @@ msgstr "Sütun 2"
 #. module: base
 #: model:ir.model.fields,help:base.field_ir_model_fields__column2
 msgid "Column referring to the record in the comodel table"
-msgstr ""
+msgstr "Comodel tablosundaki reklama başvuran sütun"
 
 #. module: base
 #: model:ir.model.fields,help:base.field_ir_model_fields__column1
 msgid "Column referring to the record in the model table"
-msgstr ""
+msgstr "Model tablosundaki kayda başvuran sütun"
 
 #. module: base
 #: selection:report.paperformat,format:0
@@ -8859,7 +8876,7 @@ msgstr "Ticari Varlık"
 #. module: base
 #: model:ir.module.module,summary:base.module_pos_data_drinks
 msgid "Common Drinks data for points of sale"
-msgstr ""
+msgstr "Satış noktaları için ortak içecek verileri    "
 
 #. module: base
 #: model:ir.ui.view,arch_db:base.view_res_bank_form
@@ -8885,7 +8902,7 @@ msgstr "Firmalar"
 #. module: base
 #: model:ir.ui.view,arch_db:base.view_users_form
 msgid "Companies count"
-msgstr ""
+msgstr "Firma sayıları"
 
 #. module: base
 #: model:ir.model.fields,field_description:base.field_ir_attachment__company_id
@@ -8924,7 +8941,7 @@ msgstr "Firma Adı"
 #: model:ir.model.fields,field_description:base.field_res_partner__commercial_company_name
 #: model:ir.model.fields,field_description:base.field_res_users__commercial_company_name
 msgid "Company Name Entity"
-msgstr ""
+msgstr "Firma Adı Varlığı"
 
 #. module: base
 #: model:ir.actions.act_window,name:base.ir_property_form
@@ -8951,7 +8968,7 @@ msgstr "Firma Türü"
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_project_timesheet_forecast_sale
 msgid "Compare timesheets and forecast for your projects"
-msgstr ""
+msgstr "Projeleriniz için zaman çizelgelerini ve öngörüleri kıyaslayın"
 
 #. module: base
 #: model:ir.model.fields,field_description:base.field_res_partner__contact_address
@@ -9002,7 +9019,7 @@ msgstr "Yapılandırma Sihirbazı Adımları"
 #. module: base
 #: model:ir.actions.server,name:base.action_run_ir_action_todo
 msgid "Config: Run Remaining Action Todo"
-msgstr ""
+msgstr "Yapılandır: Yapılacak Kalan Eylemleri Çalıştır"
 
 #. module: base
 #: model:ir.ui.menu,name:base.menu_reporting_config
@@ -9025,7 +9042,7 @@ msgstr "Yapılandırma Sihirbazları"
 #. module: base
 #: model:ir.module.module,summary:base.module_timesheet_grid_sale
 msgid "Configure timesheet invoicing"
-msgstr ""
+msgstr "Zaman çizelgesi faturalamayı yapılandır"
 
 #. module: base
 #: model:ir.ui.view,arch_db:base.view_base_module_uninstall
@@ -9065,7 +9082,7 @@ msgstr ""
 #: code:addons/base/models/ir_mail_server.py:172
 #, python-format
 msgid "Connection Test Succeeded! Everything seems properly set up!"
-msgstr ""
+msgstr "Bağlantı Testi Başarılı! Her şey düzgün ayarlanmış görünüyor!"
 
 #. module: base
 #: model:ir.model.fields,field_description:base.field_ir_model_constraint__name
@@ -9086,7 +9103,7 @@ msgstr "Aynı ada sahip modül benzersiz kısıtlamalardır."
 #. module: base
 #: model:res.partner.industry,name:base.res_partner_industry_F
 msgid "Construction"
-msgstr ""
+msgstr "Yap"
 
 #. module: base
 #: model:ir.model,name:base.model_res_partner
@@ -9113,7 +9130,7 @@ msgstr "Ä°letiÅŸim Formu"
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_website_crm_phone_validation
 msgid "Contact Form Number Validation"
-msgstr ""
+msgstr "İletişim Form Numarası Doğrulaması"
 
 #. module: base
 #: model:ir.ui.view,arch_db:base.view_partner_form
@@ -9217,7 +9234,7 @@ msgstr "E-posta adresi olmayan kişi oluşturulamadı!"
 #. module: base
 #: model:ir.model.fields,field_description:base.field_ir_model__count
 msgid "Count (incl. archived)"
-msgstr ""
+msgstr "Say ( arÅŸivleri dahil et)"
 
 #. module: base
 #: model:ir.actions.act_window,name:base.action_country
@@ -9288,7 +9305,7 @@ msgstr "EriÅŸim Yetkisi OluÅŸtur"
 #. module: base
 #: model:ir.ui.view,arch_db:base.view_server_action_form
 msgid "Create Contextual Action"
-msgstr ""
+msgstr "BaÄŸlamsal Eylem OluÅŸtur"
 
 #. module: base
 #: model:ir.model.fields,field_description:base.field_ir_logging__create_date
@@ -9310,12 +9327,12 @@ msgstr "Menü Oluştur"
 #. module: base
 #: model:ir.module.module,summary:base.module_website_form_project
 msgid "Create Tasks From Contact Form"
-msgstr ""
+msgstr "İletişim Formundan Görevler Oluştur"
 
 #. module: base
 #: model:ir.module.module,summary:base.module_crm_project
 msgid "Create Tasks from Leads"
-msgstr ""
+msgstr "Müşteri Adaylarından Görevler Oluştur"
 
 #. module: base
 #: model:ir.ui.view,arch_db:base.view_model_menu_create
@@ -9408,12 +9425,13 @@ msgstr "Firma oluÅŸtur"
 #. module: base
 #: model:ir.module.module,summary:base.module_crm_livechat
 msgid "Create lead from livechat conversation"
-msgstr ""
+msgstr "Canlı görüşmelerden müşteri adayı oluştur"
 
 #. module: base
 #: model:ir.module.module,description:base.module_crm_livechat
 msgid "Create new lead with using /lead command in the channel"
 msgstr ""
+"Kanalda / müşteri adayı komutunu kullanarak yeni müşteri adayı oluşturun"
 
 #. module: base
 #: model:ir.module.module,summary:base.module_survey
@@ -9604,7 +9622,7 @@ msgstr "Satış Noktası için kredi kartı desteği"
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_crm_phone_validation
 msgid "Crm Phone Numbers Validation"
-msgstr ""
+msgstr "CRM Telefon Numarası Doğrulama"
 
 #. module: base
 #: model:res.country,name:base.hr
@@ -9614,12 +9632,12 @@ msgstr "Hırvatistan"
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_l10n_hr
 msgid "Croatia - Accounting (RRIF 2012)"
-msgstr ""
+msgstr "Hırvatistan - Muhasebe (RRIF 2012)"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_l10n_hr_reports
 msgid "Croatia - RRIF 2012 COA - Accounting Reports"
-msgstr ""
+msgstr "Hırvatistan - RRIF 2012 COA - Muhasebe Raporları"
 
 #. module: base
 #: model:res.country,name:base.cu
@@ -9687,7 +9705,7 @@ msgstr "Para Birimi"
 #. module: base
 #: model:ir.model.fields,help:base.field_res_currency__currency_unit_label
 msgid "Currency Unit Name"
-msgstr ""
+msgstr "Para Birimi Adı"
 
 #. module: base
 #: model:ir.model.fields,help:base.field_res_currency__symbol
@@ -9756,13 +9774,13 @@ msgstr "Özel alanların 'x_' ile başlayan bir adı olmalıdır !"
 #. module: base
 #: model:ir.model.fields,field_description:base.field_res_country__name_position
 msgid "Customer Name Position"
-msgstr ""
+msgstr "Müşteri Adı Pozisyonu"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_portal
 #: model:ir.module.module,summary:base.module_portal
 msgid "Customer Portal"
-msgstr ""
+msgstr "Müşteri Portalı"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_rating
@@ -9817,17 +9835,17 @@ msgstr "Çek Cumhuriyeti"
 #. module: base
 #: model:res.country,name:base.ci
 msgid "Côte d'Ivoire"
-msgstr ""
+msgstr "Fil DiÅŸi Sahili"
 
 #. module: base
 #: model:res.partner.industry,full_name:base.res_partner_industry_D
 msgid "D ELECTRICITY,GAS,STEAM AND AIR CONDITIONING SUPPLY"
-msgstr ""
+msgstr "D Elektrik, gaz, buhar ve iklimlendirme arzı"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_delivery_dhl
 msgid "DHL Shipping"
-msgstr ""
+msgstr "DHL Kargo"
 
 #. module: base
 #: selection:report.paperformat,format:0
@@ -9849,7 +9867,7 @@ msgstr "Verileri xml dönüştürme testler için"
 #. module: base
 #: model:ir.ui.view,arch_db:base.view_server_action_form
 msgid "Data to Write"
-msgstr ""
+msgstr "Yazma verisi"
 
 #. module: base
 #: model:ir.ui.view,arch_db:base.ir_logging_search_view
@@ -9983,7 +10001,7 @@ msgstr "DiÄŸer KiÅŸileri TekilleÅŸtir"
 #. module: base
 #: model:ir.model.fields,field_description:base.field_ir_filters__is_default
 msgid "Default Filter"
-msgstr ""
+msgstr "Varsayılan Filtre"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_theme_default
@@ -9993,7 +10011,7 @@ msgstr "Öntanımlı Tema"
 #. module: base
 #: model:ir.model.fields,field_description:base.field_ir_default__json_value
 msgid "Default Value (JSON format)"
-msgstr ""
+msgstr "Varsayılan Değer (JSON formatı)"
 
 #. module: base
 #: model:ir.model.fields,help:base.field_ir_actions_act_window__limit
@@ -10009,6 +10027,7 @@ msgstr "Varsayılan kağıt formatı?"
 #: model:ir.module.module,description:base.module_theme_default
 msgid "Default website theme to showcase customization possibilities."
 msgstr ""
+"Özelleştirme olanaklarını sergilemek için varsayılan web sitesi teması."
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_account_deferred_revenue
@@ -10018,12 +10037,12 @@ msgstr "ErtelenmiÅŸ Gelirler"
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_sale_subscription_asset
 msgid "Deferred Revenues Management for Subscriptions"
-msgstr ""
+msgstr "Abonelikler için Ertelenmiş Gelir Yönetimi"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_account_tax_python
 msgid "Define Taxes as Python Code"
-msgstr ""
+msgstr "Vergileri Python Kodu Olarak Tanımlayın"
 
 #. module: base
 #: model:ir.ui.view,arch_db:base.module_form
@@ -10048,7 +10067,7 @@ msgstr "EriÅŸim Yetkilerini Sil"
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_delivery_barcode
 msgid "Delivery Barcode Scanning"
-msgstr ""
+msgstr "Teslimat Barkodu Taraması"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_delivery
@@ -10063,7 +10082,7 @@ msgstr "Demo Veri"
 #. module: base
 #: model:res.country,name:base.cd
 msgid "Democratic Republic of the Congo"
-msgstr ""
+msgstr "Demokratik Kongo Cumhuriyeti"
 
 #. module: base
 #: model:res.country,name:base.dk
@@ -10084,6 +10103,9 @@ msgid ""
 "\n"
 "    name, partner_id.name"
 msgstr ""
+"Hesaplama yönteminin bağlılıkları; virgül ile ayrılmış alan adlarının listesi, şöyle\n"
+"\n"
+"ad, partner_id.name"
 
 #. module: base
 #: model:ir.model.fields,field_description:base.field_ir_module_module_dependency__depend_id
@@ -10108,7 +10130,7 @@ msgstr "Açıklama HTML"
 #. module: base
 #: model:ir.module.module,summary:base.module_mass_mailing_themes
 msgid "Design gorgeous mails"
-msgstr ""
+msgstr "Harika mailler tasarlayın"
 
 #. module: base
 #: model:ir.module.module,summary:base.module_mass_mailing
@@ -10144,6 +10166,8 @@ msgid ""
 "Determines where the customer/company name should be placed, i.e. after or "
 "before the address."
 msgstr ""
+"Müşteri/firma isimlerinin nerede olacağını belirler, örn. adresten önce yada"
+" sonra."
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_l10n_de
@@ -10153,17 +10177,17 @@ msgstr "Almanya - Muhasebe"
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_l10n_de_reports
 msgid "Deutschland - Accounting Reports"
-msgstr ""
+msgstr "Almanya - Muhasebe Raporları"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_l10n_de_skr03
 msgid "Deutschland SKR03 - Accounting"
-msgstr ""
+msgstr "Almanya SKR03 - Muhasebe"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_l10n_de_skr04
 msgid "Deutschland SKR04 - Accounting"
-msgstr ""
+msgstr "Almanya SKR04 - Muhasebe"
 
 #. module: base
 #: selection:ir.ui.view,type:0
@@ -10312,7 +10336,7 @@ msgstr "Görünüm Adı"
 #. module: base
 #: model:ir.module.module,summary:base.module_website_studio
 msgid "Display Website Elements in Studio"
-msgstr ""
+msgstr "Studio'daki Website Elemanlarını Göster"
 
 #. module: base
 #: model:ir.model.fields,field_description:base.field_report_paperformat__header_line
@@ -10323,11 +10347,12 @@ msgstr "Bir başlık satırı görüntüleme"
 #: model:ir.ui.view,arch_db:base.view_server_action_form
 msgid "Display an option in the 'More' top-menu in order to run this action."
 msgstr ""
+"Bu eylemi çalıştırmak için 'Diğer' üst menüsünde bir seçenek görüntüleyin."
 
 #. module: base
 #: model:ir.ui.view,arch_db:base.act_report_xml_view
 msgid "Display an option on related documents to print this report"
-msgstr ""
+msgstr "Bu raporu yazdırmak için ilgili belgelerdeki bir seçeneği görüntüle"
 
 #. module: base
 #: model:ir.actions.act_window,help:base.action_country_group
@@ -10335,6 +10360,9 @@ msgid ""
 "Display and manage the list of all countries group. You can create or delete"
 " country group to make sure the ones you are working on will be maintained."
 msgstr ""
+"Tüm ülkeler grubunun listesini görüntüleyin ve yönetin. Üzerinde "
+"çalıştığınız şeylerin korunacağından emin olmak için ülke grubu "
+"oluÅŸturabilir veya silebilirsiniz."
 
 #. module: base
 #: model:ir.actions.act_window,help:base.action_country
@@ -10460,12 +10488,12 @@ msgstr "Süreler negatif olamaz"
 #. module: base
 #: model:res.partner.industry,full_name:base.res_partner_industry_E
 msgid "E WATER SUPPLY;SEWERAGE,WASTE MANAGEMENT AND REMEDIATION ACTIVITIES"
-msgstr ""
+msgstr "E Su temini; Kanalizasyon, atık yönetimi ve çözüm faaliyetleri "
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_l10n_mx_edi
 msgid "EDI for Mexico"
-msgstr ""
+msgstr "Meksika için EDI"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_hw_escpos
@@ -10485,7 +10513,7 @@ msgstr "Her model eşşiz olmalı!"
 #. module: base
 #: model:ir.module.module,summary:base.module_web_studio
 msgid "Easily create and customize your applications"
-msgstr ""
+msgstr "Uygulamanızı kolayca oluşturun ve kişiselleştirin"
 
 #. module: base
 #: model:res.country,name:base.ec
@@ -10561,6 +10589,31 @@ msgid ""
 "* Nhomar Hernandez <nhomar@vauxoo.com> (Planner/Auditor)\n"
 "* Luis Torres <luis_t@vauxoo.com> (Developer)\n"
 msgstr ""
+"Meksika için Elektronik Muhasebe ve Mali Raporlar\n"
+"\n"
+"Meksika Elektronik Faturasına mali raporları ekleyin\n"
+"\n"
+"- COA\n"
+"- Geçici Mizan\n"
+"- Yevmiye Kalemleri\n"
+"\n"
+"DIOT gibi başka operatör raporlar ekleyin.\n"
+"\n"
+"- DIOT\n"
+"\n"
+"Bilinen özellik sızması :\n"
+"\n"
+"- Mali beyan edilen belgelerin geçmişini sunmak için oluşturulan xml'yi kaydedin.\n"
+"- Bu modülün kapsamını arttırmak ve ileride regresyonlardan kaçınmak için birim testleri.\n"
+"\n"
+"Yapılandırma\n"
+"\n"
+"Bu modülü yapılandırmak için, hesap çizelgenizin l10n_mx verisine ve yapısına bağlı olması şiddetle tavsiye edilir. Eğer CoA, l10n_mx'in ne yaptığına bağlı değilse bunu daha sonra ayarlayabilirsiniz, ancak fazladan manuel çalışmaya ihtiyacınız olacaktır.\n"
+"\n"
+"Katkıda bulunanlar\n"
+"* Nhomar Hernandez <nhomar@vauxoo.com> (Planlayıcı/Denetleyici)\n"
+"* Luis Torres\n"
+"<luis_t@vauxoo.com> (GeliÅŸtirici)\n"
 
 #. module: base
 #: code:addons/base/models/ir_ui_view.py:641
@@ -10592,7 +10645,7 @@ msgstr "E-posta Ağ Geçidi"
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_mass_mailing
 msgid "Email Marketing"
-msgstr ""
+msgstr "E-posta Pazarlama"
 
 #. module: base
 #: model:ir.ui.view,arch_db:base.view_users_form_simple_modif
@@ -10631,12 +10684,12 @@ msgstr "Personeller"
 #: code:addons/base/models/ir_model.py:430
 #, python-format
 msgid "Empty dependency in %r"
-msgstr ""
+msgstr "% r'de boş bağımlılık"
 
 #. module: base
 #: model:res.partner.industry,name:base.res_partner_industry_D
 msgid "Energy supply"
-msgstr ""
+msgstr "Enerji temini"
 
 #. module: base
 #: model:ir.ui.view,arch_db:base.view_server_action_form
@@ -10659,7 +10712,7 @@ msgstr ""
 #. module: base
 #: model:res.partner.industry,name:base.res_partner_industry_R
 msgid "Entertainment"
-msgstr ""
+msgstr "EÄŸlence"
 
 #. module: base
 #: model:res.country,name:base.gq
@@ -10670,7 +10723,7 @@ msgstr "Ekvatoral Gine"
 #: model:ir.module.module,summary:base.module_hr_maintenance
 #: model:ir.module.module,summary:base.module_maintenance
 msgid "Equipments, Assets, Internal Hardware, Allocation Tracking"
-msgstr ""
+msgstr "Ekipmanlar, Varlıklar, İç Donanım, Tahsis Takibi"
 
 #. module: base
 #: model:res.country,name:base.er
@@ -10681,19 +10734,19 @@ msgstr "Eritre"
 #: code:addons/base/models/res_partner.py:86
 #, python-format
 msgid "Error ! You can not create recursive tags."
-msgstr ""
+msgstr "Hata ! Tekrarlanan etiketler oluşturamazsınız."
 
 #. module: base
 #: code:addons/base/models/res_company.py:234
 #, python-format
 msgid "Error ! You cannot create recursive companies."
-msgstr ""
+msgstr "Hata! Tekrarlayan firmalar oluşturamazsınız."
 
 #. module: base
 #: code:addons/base/models/report_paperformat.py:68
 #, python-format
 msgid "Error ! You cannot select a format AND specific page width/height."
-msgstr ""
+msgstr "Hata! Spesifik bir sayfa genişliği/yüksekliği formatı seçemezsiniz."
 
 #. module: base
 #: code:addons/base/models/ir_ui_view.py:491
@@ -10715,13 +10768,13 @@ msgstr "Hata detayları:"
 #: code:addons/models.py:987
 #, python-format
 msgid "Error while validating constraint"
-msgstr ""
+msgstr "Kısıtlama doğrulanırken hata oluştu"
 
 #. module: base
 #: code:addons/base/models/ir_ui_menu.py:76
 #, python-format
 msgid "Error! You cannot create recursive menus."
-msgstr ""
+msgstr "Hata! Tekrarlanan menüler oluşturamazsınız. "
 
 #. module: base
 #: model:res.country,name:base.ee
@@ -10741,7 +10794,7 @@ msgstr "Etiyopya - Muhasebe"
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_l10n_et_reports
 msgid "Ethiopia - Accounting Reports"
-msgstr ""
+msgstr "Etiyopya - Muhasebe Raporları1"
 
 #. module: base
 #: model:res.country.group,name:base.europe
@@ -10756,17 +10809,17 @@ msgstr "DeÄŸerlendirme Tipi"
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_event_barcode
 msgid "Event Barcode Scanning"
-msgstr ""
+msgstr "Etkinlik Barkod Tarama"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_event_barcode_mobile
 msgid "Event Barcode in Mobile"
-msgstr ""
+msgstr "Moıbil için Etkinlik Barkodu"
 
 #. module: base
 #: model:ir.module.module,summary:base.module_event_barcode_mobile
 msgid "Event Barcode scan in Mobile"
-msgstr ""
+msgstr "Mobilde Etkinlik Barkodu Tarama"
 
 #. module: base
 #: model:ir.module.category,name:base.module_category_event_management
@@ -10786,7 +10839,7 @@ msgstr "Etkinlik Satışı"
 #. module: base
 #: model:ir.ui.view,arch_db:base.view_server_action_form
 msgid "Example of Python code"
-msgstr ""
+msgstr "Python kodu örnekleri"
 
 #. module: base
 #: model:ir.module.module,description:base.module_gamification_sale_crm
@@ -10819,28 +10872,28 @@ msgstr "Bunu içeren kişiler hariç"
 #. module: base
 #: model:ir.model.fields,field_description:base.field_ir_module_module_exclusion__exclusion_id
 msgid "Exclusion Module"
-msgstr ""
+msgstr "İhraç Modülü"
 
 #. module: base
 #: model:ir.model.fields,field_description:base.field_ir_module_module__exclusion_ids
 #: model:ir.ui.view,arch_db:base.module_form
 msgid "Exclusions"
-msgstr ""
+msgstr "Ä°stisnalar"
 
 #. module: base
 #: model:ir.model.fields,field_description:base.field_ir_module_category__exclusive
 msgid "Exclusive"
-msgstr ""
+msgstr "Ä°stisna"
 
 #. module: base
 #: model:ir.ui.view,arch_db:base.ir_cron_view_form
 msgid "Execute Every"
-msgstr ""
+msgstr "Her şeyi Yürüt"
 
 #. module: base
 #: selection:ir.actions.server,state:0
 msgid "Execute Python Code"
-msgstr ""
+msgstr "Python Kodunu Uygula"
 
 #. module: base
 #: selection:ir.actions.server,state:0
@@ -10913,12 +10966,12 @@ msgstr "Çevirileri Dışa Aktar"
 #. module: base
 #: model:ir.module.module,summary:base.module_hr_expense_sepa
 msgid "Export expenses payments as SEPA Credit Transfer files"
-msgstr ""
+msgstr "Gider ödemelerini, SEPA Kredi Transfer dosyaları olarak dışa aktarın."
 
 #. module: base
 #: model:ir.module.module,summary:base.module_account_sepa
 msgid "Export payments as SEPA Credit Transfer files"
-msgstr ""
+msgstr "Ödemeleri, SEPA Kredi Transfer dosyaları olarak dışarı aktarın."
 
 #. module: base
 #: model:ir.model.fields,help:base.field_ir_server_object_lines__value
@@ -10927,11 +10980,14 @@ msgid ""
 "When Formula type is selected, this field may be a Python expression  that can use the same values as for the code field on the server action.\n"
 "If Value type is selected, the value will be used directly without evaluation."
 msgstr ""
+"Bir değer belirtimi içeren ifade.\n"
+" Formül türü seçildiğinde, bu alan sunucu eylemi üzerindeki kod alanıyla aynı değerleri kullanabilen bir Python ifadesi olabilir.\n"
+" Değer türü seçiliyse, değer doğrudan değerlendirme olmadan kullanılır."
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_base_address_extended
 msgid "Extended Addresses"
-msgstr ""
+msgstr "GeniÅŸletilmiÅŸ Adresler"
 
 #. module: base
 #: selection:ir.ui.view,mode:0
@@ -11003,12 +11059,12 @@ msgstr "Ek Araçlar"
 #. module: base
 #: model:res.partner.industry,name:base.res_partner_industry_U
 msgid "Extraterritorial"
-msgstr ""
+msgstr "Yasal Sınırların Dışında"
 
 #. module: base
 #: model:res.partner.industry,full_name:base.res_partner_industry_F
 msgid "F CONSTRUCTION"
-msgstr ""
+msgstr "F Yapı"
 
 #. module: base
 #: model:res.country,name:base.fk
@@ -11034,7 +11090,7 @@ msgstr "Ä°ller/Eyaletler"
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_delivery_fedex
 msgid "Fedex Shipping"
-msgstr ""
+msgstr "Fedex Kargo"
 
 #. module: base
 #: model:ir.module.module,summary:base.module_l10n_fr_fec
@@ -11099,25 +11155,25 @@ msgstr "Alan"
 #: code:addons/base/models/ir_model.py:200
 #, python-format
 msgid "Field \"Model\" cannot be modified on models."
-msgstr ""
+msgstr "Alan 'Modeli', modeller üzerinden değiştirilemez."
 
 #. module: base
 #: code:addons/base/models/ir_model.py:204
 #, python-format
 msgid "Field \"Transient Model\" cannot be modified on models."
-msgstr ""
+msgstr "Alan \"Geçici Model\", modellerde değiştirilemez."
 
 #. module: base
 #: code:addons/base/models/ir_model.py:202
 #, python-format
 msgid "Field \"Type\" cannot be modified on models."
-msgstr ""
+msgstr "Alan 'Tür', modeller üzerinden değiştirilemez."
 
 #. module: base
 #: code:addons/base/models/ir_ui_view.py:1047
 #, python-format
 msgid "Field %r used in attributes must be present in view but is missing:"
-msgstr ""
+msgstr "Niteliklerde kullanılan % r alanı görünmelidir, ancak mevcut değil:"
 
 #. module: base
 #: model:ir.model.fields,field_description:base.field_ir_model_fields__help
@@ -11157,11 +11213,13 @@ msgstr "`%(field_name)s` alanı mevcut değil"
 msgid ""
 "Field names can only contain characters, digits and underscores (up to 63)."
 msgstr ""
+"Alan isimleri sadece karakterler, rakamlar ve alt çizgi içerebilir (63e "
+"kadar)"
 
 #. module: base
 #: sql_constraint:ir.model.fields:0
 msgid "Field names must be unique per model."
-msgstr ""
+msgstr "Alan isimleri her model için benzersiz olmalıdır."
 
 #. module: base
 #: model:ir.actions.act_window,name:base.action_model_fields
@@ -11184,7 +11242,7 @@ msgstr "Alan Açıklaması"
 #: code:addons/base/models/ir_model.py:570
 #, python-format
 msgid "Fields: %s"
-msgstr ""
+msgstr "Alanlar: %s"
 
 #. module: base
 #: model:res.country,name:base.fj
@@ -11229,6 +11287,10 @@ msgid ""
 "Technical Details:\n"
 "%s"
 msgstr ""
+"Dosya, uyumsuzluk veya hatalı biçimlendirilmiş bir dosya nedeniyle içe aktarılmadı. (Geçerli biçimler .csv, .po, .pot)\n"
+"\n"
+"Teknik Detaylar:\n"
+"%s"
 
 #. module: base
 #: model:ir.model.fields,field_description:base.field_ir_actions_act_window__filter
@@ -11279,7 +11341,7 @@ msgstr "Yalnızca bir kullanıcı görebilir Filtreler"
 #. module: base
 #: model:res.partner.industry,name:base.res_partner_industry_K
 msgid "Finance/Insurance"
-msgstr ""
+msgstr "Finans/Sigorta"
 
 #. module: base
 #: model:ir.module.module,summary:base.module_account_accountant
@@ -11299,7 +11361,7 @@ msgstr "Finlandiya"
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_mail_push
 msgid "Firebase Cloud Messaging"
-msgstr ""
+msgstr "Firebase Bulut MesajlaÅŸma"
 
 #. module: base
 #: model:ir.model.fields,field_description:base.field_res_lang__week_start
@@ -11324,7 +11386,7 @@ msgstr "Folio 27  210 x 330 mm"
 #. module: base
 #: model:res.partner.industry,name:base.res_partner_industry_I
 msgid "Food"
-msgstr ""
+msgstr "Gıda"
 
 #. module: base
 #: model:ir.model.fields,help:base.field_res_company__report_footer
@@ -11355,6 +11417,8 @@ msgid ""
 "For one2many fields, the field on the target model that implement the "
 "opposite many2one relationship"
 msgstr ""
+"One2many alanları için, ters modele many2one uygulanan ilişkiyi hedefleyen "
+"alan."
 
 #. module: base
 #: model:ir.model.fields,help:base.field_ir_model_fields__relation
@@ -11385,6 +11449,9 @@ msgid ""
 "\n"
 "(Document type: %s)"
 msgstr ""
+"Bu çeşit belge için, sadece kendi oluşturduğunuz kayıtlara ulaşabilirsiniz.\n"
+"\n"
+"(Belge Türü: %s)"
 
 #. module: base
 #: selection:ir.actions.act_window,view_type:0
@@ -11397,7 +11464,7 @@ msgstr "Form"
 #: model:ir.model.fields,help:base.field_res_partner__email_formatted
 #: model:ir.model.fields,help:base.field_res_users__email_formatted
 msgid "Format email address \"Name <email@domain>\""
-msgstr ""
+msgstr "E-posta adresini \"Ad <email @ alan adı>\" şeklinde biçimlendirin"
 
 #. module: base
 #: model:ir.model.fields,field_description:base.field_res_partner__email_formatted
@@ -11439,34 +11506,38 @@ msgstr "Fransa - Muhasebe"
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_l10n_fr_reports
 msgid "France - Accounting Reports"
-msgstr ""
+msgstr "Fransa - Muhasebe Raporları"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_l10n_fr_fec
 msgid "France - FEC"
-msgstr ""
+msgstr "Franca - FEC"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_l10n_fr_certification
 msgid "France - VAT Anti-Fraud Certification (CGI 286 I-3 bis)"
-msgstr ""
+msgstr "Fransa - Vergi Numarası Anti-Fraud Sertifikası (CGI 286 I-3 bis)"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_l10n_fr_sale_closing
 msgid ""
 "France - VAT Anti-Fraud Certification (CGI 286 I-3 bis) - Sale Closings"
 msgstr ""
+"Fransa - Vergi Numarası Anti-Fraud Sertifikası (CGI 286 I-3 bis) - Satış "
+"Kapanmaları"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_l10n_fr_pos_cert
 msgid ""
 "France - VAT Anti-Fraud Certification for Point of Sale (CGI 286 I-3 bis)"
 msgstr ""
+"Fransa - Satış Noktası için Vergi Numarası Anti-Fraud Sertifikası (CGI 286 "
+"I-3 bis)"
 
 #. module: base
 #: model:res.country,name:base.gf
 msgid "French Guiana"
-msgstr ""
+msgstr "Fransız Guyanası"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_l10n_fr_hr_payroll
@@ -11476,7 +11547,7 @@ msgstr "Fransa Bodro"
 #. module: base
 #: model:res.country,name:base.pf
 msgid "French Polynesia"
-msgstr ""
+msgstr "Fransız Polinezyası"
 
 #. module: base
 #: model:res.country,name:base.tf
@@ -11528,6 +11599,7 @@ msgstr "Fonksiyon"
 #: model:res.partner.industry,full_name:base.res_partner_industry_G
 msgid "G WHOLESALE AND RETAIL TRADE;REPAIR OF MOTOR VEHICLES AND MOTORCYCLES"
 msgstr ""
+"Toptan ve Perakende Ticareti, Motorlu Araçlar ve Motosikletlerin Onarımı"
 
 #. module: base
 #: selection:ir.module.module,license:0
@@ -11557,22 +11629,22 @@ msgstr ""
 #. module: base
 #: model:ir.module.module,description:base.module_l10n_in_purchase
 msgid "GST Purchase Report"
-msgstr ""
+msgstr "GST Satın Alma Raporu"
 
 #. module: base
 #: model:ir.module.module,description:base.module_l10n_in_sale
 msgid "GST Sale Report"
-msgstr ""
+msgstr "GST Satış Raporu"
 
 #. module: base
 #: model:ir.module.module,description:base.module_l10n_in_stock
 msgid "GST Stock Report"
-msgstr ""
+msgstr "GST Stok Raporu"
 
 #. module: base
 #: model:res.country,vat_label:base.in
 msgid "GSTIN"
-msgstr ""
+msgstr "GSTIN"
 
 #. module: base
 #: model:res.country,name:base.ga
@@ -11599,7 +11671,7 @@ msgstr "Gantt"
 #. module: base
 #: model:ir.module.module,summary:base.module_hr_holidays_gantt
 msgid "Gantt view for Leaves Dashboard"
-msgstr ""
+msgstr "İzin paneli için Gantt görünümü"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_web_kanban_gauge
@@ -11626,7 +11698,7 @@ msgstr "Genel Ayarlar"
 #: model:ir.ui.menu,name:base.menu_wizard_update_translations
 #: model:ir.ui.view,arch_db:base.wizard_update_translations
 msgid "Generate Missing Terms"
-msgstr ""
+msgstr "Eksik Şartları Oluşturun"
 
 #. module: base
 #: model:ir.ui.view,arch_db:base.ir_property_view_search
@@ -11679,7 +11751,7 @@ msgstr "Cebelitarık"
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_mail_github
 msgid "Github Integration with Discuss"
-msgstr ""
+msgstr "Discuss ile Github Entegrasyonu"
 
 #. module: base
 #: model:ir.model.fields,field_description:base.field_ir_rule__global
@@ -11805,7 +11877,7 @@ msgstr "Yunanistan - Muhasebe"
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_l10n_gr_reports
 msgid "Greece - Accounting Reports"
-msgstr ""
+msgstr "Yunanistan - Muhasebe Raporları"
 
 #. module: base
 #: model:res.country,name:base.gl
@@ -11826,7 +11898,7 @@ msgstr "Tablo"
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_web_grid
 msgid "Grid View"
-msgstr ""
+msgstr "Tablo Görünümü"
 
 #. module: base
 #: model:ir.model.fields,field_description:base.field_ir_model_access__group_id
@@ -11903,12 +11975,12 @@ msgstr "Gruplar (grupsuz = global)"
 #. module: base
 #: model:res.country,name:base.gp
 msgid "Guadeloupe"
-msgstr ""
+msgstr "Guadeloupe"
 
 #. module: base
 #: model:res.country,name:base.gu
 msgid "Guam"
-msgstr ""
+msgstr "Guam"
 
 #. module: base
 #: model:res.country,name:base.gt
@@ -11933,7 +12005,7 @@ msgstr "Gine"
 #. module: base
 #: model:res.country,name:base.gw
 msgid "Guinea-Bissau"
-msgstr ""
+msgstr "Gine Bissau"
 
 #. module: base
 #: model:res.country,name:base.gy
@@ -11943,12 +12015,12 @@ msgstr "Guyana"
 #. module: base
 #: model:res.partner.industry,full_name:base.res_partner_industry_H
 msgid "H TRANSPORTATION AND STORAGE"
-msgstr ""
+msgstr "H Ulaşım ve Depolama "
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_hr_contract_salary
 msgid "HR Contract Salary (Belgium)"
-msgstr ""
+msgstr "İK Sözleşme Maaşı"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_hr_gamification
@@ -11958,7 +12030,7 @@ msgstr "IK Ödüllendirme"
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_hr_org_chart
 msgid "HR Org Chart"
-msgstr ""
+msgstr "İK Organizasyon Planı"
 
 #. module: base
 #: selection:ir.actions.report,report_type:0
@@ -11983,7 +12055,7 @@ msgstr "Barkod Tarayıcıları için Donanım Sürücüleri"
 #. module: base
 #: model:ir.module.module,summary:base.module_hw_blackbox_be
 msgid "Hardware Driver for Belgian Fiscal Data Modules"
-msgstr ""
+msgstr "Belçika Mali Veri Modülleri için Donanım Sürücüsü"
 
 #. module: base
 #: model:ir.module.module,summary:base.module_hw_escpos
@@ -12013,12 +12085,12 @@ msgstr "Başlık boşluğu"
 #. module: base
 #: model:res.partner.industry,name:base.res_partner_industry_Q
 msgid "Health/Social"
-msgstr ""
+msgstr "Sağlık/Sosyal"
 
 #. module: base
 #: model:res.country,name:base.hm
 msgid "Heard Island and McDonald Islands"
-msgstr ""
+msgstr "Heard Adası ve McDonald Adaları"
 
 #. module: base
 #: selection:ir.translation,type:0
@@ -12030,7 +12102,7 @@ msgstr "Yardım"
 #. module: base
 #: model:ir.ui.view,arch_db:base.view_server_action_form
 msgid "Help with Python expressions"
-msgstr ""
+msgstr "Python ifadeleri ile yardım."
 
 #. module: base
 #: model:ir.module.category,name:base.module_category_helpdesk
@@ -12041,12 +12113,12 @@ msgstr "Yardım Masası"
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_helpdesk_timesheet
 msgid "Helpdesk Timesheet"
-msgstr ""
+msgstr "Yardım Masası Zaman Çizelgesi"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_website_helpdesk_forum
 msgid "Helpdesk: Knowledge Base"
-msgstr ""
+msgstr "Yardım Masası: Bilgi Üssü"
 
 #. module: base
 #: model:ir.module.category,description:base.module_category_point_of_sale
@@ -12055,6 +12127,9 @@ msgid ""
 "simplified payment mode encoding, automatic picking lists generation and "
 "more."
 msgstr ""
+"Hızlı satış şifreleme, basit ödeme modu şifreleme, otomatik ayıklama listesi"
+" oluşturma ve daha birçok işlem ile Satış Noktasından en iyi verimi almanıza"
+" yardım eder."
 
 #. module: base
 #: model:ir.module.category,description:base.module_category_accounting_and_finance
@@ -12074,6 +12149,8 @@ msgstr "Teklifleri, sipariş emirlerini ve faturalarınızı yönetmenizi sağla
 #: model:ir.module.category,description:base.module_category_lead_automation
 msgid "Helps you manage lead of your marketing campaigns step by step."
 msgstr ""
+"Pazarlama kampanyanızın müşteri potansiyelini adım adım yönetmenize yardımcı"
+" olur."
 
 #. module: base
 #: model:ir.module.category,description:base.module_category_hr_attendance
@@ -12122,7 +12199,7 @@ msgstr ""
 #. module: base
 #: model:ir.module.category,description:base.module_category_hr_holidays
 msgid "Helps you manage your leaves."
-msgstr ""
+msgstr "İzinlerinizi yönetmenize yardımcı olur."
 
 #. module: base
 #: model:ir.module.category,description:base.module_category_manufacturing
@@ -12138,6 +12215,8 @@ msgid ""
 "Helps you manage your mass mailing for design\n"
 "                professional emails and reuse templates."
 msgstr ""
+"Profesyonel e-postalar tasarlamak ve şablonları yeniden kullanmak için toplu"
+" e-postanızı yönetmenize yardımcı olur."
 
 #. module: base
 #: model:ir.module.category,description:base.module_category_hr_payroll
@@ -12159,6 +12238,8 @@ msgid ""
 "Helps you manage your purchase-related processes such as requests for "
 "quotations, supplier bills, etc..."
 msgstr ""
+"Teklif talepleri, tedarikçi faturaları gibi satın alma ile ilgili "
+"süreçlerinizi yönetmenize yardımcı olur"
 
 #. module: base
 #: model:ir.module.category,description:base.module_category_hr_recruitment
@@ -12240,7 +12321,7 @@ msgstr "Saat"
 #. module: base
 #: model:res.partner.industry,name:base.res_partner_industry_T
 msgid "Households"
-msgstr ""
+msgstr "Mesken"
 
 #. module: base
 #: model:ir.model.fields,help:base.field_ir_cron__numbercall
@@ -12265,7 +12346,7 @@ msgstr "İK İşe Alım Görüşme Formları"
 #. module: base
 #: model:ir.module.category,name:base.module_category_human_resource
 msgid "Human Resource"
-msgstr ""
+msgstr "İnsan Kaynakları"
 
 #. module: base
 #: model:ir.module.category,name:base.module_category_human_resources_survey
@@ -12280,7 +12361,7 @@ msgstr "Macar - muhasebe"
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_l10n_hu_reports
 msgid "Hungarian - Accounting Reports"
-msgstr ""
+msgstr "Macaristan - Muhasebe Raporları"
 
 #. module: base
 #: model:res.country,name:base.hu
@@ -12290,7 +12371,7 @@ msgstr "Macaristan"
 #. module: base
 #: model:res.partner.industry,full_name:base.res_partner_industry_I
 msgid "I ACCOMMODATION AND FOOD SERVICE ACTIVITIES"
-msgstr ""
+msgstr "Konaklama ve Gıda Hizmet Faaliyetleri"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_base_iban
@@ -12428,7 +12509,7 @@ msgstr "ISO kodu"
 #. module: base
 #: model:res.partner.industry,name:base.res_partner_industry_J
 msgid "IT/Communication"
-msgstr ""
+msgstr "BT/Ä°letiÅŸim"
 
 #. module: base
 #: model:res.country,name:base.is
@@ -12456,6 +12537,8 @@ msgid ""
 "If checked and the action is bound to a model, it will only appear in the "
 "More menu on list views"
 msgstr ""
+"İşaretlenirse ve eylem modele bağlıysa, yalnızca liste görünümündeki Diğer "
+"menüsünde görünür."
 
 #. module: base
 #: model:ir.model.fields,help:base.field_ir_mail_server__smtp_debug
@@ -12463,6 +12546,8 @@ msgid ""
 "If enabled, the full output of SMTP sessions will be written to the server "
 "log at DEBUG level (this is very verbose and may include confidential info!)"
 msgstr ""
+"Etkinleştirilmişse, SMTP oturumlarının tam çıkışı, DEBUG düzeyinde sunucu "
+"günlüğüne yazılır (bu çok ayrıntılıdır ve gizli bilgileri içerebilir!)"
 
 #. module: base
 #: model:ir.model.fields,help:base.field_ir_rule__global
@@ -12497,7 +12582,7 @@ msgstr "İşlem bağlayıcı sadece bu kullanıcı için geçerli."
 #. module: base
 #: model:ir.model.fields,help:base.field_ir_default__condition
 msgid "If set, applies the default upon condition."
-msgstr ""
+msgstr "Ayarlanırsa, koşullu varsayılanı uygular."
 
 #. module: base
 #: model:ir.ui.view,arch_db:base.view_server_action_form
@@ -12505,6 +12590,8 @@ msgid ""
 "If several child actions return an action, only the last one will be executed.\n"
 "                                    This may happen when having server actions executing code that returns an action, or server actions returning a client action."
 msgstr ""
+"Birden fazla alt eylemi bir eylem döndürürse, yalnızca sonuncu yürütülür.\n"
+" Bu, bir eylemi döndüren kod yürüten sunucu eylemleri veya istemci eylemi döndüren sunucu eylemleri olduğunda ortaya çıkabilir."
 
 #. module: base
 #: model:ir.model.fields,help:base.field_res_users__action_id
@@ -12587,6 +12674,8 @@ msgid ""
 "If you enable this option, existing translations (including custom ones) "
 "will be overwritten and replaced by those in this file"
 msgstr ""
+"Bu seçeneği etkinleştirirseniz, mevcut çevirilerin (özel olanlar dahil) "
+"üzerine yazılır ve bu dosyadakiler tarafından değiştirilir."
 
 #. module: base
 #: model:ir.model.fields,help:base.field_ir_ui_menu__groups_id
@@ -12606,6 +12695,9 @@ msgid ""
 " (if you delete a native ACL, it will be re-created when you reload the "
 "module)."
 msgstr ""
+"Etkin alanın işaretini kaldırırsanız, ACL'yi silmeden devre dışı bırakır "
+"(yerel bir ACL'yi silerseniz, modülü yeniden yüklediğinizde yeniden "
+"oluÅŸturulur)."
 
 #. module: base
 #: model:ir.model.fields,help:base.field_ir_rule__active
@@ -12614,11 +12706,14 @@ msgid ""
 "deleting it (if you delete a native record rule, it may be re-created when "
 "you reload the module)."
 msgstr ""
+"Etkin alanın işaretini kaldırırsanız, kayıt kuralını silmeden devre dışı "
+"bırakır (bir yerel kayıt kuralını silerseniz, modülü yeniden yüklediğinizde "
+"yeniden oluÅŸturulabilir)."
 
 #. module: base
 #: model:ir.ui.view,arch_db:base.view_base_module_upgrade
 msgid "If you wish to cancel the process, press the cancel button below"
-msgstr ""
+msgstr "Eğer işlemi iptal etmek isterseniz, aşağıdaki iptal tuşuna basın"
 
 #. module: base
 #: model:ir.model.fields,field_description:base.field_res_country__image
@@ -12635,12 +12730,12 @@ msgstr "Etkilenen Uygulamalar"
 #. module: base
 #: model:ir.model.fields,field_description:base.field_base_module_uninstall__model_ids
 msgid "Impacted data models"
-msgstr ""
+msgstr "Etkilenen veri modelleri"
 
 #. module: base
 #: model:ir.model.fields,field_description:base.field_base_module_uninstall__module_ids
 msgid "Impacted modules"
-msgstr ""
+msgstr "Etkilenen modüller"
 
 #. module: base
 #: model:ir.model.fields,field_description:base.field_ir_sequence__implementation
@@ -12650,7 +12745,7 @@ msgstr "Uygulama"
 #. module: base
 #: model:ir.module.module,summary:base.module_base_sparse_field
 msgid "Implementation of sparse fields."
-msgstr ""
+msgstr "Seyrek alanların uygulanması"
 
 #. module: base
 #: model:ir.module.module,summary:base.module_pos_blackbox_be
@@ -12658,6 +12753,8 @@ msgid ""
 "Implements the registered cash system, adhering to guidelines by FPS "
 "Finance."
 msgstr ""
+"Kayıtlı nakit sistemini uygular ve FPS Finance tarafından yönergelere bağlı "
+"kalır."
 
 #. module: base
 #: model:ir.ui.menu,name:base.menu_translation_export
@@ -12694,7 +12791,7 @@ msgstr "Çeviri İçe Aktar"
 #. module: base
 #: model:ir.module.module,description:base.module_currency_rate_live
 msgid "Import exchange rates from the Internet.\n"
-msgstr ""
+msgstr "Döviz kurlarını internetten  içe aktar.\n"
 
 #. module: base
 #: model:ir.model.fields,field_description:base.field_ir_model__modules
@@ -12742,27 +12839,27 @@ msgstr "Hindistan Hesapplanı"
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_l10n_in_reports
 msgid "Indian - Accounting Reports"
-msgstr ""
+msgstr "Hindistan - Muhasebe Raporları"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_l10n_in_purchase
 msgid "Indian - Purchase Report(GST)"
-msgstr ""
+msgstr "Hindistan - Satın Alma Raporları (GST)"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_l10n_in_sale
 msgid "Indian - Sale Report(GST)"
-msgstr ""
+msgstr "Hindistan - Satış Raporları (GST)"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_l10n_in_schedule6
 msgid "Indian - Schedule VI Accounting"
-msgstr ""
+msgstr "Hindistan - Program VI Muhasebe"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_l10n_in_stock
 msgid "Indian - Stock Report(GST)"
-msgstr ""
+msgstr "Hindistan - Stok Raporu (GST)"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_l10n_in_hr_payroll
@@ -12849,7 +12946,7 @@ msgstr "Satırda Düzenle"
 #. module: base
 #: model:ir.model.fields,field_description:base.field_res_country__address_view_id
 msgid "Input View"
-msgstr ""
+msgstr "Giriş Görünümü"
 
 #. module: base
 #: code:addons/base/models/ir_module.py:436
@@ -12920,22 +13017,22 @@ msgstr "Tamsayı"
 #. module: base
 #: model:ir.module.module,description:base.module_web_clearbit
 msgid "Integrate Clearbit API to get company logo"
-msgstr ""
+msgstr "Firma logosu almak için Clearbit API entegre olun"
 
 #. module: base
 #: model:ir.module.module,description:base.module_sale_coupon
 msgid "Integrate coupon mechanism in sales orders."
-msgstr ""
+msgstr "Satış siparişlerinde kupon mekanizması ile entegre olun."
 
 #. module: base
 #: model:ir.module.module,description:base.module_sale_coupon_delivery
 msgid "Integrate coupon mechanism with shipping costs."
-msgstr ""
+msgstr "Teslimat maliyeti ile kupon mekanizmasını entegre edin."
 
 #. module: base
 #: model:ir.module.module,description:base.module_website_sale_coupon
 msgid "Integrate coupons mechanism in ecommerce."
-msgstr ""
+msgstr "Kupon mekanizmasını, eticarete entegre edin."
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_inter_company_rules
@@ -13045,7 +13142,7 @@ msgstr ""
 #: code:addons/base/models/ir_default.py:68
 #, python-format
 msgid "Invalid field %s.%s"
-msgstr ""
+msgstr "Geçersiz alan %s.%s"
 
 #. module: base
 #: sql_constraint:ir.ui.view:0
@@ -13053,13 +13150,15 @@ msgid ""
 "Invalid inheritance mode: if the mode is 'extension', the view must extend "
 "an other view"
 msgstr ""
+"Geçersiz kalıtım modu: mod 'uzantı' ise, görünüm başka bir görünümü "
+"uzatmalıdır"
 
 #. module: base
 #: code:addons/base/models/ir_actions.py:128
 #: code:addons/base/models/ir_actions.py:130
 #, python-format
 msgid "Invalid model name %r in action definition."
-msgstr ""
+msgstr "Eylem tanımındaki geçersiz model adı %r"
 
 #. module: base
 #: code:addons/base/models/ir_ui_view.py:632
@@ -13077,7 +13176,7 @@ msgstr "Dizisi için geçersiz önek veya sonek '%s'"
 #: code:addons/base/models/res_users.py:327
 #, python-format
 msgid "Invalid search criterion"
-msgstr ""
+msgstr "Geçersiz arama kriteri"
 
 #. module: base
 #: code:addons/base/models/ir_property.py:69
@@ -13089,7 +13188,7 @@ msgstr "Geçersiz tür"
 #: code:addons/base/models/ir_default.py:70
 #, python-format
 msgid "Invalid value for %s.%s: %s"
-msgstr ""
+msgstr "%s.%s:%s için geçersiz değer"
 
 #. module: base
 #: code:addons/base/models/ir_ui_view.py:343
@@ -13136,7 +13235,7 @@ msgstr "Faturalama & Ödemeler"
 #: model:ir.module.category,name:base.module_category_invoicing_management
 #: model:ir.module.module,shortdesc:base.module_account_invoicing
 msgid "Invoicing Management"
-msgstr ""
+msgstr "Faturalama Yönetimi"
 
 #. module: base
 #: model:res.country,name:base.ir
@@ -13204,7 +13303,7 @@ msgstr "Ä°talya - Muhasebe"
 #. module: base
 #: model:res.partner.industry,full_name:base.res_partner_industry_J
 msgid "J INFORMATION AND COMMUNICATION"
-msgstr ""
+msgstr "J BİLGİ VE İLETİŞİM"
 
 #. module: base
 #: model:res.country,name:base.jm
@@ -13270,7 +13369,7 @@ msgstr "Zamanında Planlama"
 #. module: base
 #: model:res.partner.industry,full_name:base.res_partner_industry_K
 msgid "K FINANCIAL AND INSURANCE ACTIVITIES"
-msgstr ""
+msgstr "K FÄ°NANSAL VE SÄ°GORTA ETKÄ°NLÄ°KLERÄ°"
 
 #. module: base
 #: selection:ir.actions.act_window.view,view_mode:0
@@ -13287,7 +13386,7 @@ msgstr "Kazkistan"
 #: model:ir.model.fields,help:base.field_res_users__password
 msgid ""
 "Keep empty if you don't want the user to be able to connect on the system."
-msgstr ""
+msgstr "Kullanıcının sisteme bağlanmasını istemiyorsanız boş tutun."
 
 #. module: base
 #: model:res.country,name:base.ke
@@ -13314,7 +13413,7 @@ msgstr "Kiribati"
 #. module: base
 #: model:ir.module.module,summary:base.module_website_helpdesk_forum
 msgid "Knowledge base for helpdesk based on Odoo Forum"
-msgstr ""
+msgstr "Odoo Forumuna dayanan yardım masası için bilgi bankası"
 
 #. module: base
 #: model:ir.module.module,description:base.module_l10n_si
@@ -13329,12 +13428,12 @@ msgstr "Kuveyt"
 #. module: base
 #: model:res.country,name:base.kg
 msgid "Kyrgyzstan"
-msgstr ""
+msgstr "Kırgızistan"
 
 #. module: base
 #: model:res.partner.industry,full_name:base.res_partner_industry_L
 msgid "L REAL ESTATE ACTIVITIES"
-msgstr ""
+msgstr "L EMLAK FAALÄ°YETLERÄ°"
 
 #. module: base
 #: selection:ir.module.module,license:0
@@ -13685,7 +13784,7 @@ msgstr "Launchpad"
 #. module: base
 #: model:ir.model.fields,field_description:base.field_res_country__address_format
 msgid "Layout in Reports"
-msgstr ""
+msgstr "Rapor Düzeni"
 
 #. module: base
 #: model:ir.module.category,name:base.module_category_lead_automation
@@ -13700,7 +13799,7 @@ msgstr "Aday Skoru"
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_crm_project
 msgid "Lead to Tasks"
-msgstr ""
+msgstr "Görevlere Öncülük Et"
 
 #. module: base
 #: model:ir.module.module,summary:base.module_crm
@@ -13715,7 +13814,7 @@ msgstr "İzin Yönetimi"
 #. module: base
 #: model:ir.module.module,summary:base.module_hr_holidays
 msgid "Leave allocations and leave requests"
-msgstr ""
+msgstr "Ä°zin tahsisleri ve izin talepleri"
 
 #. module: base
 #: model:ir.module.category,name:base.module_category_hr_holidays
@@ -13725,7 +13824,7 @@ msgstr "Ä°zinler"
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_hr_holidays_gantt
 msgid "Leaves Gantt"
-msgstr ""
+msgstr "Ä°zin Gantt"
 
 #. module: base
 #: model:res.country,name:base.lb
@@ -13775,7 +13874,7 @@ msgstr "Lesotho"
 #. module: base
 #: model:ir.module.module,description:base.module_website_sale_wishlist
 msgid "Let returning shoppers save products in a wishlist"
-msgstr ""
+msgstr "Alışveriş yapanlara bir istek listesinde ürün kaydetme izni verin"
 
 #. module: base
 #: selection:report.paperformat,format:0
@@ -13833,11 +13932,16 @@ msgid ""
 "\n"
 " * UPDATE ME\n"
 msgstr ""
+"Bağlantı Hesabı ve Ödeme ve Portal Ödeme Ekleme\n"
+"\n"
+"Ödemeyi etkinleştirmek için hesapla ilgili ödeme araçları ve portal seçenekleri sağlayın.\n"
+"\n"
+"* BENÄ° GÃœNCELLE\n"
 
 #. module: base
 #: model:ir.module.module,summary:base.module_sale_payment
 msgid "Link Sales and Payment"
-msgstr ""
+msgstr "Satış Bağlantısı ve Ödeme"
 
 #. module: base
 #: model:ir.module.module,description:base.module_sale_payment
@@ -13851,6 +13955,14 @@ msgid ""
 " * JS code to handle a payment form (eCommerce\n"
 " * add payment-related fields on SO\n"
 msgstr ""
+"Satış Bağlantısı ve Ödeme\n"
+"\n"
+"Satışla ilgili ödeme için araçlar sağlayın.\n"
+"\n"
+"* satış siparişi onayı gibi işlemlerin özel yönetimi\n"
+"* öde/sat izni verildiğinde işlemlerle işlemek için araçlar yöntemi\n"
+"* bir ödeme formunu işlemek için JS kodu (eTicaret)\n"
+"* satış siparişi üzerine ödeme ile ilgili alan ekleyin\n"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_link_tracker
@@ -13860,12 +13972,12 @@ msgstr "Bağlantı İzleyici"
 #. module: base
 #: model:ir.module.module,summary:base.module_pos_sale
 msgid "Link module between Point of Sale and Sales"
-msgstr ""
+msgstr "Satış ve Satış Noktası arasındaki bağlantı modülü"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_project_forecast_sale
 msgid "Link module between project_forecast and sale(_timesheet)"
-msgstr ""
+msgstr "project_forecast ile sale(_timesheet) arasındaki bağlantı modülü."
 
 #. module: base
 #: model:ir.model.fields,field_description:base.field_ir_actions_server__link_field_id
@@ -13912,7 +14024,7 @@ msgstr "Ziyaretçiler / Müşteriler ile Canlı Sohbet"
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_currency_rate_live
 msgid "Live Currency Exchange Rate"
-msgstr ""
+msgstr "Canlı Döviz Kuru"
 
 #. module: base
 #: model:ir.ui.view,arch_db:base.view_base_language_install
@@ -14002,7 +14114,7 @@ msgstr "Lüksemburg - Muhasebe Raporları"
 #. module: base
 #: model:res.partner.industry,full_name:base.res_partner_industry_M
 msgid "M PROFESSIONAL, SCIENTIFIC AND TECHNICAL ACTIVITIES"
-msgstr ""
+msgstr "M PROFESYONEL, BÄ°LÄ°MSEL VE TEKNÄ°K ETKÄ°NLÄ°KLER"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_mrp_byproduct
@@ -14013,7 +14125,7 @@ msgstr "MRP Yan Ürünleri"
 #: model:ir.module.module,shortdesc:base.module_quality_mrp
 #: model:ir.module.module,shortdesc:base.module_quality_mrp_workorder
 msgid "MRP features for Quality Control"
-msgstr ""
+msgstr "Kalite Kontrol için MRP özellikleri"
 
 #. module: base
 #: model:res.country,name:base.mo
@@ -14075,7 +14187,7 @@ msgstr "Ana Sıra"
 #: selection:ir.actions.act_window,target:0
 #: selection:ir.actions.client,target:0
 msgid "Main action of Current Window"
-msgstr ""
+msgstr "Geçerli Pencerenin ana aksiyonu"
 
 #. module: base
 #: model:ir.model.fields,field_description:base.field_ir_module_module__maintainer
@@ -14095,7 +14207,7 @@ msgstr ""
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_mrp_maintenance
 msgid "Maintenance - MRP"
-msgstr ""
+msgstr "Bakım - MRP"
 
 #. module: base
 #: model:res.country,name:base.mw
@@ -14125,7 +14237,7 @@ msgstr "Malta"
 #. module: base
 #: model:ir.module.module,summary:base.module_website_event_sale
 msgid "Manage Events and Sell Tickets Online"
-msgstr ""
+msgstr "Etkinlikleri Yönet ve Online Bilet Sat"
 
 #. module: base
 #: model:ir.module.module,description:base.module_hr_recruitment
@@ -14188,7 +14300,7 @@ msgstr ""
 #. module: base
 #: model:ir.actions.act_window,help:base.action_res_bank_form
 msgid "Manage bank records you want to be used in the system."
-msgstr ""
+msgstr "Sistemde kullanmak istediğiniz banka hesaplarınızı yönetin."
 
 #. module: base
 #: model:ir.actions.act_window,help:base.action_partner_category_form
@@ -14208,6 +14320,8 @@ msgid ""
 "Manage sectors of activity to better classify partners for tracking and "
 "analysis purposes."
 msgstr ""
+"İzleme ve analiz amacıyla iş ortaklarını daha iyi sınıflandırmak için "
+"faaliyet sektörlerini yönetin."
 
 #. module: base
 #: model:ir.actions.act_window,help:base.action_partner_title_contact
@@ -14216,16 +14330,20 @@ msgid ""
 "way you want to print them in letters and other documents. Some example: "
 "Mr., Mrs."
 msgstr ""
+"Sisteminizde bulundurmak istediğiniz iletişim başlıkları ve bunları mektup "
+"ve diğer belgelerde yazdırmak istediğiniz gibi yönetin. Örnek: Bay Bayan"
 
 #. module: base
 #: model:ir.module.module,summary:base.module_account_voucher
 msgid "Manage your debts and credits thanks to simple sale/purchase receipts"
 msgstr ""
+"Basit satış / satın alma makbuzları sayesinde borçlarınızı ve kredilerinizi "
+"yönetin"
 
 #. module: base
 #: model:ir.module.module,summary:base.module_hr_payroll
 msgid "Manage your employee payroll records"
-msgstr ""
+msgstr "Çalışan bordro kayıtlarınızı yönetin"
 
 #. module: base
 #: model:ir.module.category,name:base.module_category_manufacturing
@@ -14301,7 +14419,7 @@ msgstr "Marshall Adaları"
 #. module: base
 #: model:res.country,name:base.mq
 msgid "Martinique"
-msgstr ""
+msgstr "Martinique"
 
 #. module: base
 #: model:ir.module.category,name:base.module_category_mass_mailing
@@ -14316,12 +14434,12 @@ msgstr "Toplu Posta Şablonları"
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_mass_mailing_event
 msgid "Mass mailing on attendees"
-msgstr ""
+msgstr "Katılımcılara toplu mail gönderimi"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_mass_mailing_event_track
 msgid "Mass mailing on track speakers"
-msgstr ""
+msgstr "Konuşmacı için toplu mail gönderimi"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_mrp_mps
@@ -14411,7 +14529,7 @@ msgstr "Menüleri özelleştirme"
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_pos_mercury
 msgid "Mercury Payment Services"
-msgstr ""
+msgstr "Mercury Ödeme Hizmetleri"
 
 #. module: base
 #: model:ir.ui.view,arch_db:base.base_partner_merge_automatic_wizard_form
@@ -14472,7 +14590,7 @@ msgstr ""
 #. module: base
 #: model:ir.module.module,summary:base.module_l10n_mx_edi
 msgid "Mexican Localization for EDI documents"
-msgstr ""
+msgstr "EDI Belgeleri için Meksika Yerelleştirmesi"
 
 #. module: base
 #: model:res.country,name:base.mx
@@ -14502,7 +14620,7 @@ msgstr "EnazID"
 #. module: base
 #: model:res.partner.industry,name:base.res_partner_industry_B
 msgid "Mining"
-msgstr ""
+msgstr "Madencilik"
 
 #. module: base
 #: model:ir.ui.view,arch_db:base.sequence_view
@@ -14541,7 +14659,7 @@ msgstr "SMTP Sunucusu Yok"
 #: code:addons/models.py:2782
 #, python-format
 msgid "Missing document(s)"
-msgstr ""
+msgstr "Eksik belgeler"
 
 #. module: base
 #: code:addons/models.py:5176
@@ -14553,7 +14671,7 @@ msgstr "Alan için gerekli değer eksik  '%s' (%s)"
 #: code:addons/base/models/ir_ui_view.py:387
 #, python-format
 msgid "Missing view architecture."
-msgstr ""
+msgstr "Eksik görünüm yapısı"
 
 #. module: base
 #: model:res.partner.title,name:base.res_partner_title_mister
@@ -14706,7 +14824,7 @@ msgstr "Modül Adı"
 #. module: base
 #: model:ir.model,name:base.model_base_module_uninstall
 msgid "Module Uninstallation"
-msgstr ""
+msgstr "Yüklemeyi Kaldırma Modülü"
 
 #. module: base
 #: model:ir.actions.act_window,name:base.action_view_base_module_update
@@ -14736,7 +14854,7 @@ msgstr "Modül Bağımlığı"
 #. module: base
 #: model:ir.model,name:base.model_ir_module_module_exclusion
 msgid "Module exclusion"
-msgstr ""
+msgstr "Modül ihracı"
 
 #. module: base
 #: code:addons/convert.py:830
@@ -14765,7 +14883,7 @@ msgstr ""
 #. module: base
 #: model:res.country,name:base.md
 msgid "Moldova"
-msgstr ""
+msgstr "Moldova"
 
 #. module: base
 #: model:res.country,name:base.mc
@@ -14825,7 +14943,7 @@ msgstr "Bay."
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_mrp_workorder
 msgid "Mrp Workorder"
-msgstr ""
+msgstr "Mrp Ä°ÅŸ SipariÅŸi"
 
 #. module: base
 #: model:res.partner.title,shortcut:base.res_partner_title_madam
@@ -14871,7 +14989,7 @@ msgstr "Myanmar"
 #. module: base
 #: model:res.partner.industry,full_name:base.res_partner_industry_N
 msgid "N ADMINISTRATIVE AND SUPPORT SERVICE ACTIVITIES"
-msgstr ""
+msgstr "N Ä°DARÄ° VE DESTEK HÄ°ZMET FAALÄ°YETLERÄ°"
 
 #. module: base
 #: model:ir.model.fields,field_description:base.field_base_partner_merge_automatic_wizard__group_by_name
@@ -14944,7 +15062,7 @@ msgstr "Hollanda - Muhasebe Raporları"
 #. module: base
 #: model:res.country,name:base.nc
 msgid "New Caledonia"
-msgstr ""
+msgstr "Yeni Kaledonya"
 
 #. module: base
 #: code:addons/base/wizard/base_export_language.py:18
@@ -14972,7 +15090,7 @@ msgstr "Yeni Zelanda"
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_l10n_nz
 msgid "New Zealand - Accounting"
-msgstr ""
+msgstr "Yeni Zelanda - Muhasebe"
 
 #. module: base
 #: model:ir.module.module,summary:base.module_website_blog
@@ -15036,7 +15154,7 @@ msgstr "Niue"
 #. module: base
 #: model:ir.ui.view,arch_db:base.res_config_settings_view_form
 msgid "No Record Found"
-msgstr ""
+msgstr "Kayıt Bulunamadı"
 
 #. module: base
 #: code:addons/models.py:1299
@@ -15178,7 +15296,7 @@ msgstr "Arama Sayısı"
 #. module: base
 #: model:ir.model.fields,field_description:base.field_res_users__companies_count
 msgid "Number of Companies"
-msgstr ""
+msgstr "Şirket Sayısı"
 
 #. module: base
 #: model:ir.model.fields,field_description:base.field_base_module_update__added
@@ -15193,7 +15311,7 @@ msgstr "Bir kaç modül güncllendi"
 #. module: base
 #: model:res.partner.industry,full_name:base.res_partner_industry_O
 msgid "O PUBLIC ADMINISTRATION AND DEFENCE;COMPULSORY SOCIAL SECURITY"
-msgstr ""
+msgstr "O KAMU YÖNETİMİ VE SAVUNMA, ZORUNLU SOSYAL GÜVENLİK"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_auth_oauth
@@ -15221,7 +15339,7 @@ msgstr "Nesne"
 #: code:addons/model.py:148
 #, python-format
 msgid "Object %s doesn't exist"
-msgstr ""
+msgstr "Nesne %s bulunamadı"
 
 #. module: base
 #: model:ir.model.fields,field_description:base.field_ir_model_fields__model
@@ -15440,7 +15558,7 @@ msgstr ""
 #. module: base
 #: selection:ir.module.module,license:0
 msgid "Odoo Enterprise Edition License v1.0"
-msgstr ""
+msgstr "Odoo Kurumsal Sürüm Lisansı v1.0"
 
 #. module: base
 #: model:ir.module.module,description:base.module_mail
@@ -15770,12 +15888,12 @@ msgstr ""
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_l10n_mx_reports
 msgid "Odoo Mexican Localization Reports"
-msgstr ""
+msgstr "Odoo Meksika Yerelleştirme Raporları"
 
 #. module: base
 #: model:ir.module.module,summary:base.module_web_mobile
 msgid "Odoo Mobile Core module"
-msgstr ""
+msgstr "Odoo Mobil Çekirdek Modülü"
 
 #. module: base
 #: model:ir.module.module,description:base.module_note
@@ -15957,12 +16075,12 @@ msgstr ""
 #. module: base
 #: selection:ir.module.module,license:0
 msgid "Odoo Proprietary License v1.0"
-msgstr ""
+msgstr "Odoo Tescilli Lisansı v1.0"
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_web_settings_dashboard
 msgid "Odoo Settings Dashboard"
-msgstr ""
+msgstr "Odoo Ayarlar Paneli"
 
 #. module: base
 #: model:ir.module.module,description:base.module_purchase
@@ -16035,7 +16153,7 @@ msgstr ""
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_web_diagram
 msgid "Odoo Web Diagram"
-msgstr ""
+msgstr "Odoo Web Diyagramı"
 
 #. module: base
 #: model:ir.module.module,description:base.module_website
@@ -16391,6 +16509,8 @@ msgid ""
 "One2Many fields cannot be synchronized as part of `commercial_fields` or "
 "`address fields`"
 msgstr ""
+"One2Many alanları, `commercial_fields` yada `address fields` parçası olarak "
+"senkronize olamaz."
 
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_website_event_sale
@@ -16415,7 +16535,7 @@ msgstr "Çevrimiçi Teklif"
 #. module: base
 #: model:ir.module.module,shortdesc:base.module_website_quote_subscription
 msgid "Online Subscription Quotes"
-msgstr ""
+msgstr "Online Abonelik Teklifleri"
 
 #. module: base
 #: code:addons/base/models/res_config.py:560
@@ -16446,7 +16566,7 @@ msgstr ""
 #. module: base
 #: sql_constraint:res.currency.rate:0
 msgid "Only one currency rate per day allowed!"
-msgstr ""
+msgstr "Günlük sadece bir kur miktarına izin verildi!"
 
 #. module: base
 #: code:addons/base/wizard/base_partner_merge.py:286
@@ -16472,7 +16592,7 @@ msgstr ""
 #. module: base
 #: model:ir.ui.view,arch_db:base.view_base_module_update
 msgid "Open Apps"
-msgstr ""
+msgstr "Açık Uygulamalar"
 
 #. module: base
 #: model:ir.actions.client,name:base.action_client_base_menu
@@ -16552,6 +16672,9 @@ msgid ""
 "Schedule, organize, promote or sell events online; conferences, webinars, trainings, etc.\n"
 "\n"
 msgstr ""
+" \n"
+"Online Etkinlikler\n"
+"\n"
 
 #. module: base
 #: model:ir.ui.view,arch_db:base.view_window_action_tree
diff --git a/odoo/addons/base/views/res_config_settings_views.xml b/odoo/addons/base/views/res_config_settings_views.xml
index 0f130d3ce1078acb55a88e3200ff1d8bbdb0419c..74ce361e96b72ee2028e726665d6b09ababd906e 100644
--- a/odoo/addons/base/views/res_config_settings_views.xml
+++ b/odoo/addons/base/views/res_config_settings_views.xml
@@ -16,7 +16,7 @@
                         </div>
                         <header>
                             <button string="Save" type="object" name="execute" class="oe_highlight" />
-                            <button string="Discard" type="object" name="cancel" />
+                            <button string="Discard" type="object" name="cancel" special="cancel" />
                         </header>
                     </div>
                     <div class="o_setting_container">
diff --git a/odoo/addons/base/views/res_partner_views.xml b/odoo/addons/base/views/res_partner_views.xml
index 28ad85b892a5d1e08e775a3711f0e14b7d4a2833..3370eaeb5ce815bdace5875028fa02450e70b7b8 100644
--- a/odoo/addons/base/views/res_partner_views.xml
+++ b/odoo/addons/base/views/res_partner_views.xml
@@ -171,7 +171,7 @@
                                 <field name="country_id" placeholder="Country" class="o_address_country" options='{"no_open": True, "no_create": True}'
                                     attrs="{'readonly': [('type', '=', 'contact'),('parent_id', '!=', False)]}"/>
                             </div>
-                            <field name="vat" placeholder="e.g. BE0477472701"/>
+                            <field name="vat" placeholder="e.g. BE0477472701" attrs="{'readonly': [('parent_id','!=',False)]}"/>
                         </group>
                         <group>
                             <field name="function" placeholder="e.g. Sales Director"
@@ -244,7 +244,7 @@
                                 <field name="country_id" placeholder="Country" class="o_address_country" options='{"no_open": True, "no_create": True}'
                                     attrs="{'readonly': [('type', '=', 'contact'),('parent_id', '!=', False)]}"/>
                             </div>
-                            <field name="vat" placeholder="e.g. BE0477472701"/>
+                            <field name="vat" placeholder="e.g. BE0477472701" attrs="{'readonly': [('parent_id','!=',False)]}"/>
                             <field name="category_id" widget="many2many_tags" options="{'color_field': 'color', 'no_create_edit': True}" placeholder="Tags..."/>
                         </group>
                         <group>
diff --git a/odoo/modules/loading.py b/odoo/modules/loading.py
index 4dda572fb1340dc70e27175943b2579333bb60c5..b9f4e2fdc7bfe0ec5a737624a85ca4d766a07fb1 100644
--- a/odoo/modules/loading.py
+++ b/odoo/modules/loading.py
@@ -25,7 +25,8 @@ _logger = logging.getLogger(__name__)
 _test_logger = logging.getLogger('odoo.tests')
 
 
-def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules=None, report=None):
+def load_module_graph(cr, graph, status=None, perform_checks=True,
+                      skip_modules=None, report=None, models_to_check=None):
     """Migrates+Updates or Installs all module nodes from ``graph``
        :param graph: graph of module nodes to load
        :param status: deprecated parameter, unused, left to avoid changing signature in 8.0
@@ -93,6 +94,9 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules=
             if kind in ('demo', 'test'):
                 threading.currentThread().testing = False
 
+    if models_to_check is None:
+        models_to_check = set()
+
     processed_modules = []
     loaded_modules = []
     registry = odoo.registry(cr.dbname)
@@ -106,6 +110,8 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules=
     t0 = time.time()
     t0_sql = odoo.sql_db.sql_counter
 
+    models_updated = set()
+
     for index, package in enumerate(graph, 1):
         module_name = package.name
         module_id = package.id
@@ -127,10 +133,20 @@ def load_module_graph(cr, graph, status=None, perform_checks=True, skip_modules=
         model_names = registry.load(cr, package)
 
         loaded_modules.append(package.name)
-        if hasattr(package, 'init') or hasattr(package, 'update') or package.state in ('to install', 'to upgrade'):
+        if (hasattr(package, 'init') or hasattr(package, 'update')
+                or package.state in ('to install', 'to upgrade')):
+            models_updated |= set(model_names)
+            models_to_check -= set(model_names)
             registry.setup_models(cr)
             registry.init_models(cr, model_names, {'module': package.name})
             cr.commit()
+        elif package.state != 'to remove':
+            # The current module has simply been loaded. The models extended by this module
+            # and for which we updated the schema, must have their schema checked again.
+            # This is because the extension may have changed the model,
+            # e.g. adding required=True to an existing field, but the schema has not been
+            # updated by this module because it's not marked as 'to upgrade/to install'.
+            models_to_check |= set(model_names) & models_updated
 
         idref = {}
 
@@ -225,9 +241,14 @@ def _check_module_names(cr, module_names):
             incorrect_names = mod_names.difference([x['name'] for x in cr.dictfetchall()])
             _logger.warning('invalid module names, ignored: %s', ", ".join(incorrect_names))
 
-def load_marked_modules(cr, graph, states, force, progressdict, report, loaded_modules, perform_checks):
+def load_marked_modules(cr, graph, states, force, progressdict, report,
+                        loaded_modules, perform_checks, models_to_check=None):
     """Loads modules marked with ``states``, adding them to ``graph`` and
        ``loaded_modules`` and returns a list of installed/upgraded modules."""
+
+    if models_to_check is None:
+        models_to_check = set()
+
     processed_modules = []
     while True:
         cr.execute("SELECT name from ir_module_module WHERE state IN %s" ,(tuple(states),))
@@ -236,7 +257,10 @@ def load_marked_modules(cr, graph, states, force, progressdict, report, loaded_m
             break
         graph.add_modules(cr, module_list, force)
         _logger.debug('Updating graph with %d more modules', len(module_list))
-        loaded, processed = load_module_graph(cr, graph, progressdict, report=report, skip_modules=loaded_modules, perform_checks=perform_checks)
+        loaded, processed = load_module_graph(
+            cr, graph, progressdict, report=report, skip_modules=loaded_modules,
+            perform_checks=perform_checks, models_to_check=models_to_check
+        )
         processed_modules.extend(processed)
         loaded_modules.extend(loaded)
         if not processed:
@@ -250,6 +274,8 @@ def load_modules(db, force_demo=False, status=None, update_module=False):
     if force_demo:
         force.append('demo')
 
+    models_to_check = set()
+
     cr = db.cursor()
     try:
         if not odoo.modules.db.is_initialized(cr):
@@ -278,7 +304,9 @@ def load_modules(db, force_demo=False, status=None, update_module=False):
         # processed_modules: for cleanup step after install
         # loaded_modules: to avoid double loading
         report = registry._assertion_report
-        loaded_modules, processed_modules = load_module_graph(cr, graph, status, perform_checks=update_module, report=report)
+        loaded_modules, processed_modules = load_module_graph(
+            cr, graph, status, perform_checks=update_module,
+            report=report, models_to_check=models_to_check)
 
         load_lang = tools.config.pop('load_language')
         if load_lang or update_module:
@@ -333,11 +361,11 @@ def load_modules(db, force_demo=False, status=None, update_module=False):
             previously_processed = len(processed_modules)
             processed_modules += load_marked_modules(cr, graph,
                 ['installed', 'to upgrade', 'to remove'],
-                force, status, report, loaded_modules, update_module)
+                force, status, report, loaded_modules, update_module, models_to_check)
             if update_module:
                 processed_modules += load_marked_modules(cr, graph,
                     ['to install'], force, status, report,
-                    loaded_modules, update_module)
+                    loaded_modules, update_module, models_to_check)
 
         registry.loaded = True
         registry.setup_models(cr)
@@ -407,6 +435,16 @@ def load_modules(db, force_demo=False, status=None, update_module=False):
                 cr.commit()
                 return registry
 
+        # STEP 5.5: Verify extended fields on every model
+        # This will fix the schema of all models in a situation such as:
+        #   - module A is loaded and defines model M;
+        #   - module B is installed/upgraded and extends model M;
+        #   - module C is loaded and extends model M;
+        #   - module B and C depend on A but not on each other;
+        # The changes introduced by module C are not taken into account by the upgrade of B.
+        if models_to_check:
+            registry.init_models(cr, list(models_to_check), {'models_to_check': True})
+
         # STEP 6: verify custom views on every model
         if update_module:
             env = api.Environment(cr, SUPERUSER_ID, {})
diff --git a/odoo/modules/registry.py b/odoo/modules/registry.py
index 712b25aefb38c8778117f4a218d5970146b0b7ed..9e180138a21a451ad2a4127146cfea66c14c8c76 100644
--- a/odoo/modules/registry.py
+++ b/odoo/modules/registry.py
@@ -287,6 +287,8 @@ class Registry(Mapping):
         """
         if 'module' in context:
             _logger.info('module %s: creating or updating database tables', context['module'])
+        elif context.get('models_to_check', False):
+            _logger.info("verifying fields for every extended model")
 
         env = odoo.api.Environment(cr, SUPERUSER_ID, context)
         models = [env[model_name] for model_name in model_names]