• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Yıllık izin hk.

Halit Bey,

BD6 hücresindeki değer 20 gün fakat 14 gün olması gerekiyor. Koşulları aynı olan bir üst satırdaki (BD5) kişinin değeri ise doğru 14 gün.

Saygılarımla,
 

Ekli dosyalar

Birde bu kodu dene

Kod:
Function izinbul(izinbaslamatarihi, dogumtarihi, calisilansure, tarih)

If izinbaslamatarihi = "" Then izinbul = "": Exit Function
If dogumtarihi = "" Then izinbul = "": Exit Function
If calisilansure = "" Then izinbul = "": Exit Function
If tarih = "" Then izinbul = "": Exit Function

yıl = 365.25

tarih = CDate(tarih)
dogumtarihi = CDate(dogumtarihi)
izinbaslamatarihi = CDate(izinbaslamatarihi)
calisilansure = CDate(calisilansure)

deg1 = Val(Val(((tarih - dogumtarihi) * 1) + 1) / yıl)
deg2 = Val((tarih - izinbaslamatarihi) * 1) + 1

son = 0
If deg2 >= yıl Then
deg2 = Val((deg2 / yıl))
son1 = deg1 - deg2 - 1
i = Val(calisilansure / yıl)
j = Val(calisilansure / yıl)
For r = Val((tarih - izinbaslamatarihi) / yıl) To 1 Step -1
If izinbaslamatarihi > 0 Then
If i >= 1 And i <= 5 Then
izinbul = 14
ElseIf i >= 6 And i <= 14 Then
izinbul = 20
ElseIf i >= 15 And i <= 65 Then
izinbul = 26
End If
If izinbul < 20 Then
If (son1 - j) + i <= 17 Or (son1 - j) + i >= 50 Then
izinbul = 20
End If
End If

End If
son = son + izinbul
i = i - 1
Next r

izinbul = son
Else
izinbul = 0
End If
End Function
 
Halit Bey,

Şimdi de BD54 hücresindeki değer 70 oldu. Son yılı 50 yaş ve üzeri olduğundan dolayı 20 gün hakediyor. Toplam izin hakediş gün sayısı 76 gün olmalı.
 

Ekli dosyalar

kod
Kod:
Function izinbul(izinbaslamatarihi, dogumtarihi, calisilansure, tarih)

If izinbaslamatarihi = "" Then izinbul = "": Exit Function
If dogumtarihi = "" Then izinbul = "": Exit Function
If calisilansure = "" Then izinbul = "": Exit Function
If tarih = "" Then izinbul = "": Exit Function

yıl = 365.25

tarih = CDate(tarih)
dogumtarihi = CDate(dogumtarihi)
izinbaslamatarihi = CDate(izinbaslamatarihi)
calisilansure = CDate(calisilansure)

yas = Val(Val(((tarih - dogumtarihi) * 1) + 1) / yıl)
deg1 = Val((tarih - izinbaslamatarihi) * 1) + 1

son = 0
If deg1 >= yıl Then
deg2 = Val((deg1 / yıl))

i = Val(calisilansure / yıl)

For r = Val((tarih - izinbaslamatarihi) / yıl) To 1 Step -1
If izinbaslamatarihi > 0 Then
If i >= 1 And i <= 5 Then
izinbul = 14
ElseIf i >= 6 And i <= 14 Then
izinbul = 20
ElseIf i >= 15 And i <= 65 Then
izinbul = 26
End If
If izinbul < 20 Then
If yas - i <= 17 Or yas - i >= 50 Then
izinbul = 20
End If
End If

End If

son = son + izinbul
i = i - 1
Next r

izinbul = son
Else
izinbul = 0
End If
End Function
 
bu mesajdaki koda da ayrıca bak
Kod:
Function izinbul(izinbaslamatarihi, dogumtarihi, calisilansure, tarih)

If izinbaslamatarihi = "" Then izinbul = "": Exit Function
If dogumtarihi = "" Then izinbul = "": Exit Function
If calisilansure = "" Then izinbul = "": Exit Function
If tarih = "" Then izinbul = "": Exit Function

yıl = 365.25

tarih = CDate(tarih)
dogumtarihi = CDate(dogumtarihi)
izinbaslamatarihi = CDate(izinbaslamatarihi)
calisilansure = CDate(calisilansure)

deg2 = Val(Val(((tarih - dogumtarihi) * 1) + 1) / yıl)
deg1 = Val((tarih - izinbaslamatarihi) * 1) + 1

son = 0
If deg1 >= yıl Then
deg3 = Val(calisilansure / yıl)

yas = deg2 - deg3

For i = 1 To Val((tarih - izinbaslamatarihi) / yıl)
If izinbaslamatarihi > 0 Then
If i >= 1 And i <= 5 Then
izinbul = 14
ElseIf i >= 6 And i <= 14 Then
izinbul = 20

ElseIf i >= 15 And i <= 65 Then
izinbul = 26
End If
If izinbul < 20 Then
If yas + i <= 17 Or yas + i > 50 Then
izinbul = 20
End If
End If
End If

son = son + izinbul
Next i

izinbul = son
Else
izinbul = 0
End If
End Function
 
Halit Bey günaydın,

Sizleri çok uğraştırdığımın farkındayım.

her iki kodu denedim fakat 50 yaş üstünde hata var.

Not:
Bu hata ile ilgili tespitim, günün tarihi - izin baz tarihi eşit ise çalışılan süreye, yaş hesabına bağlı BD8 ve BD9 daki gibi izin gün sayısını doğru yapıyor. Eşit değil ise (BD6 nın yaşını aşağı çekiyorum) aradaki fark kadar yaşı geriye çekince doğru yapıyor.
 

Ekli dosyalar

Şimdi anlamaya çalışıyorum

=izinbul(BA5;F5;AT5;(EK5+1))
=izinbul(BA5;F5;AT5;(AT$3+1))

her iki formülde neden fark var
(EK5+1))
(AT$3+1)
 
birde bu kodu dene

Kod:
Function izinbul(izinbaslamatarihi, dogumtarihi, calisilansure, tarih)

If izinbaslamatarihi = "" Then izinbul = "": Exit Function
If dogumtarihi = "" Then izinbul = "": Exit Function
If calisilansure = "" Then izinbul = "": Exit Function
If tarih = "" Then izinbul = "": Exit Function

yıl = 365.25

tarih = CDate(tarih)
dogumtarihi = CDate(dogumtarihi)
izinbaslamatarihi = CDate(izinbaslamatarihi)
calisilansure = CDate(calisilansure)

deg2 = Val(Val(((tarih - dogumtarihi) * 1) + 1) / yıl)
deg1 = Val((tarih - izinbaslamatarihi) * 1) + 1

son = 0
If deg1 >= yıl Then
deg3 = Val(calisilansure / yıl)

yas = deg2 - Val((tarih - izinbaslamatarihi) / yıl) 'deg3

For i = 1 To Val((tarih - izinbaslamatarihi) / yıl)
If izinbaslamatarihi > 0 Then
If i >= 1 And i <= 5 Then
izinbul = 14
ElseIf i >= 6 And i <= 14 Then
izinbul = 20

ElseIf i >= 15 And i <= 65 Then
izinbul = 26
End If

If izinbul < 20 Then
If yas + i <= 17 Or yas + i > 50 Then
izinbul = 20
End If
End If
End If

son = son + izinbul
Next i

izinbul = son
Else
izinbul = 0
End If
End Function
 
Şunu söyleyim

Çalışılan süreyle işe giriş tarihi paralel olmalı buyün işe girenin 5000 çalışma süresi olmaz
diğer taraftan bu konu ile ilgili ilk mesajdaki dosyanızda kodlar yaşların dışında istediğiniz sonucu veriyormuydu.
 
1. mesajımdaki kodlar çalışılan süre ile ilgili istediğim sonucu veriyordu. Sadece yaş/kıdem süresini ilişkilendirme gibi bir sorun vardı.
 
1 Nolu mesajdaki kod ile ilgili yaş ve kıdemde düzeltme yapıldı.

Kod:
Function izinbul(izinbaslamatarihi, dogumtarihi, calisilansure, tarih)


If izinbaslamatarihi = "" Then izinbul = "": Exit Function
If dogumtarihi = "" Then izinbul = "": Exit Function
If calisilansure = "" Then izinbul = "": Exit Function
If tarih = "" Then izinbul = "": Exit Function

yıl = 365.25
tarih = CDate(tarih)
deg2 = Val((tarih - CDate(izinbaslamatarihi)) * 1) + 1
deg1 = Val(Val(((tarih - CDate(dogumtarihi)) * 1) + 1) / yıl)

son = 0
If deg2 >= yıl Then
deg2 = Val((deg2 / yıl))
son1 = deg1 - deg2 - 1
i = Val(CDate(calisilansure) / yıl)
For r = Val((CDate(tarih) - izinbaslamatarihi) / yıl) To 1 Step -1
If izinbaslamatarihi > 0 Then
If i >= 1 And i <= 5 Then
izinbul = 14
ElseIf i >= 6 And i <= 14 Then
izinbul = 20
ElseIf i >= 15 And i <= 65 Then
izinbul = 26
End If

If izinbul < 20 Then
If son1 + i <= 17 Or son1 + i > 50 Then
izinbul = 20
End If
End If

End If
son = son + izinbul
i = i - 1
Next r

izinbul = son
Else
izinbul = 0
End If
End Function
 
Halit Bey,

Sonsuz teşekkürler. Sizi çok yordum.

Sadece 50 yaş / izin hakediş tarihi geçişlerinde -+4 gün sapmalar oluyor.

Bu bile benim için yeterli sayılır. Sizleri daha çok yormak istemem.
Hakkınızı helal edin.

Kalın sağlıcakla.
 
Son düzenleme:
Bir çok dosya oldu ben kümülatifi anlayamadım
 
Teşekkürler iyi çalışmalar
 
Sn Suskun.

Sizlere de teşekkür ederim.

İyi ki varsınız.
 
Sayın nongeyikm Merhaba

Daha önce sitedeki arkadaşlarında yardımıyla hazırlamış olduğum ve kullanım kılavuzu yazılı mevzuata uygun yıllık izin dosyası ekte sunulmuştur.
kullanmak isterseniz ve kullanım mantığı ile ilgili sorunuz olursa yazabilirsiniz.
Ancak hatırlatma yapmak istiyorum izin hakkediş ile yıllık izin mevzuatına uygun olması için hakkediş günlerine göre 14 güne +2, 20 güne +3, 26 güne +4 gün hafta tatili gelmesi gerektiğinden kişilerin yapacakları izin ile yıllık defterinde görülecek günlerin birbirini tamamlaması açısından modüle1 de ki ilgili satırlardaki hakkediş günlerini hafta tatillerine uygun olarak artırmanız gerekiyor. Dosyayı incelerseniz anlatmak istediğimi görürsünüz.

Kolay gelsin
 

Ekli dosyalar

Sn. Ckarabacak.
İlginizden dolayı teşekkür ederim. Sizin de çalışmanız gayet güzel.
İnşaat sektöründe olduğumuzdan, her personelin birden çok giriş çıkışı vardır. İş kanununda, "tüm çalışılan süreler izin kıdem hesabında dikkate alınır" ifadesi yer aldığından dolayı, benim çalışmadaki en önemli husus, kıdem gün sayısı ve ödenmeyip artan süreleri dikkate alarak hesaplamaların yapılması.
Kısaca benim tabloda, işe giriş tarihinden ziyade önceki işe giriş-çıkışlardan oluşan kıdem gün sayısı ve bir önceki işten çıkışında ödenmeyen gün sayısı dikkate alınarak yeni bir sanal işe giriş tarihi oluşturarak hesaplamaları yapmak. Şu anki durumda 50 yaş geçiğinde +-4 sapma var.

Hayırlı günler dilerim.
 
Geri
Üst