From 410dbbc8b1962dd5625a59070e7ca4ee1f5def04 Mon Sep 17 00:00:00 2001
From: Sid Vishnoi <8426945+sidvishnoi@users.noreply.github.com>
Date: Sat, 29 Jul 2023 17:24:58 +0530
Subject: [PATCH] Add Indian numbering format (#1412)

---
 packages/loot-core/src/shared/util.test.ts | 10 ++++++++++
 packages/loot-core/src/shared/util.ts      |  6 ++++++
 upcoming-release-notes/1412.md             |  6 ++++++
 3 files changed, 22 insertions(+)
 create mode 100644 upcoming-release-notes/1412.md

diff --git a/packages/loot-core/src/shared/util.test.ts b/packages/loot-core/src/shared/util.test.ts
index 019b51c34..ea42f2532 100644
--- a/packages/loot-core/src/shared/util.test.ts
+++ b/packages/loot-core/src/shared/util.test.ts
@@ -44,6 +44,16 @@ describe('utility functions', () => {
     expect(formatter.format(Number('1234.56'))).toBe('1,235');
   });
 
+  test('number formatting works with comma-dot-in format', () => {
+    setNumberFormat({ format: 'comma-dot-in', hideFraction: false });
+    let formatter = getNumberFormat().formatter;
+    expect(formatter.format(Number('1234567.89'))).toBe('12,34,567.89');
+
+    setNumberFormat({ format: 'comma-dot-in', hideFraction: true });
+    formatter = getNumberFormat().formatter;
+    expect(formatter.format(Number('1234567.89'))).toBe('12,34,568');
+  });
+
   test('number formatting works with dot-comma format', () => {
     setNumberFormat({ format: 'dot-comma', hideFraction: false });
     let formatter = getNumberFormat().formatter;
diff --git a/packages/loot-core/src/shared/util.ts b/packages/loot-core/src/shared/util.ts
index e28d1d4c8..eedbceb87 100644
--- a/packages/loot-core/src/shared/util.ts
+++ b/packages/loot-core/src/shared/util.ts
@@ -188,6 +188,7 @@ export let numberFormats = [
   { value: 'dot-comma', label: '1.000,33', labelNoFraction: '1.000' },
   { value: 'space-comma', label: '1 000,33', labelNoFraction: '1 000' },
   { value: 'space-dot', label: '1 000.33', labelNoFraction: '1 000' },
+  { value: 'comma-dot-in', label: '1,00,000.33', labelNoFraction: '1,00,000' },
 ] as const;
 
 let numberFormat: {
@@ -220,6 +221,11 @@ export function setNumberFormat({ format, hideFraction }) {
       regex = /[^-0-9.]/g;
       separator = '.';
       break;
+    case 'comma-dot-in':
+      locale = 'en-IN';
+      regex = /[^-0-9.]/g;
+      separator = '.';
+      break;
     case 'comma-dot':
     default:
       locale = 'en-US';
diff --git a/upcoming-release-notes/1412.md b/upcoming-release-notes/1412.md
new file mode 100644
index 000000000..a194298bc
--- /dev/null
+++ b/upcoming-release-notes/1412.md
@@ -0,0 +1,6 @@
+---
+category: Enhancements
+authors: [sidvishnoi]
+---
+
+Add Indian numbering format (lakh, crore)
-- 
GitLab