Thursday, May 25, 2023
7 changes · master
Enhancements to existing features
Recruitment users can now filter job positions using a search panel for departments and companies. This makes it faster to narrow down job listings and manage openings across organizational units.
Original PR description
task-3332640 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The point of sale interface has been adjusted to work better on mobile devices, including updated screen layouts and popups used by waiters. Table order badges now show the number of items still needing preparation or printing, helping staff see pending work more clearly.
Original PR description
The PoS needed improvments for the mobile use. This commit is changing the display of some screen and popups like the NumberPopup. It also changes the logic of the order count badge on the table. It now displays the number of orderline (and their quantity) to send to the printers or preparation display if there is at least one. Enterprise PR: odoo/enterprise#41013 task-id: 2893634 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
The domain selector and search filters were refined to make filter conditions easier to read and manage. Users should see clearer filter descriptions, improved connector display, and a more comfortable dialog layout when building searches.
Original PR description
Task ID: 3324924
This update improves day-to-day manufacturing and inventory workflows with clearer production dates, searchable lot and serial details on work orders, kit scrapping, and optional replenishment after scrapping. It also adds better work-in-progress reporting and reduces avoidable errors by improving warehouse rule fallback behavior.
Original PR description
Combination of multiple small improvements in MRP, see different feature commits for details. Task: 2479234 --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr
Manufacturing analysis now includes employee costs, giving businesses a more complete view of production expenses. Manufacturing tablet workflows also gain control over whether lot or serial numbers are prefilled, with a related update to keep quality checks aligned when lots change.
Original PR description
Combination of multiple small improvements in MRP, see different feature commits for details. Task: 2479234
Resolved issues and error corrections
The Social Marketing feed now avoids showing users a timeout error when a refresh or synchronization is affected by slow or lost connectivity. Since stream and statistics refreshes run repeatedly, skipped updates can be retried later without interrupting the user experience.
Original PR description
While loading the feed page with function( _fetch_page_posts) in social marketing module, which is facing connectivity issue due to loss of network or slow internet the page is getting read time out. This is happening when the page is being refreshed/synchronized. To avoid showing an error to the end user, we ignore those read timeouts.As refreshing the streams/statistics is a recurring work, they will get refreshed again later.  sentry id-3953488576
This fix prevents Field Service sales-related modules from failing during installation or upgrade when a referenced Field Service project was previously deleted. It helps keep module updates reliable for customers who have removed default project records.
Original PR description
When the user deletes a project in the `Project` module that is present in the data file of `Field Service - Sale` module. While installing or upgrading the `Field Service - Sale` module, the user…
When the user deletes a project in the `Project` module that is present in the data file of `Field Service - Sale` module. While installing or upgrading the `Field Service - Sale` module, the user gets an error as the project referenced from the 'Project' module has been deleted.
Steps to reproduce :
1. Install the `Field Service` module.
2. Open the project app.
3. Delete all the tasks of the `Field Service` project and then delete the `Field Service` project.
4. Install or upgrade modules that are using that project like `Field Service - Sale`, `Helpdesk FSM`, etc.
5. Traceback will be generated.
Traceback in sentry :
```
KeyError: ('ir.model.data', <function IrModelData._xmlid_lookup at 0x7f93d94743a0>, 'industry_fsm.fsm_project')
File "odoo/tools/cache.py", line 91, in lookup
r = d[key]
File "<decorator-gen-3>", line 2, in __getitem__
File "odoo/tools/func.py", line 87, in locked
return func(inst, *args, **kwargs)
File "odoo/tools/lru.py", line 34, in __getitem__
a = self.d[obj]
ValueError: External ID not found in the system: industry_fsm.fsm_project
File "odoo/tools/convert.py", line 550, in _tag_root
f(rec)
File "odoo/tools/convert.py", line 420, in _tag_record
f_val = self.id_get(f_ref, raise_if_not_found=nodeattr2bool(rec, 'forcecreate', True))
File "odoo/tools/convert.py", line 533, in id_get
res = self.model_id_get(id_str, raise_if_not_found)
File "odoo/tools/convert.py", line 539, in model_id_get
return self.env['ir.model.data']._xmlid_to_res_model_res_id(id_str, raise_if_not_found=raise_if_not_found)
File "odoo/addons/base/models/ir_model.py", line 1982, in _xmlid_to_res_model_res_id
return self._xmlid_lookup(xmlid)[1:3]
File "<decorator-gen-40>", line 2, in _xmlid_lookup
File "odoo/tools/cache.py", line 96, in lookup
value = d[key] = self.method(*args, **kwargs)
File "odoo/addons/base/models/ir_model.py", line 1975, in _xmlid_lookup
raise ValueError('External ID not found in the system: %s' % xmlid)
ParseError: while parsing /home/odoo/src/enterprise/saas-16.2/industry_fsm_sale/data/industry_fsm_data.xml:5, somewhere inside
<record id="field_service_product" model="product.product">
<field name="name">Field Service</field>
<field name="project_id" ref="industry_fsm.fsm_project"/>
<field name="service_tracking">task_global_project</field>
<field name="type">service</field>
<field name="list_price">100</field>
<field name="uom_id" ref="uom.pr...
File "odoo/http.py", line 2119, in __call__
response = request._serve_db()
File "odoo/http.py", line 1702, in _serve_db
return service_model.retrying(self._serve_ir_http, self.env)
File "odoo/service/model.py", line 134, in retrying
result = func()
File "odoo/http.py", line 1729, in _serve_ir_http
response = self.dispatcher.dispatch(rule.endpoint, args)
File "odoo/http.py", line 1926, in dispatch
result = self.request.registry['ir.http']._dispatch(endpoint)
File "odoo/addons/base/models/ir_http.py", line 154, in _dispatch
result = endpoint(**request.params)
File "odoo/http.py", line 719, in route_wrapper
result = endpoint(self, *args, **params_ok)
File "addons/web/controllers/dataset.py", line 32, in call_button
action = self._call_kw(model, method, args, kwargs)
File "addons/web/controllers/dataset.py", line 24, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "odoo/api.py", line 461, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
File "odoo/api.py", line 448, in _call_kw_multi
result = method(recs, *args, **kwargs)
File "odoo/addons/base/models/res_config.py", line 614, in execute
installation_status = self._install_modules(to_install)
File "odoo/addons/base/models/res_config.py", line 32, in _install_modules
result = to_install_modules.button_immediate_install()
File "home/odoo/src/custom/trial/saas_trial/models/module.py", line 80, in button_immediate_install
return super(IrModuleModule, self).button_immediate_install()
File "<decorator-gen-73>", line 2, in button_immediate_install
File "odoo/addons/base/models/ir_module.py", line 76, in check_and_log
return method(self, *args, **kwargs)
File "odoo/addons/base/models/ir_module.py", line 472, in button_immediate_install
return self._button_immediate_function(type(self).button_install)
File "home/odoo/src/custom/trial/saas_trial/models/module.py", line 52, in _button_immediate_function
res = super(IrModuleModule, self)._button_immediate_function(function)
File "odoo/addons/base/models/ir_module.py", line 596, in _button_immediate_function
registry = modules.registry.Registry.new(self._cr.dbname, update_module=True)
File "<decorator-gen-14>", line 2, in new
File "odoo/tools/func.py", line 87, in locked
return func(inst, *args, **kwargs)
File "odoo/modules/registry.py", line 90, in new
odoo.modules.load_modules(registry, force_demo, status, update_module)
File "odoo/modules/loading.py", line 481, in load_modules
processed_modules += load_marked_modules(env, graph,
File "odoo/modules/loading.py", line 365, in load_marked_modules
loaded, processed = load_module_graph(
File "odoo/modules/loading.py", line 226, in load_module_graph
load_data(env, idref, mode, kind='data', package=package)
File "odoo/modules/loading.py", line 71, in load_data
tools.convert_file(env, package.name, filename, idref, mode, noupdate, kind)
File "odoo/tools/convert.py", line 613, in convert_file
convert_xml_import(env, module, fp, idref, mode, noupdate)
File "odoo/tools/convert.py", line 679, in convert_xml_import
obj.parse(doc.getroot())
File "odoo/tools/convert.py", line 599, in parse
self._tag_root(de)
File "odoo/tools/convert.py", line 550, in _tag_root
f(rec)
File "odoo/tools/convert.py", line 563, in _tag_root
raise ParseError('while parsing %s:%s, somewhere inside\n%s' % (
```
In this commit, prevent the creation of a record that contains the reference of deleted record.
sentry - 4087533601, 4192250622