diff --git a/addons/hr_payroll_account/models/hr_payroll_account.py b/addons/hr_payroll_account/models/hr_payroll_account.py
index e76173d45a4689c1c2ac4401ff76563ee8455598..93d2ad307bf1f2039d88ce99bc028061d3226838 100644
--- a/addons/hr_payroll_account/models/hr_payroll_account.py
+++ b/addons/hr_payroll_account/models/hr_payroll_account.py
@@ -53,6 +53,7 @@ class HrPayslip(models.Model):
 
     @api.multi
     def action_payslip_done(self):
+        res = super(HrPayslip, self).action_payslip_done()
         precision = self.env['decimal.precision'].precision_get('Payroll')
 
         for slip in self:
@@ -138,7 +139,7 @@ class HrPayslip(models.Model):
             move = self.env['account.move'].create(move_dict)
             slip.write({'move_id': move.id, 'date': date})
             move.post()
-        return super(HrPayslip, self).action_payslip_done()
+        return res
 
 
 class HrSalaryRule(models.Model):
diff --git a/addons/payment_sips/models/payment.py b/addons/payment_sips/models/payment.py
index 515bb08ee9797813c554917d8f0add56bdd9fb13..4b2122cec4568b7dc599fdbd45909e0020ff8ea4 100644
--- a/addons/payment_sips/models/payment.py
+++ b/addons/payment_sips/models/payment.py
@@ -81,7 +81,7 @@ class AcquirerSips(models.Model):
         if self.environment == 'prod':
             # For production environment, key version 2 is required
             merchant_id = getattr(self, 'sips_merchant_id')
-            key_version = '2'
+            key_version = self.env['ir.config_parameter'].sudo().get_param('sips.key_version', '2')
         else:
             # Test key provided by Atos Wordline works only with version 1
             merchant_id = '002001000000001'
diff --git a/addons/purchase/models/res_partner.py b/addons/purchase/models/res_partner.py
index 8983a4b07b3efaaeb3b5b2d25c2756d7fbc75fac..df138af9655bf7e2fb711536f3bea80797857496 100644
--- a/addons/purchase/models/res_partner.py
+++ b/addons/purchase/models/res_partner.py
@@ -11,11 +11,32 @@ class res_partner(models.Model):
 
     @api.multi
     def _purchase_invoice_count(self):
-        PurchaseOrder = self.env['purchase.order']
-        Invoice = self.env['account.invoice']
-        for partner in self:
-            partner.purchase_order_count = PurchaseOrder.search_count([('partner_id', 'child_of', partner.id)])
-            partner.supplier_invoice_count = Invoice.search_count([('partner_id', 'child_of', partner.id), ('type', '=', 'in_invoice')])
+        # retrieve all children partners and prefetch 'parent_id' on them
+        all_partners = self.search([('id', 'child_of', self.ids)])
+        all_partners.read(['parent_id'])
+
+        purchase_order_groups = self.env['purchase.order'].read_group(
+            domain=[('partner_id', 'in', all_partners.ids)],
+            fields=['partner_id'], groupby=['partner_id']
+        )
+        for group in purchase_order_groups:
+            partner = self.browse(group['partner_id'][0])
+            while partner:
+                if partner in self:
+                    partner.purchase_order_count += group['partner_id_count']
+                partner = partner.parent_id
+
+        supplier_invoice_groups = self.env['account.invoice'].read_group(
+            domain=[('partner_id', 'in', all_partners.ids),
+                    ('type', '=', 'in_invoice')],
+            fields=['partner_id'], groupby=['partner_id']
+        )
+        for group in supplier_invoice_groups:
+            partner = self.browse(group['partner_id'][0])
+            while partner:
+                if partner in self:
+                    partner.supplier_invoice_count += group['partner_id_count']
+                partner = partner.parent_id
 
     @api.model
     def _commercial_fields(self):
diff --git a/addons/website_slides/view/website_slides_embed.xml b/addons/website_slides/view/website_slides_embed.xml
index 72614803325c04a6dd99fe09966bf5d0db0b4c55..c7010c22e603879a3e7b8f0e761395060459df5f 100644
--- a/addons/website_slides/view/website_slides_embed.xml
+++ b/addons/website_slides/view/website_slides_embed.xml
@@ -133,7 +133,7 @@
                                     <div class="col-lg-4 col-md-4 col-sm-4 col-xs-4 text-center"></div>
                                 </div>
                                 <div class="col-lg-2 col-md-2 col-sm-2 col-xs-2 pull-right text-right">
-                                    <a t-if="slide.download_security and not is_embedded" target="_top" t-attf-href="/slides/slide/#{slug(slide)}/download" title="Download" id="download">
+                                    <a t-if="slide.download_security != 'none' and not is_embedded" target="_top" t-attf-href="/slides/slide/#{slug(slide)}/download" title="Download" id="download">
                                         <i class="fa fa-download fa-2x"></i>
                                     </a>
                                     <span id="fullscreen" title="View fullscreen">
diff --git a/doc/cla/corporate/merchise.md b/doc/cla/corporate/merchise.md
index e4cbd3c3f95f143eb14c1938ebe892487e303b9b..64d5b277ccd13c5391ee88627c142c169158391d 100644
--- a/doc/cla/corporate/merchise.md
+++ b/doc/cla/corporate/merchise.md
@@ -21,3 +21,4 @@ Medardo Rodríguez med@merchise.org https://github.com/med-merchise
 Abel Firvida firvida@merchise.org
 Abel Firvida abel@merchise.org
 Mónica Díaz Pena monicadp@merchise.org  https://github.com/mdpena
+Larisa González larisa@merchise.org
diff --git a/odoo/models.py b/odoo/models.py
index 38a25c64d86397b53bbe10ec5c1847d88c2552a5..51fd5f28b3e22c265f0abeb19ebc9e3abe0e83e6 100644
--- a/odoo/models.py
+++ b/odoo/models.py
@@ -2516,14 +2516,16 @@ class BaseModel(object):
 
         # retrieve results from records; this takes values from the cache and
         # computes remaining fields
+        self = self.with_prefetch(self._prefetch.copy())
         data = {record: {'id': record.id} for record in self}
         missing = set()
         use_name_get = (load == '_classic_read')
         for name in (stored + inherited + computed):
             convert = self._fields[name].convert_to_read
-            # read every field with prefetching limited to self; this avoids
+            # restrict the prefetching of self's model to self; this avoids
             # computing fields on a larger recordset than self
-            for record in self.with_prefetch():
+            self._prefetch[self._name] = set(self._ids)
+            for record in self:
                 try:
                     data[record][name] = convert(record[name], record, use_name_get)
                 except MissingError: