From a5866132abf91fab2f2f021cfec76cacb55f483a Mon Sep 17 00:00:00 2001 From: Christian Date: Tue, 5 May 2026 07:33:01 +0200 Subject: [PATCH] hotfix: skip economic export when customer number missing (local-only) --- VERSION | 2 +- app/timetracking/backend/economic_export.py | 66 +++++++++++++++++++-- 2 files changed, 61 insertions(+), 7 deletions(-) diff --git a/VERSION b/VERSION index 393b4c5..82bb2e9 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.2.95 +2.2.96 diff --git a/app/timetracking/backend/economic_export.py b/app/timetracking/backend/economic_export.py index a9b2353..f1f03f4 100644 --- a/app/timetracking/backend/economic_export.py +++ b/app/timetracking/backend/economic_export.py @@ -254,15 +254,69 @@ class EconomicExportService: (order['customer_id'],) ) if not check_link or not check_link.get('hub_customer_id'): - raise HTTPException( - status_code=400, - detail=f"Customer '{order['customer_name']}' er ikke linket til en Hub kunde. Gå til vTiger kunder og link kunden først." + message = ( + f"LOCAL-ONLY: Customer '{order['customer_name']}' er ikke linket til en Hub kunde. " + "Eksport til e-conomic er sprunget over." ) + logger.warning("⚠️ %s", message) + + result = TModuleEconomicExportResult( + success=True, + dry_run=True, + order_id=request.order_id, + economic_draft_id=None, + economic_order_number=None, + message=message, + details={ + "skipped_reason": "missing_hub_customer_link", + "order_number": order['order_number'], + "customer_name": order['customer_name'], + "read_only": self.read_only, + "dry_run": True, + } + ) + + audit.log_export_completed( + order_id=request.order_id, + economic_draft_id=None, + economic_order_number=None, + dry_run=True, + user_id=user_id, + ) + + return result else: - raise HTTPException( - status_code=400, - detail=f"Customer '{order['customer_name']}' mangler e-conomic kundenummer. Opdater kunde i Customers modulet." + message = ( + f"LOCAL-ONLY: Customer '{order['customer_name']}' mangler e-conomic kundenummer. " + "Eksport til e-conomic er sprunget over." ) + logger.warning("⚠️ %s", message) + + result = TModuleEconomicExportResult( + success=True, + dry_run=True, + order_id=request.order_id, + economic_draft_id=None, + economic_order_number=None, + message=message, + details={ + "skipped_reason": "missing_economic_customer_number", + "order_number": order['order_number'], + "customer_name": order['customer_name'], + "read_only": self.read_only, + "dry_run": True, + } + ) + + audit.log_export_completed( + order_id=request.order_id, + economic_draft_id=None, + economic_order_number=None, + dry_run=True, + user_id=user_id, + ) + + return result customer_number = customer_data['economic_customer_number']