# User Guide This guide is intended for club managers who use the FUJ Management system for day-to-day operations. ## 🛠 Operational Workflow To keep the club finances up-to-date, follow these steps periodically (e.g., once a week): 1. **Sync Bank Transactions**: Run the sync script to pull the latest payments from Fio. ```bash make sync ``` 2. **Infer Payments**: Let the system automatically tag who paid for what. ```bash make infer ``` 3. **Manual Review (Google Sheets)**: Open the Google Spreadsheet. Check rows with the `[?]` prefix in the `Person` column—these require human confirmation. - If correct: Remove the `[?]` prefix. - If incorrect: Manually fix the `Person` and `Purpose`. - If a payment covers a special case: Use the **exceptions** sheet to override expected fees. 4. **Check Reconciliation Dashboard**: Start the web app to see the final balance report. ```bash make web ``` Navigate to `http://localhost:5001/reconcile`. --- ## 📊 Understanding the Dashboard ### Reconciliation Page - **Green (OK)**: Member has paid exactly what was expected (or more). - **Orange (Partial)**: Some payment was received, but there's still a debt. - **Red (UNPAID)**: No payment recorded for this month. - **Blue (SURPLUS)**: Payment received for a month where no fee was expected. ### Handling Debts If a member is in debt, you can click on the unpaid/partial cell to get a **QR Platba** link. You can send this link or screenshot to the member to facilitate quick payment. --- ## ❓ FAQ & Troubleshooting ### Why is a payment "Unmatched"? A payment stays unmatched if neither the sender name nor the message contains recognizable member names or nicknames. - **Fix**: Manually enter the member's name in the `Person` column in the Google Sheet. ### How do I handle a "Family Discount" or "Prepaid Year"? Use the `exceptions` sheet in the Google Spreadsheet. 1. Add the member's name (exactly as it appears in attendance). 2. Enter the month (e.g., `2026-03`). 3. Enter the new `Amount` (use `0` for prepaid). 4. Add a `Note` for clarity. ### The web app is slow to load. The app fetches data from Google Sheets API on every request. This ensures real-time data but can take a few seconds. The "Performance Breakdown" footer shows exactly where the time was spent. ```