Skip to main content

AccessTr.neT


İzin Hesaplaması Yapan FOnksiyon

İzin Hesaplaması Yapan FOnksiyon

#1
Kod:
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
#2
Teşekürler.
Bizim için zor diye bir şey yoktur, imkansızsa zaman alır...
Cevapla
#3
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
#4
(26/05/2012, 13:29)mkucukk yazdı:
Kod:
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?
Son Düzenleme: 27/05/2012, 09:33, Düzenleyen: assenucler.
Cevapla
#5
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
#6
excel dosyası uzerınde gonderebılırmısınız
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task