Your vendor promised delivery on 20/11/2026 and you entered it on the confirmed order. A few days later, they can ship five more units: you change the quantity… and Odoo replaces the agreed date with its own, then splits the receipt in two. Here is why standard Odoo behaves this way, what it costs your logistics, and how our Keep PO Arrival Date module keeps the date in place.
1. Standard Odoo recomputes the date on every quantity change
On a purchase order line, Odoo computes the price and the Expected Arrival in one single computation. As soon as the product has a vendor pricelist, any change to the quantity (or the unit of measure) triggers it again, including on an order that is already confirmed. The Expected Arrival then reverts to order date + vendor lead time.
Take an example: order P00042 dated 05/10/2026, vendor lead time of 5 days, delivery agreed for 20/11/2026. You change the quantity from 10 to 15: the Expected Arrival jumps to 10/10/2026. The date negotiated with the vendor is lost, with no message or warning.
This is not a bug in one isolated version: the condition sits in the code of Odoo 18, 19 and 20, and was already there in 17.
💡 Key takeaway
In standard Odoo, a confirmed order does not protect its arrival date: changing the quantity is enough to replace it with “order date + vendor lead time”.
2. A receipt split in two, or an unexpected return
The damage does not stop at the date. To decide whether a quantity change can update the existing stock move, Odoo compares several criteria, including the date. Since the date has just changed, the two no longer match:
- an increase creates a second move in the receipt: from 10 to 15, you get two lines, one of 10 at the old date and one of 5 at the new one;
- a decrease creates a return to the vendor, even though nothing has been received yet.
In the warehouse, the receipt no longer reflects what the vendor will deliver, and the arrivals schedule shows a date nobody agreed to.
💡 Key takeaway
The date is part of what lets Odoo merge stock moves. A recomputed date means a split receipt or a return that should never exist.
3. Keep PO Arrival Date: the agreed date stays
Our module acts on confirmed order lines, and on those only:
- the Expected Arrival keeps its value when you change the quantity;
- the new quantity updates the existing move: from 10 to 15, the receipt shows a single line of 15, at the same date, and a decrease no longer creates a return;
- prices and descriptions are still recomputed as before;
- on Odoo 20, it also aligns the deadline of new moves with the promised date.
There is nothing to configure, no field added, nothing written to the database on installation. The module remembers the date before the standard computation and puts it back afterwards, in memory: no extra call, whether the order has three lines or three hundred.
💡 Key takeaway
Change the quantity, the agreed date stays, and the receipt keeps a single move.
4. What the module deliberately does not do
The freeze applies to confirmed lines only. This is a deliberate choice: while you are at the Request for Quotation stage, the standard recomputation is useful, for instance to follow a change of vendor and its own lead time. RFQs therefore keep Odoo’s behaviour.
The downside: if you edit an RFQ after entering a date on it, that date can still be recomputed. And a date you enter by hand always applies, on an RFQ as on a confirmed order: the module protects the agreed date, it does not stop you from changing it.
If this kind of default behaviour regularly catches you out in purchasing, it is often a sign that a setting or a team habit deserves a review. Targeted Odoo training on the purchase-to-receipt flow saves a great deal of manual correction.
💡 Key takeaway
RFQ: standard behaviour. Confirmed order: the date stays. Manual entry: always taken into account.
⚔️ The Match: standard Odoo vs Kameos module
| Criterion | Standard Odoo | Keep PO Arrival Date |
|---|---|---|
| Quantity changed on a confirmed order | Expected Arrival recomputed (order + lead time) | The agreed date stays |
| Increase from 10 to 15 | Two moves: 10 and 5 | A single move of 15 |
| Quantity decrease | Return to vendor | Existing move updated |
| Request for Quotation | Date recomputed | Date recomputed (unchanged) |
| Date entered by hand | Applied | Applied |
| Configuration | — | None |
Behaviour checked by the module’s automated tests: product with a vendor pricelist, confirmed line, quantity raised from 10 to 15 then reduced. Module at €10, for Odoo 18, 19 and 20, Community and Enterprise, OPL-1 licence.
🛒 On the Odoo App Store
Keep PO Arrival Date is on sale on the official Odoo App Store, for 10 € (Odoo 18, 19 and 20): see the module page.
The Verdict: an agreed date should not change on its own
Automatic recomputation makes sense while the order is only a Request for Quotation. Once confirmed, the arrival date is a commitment from the vendor: Keep PO Arrival Date protects it, and the receipt stays true to what will actually arrive. For €10, on Odoo 18, 19 or 20.
Want to install the module, or find out which other automations in your purchasing flow are costing you time? Contact us, or start with an
audit of your Odoo processes.
Your vendor promised delivery on 20/11/2026 and you entered it on the confirmed order. A few days later, they can ship five more units: you change the quantity… and Odoo replaces the agreed date with its own, then splits the receipt in two. Here is why standard Odoo behaves this way, what it costs your logistics, and how our Keep PO Arrival Date module keeps the date in place.
1. Standard Odoo recomputes the date on every quantity change
On a purchase order line, Odoo computes the price and the Expected Arrival in one single computation. As soon as the product has a vendor pricelist, any change to the quantity (or the unit of measure) triggers it again, including on an order that is already confirmed. The Expected Arrival then reverts to order date + vendor lead time.
Take an example: order P00042 dated 05/10/2026, vendor lead time of 5 days, delivery agreed for 20/11/2026. You change the quantity from 10 to 15: the Expected Arrival jumps to 10/10/2026. The date negotiated with the vendor is lost, with no message or warning.
This is not a bug in one isolated version: the condition sits in the code of Odoo 18, 19 and 20, and was already there in 17.
💡 Key takeaway
In standard Odoo, a confirmed order does not protect its arrival date: changing the quantity is enough to replace it with “order date + vendor lead time”.
2. A receipt split in two, or an unexpected return
The damage does not stop at the date. To decide whether a quantity change can update the existing stock move, Odoo compares several criteria, including the date. Since the date has just changed, the two no longer match:
- an increase creates a second move in the receipt: from 10 to 15, you get two lines, one of 10 at the old date and one of 5 at the new one;
- a decrease creates a return to the vendor, even though nothing has been received yet.
In the warehouse, the receipt no longer reflects what the vendor will deliver, and the arrivals schedule shows a date nobody agreed to.
💡 Key takeaway
The date is part of what lets Odoo merge stock moves. A recomputed date means a split receipt or a return that should never exist.
3. Keep PO Arrival Date: the agreed date stays
Our module acts on confirmed order lines, and on those only:
- the Expected Arrival keeps its value when you change the quantity;
- the new quantity updates the existing move: from 10 to 15, the receipt shows a single line of 15, at the same date, and a decrease no longer creates a return;
- prices and descriptions are still recomputed as before;
- on Odoo 20, it also aligns the deadline of new moves with the promised date.
There is nothing to configure, no field added, nothing written to the database on installation. The module remembers the date before the standard computation and puts it back afterwards, in memory: no extra call, whether the order has three lines or three hundred.
💡 Key takeaway
Change the quantity, the agreed date stays, and the receipt keeps a single move.
4. What the module deliberately does not do
The freeze applies to confirmed lines only. This is a deliberate choice: while you are at the Request for Quotation stage, the standard recomputation is useful, for instance to follow a change of vendor and its own lead time. RFQs therefore keep Odoo’s behaviour.
The downside: if you edit an RFQ after entering a date on it, that date can still be recomputed. And a date you enter by hand always applies, on an RFQ as on a confirmed order: the module protects the agreed date, it does not stop you from changing it.
If this kind of default behaviour regularly catches you out in purchasing, it is often a sign that a setting or a team habit deserves a review. Targeted Odoo training on the purchase-to-receipt flow saves a great deal of manual correction.
💡 Key takeaway
RFQ: standard behaviour. Confirmed order: the date stays. Manual entry: always taken into account.
⚔️ The Match: standard Odoo vs Kameos module
| Criterion | Standard Odoo | Keep PO Arrival Date |
|---|---|---|
| Quantity changed on a confirmed order | Expected Arrival recomputed (order + lead time) | The agreed date stays |
| Increase from 10 to 15 | Two moves: 10 and 5 | A single move of 15 |
| Quantity decrease | Return to vendor | Existing move updated |
| Request for Quotation | Date recomputed | Date recomputed (unchanged) |
| Date entered by hand | Applied | Applied |
| Configuration | — | None |
Behaviour checked by the module’s automated tests: product with a vendor pricelist, confirmed line, quantity raised from 10 to 15 then reduced. Module at €10, for Odoo 18, 19 and 20, Community and Enterprise, OPL-1 licence.
🛒 On the Odoo App Store
Keep PO Arrival Date is on sale on the official Odoo App Store, for 10 € (Odoo 18, 19 and 20): see the module page.
The Verdict: an agreed date should not change on its own
Automatic recomputation makes sense while the order is only a Request for Quotation. Once confirmed, the arrival date is a commitment from the vendor: Keep PO Arrival Date protects it, and the receipt stays true to what will actually arrive. For €10, on Odoo 18, 19 or 20.
Want to install the module, or find out which other automations in your purchasing flow are costing you time? Contact us, or start with an
audit of your Odoo processes.