Issue
- Studio
- Add an required html field
- Create new record
- Leave it empty
It is saved
Cause
The isSet function of FieldHtml widget, have a "/" in the <br> tag
and summernote empty = <p><br></p>. If you add a space, the value
becomes <p> <p>.
Solution
Remove the "/" and the spaces, check if value != <p></p> &&
<p><br></p>
OPW-2183687
closesodoo/odoo#44427
X-original-commit: c984b1b1210cea1e63f3bc66cec2120554c76c2a
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
Issue
- Install eCommerce
- Add Stripe
- Pay with invalid cart
Traceback
Cause
When I improved stripe error, I didn't checked if
an error could have no event
Solution
Check if the error has an event
OPW-2186385
closesodoo/odoo#44414
X-original-commit: 772c02743b5e6610a75e65e408c956eb6057a47d
Signed-off-by: Jason Van Malder (jvm) <jvm@odoo.com>
As pdfminer does not have a Debian package in Ubuntu Bionic, it cannot
be declared as a strong requirement.
With this commit, a warning is logged if the library is not installed.
It does not prevent to index other types of documents.
closesodoo/odoo#44327
Signed-off-by: Christophe Monniez (moc) <moc@odoo.com>
Purpose
=======
In Project, the configuration has to be done twice: in the settings of the
app and on each project.
During the onboarding, the user won't understand that a feature has to be
enabled at both places and will think that the system just doesn't work.
If the user enabled a feature, he most likely intends on using it for most
of his projects. Therefore, having to do a double configuration for each
new project is annoying.
By the way, sub-tasks is the only global feature (it can't be enabled or
disabled by project), so we are breaking it down by project to remain
consistent with the rest.
Specification
=============
1/ Enable subtasks per project
Before this commit, sub-tasks were a global feature (i.e. once enabled
they were enabled for all projects). This commit gives the ability to
enable/disable sub-tasks per project.
2/ Make project_id on planning required
3/ Change default rating status on new projects
4/ Default value for allow_subtasks
5/ Enable timesheets on existing projects
6/ Hide Total Hours if subtasks are disabled
7/ Create project in the company context.
Otherwise some records generation could use a default company which is not
the company for which we want to create a project.
8/ Default value for allow_forecast, is_fsm
9/ Change reference to timesheet product
10/ Fix tracback on industry_fsm_report.
Before this commit, there was a traceback when enabling "Worksheets"
(industry_fsm_report) after "Time and Material" (industry_fsm_sale).
11/ Convert some onchange method into computed editable stored fields
closesodoo/odoo#41218
Taskid: 2146474
Related: odoo/enterprise#6998
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
Co-authored-by: Yannick Tivisse <yti@odoo.com>
- Activate automatic invoicing after successful payment
- Go to the eCommerce with the public user
- Purchase an item
An error occurs because a `list` has no attribute `id`.
The root cause is the following line:
https://github.com/odoo/odoo/commit/3abe78087a0426ad2783942baa01e1d5fbdff2d9#diff-39d0613187d36f16c541734e80925e9dR556
We want to allow the following scenarios:
- a saleman generates an invoice for its customer but doesn't have
accounting rights
=> check on `sale.order`
- an accountant generates an invoice from a SO he can read but not
modify
=> check on `account.move`
- an invoice is generated from a purchase on the ecommerce
=> use of `sudo` in calling methods
opw-2185680
closesodoo/odoo#44400
X-original-commit: 9ef6282fe51bbd3f0ec56d7ac420d9ffe5c46331
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
Co-authored-by: alt-odoo <alt@odoo.com>
Co-authored-by: Thibault Francois <tfr@openerp.com>
Bug
===
Typo error in the name of the action.
Introduced in e2f16573d257257198b1fabb9fe5f619614fb1cf
Task 2186587
closesodoo/odoo#44333
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
Since 671a5471cd, services are deployed twice in the backend:
once by the webclient (as it is a ServiceProvider), and once by the
env (which now deploys the services to make them directly available
for each Owl component of the component tree). As a consequence,
some services perform twice some operations (e.g. the mail service
fetches twice the /mail/init_messaging route, the crash manager
service displays twice the tracebacks...).
This commit fixes the issue by making the webclient directly use
services from the env, instead of deploying them a second time.
Part of 2183810
closesodoo/odoo#44301
Signed-off-by: Lucas Perais (lpe) <lpe@odoo.com>
PURPOSE
Add a "live session" mode for survey that allows the host to interact with its
audience. He controls the pace of the survey and the audience answers questions
one at a time.
Results for each question can be displayed by the host to adapt his speech in
real time.
A gamification component even allows to give points to the attendees, based on
the quickness of their answer, and create ranking to keep everyone's attention.
SPECIFICATIONS
This whole feature is deeply integrated within survey. It adds a layer of
"survey session" on top if it that gathers attendees and answers during
the lifespan of the session.
In addition, we fixed/pimped several survey features:
- we now prevent 'enter' submit when survey is done to avoid a raise.
- we made a few small improvements on the frontend views
- we now correctly remove the timer and initialize the result
widget when the user presses 'enter' on the last page / question.
See sub-commits for details.
Task 1972640
closesodoo/odoo#43568
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
To make the survey even more beautiful than it was, this commit:
- set 'or press Enter' in black instead of primary color.
- align content of inputs (text, number, date, datetime) to the left when
relevant (readonly mode).
- Add 'Powered by Odoo' on all 'no footer' survey screens.
PR #43568
Task 1972640
This commit improves the new survey "quiz" demo data by adding some questions to fill in the email
and nickname of the user with the associated user inputs.
PR #43568
Task 1972640
PURPOSE
Add a "live session" mode for survey that allows the host to interact with its
audience.
He controls the pace of the survey and the audience answers questions one at a
time.
Results for each question can be displayed by the host to adapt his speech in
real time.
A gamification component even allows to give points to the attendees, based on
the quickness of their answer, and create ranking to keep everyone's attention.
SPECIFICATIONS
This whole feature is deeply integrated with survey.
It adds a layer of "survey session" on top if it that gathers attendees and
answers during the lifespan of the session.
The attendee identity is filled in by a special question that is marked as
"Save as user nickname".
If the host has not configured that question or if the user doesn't answer,
they are marked as "Anonymous" in the rankings.
The answer score computation is also altered during the session to take the
speed of the answer into account.
To ease the access to the survey to attendees, we have introduced two new
routes in the survey main controller:
- '/s/123456'
That uses the 6 first characters of the token to give quick access to the
survey and allow typing the URL manually somewhat conveniently.
- '/s' that renders a view that asks the attendee to enter the survey 'code',
which then redirects to the previous route.
This commit also fixes a few bugs:
- A bugged use case with the "enter key" listener.
When the survey is done, we display a "result template" that shows the user
his score and allows him to retry if possible.
When this template is displayed, we don't want to listen to the "enter" key
that allows to submit the survey form.
- We now correctly remove the timer and initialize the result
widget when the user presses 'enter' on the last page / question.
SURVEY SESSION FLOW
HOST point of view:
- On the Survey Form, the host configures:
- "Reward quick answers" that gives more points to attendees if they answer
quickly
- Question Time Limit, on each question, that defines the time limit for
that specific question, allowing to have different (or no) timer for each
question.
- From the Survey Form, the host can start a "live session"
Only one session per survey can be running at a time.
- When he starts the session, the session_state is marked as 'ready', meaning
all attendees landing on the survey page will be part of the session.
- The host will land on a page showing the current number of attendees as well
as the link for the attendees to join that session.
- The host starts the session, activating the first question of this session.
We keep an active reference to the "current_question_id" and use the bus to
trigger an event that will refresh the survey page for all attendees, showing
them the question and allowing them to answer.
- The host gets a "question management screen", from which he can:
- See the current question text & suggested answers
- See the current question timer
- See the number of answers received for the question
- Display the answers of the question (same view as the survey "results"
page, but only for the question)
- Display the ranking of attendees (if "competitive mode" is enabled)
- The host controls the pace of the survey by moving to the next question until
it's the last one of the survey, then ends the current session.
When the session is closed, we mark the answers of the attendees as "done".
- The host lands on a screen where he sees the survey results and the ranking
of all attendees.
ATTENDEE point of view:
- He reaches the survey when a session and open, and gets a screen asking him
to wait until the host decides to start the session.
- When the sessions starts, he's automatically redirected to the first question
(see above).
- If the session is already started when he reaches the link, he lands on the
current question (and NOT on the first one)
- If the host has configured a time limit, the attendee sees the countdown
while he's answering.
- When the attendee answers the question, the screen tells him the answer is
registered and he has to wait for the host to go to the next question, which
will happen automatically.
- If the timer reaches 0 and he has not submitted his answer, it's too late and
he waits for the next one.
- It continues like that until the end of the session.
- At the end of the session, the attendee gets a screen with his global results
(same as a regular scored survey).
PR #43568
Task 1972640
Co-authored-by: David Beguin <dbe@odoo.com>
This commit splits the statistics template into a "canvas" part, a "header" part and a "content"
part.
This is a preliminary work for the "survey live mode" task that will need to use the same
statistics content, but use a different canvas and header for it.
PR #43568
Task 1972640
This commit moves the import of bus JS files in the frontend assets from
website_livechat to the bus module itself.
This is done in preparation of the "survey live mode" feature that will also
require the bus files in the frontend context.
PR #43568
Task 1972640
Currently, 'Exception' ativity type is visible in dropdown list of schedule
activity. It is used by the system to generate warning activities on records.
It is not meant to be used by the user when scheduling activities manually.
By, giving active=false on mail.mail_activity_data_warning, we can hide
'Exception' activity type in dropdown list for user but available for the
system to generate warning.
task-2168569
closesodoo/odoo#43549
Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
As `_do_unreserve` was rewrited, the `_decrease_reserved_quanity` method
isn't useful since its purpose was to avoid to unlink all stock moves
and it is what `_do_unreserve` cares about.
See 2e41338f42e2ef9f2ac2b3e73b274c4af242b28a
closesodoo/odoo#42582
Related: odoo/enterprise#7488
Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
Before this commit, pickings of picking type with `show_reserved` on
False don't show pre-fill moves -what is expected- even if those
pre-fill moves have quantity done -what is less wanted and can happened,
with stock_barcode for example.
With this commit, we continue to hide pre-fill moves for this kind of
picking, except for pre-fill moves who have a quantity done.
When a user unreserve a picking or a move it will
drop all the linked move lines. However it could
happens that some move line already have a done quantity
and the user won't lose this information.
This commit filters move lines in order to only drop
the move line without quantity done and remove the
reserved quantity on others.
Joint work with William Henrotin <whe@odoo.com>
task-2069646
We check the selected pickings are compatible to be attached to an
existing batch transfer.
We add the possibility to create on the fly a batch picking to attach
the selected pickings.
task-2069646
Only keep buttons in the header to be able to disable them with an xpath
without breaking every attrs elsewhere in the form.
Why? We want to disable these header buttons when opening a picking from
the bach transfer (by clicking on a line on a o2m list).
task-2069646
Purpose of this commit is pricelist/pricelist item can not
created/modifided linking records of diffrent companies together
closesodoo/odoo#44391
Task: 2090409
X-original-commit: 9b62813cddb2726003b4b989c32185400059dfa1
Signed-off-by: Damien Bouvy (dbo) <dbo@odoo.com>
Fix the access error you could get when filtering on ratings when not logged
in or when the user has no rights to access ratings.
How to reproduce: filter on channel review ratings in eLearning frontend
when being anonymous le portal.
As rating is a technical model, we have to first retrieve messages linked
to that rating value and afterwards return a new domain used to build
the final search.
Task ID : 2167776
PR : #42847closesodoo/odoo#44380
X-original-commit: 7a241e9c21046dababc2744dd94b0c47e2d8a931
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
purpose of this commit is to make import template compatible with v13
task-2146510
closes-#42279
closesodoo/odoo#44375
X-original-commit: 37aadf1227531838ada7dc3810cf463379736e96
Signed-off-by: Damien Bouvy (dbo) <dbo@odoo.com>
As the keywords are added in the DOM and its' table is also toggled at
the same time, we've to put the toggling of the table after the keywords
pushed in to the DOM.
task-2063206
closesodoo/odoo#44374
X-original-commit: 09c183ab501f834666e9b292ddb9839e2f3ecc1c
Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
Custom model improvements needed for a Studio task:
- allow ordering custom models by something else than their id
- allow a basic `group_expand` functionality for custom models
allowing 'stage-like' behaviours (e.g. a `read_group` on `x_stage_id`
will return all the stages, including empty ones)
- small fixes detected during development:
- SQL identifiers escaping
- correct reset of the registry after `SingleTransactionCase` and `SavepointCase` tests
- correct removal of a custom class from the registry
Part of Task 2091654
Related to odoo/enterprise#7326closesodoo/odoo#43981
Signed-off-by: Damien Bouvy (dbo) <dbo@odoo.com>
as per the task requirements pdf coupon design changed
same as email design.
Task-ID: 2027296
Closes#34620
Signed-off-by: Damien Bouvy (dbo) <dbo@odoo.com>
Fix the layout of logo to the printed coupon.
The traceability of the coupons is not clear. for Ex. coupon is send or not?
should I resend? so updated the stages of the coupon
Now the stages will be like
-pending(previously reserved) -- hidden by default
-Valid
-Sent : updated when mail is sent to customer
-used
-expired
-cancelled : hidden by default(added button to cancel the new coupon)
Cron added to expire coupon automatically.
PS: model sale.coupon do not inherit the thread so instead of message_post
change the state 'sent' from mail_compose_message.
Task-ID: 2027296
Closes#34620
Allow a naive `group_expand` for manual fields where having the
attribute set to True causes the ORM to include all records from the
relation model of the m2o field in the read_group.
This is particularly useful for custom m2o fields which represent
stages - a grouped list view or a kanban view should include all
possible stage, not only the currently used values.
Co-Authored-By: Raphaël Collet <rco@odoo.com>
Up until now, it was impossible to specify the default ordering
on models created manually.
This could somewhat be bypassed by specifying the ordering of records on
views themselves, but this has one main drawback: when using a
relational field that targets a custom model as a group-by key, the
ordering defaulted to the id of the custom record. For example, if I
create a custom field on partners that points to a custom model
'x_grade' on which an 'x_sequence' field exists, I could order my grade
in their own list view according to their sequence, but any read on
partners grouped by this 'x_grade_id' field would order the returned
groups by id while I would prefer to have them ordered according to the
'x_sequence' field.
This commit introduces a new field 'default_order' on the ir.model model
that can store this default ordering clause (as an SQL expression).
Co-Authored-By: Raphaël Collet <rco@odoo.com>
In some cases, the registry might be updated during a test step
(creating custom models/fields, for example). In those cases, there
should be an explicit call to `reset_changes` on the registry to make
sure that the next test class starts with a registry that is consistent
with the database state.
Co-Authored-By: Raphaël Collet <rco@odoo.com>
When removing a custom model, it remained listed in the base classes
(normally `base` and also possibly a list of mixins; e.g. `mail.thread`
or `mail.activity.mixin`) list of inheriting classes, possibly causing a
crash when trying to reload the registry.
This commit ensures that any custom model is removed from its parent
class `_inherit_children` set; it will be re-added automatically during
the call to `_build_model` if the custom model still exists.
Co-Authored-By: Raphaël Collet <rco@odoo.com>
When the db reflects the python models at startup, a query is generated
to update various `ir` models (models, fields, etc.). This query did not
properly escape identifiers, preventing the use of the 'order' field
name on ir.model because it is a reserved keyword in SQL and wasn't
escaped.
This commit introduces proper escaping for these reflection queries.
Co-Authored-By: Raphaël Collet <rco@odoo.com>
some layout fixed and confusing string of promo_applicability option is
changed to 'Send a Coupon' form 'Apply On Next Order'.
Task-ID: 2027296
Closes#34620
Open POS, make an order, on the payment screen select email, select a
customer, pay and validate.
The receipt will be not an attachment, but a code image. The side effect
is the visualization dependant on the viewer (email client, webmail,
etc.)
opw-2179303
closesodoo/odoo#44354
X-original-commit: c4ea4c045b97379b3c2f9e4904fb659d232bf41a
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
Fill bank account information for the current company
Create an Invoice by hand, under "Other info" tab the Bank Account
section is filled.
Now create a Sale order, confirm it and create the invoice.
The invoice created from the sale order is missing the Bank Account
section, this in turn disable the QR code generation. Adding th
erequired information when creating the invoice from the sale
order fix the issue
opw-2181580
closesodoo/odoo#44353
X-original-commit: bea0ee1f484bd25fab1ed4170d88629c4fb2709c
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
Event holds a description field that is not displayed nor editable in
frontend. IN this commit we display it in backend form view, allowing
to edit it.
With the upcoming facebook synchronization it allows to directly populate
it with facebook information. See Enterprise PR odoo/enterprise#8058 .
Task ID 1999230
Closes PR #44359
Related: odoo/enterprise#8058
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
In case of font-awesome icon when the browser is being zoomed, we can
get a decimal font-size.
There is a system that transform font-awesome in image links so they are
readable in any email client (supporting image) but it did not take into
account decimal font-size.
With this changeset, we only send a integer font size: we do not try to
get the original value because styling is relative on elements, a 90%
zoom ratio could lead to a 98% font-awesome icon ratio.
Also improve edition of font-awesome icon edition after first save by
reverting the transformation to image on edit. Thanks to that, the
original size will also be reinstated and will not depend on zoom on
previous save.
opw-2156069
closes#43949closesodoo/odoo#44033
X-original-commit: fe72bf01b67ea20ddb74a5b05464c63cc77090ef
Signed-off-by: Nicolas Lempereur (nle) <nle@odoo.com>
-When 'Product Description' on several line in sale.order.line.
In that case, In 'Sale Order' report description print as it is but
In 'Invoice' report lines are all fitted into one single line.
-By this commit solved this issue.
task- 2127652
closes- odoo#42006
closesodoo/odoo#42006
Signed-off-by: Damien Bouvy (dbo) <dbo@odoo.com>
As well as background, suggested answers images are not available for public
users as they don't have access rights on that model. This commit adds a route
called by survey template that render the suggested answers image in sudo mode.
closesodoo/odoo#44351
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>