[28.x] Fix MLLM decimal parsing for locale-formatted invoices#8833
Open
Groenbech96 wants to merge 1 commit into
Open
[28.x] Fix MLLM decimal parsing for locale-formatted invoices#8833Groenbech96 wants to merge 1 commit into
Groenbech96 wants to merge 1 commit into
Conversation
## Summary - **Root cause**: The UBL schema template used string `"0"` placeholders for numeric fields, causing the MLLM to return locale-formatted strings (e.g. Swedish `"2,34"`) instead of JSON numbers. AL's `AsDecimal()` then stripped the comma, turning `"2,34"` into `234`. - **Fix 1** (`ubl_example.json`): Changed all numeric string `"0"` placeholders to `0` (JSON numbers), teaching the model to return proper numeric values. - **Fix 2** (`EDocMLLMExtraction-SystemPrompt.md`): Added explicit rule requiring XML decimal format (period as decimal separator, no thousands separators). - **Fix 3** (`EDocMLLMSchemaHelper.Codeunit.al`): Replaced `AsDecimal()` with `Evaluate(…, AsText(), 9)` in `GetDecimal()`, which parses XML-format decimals locale-independently — consistent with how `GetDate()` already handles date strings. [AB#640342](https://dynamicssmb2.visualstudio.com/1fcb79e7-ab07-432a-a3c6-6cf5a88ba4a5/_workitems/edit/640342) --------- Co-authored-by: Magnus Hartvig Grønbech <magnushar@microsoft.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> (cherry picked from commit bbad0a8)
mynjj
approved these changes
Jun 26, 2026
ventselartur
approved these changes
Jun 26, 2026
AndersLarsenMicrosoft
approved these changes
Jun 26, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Backport of #8310 to
releases/28.x.Cherry-picks commit bbad0a8.
Summary
"0"placeholders for numeric fields, causing the MLLM to return locale-formatted strings (e.g. Swedish"2,34") instead of JSON numbers. AL'sAsDecimal()then stripped the comma, turning"2,34"into234.ubl_example.json): Changed all numeric string"0"placeholders to0(JSON numbers).EDocMLLMExtraction-SystemPrompt.md): Added explicit rule requiring XML decimal format.EDocMLLMSchemaHelper.Codeunit.al): ReplacedAsDecimal()withEvaluate(…, AsText(), 9)inGetDecimal()for locale-independent parsing.Fixes AB#640596