A Streamlit application for automated journal entry processing using Siigo API. This application allows users to upload, validate, and process journal entries in batch, with support for scheduling recurring entries.
- 📊 Excel template validation and processing
- 🔄 Recurring journal entry scheduling (daily/weekly/monthly)
- 📈 Processing status dashboard
- 📁 Export functionality
- 🔍 Cost centers and document types lookup
- 📝 Comprehensive error logging
- 🔐 Secure API integration
- Python 3.11 or higher
- Siigo API credentials (username and access key)
- Required Python packages (installed automatically)
-
Clone the repository
-
Set up environment variables:
SIIGO_USERNAME: Your Siigo API usernameSIIGO_ACCESS_KEY: Your Siigo API access keySIIGO_API_URL: Siigo API base URL (defaults to https://api.siigo.com)
-
Install dependencies:
pip install -r requirements.txt- Run the application:
streamlit run main.py├── main.py # Main Streamlit application
├── utils/ # Utility modules
│ ├── api_client.py # Siigo API integration
│ ├── excel_processor.py # Excel file processing
│ ├── template_validator.py # Excel template validation
│ ├── scheduler.py # Task scheduling
│ ├── database.py # SQLite database operations
│ └── logger.py # Error logging
├── tests/ # Unit tests
├── assets/ # Static assets
└── templates/ # Documentation templates
The application expects Excel files with the following columns:
document_id: Unique identifier for the documentdate: Transaction date (YYYY-MM-DD)account_code: Account numbermovement: "Debit" or "Credit"customer_identification: Customer IDbranch_office: Branch office numberdescription: Transaction descriptioncost_center: Cost center IDvalue: Transaction amountobservations: Additional notes
See assets/sample_template.xlsx for an example.
- Upload Excel files containing journal entries
- Validate entries against business rules
- Process entries immediately or schedule for later
- View processing results and errors
- Schedule recurring journal entries
- Support for daily, weekly, or monthly processing
- Flexible time selection
- View and manage scheduled tasks
- Search and view cost centers
- Browse document types
- Real-time data from Siigo API
- Comprehensive error logging
- User-friendly error messages
- Detailed validation feedback
api_client = SiigoAPI(username, access_key)
api_client.authenticate()entry_data = {
"document": {"id": document_id},
"date": "2024-01-01",
"items": [
{
"account": {
"code": "11050501",
"movement": "Debit"
},
"customer": {
"identification": "13832081",
"branch_office": 0
},
"description": "Sample entry",
"cost_center": 235,
"value": 119000.00
}
],
"observations": "Sample journal entry"
}
api_client.create_journal_entry(entry_data)Run the test suite:
python -m unittest discover testsLogs are stored in the logs directory with daily rotation:
app_YYYYMMDD.log: Detailed application logs- Error statistics and recent errors visible in UI
- API credentials stored securely in environment variables
- JWT token-based authentication
- Company-specific data isolation
For issues and feature requests, please open an issue in the repository.
This project is proprietary and confidential.