Skip to content

Conversation

@Felicious
Copy link
Contributor

@Felicious Felicious commented Oct 13, 2025

19.0: Update behavior of Multiple field in reordering rules and introduces packaging-based configuration

Changelog

  • Reverts replenishment behavior to match v17:
    • Odoo now selects the multiple that exceeds the defined Max quantity, rather than stopping below it (as in v18).
  • Multiple values are now defined using packagings instead of numeric quantities.

Example

If Multiple = 3, set a 'pack of 3' and assign as a unit on the vendor pricelist. On replenishment report, set Multiple = 'pack of 3' and Max = 20, and 7 pack of 3s are ordered, equaling 21 units.

@Felicious Felicious requested a review from jero-odoo October 13, 2025 23:48
@robodoo
Copy link
Collaborator

robodoo commented Oct 13, 2025

Pull request status dashboard

Comment on lines 222 to 226
.. image:: reordering_rules/multiple.png
:alt: Reordering rule with the Multiple set to 6.

Once ordered, the |RFQ| shows a :guilabel:`Quantity` of `7`, and the :guilabel:`Unit` is `Pack of
6`. When receiving, the :guilabel:`Quantity` is `42`.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @jero-odoo ! Some images to aid your review of the workflow (: A screenshot of the RFQ that was generated after clicking "Order" on the replenishment report, then the receipt that was generated after confirming the RFQ.

Image Image

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could be interesting to explain that, on the picking, the qty is specified in the unit of the product (stock unit) but there are additional columns (hidden by default) that will show the packaging unit and qty.

@C3POdoo C3POdoo requested a review from a team October 13, 2025 23:50
Comment on lines +232 to +237
Configuration
~~~~~~~~~~~~~

Multiples are based on defined :doc:`packagings <../../product_management/configure/packaging>`.
Only packaging types listed on the product's :doc:`vendor pricelist
<../../../purchase/products/pricelist>` appear as options in the :guilabel:`Multiple` field when
configuring reordering rules.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure what to do with this part structurally. It looks so short to deserve a heading but it also gets kinda lost without one.

Image

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe better to replace line 211 - 212 with this info.
and maybe adapt the example of L215 to specify that the vendor is selling in pack of 6 or pallet of 180 but we want to round to pack of 6 by default something like that

@Felicious
Copy link
Contributor Author

Hi @jero-odoo ! This series of 17, 18, and 19 changes are ready for review! Since the updates are so small, I think it's reasonable to add points for only this 19.0 PR that has the most lines, and the other two are such small line changes that I don't think need to count for points.

@Felicious Felicious added the 2 label Oct 14, 2025
Comment on lines 219 to 220
The :guilabel:`Max` of the reordering rule is `40`, so Odoo calculates the amount :guilabel:`To
Order` to be `42`—the smallest multiple of six that reaches or exceeds the maximum.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is not accurate, it depends on the min qty (and forecast)
If the min is 10 as soon as the forecasted qty is 10 or lower it will consider we need to reorder the qty to reach the max qty.
If forecast is 10 and max is 40 --> to reorder = 30 it's a multiple of 6 so OK
If forecast is 8 and max is 40 --> to reorder = 32 but it's not a multiple of 6 so it will order 36.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for the clear example! I've clarified the wording and added the example into the text (:

Comment on lines 222 to 226
.. image:: reordering_rules/multiple.png
:alt: Reordering rule with the Multiple set to 6.

Once ordered, the |RFQ| shows a :guilabel:`Quantity` of `7`, and the :guilabel:`Unit` is `Pack of
6`. When receiving, the :guilabel:`Quantity` is `42`.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could be interesting to explain that, on the picking, the qty is specified in the unit of the product (stock unit) but there are additional columns (hidden by default) that will show the packaging unit and qty.

Comment on lines +232 to +237
Configuration
~~~~~~~~~~~~~

Multiples are based on defined :doc:`packagings <../../product_management/configure/packaging>`.
Only packaging types listed on the product's :doc:`vendor pricelist
<../../../purchase/products/pricelist>` appear as options in the :guilabel:`Multiple` field when
configuring reordering rules.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

maybe better to replace line 211 - 212 with this info.
and maybe adapt the example of L215 to specify that the vendor is selling in pack of 6 or pallet of 180 but we want to round to pack of 6 by default something like that

Comment on lines 403 to +439
Visibility days extend the standard just-in-time replenishment logic by looking beyond the
immediate forecasted date. To fully understand how Odoo determines when replenishment is
triggered, refer to the :doc:`Just-in-time logic <just_in_time>`
triggered, refer to the :doc:`Just-in-time logic <just_in_time>` article.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is no more visibility days in 19.0, we can talk about the horizon instead

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

omg, right. thanks for the reminder! I'll fix this part in a follow-up PR

@Felicious Felicious force-pushed the 19.0-inventory-multi-qty-feku branch from 752be14 to f8ab270 Compare October 26, 2025 01:14
@Felicious
Copy link
Contributor Author

Hi @jero-odoo ! this PR is ready for review (:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants