During the refactoring of discuss in 16.3, the setting to filter
the videos was wrongly observed on the settings instead of the channel.
This commit fixes this issue.
closesodoo/odoo#122605
X-original-commit: 00f55c6f925fa02cd292549498643f5415392a9f
Signed-off-by: Stockbauer Matthieu (tsm) <tsm@odoo.com>
Signed-off-by: Thanh Dodeur (tso) <tso@odoo.com>
Steps to reproduce:
- Install fleet
- Switch to mobile view
- Create new vehicle
- Click on model field > Select a model
Issue:
Clicking on a car model does not perform any action.
Solution:
Add class `oe_kanban_global_click` to kanban items in order to capture user clicks.
opw-3188104
closesodoo/odoo#122567
X-original-commit: 7b56586f256461d19a4c8999d7dab05a6e33b1e2
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
Signed-off-by: Stefan-Calin Crainiciuc (stcc) <stcc@odoo.com>
This commit introduces better visual indicators in the datetime picker
to highlight the previous selected value(s) and the new one(s).
closesodoo/odoo#122564
X-original-commit: 0fb302e748ffbdc3b8ee79bc6f1be62e8f11a2aa
Signed-off-by: Bruno Boi (boi) <boi@odoo.com>
Signed-off-by: Julien Mougenot (jum) <jum@odoo.com>
Before this commit, the datetime picker would open on date/datetime/
daterange fields when their input was focused.
The intended behavior was for the picker to open on click instead. This
commit does that, as well as re-positionning the picker when switching
between single date and range values.
Task 3323594
X-original-commit: 39443638de8b50263b07d82b2d34aeb62c5ebb5b
Part-of: odoo/odoo#122564
This commit removes a function from the `@web/core/l10n/dates` file
which was designed to save some time when comparing 2 dates.
The existence of this function was justified by the fact that Luxon
would allegedly perform expensive and needless transformations to
convert a date to a number (which is the case when comparing date
objects).
However it appeared that it was a mistake on my part, as I actually
inspected the wrong class method: I checked the `valueOf` implementation
of the `Duration` class, not the `DateTime` class.
X-original-commit: 995a1ab49bdd9e63b4f1027bbd723037c5045d21
Part-of: odoo/odoo#122564
Removed the keyboard navigation in the datetime picker since it was
poorly designed and less useful than directly type the date in the input.
X-original-commit: 029334a305ddfa645244b67d4228861ca867d8ee
Part-of: odoo/odoo#122564
This commit changes the arrow icon tags of autocomplete dropdowns to be
spans instead of an anchors.
This is because these elements are inert icons without href or handlers
attached, and they tricked the list keyboard navigation into considering
them as valid focusable elements.
X-original-commit: d253e41c44accd43cbd6478717e3978772076974
Part-of: odoo/odoo#122564
With this commit, we improve the usability of foreign bank transactions.
When capturing a new bank transaction (account.bank.statement.line)
- when capturing a new transaction we compute the amount currency based on the transaction date, amount in journal/company currency, and foreign currency
- when the foreign currency is removed, the amount_currency is cleared
Task-3338560
Task-3338532
closesodoo/odoo#122595
X-original-commit: 737c7d26c415b5a136635ef3e4d33d086961c4da
Related: odoo/enterprise#41532
Signed-off-by: Laurent Smet <las@odoo.com>
Since _search return a query object, we cannot slice it. So we listify
it.
Thanks to XMO and RYV for their very valuable input.
closesodoo/odoo#122589
X-original-commit: 2e51b638232aff90405f318abb849f8b8db38496
Signed-off-by: Masereel Pierre <pim@odoo.com>
Before this commit, the registry was entering test_mode in setUp,
leading to a hole during the setUpClass with a registry not in test mode
at this moment.
closesodoo/odoo#122585
X-original-commit: 993e4d2f98b9982eb64123d6cd0de8cc3b2056f4
Signed-off-by: Christophe Monniez (moc) <moc@odoo.com>
As this test navigates to some routes, it clearly should be an HttpCase.
X-original-commit: 8fa339a9c75be6055b1537402eca3060a4c9f701
Part-of: odoo/odoo#122585
Before this commit, attachment cards overflow in chat window
when attachment name is very long.
Text is properly flagged for truncate, but the container had neither
`overflow-auto` or `min-width: 0` to allow flex to shrink below
its content size.
Also add some horizontal spacing in attachment list so the
attachment cards do not have any contact with composer border.
closesodoo/odoo#122583
X-original-commit: 0d0ab2543d8c6a944fb091fa4ac30a19e1924e71
Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
Since changes made in https://github.com/odoo/enterprise/pull/41117 we
cannot provide icons for menus in an other format than png. As it was
allowed before to use SVG, we don't want to restrict to only one format.
Before, it was trying to gess the mimetype based on the image content
which is not also the best case.
So as the icon is a binary field store=True, we can just take the
mimetype from the attachment.
closesodoo/odoo#122580
X-original-commit: 044e6b680bc988708a9bbcc3c93dabf787c4a190
Related: odoo/enterprise#41529
Signed-off-by: Masereel Pierre <pim@odoo.com>
When user enters empty space in name field instead of entering an
actual name and confirm their billing, shipping address then when
they click on paynow to confirm order they will face the issue
'list index out of range'.
Note : Do the paypal configuration before following below steps.
Steps to produce:
1) Vist the website as a public user.
2) Create a sale order by adding some products to the cart.
3) While entering shipping and billing address, in the name field enter
some space.
4) Click on next button.
5) Now a sale order is created.
6) Go to orders through 'website' module.
7) Open the order created and generate a payment link.
8) Paste that payment link in another tab or browser .
9) Click on pay
10) By following above steps you will encounter the error.
This commit will prevent the above error.
sentry - 4177783431
closesodoo/odoo#122572
X-original-commit: bce2c37770ec43548f0cb9f35e87820e74254d09
Signed-off-by: Saurabh Mishra (sami) <sami@odoo.com>
Steps to reproduce:
- activate qr-code
- create a contact with a valid account and activate "send money"
- create a bill for this customer
- register the payment
- view the payment
Issue:
The QR-code is displayed as plain text
Cause:
The commit 688986f deleted the use of markup and the field qr_code is still as char and cannot be Markup'ed by the ORM
opw-3293289
closesodoo/odoo#122553
X-original-commit: 61a519aa5d62891fd8bda232ae09b48381786cf8
Signed-off-by: Olivier Colson (oco) <oco@odoo.com>
qty_received_method is not recomputed if the product type change, and can lead to issues on existing purchases when trying to generate a Vendor Bill.
# HOW TO REPRODUCE:
- Create product P, type: Service, Control Policy: 'On Received Qty'
- Create PO for 1 unit of P (do not confirm)
- Update type of P to Storable
- Confirm PO, Receive Products
=> Qty Received is 0, not able to generate Bill
closesodoo/odoo#122409
X-original-commit: fcc1e8e325e6d9f4782b2f82769e1200b7b9a0c3
Signed-off-by: William Henrotin (whe) <whe@odoo.com>
Signed-off-by: Fesquet David (dafr) <dafr@odoo.com>
- (rounded) buttons in header
- header buttons keep grayscale filter regardless of active
- search bar is rounded
- section in emoji content show the icon and the name of category
- less dark color in dark mode
closesodoo/odoo#122565
X-original-commit: 2c53cb5b07f3f940cd27b242949ff2ff4bae7672
Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
After the removal of the `balance` line in payment terms in 16.2, the
behavior was not the same as it was before when using a fixed line.
Example: $ 1000
| Amount | Type | Example Value |
| ------ | ------- | ------------- |
| 50 | Percent | $ 475 |
| 50 | Fixed | $ 50 |
| 50 | Percent | $ 475 |
We used to remove the fixed lines, then split the remaining amount
according to the percentages, and finally insert the fixed lines again.
Since this behavior is both different than before (where we had a
balance line) and not clear to the user, we changed it so that the last
line in a payment term (no matter the type) is behaving as a balance
line. After this fix, our example looks as follows.
Example: $ 1000
| Amount | Type | Example Value |
| ------ | ------- | ------------- |
| 50 | Percent | $ 500 |
| 50 | Fixed | $ 50 |
| 50 | Percent | $ 450 |
task-3270971
closesodoo/odoo#122552
X-original-commit: 1bc73bc9daff4fa9d88739ba49382971f2077e3f
Signed-off-by: Laurent Smet <las@odoo.com>
Signed-off-by: Dylan Kiss (dyki) <dyki@odoo.com>
With the current placeholders, the marketing team always confuses
Campaign, medium & source. This commit rewords the placeholders.
task-3329960
closesodoo/odoo#121672
Signed-off-by: Romain Derie (rde) <rde@odoo.com>
Before this commit, chat window header showed all actions,
which made it quite bloated. The name of conversation was
sometimes completely truncated by available actions.
This commit fixes the issue by showing at most 2 actions
immediately in the chat window header. When there are more
actions, it shows an expandable more menu.
As a consequence of this change, when a panel is open, it
was harder to see the button to close the active panel
(toggling off the button).
To solve this issue, when a panel is open in chat window,
there's a floating button in the top-right corner of content
to close the panel.
Task-3334793
closesodoo/odoo#122419
X-original-commit: eef4ef86e66709eef5b34ebce37cda3aab037bf9
Related: odoo/enterprise#41466
Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
When duplicating the reco model, we want to counterpart entry lines to be copied as well.
closesodoo/odoo#122418
X-original-commit: c5d5f4db3e30b1d4d9dea8d7ca6991c37c91f9a9
Signed-off-by: William André (wan) <wan@odoo.com>
Adds more tests to the update of taxes.
closesodoo/odoo#122413
Task: 3178775
X-original-commit: 7c1e20602ae4d23c7a6174877766fbe86e717e08
Signed-off-by: Quentin De Paoli <qdp@odoo.com>
Signed-off-by: Claire Bretton <clbr@odoo.com>
If a partner in the imported invoice does not exist, we create one on the fly. However, the partner is created without a country and `_run_vat_test` doesn't check it properly in 15.0, and fails in later versions, where we try to get the country code from the country we pass from `_import_retrieve_and_fill_partner`, which is `False`.
This commit retrieves the country from the imported invoice to create the partner and passes the object instead of the `country_code` string to `_run_vat_test`
closesodoo/odoo#122410
X-original-commit: fc1f9b15e54794b1029daffa3719b2f30873ee0a
Signed-off-by: Laurent Smet <las@odoo.com>
Signed-off-by: Aliya Tastemirova (alta) <alta@odoo.com>
Install and then uninstall the utm module via the web client, you get a
traceback because the ir.http override of the utm module is still
present in the registry altought the module is not installed anymore.
The problem affects all modules that override the _post_dispatch method
of ir.http, it is not limited to UTM.
The problem is that, after the uninstallation, a new registry (without
the uninstalled modules) is created but the old registry was still used
by the HTTP stack.
closes odoo/odoo#122519
Closes: #121755
X-original-commit: 979844600a0bc5ea8b63cf4d58c7aba5133e82f3
Signed-off-by: Julien Castiaux (juc) <juc@odoo.com>
This PR aims to fix some small styling issues from the pos_self_order app.
closesodoo/odoo#122502
Signed-off-by: Guilliams Adrien (adgu) <adgu@odoo.com>
This PR adds the arrow icons to buttons in the QR Code menu settings in the interest of making the styling more uniform with the rest of the page.
closesodoo/odoo#122488
Closes: 3339325
Signed-off-by: Guilliams Adrien (adgu) <adgu@odoo.com>
Follow-up of MILK web client redesign.
Before this commit, the avatar and im status in invitation popover
in discuss app were not showing properly: avatar not rounded,
and im status mispositionned in top-right corner.
This commit fixes the issue by absolutely positioning im status
like all other uses of IM status on top of user avatar.
closesodoo/odoo#122459
X-original-commit: 6061d4e718a8e15a1448c236414e8326ba5e13c5
Signed-off-by: Sébastien Theys (seb) <seb@odoo.com>
After the merge of the milk design at odoo, the calendar_appointments_hour_tour
started failing due to a change in the button that returns to the calendar
view. This commit fixes the tour by adapting the trigger selector to the new
design.
runbot-build-error-21004
closesodoo/odoo#122458
X-original-commit: e0e8833944ca351bd8712f81950de5513a34a0f8
Signed-off-by: Arnaud Joset (arj) <arj@odoo.com>
Signed-off-by: Leonardo Pavan Rocha <lpr@odoo.com>
Since we've created unescapeHTML to replace the _.unescape function. The
issue is that _.unescape was using the hex code ''," for the
character " ' ". And the new function uses the decimal code ''', but
as there are some old domains for dashboard have ben stored escaped with
''', we are now unable to unescape them.
closesodoo/odoo#122457
X-original-commit: 1516b52cc7266e4cb2afed2941d93f2f9bc21bb9
Signed-off-by: Lucas Perais (lpe) <lpe@odoo.com>
Signed-off-by: Masereel Pierre <pim@odoo.com>
Upon changing/removing/adding the analytic account on a manufacturing order, only the analytic lines due to the raw material moves are updated, but not the ones for workcenter costs.
To reproduce:
- Create an MO with a workorder on a workcenter which has an operating cost set
- Complete time on this workorder to generate the [WC] AALs on this MO
- Change the analytic account on the MO (or delete it)
Bug: The [WC] AALs never get correctly updated.
This fix builds on https://github.com/odoo/odoo/pull/79614 to correct this behaviour and also take into account changes for the workcenter cost AALs when the analytic_account of a manufacturing order is changed.
Community PR: https://github.com/odoo/odoo/pull/117308closesodoo/odoo#122396
Task: 3252742
X-original-commit: 35e3af77051d1dfdf54600b607acfb593aa49e34
Signed-off-by: Arnold Moyaux (arm) <arm@odoo.com>
Signed-off-by: Claeys Pieter (clpi) <clpi@odoo.com>
This commit adapts the style of the close button on the mass mailing "mobile
preview" to ensure that it's visible in both regular mode and dark mode.
Task-3326846
closesodoo/odoo#122394
X-original-commit: 440c0f04c7fe59953bfb2924a668f76316c6215e
Signed-off-by: Warnon Aurélien (awa) <awa@odoo.com>
Delete the autoplay for all iframes in the iframefallback.
The autoplay was causing issue where the sound of the previous video
was played on the background. Now we delete the autoplay for all iframe
directly.
This happened in media_iframe_video, youtube player and vimeo videos.
We can do this for all iframe source url directly as it impacts other
modules like website_slides or website_event_track_live.
task-3012952
closesodoo/odoo#122392
X-original-commit: 6be8af36726d750065972e122e8f4a0aa0f56a17
Signed-off-by: Warnon Aurélien (awa) <awa@odoo.com>
Signed-off-by: Hennecart Jérémy (jeh) <jeh@odoo.com>
This commit adds proxy urls for prod and test peppol servers that are missing at the moment.
Additional small fixes:
- `default_peppol_move_state` when receiving a new document should match the state on the iap server
- not committing when running tests
closesodoo/odoo#122385
X-original-commit: ec895c56c36794f76b5b778833cee655a7c9bfec
Signed-off-by: Laurent Smet <las@odoo.com>
Signed-off-by: Aliya Tastemirova (alta) <alta@odoo.com>
Steps to reproduce:
Without being logged in,
complete the purchase flow on the ecommerce,
taking care to have a different billing
and shipping address.
If you change the delivery address,
you will get an access error.
Cause:
In some cases, we do not have access to
the `name` field of the `partner` record.
Solution:
Add `sudo` to be able to read the fields.
opw-3276877
closesodoo/odoo#122329
X-original-commit: 1d6ae6bbc765de5673fab5830a81510a1d8857ae
Signed-off-by: Antoine Vandevenne (anv) <anv@odoo.com>
Signed-off-by: Lefebvre Thomas (thle) <thle@odoo.com>
Following 78ae3da902 names were added to improve the view inheritance.
But some names were duplicates. This commit will ensure every name is unique to facilitate
inheritance.
closesodoo/odoo#122270
Signed-off-by: Morgane Demesmaeker <edm@odoo.com>
Following the suppression of the use of useListener in this PR
https://github.com/odoo/odoo/pull/112219. A function adaptation has
been forgotten.
A correction was made so that now the argument in the declaration of
the said function is not decomposed.
closesodoo/odoo#122184
X-original-commit: 6f20131bb97fe174b19da45e8ceb982995261eff
Signed-off-by: Guilliams Adrien (adgu) <adgu@odoo.com>
Signed-off-by: Monnom David (moda) <moda@odoo.com>
`tocompute` in the `Transaction` contains store field on records to
be recomputed. No-store compute fields are directly invalidated from
the cache when a dependency changes (see `BaseModel.modified`).
In fact, `_recompute_field` was actually doing too much for nothing.
Also, it may invalidate caches of compute no-store fields for no reason
(e.g., if they are searchable). Remove the part for field compute
no-store field. And prevent `_recompute_field` callers from calling it
with no-store fields.
closesodoo/odoo#122147
X-original-commit: ba9ccb07fb12558667db97b866df492fd0f5ba4d
Signed-off-by: Raphael Collet <rco@odoo.com>
Signed-off-by: Rémy Voet <ryv@odoo.com>
In specific situation, unlink can lead to raise a `RecursionError`:
- The model `A` has a many2one `b_id` field toward a model `B`.
This field is set with `ondelete='cascade'`.
- The model `A` has one **store** related field **no-sudo** named
`a_related` (`related='b_id.b_other_field`).
- With `ir.rule` on model `A` with a domain containing `a_related`
You have one record B `b_1` with 20 records A linked to it
(`a_1, ..., a_20`). When you try to unlink `b_1`:
Stack:
File "...", line 543, in ...
b_1.unlink()
File "/home/odoo/Documents/dev/odoo/odoo/models.py", line 3594, in unlink
self.env.flush_all()
=> At this point, `a_1, ..., a_20` have already been deleted from the
database because of the 'cascade' deletion. But the ORM doesn't have
any information about this, and `a_related` (for `a_1, ..., a_20`) are
flagged to be recomputed (because it depends on `b_id.b_other_field`)
File "/home/odoo/Documents/dev/odoo/odoo/api.py", line 732, in flush_all
self._recompute_all()
File "/home/odoo/Documents/dev/odoo/odoo/api.py", line 728, in _recompute_all
self[field.model_name]._recompute_field(field)
File "/home/odoo/Documents/dev/odoo/odoo/models.py", line 6165, in _recompute_field
field.recompute(records)
File "/home/odoo/Documents/dev/odoo/odoo/fields.py", line 1348, in recompute
self.compute_value(record)
=> `self.compute_value(recs)` raised a `MissingError` before recalling
`compute_value` with only the first `record` (but others are still in
the prefetch)
File "/home/odoo/Documents/dev/odoo/odoo/fields.py", line 1368, in compute_value
records._compute_field_value(self)
=> `a_related` of `record` is removed from to_compute, but only the
first record, not the rest of the records present in the prefetch set.
File "/home/odoo/Documents/dev/odoo/odoo/models.py", line 4194, in _compute_field_value
fields.determine(field.compute, self)
File "/home/odoo/Documents/dev/odoo/odoo/fields.py", line 100, in determine
return needle(records, *args)
File "/home/odoo/Documents/dev/odoo/odoo/fields.py", line 689, in _compute_related
values = [first(value[name]) for value in values]
File "/home/odoo/Documents/dev/odoo/odoo/fields.py", line 689, in <listcomp>
values = [first(value[name]) for value in values]
File "/home/odoo/Documents/dev/odoo/odoo/models.py", line 5860, in __getitem__
return self._fields[key].__get__(self, type(self))
File "/home/odoo/Documents/dev/odoo/odoo/fields.py", line 2772, in __get__
return super().__get__(records, owner)
File "/home/odoo/Documents/dev/odoo/odoo/fields.py", line 1186, in __get__
recs._fetch_field(self)
File "/home/odoo/Documents/dev/odoo/odoo/models.py", line 3162, in _fetch_field
self._read(fnames)
=> `_read` tries to read the first record + others from the prefetch set
File "/home/odoo/Documents/dev/odoo/odoo/models.py", line 3215, in _read
self.with_context(active_test=False)._flush_search([], order='id')
File "/home/odoo/Documents/dev/odoo/odoo/models.py", line 4607, in _flush_search
self.env[model_name].flush_model(field_names)
File "/home/odoo/Documents/dev/odoo/odoo/models.py", line 5560, in flush_model
self._recompute_model(fnames)
File "/home/odoo/Documents/dev/odoo/odoo/models.py", line 6134, in _recompute_model
self._recompute_field(field)
=> This is where the recursion starts, record compute will move forward
one by one. But sadly, the stack grows very fast, and with only a few
(already deleted) records to recompute, the issue will be generated.
File "/home/odoo/Documents/dev/odoo/odoo/models.py", line 6165, in _recompute_field
field.recompute(records)
File "/home/odoo/Documents/dev/odoo/odoo/fields.py", line 1348, in recompute
self.compute_value(record)
File "/home/odoo/Documents/dev/odoo/odoo/fields.py", line 1368, in compute_value
records._compute_field_value(self)
File "/home/odoo/Documents/dev/odoo/odoo/models.py", line 4194, in _compute_field_value
fields.determine(field.compute, self)
File "/home/odoo/Documents/dev/odoo/odoo/fields.py", line 100, in determine
return needle(records, *args)
File "/home/odoo/Documents/dev/odoo/odoo/fields.py", line 689, in _compute_related
values = [first(value[name]) for value in values]
File "/home/odoo/Documents/dev/odoo/odoo/fields.py", line 689, in <listcomp>
values = [first(value[name]) for value in values]
File "/home/odoo/Documents/dev/odoo/odoo/models.py", line 5860, in __getitem__
return self._fields[key].__get__(self, type(self))
File "/home/odoo/Documents/dev/odoo/odoo/fields.py", line 2772, in __get__
return super().__get__(records, owner)
File "/home/odoo/Documents/dev/odoo/odoo/fields.py", line 1186, in __get__
recs._fetch_field(self)
File "/home/odoo/Documents/dev/odoo/odoo/models.py", line 3162, in _fetch_field
self._read(fnames)
File "/home/odoo/Documents/dev/odoo/odoo/models.py", line 3215, in _read
self.with_context(active_test=False)._flush_search([], order='id')
File "/home/odoo/Documents/dev/odoo/odoo/models.py", line 4607, in _flush_search
self.env[model_name].flush_model(field_names)
File "/home/odoo/Documents/dev/odoo/odoo/models.py", line 5560, in flush_model
self._recompute_model(fnames)
File "/home/odoo/Documents/dev/odoo/odoo/models.py", line 6134, in _recompute_model
self._recompute_field(field)
How to fix it:
Move the logic of the MissingError of `_recompute_field` inside the
`recompute` directly.
X-original-commit: c2aac02ac4f8c5cc4a9324134535393bd97338ce
Part-of: odoo/odoo#122147
This reverts commit 9e71094582ec4c9b719431e77538da8f91ffa9e3.
Why?
- It is useless in 16.0, the bug it claims to fix should not exist. In the
commit explanation the sentence 'this calls `_read`, which flushes the
field we're trying to read' is wrong, since
https://github.com/odoo/odoo/pull/66938 (merged in 15.5). (It is still true
for fields that are in an ir.rule, but it sounds very unlikely to have
a recursive field in ir.rule that causes trigger the problem)
- It creates worst errors (infinite loop for recursive field computation on
missing record - Next commit).
- Also, it looks like a dangerous fix that can hide or trigger new
issues.
X-original-commit: 4a46c1049a4cdc15f0e211d228fb976ba7a0173d
Part-of: odoo/odoo#122147
Purpose:
Improve the lead and opportunity list displayed on the partner portal.
Specification:
-> Add the Email and Phone field to the list of the lead and the opportunity.
-> Change the name label of the lead's list with Lead.
-> Change the name label of Opportunity's list with Opportunity.
Task-3300626
closesodoo/odoo#121342
Signed-off-by: Warnon Aurélien (awa) <awa@odoo.com>
The PoS needed improvments for the mobile use.
This commit is changing the display of some screen and popups
like the NumberPopup. It also changes the logic of the
order count badge on the table. It now displays the number
of orderline (and their quantity) to send to the printers
or preparation display if there is at least one.
closesodoo/odoo#121286
Related: odoo/enterprise#41013
Signed-off-by: Monnom David (moda) <moda@odoo.com>
When creating a scrap order on a product which has at least one kit BoM, an option is added to create a scrap order for this kit.
The user can select from the kit BoMs of this product and the scrap order will add stock moves for all the components of the selected kit instead of for the product itself.
Task: 2479234 (nr 9)
Community PR: https://github.com/odoo/odoo/pull/114315
Enterprise PR: https://github.com/odoo/enterprise/pull/37764
Part-of: odoo/odoo#114315
Allows to close an MO even when all consumed components are 0.
To avoid cancelling the MO immediately when it is confirmed without any
raw moves, a change was also implemented in stock_move to skip the
check to remove the linked MO in case `skip_mo_check` is set in the
context.
Task: 2479234 (nr 7)
Community PR: https://github.com/odoo/odoo/pull/114315
Enterprise PR: https://github.com/odoo/enterprise/pull/37764
Part-of: odoo/odoo#114315