Since odoo/odoo#75823, the wizard lines have the field uom_id related to
move.product_uom and readonly=False, so if you call directly to
wiz.onchage_picking_id a write in stock move is executed and the warning raises,
although we don't really do any UoM change.
We avoid it using the `Form` to perform the wizard update.
Having a default responsible value as it was defined doesn't behave
right when the user it's a portal one or the petition comes from a
sudo().
Also, by design it was expected to have a default team if it wasn't
defined, but as it was implemented that wasn't possible.
TT32056
Now it's possible to configure if the portal RMA request form is loaded
in a popup or in a single page.
In that page, we can add custom blocks (if the website is installed) a
customize the form text.
In this commit, we also add the possibility to extend the form view to allow
custom fields that will show up in the RMA description.
TT29670
Using move_dest_ids we can easily end in an infinite loop situation as
the return of the return of the return ends with some original moves on
in move_dest_ids. We must ensure to drop them to avoid the infinite
loop.
TT29886
Lesser fix for sale.order.line.rma.wizard methods.
When method '_prepare_rma_values' was called upon records where field 'picking_id' was empty, Odoo raised a CacheError when trying to access field 'move_id'.
That happened because computed method '_compute_move_id' was not assigning a proper value to such field when 'picking_id' was empty.
Once the computed method is fixed (by simply assigning 'False' as 'move_id' value when no picking is set), the CacheError is solved.
Lesser fix for creating RMA from website.
Current values will break any custom behaviour because Many2one fields are set using strings instead of integer (IDs).
When a sale line has a phantom product (mrp kits) the RMA would not be
possible as the wizard couldn't pair the components moves with the
product in the line. With this approach, we can at least return the
spare components of the original kit line.
We also need some hooks to intervine in the main methods, like in
invoicing.