+
+
+
+
<%= TimeUtils.format_date_string(value, field.dig('preferences', 'format'), local_assigns[:locale]) %>
+ <% elsif field['type'] == 'number' %>
+
+
+ <%= NumberUtils.format_number(value, field.dig('preferences', 'format')) %>
+
<% else %>
<%= Array.wrap(value).join(', ') %>
diff --git a/lib/number_utils.rb b/lib/number_utils.rb
new file mode 100644
index 00000000..d0ab673c
--- /dev/null
+++ b/lib/number_utils.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+module NumberUtils
+ FORMAT_LOCALES = {
+ 'dot' => 'de',
+ 'space' => 'fr',
+ 'comma' => 'en'
+ }.freeze
+
+ module_function
+
+ def format_number(number, format)
+ locale = FORMAT_LOCALES[format]
+
+ if locale
+ ApplicationController.helpers.number_with_delimiter(number, locale:)
+ else
+ number
+ end
+ end
+end
diff --git a/lib/submissions/generate_audit_trail.rb b/lib/submissions/generate_audit_trail.rb
index f4da2f9a..e4abcc33 100644
--- a/lib/submissions/generate_audit_trail.rb
+++ b/lib/submissions/generate_audit_trail.rb
@@ -261,6 +261,8 @@ module Submissions
value = TimeUtils.format_date_string(value, field.dig('preferences', 'format'), account.locale)
end
+ value = NumberUtils.format_number(value, field.dig('preferences', 'format')) if field['type'] == 'number'
+
value = value.join(', ') if value.is_a?(Array)
composer.formatted_text_box([{ text: TextUtils.maybe_rtl_reverse(value.to_s.presence || 'n/a') }],
diff --git a/lib/submissions/generate_result_attachments.rb b/lib/submissions/generate_result_attachments.rb
index bc2ea682..061bf488 100644
--- a/lib/submissions/generate_result_attachments.rb
+++ b/lib/submissions/generate_result_attachments.rb
@@ -213,6 +213,8 @@ module Submissions
value = TimeUtils.format_date_string(value, field.dig('preferences', 'format'), account.locale)
end
+ value = NumberUtils.format_number(value, field.dig('preferences', 'format')) if field['type'] == 'number'
+
value = TextUtils.maybe_rtl_reverse(Array.wrap(value).join(', '))
text = HexaPDF::Layout::TextFragment.create(value, font: pdf.fonts.add(FONT_NAME),