| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Inventory (stock) |
| Lines of code | 916 |
| Technical Name |
oct_stock_adjustment_approval |
| License | OPL-1 |
| Website | https://www.octagotech.com |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Inventory (stock) |
| Lines of code | 916 |
| Technical Name |
oct_stock_adjustment_approval |
| License | OPL-1 |
| Website | https://www.octagotech.com |
Two-level approval workflow for inventory adjustments in Odoo 18 — Branch Manager → Final Approver,
with real-time stock drift detection, quantity risk checks, and automated reminder notifications.
Please send your inquiry via E-mail to know more about this application.
Key Features
Two-Level Approval Workflow: Branch Manager (L1) → Final Approver (L2).
Stock Quantity Snapshot at Submission — Live Qty Tracked Per Line.
Stock Drift Detection with Configurable Tolerance — Warns Final Approver If Qty Changed.
Override & Approve, Recalc Lines, or Reject — Full Control at L2.
Branch Manager Configured Per Warehouse — Each Branch Has Its Own L1 Approver.
Role-Based Access Control — L1 Sees Only Own Warehouse; L2 Gets Full Access.
Automatic Daily Reminder Emails to Pending Approvers via Scheduled Cron.
Pre-Loaded Reason Codes: Cycle Count, Damaged, Expired, Lost, Pulled Wrong, and more.
Rejection with Recorded Level, Reason, and Rejector — Full Audit Trail.
Stock Is Applied Only After Final L2 Approval — No Unauthorized Adjustments.
How it Works
Go to Inventory → Configuration → Settings
→ Inventory Adjustment Approval
and enable the approval toggle. Set Final Approvers (Level 2) and the Stock Drift Tolerance
threshold.
Branch Managers (Level 1) are configured per warehouse under Inventory → Configuration →
Warehouses. Go to Inventory → Operations → Adjustment
Request
and create a new request. Select the warehouse, choose an adjustment reason code (e.g. Cycle Count,
Damaged, Expired),
and add product lines with the expected quantities. Live stock quantities are shown alongside each
line. On submission, the system snapshots the
current on-hand quantity
for every line ( The Branch Manager opens their activity,
reviews all lines and quantities,
then clicks Approve (Branch Manager). The request moves to The Final Approver sees the live drift
warning banner if any product's
on-hand quantity changed beyond the configured tolerance since submission.
They can choose: Final Approve (if drift is acceptable), Override & Approve
(ignore drift),
Recalc Lines (reset quantities to current stock), or Reject. Once the Final Approver clicks Final
Approve,
the system writes the adjusted quantities directly to
Pre-Loaded Adjustment Reason Codes
FAQ'S?
You're not alone! Here are the most common questions about setting up the Inventory Adjustment Approval
module.
It enforces a two-step process before any inventory adjustment is applied to stock.
First the Branch Manager (Level 1) reviews the request for their warehouse.
Then the Final Approvers (Level 2) perform the final validation and the adjustment is written to
stock
only after their approval. Neither approver can skip the other's level.
When a request is submitted, the system records the on-hand quantity for every line (qty_at_submission).
When the Final Approver reviews the request, the system re-reads the live quantity (qty_at_confirmation)
and computes the absolute difference (drift). If any line's drift exceeds the configured
tolerance,
the approver sees a warning and must choose to Override, Recalculate, or Reject — preventing stale
approvals.
Go to Inventory → Configuration → Warehouses, open any warehouse, and set the
Branch Manager field. The selected user is automatically granted the
Inventory Adjustment L1 Approver security group and will only see adjustment requests
for their own warehouse.
Go to Inventory → Configuration → Settings → Inventory Adjustment Approval,
enable the approval checkbox, and add users in the Final Approvers (Level 2) field.
All listed users receive activity notifications when a request passes L1 approval.
You can also set the Stock Drift Tolerance here (default is 5 units).
A rejection wizard appears requiring a written reason. The request is moved to Rejected
state and the record stores the rejection level (L1 or L2), the written reason, and the user who
rejected it.
A chatter message is posted for full audit visibility. The requester can then reset to Draft and
resubmit.
A scheduled cron job (Inventory Adjustment Approval: Daily Reminder) runs once a day.
For every request in pending_l1 state it emails the Branch Manager.
For every request in pending_l2 state it emails all Final Approvers.
Each email contains a direct link to the request and notes the reason and requester.
We offer a wide range of
services to help your business thrive. Explore how we can assist you. At OctagoTech we offer end
to end solution for Odoo services which includes analysis & consultation on workflows and
integrations.
Inventory Adjustment Approval
USER GUIDE
How it works? Click Here
GET PERSONALIZED DEMO
1. Configure Approval Settings
2. Branch Staff Creates Adjustment Request
3. Submit — Quantity Snapshot & L1 Notification
qty_at_submission). The Branch Manager receives an activity
notification and
an automated daily reminder email until they act.
4. Branch Manager Reviews & Approves (Level 1)
pending_l2 and all
configured
Final Approvers receive an activity notification. If they reject, a wizard prompts for a written
reason
which is logged on the record with the rejection level.
5. Final Approver Reviews, Checks Drift & Approves
(Level 2)
6. Stock Applied Automatically After L2 Approval
stock.quant —
no manual steps required. The request records the approver, date, and all line details for a
complete audit trail.
Need Help With Inventory Approval
Setup?
What does the two-level approval workflow do?
What is Stock Drift Detection?
Where do I set the Branch Manager for a warehouse?
How do I configure the Final Approvers (Level 2)?
What happens when a request is rejected?
How do the daily reminder emails work?
Our Services
🔹 Get Support, For Free!
30 Days Free Support
Book Your Personalised Demo Right Away
Need Help or Support?
📧 info@octagotech.com
New York, NY 10016
Near Doshi Hospital
Nr. Kiran Motors, SG Road
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module