Commit Graph

260 Commits

Author SHA1 Message Date
Christian
94781227b2 Fix: Implementeret pagination i vTiger sync for at hente ALLE kunder (batch size 200) 2025-12-22 12:53:11 +01:00
Christian
af6e868828 Fix: Tilføjet manglende VTIGER_ENABLED og ECONOMIC_ENABLED fields i Settings 2025-12-22 11:44:13 +01:00
Christian
187b72238d Fix: Fjernet LIMIT fra vTiger sync for at hente ALLE kunder og kontakter 2025-12-22 11:39:07 +01:00
Christian
e8be92d187 Fix: CVR unique constraint - tillad multiple kunder uden CVR nummer 2025-12-22 11:35:16 +01:00
Christian
41f7ae991c Fix: Rettet test-economic endpoint - fjernet ikke-eksisterende get_self() kald 2025-12-22 11:17:36 +01:00
Christian
7fd596612c Feature: Tilføjet /api/v1/system/test-economic endpoint til at teste e-conomic API forbindelse 2025-12-22 11:15:16 +01:00
Christian
35447cbd4f Feature: Tilføjet /api/v1/settings/sync-from-env endpoint til at synkronisere .env værdier ind i settings database 2025-12-22 11:04:09 +01:00
Christian
180ae7f650 Fix: Tilføjet manglende msal dependency til email service 2025-12-22 11:01:30 +01:00
Christian
c5ce819a15 Fix: Rettet typo i e-conomic sync (verifiot_matched_count → verified_count) og tilføjet not_matched til return value 2025-12-22 10:48:04 +01:00
Christian
8b71524437 Add verified count to e-conomic sync (separate new matches from existing verifications) 2025-12-19 16:56:39 +01:00
Christian
030071e8d5 Improve e-conomic sync: Only match new customers, verify existing ones 2025-12-19 16:54:57 +01:00
Christian
5d8617bed3 Fix: Add pagination for e-conomic customers (max 1000 per page) 2025-12-19 16:53:39 +01:00
Christian
f6303fa804 Fix: Change Customer schema datetime fields to str for proper serialization 2025-12-19 16:45:22 +01:00
Christian
c9af509e1c Implement e-conomic customer sync and CVR search (get_customers + search_customer_by_cvr) 2025-12-19 16:41:11 +01:00
Christian
55478c20d3 Add detailed sync logging with precise changes (oprettet/opdateret/linket med firma/CVR info) 2025-12-19 16:36:41 +01:00
Christian
c8e005dd07 Fix: Only fetchall() when query has RETURNING clause or is SELECT 2025-12-19 16:30:03 +01:00
Christian
3f66bd07e6 Fix: Remove WHERE clauses and cf_854 field from vTiger queries (API doesn't support empty string comparison) 2025-12-19 15:34:49 +01:00
Christian
8bc633d59c Fix: Convert vTiger SQL queries to single-line (API requires no line breaks) 2025-12-19 15:28:25 +01:00
Christian
c2cf8cf5a3 Enhance sync logging with detailed stats (behandlet/oprettet/opdateret/sprunget over) 2025-12-19 15:19:36 +01:00
Christian
ed0491c567 Add showNotification function for sync alerts 2025-12-19 13:24:16 +01:00
Christian
6e2a32165e Fix: Close tags grid div properly in settings
Missing closing div tag and malformed comment caused sync tab to be empty
2025-12-19 13:12:33 +01:00
Christian
7c69cb22e7 Feature: Add sync page to settings
- Add Sync navigation tab in settings
- Sync UI with status cards (total, vTiger, e-conomic)
- Action cards for vTiger and e-conomic sync
- Sync log with real-time updates
- JavaScript functions for sync operations
- Backend sync router with vTiger account sync
- Backend vTiger contacts sync with customer linking
- Placeholder for e-conomic sync (needs get_customers method)
- Name normalization for company matching
- CVR number matching and validation
2025-12-19 13:09:42 +01:00
Christian
a011f36385 Feature: Add tags administration to settings page
- Add Tags navigation tab in settings
- Modern card-based grid layout for tags
- Quick stats dashboard (6 KPI cards)
- Smart filtering (type + inactive toggle)
- Create/Edit/Delete functionality
- Color picker with hex input sync
- Auto-color suggestion based on tag type
- Bootstrap Icons selector
- Responsive 3-column layout
2025-12-19 08:06:56 +01:00
Christian
15f39f13ce Fix: Replace execute_query_single with execute_query in email router
execute_query_single function does not exist in database module.
All calls should use execute_query instead.
2025-12-19 07:56:05 +01:00
Christian
fedcbd816c Fix: Add missing settings router to main.py
Settings API and frontend were implemented but never registered in FastAPI app.
This caused /settings page to return 404.
2025-12-19 07:51:49 +01:00
Christian
abc763d135 Fix: Remove PostgreSQL port mapping in production
Database is only accessed via Docker network, not externally.
This prevents port 5432 conflicts on production servers.
2025-12-17 21:15:11 +01:00
Christian
15905d676a Fix: Install dependencies from Gitea release, not local cache
Problem: Dockerfile copied local requirements.txt before downloading from Gitea,
causing it to use old dependencies without aiohttp.

Solution: Download release first, THEN install requirements from the release.
2025-12-17 21:10:31 +01:00
Christian
1b1045a0c7 Fix: Add aiohttp dependency to requirements.txt
CVR service requires aiohttp for API calls
2025-12-17 21:03:36 +01:00
Christian
fdac8b855e Fix: Strip whitespace from env vars before validation
Pydantic cannot parse 'true   ' (with trailing spaces) as boolean.
Added field_validator to automatically strip whitespace from all string inputs.
2025-12-17 20:58:01 +01:00
Christian
dfe2bed11f Docs: Update deployment guide with v1.0.3 and inline comment warning 2025-12-17 17:29:09 +01:00
Christian
2361bd2277 Fix: Add missing env vars to Settings class and remove inline comments from .env
- Added API_RELOAD, CORS_ORIGINS to Settings
- Added deployment-specific vars: POSTGRES_*, RELEASE_VERSION, GITEA_URL, GITHUB_TOKEN, GITHUB_REPO
- Removed inline comments from boolean values (Pydantic can't parse them)
- Updated CORS middleware to use CORS_ORIGINS with fallback to ALLOWED_ORIGINS
2025-12-17 17:28:50 +01:00
Christian
87c729a4c6 Fix: Add build dependencies for psycopg2-binary, update CORS to IP address 2025-12-17 17:21:03 +01:00
Christian
34e1faf91d Production deployment setup: Add deployment scripts, update paths to /srv/podman/bmc_hub_v1.0, add GITEA_URL config 2025-12-17 17:12:10 +01:00
Christian
fda8319e8e Production deployment setup complete 2025-12-17 16:47:35 +01:00
Christian
84485bd294 feat: Implement ticket contacts management with flexible roles and CRUD operations 2025-12-17 16:38:08 +01:00
Christian
0502a7b080 feat: Implement central tagging system with CRUD operations, entity tagging, and workflow management
- Added API endpoints for tag management (create, read, update, delete).
- Implemented entity tagging functionality to associate tags with various entities.
- Created workflow management for tag-triggered actions.
- Developed frontend views for tag administration using FastAPI and Jinja2.
- Designed HTML template for tag management interface with Bootstrap styling.
- Added JavaScript for tag picker component with keyboard shortcuts and dynamic tag filtering.
- Created database migration scripts for tags, entity_tags, and tag_workflows tables.
- Included default tags for initial setup in the database.
2025-12-17 07:56:33 +01:00
Christian
fadf7258de feat: Implement internal comments for customer subscriptions with database support 2025-12-16 22:07:20 +01:00
Christian
ffb3d335bc feat: Add Simply-CRM integration setup documentation and configuration details
docs: Create vTiger & Simply-CRM integration setup guide with credential requirements

feat: Implement ticket system enhancements including relations, calendar events, templates, and AI suggestions

refactor: Update ticket system migration to include audit logging and enhanced email metadata
2025-12-16 15:36:11 +01:00
Christian
3806c7d011 feat(ticket-module): Implement ticket system with comprehensive database schema, permissions, and testing suite
- Added migration 025 for the Ticket System, creating tables for tickets, comments, attachments, worklogs, prepaid cards, and audit logs.
- Introduced migration 026 to add ticket-related permissions to the auth system and assign them to user groups.
- Developed a test suite for the Ticket Module, validating database schema, ticket number generation, prepaid card constraints, service logic, worklog creation, audit logging, and views.
2025-12-15 23:40:23 +01:00
Christian
3fb43783a6 feat: Implement Email Workflow System with comprehensive documentation and migration scripts
- Added Email Workflow System with automated actions based on email classification.
- Created database schema with tables for workflows, executions, and actions.
- Developed API endpoints for CRUD operations on workflows and execution history.
- Included pre-configured workflows for invoice processing, time confirmation, and bankruptcy alerts.
- Introduced user guide and workflow system improvements for better usability.
- Implemented backup system for automated backup jobs and notifications.
- Established email activity log to track all actions and events related to emails.
2025-12-15 12:28:12 +01:00
Christian
38fa3b6c0a feat: Add subscriptions lock feature to customers
- Added a new column `subscriptions_locked` to the `customers` table to manage subscription access.
- Implemented a script to create new modules from a template, including updates to various files (module.json, README.md, router.py, views.py, and migration SQL).
- Developed a script to import BMC Office subscriptions from an Excel file into the database, including error handling and statistics reporting.
- Created a script to lookup and update missing CVR numbers using the CVR.dk API.
- Implemented a script to relink Hub customers to e-conomic customer numbers based on name matching.
- Developed scripts to sync CVR numbers from Simply-CRM and vTiger to the local customers database.
2025-12-13 12:06:28 +01:00
Christian
361f2fad5d feat: Implement vTiger integration for subscriptions and sales orders
- Added a new VTigerService class for handling API interactions with vTiger CRM.
- Implemented methods to fetch customer subscriptions and sales orders.
- Created a new database migration for BMC Office subscriptions, including table structure and view for totals.
- Enhanced customer detail frontend to display subscriptions and sales orders with improved UI/UX.
- Added JavaScript functions for loading and displaying subscription data dynamically.
- Created tests for vTiger API queries and field inspections to ensure data integrity and functionality.
2025-12-11 23:14:20 +01:00
Christian
c4c9b8a04a feat: Enhance email actions UI with improved layout and attachment handling 2025-12-11 12:57:14 +01:00
Christian
7f325b5c32 feat: Implement email management UI with FastAPI and keyword-based classification
- Added FastAPI router for serving email management UI at /emails
- Created Jinja2 template for the email frontend
- Developed SimpleEmailClassifier for keyword-based email classification
- Documented email UI implementation details, features, and API integration in EMAIL_UI_IMPLEMENTATION.md
2025-12-11 12:45:29 +01:00
Christian
8791e34f4e feat: Implement email processing system with scheduler, fetching, classification, and rule matching
- Added EmailProcessorService to orchestrate email workflow: fetching, saving, classifying, and matching rules.
- Introduced EmailScheduler for background processing of emails every 5 minutes.
- Developed EmailService to handle email fetching from IMAP and Microsoft Graph API.
- Created database migration for email system, including tables for email messages, rules, attachments, and analysis.
- Implemented AI classification and extraction for invoices and time confirmations.
- Added logging for better traceability and error handling throughout the email processing pipeline.
2025-12-11 02:31:29 +01:00
Christian
a230071632 feat: Add customer time pricing management page with dynamic features
- Implemented a new HTML page for managing customer time pricing with Bootstrap styling.
- Added navigation and responsive design elements.
- Integrated JavaScript for loading customer data, editing rates, and handling modals for time entries and order creation.
- Included theme toggle functionality and statistics display for customer rates.
- Enhanced user experience with toast notifications for actions performed.

docs: Create e-conomic Write Mode guide

- Added comprehensive documentation for exporting approved time entries to e-conomic as draft orders.
- Detailed safety flags for write operations, including read-only and dry-run modes.
- Provided activation steps, error handling, and best practices for using the e-conomic integration.

migrations: Add user_company field to contacts and e-conomic customer number to customers

- Created migration to add user_company field to contacts for better organization tracking.
- Added e-conomic customer number field to tmodule_customers for invoice export synchronization.
2025-12-10 18:29:13 +01:00
Christian
34555d1e36 feat(timetracking): Implement time tracking module with frontend views, HTML templates, and database migrations
- Added FastAPI router for time tracking views including dashboard, wizard, and orders.
- Created HTML templates for the time tracking wizard with responsive design and Bootstrap integration.
- Developed SQL migration script for the time tracking module, including tables for customers, cases, time entries, orders, and audit logs.
- Introduced a script to list all registered routes, focusing on time tracking routes.
- Added test script to verify route registration and specifically check for time tracking routes.
2025-12-09 22:46:30 +01:00
Christian
3a8288f5a1 feat: Implement quick analysis on PDF upload for CVR, document type, and number extraction
- Added `check_invoice_number_exists` method in `EconomicService` to verify invoice numbers in e-conomic journals.
- Introduced `quick_analysis_on_upload` method in `OllamaService` for extracting critical fields from uploaded PDFs, including CVR, document type, and document number.
- Created migration script to add new fields for storing detected CVR, vendor ID, document type, and document number in the `incoming_files` table.
- Developed comprehensive tests for the quick analysis functionality, validating CVR detection, document type identification, and invoice number extraction.
2025-12-09 14:54:33 +01:00
Christian
890bd6245d feat: Add template editing functionality and improve file loading logic
- Added an "Edit" button for templates in the templates list, redirecting to the template builder.
- Enhanced loadPendingFiles function to filter files by vendor ID, displaying a message if no files are found.
- Modified openTestModal to load vendor-specific files based on the selected template.
- Updated Ollama model configuration for improved JSON extraction.
- Refactored Ollama service to support different API formats based on model type.
- Implemented lazy loading of templates in TemplateService for better performance.
- Added VAT note extraction for invoice line items.
- Updated Docker Compose configuration for Ollama model settings.
2025-12-08 23:46:18 +01:00
Christian
18b0fe9c05 feat: Enhance billing frontend with Jinja2 templates and improve invoice handling
- Updated billing frontend views to use Jinja2 templates for rendering HTML pages.
- Added support for displaying supplier invoices, template builder, and templates list with titles.
- Introduced a new configuration setting for company CVR number.
- Enhanced OllamaService to support credit notes in invoice extraction, including detailed JSON output format.
- Improved PDF text extraction using pdfplumber for better layout handling.
- Added a modal for editing vendor details with comprehensive fields and validation.
- Implemented invoice loading and display functionality in vendor detail view.
- Updated vendor management to remove priority handling and improve error messaging.
- Added tests for AI analyze endpoint and CVR filtering to ensure correct behavior.
- Created migration script to support credit notes in the database schema.
2025-12-08 09:15:52 +01:00