Commit Graph
134415 Commits
Author SHA1 Message Date
Romain Estievenart c4755151bd [FIX] web: the signature content is drop when the browser is resized
Step to reproduce:

1. Go to sign
2. Click on the button 'Share' inside a template.
3. Click on Sign now'
4. Click on a field signature
5. Draw a signature
6. Resize the browser

Before this commit the code of the widget drops the content when a browser is triggering a resize.

But with a mobile devices (like Android phone). A resize event is trigger when the keyboard is displayed.

=> The resize drop redraw all the widget content when the user fill the displayed input.

Task ID: 2155601

X-original-commit: a6af5a12efb0da9d8ee7526e6b4738c9595f9816
2020-03-06 15:34:21 +00:00
Romain Estievenart 55cecf91b7 [FIX] web: the pager_counter has a bad display on mobile / tablet (responsiveness)
Task ID: 2155601

X-original-commit: 964aa6838803e5631fe40417a225dec521097cac
2020-03-06 15:34:20 +00:00
Romain Estievenart 4bf35b7cd6 [FIX] web: Don't focus the name on web.name_and_signature for mobile device
Task ID: 2155601

focus

X-original-commit: 681b5a5a834598d650da9611ab19cfff1a1428e9
2020-03-06 15:34:20 +00:00
Romain Estievenart a6344a1a78 [IMP] web: allow options on mobile inside the xml inside an ir_act_window
Now if you use the data attribute 'data-mobile' inside a type="action", we
can now send some specifics options on the dialogs.

Here a sample to open an action dialog in fullscreen on mobile:

Here the original action:

```
<button name="%(sign.action_sign_send_request)d" type="action" class="btn btn-primary btn-sm mt8 o_kanban_sign_send_request" context="{'sign_directly_without_mail': 0}">Send</button>
```

Now if you define the data-attribute data-mobile to allow fullscreen like:

```
<button name="%(sign.action_sign_send_request)d" type="action" class="btn btn-primary btn-sm mt8 o_kanban_sign_send_request" context="{'sign_directly_without_mail': 0}" data-mobile='{"fullscreen": true}'>Send</button>
```

Task ID: 2155601

X-original-commit: 66f99636d2d8bd850e33ed6c8f272eb662d835f7
2020-03-06 15:34:19 +00:00
Arnaud Baes bf242977e2 [FIX] survey: allow mail templates updates.
Otherwise, users will ending up with broken templates if
they update from v12

closes odoo/odoo#47120

X-original-commit: 3f84cae060c62839e8d493c0b90539363469f5f3
Signed-off-by: Toufik Benjaa (tbe) <tbe@odoo.com>
2020-03-06 16:36:33 +00:00
David Monjoie 24d69567e5 [FIX] web_editor: fix pictograms in rte
The content of the "wysiwyg.fonts" module is duplicated in
"web_editor.base". This is a mistake that was introduced with the
revert of the saas-12.2 editor.

This duplication is the cause of github issue https://github.com/odoo/odoo/issues/44689.

This commit fixes the issue by requiring the correct module in rte.

closes odoo/odoo#46865

X-original-commit: 8bc3fd2c41c1d0fc1fa22e0849a7204b6712d7b2
Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
2020-03-04 11:57:25 +00:00
Martin Trigaux a14fd21c60 [FIX] website_slides: completly leave a channel
When leaving a channel, remove the earned karma in addition of the
slides.
This way, the user goes back in the same state as before completing
the course.
Add a message to clarify to the user the impact of leaving a course.
Add a test to answer questions

opw-2199066

closes odoo/odoo#47166

X-original-commit: a5e66d681ccd760c0af7bd0b179b5e42c76577ba
Signed-off-by: Martin Trigaux (mat) <mat@odoo.com>
2020-03-09 09:10:29 +00:00
Goffin Simon 2406a23259 [FIX] account: Source document not saved from Auto-complete
Steps to reproduce the bug:

- Let's consider a confirmed PO with one line L
- Create an invoice I and choose PO in the Auto-complete field
- The line L has been added and the Source Document has been filled with PO
thanks to the onchange function '_onchange_purchase_auto_complet'
- Save

Bug:

The field Source Domcument was not saved because the field is readonly

opw:2209893

closes odoo/odoo#47158

X-original-commit: 9fc3a4a6a16a205974d109c22e91b9c2cd250077
Signed-off-by: Simon Goffin (sig) <sig@openerp.com>
2020-03-09 08:41:26 +00:00
Jeremy Kersten 614c9baae4 [REF] website: refactor reset_password tour
Previous implementation crashes randomly in chrome headless due to timeout.
Avoid to do web action, while we just want to check reset_password feature.

+ add one test that reset password on partner from website 2 to check that
link match the domauin from website 2.

closes odoo/odoo#47136

X-original-commit: d8019f25a5cd6ed611295e9b93111402f4cad04a
Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
2020-03-06 21:39:14 +00:00
Nicolas MartinelliandArnold Moyaux 121c73246d [FIX] stock: change of scheduled date
- Install Inventory, Purchase
- General Settings/tick Multi-step routes
- In Warehouses/YourCompany
  Incoming Shipments: Receive goods in input, then quality and then
  stock (3 steps)
- Create a PO and add the same products on 2 lines. One has a scheduled
  date in the future
- Go to transfers, where "Picking List" or "Procurement Group"
  correspond to your PO
  => the 3 scheduled_date correspond to Datetime.now()
- Validate the first picking (WH/IN)

The scheduled_date (resp date_expected) in the remaining pickings WH/INT
(resp. stock moves) are changed to the past.

This is due to the fact that both moves are merged in subsequent
pickings. The cleanest solution would be to avoid the merge in case the
expected dates are different. Although this makes sense, that also
implies a change of behavior.

Therefore, we avoid such situation by preventing the propagation of an
expected date in the past, which does not make much sense when
propagating.

opw-2171509

closes odoo/odoo#47155

X-original-commit: c7b2341b35aabe394a34e14c48a913a8595737fc
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
Co-authored-by: Arnold Moyaux <arm@odoo.com>
2020-03-09 08:33:58 +00:00
Rémi Rahir 7484791497 [FIX] iap: Commit creation on dedicated cursor
The generic IAP flows forces us to commit the creation of a new record
to prevent the loss of his token once the system contacts iap.odoo.com.
Unfortunately, this operation can drastically alter any business flow if
it's not executed at the very begining or end of the flow.
Furthermore, it can be difficult to exactly pinpoint if this will affect
a flow (for instance, the point of sale is affected by iap because of
the module 'stock_sms' while the former doesn't depend on the later).

To avoid those issues, we isolate the account creation on a dedicated
cursor and load the values of the created record on the current cache.

closes odoo/odoo#47026

X-original-commit: 5307f47d975c3b3ebd87c7f7e2248802a1aa5be7
Signed-off-by: Rémi Rahir (rar) <rar@odoo.com>
2020-03-05 16:47:34 +00:00
Rémy Voet (ryv) c6e52e9037 [IMP] stock_landed_costs(_mrp): allow to choose mrp production in landed costs
When we create a landed cost, we can now apply it on a
manufacturing order instead of a picking. Also, change
some Float fields in Monetary ones and add the currency_id
field in views.

task-2123752

closes odoo/odoo#44109

Related: odoo/upgrade#822
Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
2020-03-04 16:07:47 +00:00
Rémy Voet (ryv) 5e115743d2 [IMP] stock_landed_costs: add split method on product
On the product form, when "Is a Landed Cost" is checked,
show a "Split Method" selection field. When creating a
Landed cost with this product, automatically
set the right split method on the line.

This behavior was removed by 24bca8fd4a

task-2123752
2020-03-04 16:07:47 +00:00
Rémy Voet (ryv) 7c55c20fce [IMP] stock_account: add button to create manual stock valuation layers
Add a way to create a munual stock valuation layer, create
a stock valuation layers implies :
- Change the stardard price with the new valuation by product unit in case of AVCO.
- Create a manual stock valuation layer with the added value.
- Update the remaining value of current valuation layer.
- If the Inventory Valuation of the product category is automated, create
related account move.

task-2123752
2020-03-04 16:07:40 +00:00
Rémy Voet (ryv) 8093b658cf [REF] stock_account: modify _change_standard_price to be batchable
The private method _change_standard_price was incorrect in batch
and didn't contain a ensure_one check.
Fix to be batched and used this new version in the write method
of product.product model.

task-2123752
2020-03-04 15:44:53 +00:00
Rémy Voet (ryv) aaa3ead686 [REF] stock_account: merge/clean views of stock.valuation.layer
The views of stock.valuation.layer model
were in the wrong file,
move it, and merge duplicate search views. Also
remove the unused action 'action_stock_inventory_valuation'.

task-2123752
2020-03-04 15:44:53 +00:00
Rémy Voet (ryv) c4d71d7d24 [REM] stock_account: clean import/condition/dead-code
For the stock_account module:
- Remove unused import
- Remove deadcode, unused _anglo_saxon_sale_move_lines method
and useless 'continue' keyword
- Fix duplicate name test (test_average_perpetual_8 defines twice)
- Make comments flake8 compliant

task-2123752
2020-03-04 15:44:53 +00:00
Christophe Monniez bf3f67be28 [IMP] web: add a light mode to clickEverywhere test
The test clickEverywhere may last a very long time when all modules are
installed. For that reason, it's not a standard test and we run it at
night.

Unfortunately, it may happen that an App menu breaks and that this
failure is only spotted the next morning.

With this commit, a light mode is added to the clickEverywhere test. In
this mode, only the app menus are tested.
Also, two python tests are added that use this mode and are launched as
standard tests.

closes odoo/odoo#46934

Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
2020-03-05 08:06:02 +00:00
jvm-odoo 1a7e0fb01b [FIX] mass_mailing: remove inactive lists from mass mailing
Issue

	- Install Mass Mailing
	- Create 2 mailing list (x & y) with differents
	  contacts
	- Create a mass mailing with x & y, send it

	Ok, sent to everyome

	- Archive mailing list y
	- Duplicate the last mass mailing, send it

	Not ok, sent to y contacts too

	When a list is archived, I can't manually
	remove it from the mass mailing (it disappears)

Cause

	When archiving a list, it still remains in
	contact_list_ids

Solution

	Prevent archiving a mailing list if any mass mailing
	using it exist with state != 'done'

	Re-evaluate the domain field at copy

OPW-2202111

closes odoo/odoo#47094

X-original-commit: 4346f1da7a26a11f49c8e76f6ed8d6d6078a1d8a
Signed-off-by: Jason Van Malder (jvm) <jvm@odoo.com>
2020-03-06 14:27:02 +00:00
jerome hanke (jhk) 33895b3fd7 [FIX] account: show taxes when they are zero on invoices print
- Create a 0 % tax
- Create an invoice with a line using the 0 % tax
- Print the invoice

The 0 % tax is not shown in the 'Tax amount by group' summary, while it
should be.

In 12.0, the 0 % is created in `account.invoice.tax`, therefore the tax
is shown. However, in 13.0 there is no `account.invoice.tax` anymore,
and no journal item is created for a zero amount. Therefore, the tax is
not shown.

We explicitly loop on the zero taxes and add them in the 'Tax amount by
group'.

opw-2209343

closes odoo/odoo#47092

X-original-commit: 37a0f7acae8aebef35577b178f8aeefed11c9105
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2020-03-06 14:25:09 +00:00
Goffin Simon ca72c490d0 [FIX] website_sale: Wrong pricelist in 'Suggested Accessories'
Steps to reproduce the bug:

- Let's consider two products P1 and P2 where P2 is an accessory of P1
- Let's consider a pricelist PL1 where P1 and P2 = 10€
- Let's consider a pricelist PL2 where P2 = 20€
- Set PL1 as pricelist of Public user
- Set PL2 as pricelist of Odoobot
- Go to the shop with Public user and add P1 in the cart

Bug:

The suggested product P2 was at 20€ instead of 10€

opw:2206947

closes odoo/odoo#46973

X-original-commit: a9351a0b28ea753e3b7846dbd6aaade7eca96345
Signed-off-by: Simon Goffin (sig) <sig@openerp.com>
2020-03-05 13:06:49 +00:00
jerome hanke (jhk) da29849414 [FIX] account: partner vendor view has vendor filter by default
Steps to reproduce:
- install accounting
- go to accounting > vendors > vendors

Previous behavior:
all contacts are visible

Current behavior:
the vendors filter is set by default

opw-2185332

closes odoo/odoo#47095

X-original-commit: b77cdc020c1e338e09960ab9dea3f3ec907a3fa6
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
2020-03-06 14:27:56 +00:00
Romain Derie 8066001ee4 [FIX] website: add test for 5ac269d722f
5ac269d722f fixed 7e2b0ebe799 that prevented the website menu to actually be
visible, since the JS in charge of displaying the menu was 'crashing'.

A test was missing to avoid that issue to appear ever again, since it is quite
a critical problem.

Note that it might look strange that breaking such a mechanism does not make
the runbot red, but since the menus are actually considered visible, the tests
are able to 'see' it in DOM and click on it.
They are actually hidden through an opacity 0 & height 0 while the JS process
them.

task-2093679

closes odoo/odoo#47138

X-original-commit: 0dc00a252dfe7fee658579a60dc7b1b1ca71a661
Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
2020-03-07 12:16:12 +00:00
qsm-odoo 05d17089c4 [FIX] web_editor, website: review default palette system
Before this commit, this was done:

1) Primary variables (app order):

(a) web_editor: define palettes (color + theme + gray), only 1 empty
                one. Mark the first ones as the selected ones.

(b) website: fill all defined palettes with the website-related
             color key and values (body, menu, logo-height, etc).
             + define "website values" palette.

2) Secondary variables (reverse app order):

(c) website: merge the user palettes on top of the selected palettes
             (so user values overriding values added in (a) and (b)),
             the resulting palettes are added in palettes lists and the
             selected palette numbers are set to select those ones.
             + final selection of "website values" palette.

(d) web_editor: final selection of the selected color palette amongst
                the color palettes.

--

The problem with all of this is that the definition of palettes
in themes (occuring between step (b) and (c)) never received the
website-related color key and values of step (b) and were thus forced
to redefine all of those by themself even if they wanted to use the
default website one.

This commit changes the system so that step (a) and (b) now define
"base" palettes (color, theme, gray, website values) and step (c) and
(d) now merge the final selected palettes with those "base" palettes.
This is in fact theoratically more efficient and allows to not force
themes to define every possible palette value we might introduce.

closes odoo/odoo#47097

Related: odoo/design-themes#216
Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
2020-03-07 11:09:36 +00:00
fja-odoo acdf3cf7f5 [IMP] website: add redirect icon to we-urlpicker
Add an icon to open the url the we-urlpicker currently holds in a new
tab.

part of: https://github.com/odoo/odoo/pull/45397

task-2197008

closes odoo/odoo#45397

Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
2020-03-06 16:25:34 +00:00
fja-odoo f07b5b9d74 [IMP] website_form: add/rename form options
Add a height option on textarea
Rename some fields
Add margin on default form

part of: https://github.com/odoo/odoo/pull/45397

task-2197008
2020-03-06 16:25:34 +00:00
fja-odoo b943dd83f6 [IMP] web_editor: add default opt selectAttribute
Add default option selectAttribute
Most of the logic is shared with selectDataAttribute

part of: https://github.com/odoo/odoo/pull/45397

task-2197008
2020-03-06 16:25:34 +00:00
jpr-odoo 223038682f [FIX] web_editor: correct parsing of dailymotion URL
The parsing of dailymotion URL was not done correctly. This made the
media dialog duplicate the URL params if such an URL was re-edited.

task-2159152

closes odoo/odoo#47102

X-original-commit: 8d8f442f62919b1cee595ed1fae2c6e4f05eb8fa
Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
2020-03-06 14:55:03 +00:00
Sébastien Theys b07728e94e [FIX] web, website_*: avoid inline style for image width 128
closes odoo/odoo#47134

X-original-commit: ccb00bd40e7ce58108aeb3ca66abf28a1e12c290
Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
2020-03-06 20:04:05 +00:00
alt-odoo 8e98d71f36 [FIX] payment_paypal: missing parentheses in mc_gross computation
This is a small fixup of previous commit 581020c733044b52cacd0d41a6a8eb8708671d0d.

closes odoo/odoo#47127

X-original-commit: e1e224bbf880718bcfb8d3874bad003aef5e8a27
Signed-off-by: Alex Tuyls <alt-odoo@users.noreply.github.com>
2020-03-06 17:45:16 +00:00
jvm-odoo 0f0d0e59bc [FIX] payment_stripe: fix empty error when cancelling payment
Issue

	- Install eCommerce
	- Set Stripe up (API keys)
	- Go on Shop
	- Add a product > Checkout
	- Pay with stripe
	- Go back when arriving on Stripe payment page
	  (top left link)

	Empty error box

Cause

	This behavior is not handled by payment_stripe

Solution

	Cancel transaction when going back.
	It will display a message "transaction cancelled"

OPW-2195385

closes odoo/odoo#47113

X-original-commit: b8b9a04ff5b5b2ba40b26632e2395b7cdb7ea300
Signed-off-by: Jason Van Malder (jvm) <jvm@odoo.com>
2020-03-06 15:53:22 +00:00
Paul Morelle 72244ca755 [FIX] website_*: force width of partners logos to 128px
* = website_crm_partner_assign, website_customer

Follow up of [1] which still had a misalignment for logos higher than large
(portrait), or logos smaller than 128px.

The layout of the related pages relies on the logos being exactly 128px for the
text following the images to be aligned.

There are two issues to fix:

- When images are bigger than 128px, due to incomplete migration at this time:
  `o_image_128_max` is added to ensure they are not displayed bigger than 128px.

- When images are smaller than 128px, due to the original image being too small:
  the parent element of the image is forced to the expected width of 128px.

  The 128px width is actually not forced on the image itself but on the parent
  of the image in order to:

  - avoid a rectangular image (larger than tall) from using 128px height and
    creating empty space when its height is actually smaller,

  - and avoid images smaller than 128px to be scaled up.

Additional fix:

In "Our References" template, remove the `row` class on the container of
media elements, so that all media are always on their own line.

[1] 8748416b4d8ae4840d7738a0edf226f3240d97cb

closes odoo/odoo#47093

X-original-commit: 5e3242f904ddcee9cf660f13b446b88bead35777
Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
2020-03-06 14:25:27 +00:00
jbw 4927d66635 [FIX] account : wrong field name for mapped on account_move
The "type" field of account_move was renamed "move_type".
Previous name "type" was still used in account_resequence.py.
Error : https://pastebin.com/kqpbA9Sh

closes odoo/odoo#46989

Signed-off-by: Laurent Smet <smetl@users.noreply.github.com>
2020-03-05 14:09:25 +00:00
Lucas Lefèvre 7be54c3a5e [IMP] hr_recruitment: Create applicant's partner as private contact
Purpose
=======
In the Recruitment app, when a new applicant is created and moved staged,
an email may be sent according to the stage configuration.
If the email is not found in the database, a partner is created.
The new contact is now visible and available to the rest of users
(for example can be selected as a customer on a SO), which is a potential
security risk as only HR employees should be able to see this
applicant information. There should be a way to limit the access to this
applicants Contact, for example defaulting the type to private rather
than contact.

Specification
=============
The created partner should be of type private.

closes odoo/odoo#46351

Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2020-03-06 14:20:42 +00:00
Krupa Patel 5f85a7605a [FIX] web_editor: add focus in url input of link dialog
Before this commit, when clicking on the link button after focusing a
link, the first input of the link dialog was hidden (label), and the
second input (URL) was not focused.

In this commit, we focus the first *visible* input so users are able to
directly copy-paste URL.

task-2083209

closes odoo/odoo#44931

Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
2020-03-06 13:47:16 +00:00
Odoo's Mergebot 034d1c1c7f [MERGE] website slides: add course tags to eLearning frontend
PURPOSE

Add more visibility to course tags as well as the ability to add new ones via
the front-end.

SPECIFICATIONS

Course tags are only viewable in the courses page. In this merge we add more
course tag functionality by:

- making course tag creation more intuitive via backend
- making course tags viewable within a course's specific webpage
- making it possible for those with the correct access rights to add new
  course tags via the course's specific webpage (via a "+ Add Tag" button)
- adding the ability to assign colors to course tags
- note that coloring should not show when courses page is filtered by course
  tag to allow for easier identification of tag filters.

See sub commits for more details.

LINKS

Task: 2128166
Migration PR: odoo/upgrade#862

closes odoo/odoo#44365

Related: odoo/upgrade#862
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2020-03-06 15:48:03 +01:00
jvm-odoo 3b862b4c29 [FIX] website_links: fix UI for big data
This commit increase the containers sizes in linktracker
because at the moment it's not adapted for big data.

It also add title attributes on truncated link to
preview the full link on hover.

OPW-2203428

closes odoo/odoo#47071

Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
2020-03-06 11:10:48 +00:00
jbm-odoo 5889dc3cc4 [FIX] fleet,hr_fleet: Fix user rights
Task ID: 2170625

closes odoo/odoo#47079

X-original-commit: ee13013808460c5100bec03ed415fc184ff031e5
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2020-03-06 12:43:06 +00:00
Arnold Moyaux 1d1cdf3929 [FIX] stock_landed_costs: allow to create landed cost
The checkbox on product in order to define landed cost is under the
invoice tab. However it requires complex manipulation to be displayed.
Move the option under the purchase tab

closes odoo/odoo#47073

X-original-commit: f7567f10dd0cc936336066e7835c908fde163dc0
Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
2020-03-06 11:15:37 +00:00
Arnold Moyaux 871a925045 [FIX] stock_landed_cost: ensure landed cost product
On the landed cost form, the additional costs would allow
product that are not landed cost. It could lead to a misunderstanding
where the user thinks he should enter the picking's products.

X-original-commit: a0b8ebe9136890a950088c5a4195bfab576191a3
2020-03-06 11:15:36 +00:00
Hemali Bhimani 506c9764e0 [IMP] sale: opportunity to print a quote and change the status
currently button "print" does not exist so it is not possible to
reach the status "quotation sent" without sending it by email.
After this commit without "send by email" user can send
and/or print a quote and change the status of the quote to
"quotation sent" and also add the customer as follower

closes odoo/odoo#47008

Task: 2168504
Closes: #46813
X-original-commit: 0088e967afe4b8884e5bd482de855297d956207a
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
2020-03-05 15:23:02 +00:00
Odoo's Mergebot e6c406d8d6 [MERGE] survey: support conditional questions
Purpose
=======

This merge adds a new survey feature : conditional questions. A conditional
question is a question that will be displayed to the user only if the user
selects a specific answer from another previous question i.e. question B is
displayed if user answers 'Choice 1' at question A.

Specifications
==============

There are 2 different ways to handle conditional questions.

  * For one_page and page_per_section survey layout: conditional management is
    done mainly at frontend side. The idea is to be able to load all the
    questions of the section, hide the conditional questions and display them
    dynamically on answer check.
    E.g.: If user checks answer 'Choice 1' from question A, question B is
    displayed immediately.
    If question B is on section 2 and survey layout is set to section per page,
    question B will be displayed immediately on next page template load.
    Indeed, on each page load, server sends all the selected answers and the
    template displays the conditional question depending on the already
    elected answers;

  * For page_per_question survey layout: conditional management is done mainly
    at backend side. The idea is to find on each page the next question to
    display depending on:

    * navigation direction (next - previous)
    * already selected answers and conditional question dependance
    * survey questions sequence

    E.g.: If questions survey are Question A, B and C and question B must be
    displayed if answer 'Choice 1' from question A is selected.
    At Question A, if user select 'Choice 1' and goes next: display B
    At Question B, no matter the answer, if user goes next: display C
    At Question B, no matter the answer, if user goes prev: display A
    At Question A, if user select 'Choice 2' and goes next: display C
    At Question C, no matter the answer, if user goes next: End survey
    At Question C, if user has selected 'Choice 1' at question A and goes prev -> B
    At Question C, if user has selected 'Choice 2' at question A and goes prev -> A

In both modes answers on questions that should not have been displayed to the
user depending on the previous selected answers are cleared.
E.g. : User checks 'choice 1' from question A, then complete question B.
Then user unchecks 'choice 1' -> answer on question B is cleared.

Remove questions that should not have been displayed to the user (depending of
the made choices) in scoring computation and print layout.
--> Inactives questions are removed from predefined questions when user finish
the survey.
E.g.: If the user selects first path on 2, he will never see second path.
If the user answers correctly to all question of first path, he should have
100%, instead of 50%, even if questions of path 2 are mandatory and scored.

Specifications: sessions
========================

This merge makes the live session mode work with conditional question.
The point is to determine which question to display next. As multiple users
are 'voting' for answers of the same questions, the way to determine the
next question to display is to keep only the most voted answer.

The most voted answer will be the only one to trigger the linked conditional
question.

E.g.: considering
- following survey configuration:
    - Q1: A1, A2
    - Q2: triggered by Q1-A1
    - Q3: triggered by Q1-A2
- following user inputs:
    - U1: A1 selected
    - U2: A2 selected
    - U3: A2 selected
The next question displayed to ALL users will be Q3.

Note: If U4 had selected A1, the next question would have been Q2 as
when there is an equality, we select the first one.

Links
=====

Task ID 23509
Upgrade PR odoo/upgrade#906

closes odoo/odoo#44950

Related: odoo/upgrade#906
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2020-03-06 14:29:24 +01:00
Odoo's Mergebot fb846dc44a [MERGE] sms, mass_mailing(_sms): review contact list and composer usability
PURPOSE

Improve SMS composer usability, notably in single recipient mode. Allow to
edit and store number directly.

SPECIFICATIONS

  * the SMS button is visible next to a phone number in mass_mailing, and
    mass_mailing_sms;
  * in the mass_mailing contact list, the "email blacklisted" field has been
    moved next to the email field;
  * when mass_mailing_sms has been installed, the mass_mailing contact list
    also shows the phone number and whether this number has been blacklisted
    the mass_mailing_sms contact list also shows the email and whether this
    email has been blacklisted;
  * when sending an sms to a single contact, his phone number is now an
    editable field in the wizard and there is a warning if the number is
    invalid. Therefore the operator can modify the phone number directly
    and this new number is saved onto the record directly;

LINKS

Task ID 2088303

closes odoo/odoo#40482

Related: odoo/upgrade#873
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
2020-03-06 14:29:10 +01:00
David Beguin 2d499c0236 [IMP] survey: integrate conditional questions in session mode
Purpose
=======

This commit makes the live session mode work with conditional question.
The point is to determine which question to display next. As multiple users
are 'voting' for answers of the same questions, the way to determine the
next question to display is to keep only the most voted answer.

The most voted answer will be the only one to trigger the linked conditional
question.

E.g.: considering
- following survey configuration:
    - Q1: A1, A2
    - Q2: triggered by Q1-A1
    - Q3: triggered by Q1-A2
- following user inputs:
    - U1: A1 selected
    - U2: A2 selected
    - U3: A2 selected
The next question displayed to ALL users will be Q3.

Note: If U4 had selected A1, the next question would have been Q2 as
when there is an equality, we select the first one.

Link
====

Task ID: 23509
PR #44950
2020-03-06 10:29:50 +00:00
David Beguin 3968bed239 [IMP] survey: add conditional questions demo data
Purpose
=======

This commit adds demo data to illustrate the conditional questions
configuration. Users will be able to choose among 4 themes. Depending on their
choice(s), the survey will continue by displaying only the questions related
to the selected theme(s).

Link
====

Task ID: 23509
PR #44950
2020-03-06 10:29:50 +00:00
David Beguin 0675d68afb [IMP] survey: add conditional display option on questions
Purpose
=======

This commit adds a new survey mode : conditional questions. A conditional
question is a question that will be displayed to the user only if the user
selects a specific answer from another previous question i.e. question B is
displayed if user answers 'Choice 1' at question A.

Specifications
==============

There are 2 different ways to handle conditional questions.

  * For one_page and page_per_section survey layout: conditional management is
    done mainly at frontend side. The idea is to be able to load all the
    questions of the section, hide the conditional questions and display them
    dynamically on answer check.
    E.g.: If user checks answer 'Choice 1' from question A, question B is
    displayed immediately.
    If question B is on section 2 and survey layout is set to section per page,
    question B will be displayed immediately on next page template load.
    Indeed, on each page load, server sends all the selected answers and the
    template displays the conditional question depending on the already
    elected answers;

  * For page_per_question survey layout: conditional management is done mainly
    at backend side. The idea is to find on each page the next question to
    display depending on:

    * navigation direction (next - previous)
    * already selected answers and conditional question dependance
    * survey questions sequence

	E.g.: If questions survey are Question A, B and C and question B must be
	displayed if answer 'Choice 1' from question A is selected.
	At Question A, if user select 'Choice 1' and goes next: display B
	At Question B, no matter the answer, if user goes next: display C
	At Question B, no matter the answer, if user goes prev: display A
	At Question A, if user select 'Choice 2' and goes next: display C
	At Question C, no matter the answer, if user goes next: End survey
	At Question C, if user has selected 'Choice 1' at question A and goes prev -> B
	At Question C, if user has selected 'Choice 2' at question A and goes prev -> A

In both modes answers on questions that should not have been displayed to the
user depending on the previous selected answers are cleared.
E.g. : User checks 'choice 1' from question A, then complete question B.
Then user unchecks 'choice 1' -> answer on question B is cleared.

Ignore conditional configuration :

  * during survey session, to avoid having different users answering different
    questions on the same session. That would be confusing for users to see
    questions on presenter screen that they didn't have the opportunity to
    answer;
  * if survey questions selection is random, because it will not display
    conditional questions if they are not kept by randomization. To avoid
    confusion, conditional configuration is simply ignored, not unset, so the
	user can still reactivate it without having to reconfigure everything.

Remove questions that should not have been displayed to the user (depending of
the made choices) in scoring computation and print layout.
--> Inactives questions are removed from predefined questions when user finish
the survey.
E.g.: If the user selects first path on 2, he will never see second path.
If the user answers correctly to all question of first path, he should have
100%, instead of 50%, even if questions of path 2 are mandatory and scored.

Link
====

Task ID: 23509
PR #44950
2020-03-06 10:29:50 +00:00
Victor Feyens 4d1009a275 [FIX] delivery: support multi for delivery_state compute
closes odoo/odoo#47017

X-original-commit: f778cd19be73fb4e6a1ed0d1b9194607578ab1d5
Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
2020-03-06 10:21:56 +00:00
Victor Feyens 623d6a066b [FIX] delivery, sale: improve invoice_status performance.
* Avoid reading all lines invoice_status when the SO isn't confirmed.
* Do not use _default_product_id to discern down_payment lines, use is_downpayment instead
	(one ref = one query less by compute call)
* Do not consider display_type lines for SO invoice_status.

X-original-commit: 76a6d0475872f9ffa21cb917f13bc553c720eafd
2020-03-06 10:21:56 +00:00
Victor Feyens 20fec19fd0 [FIX] sale_stock: batch quantities computation correctly.
Available quantities computation is grouped by warehouse,date but using
datetime.now as fallback during the for loop ensures no batch
computation is done at all if order is not confirmed and has no
commitment_date.

X-original-commit: 563d0f73a8cea1933e57ae2b914f161ffeb5b7e4
2020-03-06 10:21:56 +00:00
Ankita Raval 5131572dab [FIX] mrp_workorder: Prevent to delete WO from Gantt
In this commit,Add a attribut "delete" in mrp workorder gantt view
to disable Remove button on "Planning by Workcenter" gantt view.

task-id:2206166

closes odoo/odoo#47064

X-original-commit: 669408f8b1e760a815e212d9e9fab8663e665dd6
Signed-off-by: Simon Lejeune (sle) <sle@openerp.com>
2020-03-06 10:20:08 +00:00