Daily updates from Odoo
Navigate
Branch
Wednesday, May 23, 2018
11 changes
New functionality added to Odoo
This change makes online payment transactions work more like standard accounting payments. Users can manage actions such as capture and void directly from invoices and sales orders, while technical transaction records are hidden to reduce confusion.
Original PR description
…ore "accounting" way The link between the payment.transaction and the so/invoices was done in a shitty way. Furthermore, it's very confusing for the user to distinct account.payment and payment.transaction. This commit aims to reduce the gap between the accounting and the transactions: - the payment.transaction model is now only there for technical/log purposes. - the payment.transaction are hidden. - the capture/void methods are now visible on SO/Invoices. task: https://www.odoo.com/web#id=35857&view_type=form&model=project.task&action=333&active_id=967&menu_id=4720 Description of the issue/feature this PR addresses: Current behavior before PR: Desired behavior after PR is merged: -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Adds a French point-of-sale certification module that helps companies generate legally required anti-fraud archives for POS sales data. This supports compliance with French regulations, including cases where archives need to be generated without accounting data.
Original PR description
The generation of such archives is a french law requirements. task: https://www.odoo.com/web#id=47989&view_type=form&model=project.task&action=333&active_id=967&menu_id=4720 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
This update adapts the subscription app to better handle payment-related behavior and related subscription assets. It helps keep subscription management aligned with current business processes and improves reliability for teams managing recurring sales.
Original PR description
task: https://www.odoo.com/web#id=35857&view_type=form&model=project.task&action=333&active_id=967&menu_id=4720
Enhancements to existing features
This improves how units of measure are categorized and validated, helping prevent incorrect conversions such as mixing incompatible measurement types. It also ensures each unit category has a single active reference unit, reducing configuration mistakes that can affect sales, stock, manufacturing, project timesheets, and landed costs.
Original PR description
Task: https://www.odoo.com/web?debug#id=1820076&view_type=form&model=project.task&action=333&active_id=965&menu_id=4720 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Icons in the web editor now visibly highlight when selected, making it easier for users to understand which icon they are editing. This reduces confusion during page or content design and improves the editing experience.
Original PR description
task: https://www.odoo.com/web#id=35020&view_type=form&model=project.task&action=333&active_id=131&menu_id=4720 pad: https://pad.odoo.com/p/r.6ce8724b3f9501a569f0e7f6d2eb267b
This update standardizes how search behavior is customized across many Odoo apps so regular searches and searches performed on behalf of another user return consistent results. Businesses benefit from fewer confusing discrepancies in records shown across accounting, sales, inventory, products, calendar, fleet, and related workflows.
Original PR description
…earch Purpose ======= The method _name_search and _search add support to search as another user. All the overrides of name_search and search redefine the behavior of the search. This bring…
…earch
Purpose
=======
The method _name_search and _search add support to search as another user.
All the overrides of name_search and search redefine the behavior of the search.
This bring inconsistencies as the result of a call to _name_search and name_search
could differ on certain modules, which is not acceptable.
Specification
=============
Example:
~~~~~~~~
If the name_search method is overridden to search also on the driver name,
then calling name_search with a label 'JF' will return all the cars with a name containing
'JF' or all the cars with a driver name containing 'JF'. Let's say that we have a ir.rule
preventing a user to read the cars of another company. Then the call to name search only returns
the cars satisfying the previous condition AND belonging to his company.
Now, we want to overpass this constraint. We call _name_search with the attribute name_get_uid=1.
Then the call to _name_search returns all the cars from all the companies with a name like 'JF',
but nothing is done about the driver_name.
Example of wrong search redefinition on a model
-----------------------------------------------
@api.model
def name_search(self, name, args=None, operator='ilike', limit=100):
domain = args or []
domain = expression.AND([domain, [('name', 'ilike', name)]])
partners = self.env['res.partner'].search([('name', operator, name)])
if partners and name:
domain = expression.OR([domain, ['|', ('driver_id', 'in', partners.ids), ('driver_id', '=', False)]])
rec = self.search(domain, limit=limit)
return rec.name_get()
Example of correct search redefinition on a model
-------------------------------------------------
@api.model
def _name_search(self, name, args=None, operator='ilike', limit=100, name_get_uid=None):
domain = args or []
domain = expression.AND([domain, [('name', operator, name)]])
partner_ids = self.env['res.partner']._search([('name', operator, name)], access_rights_uid=access_rights_uid)
if partner_ids:
domain = expression.OR([domain, ['|', ('driver_id', 'in', partner_ids), ('driver_id', '=', False)]])
rec = self._search(domain, limit=limit, access_rights_uid=name_get_uid)
return self.browse(rec).name_get()
The same logic should be applied on the overrides of the search method.
Description of the issue/feature this PR addresses:
Current behavior before PR:
Desired behavior after PR is merged:
--
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-prPurchasing is being separated from inventory management so service-focused companies can use purchase features without installing stock tools they do not need. Existing stock-related purchasing behavior is preserved through a new bridge module, while users without stock can manually enter received quantities for consumable and service purchases.
Original PR description
Task: https://www.odoo.com/web?debug#id=47927&view_type=form&model=project.task&action=333&active_id=965&menu_id=4720 -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The update makes search controls easier to use on mobile devices by separating and adjusting the search view for smaller screens. It also hides date range buttons where they caused layout issues, improving usability for mobile users across web, mail, and website areas.
Original PR description
Description of the issue/feature this PR addresses: Task:https://www.odoo.com/web#id=31464&view_type=form&model=project.task&action=333&active_id=131&menu_id=4720 Current behavior before PR: Desired behavior after PR is merged: -- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The mobile search interface has been redesigned to make finding and applying filters, groups, and search terms easier on smaller screens. This gives users a clearer, dedicated search flow on mobile devices and resolves a related layout issue in the subscription dashboard.
Original PR description
Task: https://www.odoo.com/web#id=31464&view_type=form&model=project.task&action=333&active_id=131&menu_id=4720
This update standardizes how customized search behavior is applied when searches run with different user permissions. It helps prevent inconsistent results between normal searches and elevated searches, especially in areas like products, localization, and subscriptions.
Original PR description
…earch Purpose ======= The method _name_search and _search add support to search as another user. All the overrides of name_search and search redefine the behavior of the search. This bring…
…earch
Purpose
=======
The method _name_search and _search add support to search as another user.
All the overrides of name_search and search redefine the behavior of the search.
This bring inconsistencies as the result of a call to _name_search and name_search
could differ on certain modules, which is not acceptable.
Specification
=============
Example:
~~~~~~~~
If the name_search method is overridden to search also on the driver name,
then calling name_search with a label 'JF' will return all the cars with a name containing
'JF' or all the cars with a driver name containing 'JF'. Let's say that we have a ir.rule
preventing a user to read the cars of another company. Then the call to name search only returns
the cars satisfying the previous condition AND belonging to his company.
Now, we want to overpass this constraint. We call _name_search with the attribute name_get_uid=1.
Then the call to _name_search returns all the cars from all the companies with a name like 'JF',
but nothing is done about the driver_name.
Example of wrong search redefinition on a model
-----------------------------------------------
@api.model
def name_search(self, name, args=None, operator='ilike', limit=100):
domain = args or []
domain = expression.AND([domain, [('name', 'ilike', name)]])
partners = self.env['res.partner'].search([('name', operator, name)])
if partners and name:
domain = expression.OR([domain, ['|', ('driver_id', 'in', partners.ids), ('driver_id', '=', False)]])
rec = self.search(domain, limit=limit)
return rec.name_get()
Example of correct search redefinition on a model
-------------------------------------------------
@api.model
def _name_search(self, name, args=None, operator='ilike', limit=100, name_get_uid=None):
domain = args or []
domain = expression.AND([domain, [('name', operator, name)]])
access_rights_uid = name_get_uid or self._uid
partner_ids = self.env['res.partner']._search([('name', operator, name)], access_rights_uid=access_rights_uid)
if partner_ids:
domain = expression.OR([domain, ['|', ('driver_id', 'in', partner_ids), ('driver_id', '=', False)]])
rec = self._search(domain, limit=limit, access_rights_uid=access_rights_uid)
return self.browse(rec).name_get()
The same logic should be applied on the overrides of the search method.Code cleanup and technical improvements
Odoo now falls back to an alternative style compiler when the usual library is not available, reducing the chance of asset build failures in different server environments. The change also simplifies the internal asset compilation flow, making it easier to maintain without changing normal user workflows.