Duplicate expense

This commit is contained in:
mchev
2026-04-07 19:00:07 +02:00
parent f17c7be5f0
commit beb2a43ed3
10 changed files with 382 additions and 4 deletions

View File

@@ -21,6 +21,18 @@
</BaseDropdownItem>
</router-link>
<!-- duplicate expense -->
<BaseDropdownItem
v-if="userStore.hasAbilities(abilities.CREATE_EXPENSE)"
@click="onDuplicateExpense(row)"
>
<BaseIcon
name="DocumentDuplicateIcon"
class="w-5 h-5 mr-3 text-gray-400 group-hover:text-gray-500"
/>
{{ $t('expenses.duplicate_expense') }}
</BaseDropdownItem>
<!-- delete expense -->
<BaseDropdownItem
v-if="userStore.hasAbilities(abilities.DELETE_EXPENSE)"
@@ -37,10 +49,10 @@
<script setup>
import { useDialogStore } from '@/scripts/stores/dialog'
import { useNotificationStore } from '@/scripts/stores/notification'
import { useModalStore } from '@/scripts/stores/modal'
import { useI18n } from 'vue-i18n'
import { useExpenseStore } from '@/scripts/admin/stores/expense'
import { useRoute, useRouter } from 'vue-router'
import { useRoute } from 'vue-router'
import { inject } from 'vue'
import { useUserStore } from '@/scripts/admin/stores/user'
import abilities from '@/scripts/admin/stub/abilities'
@@ -61,15 +73,24 @@ const props = defineProps({
})
const dialogStore = useDialogStore()
const notificationStore = useNotificationStore()
const modalStore = useModalStore()
const { t } = useI18n()
const expenseStore = useExpenseStore()
const route = useRoute()
const router = useRouter()
const userStore = useUserStore()
const $utils = inject('utils')
function onDuplicateExpense(row) {
modalStore.openModal({
title: t('expenses.duplicate_expense_title'),
componentName: 'DuplicateExpenseModal',
data: row,
size: 'sm',
refreshData: props.loadData,
})
}
function removeExpense(id) {
dialogStore
.openDialog({