When updating the qty on a confirmed sale order line,
we want the system to add new procurement qty
for the cancelled procurements. That way you can
leave the cancelled procurements for what they are.
As for consumables stock levels are not that important,
it should be ok to scrap a consumable at all times,
even if the stock becomes negative.
Tests were added to check what happens with a consumable/stockable
product if stays positive/goes negative.
Purpose
=======
Currently, if we remove the salesman on the lead, the sales team will
be replace by either the sales team of the current user or the default
sales team.
That way, by removing the salesman, we loose information about the sales
team, and that way we loose information about the origin of the lead.
Specification
=============
Don't overwrite the sales team when removing the salesman on the
the lead.
The field was already declared in base but added in the view in point_of_sale
only.
Remove the duplicated field definition on the model.
Closes#25070Fixes#13544
Before this fix, we can create a Bom with both product_id and
product_tmpl_id filled where the product_id is not a variant of the
product_tmpl_id. This is unlogical and will be even trickier when the
user is not able to see the variant field on the BOM.
This fix puts the product_id back to False when the product_tmpl_id
is changed.
Before this commit, if a SyntaxError or any other exception occurs in a
qweb attribute, and the path to the node contains at least one
namespaced tag, e.g.:
<mynode:node xmlns:mynode="http://example.com/mynode">
<field t-att-value="'This is a TypeError' + []"/>
</mynode:node>
the following exception is raised, instead of the actual one:
lxml.etree.XPathEvalError: Undefined namespace prefix
After this commit, if the path to the failing node contains a namespaced
tag, the node is not retrieved, to avoid the above exception, So this
one will be raised:
Error to render compiling AST
TypeError: Can't convert 'list' object to str implicitly
Template: module.template_name
Path: /templates/mynode:node/field
In addition, a test case was included, to ensure this works as expected
Closes#24824
opw-1853232
We are looping twice on docs. To have a minimal diff we just try to reuse
existing variable but with loops correctly taken into account.
Closes#25008 .
Steps to reproduce the bug:
- Create a stockable product P tracked by serial number with route BUY
- Create PO with 5 P and validate the PO
- On the picking, just set one serial number and create a backorder
- Go on the backorder
Bug:
8 lines were created:
- 4 lines with one reserved quantity
- 4 lines with no reserved quantity
Now only 4 lines with one reserved quantity are created.
opw:1847714
The parent commit allows to select a specific interval for any
date or datetime field in the groupby menu. This makes some filter
akward, for instance "Order Month".
Accordingly, we have rewritten the string and help attributes in
search views archs and removed groupbys related to the same field
(that would have become redundant).
In this commit, we extend the search view to allow the selection
of some intervals for date or datetime fields in groupby menu.
The valid intervals are day, week, month, quarter, and year.
It is also possible to add a button 'Group By' in the control panel
owned by a graph view in case it is declared 'embedded' (e.g. in a
dashboard view).
Note that have three new generic reusable widgets have been introduced
in this commit: DropdownMenu, GroupByMenu, and FiltersMenu.
We added a model to work easily with packages, using the quant packages
was not a good solution to move entire package and plan package moves,
because we always had to give the picking in context, and create some
move lines, so it was only possible when state was assigned (when move
lines exists)
So we created a model package level, linked to picking, move and move
lines allowing to easily plan package transfer and put in pack.
Fixes#10381 (wrong calculation on datetime)
if worked hours > 24h, calculation is wrong because "seconds" funtion does not take into account days
See: https://docs.python.org/2.4/lib/datetime-timedelta.html
total_seconds() should be used instead of seconds function
If the user only fills move lines and not move, this method will create
the needed ones. When creating them, a picking_type_id was not set.
task-1830757
On the picking type form, the default source location is not mandatory
for 'customer' picking types. If this field is empty, creating a
'customer' picking will set a vendor location as source one.
task-1830757
Before this commit, linking was enable for pivot view of model sale.report.
User that click on a cell will be redirected on a default view list/form
with all fields.
Now linking is disabled.
If you want to open the sale order on click, you need to start with the
pivot view from model sale.order.
This commit closes#25079
Moves this class in an Odoo module so that other addons are able to
require and include the class in order to add different helpers.
This will be usefil in the `stock_barcode` module that will add a `scan`
helper.
Before this commit, you can set the question of a post like the post itself.
That will generate a traceback:
RecursionError: maximum recursion depth exceeded in comparison
Now we check that there is no recursion
Easypost return multiple tracker links for a single
picking. Currently it returns one link per package.
*_get_tracking_link instead of returning a simple string,
it could return a list of list with data
[[tracker number, tracker_puclic_url], ...]
stored as a json dump.
This commit add a check on carrier_tracking_url
in order to check if it has a json format. In this case it
will log a note and will not use the url action.
If a barcode triggering an action on the pager was scanned while a pager
wasn't present in the page (see the workorder tablet view), a traceback
happened.
We display a warning instead.
Task: 1831245
This commit allows multiple button to share the same `barcode_trigger`
attribute. Note that it only makes sense if a single button is displayed
at a time.
Task: 1831245