From e2bdb65321264322cd94ffa460f0856ca19b5f12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aur=C3=A9lien=20Warnon?= Date: Tue, 8 Jan 2019 14:15:41 +0000 Subject: [PATCH 1/6] [FIX] website_slides: hide slide download button if not available Task #1923443 Purpose ======= The slides on the website showed the 'download' button regardless of the value of the 'download_security' field. If the value is 'none', meaning that the slides are never downloadable, the button should be hidden. closes #29904 closes odoo/odoo#30051 --- addons/website_slides/view/website_slides_embed.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/website_slides/view/website_slides_embed.xml b/addons/website_slides/view/website_slides_embed.xml index 72614803325..c7010c22e60 100644 --- a/addons/website_slides/view/website_slides_embed.xml +++ b/addons/website_slides/view/website_slides_embed.xml @@ -133,7 +133,7 @@
- + From 1b434ed8c3f1d7dfaf688f7fc634060147313638 Mon Sep 17 00:00:00 2001 From: Raphael Collet Date: Fri, 11 Jan 2019 09:58:53 +0000 Subject: [PATCH 2/6] [FIX] models: make prefetching more specific in read() Commit a07a076c45fc4b83caa9ab30ca919b30016015a7 restricts the prefetching to `self` when accessing the fields to return. This is too restrictive, as it cancels prefetching of secondary records in computed fields. In this commit we limit the scope of the restriction to `self`'s model only; this fixes the original issue without impacting other models. closes odoo/odoo#30133 --- odoo/models.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/odoo/models.py b/odoo/models.py index 85419013c0e..af3453a8b38 100644 --- a/odoo/models.py +++ b/odoo/models.py @@ -3019,14 +3019,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: From e1767490e939233c050f796f4ae4f6db627d53c3 Mon Sep 17 00:00:00 2001 From: Denis Vermylen Date: Thu, 27 Dec 2018 16:40:39 +0000 Subject: [PATCH 3/6] [FIX] purchase: loading time on partners with many children When loading a partner form view, the ORM prefetches the computed fields purchase_order_count and supplier_invoice_count for all the related partners as well (parent, children, ..). Instead of reading the orders and invoices once per partner, we group them all together. opw 1919933 closes odoo/odoo#29788 --- addons/purchase/models/res_partner.py | 31 ++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/addons/purchase/models/res_partner.py b/addons/purchase/models/res_partner.py index 8983a4b07b3..df138af9655 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): From 6e3661d53f36324a6db9972ab615480d320e731b Mon Sep 17 00:00:00 2001 From: Jeremy Kersten Date: Thu, 1 Feb 2018 13:12:12 +0000 Subject: [PATCH 4/6] [FIX] payment_sips: allow to customize key_version Some sips provider don't use 2 as key_version. E.g. mercanet uses '1' as production key. Now we allow to override it in Ir Config Parameter for stable version. Todo: Need to make it customizable by end user into the configuration of acquirer. Courtesy of BEK for reporting opw-1916316 closes odoo/odoo#30185 --- addons/payment_sips/models/payment.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/payment_sips/models/payment.py b/addons/payment_sips/models/payment.py index 515bb08ee97..4b2122cec45 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' From 9c6d9697754d3e661794fa7be890ebccde6818ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20V=C3=A1zquez=20Acosta?= Date: Mon, 24 Dec 2018 21:16:30 +0000 Subject: [PATCH 5/6] [CLA] Add Larisa to Merchise Autrement. --- doc/cla/corporate/merchise.md | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/cla/corporate/merchise.md b/doc/cla/corporate/merchise.md index e4cbd3c3f95..64d5b277ccd 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 From 6edfadbdd2abf13aed42a9cd7392ca42edbbc52e Mon Sep 17 00:00:00 2001 From: larisa Date: Mon, 24 Dec 2018 20:17:47 +0000 Subject: [PATCH 6/6] [FIX] hr_payroll_account: correct account move lines creation The super call of action_payslip_done executes the method compute_sheet. Without this compute_sheet call, there is no salary lines and no accounting move is created. closes odoo/odoo#29737 --- addons/hr_payroll_account/models/hr_payroll_account.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/hr_payroll_account/models/hr_payroll_account.py b/addons/hr_payroll_account/models/hr_payroll_account.py index e76173d45a4..93d2ad307bf 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):