diff --git a/web/src/pages/Account.vue b/web/src/pages/Account.vue index ab67e29..7d43cc0 100644 --- a/web/src/pages/Account.vue +++ b/web/src/pages/Account.vue @@ -117,27 +117,13 @@ function createReconcilationTransaction() { - - - + + + - + +import { computed, ref, onMounted } from "vue" +import Currency from "../components/Currency.vue"; +import TransactionRow from "../components/TransactionRow.vue"; +import TransactionInputRow from "../components/TransactionInputRow.vue"; +import { useAccountStore } from "../stores/budget-account"; +import EditAccount from "../dialogs/EditAccount.vue"; +import Button from "../components/SimpleButton.vue"; +import { useTransactionsStore } from "../stores/transactions"; +import Modal from "../components/Modal.vue"; +import Input from "../components/Input.vue"; +import Checkbox from "../components/Checkbox.vue"; +import { formatDate } from "../date"; + +defineProps<{ + budgetid: string +}>() + +const modalInputRow = ref(null); + +function submitModal() { + modalInputRow.value!.Save(); +} + +const accounts = useAccountStore(); +const transactions = useTransactionsStore(); + +onMounted(() => { + transactions.GetProblematicTransactions(); +}) + + + + + diff --git a/web/src/pages/BudgetSidebar.vue b/web/src/pages/BudgetSidebar.vue index d4da1c8..bf7cfb3 100644 --- a/web/src/pages/BudgetSidebar.vue +++ b/web/src/pages/BudgetSidebar.vue @@ -40,7 +40,7 @@ function toggleMenu() { Budget
- + All Accounts
  • 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!;
  • - Payee - - Category - PayeeCategory Memo - Amount - Amount - +