with this commit we are updating sequence of onboarding tours
task-2444153
closesodoo/odoo#65244
X-original-commit: a928beccb09f4db4234356e5e4f7bdf090ecc964
Related: odoo/enterprise#16026
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
with this commit we fixes various tour steps, remove steps from crm and sale
tour and improve step selector in project tour.
task-2444272
closesodoo/odoo#65073
X-original-commit: f6c05693f857acfb0f74bb76c4bd72f83d9fb335
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
Steps to reproduce the bug:
- Let's consider a product P with a blocking message BM
- Create a quotation Q and set P on it
Bug:
A traceback was raised.
opw:2421946
closesodoo/odoo#63853
X-original-commit: e0af10ccc92cb3b07f0eea6fa44ebf5a1bdc86aa
Signed-off-by: Simon Goffin (sig) <sig@openerp.com>
Depending of the configuration, on the portal, anchor do not consider the
header, so a part of the text is hidden by the navbar.
task-2290213
closesodoo/odoo#60415
X-original-commit: 2cd9a9d12f4cd7352430c166145a7488af0c120c
Signed-off-by: Jérémy Kersten (jke) <jke@openerp.com>
Signed-off-by: Romain Derie <rdeodoo@users.noreply.github.com>
1. Lead to loose the tour: Remove the step of the tour that asks
to set an address (the address is auto-completed at free trial
based on domain name).
2. Bug: At step 3, it redirects to the
invoice settings to select a localization, when you click on
"install more packages", you are sent back to the sales app.
--> this bug is related to res_config_settings.js from base addon.
I tried to fix this bug by adding a data-attribute "discard" in the
res_config_settings_views and checking this additional condition in
the js.
3. Bug: Tour blocks at last step "send by email" on quotation.
After clicking on "sent" on the pop-up, there should be rainbow
effect to mark the end of the tour.
4. Bug: Sale order line: fix the blue color on Invoiced Quantity
only, instead of the full line
5. Put the "sample product" in active= false (it's necessary for
the sample invoice but should not be visible to the user, they
should create their own)
6. Merge the 2 dates fields related to expected delivery on sale.order
--> since other modules extends this module, I made the field
expected_date invisible and put the same value in both fields. This
value is the max of the order_lines.expected_date
closesodoo/odoo#59261
Taskid: 2277314
X-original-commit: 0f81816d4ddb0febd28f6c6bb5dd50ae570333e1
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
Purpose fo the task is to Allow changing a discount for the whole SO.
So in this commit, On a quotation, with "discount per line" option
enabled, if the user changes the discount on the first SO line, display
a pop-up requesting if they want to apply the change to all the lines
of the SO.
There is condition to open the confirmation dialog to change on all SO lines:
1. There should be 3 or more lines in SO
2. Happens only when changing the discount of the first SO line
3. The initial discount is the same on all lines
For Ex: Example : a SO with a discount of 10% on all 6 SO lines.
The user clicks the discount field on the first so line, changes to 20%.
A pop-up "apply this discount to all quotation lines"
-> if yes, apply 20% to all SO lines.
closes odoo/odoo#54262
Taskid: 2276759
Closes: #54262
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
Issue
- Safari
- Sales with product configurator
- Have a product with color black & white
size M, XL
- Exclude M size when color is white
- Create a SO with that product
- Select white color
The size's M option is not grayed in the select
Cause
We do not disable the option when it's not available.
We are just adding a css class which grays the option.
Safari ignores the style
Solution
Since the flow can't be completed if you select a
grayed item, disable the option
OPW-2289666
closesodoo/odoo#54993
X-original-commit: 6150311b72089e3fbae6bc27551bc7f4792e68dd
Signed-off-by: Nicolas Lempereur (nle) <nle@odoo.com>
Signed-off-by: Jason Van Malder (jvm) <jvm@odoo.com>
* The first tour is starting in the sale app dashboard and ensures
the user goes through the needed configuration steps
* The second tour starts in the new Quote form and shows the flow to
send a quote to a customer
TaskID: 2187222
Closes: #46167
*sale_product_configurator
Since commit 50bf830, a crash occurred when a row containing a
many2one displayed with widget 'product_configurator' was dragged
and dropped.
For instance, open a quotation with at least two rows, and drag and
drop one of them.
Issue reported on task 2206228
closesodoo/odoo#48128
X-original-commit: d9c35b40b7df588f9e81142a2b272d9c7da06e04
Signed-off-by: Lucas Perais (lpe) <lpe@odoo.com>
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
This commit moves some step utils in a dedicated file and add new ones.
These steps will be very useful for the Main Flow Tour to avoid
duplicated code.
To do this, we also had to transform it into functions to allow
utils to call each other. Existing one are converted for
standardization purpose.
Note that 'WEBSITE_NEW_PAGE' wasn't considered as an util.
This is a very simple step only used twice.
Steps to reproduce:
- install sales
- go into debug mode
- dev tools > start tour > sale_tour
Previous behavior:
tour would fail to see that the product has been selected
and time out if you do it multiple time
Current behavior:
the tour finishes properly (even if it runs multiple times)
opw-2187218
closesodoo/odoo#45461
X-original-commit: e7a78fd76e48fbaa895d786f699d22b2278c9301
Signed-off-by: Nicolas Lempereur (nle) <nle@odoo.com>
*sale,sale_product_configurator
Let's assume a form view containing a many2one with an onchange
that updates the value of a one2many. Do a quick create in the
many2one. While the name_create request is pending, add a row to
the one2many but do not leave it. When the name_create returns, and
the onchange has been performed, the one2many is reset, and the row
is no longer in edition (worse, it could be invalid, i.e. in a state
that the user could not have reached in a normal situation).
This commit fixes this issue by considering the whole [name_create +
onchange] operation as one. This operation is executed in the mutex
of the model, so the other request (adding a row to the one2many) is
delayed until the many2one value has been correctly set.
This fixes an issue with the sale and rental tours (on sale_order),
that had been deactivated for a while.
Steps to reproduce:
- install sales
- go into debug mode
- dev tools > start tour > sale_tour
Previous behavior:
tour would fail after creating the "Agrolait" partner.
the test would not wait for the return value of the
customer selection.
Current behavior:
the test waits for the customer to be fully selected and does not fail.
closes#40569
opw-2091797
closesodoo/odoo#43221
X-original-commit: c4b6273c9df5d8e3f3a5ee3cf52541741526280e
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
Task 2034073
The reconciliation widget is now entirely part of the enterprise version
as it is an advanced accounting feature
closesodoo/odoo#38424
Signed-off-by: Quentin De Paoli (qdp) <qdp@openerp.com>
* sale, sale_management, sale_product_configurator,
website_sale_product_configurator
1. Product Configurator
-----------------------
- It is now possible to change the quantity of an optional product
- Default optional product quantity is set to its parent product
current quantity.
- The order in which optional products of an option appear when added
to the cart is fixed it will now be displayed below the correct
product even if there are multiple options with the same product
template id.
To achieve this a unique id has been added to the products and
a reference to their parent unique id.
- The way products are given to the backend when configuration is done
has been improved, now only an array with the product and useful info
is submitted.
2. eCommerce in cart review
---------------------------
- It is now possible to change the quantity of an accessory product.
- It is now possible to delete an optional product added through the
product configurator.
- The labels "Option: optional product name" below the parent product
are now removed when a related optional product is deleted.
- The labels "Option: optional product name" are now displayed below
the correct product.
task-1951560
closesodoo/odoo#33002
Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
Task 36284
Change the visual aspect of the reconciliation widget:
* Use a tab system to change modes
* Matching for receivable/payable (and liability)
* Matching for types not above
* Create a new line
* Batch Payment
* Sale Order
* Add a keyboard navigation
* Improve the search bar and use a real search view to do so
* Remove the constraint that prevent to select a line already selected
on another statement. Instead remove it when a reconciliation is
validated
* The lines already proposed are proposed last on other statement
lines
* Put the lines with exact amount matching first in the propositions
* Improve when Rainbowman shows
* Change the order of the propositions: older show first
* Remove the title on top of the view (and the ability to edit it)
* Fix some breadcrumb issues
* Also add lines from receivable/payable without partners in the manual
reconciliation widget.
* Propose things to do if there are no lines found in the manual
reconconciliation
closesodoo/odoo#32631
Signed-off-by: Quentin De Paoli (qdp) <qdp@openerp.com>
* account, hr_expense, mrp, sale, sale_product_configurator, stock_account,
website_sale, website_sale_comparison
Before this commit, the `product.attribute.value` were stored on the variants.
This required filtering of attribute lines to find the appropriate matching
`product.template.attribute.value` that were used in most of the business code,
such as when computing the `price_extra`.
This also prevented to have multiple attribute lines for the same attribute,
which is needed to handle use cases such as grape varieties for wine products.
This will be done in the following commit.
After this commit, the combination of `product.template.attribute.value` will be
directly stored on the product variant.
Other changes
=============
Add `combination_indices` on product, which allows to quickly find a variant
matching a combination (1 simple indexed equality query as opposed to 1 query
with as many joins as there are attribute lines), and to add an easy
SQL constraint to ensure active combination uniqueness.
Add active field on `product.template.attribute.line` and
`product.template.attribute.value`, with the same behavior as variants:
They become archived if they can't be unlinked. This allows to keep the database
consistent, such as archived variants correctly keeping all their values, sales
order lines keeping their custom and no_variant. This is done with the help of
`ondelete=restrict` on the corresponding m2m fields, and the `unlink` methods
falling back to archiving when `unlink` is restricted.
Part of task-1912579
PR: #32946
Sending a quotation by mail is really rare and the option is still
available in dropdown menu. It is also confusing to see the document status
changed while you just want to print as a draft sometimes. So the PRINT button
is removed here.
Only displayed UNLOCK/LOCK for 'sales managers' if the
option “Lock confirmed orders” is activated in the settings.
Removed the ability to open the payment terms via external button
in edit mode
Removed the left,right and top borders in the field of terms and condition.
Kept only bottom border.
Event and Event ticket will come after Product regardless of it being a
template or the product.
In the sale order's form view, made certain changes like shifting
the positions, removing the field, adding title, keeping the field
in debug mode.
task-2033229
image_original => image_1920 (now resized to 1920)
image_big => image_1024
image_large => image_256
image_medium => image_128
image_small => image_64
image replaced by image_1920 (when writing) or by image_1024 (when displaying
what was previously the big size)
+ add new intermediate format:
image_512
PR: #34925
Purposes:
* Remove bridge module event_sale_product_configurator
* Ease developement of product configurators AND product-based sale_order_line configurators
* Fix the tests for those extensions
* Note that despite the widget being extensible, the tests from the other configurators can easily crash when other configurators are installed because of query counts or limited data available in tests environments.
Technical clarifications:
A main product_configurator widget base in odoo/addons/sale, set on the product_product and product_template on the sale_order_line inline list, providing:
* 5 hooks:
* _onTemplateChange for product_product configurators based on product templates
* _onProductChange for sale_order_line configurators based on product_product
Those two hooks are expected to return a boolean promise to know whether the line has been configured or not, avoiding the opening of multiple wizards.
* _isConfigurableProduct
* _isConfigurableLine
If true, a pencil button is shown next to the product/product_template, calling _onEditProductConfiguration when clicked.
* _onEditProductConfiguration
Called when clicking on edit pencil button.
Examples :
Product configurator : odoo/addons/sale_product_configurator module --> product_configurator (true one, the one in sale doesn't do anything until extended)
Sale Order Line configurator : odoo/addons/event_sale/ --> event_configurator, future rental configurator
As we now have a new debug mode 'tests' which load a new asset bundle
containing tour-test files, we moved those files to a new folder hierarchy.
That will clean the .js files trees.
Also, those files should be included in the new asset.
Basically, the .js tour files (not test) should be inside /static/src/js/tours
while .js tour test files (test=true) should be inside /static/tests/tours next
to QUnit tests, inside a tours folder.
+ test_new_api: don't run the test in debug assets
task-1934445
Comes with https://github.com/odoo/enterprise/pull/4281Closes#33213
Because of d5d93474de,
when displaying a quote on the portal, which quote has a product with a website description
containing a long h3
the left sidebar took all the space
After this commit, we limit the width of the anchor to the description in the sidebar
OPW 1974650
closesodoo/odoo#33056
Signed-off-by: Lucas Perais (lpe) <lpe@odoo.com>
The old tree views don't really exist anymore, this odd pseudo-flag to
dispatch between "list" and "tree" tree views has no reason to remain.
Task 1937686
closesodoo/odoo#31243
Signed-off-by: Xavier Morel (xmo) <xmo@odoo.com>
This has several advantages:
- make the code easier to maintain by having the logic only on the python model
- prevent price flickering when changing from/to an impossible combination
- fix the UI for the issue mentioned in the previous commit/the opw
- make the code much faster when using many combinations, by not requiring to
browse and to return every existing and every archived variants
The opportunity is also taken to properly throttle the rpc and to use
"DropMisordered" on its result:
- fix all the other remaining flickering when changing quantity or combination
- fix the server being spammed of rpc when using the configurator modal, but
also in a lot of other cases such as incrementing the quantity, ...
- fix UI consistency by ensuring the result of the last rpc is always the one
displayed, obsolete rpc returns are ignored
By computing the possibility of the combination asynchronously, the two
drawbacks are:
- the UI is a bit less reactive than in the previously the best case scenario,
but this almost completely mitigated by debouncing with a leading call
- it is possible for a quick user to click on "add to cart" on an impossible
combination before the return of the rpc, but this is not really an issue
because when the product will be added to cart there will a check and the
closest possible combination will be selected automatically instead
Finally the event of the configurator mixin and the widgets using it have been
cleaned to avoid the duplication of the rpc in the first place.
opw-1959317
PR: #32691
Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
Task#1963335
Now that the product configurator has its own module, the tour
"tour_shop_custom_attribute_value" needs to be split in two parts
to handle the optional products.
The "sale_tour" also needed to be adapted to handle the fact that
the product input can also be a product_template input.
The "shop_buy_product" had its 'add_to_cart' step changed to handle
possible optional products window.
closesodoo/odoo#32368
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
Part 1: Backend
Changing an option's variant now change the product name and the image
Part 2: Front end
The behavior is the same as in the backend.
For that part though, there is a huge design problem:
the modal dialog has the class .oe_website_sale, so the widget website_sale
reacts to events triggered in the modal.
It is understandable given the history of the module, but a proper refactoring
that will implement inheriting of business behaviors through OdooClass extension/overrides
is necessary in master
OPW 1938217
closesodoo/odoo#31201
Signed-off-by: Lucas Perais (lpe) <lpe@odoo.com>
Task #1891970
Purpose
=======
The "ProductConfiguratorMixin" was named like that for historical reasons.
It had no direct link to the product configurator anymore since the latter was moved in its own module.
The ProductConfiguratorMixin was renamed to VariantMixin to avoid confusion.
This commit just move files around, there should not be any functional change.
Task #1891970
Original p. configurator commit d3530eb
Purpose
=======
- The p. configurator now comes with a widget that is "o2m" like in the SO lines view.
The widget is only used on the added "product_template_id" field on the SO line.
This widget controls the opening of the configuration window and removes the need of a "Configure a product" button.
The "SectionAndNoteListRenderer" is now cleaned from p. configurator specific code.
The widget is also responsible for handling the configuration provided by the p. configurator form
and applying it on the SO line with a 'field_changed' event that updates all the necessary fields.
- Added support for 'MULTI' and 'DELETE_ALL' operations on X2Many fields in basic_model.js
- 'MULTI' allows to batch multiple operations at once
- 'DELETE_ALL' behaves like 'DELETE' with all the current data of the field
Spec
=======
- remove "configure a product" from sale order lines
When the product configurator is active, replace the product_product_id by a product_template_id
in the sale order line. When we select a template without variants, it sets the variant automatically,
but when we select a product template having variants, it opens the configurator dialog.
- add a widget to modify the product configuration in the sale order line (next to product template field)
- UX improvements:
- Invert image and configuration in the main screen
- If the product doesn't have an image, hide it instead of showing the placeholder (only for first screen?)
- new independent option in sales settings to activate product configurator.
(same in e-commerce)
- demo data: Change demo data to set Customizable Desk & Conference Chair as make to order
- If only one attribute value that is Custom, don't display radio, selection or even color box
Purpose
=======
- Moved the product_configurator into its own module now that we have a specific option for it.
The option only enables the p. configurator in the SO form.
The e-commerce should always allow customer to configure their products, even if the option is not checked.
This allows moving some of the code specific to the p. configurator into its own module.
However, a lot of the code has to remain in "sale" module since the e-commerce does not require the option
checked and needs the "configure product" feature in the shop by default.
(This is why the fields "product_custom_attribute_value_ids" and "product_no_variant_attribute_value_ids"
are still in the "sale" module)
Purpose
=======
The sale order lines will now always be editable directly from the tree view.
Why?
- Installing some modules would force a popup form, which leads to a significant drop
in productivity when filling in multiple sale order lines ;
- The next version of the product configurator will only be compatible with inline tree view editing.