7fcf38ca82b11fc3bd89f9f96cb71c342361a1e4
_fp_try_autofinish_on_drain guarded on _fp_has_real_incoming() — the WRONG direction. The first stage (e.g. Racking) is fed by the qty_at_step seed, not an incoming move, so it never auto-finished when all its parts were sent forward (operator sent everything out of Racking, step stayed in_progress at qty 0). Now guards on a real OUTGOING move (parts left), which covers the seeded first stage. Still best-effort + gated: button_finish runs the required-input / sign-off gates, so a step with an unrecorded required input (Racking's "Count the Parts") won't auto-finish — it stays in_progress for a manual finish after the input is recorded. Verified on entech. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Description
Odoo 19 custom modules
Languages
Python
57.7%
HTML
23.9%
JavaScript
14.9%
SCSS
2.2%
CSS
0.8%
Other
0.4%