There are situations where we don't want clicks to be detected behind an opened
dialog: for example, when a dialog is opened by a dropdown, we may want to keep the
dropdown open while we interact with the dialog.
There is now an option (default: true) to stop clicks propagation when
they arrive at the dialog container.
General cleaning of some helpers and generic files. The idea is that they are
less likely to be entirely re-written in the near future so this is a way to
keep the code clean, readable and compliant to the current standards. Changes include:
- Use of async/await when possible
- Use of const/let instead of var
- Removal of underscore.js
- Use of native JS instead of jQuery when possible
The logic of the affected code remains the same.
Currently on the portal, when a quotation has a limited validity
period, it is expried as "This offers exprires in" Xdays but X is computed
always with a additional day and its show "expries in 0 days" so
after this commit it shows the expiry date
(like This offers expires on 20 december 2020) on portal view
instead of X duration.
closes odoo/odoo#46649
Task: 2186428
Closes: #46649
Related: odoo/upgrade#874
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
Before this, the master version is the next major version without taking
intermediate saas versions into account.
Depending on the point of view, one or other choice can make more sense. Anyway,
master is always closer to next saas than next release.
Using next major release can be problematic from a technical reason, mainly for
upgrade scripts
A simple exemple is to write upgrade scripts for master. The script version
will be something like 13.3.1.2 since next saas is saas 13.3 and module version
1.2. The problem here is that installing a database in master will have module
versions setted to 14.0.1.2 since release.py indicates that version is 14.0,
making it impossible to test an incremental version script 13.3.1.3 in master
(will never be executed, 13.3.1.3 < 14.0.1.2)
Another exemple is when testing migrations on a not-rebased branch.
Hypotetically if all upgrade scripts are linked to a specific
version of a module (module version is incremented each time a
upgrade script is added), someone using an old version of the master
won't have the script 13.3.1.3 executed if current module version is 1.2.
(which is not true now since module version will be considered to be
14.0.1.2 (> 13.3.1.2).
closesodoo/odoo#47281
Signed-off-by: Olivier Dony (odo) <odo@openerp.com>
PURPOSE
Keep consistent behavior of the stat buttons and the different stock
reports when archiving a product
SPECIFICATION
Currently, you can archive a product but the behavior of the different
stock reports, stat buttons isn't coherent afterwards. Here are the
different behaviors that should be improved:
1.Keep quantity on hand and forecasted quantity visible (in the stat
button + when opening it)
2.Automatically (un)archive RR and BOM if the product is (un)archived
3.Valuation report: show the archived products without the "archived"
filter (behaves already this way in the inventory and forecast reports)
4.When a product has been archived and still has quantity in stock,
include it in inventory adjustments for which counted quantity = default
to stock on hand (dont do so for archived exhausted products).
Also, revert #47478 since we don't have active field.
LINKS
Task 2178269
PR #45586Fixes#41634
Related: odoo/upgrade#811
Related: odoo/enterprise#8513
Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
The function get_inheriting_views_arch, retrieves the architecture of
views that inherit from the given view. In the case of the module init
is currently in process only views from modules whose code is already
loaded are taken into account.
Before this commit, the function didn't process views that has been
copied (copy on write, web editor, customize show, manual copy, ...),
this raise an error when trying to install a module. For example,
install module website_sale, copy on write the view 'Main layout',
install module website_sale_wishlist.
Now, views that has been copied are also processed.
opw-2181968
closesodoo/odoo#47590
X-original-commit: d5a2890b30f869c9b4cf7aafed0e05aff9440360
Signed-off-by: Jorge Pinna Puissant (jpp) <jpp@odoo.com>
Co-authored-by: Nicolas Lempereur <nle@odoo.com>
MailThread._mail_search_on_* was obviously never called with an
extra_domain yet, or it would have raised an exception: expression.AND
expects only one argument, with the list of expressions to AND, and here
we were passing them as *args.
closesodoo/odoo#47585
X-original-commit: b20c5350c4d0e0e140f8824e6f5d2a0009af9810
Signed-off-by: Paul Morelle <madprog@users.noreply.github.com>
This reverts commit d6b854306c.
The reverted commit introduced issues in patching class methods.
Introducing getters in the patch function is not actually compatible
with the original method patching.
Test for patch method is also introduced to guard patch from future
invalid modification that happened.
A more robust way of patching classes is now being developed.
closesodoo/odoo#47557
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
Issue
- Install purchase_product_matrix, Inventory
- Create a (storable) Product P with default_code e.g. VOB2A
with a vendor V who uses a product_code e.g. VOB2a
- Create a PO/RFQ for vendor V
- Add a product, search "vob2" (copy/paste)
Infinite loop
Cause
purchase_product_matrix replace purchase.order_line.product.product
by product.template so the name_search is different and the
product.template's name_search loop doesn't support the case where
you have default_code == product_code
Solution
Check if the product's name_search returned a product containing
product_template_ids that we did not wanted (as mentionned in the
domain). If yes, it means that we will have an infinite loop so
we should break.
Additional note: the issue could be in versions < 13 but
purchase_product_matrix is only in 13.0 and this is not a
very common case.
OPW-2193005
closesodoo/odoo#47576
X-original-commit: 9d5d80f77bc04be83d5b2ca0569a6ea50e26a07e
Signed-off-by: Jason Van Malder (jvm) <jvm@odoo.com>
With a user with only Fleet Administrator rights.
Assign an internal user as the driver of a vehicle (other than the
current user) => access error, you cannot write on model `res.user`.
Writing on a partner linked to an internal user requires write access to
this user.
closesodoo/odoo#47572
X-original-commit: a693b368d3faddef6774004d40567e26b7d59cec
Signed-off-by: lul-odoo <LucasLefevre@users.noreply.github.com>
An HR user (without any rights on contracts) could not open
an employee form view since it needs the `first_contract_date`
field which needs contracts access rights.
closesodoo/odoo#47561
X-original-commit: 14855eee0f9c5737ee5aaa792defe88e138e0d7d
Signed-off-by: lul-odoo <LucasLefevre@users.noreply.github.com>
The method `recompute()` should not recompute fields on new records.
This is both a speedup (those recomputations are not necessary), and
fixes an error following an `onchange()` (a field recomputed in an
environment with the wrong context.)
OPW 2184998
closesodoo/odoo#47545
X-original-commit: fa852ba1c5707b71469c410063f338eef261ab2b
Signed-off-by: Raphael Collet (rco) <rco@openerp.com>
The synchronisation of commercial_partner_id was introduced at
0d68acff8e as a way to ensure the value is always correct.
The order or the operation was not important though.
This synchronisation has a side effect in the following scenario:
0. install base_vat
1. disable vat_check_vies in the settings
2. set an invalid VAT number on a company with at least one contact
3. enable vat_check_vies in the settings
4. correct the VAT number on the company with a valid one
--> an error was raised for an invalid VAT number on the contact
This is because the commercial_partner_id synchronisation is done
before the update of the VAT number. Even if the value has not
changed, this triggers the check_vat method.
Invert both instructions
Courtesy of Wolfgang Taferner
Closesodoo/odoo#43065Closesodoo/odoo#42973closesodoo/odoo#47543
X-original-commit: d9b2605eadc129924d085fffc4056d777cfbbbeb
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
This tax is only used on purchases to monotributistas or exentos but
it's not used on sales.
We deactivate to avoid confusions and will be removed in next version.
closesodoo/odoo#47554
X-original-commit: aaa066d43e6c697cb91714fdc65ee7a18e5a53e5
Signed-off-by: Josse Colpaert <jco@openerp.com>
The FieldMany2One allows to quick create record (name_create).
However, sometimes, required fields on the co-model make the
name_create crash. In this case, the FieldMany2one opens a form
view in a dialog to let the user specify those fields, and create
a new record with the 'create' method. This was working fine.
The FieldMany2ManyTags embeds a FieldMany2One to let the user
search for and select or (quick) create tags. In this case, failing
quick creation didn't fallback on the dialog form view, but
displayed a server error instead. This commit fixes this issue.
Bug introduced by 50bf8309f8
Task 2192754
closesodoo/odoo#47183
X-original-commit: 63ab065f3298c13bb19ae1245d7fd2652581b254
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
At the moment, when a rule has a supply method "Take from stock, if
unavailable, trigger another rule", it is displayed as a "take from
stock" rule
In order to differentiate the rule supply method, we should rather show,
thanks to a vertical bar, when a rule is in take from stock, and use
both a vertical bar and the three dots when it is in "take from stock,
if unavailable, trigger another rule"
task-2205748
closesodoo/odoo#47541
X-original-commit: e1c1093c3d5fb7be69e8d1d26bcac184b5dc07b2
Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
This field is used by the account.move.line to know the currency of the invoice.
However, the currency_id is not always set when dealing with a single currency.
In this case, currency_id is False on account.move.line and we need the additional
always_set_currency_id field to know the currency to be used to round the price_subtotal/price_total.
closesodoo/odoo#47528
X-original-commit: 0af1a38a094f92eeccb295a4ceddda26ec399064
Signed-off-by: Josse Colpaert <jco@openerp.com>
Indicators were hidden in editor when switching to slideshow mode
from any other mode. Because the class of the selected mode was defined
after rendering and we need this class before the rendering. This also
fixes other small issues when switching between different modes.
Part of https://github.com/odoo/odoo/pull/44180
task-2162952
closesodoo/odoo#47519
X-original-commit: a99150b11a463901121bbe9751370231e3564ca2
Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
Before that the space between the first two links was more spaced than
the others.
Part of https://github.com/odoo/odoo/pull/44180
task-2162952
X-original-commit: baeb08da7a32b5c185c358ec6820f8a66c6edb4f
(+ gallery snippet in carousel mode)
Part of https://github.com/odoo/odoo/pull/44180
task-2162952
X-original-commit: 6237c59d607389cb0ed57694bb23b253f49805c8
Validating a receipt of 90 stock moves having ~300k products in the
database goes from 7 minutes to 11 seconds thanks to the addition of
"active_test=False in the context before doing the searches on valuation
layers.
Most searches on "stock.valuation.layer" are done when validating a
move, but since this model contains an active field, the orm will
pathologically complete the searches expression by adding "id in active"
products. If the list is long, it slows down everything.
Since this field was only added to have a filter on the valuation
reports, it doesn't matter at all to ignore it in "_action_done".
It would probably have been cleaner to just remove the field but it
doesn't fit the stable policy. Nevertheless, we're going to remove the
field in master with task-2178269, as well as this patch.
opw-2209797
closesodoo/odoo#47523
X-original-commit: 466a8319547e11e2193dd8594b0e50e3c27d4b3e
Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
Steps to reproduce:
- install acounting, make sure you have account_analytic_default installed
- go to settings and activate Analytic Accounting
- go to accounting > configuration > analytic accounts > create an account
- go to accounting > customers > invoices > create > make an invoice line with
an analytical account > save > edit > add a new line to the invoice and select
any product
Previous behavior:
analytic accounts previously saved are deleted by an onchange
Current behavior:
analytic accounts remains set after any update of the invoice lines
opw-2209169
closesodoo/odoo#47514
X-original-commit: be7d1d7510bc94f949a4fc55a6038a83fb026147
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
Steps to reproduce the bug:
- Let's consider a company C with Belgian chart of accounts
- Let's consider a product P with 21% of Tax at 100€
- Go to POS and create an order O for P
- Pay O and close the POS
- Open the journal entry JE of O
- Reset to draft JE and change the Analytic Tags of the 100€ credit line
Bug:
The Tax grids of the 21€ credit line was removed.
PS: This fix avoids the recomputation of taxes when adding analytics tags
closes: #46827
opw-2189255
closesodoo/odoo#47471
X-original-commit: 8c93d6092928f8190f6897b772fe44c0728879c7
Signed-off-by: Simon Goffin (sig) <sig@openerp.com>
Co-authored-by: bve-odoo <bve@odoo.com>
Add fapiao number to account.move, only show it when the company is
located in China.
Task 2180269
PR #45743
Related: odoo/upgrade#813
Signed-off-by: Josse Colpaert <jco@openerp.com>
PURPOSE
Create a tour for Events to introduce new users to this freshly
revamped application.
SPECIFICATIONS
In 'website_event' module the tour steps extends the 'event' tour steps
LINKS
Task ID : 2180175
PR : #45612
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
PURPOSE
When incoming emails bounce due to alias security bounce email is quite
generic. Purpose of this task is to ease its customization and update.
SPECIFICATIONS
In order to improve the flexibility of alias, add a customizable html field
on the alias model. This html content will be send as bounce email core content
in case of bounced/unauthorized mail received for this alias,
Obviously it has no effect on 'everyone' security setting as no email will
bounce due to that issue.
If it is not set a default generic mail will be send depending on security
setting. It allows to keep void html fields when no specific bounce content
is required
In HR, an old template allowing some light customization for employee based
security option is removed as it is completely replaced by the new feature.
Also add references message-id of the mail received to the answer so that
threads are correctly set.
LINKS
Task ID 2126509
Community PR odoo/odoo#41827
Upgrade PR odoo/upgrade#936
Related: odoo/upgrade#936
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
PURPOSE
When incoming emails bounce due to alias security bounce email is quite
generic. Purpose of this task is to ease its customization and update.
SPECIFICATIONS
In order to improve the flexibility of alias, add a customizable html field
on the alias model. This html content will be send as bounce email core content
in case of bounced/unauthorized mail received for this alias,
Obviously it has no effect on 'everyone' security setting as no email will
bounce due to that issue.
If it is not set a default generic mail will be send depending on security
setting. It allows to keep void html fields when no specific bounce content
is required
In HR, an old template allowing some light customization for employee based
security option is removed as it is completely replaced by the new feature.
Also add references message-id of the mail received to the answer so that
threads are correctly set.
LINKS
Task ID 2126509
In odoo empty html is not always completely empty. This tool method allow
to consider html holding void tags as empty html. This happens notably when
using the editor that may store <p><br><p> even if displayed content is void.
Task ID 2126509
PR #41827
PURPOSE
Ease edition of digest tips by adding a name.
SPECIFICATIONS
Add a name on digest tips. Even if technical and not send to customers it
allows to see them at a glance in list view without having to guess their
content.
LINKS
Task ID 2214325
Com PR odoo/odoo#47416
Related: odoo/upgrade#933
Related: odoo/enterprise#9167
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
PURPOSE
Allow to edit and improve digest tips by adding views.
SPECIFICATIONS
Add views for digest tips. Locate those views in technical menu, in email
section, below Digest Emails.
LINKS
Task ID 2214325
Com PR odoo/odoo#47416
Before this commit:
- Install a module
- Uninstall the previously installed module
- The registry will complain that some dependencies may be missing
for the module being uninstalled
This happens because we check after the installation / upgrade of
modules that none have been left in a transient state to verify that new
dependencies have been properly installed and loaded, this applies to
'to install' and 'to upgrade' states however it's not the same for 'to
remove' states, as the process of uninstall happens much later in the
code.
After this commit, simply uninstalling modules will not trigger this
error log.
Do note that in case of a problem with an uninstall, the function
"reset_module_states" will tackle the case of leftover transient states.
closesodoo/odoo#47495
X-original-commit: c095a28314f78d1d9854e5e9bcb26014922a4f12
Signed-off-by: Xavier Dollé (xdo) <xdo@odoo.com>
When your point of sale is offline and you try to print your ticket from
the button 'Print Receipt', the notification "trying to reconnect" is
displayed on the ticket. We are removing it when it is printed.
closesodoo/odoo#47481
X-original-commit: 9aa9705c2dce1c6164b5909500e7c2038b93812c
Signed-off-by: pimodoo <pimodoo@users.noreply.github.com>
In POS Settings activate IoTBox, and its suboption 'Receipt Printer'
Activate now 'Reprint Receipt'
Open the POS, make an order, validate and go to a next new order.
Click on 'Reprint Receipt', then 'Print Invoice', fill the customer and
try again
Server Error message will popup, reprinting the invoice is thus,
impossible.
In v13 the action warn the user to print the invoice via backend, so
this commit replace entirely the button with the message
opw-2195440
closesodoo/odoo#47049
Original-signed-off-by: pimodoo <pimodoo@users.noreply.github.com>
X-original-commit: d2a7300e8ebddf5dd812ffec75b3eda1a083aeeb
This commit allows to pass a bin_size context to False.
Before this commit it wasn't possible because it was
always overriden.
OPW-2208232
closesodoo/odoo#47491
X-original-commit: 17d53cea1043054dfa9c39b16b430539c4082a9d
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
Issue
- Have 2 languages installed
- Install Invoicing & Website
- Go in Settings
- Search "logo" (image)
- Upload a logo for your website
- Save
- Search "Default terms & conditions" (translatable field)
- Click on the translate button (e.g. EN if you are in
english)
A popup will appears saying that you should save your
changes.
- Click on Save & do not edit translation (not needed)
- Search "logo"
Image disappeared
Cause
When saving, a read is called. By default, read has
bin_size to true to avoid performances issues.
It will return the image size instead of the content
This is why the image disappeared.
Solution
As configuration is dirty, you are forced to save &
it will always read with bin_size set to true.
My solution would be to set it to false for settings.
OPW-2208232
X-original-commit: 93a7695f65baf00d1f82481d6a2a97e6c11940a8
Open every model with the chatter
Schedule an activity
Click on "Done" button and insert a feedback with an accent/quote.
Escaped sequence will appear as result.
In v13 the html feedback field which was used to store feedback
was replaced by the mail subsystem, so the value should be sent to the
message_post_with_view unescaped
opw-2209081
closesodoo/odoo#46985
X-original-commit: d66c676e6a49cbf4cfcdae014c3b5e80dd7920d2
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
When testing odoo, errors can occur an undeterministic way, wich can
lead to strange and unreproductible behaviour. This also means that the
performance can change from one execution to another, making it quite
difficult to track performance variation on a global scope.
This commit makes the result of `exists()` deterministic in terms of
order. The side effect is to keep record ids in the same order as the
original recordset, which may be useful.
closesodoo/odoo#47282
Signed-off-by: Raphael Collet (rco) <rco@openerp.com>
Co-authored-by: Raphael Collet <rco@odoo.com>
A constraint was added. That is why we had the error,
but we need the fix anyways, otherwise the tags won't be
visible in the configuration of the taxes.
Task id: 2214184
closesodoo/odoo#47440
X-original-commit: 9bac70b6a0e5eab76910c5728371310e32d9cf8a
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
PURPOSE
When previewing a slide of type 'quiz', users are tempted to answer the
questions even if they are not member of the course yet.
This commit will allow users to answer the quiz without being a member of the
course, and offer a smart redirection to join / buy based on the enroll type
of the channel.
SPECIFICATIONS
We introduce a "CourseJoinWidget" that will handle the display and the behavior
of the "join" button based on the user (public or not) and the enroll type
(public course or based on a payment).
When the user answers questions and he's not a member yet, we store the answers
temporarily in the session object.
When he comes back on the quiz page after having completed his membership, we
fill in the quiz based on his previously entered answers and clean the session.
LINKS
Task 2045571
closesodoo/odoo#41972
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
As portal user has access to the "Taking care of trees" demo course, we add
this course to the sale order that already contains the "DIY Furniture".
Since the course is "pay to access", it makes more sense.
LINKS
PR #41972
Task 2045571
PURPOSE
When previewing a slide of type 'quiz', users are tempted to answer the
questions even if they are not member of the course yet.
This commit will allow users to answer the quiz without being a member of the
course, and offer a smart redirection to join / buy based on the enroll type
of the channel.
SPECIFICATIONS
We introduce a "CourseJoinWidget" that will handle the display and the behavior
of the "join" button based on the user (public or not) and the enroll type
(public course or based on a payment).
When the user answers questions and he's not a member yet, we store the answers
temporarily in the session object.
When he comes back on the quiz page after having completed his membership, we
fill in the quiz based on his previously entered answers and clean the session.
LINKS
Task 2045571
PR #41972
Co-authored-by: Florent Lejolyn <fle@odoo.com>
Co-authored-by: Aurélien Warnon <awa@odoo.com>
This commit simply renames a template file to better reflect its purpose and
also align with its JS widget file naming. It is a preparation commit for
pending changes.
Task 2045571
PR #41972
Before this commit:
- Install some random module that can be uninstalled (so not base)
- Open the uninstall wizard for said module in two different tabs /
windows / whatever
- In one tab, confirm the module uninstall and wait for it to be
done
- As soon as the other tab is done with the uninstall, go to the
second one with the uninstall wizard still open, and proceed
with the second uninstall
- Boom, the registry crashes and completely fucks up the DB because
there's no check at all that prevents the uninstall of already
uninstalled modules.
After this commit:
- `ir.module.module.button_uninstall` will check if all the
modules being uninstalled are in the installed state
and if not a UserError will be raised, preventing a second
uninstall of the module which could potentially break the DB
Do note that this fix is LOCAL, the problem is however more or less
global, wherever there's user-actionable buttons that should only be
pressed once there's a potential for bugs / breakage if a similar fix is
not implemented locally. Perhaps a more global fix should be implemented
eventually, but it's generally less annoying for business cases since
those probably won't break the registry, see task 1859014.
opw-2213679
opw-2212594
opw-2206446
closesodoo/odoo#47450
X-original-commit: 8c1bb22ec0222dca652e0649454b986c06cb1368
Signed-off-by: Adrian Torres (adt) <adt@odoo.com>
With l10n_mx installed:
- Check in the settings that cash basis option is activated, and enabled
on a Purchase Tax (example : IVA(16%) COMPRAS)
- Create a vendor bill with this tax, validate it and
register payment.
- Create a credit note to this invoice, validate and register payment.
- Cancel the credit note
Error will occur, a record is already deleted.
This occur because the canceling action recursively find every related
move to delete, but in the process an account.full.reconcile is going to
be unlinked twice: a check on reverse the exchange rate entry will
trigger the error because the record is already deleted
opw-2199093
closesodoo/odoo#47432
X-original-commit: a230690d947be2095ad1ec7ccca170f9faa222dc
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>