İzin Hesaplaması Yapan FOnksiyon
Tarih
26/05/2012 13:29
Konu Sahibi
mkucukk
Yorumlar
5
Okunma
2667
Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 5
  • 4
  • 3
  • 2
  • 1

Derecelendirme: 0/5 - 0 oy



mkucukk
Üye
Kullanici Avatari
Üye
6
3
26/11/2008
0
Bursa
Ofis 2003
17/11/2012,01:25

Kod:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Function izin$(giris, dtarih)
b = Month(giris) ' giriş tarihinin ayı
c = Month(Now) ' şimdiki zamanın ayı
m = Month(dtarih) ' doğum tarihinin ayı
simdi = Year(Now) ' bulunduğumuz zamana ait yıl değeri
izinyas = Year(giris) + 1 ' izin kullanma yılı


' Kıdem Yılı Hesaplama
a = DateDiff("yyyy", giris, Now) ' giris tarihi ile şimdiki zaman farkı
If b > c Then
 kidem = a - 1 'doğum ayı şu anki aydan küçük ise 1 azalt
Else
 kidem = a
End If

'İşçinin işe girdiğindeki yaşı
k = DateDiff("yyyy", dtarih, giris) ' giris tairihi ile doğum tarihindeki fark
If b < m Then
 yas = k - 1
Else
 yas = k
End If

' işe başlamada 49 yaşında olan kişi izin hakettiğinde 50 yaşında olacağından 49 çıkartma yapılarak hesaplandı
limit = 49 - yas ' 50 yılı tamamlama için limit heseplama

'50 yaşından önce giren kidem yılı ilk 5 yılında 50 yaşına girenler için fark hesaplama
If limit > 0 And limit < 4 Then
fark = 5 - limit
Else
fark = 0
End If

If kidem < 6 Then
 If yas > 49 Then
 sonuc = kidem * 20
 Else
 sonuc = kidem * 14 + fark * 6
 End If

ElseIf kidem > 5 And kidem < 15 Then
 If yas > 49 Then
 sonuc = kidem * 20
 Else
 sonuc = (kidem * 14) + fark * 6 + (kidem - 5) * 6
 End If
Else
 If yas > 49 Then
 sonuc = kidem * 20 + (kidem - 14) * 6
 Else
 sonuc = (kidem * 14) + fark * 6 + (kidem - 5) * 6 + (kidem - 14) * 6
 End If
End If

izin$ = sonuc

End Function


Yukarıdaki fonkisyon işçinin işe giriş tarihi ve doğum tarihini alarak izin hakkını hesaplar. Benim gözden kaçırdığım bir olay olabilir. Yararlı olması dileğiyle... Kolay gelsin.

Cevapla


DUAYEN
Aktif Üye
Kullanici Avatari
Aktif Üye
S.... A....
1.026
13/08/2010
279
Yozgat
Ofis 2007
28/10/2016,11:41
Teşekürler.
Bizim için zor diye bir şey yoktur, imkansızsa zaman alır...
Cevapla


benremix
Uzman
Kullanici Avatari
Uzman
R.... S....
4.431
17/05/2009
365
Ankara
Ofis 2010
Dün,21:35
Elinize sağlık.

Saygılar....
Bilgi paylaşıldıkça çoğalır....
Her engel, yaşam koşullarınızı daha iyileştirecek bir fırsattır.


Access için her zaman lazım olacak konu başlıkları listesi 


Cevapla


assenucler

Kullanici Avatari
Onursal
A.... S.... Ş....
2.052
31/10/2008
63
İstanbul
-
29/11/2016,00:04
(26/05/2012, 13:29)mkucukk Adlı Kullanıcıdan Alıntı:

Kod:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Function izin$(giris, dtarih)
b = Month(giris) ' giriş tarihinin ayı
c = Month(Now) ' şimdiki zamanın ayı
m = Month(dtarih) ' doğum tarihinin ayı
simdi = Year(Now) ' bulunduğumuz zamana ait yıl değeri
izinyas = Year(giris) + 1 ' izin kullanma yılı


' Kıdem Yılı Hesaplama
a = DateDiff("yyyy", giris, Now) ' giris tarihi ile şimdiki zaman farkı
If b > c Then
 kidem = a - 1 'doğum ayı şu anki aydan küçük ise 1 azalt
Else
 kidem = a
End If

'İşçinin işe girdiğindeki yaşı
k = DateDiff("yyyy", dtarih, giris) ' giris tairihi ile doğum tarihindeki fark
If b < m Then
 yas = k - 1
Else
 yas = k
End If

' işe başlamada 49 yaşında olan kişi izin hakettiğinde 50 yaşında olacağından 49 çıkartma yapılarak hesaplandı
limit = 49 - yas ' 50 yılı tamamlama için limit heseplama

'50 yaşından önce giren kidem yılı ilk 5 yılında 50 yaşına girenler için fark hesaplama
If limit > 0 And limit < 4 Then
fark = 5 - limit
Else
fark = 0
End If

If kidem < 6 Then
 If yas > 49 Then
 sonuc = kidem * 20
 Else
 sonuc = kidem * 14 + fark * 6
 End If

ElseIf kidem > 5 And kidem < 15 Then
 If yas > 49 Then
 sonuc = kidem * 20
 Else
 sonuc = (kidem * 14) + fark * 6 + (kidem - 5) * 6
 End If
Else
 If yas > 49 Then
 sonuc = kidem * 20 + (kidem - 14) * 6
 Else
 sonuc = (kidem * 14) + fark * 6 + (kidem - 5) * 6 + (kidem - 14) * 6
 End If
End If

izin$ = sonuc

End Function


Yukarıdaki fonkisyon işçinin işe giriş tarihi ve doğum tarihini alarak izin hakkını hesaplar. Benim gözden kaçırdığım bir olay olabilir. Yararlı olması dileğiyle... Kolay gelsin.



Sayın mkucukk;

Günaydın ve iyi pazarlar. Öncelikle emek ve paylaşımınız için teşekkürler.

Yıllık ücretli izin hesabına ilişkin yayımlanan yönetmeliğe göre; "onsekiz ve daha küçük yaştaki işçilerle elli ve daha yukarı yaştaki işçilere verilecek yıllık ücretli izin süresi yirmi günden az olamaz" hükmü yer almaktadır.

Yukarıdaki fonksiyonda, 50 yaş ve üstü için en az izin süresi olan "20" gün, hesaplamada dikkate alınmıştır.

Acaba, onsekiz ve daha küçük yaştakiler için de geçerli olan bu 20 günlük süre, fonksiyona eklenebilir mi?
Cevapla


mkucukk
Üye
Kullanici Avatari
Üye
6
3
26/11/2008
0
Bursa
Ofis 2003
17/11/2012,01:25

Visual Basic Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
Function izin$(giris, dtarih, ctarih)
If ctarih = "" Then
ctarih = Now
Else
ctarih = ctarih
End If

' Kıdem Yılı Hesaplama
a = DateDiff("m", giris, ctarih) ' Ay olarak fark
kidem = Fix(a / 12) ' Tam yılı doldurması için aşağı yuvarladık.

'İşe girdiğindeki yaşı
b = DateDiff("m", dtarih, giris) ' Ay olarak fark
yas = Fix(b / 12) ' Tam yılı doldurması için aşağı yuvarladık.

' Bir yıldan beş yıla kadar (beş yıl dahil) olanlara ondört günden,
' Beş yıldan fazla onbeş yıldan az olanlara yirmi günden,
' Onbeş yıl (dahil) ve daha fazla olanlara yirmialtı günden
' Ancak onsekiz ve daha küçük yaştaki işçilerle elli ve daha yukarı yaştaki işçilere
' verilecek yıllık ücretli izin süresi yirmi günden az olamaz.

' İzin Kidem yılını doldurmayanalar
If kidem = 0 Then
 sonuc = 0
' İzin Kıdem yılını beş yıla kadar olanlar
ElseIf kidem > 0 And kidem <= 5 Then
 'İşe girme yaşı 18'den küçük olanlar
 If yas > 14 And yas < 18 Then
 d = kidem - (18 - yas)
 If d < 0 Then
 fark = 0
 Else
 fark = d
 End If
 
 sonuc = kidem * 20 - fark * 6
 ' İşe girme yaşı 19 ile 44 arasında olanlar
 ElseIf yas > 17 And yas < 45 Then
 sonuc = kidem * 14
 'İşe girme yaşı 45-48 arasında olanlar
 ElseIf yas >= 45 And yas < 49 Then
 c = kidem - (49 - yas)
 If c < 0 Then
 fark = 0
 Else
 fark = c
 End If
 
 sonuc = kidem * 14 + fark * 6
 'İşe girme yaşı 49 dan büyük olanlar
 Else
 sonuc = kidem * 20
 End If
 
' İzin kıdem yılı beş yıl ile onbeş yıl olanlar
ElseIf kidem > 5 And kidem < 15 Then

 'İşe girme yaşı 18'den küçük olanlar
 If yas > 14 And yas < 18 Then
 d = 5 - (18 - yas)
 If d < 0 Then
 fark = 0
 Else
 fark = d
 End If
 
 sonuc = kidem * 20 - fark * 6
 ' İşe girme yaşı 19 ile 44 arasında olanlar
 ElseIf yas > 17 And yas < 45 Then
 sonuc = kidem * 14 + (kidem - 5) * 6
 'İşe girme yaşı 45-48 arasında olanlar
 ElseIf yas >= 45 And yas < 49 Then
 c = kidem - (49 - yas)
 If c < 0 Then
 fark = 0
 Else
 fark = c
 End If
 
 sonuc = kidem * 14 + fark * 6 + (kidem - 5) * 6
 'İşe girme yaşı 49 dan büyük olanlar
 Else
 sonuc = kidem * 20
 End If

' İzin kıdem yılı onbeşyıl ve fazla olanlar
Else

 'İşe girme yaşı 18'den küçük olanlar
 If yas > 14 And yas < 18 Then
 d = 5 - (18 - yas)
 If d < 0 Then
 fark = 0
 Else
 fark = d
 End If
 
 sonuc = kidem * 20 - fark * 6 + (kidem - 14) * 6
 ' İşe girme yaşı 19 ile 44 arasında olanlar
 ElseIf yas > 17 And yas < 45 Then
 sonuc = kidem * 14 + (kidem - 5) * 6
 'İşe girme yaşı 45-48 arasında olanlar
 ElseIf yas >= 45 And yas < 49 Then
 c = kidem - (49 - yas)
 If c < 0 Then
 fark = 0
 Else
 fark = c
 End If
 
 sonuc = kidem * 14 + fark * 6 + (kidem - 5) * 6 + (kidem - 14) * 6
 'İşe girme yaşı 49 dan büyük olanlar
 Else
 sonuc = kidem * 20 + (kidem - 14) * 6
 End If

End If


izin$ = sonuc

End Function


Formül revize edildi. Önceki formülde hata üreten bölümler vardı. Onlar düzeltildi. Ayrıca bizim işletmede 18 yaşından küçükler çalışmadığı için onu göz ardı etmiştim. Genel olduğu için onuda göz önüne aldım.
Formül üç değer alıyor. İlk değer işe giriş tarihi, ikinci değer doğum tarihi ve üçün cü değer işçi işten çıkmış ise çıkış tarihi olacak. Eğer işçi çıkmamış ve devam ediyor bu değer 0 olacak.

Yaralı olması dileğiyle. Kolay gelsin....

Cevapla


afs11
Üye
Kullanici Avatari
Üye
2
0
07/01/2012
0
Bilecik
Ofis 2007
14/11/2014,12:53
excel dosyası uzerınde gonderebılırmısınız
Cevapla







Konuyu Okuyanlar: 1 Ziyaretçi


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Tarih Son Yorum
  Personel İzin Takip nihatkr 40 38.441 30/05/2016, 13:56 maviturna
  Personel İzin Belgesi gok_han 4 3.718 25/08/2010, 10:24 hk59


Türkçe Çeviri: MCTR, Forum Yazılımı: MyBB, © 2002-2016 MyBB Group.
DMCA.com Protection Status
© Desing by XSTYLED| Develops by ozanakkaya