FilemakerTurk, AYS Bilişim ve Beyaz Net tarafından desteklenmektedir.
Filemaker Danışmanınız
AYS Bilişim
Mehmet KAYA
 0532 231 07 27
 0216 318 55 80
 mkaya@aysbilisim.net
						

Yevmiye Hesaplatma

+1 oy
907 kez görüntülendi
Merhaba.

Biraz karışık bir sorum olacak ama inşallah anlatmayı becerebilirim

Bir çalışmada işe başlama tarihini girdik ve her aya ait bir çalışma süresi alanı oluşturduk. çıkış bilgisi olmadığı sürece bulunduğu güne göre o aya ait çalışma gün sayılarını otomatik yazdırmak mümkünmüdür. (eksik gün olmadığı müddetçe ay kaç çekerse çeksin sonuç 30 olacak.) çalışılmayan gün bilgisi girilirse o ay içinde kalan çalışma gün sayısını verecek

Çıkış bilgisi girilirse o tarihden sonra ilgili alana yevmiye yazmayacak.

 

Örnek

bir personel 11.01.2016 tarihinde işe başladı şubat ayında 5 gün çalışmadı nisan ayında 13.04.2016 tarihide işi bırakdı

Ocak: 21

Şubat:24

mart:30 (mart 31 çekmesine ramen 30 olacak)

Nisan :13 olacak

 

başka bir personel 18.01.2016 tarihinde işe başladı  mart ayında 3.03.2016 tarihide işi bırakdı

Ocak : 14

şubat 30 (şubat 29 veya 28 çekmesine ramen eksik gün yoksa gene 30 olacak)

Mart 3 şeklinde olacak acaba mümkünmüdür

 

 

yardımlarınız için şimdiden teşekkürler.
1, Ekim, 2016 Scripts kategorisinde OrhanSarı (4,280 puan) tarafından soruldu

2 Cevaplar

+2 oy
 
En İyi Cevap
Şu hesaplamayı deneyin;

Let (
[
BaslamaTarihi = Date ( 1 ; 11 ; 2016 )  ;
BitisTarihi = Date ( 4 ; 13 ; 2016 )  ;
HangiAy = 3 ;
HangiYil = 2016 ;
EksikGun = 0 ;
GunSay = Day ( Date ( HangiAy+1 ; 1 ; 1 ) - 1 )
] ;

   Case (

        //Durum 1 : Aynı anda çalışıp ayrılırsa
        Month ( BaslamaTarihi ) = HangiAy and Month ( BitisTarihi ) = HangiAy

        //Koşullara devam ediyoruz, yılı da kontrol etmemiz lazım, yoksa gelecek sene yine ilk defa işe giriyormuş gibi değerlendirir.
        and Year ( BaslamaTarihi ) = HangiYil and Year ( BitisTarihi ) = HangiYil;
        
        //Durum 1 Hesaplaması
        BitisTarihi - BaslamaTarihi  ;

 

        //Durum 2 : İşe başladığı aysa
        Month ( BaslamaTarihi ) = HangiAy and Year ( BaslamaTarihi ) = HangiYil ;

        //Durum 2 Hesaplaması
        GunSay - Day ( BaslamaTarihi ) +1 ;

 

        //Durum 3 : İşten ayrıldığı aysa
        Month ( BitisTarihi ) = HangiAy and Year ( BitisTarihi ) = HangiYil ;

        //Durum 3 Hesaplaması
        Day ( BitisTarihi ) ;

 

        //Durum 4 : Normal çalışma ayları 30 gün
        30

   )

   // Eksik gün tüm durumlar için çıkartılacağı için "Case"in dışında.
   - EksikGun

)
1, Ekim, 2016 F. Osman Cabi (200,340 puan) tarafından cevaplandı
7, Ekim, 2016 OrhanSarı tarafından seçilmiş
Hocam kusuruma bakmayın biraz yeniyim o yüzden bazı komutları anlamakda zorlanıyorum isterseniz mevcut çalışma durumumu ve alanları anlatayım size

projemde başlangıç tarihi alanı ve bitiş tarihi alanı
her ay için ayrı bir alan olarak çalışma gün sayısı alanı var (her kayıt yıllık olarak kullanıldığı için sene hesabına ihtiyaç yok)
yani
ocak çalışma gün sayısı
şubat çalışma gün sayısı
mart çalışma gün sayısı
nisan çalışma gün sayısı

ve bu şekilde alanlar aşağı doğru ARALIK ayına kadar uzayıp gidiyor.
mesela 2017 için birbirleri ile bir bağlantıya gerek yok 2017 de devam edecekler ayrı bir kayıt açılarak 2017 ler başka kayıttan takip edilecek.

yani ben sadece giriş tarihi yazdığımda aylar geçdikçe (mesela ayın 15 inde karta bakdığımda o gün için ilgili ay alanına 15 i yazsın ertesi gün bakdığımda 16 yazsın çıkış tarihi vermediğim sürece günlük güncelleyerek ilgili alana o ana kadarki puantajı otomatik olarak işletmeye çalışıyorum. giriş tarihinden sonra gerekirse sadece eksik günleri elle gireyim. çıkış tarihi verildiğinde ise artık hesaplaa yapmasına gerek kalmasın.

birde son olarak yukarıdaki formüllerde türkçe komutlar dikkatimi çekdi türkçe filemakermı kullanıyorsunuz onlar olması gereken muhtemel alan adlarımıdır.

İlginiz için çok teşekkür ederim hocam.
// ile başlayan kısımlar açıklama satırları, hesaplamanın daha rahat anlaşılması için.

Bu formülü tüm aylarınız için uygulayabilirsiniz. Let ile tanımlanan değişkenlerden ilk 4'ünü değiştirmeniz yeterli. Başlama ve BitişTarihini alandan, HangiAy = XX olan kısma her alanda ilgili ay numarasını yazmanız yeterli. HangiYil'i da yine alandan çağırabilirsiniz. EksikGun değişkeni yine alandan çağrılabilir.

Yalnız ilaveten bir Durum0 var. Mart ayında işe başlayan birisi için Ocak ve Şubatta 30 gün yazmasını engellemek için.

Şu şekilde olabilir:

// Durum 0, çalışıyor mu kontrolü
HangiYil & Right( "0" & HangiAy ; 2) < Year ( BaslamaTarih) & Right ( "0" & Month ( BaslamaTarih ) ; 2 )
or
HangiYil & Right( "0" & HangiAy ; 2) > Year ( BitisTarihi) & Right ( "0" & Month ( BitisTarihi ) ; 2 ) ;
""
Hocam öncelikle Allah razı olsun. pek becerebileceğime ümidim yokdu ama sayende baya bir yol almış oldum. giriş tarihini 15/09/2016 ayrılma tarihini 15/11/2016 yapdığımda tüm alanlar tam istediğim gibi sonuç veriyor.  daha sonraki cevabındaki formülü ilave etmek için farklı birkaç kombinasyon denedim ama sonucu bozdu o ilave olmayıncada kasımda çıkış tarihi yazdığımda aralık 30 sonucu veriyor veya ekimde giriş tarihi veriyorum eylül 30 oluyor

:(

kendi sistemime uyarladığım hali bu

Let (
[
BaslamaTarihi = serv_bsl_trh  ;
BitisTarihi = ayilma_tarihi  ;
HangiAy = 9 ;
HangiYil = 2016 ;
EksikGun = 0 ;
GunSay = Day ( Date ( HangiAy+1 ; 1 ; 1 ) - 1 )
] ;

   Case (

 

        Month ( BaslamaTarihi ) = HangiAy and Month ( BitisTarihi ) = HangiAy

        
        and Year ( BaslamaTarihi ) = HangiYil and Year ( BitisTarihi ) = HangiYil;
        
        
        BitisTarihi - BaslamaTarihi  ;

 

       
        Month ( BaslamaTarihi ) = HangiAy and Year ( BaslamaTarihi ) = HangiYil ;


       
        GunSay - Day ( BaslamaTarihi ) +1 ;

 

       
        Month ( BitisTarihi ) = HangiAy and Year ( BitisTarihi ) = HangiYil ;

       
        Day ( BitisTarihi ) ;

 

       
        30

   )

   
   - eksik gun eyl

)

ilave olarak henüz içinde olmadığımız aylarıda hesaplıyor. yani biz şu anda ekim ayındayız ayın biri ve ekim alanı 1 kasım alanı sıfır olabilirmi yani mevcut tarihe göre hesaplama günlük güncellenebilirmi.
+2 oy
Puantaj yazilimi. Calisma tablosu olusturun her personel ve tarih calisma saati alani acin personel 03.2016 olarak aratin. 03.2016 mayis 2016 ayindaki tum tarihleri listeler.
Daha belirgin olmasi icin takvim eklentisi kullanabilirsiniz
1, Ekim, 2016 Goksel_Gokce (98,530 puan) tarafından cevaplandı
...