diff --git a/web/src/router/index.ts b/web/src/router/index.ts
index 773dbda..d858949 100644
--- a/web/src/router/index.ts
+++ b/web/src/router/index.ts
@@ -3,7 +3,8 @@ import {
createWebHistory,
RouteLocationNormalized,
} from "vue-router";
-import Account from "@/pages/Account.vue";
+import Account from "../pages/Account.vue";
+import AllAccounts from "../pages/AllAccounts.vue";
import Budgeting from "../pages/Budgeting.vue";
import BudgetSidebar from "../pages/BudgetSidebar.vue";
import Dashboard from "../pages/Dashboard.vue";
@@ -58,6 +59,13 @@ const routes = [
props: true,
meta: { requiresAuth: true },
},
+ {
+ path: "/budget/:budgetid/all-accounts",
+ name: "All Accounts",
+ components: { default: AllAccounts, sidebar: BudgetSidebar },
+ props: true,
+ meta: { requiresAuth: true },
+ },
{
path: "/budget/:budgetid/account/:accountid",
name: "Account",
diff --git a/web/src/stores/transactions.ts b/web/src/stores/transactions.ts
index 7ce27ab..a1e5389 100644
--- a/web/src/stores/transactions.ts
+++ b/web/src/stores/transactions.ts
@@ -1,11 +1,13 @@
import { defineStore } from "pinia";
-import { POST } from "../api";
+import { GET, POST } from "../api";
import { formatDate, groupBy } from "../date";
+import { useBudgetsStore } from "./budget";
import { useAccountStore } from "./budget-account";
interface State {
Transactions: Map;
Reconciling: boolean;
+ ProblematicTransactions: Array;
}
export interface Transaction {
@@ -29,6 +31,7 @@ export const useTransactionsStore = defineStore("budget/transactions", {
state: (): State => ({
Transactions: new Map(),
Reconciling: false,
+ ProblematicTransactions: new Array(),
}),
getters: {
ReconcilingBalance(state): number {
@@ -43,9 +46,8 @@ export const useTransactionsStore = defineStore("budget/transactions", {
},
TransactionsByDate(state) : Record {
const accountsStore = useAccountStore();
- const accountID = accountsStore.CurrentAccountID;
const allTransactions = [...this.Transactions.values()];
- return groupBy(allTransactions.filter(x => x.AccountID == accountID), x => formatDate(x.Date));
+ return groupBy(allTransactions, x => formatDate(x.Date));
},
TransactionsList(state) : Transaction[] {
const accountsStore = useAccountStore();
@@ -53,6 +55,9 @@ export const useTransactionsStore = defineStore("budget/transactions", {
const allTransactions = [...this.Transactions.values()];
return allTransactions.filter(x => x.AccountID == accountID);
},
+ ProblematicTransactionsList(state) : Transaction[] {
+ return [...state.ProblematicTransactions.map(x => state.Transactions!.get(x)!)];
+ }
},
actions: {
AddTransactions(transactions: Array) {
@@ -70,6 +75,13 @@ export const useTransactionsStore = defineStore("budget/transactions", {
transaction.Reconciled = value;
}
},
+ async GetProblematicTransactions() {
+ const budgetStore = useBudgetsStore();
+ const result = await GET("/budget/" + budgetStore.CurrentBudgetID + "/problematic-transactions");
+ const response = await result.json();
+ this.AddTransactions(response.Transactions);
+ this.ProblematicTransactions = [...response.Transactions.map((x : Transaction) => x.ID)];
+ },
async SubmitReconcilation(reconciliationTransactionAmount: number) {
const accountsStore = useAccountStore();
const account = accountsStore.CurrentAccount!;