stock_request_tier_validation module extends stock requests with a flexible multi-tier approval system, allowing organizations to define complex validation workflows based on various conditions.
Overview
Module Name:stock_request_tier_validationVersion: 18.0.1.0.0
License: AGPL-3
Dependencies:
stock_request, base_tier_validationAuthor: ForgeFlow, OCA
Maintainers: @LoisRForgeFlow, @etobella
Category: Warehouse
This module implements a comprehensive tier validation process for stock requests and stock request orders, enabling multi-level approvals based on configurable rules.
Key Features
Multi-Tier Approval
- Define multiple validation tiers
- Each tier can have different approvers
- Sequential or parallel approval flows
- Conditional tier activation based on request attributes
Flexible Tier Definitions
- Create tiers based on:
- Request amount/quantity
- Product category
- Requester department
- Warehouse location
- Custom domain filters
Review Management
- Track review status per tier
- View pending reviews
- Filter requests needing your review
- Comment and feedback on reviews
Auto-Approval
- Users with sufficient permissions can bypass tiers
- Direct confirmation if user can validate all required tiers
- Streamlines workflow for authorized users
Installation
Install Tier Validation Module
Navigate to Apps, search for “Stock Request Tier Validation”, and click Install.
Configuration
Default Tier Definition
A default tier is created automatically during installation:- Name: Stock Request Manager Approval
- Model: Stock Request
- Reviewer: Stock Request Manager group
- Domain: All stock requests
Creating Custom Tier Definitions
Navigate to Tier Definitions
Go to Settings > Technical > Tier Validations > Tier Definition.(Requires developer mode enabled)
Create New Definition
Click Create and configure:
- Name: Descriptive name for the tier
- Model: Select “Stock Request” or “Stock Request Order”
- Sequence: Order of evaluation (lower = first)
Define Reviewers
Choose reviewer type:
- Group: All users in a group can review
- User: Specific user must review
- Field: User from a field on the record
- Python Code: Dynamic reviewer determination
Set Conditions
Define when this tier applies:
- Domain: Filter expression
- Python Expression: Complex conditions
[('product_qty', '>', 100)]- Quantities over 100[('requested_by.department_id.name', '=', 'IT')]- IT department requests
Example Tier Configurations
Small Requests (Auto-Approve)
Large Requests (Department Head)
High-Value Requests (Manager)
Usage
Requesting Approval
Create Stock Request
Create stock request as normal:
- Fill in product, quantity, location, date
- Save the request
Check Required Tiers
System evaluates tier definitions:
- Matching tiers are identified
- Reviews tab shows required approvals
Request Validation
Click Request Validation button:
- Request state changes to validation pending
- Reviewers are notified
- Reviews tab shows pending approvals
Track Progress
Monitor approval progress:
- Check Reviews tab for status
- See which tiers approved/pending
- View reviewer comments
Reviewing Requests
Find Pending Reviews
Go to Stock Requests > Stock Requests.Apply filter: Needs my ReviewLists all requests awaiting your approval.
Open Request
Click on a request to review details:
- Review product, quantity, destination
- Check requester and justification
- Verify routing and procurement settings
Navigate to Reviews Tab
Open the Reviews tab:
- See all required tiers
- Your pending reviews highlighted
- View other reviewers’ decisions
Make Decision
Choose action:
- Approve: Click approve button for your tier
- Reject: Click reject to deny request
- Comment: Add explanation or feedback
Direct Confirmation (Authorized Users)
Users who can validate all required tiers can directly confirm without requesting validation.
Data Models
Stock Request (Extended)
Adds tier validation fields:Tier Review Model
Views
Stock Request Form View
Enhanced with tier validation:Search View with Filter
Tier Validation Flow
Validation State Machine
Approval Process
Tier Evaluation
System evaluates all tier definitions:
- Checks domain conditions
- Identifies matching tiers
- Orders by sequence
Review Creation
Creates review records:
- One per matching tier
- Assigns reviewers
- Sets to pending status
Sequential Approval
If approve sequence enabled:
- Tier 1 must approve first
- Then Tier 2 becomes available
- Continues sequentially
Parallel Approval
If approve sequence disabled:
- All tiers available simultaneously
- Reviewers can approve in any order
- All must approve to complete
Use Cases
Budget-Based Approvals
Scenario: Different approval levels based on request value. Configuration:- Tier 1: Team Lead (value < $1000)
- Tier 2: Department Head (5000)
- Tier 3: Finance Director (> $5000)
Department-Specific Workflows
Scenario: Different approval chains per department. Configuration:Product Category Validation
Scenario: Certain product categories need special approval. Configuration:Best Practices
Tier Design
Domain Configuration
Reviewer Assignment
Communication
Advanced Configuration
Python Expression Conditions
For complex conditions:Dynamic Reviewer Assignment
Conditional Tier Activation
Activate tiers based on time or other factors:Troubleshooting
Tier Not Triggering
Problem: Expected tier not appearing for a request. Solutions:- Check domain filter matches request
- Verify tier is active (not archived)
- Test domain in developer console
- Check tier model matches (stock.request vs stock.request.order)
- Review tier sequence and prerequisites
Cannot Confirm After Approval
Problem: Confirm button not appearing after all tiers approved. Solutions:- Verify ALL tiers are approved (check Reviews tab)
- Check user has permission to confirm
- Ensure request in correct state (should be draft)
- Look for validation errors in logs
Needs My Review Filter Empty
Problem: Filter shows no results despite pending reviews. Solutions:- Verify you’re assigned as reviewer for relevant tiers
- Check group membership if tier uses group reviewers
- Refresh the view
- Check if reviews already completed by you
Wrong Reviewer Assigned
Problem: Tier assigned to unexpected reviewer. Solutions:- Review tier definition reviewer configuration
- Check if using field-based or Python code reviewer
- Verify user/group data is correct
- Test reviewer assignment logic
Performance Considerations
Optimization Tips
- Simple Domains: Use simple domain filters when possible
- Index Fields: Ensure fields used in domains are indexed
- Cache Reviewers: Use groups instead of dynamic reviewer calculation
- Limit Tiers: Keep number of tiers to minimum necessary
- Batch Processing: Process tier evaluations in batch when possible
Integration Examples
Programmatic Review Approval
Custom Validation Logic
Comparison: Submit vs Tier Validation
| Feature | Stock Request Submit | Tier Validation |
|---|---|---|
| Approval Tiers | Single (submitted → confirmed) | Multiple configurable tiers |
| Complexity | Simple | Advanced |
| Conditional Logic | No | Yes (domain-based) |
| Review Tracking | Basic state | Detailed per tier |
| Use Case | Simple approval | Complex workflows |
| License | LGPL-3 | AGPL-3 |
- Use Submit for simple single-approval workflows
- Use Tier Validation for complex multi-tier requirements
Related Modules
Stock Request Core
Base stock request functionality
Stock Request Submit
Alternative: Simple submission workflow
Base Tier Validation
Core tier validation framework (OCA/server-ux)
