From 7bb0425c81171270e5b05e5277e463c1e750476e Mon Sep 17 00:00:00 2001
From: dymanoid <9433345+dymanoid@users.noreply.github.com>
Date: Wed, 19 Jun 2024 00:44:44 +0200
Subject: [PATCH] Consider account sort order in autocomplete (#2896)

* Consider account sort order in autocomplete

* Add release notes
---
 .../components/autocomplete/AccountAutocomplete.tsx | 13 ++++++-------
 packages/loot-core/src/client/actions/account.ts    |  1 +
 packages/loot-core/src/server/db/index.ts           |  2 +-
 upcoming-release-notes/2896.md                      |  6 ++++++
 4 files changed, 14 insertions(+), 8 deletions(-)
 create mode 100644 upcoming-release-notes/2896.md

diff --git a/packages/desktop-client/src/components/autocomplete/AccountAutocomplete.tsx b/packages/desktop-client/src/components/autocomplete/AccountAutocomplete.tsx
index 210eebaf0..ba66fee26 100644
--- a/packages/desktop-client/src/components/autocomplete/AccountAutocomplete.tsx
+++ b/packages/desktop-client/src/components/autocomplete/AccountAutocomplete.tsx
@@ -122,13 +122,12 @@ export function AccountAutocomplete({
     .filter(item => {
       return includeClosedAccounts ? item : !item.closed;
     })
-    .sort((a, b) => {
-      if (a.closed === b.closed) {
-        return a.offbudget === b.offbudget ? 0 : a.offbudget ? 1 : -1;
-      } else {
-        return a.closed ? 1 : -1;
-      }
-    });
+    .sort(
+      (a, b) =>
+        a.closed - b.closed ||
+        a.offbudget - b.offbudget ||
+        a.sort_order - b.sort_order,
+    );
 
   return (
     <Autocomplete
diff --git a/packages/loot-core/src/client/actions/account.ts b/packages/loot-core/src/client/actions/account.ts
index 6eafe4edb..120d20b9d 100644
--- a/packages/loot-core/src/client/actions/account.ts
+++ b/packages/loot-core/src/client/actions/account.ts
@@ -243,5 +243,6 @@ export function moveAccount(id, targetId) {
   return async (dispatch: Dispatch) => {
     await send('account-move', { id, targetId });
     dispatch(getAccounts());
+    dispatch(getPayees());
   };
 }
diff --git a/packages/loot-core/src/server/db/index.ts b/packages/loot-core/src/server/db/index.ts
index 65cae417c..507401875 100644
--- a/packages/loot-core/src/server/db/index.ts
+++ b/packages/loot-core/src/server/db/index.ts
@@ -536,7 +536,7 @@ export function getPayees() {
     SELECT p.*, COALESCE(a.name, p.name) AS name FROM payees p
     LEFT JOIN accounts a ON (p.transfer_acct = a.id AND a.tombstone = 0)
     WHERE p.tombstone = 0 AND (p.transfer_acct IS NULL OR a.id IS NOT NULL)
-    ORDER BY p.transfer_acct IS NULL DESC, p.name COLLATE NOCASE
+    ORDER BY p.transfer_acct IS NULL DESC, p.name COLLATE NOCASE, a.offbudget, a.sort_order
   `);
 }
 
diff --git a/upcoming-release-notes/2896.md b/upcoming-release-notes/2896.md
new file mode 100644
index 000000000..238bc064e
--- /dev/null
+++ b/upcoming-release-notes/2896.md
@@ -0,0 +1,6 @@
+---
+category: Enhancements
+authors: [dymanoid]
+---
+
+Respect the user-defined account sort order in all autocomplete lists.
-- 
GitLab