transaction edit

This commit is contained in:
2024-11-19 11:49:37 +01:00
parent c56a7e6dc4
commit 5e75b53d11
10 changed files with 165 additions and 12 deletions
@@ -10,6 +10,8 @@ import EventService from '@/entities/event/event.service';
import { type IEvent } from '@/shared/model/event.model';
import { type ITransaction, Transaction } from '@/shared/model/transaction.model';
import { TransactionType } from '@/shared/model/enumerations/transaction-type.model';
import { type IUserAccount } from '@/shared/model/user-account.model';
import UserAccountService from '@/entities/user-account/user-account.service';
export default defineComponent({
compatConfig: { MODE: 3 },
@@ -20,7 +22,11 @@ export default defineComponent({
const transaction: Ref<ITransaction> = ref(new Transaction());
transaction.value.transactionItems = [];
const dictUserAccounts = ref([]) as Ref<IUserAccount[]>;
const eventService = inject('eventService', () => new EventService());
const userAccountService = inject('userAccountService', () => new UserAccountService());
const events: Ref<IEvent[]> = ref([]);
const transactionTypeValues: Ref<string[]> = ref(Object.keys(TransactionType));
@@ -34,13 +40,37 @@ export default defineComponent({
const retrieveTransaction = async transactionId => {
try {
const res2 = await userAccountService().retrieve();
console.log('got accounts' + res2);
dictUserAccounts.value = res2.data;
const res = await transactionService().find(transactionId);
transaction.value = res;
// console.log('len'+transaction.value.transactionItems?.length);
// console.log('len'+dictUserAccounts.value.length);
// console.log('id'+transaction.value.transactionItems[0].userAccount.id);
// console.log('id'+(dictUserAccounts.value.find(account => account.id === transaction.value.transactionItems[0].userAccount.id) || null));
// transaction.value.transactionItems[0].userAccount = dictUserAccounts.value.find(account => account.id === transaction.value.transactionItems[0].userAccount.id) || null;
transaction.value.transactionItems.forEach((item, index) => {
const matchingAccount = dictUserAccounts.value.find(account => account.id === item.userAccount.id);
transaction.value.transactionItems[index].userAccount = matchingAccount || null;
});
} catch (error) {
alertService.showHttpError(error.response);
}
};
// const retrieveUserAccounts = async () => {
// try {
// const res = await userAccountService().retrieve();
// console.log('got accounts'+ res);
// dictUserAccounts.value = res.data;
// } catch (error) {
// alertService.showHttpError(error.response);
// }
// };
//
// retrieveUserAccounts();
if (route.params?.transactionId) {
retrieveTransaction(route.params.transactionId);
}
@@ -61,10 +91,36 @@ export default defineComponent({
date: {},
comment: {},
event: {},
// transactionItems: {
// $each: {
// amount: { required: validations.required, minValue: validations.minValue(0.01) },
// comment: {},
// locked: {},
// userAccount: {},
// },
// },
};
const v$ = useVuelidate(validationRules, transaction as any);
v$.value.$validate();
const addTransactionItem = () => {
transaction.value.transactionItems.push({
amount: 0,
comment: '',
locked: false,
userAccount: null,
});
};
const removeTransactionItem = (index: number) => {
transaction.value.transactionItems.splice(index, 1);
};
const calculateUnsettledBalance = (): string => {
const balance = transaction.value.transactionItems.reduce((sum, item) => sum + item.amount, 0);
return balance.toFixed(2);
};
return {
transactionService,
alertService,
@@ -75,9 +131,12 @@ export default defineComponent({
currentLanguage,
events,
v$,
dictUserAccounts,
addTransactionItem,
removeTransactionItem,
calculateUnsettledBalance,
};
},
created(): void {},
methods: {
save(): void {
this.isSaving = true;