- Create a MO, components needed are 1 unit of Prod A and 1 unit of Prod
B.
- Click on "Check Availability"
The button "Unreserve" does not appear unless all components are
available.
opw-724940
New api regression: xmlid_to_res_id() had the flag to raise set to
false by default while ref() does the opposite. Since the intent
here was clearly to allow not finding the record (given the if
condition under the ref call), avoid crashing for a simple default.
The CompoundDomain class allows to regroup several domains with an
implicit "AND"; these domains can be either a string, an array or
another CompoundDomain. A CompoundDomain can then be converted to
an array thanks to pyeval.js.
For example, if a CompoundDomain is initialized with `[A, B]` and
`[C]`, the array conversion gave `[A, B, C]` (which is expected).
However, a hackish method was used with CompoundDomain. If one of the
domain of a CompoundDomain is equal to `["|"]` (an array with the
OR operator in it), the two next subdomains were supposed to be joined
by a OR operator. Indeed, for the case of a CompoundDomain initialized
with `["|"]`, `[A]` and `[B]`, the array conversion gave `["|", A, B]`
(which is expected). However, if initialized with `["|"]`, `[A, B]` and
`[C]`, the array conversion gave `["|", A, B, C]` which is very wrong
as what was expected is `["|", "&", A, B, C]`. The problem is that the
given `[A, B]` contains implicit "&" operators.
This commit fixes the problem by normalizing only if the CompoundDomain
starts with a ["|"] or ["!"] array which is the standard odoo case.
This allows to limit breaking custom code (e.g we want a simple "AND"
of `[A]` and `[B]` to stay `[A, B]`, not become `["&", A, B]`).
The commit also modifies a test so that it checks that the problem is
properly solved.
When editing a report, the editor is launched in an iframe with an
environment which is different from backend and frontend. The problem
here is that the editor uses the `Dialog` API while the report editor
was not loading the associated xml file this API needs to work. Indeed,
when clicking on the "Discard" button for example, nothing seemed to
happen as a dialog was supposed to be opened.
This worked before as the editor was not using the `Dialog` API until
commit 62fb1bb924.
Unfortunatly, this commit adapted "iframe.js" to load the associated
xml file but forgot to adapt the report editor. In a future
amelioration, this "iframe.js" file could be added to the report editor
so that all "iframe editor" environement work properly with the same
adaptation code.
opw-724784
On firefox pressing special keys such as: Left Arrow or Backspace
trigger a keypress event.
This is different from google chrome which only generate a keydown and
keyup event.
There was thus two issue when using a FieldFloatScannable and firefox:
1. Keys such as ArrowLeft: would still be catched by FieldFloatScannable
and be added programatically to the field but since Odoo didn't fix
them a ASCII NUL character (0x0) would be added (in firefox it is
represented by a large space).
2. Keys such as Backspace: would still be catched by FieldFloatScannable
but were modified and corrected by Odoo so the corresponding ASCII
character was added (ASCII BS character (0x8) for backspace).
The feature in FieldFloatScannable which add the character is used to
add characters for which the browser had been prevented to display them.
Thus this fix:
- for issue 1 and 2: only use the feature of FieldFloatScannable if the
event was previously prevented and the current one is a forgery.
- for issue 2: add "Backspace" and "Delete" as specials characters which
should not be modified or stopped by the scanner heuristic.
opw-706352
The allocation requests have date fields that are only informative.
Having an allocation request (e.g. specifying dates of a public holiday)
overlapping the dates of a request is actually fine (if an employee is sick
during a public holidays, he can still use it for a leave request).
Closes#11026
Refine the priorities of ir.values entries to make the result
deterministic in the presence of multiple matching default
values. We now give the priority to company-specific defaults,
before global defaults.
Before this change, the default value would be random when
both a per-company and global default value existed for the same
field (with no per-user default).
The priorities are now defined as follows (smaller number = higher prio):
1. Per-user default (user_id is set, company_id is set)
2. Per-user global default (user_id is set, company_id not set)
3. Per-company default (user_id not set, company_id set)
4. Global defaults (user_id not set, company_id not set)
The final "id" order spec ensures that the order is total.
Also added the corresponding regression test.
Closes#16038
The many2many_tags_email's internal value change logic fails to process
all its values. It is not concurrency proof either.
The internal value change logic is now replaced by a mutex and deferreds
are used for the partner's form view popups in order to allow concurrent
events.
The many2many_tags_email's internal value change logic fails to process
all its values. It is not concurrency proof either.
The internal value change logic is now replaced by a mutex and deferreds
are used for the partner's form view popups in order to allow concurrent
events.
The many2many_tags_email's internal value change logic fails to process
all its values. It is not concurrency proof either.
The internal value change logic is now replaced by a mutex and deferreds
are used for the partner's form view popups in order to allow concurrent
events.
To have the same behavior when the variant is added manually on the SO
or when it's added with a sale.quote.template. The description on the
SO line must include the default_code and the name of the variant.
opw:725072
Grouping by stage_id on tree view in "project.task" when group_by_full
is defined on stage_id(to show all the stages in kanban view even if
they are empty), grouped by stage without summing all other the fields
such as remainig_hours.
Reason: The order defined in "project.task.type" was not strict and the
function _read_group_fill_results cannot group if the order defined by the
group_by_full(right_side) and the read_group(left_side) is not the same.
opw:724785
When setting an activity as done in chatter users now have the possibility
to add a feedback. This feedback is added in the generated message that
already contains the activity name and note.
Moreover users now can also immediately schedule a next activity. This is
very useful for chained activities and speeds up activities use.
Courtesy of Gustavo Valverde. PR #13787
Details:
-------
- Easier implementation for most of the people
- Minor customization to be fully compliant with local regulations
- Standardized configuration to help other Odoo consultants and implementers
- Use of the account types defined in account instead of creating new ones
To comply with local and tax regulations:
-The whole Charts of Accounts was changed
-Most of the Journals has been preconfigured to comply with tax regulator
-All the regulatory taxes were added and configured with group taxes
To standardize the Dominican implementations:
-An IFRS compatible CoA that does not need major changes for most companies
-A well structured CoA with a codification logic.
-Use of the Odoo original flow for creating tax compliant invoice sequences
Portal user had too many access right on
sensitive documents in this modules. Some
ir.rule were missing, and some model access
were useless.
This commit clean all access right: ir.rule,
ir.model.access and remove useless check in
python code.
Also, some tests were added to check access
rights.
Portal has access (read only) to partner, pricelist,
taxes, ... These access were given to display informations
on portal pages. Since, these are not very secure, we
remove the access right.
Some modifications are required to make the portal work again :
- 'sudo' business document before rendering templates. ir.rule
are still apply to filter the documents do display.
For instance, SO total amount is computed using account.tax.
- a related field has been added on SO line to allow portal user
to see the image of the ordered product (on SO frontend view)
- a new controller is created to display invoice PDF (as 'sudo'),
since the rendering of this document required read access to
taxes, payment terms, ...
PO are now available in customer portal. It follows the same
convention as the rest of exposed documents (list, pager, form,
filters, ...)
To insert it after the SO menu item, some ordering was required.
Also, rename 'Orders' into 'Sales Orders' to avoid confusion
with 'Purchase Orders'.
This commit impact website_portal, website_portal_sale,
website_project, website_project_issue, and website_crm_partner_assign.
The idea is to hide menu items and dashboard entry in customer
portal when there no document available. Only Sales Orders and
Opportunities are always displayed to avoid empty dashboard.
Also, resequence menu items to be more consistent and to prepare
to insert more items in the future.
When a language is deactivated, it may still be referred to in a default value.
A ir.value is created at the database setup to specify the default language.
If a user deactivate the default language but not the ir.value, the creation of
a res.partner would fail as trying to set an unknown value to a selection field.
This commit removes the default value when deactivating the linked language.
The patch is minimal for the bug. A more generic solution would be to verify the
ir.value when calling the default_get method.
This is however a risk of performance degradation (e.g. during a csv import) for
a rare scenario.
The dynamic selection scenario is probably on relevant to res.lang.
A similar problem can occur with many2one fields but is difficult to fix without
performance degradation.
Closes#16009Fixes#15979Fixes#3854
When you add a sale order line, odoo checks the available quantity
through all warehouse and if you add more than available, you get a
warning.
We improved this warning, by checking the quantity in the warehouse set
on the sale order, and if the quantity available in this warehouse is
too low, we warn the user with the quantity available in this warehouse
and in all other warehouses.
Currently when the salesman clicks on 'Preview' button of quotation it
is set as 'Viewed by Customer'. This commit improves this behavior by
ensuring it is triggered only by shared users.
Typo error
Steps to reproduce:
1. Go to a project and activate customer satisfaction on tasks
2. Activate the developer mode and go to Settings > Technical > Templates
3. Find the "Task: Rating Request" template
4. Click on Preview
Bug: Signature is in HTML code
opw:725722
This commit links the alias security and the channel configuration.
Indeed private or group-based channels should always have a restricted
alias. Moreover this alias should check channel members instead of
channel followers, as a channel has members and should not have followers.
This implies a small refactoring of the alias check in the mailgateway.
Code is extracted and moved on alias.mixin class, allowing to tune the
behavior through inheritance.
Otherwise by default their alias are public. This makes no sense for
private groups to have by default public aliases.
Field is set as invisible on the view because it makes sense to configure
only the channel and not details of its alias. Anyway it is always
possible to tweak the alias configuration under Technical menu.
This commit makes channel use 'followers' based alias security use members
instead. Indeed channels do not use followers anymore. Instead channels
have members, and alias security of followers should use members instead.
Currently check of alias security is directly embedded in mail.thread
routing method. In this commit we move this check in the mail.alias.mixin
class itself. Doing this allows models to extend or improve the behavior
depending on how inheriting models use aliases.
Currently channel model manually defines alias and inherits instead of
using the alias.mixin. This commit proposes to use alias feature through
the mixin to have a standard behavior.
Using a m2m to partners does not allow a real management of members
because it allows to create partners, and require access rights on
partner model. Instead it now uses the o2m to channel members
allowing creation, update and removal of members without having
to work on partner records.
- On a model, log a note and ping User A
- Go in the inbox of User A, and reply to the message
The reply is a comment (therefore sent to all followers of the
document), not a note.
opw-710326
Activity types are currently hard to find and define. In this commit we
add a menu under sales configuration to access generic or sales
related activity types (contact, lead, product, sale order).
This commit is an improvement considered as an usability fix, therefore
targeting stable version.