91 lines
2.8 KiB
Markdown
91 lines
2.8 KiB
Markdown
# Stock Inventory Adjustment Security
|
|
|
|
## Overview
|
|
|
|
This module adds granular security controls for inventory adjustments in Odoo. It allows you to separate the ability to **count inventory** from the ability to **apply adjustments**.
|
|
|
|
## Features
|
|
|
|
- **New Security Group**: "Inventory: Manual Adjustments"
|
|
- **Separation of Duties**:
|
|
- Regular inventory users can view stock and enter counted quantities
|
|
- Only privileged users can apply the adjustments to modify actual stock levels
|
|
- **No Impact on Automatic Operations**: Stock moves from pickings, manufacturing orders, and other automatic operations work normally
|
|
|
|
## Use Case
|
|
|
|
Perfect for organizations that want to:
|
|
- Allow warehouse staff to participate in inventory counts
|
|
- Restrict who can actually modify stock levels
|
|
- Maintain audit trails by limiting adjustment privileges
|
|
- Implement proper inventory control procedures
|
|
|
|
## How It Works
|
|
|
|
### Technical Implementation
|
|
|
|
The module overrides the `write()` method on `stock.quant` to check:
|
|
1. If the operation is in "inventory mode" (manual adjustment context)
|
|
2. If the `quantity` field is being modified
|
|
3. If the user has the required security group
|
|
|
|
The check uses Odoo's built-in `_is_inventory_mode()` method which returns `True` only when:
|
|
- The `inventory_mode` context flag is set (manual adjustments)
|
|
- The user has the `stock.group_stock_user` group
|
|
|
|
### User Experience
|
|
|
|
**Regular Inventory User:**
|
|
- Can navigate to Inventory > Inventory Adjustments
|
|
- Can view current stock quantities
|
|
- Can enter counted quantities in the `inventory_quantity` field
|
|
- **Cannot** click "Apply" to commit the changes
|
|
- Receives clear error message when attempting to apply
|
|
|
|
**Privileged User (with Manual Adjustments group):**
|
|
- Can do everything a regular user can do
|
|
- **Can** click "Apply" to commit inventory adjustments
|
|
- Can modify actual stock quantities
|
|
|
|
## Configuration
|
|
|
|
1. Install the module
|
|
2. Go to Settings > Users & Companies > Users
|
|
3. Edit a user who should be able to apply inventory adjustments
|
|
4. Add them to the "Inventory: Manual Adjustments" group
|
|
|
|
## Testing
|
|
|
|
The module includes comprehensive test coverage:
|
|
|
|
```bash
|
|
# Run all tests
|
|
odoo-bin -d your_database -i stock_inventory_adjustment_security --test-enable --stop-after-init
|
|
|
|
# Run specific test class
|
|
odoo-bin -d your_database --test-tags stock_inventory_adjustment_security
|
|
```
|
|
|
|
### Test Cases
|
|
|
|
- ✅ Regular users can set inventory_quantity (count)
|
|
- ✅ Regular users cannot apply adjustments
|
|
- ✅ Privileged users can apply adjustments
|
|
- ✅ Automatic operations (pickings, etc.) are not affected
|
|
- ✅ Inventory mode detection works correctly
|
|
- ✅ Multiple quant adjustments work correctly
|
|
- ✅ Non-inventory mode writes are not restricted
|
|
|
|
## Compatibility
|
|
|
|
- Odoo 18.0
|
|
- Depends on: `stock`
|
|
|
|
## License
|
|
|
|
LGPL-3
|
|
|
|
## Author
|
|
|
|
Bemade Inc.
|
|
https://bemade.org
|