diff --git a/src/layouts/admin-inc/SideMenu.vue b/src/layouts/admin-inc/SideMenu.vue index b11ba43..88d9932 100644 --- a/src/layouts/admin-inc/SideMenu.vue +++ b/src/layouts/admin-inc/SideMenu.vue @@ -142,6 +142,10 @@ title: 'Piyango Listesi', to: '/muhasebe/piyango-listesi' }, + { + title: 'İzin Bedel Oranı', + to: '/muhasebe/izin-bedel-orani' + }, { title: 'Ayarlar', to: '/muhasebe/ayarlar' diff --git a/src/module/cekilisler/components/TabPiyangoOnayDurumu.vue b/src/module/cekilisler/components/TabPiyangoOnayDurumu.vue index cb13c72..91dc119 100644 --- a/src/module/cekilisler/components/TabPiyangoOnayDurumu.vue +++ b/src/module/cekilisler/components/TabPiyangoOnayDurumu.vue @@ -8,6 +8,11 @@ +
+
+ +
+
@@ -16,6 +21,7 @@
diff --git a/src/module/cekilisler/components/form/FormPiyangoOnayDurum.vue b/src/module/cekilisler/components/form/FormPiyangoOnayDurum.vue new file mode 100644 index 0000000..42b6471 --- /dev/null +++ b/src/module/cekilisler/components/form/FormPiyangoOnayDurum.vue @@ -0,0 +1,88 @@ + + diff --git a/src/module/cekilisler/components/form/FormPiyangoOnayLog.vue b/src/module/cekilisler/components/form/FormPiyangoOnayLog.vue index 764c4aa..9400460 100644 --- a/src/module/cekilisler/components/form/FormPiyangoOnayLog.vue +++ b/src/module/cekilisler/components/form/FormPiyangoOnayLog.vue @@ -4,7 +4,7 @@ :tableHeader="tableHeader" formTitle="Piyango Onay Logları" listText="Kayıt" - :apiList="'OnayDurumu/GetSonOnayDurumlariList/' + piyangoStore.selectedLottery" + :apiList="'OnayDurumLog/Cekilis/' + piyangoStore.selectedLottery" apiText="Piyango Onay Log Listesi" page="form" :refresh="piyangoOnayStore.refreshList" /> @@ -47,38 +47,24 @@ } }, { - name: 'kisiAdi', + name: 'islemYapanKullanici.email', title: 'Kişi', sort: true, style: { width: '20%' } }, { - name: 'onayDurumuIslemTipiAdi', - title: 'İşlem', - sort: true, - filter: { - type: 'select', - data: piyangoOnayDurumlari, - listVal: 'id', - listText: 'tipAdi', - filterId: 'onayDurumuIslemTipiId' - } + name: 'eskiDurum', + title: 'Eski Durum', + }, + { + name: 'yeniDurum', + title: 'Yeni Durum', }, { name: 'aciklama', title: 'Açıklama', sort: true, style: { width: '30%' } - }, - { - dosyaUrl: 'aciklama', - title: 'Dosya', - computeHtml: (v: Record) => { - if (v.dosyaUrl !== null && v.dosyaUrl !== undefined) { - return globalStore.TableCellDocument(v.dosyaUrl) - } - }, - style: { width: '20%' } } ]) diff --git a/src/module/muhasebe/components/TabIzinBedelOraniForm.vue b/src/module/muhasebe/components/TabIzinBedelOraniForm.vue new file mode 100644 index 0000000..4c25f42 --- /dev/null +++ b/src/module/muhasebe/components/TabIzinBedelOraniForm.vue @@ -0,0 +1,8 @@ + + diff --git a/src/module/muhasebe/components/TabIzinBedelOraniListe.vue b/src/module/muhasebe/components/TabIzinBedelOraniListe.vue new file mode 100644 index 0000000..1dc48da --- /dev/null +++ b/src/module/muhasebe/components/TabIzinBedelOraniListe.vue @@ -0,0 +1,106 @@ + + diff --git a/src/module/muhasebe/components/form/FormIzinBedelOrani.vue b/src/module/muhasebe/components/form/FormIzinBedelOrani.vue new file mode 100644 index 0000000..eeea1af --- /dev/null +++ b/src/module/muhasebe/components/form/FormIzinBedelOrani.vue @@ -0,0 +1,90 @@ + + diff --git a/src/module/muhasebe/components/form/FormMuhasebeAyarlari.vue b/src/module/muhasebe/components/form/FormMuhasebeAyarlari.vue index 1c46d55..55f5d2e 100644 --- a/src/module/muhasebe/components/form/FormMuhasebeAyarlari.vue +++ b/src/module/muhasebe/components/form/FormMuhasebeAyarlari.vue @@ -6,17 +6,17 @@
- + + + + + + + + + + + { + const dataStore = useDataStore() + const izinBedelOraniStore = useIzinBedelOraniStore() + const izinBedelOraniValidationStore = useIzinBedelOraniValidationStore() + + const loaded = ref(false) + + const SaveIzinBedelOrani = async (panelData: Record, isUpdate: boolean = false) => { + if (izinBedelOraniValidationStore.FormCheck(panelData)) { + var res: any + + if (!isUpdate) { + res = await dataStore.dataPost('IzinBedelOrani', { + data: { + adi: panelData.ad, + oran: panelData.oran, + aciklama: panelData.aciklama, + aktif: panelData.aktif + } + }) + } else { + res = await dataStore.dataPut('IzinBedelOrani/' + panelData.id, { + data: { + id: panelData.id, + adi: panelData.ad, + oran: panelData.oran, + aciklama: panelData.aciklama, + aktif: panelData.aktif + } + }) + } + + if (res !== 'errorfalse') { + return true + } + } + return false + } + + const DeleteIzinBedelOrani = async (id: number | string) => { + var res = await dataStore.dataDelete('IzinBedelOrani/' + id) + return res !== 'errorfalse' + } + + const GetIzinBedelOraniList = async () => { + var res = await dataStore.dataGet('IzinBedelOrani') + if (res !== 'errorfalse') { + izinBedelOraniStore.izinBedelOraniList = res + return res + } + return [] + } + + const GetIzinBedelOraniById = async (id: number | string) => { + var res = await dataStore.dataGet('IzinBedelOrani/' + id) + if (res !== 'errorfalse') { + return res + } + return null + } + + const GetAktifIzinBedelOraniList = async () => { + var res = await dataStore.dataGet('IzinBedelOrani/Aktif') + if (res !== 'errorfalse') { + izinBedelOraniStore.aktifIzinBedelOraniList = res + return res + } + return [] + } + + const UpdateIzinBedelOraniStatus = async (id: number | string, aktif: boolean) => { + var res = await dataStore.dataPut('IzinBedelOrani/' + id + '/Status', { + data: { + Aktif: aktif + } + }) + return res !== 'errorfalse' + } + + const LoadData = async () => { + await GetIzinBedelOraniList() + await GetAktifIzinBedelOraniList() + loaded.value = true + } + + return { + loaded, + SaveIzinBedelOrani, + DeleteIzinBedelOrani, + GetIzinBedelOraniList, + GetIzinBedelOraniById, + GetAktifIzinBedelOraniList, + UpdateIzinBedelOraniStatus, + LoadData + } +}) diff --git a/src/module/muhasebe/store/izinBedelOraniStore.ts b/src/module/muhasebe/store/izinBedelOraniStore.ts new file mode 100644 index 0000000..a3cf02e --- /dev/null +++ b/src/module/muhasebe/store/izinBedelOraniStore.ts @@ -0,0 +1,59 @@ +import { defineStore } from 'pinia' +import { ref, reactive } from 'vue' +import { useUsersStore } from '@/stores/usersStore' + +export const useIzinBedelOraniStore = defineStore('izinBedelOraniStore', () => { + const usersStore = useUsersStore() + + const izinBedelOraniBaseForm = reactive>({ + ad: '', + oran: 0, + aciklama: '', + aktif: true, + appUserId: usersStore.userId + }) + + const izinBedelOraniForm = reactive>({}) + const izinBedelOraniSafeForm = reactive>({}) + const izinBedelOraniList = ref[]>([]) + const aktifIzinBedelOraniList = ref[]>([]) + const isNew = ref(false) + const izinBedelOraniLoaded = ref(false) + + const ResetForm = () => { + Object.assign(izinBedelOraniForm, izinBedelOraniBaseForm) + } + + const SafeServerData = () => { + Object.assign(izinBedelOraniSafeForm, izinBedelOraniForm) + } + + const RestoreData = () => { + Object.assign(izinBedelOraniForm, izinBedelOraniSafeForm) + } + + const NewForm = () => { + ResetForm() + isNew.value = true + } + + const EditForm = (item: Record) => { + Object.assign(izinBedelOraniForm, item) + isNew.value = false + } + + return { + izinBedelOraniBaseForm, + izinBedelOraniForm, + izinBedelOraniSafeForm, + izinBedelOraniList, + aktifIzinBedelOraniList, + isNew, + izinBedelOraniLoaded, + ResetForm, + SafeServerData, + RestoreData, + NewForm, + EditForm + } +}) diff --git a/src/module/muhasebe/validation/izinBedelOraniValidationStore.ts b/src/module/muhasebe/validation/izinBedelOraniValidationStore.ts new file mode 100644 index 0000000..df11648 --- /dev/null +++ b/src/module/muhasebe/validation/izinBedelOraniValidationStore.ts @@ -0,0 +1,64 @@ +import { defineStore } from 'pinia' +import { ref, reactive } from 'vue' +import { useValidationStore } from '@/stores/validationStore' + +export const useIzinBedelOraniValidationStore = defineStore( + 'izinBedelOraniValidationStore', + () => { + const validationStore = useValidationStore() + + const formChanged = ref(false) + const isFormValid = ref(true) + const invalidTexts = reactive>({}) + + const FormCheck = (panelData: Record): boolean => { + Object.assign(invalidTexts, {}) + + validationStore.IsFieldEmpty( + panelData, + invalidTexts, + 'ad', + 'Ad alanı zorunludur' + ) + + validationStore.IsFieldEmpty( + panelData, + invalidTexts, + 'oran', + 'Oran alanı zorunludur' + ) + + validationStore.IsFieldEmpty( + panelData, + invalidTexts, + 'aciklama', + 'Açıklama alanı zorunludur' + ) + + // Oran validation (0-100 arası) + if (panelData.oran !== undefined && panelData.oran !== '') { + const oran = parseFloat(panelData.oran) + if (isNaN(oran) || oran < 0 || oran > 100) { + invalidTexts.oran = 'Oran 0-100 arasında olmalıdır' + } + } + + isFormValid.value = Object.keys(invalidTexts).length === 0 + return isFormValid.value + } + + const ResetValidation = () => { + Object.assign(invalidTexts, {}) + formChanged.value = false + isFormValid.value = true + } + + return { + formChanged, + isFormValid, + invalidTexts, + FormCheck, + ResetValidation + } + } +) diff --git a/src/module/muhasebe/views/IzinBedelOrani.vue b/src/module/muhasebe/views/IzinBedelOrani.vue new file mode 100644 index 0000000..e45db14 --- /dev/null +++ b/src/module/muhasebe/views/IzinBedelOrani.vue @@ -0,0 +1,202 @@ + +