PURPOSE
Overall improve profile related parts of eLearning user experience.
SPECIFICATIONS
Improve display and the text about the karma gain/rank
- remove the double quotes around the rank
- change the text after the xp gained in rank list
- rename Monthly / Weekly gains to this month / this week
Improve the margin between questions and questions categories
- set same margin between questions in different categories
LINKS
Task ID-2241513
PR #55698
PURPOSE
Change the display of the button to open the composer from btn-primary to
btn-link.
SPECIFICATIONS
In order to ease integration of popup composer rating widget, let us allow
to customize classes given to the button triggering it. In slides we want
specifically it to be a link, not a button.
LINKS
Task ID-2241513
PR #55698
Steps to reproduce the bug:
- Let's consider a survey S
- Set the scoring option of S to Scoring without answers at the end
- print S
Bug:
A 403 error was raised.
opw:2307495
closesodoo/odoo#55556
X-original-commit: bb627bf8c182905adcf2bf9d9820c6e91dd44d26
Signed-off-by: Simon Goffin (sig) <sig@openerp.com>
Steps to reproduce:
- Let's consider a sale tax T of 0% with Tax group Tax 0%
- Create an customer invoice I with one line L of 100€
- Set T on L
- Print the invoice without payment
Bug:
The tax T was displayed as a group with "Taxes on 100€" instead
of Tax 0%.
opw:2268926
closesodoo/odoo#55731
X-original-commit: 3e0defe37ef8d2081e72290d701738e1ab68d3c6
Signed-off-by: Simon Goffin (sig) <sig@openerp.com>
This is a followup of commit bc2bb5e03c2b32d4ee1b0597ea5889c17d2b0e0e
When a module is updated, a constraint application may (temporarily)
fail because the existing data does not respect the constraint, this is
OK and can be fixed through hooks/migration scripts and was handled by
the aforementioned commit.
However when updating multiple modules, it is possible that an
inheriting module will try to re-apply the failed constraint and
succeed, if that is the case, when processing the `post_constraints` an
already-existing constraint will be applied and raise an error.
To fix this, a check is made before trying to apply the constraint, to
verify that it is not already in _constraint_queue, if it is not, then
we may attempt to apply it, if it is in the queue, then we may safely
ignore it as it will be applied further down the registry cycle.
closesodoo/odoo#55725
X-original-commit: 5225b9ce5178302af05b63029fb184e27b781815
Signed-off-by: Adrian Torres (adt) <adt@odoo.com>
Case:
- create a MO for 3 units
- produce only one but with more than a third of the components
- the flexible consumption wizard is triggered, accept and make the
backorder.
- Mark as done the backorder, the immediate production wizard is
triggered, accept it.
-> the flexible wizard is triggered again as the components quantity do
not respect the BoM. In this specific case, we want to consume all the
remaining component so we would like to avoid the flexible warning.
Task : 2278147
Commit 47e40e7f6a set a default value for
the stock moves initial demand (default_product_uom_qty). The issue is
the stock_move_line models also have a product_uom_qty field. This field
on the line is also st to 1 in the default get. Which is non desired side
effect.
This commit adds another default_product_uom_qty equals to 0 for the
stock move lines.
Task : 2278147
Starting a workorder should update the scheduled date only if the production
is started sooner than expected. In this case we want to clear the
calendar for the other production. If the production is started later
than expected, updating the calendar has no effect. We leave the
scheduled date unchanged to keep the information
Task : 2278147
This commit:
- Show 'Plan' button even in to_close state
- Move UoM column after quantity done one (like in stock)
- Hide lot_producing field in state draft
- Hide production locations if multi location groups is not set
Task : 2278147
With this commit, the move raw refresher onchange is bypassed in case of
empty BoM. As the manufacturing user can adds some components on the fly
to create a non manufactured product, changing the quantity to produce
or the unit of measur will erase all the move raw and recreate them from
the BoM lines. As no boms are set, the components are just deleted.
Task : 2278147
The _plan_workorder function is callable for the production order list
view. Calling it on production without workorder make no sense and can
even crash.
This commit bypass it in those case
Task : 2278147
Updating the quantity to produce on a production order will recompute
the expected production duration. This can be counter productive on
prototyping production when no BoM are given. The default expected batch
duration is set to 60 minutes. Setting the actual production time then
updating the quantity to produce will naively change the duration to
60 x the new quantity.
This commit compute the duration pro rata in case of 'no BoM' production
and recompute everything in case of BoM production.
Task : 2278147
Before this commit, only the moves raw were copied on production
duplication. As the finished move is created normally in an onchange,
this means a production order duplicated have not any move finished.
Task : 2278147
Changing the Bom on a production order will erase all the raw moves to
recreate the new ones. This commit make sure the finished product are
erased as well.
Before this commit, if the product was changed with the BoM. The first
finished product became a byproduct for the second one.
Task : 2278147
On a production, additional are supposed to be linked to the current
lot/serial number and not to the total production like the raw component
on the BoM.
This commit do not split stock move for those product anymore at the
backorder creation.
Task : 2278147
In a scenario parent mo <-> child mo, delaying the production start on
the child mo will delay the parent start but not the parent's workorders
This commit will replan the workorders each time a planned production is
delayed.
Task : 2278147
This commit introduce the immediate production mechanism. As it works on
stock.picking, marking a (some) production(s) as done without consuming
anything will pop a wizard allowing the user to transfer all the reserve
component quantities as done quantities.
Task : 2278147
Problem:
When you try to create an invoice from a sale order that contains
section and post paid service product.
You set a date_invoice_timesheet in the wizard.
You got a traceback excpected singleton product.product()
This is cause by the filtering of so line with
sol.product_id._is_delivered_timesheet()
when the sale order line has no product for a section or a note
Solution:
Check there is a product on the line first
closesodoo/odoo#55353
X-original-commit: b49e64d3b118c938154eeeeb85c5fd6d72561a82
Signed-off-by: Olivier Dony (odo) <odo@openerp.com>
Signed-off-by: Thibault Francois <tfr-odoo@users.noreply.github.com>
This method will be change to generic and to be use for both
l10n_ar_edi and l10n_ar_reports modules
fw-port of 50882
closesodoo/odoo#55687
Related: odoo/enterprise#12329
Signed-off-by: Josse Colpaert <jco@openerp.com>
When an user wants to lock his fiscal year lock date.
The system checks whether all the bank statement lines are reconciled.
However, the date must also be added to the search domain to receive
only the bank statement lines that are included in the lock date.
Task ID: 2297407
closesodoo/odoo#55672
X-original-commit: d232ecacda28614f36dd655a3f000290c6d3a91c
Signed-off-by: Cedric Snauwaert (csn) <csn@openerp.com>
Order move for hash: In the method write, we sort the recordset following this rule: by date, by ref and by id.
This rule is used because we need to be consistent with the method _compute_name.
If we don't filter moves like that, we could possibly have a problem.
If you have several moves and you post them at the same moment with the action "Post entries", the hash sequence
could be in another order than the name sequence.
For example:
Move_20 (29/07/2020) - Hash_2
Move_21 (02/07/2020) - Hash_1
About security check, if the hash is activated, the user cannot reorder by date with resequence
because we don't want that the name sequence have not the same order than hash sequence.
Task ID: 2297407
closesodoo/odoo#55669
X-original-commit: b3ae96dc52178a3b13dda845244fe34268aed8a0
Signed-off-by: Cedric Snauwaert (csn) <csn@openerp.com>
before this commit, when change view from graph view to pivot view or any other
view and come back to graph view, Measures button disappear, it's only
appearing if we refresh the page.
after this commit, restore previous view state when switching back to graph
view, this was because measures button is rendered in fragment and when
switching between views, as graph view element was destroyed and re-rendered
so measures button will be mounted in fragment as update method of
ComponentWrapper will render it from previous mountArgs, so to avoid this issue
push measures element in DOM.
task-2250051
closesodoo/odoo#55666
X-original-commit: 40c709fb0abe7721d1650af9bd1d17dc8453895a
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
Co-authored-by: Julien Mougenot <jum@odoo.com>
Co-authored-by: Mohammed Shekha <msh@odoo.com>
The latam docuemnts used for document type an document number are not
showed correctly in the view, they displaying to close side by side and
the related labels are not show.
After this PR this has been fixed and now we have the labels and the
proper separation of the fields in the invoice form view.
closesodoo/odoo#55648
Signed-off-by: Josse Colpaert <jco@openerp.com>
Useful information to identify where a translation comes from
Remove base.group_no_one as the view is already in debug only and
technical
closesodoo/odoo#55649
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
Change references of deprecated method in demo data to avoid WARNING message in
odoo log::
... WARNING ar py.warnings: ... DeprecationWarning: RedirectWarning
method 'post()' is a deprecated alias to 'action_post()' or _post()
DeprecationWarning
closesodoo/odoo#55647
Signed-off-by: Josse Colpaert <jco@openerp.com>
PURPOSE
Improve user experience by improving copy writing of tour steps and first
encountered screens.
SPECIFIFCATIONS
Improve Orders to upsell empty list help to help users understanding how
to use it.
LINKS
Task ID-2316699
PR #55604
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
PURPOSE
Improve user experience by improving copy writing of tour steps and first
encountered screens.
SPECIFIFCATIONS
Improve Pipeline empty list help to be more catchy and help users doing their
first opportunity related steps.
Improve tour copy writing.
LINKS
Task ID-2316699
PR #55604
When users are archived / deleted, they are still listed under the members
of a channel. This means that those users could potentially still receive
internal communications.
This commit fixes the issue by removing archived / deleted users from the
members of the private channels they were part of. However, they are not
automatically removed from the public channels.
Public channels are kepts as in most common cases public channels are
mailing list (e-mail based) and so user's partner should always receive
updates from public channels until they manually un-subscribe themselves.
Task ID-2276681
closesodoo/odoo#55496
X-original-commit: 1a3dc58f3d987054c643556dc4b7c3dbcd3d074c
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
Add the possibility to download a test FEC file.
Set the fiscal year lock date when the user ask an official FEC file.
Add some basic checks.
Task ID: 2297407
closesodoo/odoo#55311
Signed-off-by: Cedric Snauwaert (csn) <csn@openerp.com>
Change ValidationError to RedirectWarning, RedirectWarning is usefull to redirect user to
the problem. For the lock date, we can redirect user to unposted entries or unreconciled bank statement lines.
Task ID: 2297407
Python 3 before 3.8 has a bug that causes the email.policy classes to
incorrectly fold and RFC2047-encode "identification fields" in email
messages. This mainly applies to Message-Id, References, and In-Reply-To
fields.
We are impacted by this bug since odoo/odoo#35929 where we switched to
using the "modern" email.message API.
RFC2047 section 5 clearly states that those headers/fields are not to be
encoded, and that would violate RFC5322.
Further, such a folded Message-Id is considered non-RFC-conformant by
popular MTAs (GMail, Outlook), which will then generate *another*
Message-Id field, causing the original threading information to be lost.
Replies to such a modified message will reference the new, unknown
Message-Id, and won't be attached to the original thread.
The solution we adopt here is to monkey-patch the SMTP policies to
special-case those identification fields and deactivate the automatic
folding, until the bug is properly and fully fixed in the standard lib.
Some considerations taken into account for this patch:
- `email.policy.SMTP` is being monkey-patched globally to make sure we
fix all possible places where Messages are being encoded/folded
- the fix is **not** made version-specific, considering that even in Python
3.8 the official bugfix only applies to Message-Id, but still fails to
protect other identification fields, like *References* and
*In-Reply-To*. The author specifically noted that shortcoming [2].
The fix wouldn't break anything on Python 3.8 anyway.
- the `noFoldPolicy` trick for preventing folding is done with no max
line length at all. RFC5322, section 2.1.1 states [3] that the maximum
length is 998 due to legacy implementations, but there is no provision
to wrap identification fields that are longer than that. Wrapping at
998 chars would corrupt the header anyway. We'll just count on the
fact that we don't usually need 1k+ chars in those headers.
The invalid folding/encoding in action on Python 3.6 (in Python 3.8 only
the second header gets folded):
```py
>>> msg = email.message.EmailMessage(policy=email.policy.SMTP)
>>> msg['Message-Id'] = '<929227342217024.1596730490.324691772460938-example-30661-some.reference@test-123.example.com>'
>>> msg['In-Reply-To'] = '<92922734221723.1596730568.324691772460444-another-30661-parent.reference@test-123.example.com>'
>>> print(msg.as_string())
Message-Id: =?utf-8?q?=3C929227342217024=2E1596730490=2E324691772460938-exam?=
=?utf-8?q?ple-30661-some=2Ereference=40test-123=2Eexample=2Ecom=3E?=
In-Reply-To: =?utf-8?q?=3C92922734221723=2E1596730568=2E324691772460444-anot?=
=?utf-8?q?her-30661-parent=2Ereference=40test-123=2Eexample=2Ecom=3E?=
```
and the expected result after the fix:
```py
>>> msg = email.message.EmailMessage(policy=email.policy.SMTP)
>>> msg['Message-Id'] = '<929227342217024.1596730490.324691772460938-example-30661-some.reference@test-123.example.com>'
>>> msg['In-Reply-To'] = '<92922734221723.1596730568.324691772460444-another-30661-parent.reference@test-123.example.com>'
>>> print(msg.as_string())
Message-Id: <929227342217024.1596730490.324691772460938-example-30661-some.reference@test-123.example.com>
In-Reply-To: <92922734221723.1596730568.324691772460444-another-30661-parent.reference@test-123.example.com>
```
[1] bpo-35805: https://bugs.python.org/issue35805
[2] https://github.com/python/cpython/pull/13397#issuecomment-493618544
[3] https://tools.ietf.org/html/rfc5322#section-2.1.1closesodoo/odoo#55656
X-original-commit: 02b78770147e2eda65a76d29c6f2fc3278581b22
Signed-off-by: Olivier Dony (odo) <odo@openerp.com>
Before this commit, the "fields" object given to the control panel was
altered by the view (e.g. dashboard populates it with its aggregates).
As a result the control panel and its subcomponents had an altered
object with more or less fields than expected.
Now, the initial "fields" object is given to avoid such problems.
Task 2312074
closesodoo/odoo#55640
X-original-commit: 472b314614dc3dd9db880f4cb60c2eda89cce6b4
Related: odoo/enterprise#12310
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>