diff --git a/MDfile/RELEASE_NOTES_v2.8.10.md b/MDfile/RELEASE_NOTES_v2.8.10.md new file mode 100644 index 0000000..3f4a027 --- /dev/null +++ b/MDfile/RELEASE_NOTES_v2.8.10.md @@ -0,0 +1,11 @@ +# BMC Hub v2.8.10 + +## Gem e-conomic-ordrenummer + +- Gemmer `economic_draft_id` fra det eksisterende eksportflow som kladdens e-conomic-ordrenummer. +- Audit-eventet `export_success` indeholder dermed det faktiske nummer i stedet for `null`. +- Bevarer understøttelse af de øvrige eksisterende feltnavne i eksportsvaret. + +## Verifikation + +- Regressionstest dækker mapping fra `economic_draft_id` til e-conomic-ordrenummer. diff --git a/VERSION b/VERSION index d578041..4067d1d 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.8.9 +2.8.10 diff --git a/app/modules/orders/backend/router.py b/app/modules/orders/backend/router.py index 8e6585f..b40cdb9 100644 --- a/app/modules/orders/backend/router.py +++ b/app/modules/orders/backend/router.py @@ -15,6 +15,17 @@ router = APIRouter() ALLOWED_SYNC_STATUSES = {"pending", "exported", "failed", "posted", "paid"} +def _economic_order_number(export_result: Dict[str, Any]) -> Any: + """Normalize legacy and catalog-aware e-conomic export response fields.""" + return ( + export_result.get("economic_order_number") + or export_result.get("economic_draft_id") + or export_result.get("draftOrderNumber") + or export_result.get("order_number") + or export_result.get("orderNumber") + ) + + def _snapshot_lines(lines): from app.products.backend.economic_documents import active_connection, snapshot_draft_lines return snapshot_draft_lines(lines) if active_connection() else lines @@ -236,11 +247,7 @@ async def export_ordre(request: OrdreExportRequest, http_request: Request): "timestamp": datetime.utcnow().isoformat(), } - economic_order_number = ( - export_result.get("economic_order_number") - or export_result.get("order_number") - or export_result.get("orderNumber") - ) + economic_order_number = _economic_order_number(export_result) economic_invoice_number = ( export_result.get("economic_invoice_number") or export_result.get("invoice_number") diff --git a/tests/test_order_economic_safety_config.py b/tests/test_order_economic_safety_config.py index 3120104..127f1a4 100644 --- a/tests/test_order_economic_safety_config.py +++ b/tests/test_order_economic_safety_config.py @@ -88,3 +88,9 @@ def test_product_creation_preview_values_become_economic_payload(): "barred": False, "productGroup": {"productGroupNumber": 2}, } + + +def test_legacy_draft_id_is_saved_as_order_number(): + from app.modules.orders.backend.router import _economic_order_number + + assert _economic_order_number({"economic_draft_id": 4711}) == 4711