Steps to reproduce:
- Enable advanced routes on the Warehouse config
- Set the route "Pick+Pack+Ship" on the YourCompany Warehouse
- Set the route "Pick+Pack+Ship" to be selectable on the SO-Line
- Create a SO with the SO-Lines containing this routes, confirm, 3
pickings are created
- Force the availability of the Picking to the customer, transfer.
The Picking is set to draft, a backorder is created containing all
products which should have been transferred. It is not possible to
transfer this newly backorder neither, the same thing happens on the
backorder.
When rereserving while doing the transfer, it should not change the
state of the move as it would forget when availability was forced.
opw-683740
Fiscal position was setted by onchange before commit #55535a6
Now, we need to call the onchange_shipping_id to set the fiscal position.
In case where the owner of the sale order is the public user, instead to
use the fiscal position from public user, we try to guess it with the
geolocation.
/!\ This is a backport from saas-10
When duplicating a question in the FAQ Roller snippet, the cloned
question was opening the original answer instead of its own answer.
_get_asset_method returns None as it sets a value on a recordset. What we do
here is simply copying the computation directly in the default get to have a
correct value instead of None. This has probably been introduced when
migrating the module at the new API at commit 6120babb45.
Since saas-3, website controllers use `request.website.render`
to render the template of a web page. This was kept for retro
compatibility. It's time to stop using deprecated stuff.
Same for `_render` method on website.
'json' route don't use `request.render` since
`JsonRequest` has no `render` method.
Migration of website module to new API.
The tricky phase is ir_http.py : we need to use `request.env`
only when the authenfication phase is done. Normally by
calling `super` of `_dispatch` method, but website module
required it to be done before. This is important since
`env`is a lazy property of `request` object.
Some hack were kept since this commit is a migration ('RequestUID'
in ir.http, ...)
Some docstrings were added.
The routing map should be static. Being calling from the old api (with registry)
there was no problem. But since the new API works with instance, a new instance
of the ir.http model will recreate its own routing map. This should have been
avoid during migration to new api of ir.http . Anyway, this prevent many mistake
for the website migration.
This fixes an issue when a one2many computed field is recomputed: all computed
lines are created twice.
Consider a simple case, where the value of the field is a single line. The
execution goes as follows:
* invoke `recompute()`
* write value `[(5,), (0, 0, vals)]` to the field
* command `(5,)`: invoke `unlink()`
* delete existing lines
* invoke `recompute()`
* write value `[(5,), (0, 0, vals)]` to the field
* command `(5,)`: invoke `unlink()`
* no more existing lines, return
* command `(0, 0, vals)`: invoke `create()`
* create a new line
* mark the field as recomputed
* command `(0, 0, vals)`: invoke `create()`
* create a new line
* mark the field as recomputed
There is a recursive call to `recompute()` inside `unlink()` that recomputes
the field while it is being written. The fix simply prevents the recursive
call to `recompute()`, just like in methods `create()` and `write()`.
The sidebar on the left of the quotation previews was placed with
position fixed in a col-md-3. Position fixed elements have their
width computed according to the window dimensions which is why it
cannot be 100% to fit the col-md-3. To achieve that, the old solution
was to set the width in pixel according to the viewport dimension (and
the size a col-md-3 has in each of this dimension). This was too easily
breakable. Indeed in the avantgarde theme, the .container is set to
smaller dimensions. So the col-md-3 is smaller too and then the fixed
width sidebar overflows.
To achieve the desired behaviour, javascript is needed. In CSS, the
position is set to "relative" and the width to "100%" so that the
sidebar fits the col-md-3 width no matter what. Then on page load and
on window resize, the sidebar is set to position "fixed" and to a
px-based width which equals its current and default 100%-width.
Without this fix, it is possible to confirm a PO which is not in state
'draft' and 'sent'. The issue is that it will create a picking at every
call.
The issue was occurring in Purchase Requisition, which was fixed in
previous commit. However, it makes sense to add a check directly in the
`button_confirm` method.
opw-684347