9c742af5850336601b4ae27c68718d0c57451aa9
- Restructured project to use src/stocktool package layout - Migrated to UV for dependency management - Added pyproject.toml with all dependencies (sv-ttk, pillow, requests, pyyaml) - Organized test files into tests/ directory - Updated .gitignore for UV projects - Comprehensive README with installation and usage instructions - Removed old unused files (main.py, stock_tool_gui.py, duplicate copy) - Added CLI entry point: stock-tool command 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
InvenTree Stock Tool
A comprehensive barcode scanning application for InvenTree inventory management.
Features
- Stock Addition: Add stock to inventory by scanning barcodes
- Stock Updates: Update existing stock levels
- Stock Checking: Check current stock levels
- Part Location: Find where parts are stored
- Server Connection Monitoring: Real-time connection status
- Barcode Command Support: Control the app via barcode commands
Requirements
- Python 3.9 or higher
- InvenTree server with API access
Installation
Using UV (Recommended)
# Clone the repository
git clone <repository-url>
cd stocktool
# Install with uv
uv sync
# Run the application
uv run stock-tool
Manual Installation
# Install dependencies
pip install sv-ttk pillow requests pyyaml
# Run the application
python src/stocktool/stock_tool_gui_v2.py
Configuration
Create a configuration file at ~/.config/scan_and_import.yaml:
host: https://your-inventree-server.com
token: your-api-token-here
Required Fields
host: Your InvenTree server URL (without trailing slash)token: Your InvenTree API token
Usage
- Select Location: Scan a location barcode or enter location ID
- Select Mode: Choose operation mode (Add Stock, Update Stock, Check Stock, or Locate Part)
- Scan Parts: Scan part barcodes to perform operations
Barcode Commands
The application supports special barcode commands for quick mode switching:
-
Mode Switching:
MODE:ADD,MODE:IMPORT,ADD_STOCK,IMPORT- Switch to Add Stock modeMODE:UPDATE,UPDATE_STOCK,UPDATE- Switch to Update Stock modeMODE:CHECK,MODE:GET,CHECK_STOCK,CHECK- Switch to Check Stock modeMODE:LOCATE,LOCATE_PART,LOCATE,FIND_PART- Switch to Locate Part mode
-
Debug Control:
DEBUG:ON,DEBUG_ON- Enable debug modeDEBUG:OFF,DEBUG_OFF- Disable debug mode
-
Location Management:
CHANGE_LOCATION,NEW_LOCATION,SET_LOCATION,LOCATION- Change current location
Supported Barcode Formats
The application supports multiple barcode formats:
- JSON-like format:
{PM:PART-CODE,QTY:10} - Separator-based format: Fields separated by
\x1Dor\x1E- Part codes starting with
30Por1P - Quantities starting with
Q
- Part codes starting with
- InvenTree location barcodes:
INV-SL<location_id>
Development
Project Structure
stocktool/
├── src/
│ └── stocktool/
│ ├── __init__.py
│ └── stock_tool_gui_v2.py
├── tests/
│ ├── __init__.py
│ ├── test_add_stock.py
│ ├── test_duplicate_handling.py
│ ├── test_parse_fix.py
│ └── test_stock_level.py
├── pyproject.toml
├── .gitignore
└── README.md
Running Tests
# Using UV
uv run pytest
# Manual
pytest tests/
Building
# Build the package
uv build
# Install locally
uv pip install -e .
License
MIT License
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Description
Languages
Python
68.5%
JavaScript
14.9%
Shell
8.3%
HTML
8.3%