Doküman İndeksi

1. PunchIn (Giriş) ve PunchOut (Çıkış) Durumlarının Eklenmesi

2. Personellerin Varlık Olarak Eklenmesi

2.1. Personel Varlık Tipinin Eklenmesi

2.2. Personellerin Varlık Olarak Eklenmesi

3. Time Clock Varlık Ekranının Eklenmesi

4. Otomasyon Komutlarının Eklenmesi

           4.1. Time Clock Butonu

5. Eylemlerin Eklenmesi

           5.1. Mesaj Göster Eylemi

           5.2. Time Clock Ekranını Göster Eylemi

           5.3. Otomasyon Komutu Çalıştır Eylemi

           5.4 Program Ayarı Değiştir Eylemi

           5.5. Soru Sor Eylemi

           5.6. Varlık Durumunu Değiştir Eylemi

           5.7. Varlık Durumunu Günlüğe At Eylemi

           5.8. Varlığı Yükle Eylemi

6. Kuralların Eklenmesi

           6.1. Time Clock Ekranını Göster Kuralı

           6.2. Varlık Yükle Kuralı

           6.3. Time Clock Punch (Sor) Kuralı

           6.4. Varlık Durumunu Değiştir Kuralı

           6.5. Varlık Durumunu Günlüğe At Kuralı

7. Raporların ve Komutların Eklenmesi

           7.1. Raporların Eklenmesi

              7.1.1. Saatlik Rapor

           7.2. Komutların Eklenmesi

              7.2.1. Personel Saatleri Günlük

              7.2.2. Personel En Son Giriş

              7.2.3. Personel Saatleri Total

 

Time Clock Uygulamasına Başlamadan Önce

Bu dokümanda, Personel Çalışma Saatleri Takibi Uygulaması anlatılacaktır. Bu uygulama, personellerin sisteme Varlık olarak Giriş ve Çıkış yapmalarına imkan vermektedir.

Time Clock uygulamasına başlamadan önce, Navigasyon Ekranı Buttonları ile ilgili yapılması gereken 2 ayar vardır;

1- Özel Navigasyona İzin Verme

Ana Menü > Yönetim > Ayarlar > Yerel Ayarlar > Görüntüle > burada Özel Navigasyon’a İzin Ver seçili olmalıdır.

Gerekli düzenlemeleri yaptıktan sonra, Kaydet butonuna tıklayın. 

 

2- Varsayılan Navigasyon Butonları Oluşturma

Ana Menü > Yönetim > Ayarlar > Program Ayarları > Bakım > burada Create Default Navigation Buttons üzerine tılayın.

Gerekli düzenlemeleri yaptıktan sonra, Kaydet butonuna tıklayın.

 

Time Clock Uygulamasının Görünümü

 

Time Clock Uygulaması

1. PunchIn (Giriş) ve PunchOut (Çıkış) Durumlarının Eklenmesi

Bu durumlar, personelin Giriş yada Çıkış yapmasını takip etmek amaçlı kullanılır.

Ana Menü > Yönetim > Ayarlar > Durumlar > burada Durum Ekle üzerine tıklanır. PunchOut durumu için de aynı işlem tekrarlanır.

Giriş İçin Varlık Durumu
Adı: PunchIn
Durum Adı: TCStatus
Durum Tipi: Varlık Durumu

Çıkış İçin Varlık Durumu
Adı: PunchOut
Durum Adı: TCStatus
Durum Tipi: Varlık Durumu

Gerekli düzenlemeleri yaptıktan sonra, Kaydet butonuna tıklayın.

2. Personel Varlıklarının Eklenmesi

2.1. Personel Varlık Tipinin Eklenmesi

Ana Menü > Yönetim > Varlıklar > Varlık Tipleri > burada Varlık Tipi Ekle üzerine tıklayın.

Genel Ayarlar Sekmesi;

Adı:Personeller
Varlık Adı:Personel
Birincil Alan Adı:Adı
Varsayılan Durumlar: TCStatus=PunchOut;TCReport=Unloaded

Version 5, Varlık Tipleri için Varsayılan Durumları desteklemektedir. Bu özellik, yeni bir Varlık oluşturulduğunda, bir ”Başlangıç Durumu” belirler.

Özel Alanlar Sekmesi;

Hesap Sekmesi; (Opsiyonel)

Gerekli düzenlemeleri yaptıktan sonra, Kaydet butonuna tıklayın.

Hesap Tipi olarak, Personel Hesaplarını seçebilmek için, Personel Hesapları Hesap Tipi ve her personel için bir Hesap oluşturmuş olmanız gereklidir.

Personel Hesapları Hesap Tipinin Eklenmesi 

Ana Menü > Yönetim > Hesaplar > Hesap Tipleri > burada Hesap Şablonu Ekle üzerine tıklayın.

Adı: Personel Hesapları

Filtre Tipi: Ay (İhtiyacınıza göre seçin)

Kurallar: Varsayılan

Gerekli düzenlemeleri yaptıktan sonra, Kaydet butonuna tıklayın.

Her Bir Personel İçin Hesap Eklenmesi

Ana Menü > Yönetim > Hesaplar > Hesaplar > burada Hesap Ekle üzerine tıklayın.

Hesap Adı: Personelinizin adını yazın.

Hesap Tipi: Personel Hesapları

Para Birimi: Boş

Gerekli düzenlemeleri yaptıktan sonra, Kaydet butonuna tıklayın.

 

2.2. Personellerin Varlık Olarak Eklenmesi

Ana Menü > Yönetim > Varlıklar > Varlıklar > burada Varlık Ekle üzerine tıklayın.

Gerekli düzenlemeleri yaptıktan sonra, Kaydet butonuna tıklayın.

 

3. Time Clock Varlık Ekranın Eklenmesi

Ana Menü > Yönetim > VArlıklar > Varlık Ekranları > burada Varlık Ekranı Ekle üzerine tıklayın.

Genel Ayarlar Sekmesi;

Adı: Time Clock

Adisyon Tipi: Ticket

Görünüm Modu: Özel

Görünüm Sekmesi;

Varlık Listesi Sekmesi;

Varlık tipi: Personeller

Görünüm Durumu: TCStatus

Durum Filtresi: Boş

Varlık Seç butonuna tıklayarak, varlık ekranında görünmesini istediğiniz personellerinizi seçin.

İlişkiler Sekmesi;

İlişkiler sekmesinde, Ekle üzerine tıklayarak bir satır ekleyin.

Gerekli düzenlemeleri yaptıktan sonra, Kaydet butonuna tıklayın.

Düzenleme Modu Ayarları

Time Clock varlık ekranında, fare sağ tıklanarak Düzenleme Moduna geçilir, bir adet Entity Grid ve görüntülenmesi istenen personel sayısı kadar Özel Rapor Görüntüleyici oluşturulur.

Entity Grid Widget

Entity Grid Özellikler

Entity Grid Ayarlar

Varlık Tipi: Personeller
Display State: TCStatus
Otomasyon Komutu: TC-Varlık Yükle
Command Value: {ENTITY NAME}

Rapor Görüntüleyici Widgets

Rapor Görüntüleyici Özellikler; Personel Nizam

Name: Hours Nizam

Rapor Görüntüleyici Ayarlar; Personel Nizam

Rapor Adı: Personel Saatleri
Parameters: Personel,Nizam

Rapor Görüntüleyici Özellikler; Personel Veysel

Name: Hours Veysel

Rapor Görüntüleyici Ayarlar; Personel Veysel

Rapor Adı: Personel Saatleri
Parameters: Personel,Veysel

4. Otomasyon Komutlarının Eklenmesi

4.1. Time Clock Butonu

Ana Menü > Yönetim > Otomasyon > Otomasyon Komutları > burada Otomasyon Komutu Ekle üzerine tıklanır.

Genel Ayarlar Sekmesi;

Adı: TC-Time Clock Göster

Kategori: Navigasyon

Düğme Başlığı: Time Clock

Renk: Darkblue

Font Size: 26

Onay: Hiçbiri

Seçimi Temizle: Bu kutucuk seçili olmalıdır.

Navigasyon Seçenekleri Sekmesi;

Navigasyon Modülü: Entity

Navigasyon Modul Parametresi: Time Clock

Şablon:

[People:1]

<size 44><bold>Time Clock</bold></size>


@Nizam,Veysel

[='{SETTING:TCStatus $1}'=='Clocked In' ? '$1 ::: ' + '{ENTITY STATE MINUTES BY NAME:Personeller.$1:TCStatus}' : '']

İlişkiler Sekmesi;

İlişkiler sekmesinde, Ekle üzerine tıklayarak bir satır ekleyin.

Visibility: Navigasyonda Göster

Gerekli düzenlemeleri yaptıktan sonra, Kaydet butonuna tıklayın.

 

5. Eylemlerin Eklenmesi

5.1. Mesaj Göster Eylemi

Bu eylem, mesajları göstermek için kullanılır.

Ana Menü > Yönetim > Otomasyon > Eylemler > burada Eylem Ekle üzerine tıklayın.

Eylem Adı: TC-Mesaj Göster

Eylem Tipi: Mesaj Göster

Parametreler:

Mesaj: [:mesaj]

Gerekli düzenlemeleri yaptıktan sonra, Kaydet butonuna tıklayın.

 

5.2. Time Clock Ekranını Göster Eylemi

Bu eylem, Time Clock ekranını yenilemek için kullanılır.

Ana Menü > Yönetim > Otomasyon > Eylemler > burada Eylem Ekle üzerine tıklayın.

Eylem Adı: TC-Time Clock Ekranını Göster

Eylem Tipi: Modülü Göster

Module Name: Entity

Parametre: Time Clock

Hide Header: True

Gerekli düzenlemeleri yaptıktan sonra, Kaydet butonuna tıklayın.

 

5.3. Otomasyon Komutu Çalıştırıldı Eylemi

Bu eylem, diğer eylemleri çalıştırmak için kullanılır.

Ana Menü > Yönetim > Otomasyon > Eylemler > burada Eylem Ekle üzerine tıklayın.

Eylem Adı: TC-Otomasyon Komutu Çalıştır

Eylem Tipi: Otomasyon Komutu Çalıştır

Automation Command Name: [:AMCname]

Command Value:(Boş)

Background: False

Delay: 0

Gerekli düzenlemeleri yaptıktan sonra, Kaydet butonuna tıklayın.

 

5.4. Program Ayarı Değiştir Eylemi

Bu eylem, belirli parametreleri takip etmek için kullanılan, çeşitli Program Ayarlarını güncellemek için gereklidir.

Ana Menü > Yönetim > Otomasyon > Eylemler > burada Eylem Ekle üzerine tıklayın.

Eylem Adı: TC-Program Ayarı Değiştir

Eylem Tipi: Program Ayarı Değiştir

Parametreler:

Ayar Adı: [:SettingName]

Ayar Değeri: [:SettingValue]

Güncelleme Şekli: [:Güncelle]

Is Local: False

Gerekli düzenlemeleri yaptıktan sonra, Kaydet butonuna tıklayın.

 

5.5. Soru Sor Eylemi

Bu eylem, kullanıcıya Giriş yada Çıkış yapmak isteyip istemediğini sormak için kullanılır.

Ana Menü > Yönetim > Otomasyon > Eylemler > burada Eylem Ekle üzerine tıklayın.

Eylem Adı: TC-Punch (Sor)

Eylem Tipi: Soru Sor

Soru: [:Question]

Buttons:  [:Buttons]

Automation Command Name: [:AMCname]

Arkaplan Rengi: [:BGcolor]

Transparent Color:(Boş)

Gerekli düzenlemeleri yaptıktan sonra, Kaydet butonuna tıklayın.

 

5.6. Varlık Durumunu Değiştir

Bu eylem, Personel Varlık Durumunu, Giriş yada Çıkış olarak ayarlamak için kullanılır.

Ana Menü > Yönetim > Otomasyon > Eylemler > burada Eylem Ekle üzerine tıklayın.

 

Eylem Adı: TC-Varlık Durumunu Değiştir

Eylem Tipi: Varlık Durumunu Değiştir

Entity Type Name: Personeller

Varlık Adı:(Boş)

Entity State Name: TCStatus

Entity State: [:NewState]

Gerekli düzenlemeleri yaptıktan sonra, Kaydet butonuna tıklayın.

 

5.7. Varlık Durumunu Günlüğe At Eylemi

Bu eylem, Personel Varlık Durumunun, Giriş yada Çıkış yaptı olarak günlüğe atılması için kullanılır.

Ana Menü > Yönetim > Otomasyon > Eylemler > burada Eylem Ekle üzerine tıklayın.

Eylem Adı: TC-Varlık Durumunu Günlüğe At

Eylem Tipi: Varlık Durumunu Günlüğe At

Parametreler:

Adı: [:logName]

Entity Id: [:entityId]

State Name: [:SGroupName]

Start State: [:StateBeg]

Start State Date: [:SDateBeg]

End State: [:StateEnd]

End State Date: [:SDateEnd]

Custom Data: [:SCustomData]

Async: [:Async]

Gerekli düzenlemeleri yaptıktan sonra, Kaydet butonuna tıklayın.

 

5.8. Varlık Yükle Eylemi

Bu eylem, Personel Varlığını yüklemek için kullanılır, bu sayede Varlık Datasını ve Durumunu okumak ve ayarlamak mümkün olmaktadır.

Ana Menü > Yönetim > Otomasyon > Eylemler > burada Eylem Ekle üzerine tıklayın.

Eylem Adı: TC-Varlık Yükle

Eylem Tipi: Varlık Yükle

Entity Type Name: [:EntityTypeName]

Entity Name: (Boş)

Entity Search Value: [:SearchValue]

Gerekli düzenlemeleri yaptıktan sonra, Kaydet butonuna tıklayın.

 

6. Kuralların Eklenmesi

6.1. Time Clock Ekranını Göster Kuralı

Ana Menü > Yönetim > Otomasyon > Kurallar > burada Kural Ekle üzerine tıklayın. 

Kural Adı: TC-Time Clock Ekranını Göster

Olay Adı: Otomasyon Komutu Çalıştırıldı

Eğer Kural Çalışırsa: Eşleşmeler

Özel Kısıtlama Ekle: Automation Command Name | Eşittir | TC-Time Clock Göster

Eylem: TC-Time Clock Ekranını Göster

Constraint: Boş

Gerekli düzenlemeleri yaptıktan sonra, Kaydet butonuna tıklayın.

 

6.2. Personel Varlığını Yükle Kuralı

Ana Menü > Yönetim > Otomasyon > Kurallar > burada Kural Ekle üzerine tıklayın.

Kural Adı: TC-Personel Varlığını Yükle

Olay Adı: Otomasyon Komutu Çalıştırıldı

Eğer Kural Çalışırsa: Eşleşmeler

Özel Kısıtlama Ekle: Automation Command Name | Eşittir | TC-Varlık Yükle

Eylem: TC-Varlık Yükle

Entity Type Name: Personeller

Search Value: [:CommandValue]

Action: TC-Otomasyon Komutu Çalıştır

Constraint: Boş

AMCname: TC-Punch

Gerekli düzenlemeleri yaptıktan sonra, Kaydet butonuna tıklayın.

 

6.3. Time Clock Punch (Sor) Kuralı

Ana Menü > Yönetim > Otomasyon > Kurallar > burada Kural Ekle üzerine tıklayın.

Kural Adı: TC-Time Clock Punch (Sor)

Olay Adı: Otomasyon Komutu Çalıştırıldı

Eğer Kural Çalışırsa: Eşleşmeler

Özel Kısıtlama Ekle: Automation Command Name | Eşittir | TC-Punch

Eylem: TC-Punch (Sor)

Constraint: Boş

Question: {ENTITY NAME}: İçin Bir time Clock Eylemi Seçin:

Buttons:  Giriş=PunchIn:Orange;Gray,Çıkış=PunchOut:White;Gray,İptal=Cancel:Red;Gray

AMCname: TC-Varlık Durumunu Değiştir

BGColor: DarkBlue

Gerekli düzenlemeleri yaptıktan sonra, Kaydet butonuna tıklayın.

 

6.4. Varlık Durumunu Değiştir Kuralı

Ana Menü > Yönetim > Otomasyon > Kurallar > burada Kural Ekle üzerine tıklayın.

Kural Adı: TC-Varlık Durumunu Değiştir

Olay Adı: Otomasyon Komutu Çalıştırıldı

Eğer Kural Çalışırsa:  Tümü Eşleşiyor

Özel Kısıtlama Ekle: 

Automation Command Name | Eşittir | TC-Varlık Durumunu Değiştir

Command Value | Eşit Değil | Cancel

Command Value | Eşit Değil | {ENTITY STATE:TCStatus}

Action-1: TC-Varlık Durumunu Değiştir

Constraint: Boş

NewState: [:CommandValue]

Action-2: TC-Program Ayarı Değiştir

Constraint: Boş

SettingName: TCStatus {ENTITY NAME}

SettingValue: [=('[:CommandValue]'=='PunchIn' ? 'Clocked In' : 'Clocked Out')]

Action-3: TC-Otomasyon Komutu Çalıştır

Constraint: Boş

AMCname: TC-Time Clock Göster

Gerekli düzenlemeleri yaptıktan sonra, Kaydet butonuna tıklayın.

 

6.5. Varlık Durumunu Günlüğe At Kuralı

Ana Menü > Yönetim > Otomasyon > Kurallar > burada Kural Ekle üzerine tıklayın.

Kural Adı: TC-Varlık Durumunu Günlüğe At

Olay Adı: Varlık Durumu Güncellendi

Eğer Kural Çalışırsa: Eşleşmeler

Özel Kısıtlama Ekle: 

Entity Type Name | Eşittir | Personeller

State Name | Eşittir | TCStatus

Durum | Eşit Değil | Cancel

Eylem: TC-Varlık Durumunu Günlüğe At

Constraint: Boş

logName: Time Clock

entityId: [:EntityId]

SGroupName: [:StateName]

StateBeg: [:StartState]

SDateBeg: [:StartStateDate]

StateEnd: [:EndState]

SDateEnd: [:EndStateDate]

SCustomDate: ManualPunch~{SETTING:HolidayFlag}

Async: False

Gerekli düzenlemeleri yaptıktan sonra, Kaydet butonuna tıklayın.

 

7. Raporların ve Komutların Eklenmesi

7.1. Raporların Eklenmesi

7.1.1. Saatlik Rapor

Ana Menü > Yönetim > Raporlar > Raporlar > burada Rapor Ekle üzerine tıklayın.

Aşağıdaki kod grubunu kopyalayıp şablon alanına yapıştırın;

[Şimdiki Saatler $2:18,8, 15, 10, 18, 15, 6]
@@EmployeePunchInLatest:$1,$2[Önceki Saatler $2:18,8, 15, 10, 18, 15, 6]
>Tarih|Gün|Başlangıç|Bitiş|Saatler|OT|H
@@EmployeeHoursDaily:$1,$2
>@@EmployeeHoursTTL:$1,$2

 

Buradaki $ değişkenleri Özel Rapor Görüntüleyici Widget Parametre listesinden geçmektedir. Parametreler aşağıdaki şekilde atanmıştır:

$1 : Varlık Tipi (Personel)

$2 : Personel Adı (Nizam yada Veysel yada …vs)

$3 : Tarih Filtresi Başlangıcı (opsiyonel)

$4 : Tarih Filtresi Bitişi (opsiyonel)

$5 : Kullanılmayan

Gerekli düzenlemeleri yaptıktan sonra, Kaydet butonuna tıklayın.

Rapordaki şablon alanında $1 değerini Personel kelimesiyle, $2 değerini Personel İsmiyle değiştirmeniz gerekmektedir. Bu işlemden sonra, komutların da eklenmesiyle, rapor aşağıdaki gibi görünecektir.

7.2. Komutların Eklenmesi

SQL Komutları, yukarıda görünen rapordan çağrılmaktadır.

7.2.1. Personel Saatleri Günlük

Ana Menü > Yönetim > Otomasyon > Komutlar > burada Komut Ekle üzerine tıklayın.

Komut Adı: EmployeeHoursDaily

Denetimci: @@EmployeeHoursDaily

Komut: Aşağıdaki kod grubunu kopyalayıp, komut alanına yapıştırın;


-- PARM for Employee Entity Type
declare @EntityType varchar(20)  = '@1'
-- PARM for Employee Name
declare @Employee varchar(20)    = '@2'
-- PARM for Date Filter Start
declare @StartDateIn varchar(25) = '@3'
-- PARM for Date Filter End
declare @EndDateIn varchar(25)   = '@4'
-- if Employee Entity Type is invalid, set default as 'Employee'
IF (@EntityType = '') OR (@EntityType is null) OR (@EntityType = '$1') SET @EntityType = 'Employee'
-- if Date Filter START is invalid, set default to beginning of Current Month
IF (@StartDateIn = '') OR (@StartDateIn is null) OR (@StartDateIn = '$3') SET @StartDateIn = left(CONVERT(VARCHAR(25), GETDATE(), 126),7)+'-01T00:00:00'
-- if Date Filter END is invalid, set a default
IF (@EndDateIn = '') OR (@EndDateIn is null) OR (@EndDateIn = '$4') SET @EndDateIn = dateadd(Month,1,@StartDateIn)
-- set START and END date for Report Period
declare @StartDate datetime = convert(varchar(25),@StartDateIn,126)
declare @EndDate datetime = convert(varchar(25),@EndDateIn,126)
declare @EndDateInc datetime = convert(varchar(25),dateadd(day,-1,@EndDate),126)

-- set name of HolidayFlag
declare @HolidayFlag varchar(20) = 'Holiday'
-- set name of Clock-In State
declare @Clockin varchar(20) = 'PunchIn'
-- set Overtime Hour Limit
declare @HourLimit decimal(4,2) = 8.00

-- NOTHING TO SET BEYOND HERE)

SELECT
left(convert(varchar(19),sl.[StartStateDate],120),4)
+' '+
left(convert(varchar(19),sl.[StartStateDate],107),3)
+' '+
substring(convert(varchar(19),sl.[StartStateDate],120),9,2) as [Date]
,Left(format(sl.[StartStateDate],'D'),3) as [Day]
,substring(convert(varchar(19),sl.[StartStateDate],120),12,5) as [Start]
,substring(convert(varchar(19),sl.[EndStateDate],120),12,5) as [End]
,format((DateDiff(SECOND, sl.[StartStateDate], sl.[EndStateDate])/60.0/60.0),'0.00') as [Hours]
, CASE WHEN (DateDiff(SECOND, sl.[StartStateDate], sl.[EndStateDate])/60.0/60.0 > @HourLimit) THEN (format((DateDiff(SECOND, sl.[StartStateDate], sl.[EndStateDate])/60.0/60.0-@HourLimit),'0.00')) ELSE '0' END as [OTH]
, CASE WHEN (CHARINDEX(@HolidayFlag,sl.[CustomData]) > 0) THEN 1 ELSE 0 END as [H]

FROM [EntityStateLogs] sl
left join [Entities] e on e.[Id]=sl.[EntityId]
left join [EntityTypes] et on et.[Id]=e.[EntityTypeId]
WHERE 1=1
and sl.[StartStateDate] >= @StartDate
and sl.[EndStateDate] < @EndDate
and et.[EntityName] = @EntityType
and sl.[StartState] = @Clockin
and e.[Name]=@Employee
ORDER BY e.[Name], sl.[StartStateDate]

 

Gerekli düzenlemeleri yaptıktan sonra, Kaydet butonuna tıklayın.

 

7.2.2. Personel En Son Giriş 

Ana Menü > Yönetim > Otomasyon > Komutlar > burada Komut Ekle üzerine tıklayın.

Komut Adı: EmployeePunchInLatest

Denetimci: @@EmployeePunchInLatest

Komut: Aşağıdaki kod grubunu kopyalayıp, komut alanına yapıştırın;

-- PARM for Employee Entity Type
declare @EntityType varchar(20)  = '@1'
-- PARM for Employee Name
declare @Employee varchar(20)    = '@2'
-- PARM for Date Filter Start
declare @StartDateIn varchar(25) = '@3'
-- PARM for Date Filter End
declare @EndDateIn varchar(25)   = '@4'
-- if Employee Entity Type is invalid, set default as 'Employee'
IF (@EntityType = '') OR (@EntityType is null) OR (@EntityType = '$1') SET @EntityType = 'Employee'
-- if Date Filter START is invalid, set default to beginning of Current Month
IF (@StartDateIn = '') OR (@StartDateIn is null) OR (@StartDateIn = '$3') SET @StartDateIn = left(CONVERT(VARCHAR(25), GETDATE(), 126),7)+'-01T00:00:00'
-- if Date Filter END is invalid, set a default
IF (@EndDateIn = '') OR (@EndDateIn is null) OR (@EndDateIn = '$4') SET @EndDateIn = dateadd(Month,1,@StartDateIn)
-- set START and END date for Report Period
declare @StartDate datetime = convert(varchar(25),@StartDateIn,126)
declare @EndDate datetime = convert(varchar(25),@EndDateIn,126)
declare @EndDateInc datetime = convert(varchar(25),dateadd(day,-1,@EndDate),126)

-- set name of HolidayFlag
declare @HolidayFlag varchar(20) = 'Holiday'
-- set name of Clock-In State
declare @Clockin varchar(20) = 'PunchIn'
-- set Overtime Hour Limit
declare @HourLimit decimal(4,2) = 8.00

-- NOTHING TO SET BEYOND HERE
declare @Now datetime = CONVERT(VARCHAR(25), GETDATE(), 126)

SELECT
left(convert(varchar(19),sl.[EndStateDate],126),4)
+' '+
left(convert(varchar(19),sl.[EndStateDate],107),3)
+' '+
substring(convert(varchar(19),sl.[EndStateDate],120),9,2) as [Date]
,Left(format(sl.[EndStateDate],'D'),3) as [Day]
,substring(convert(varchar(19),sl.[EndStateDate],120),12,5) as [Start]
,substring(convert(varchar(19),@Now,120),12,5) as [End]
,format((DateDiff(SECOND, sl.[EndStateDate], @Now)/60.0/60.0),'0.00') as [Hours]
, CASE WHEN (DateDiff(SECOND, sl.[EndStateDate], @Now)/60.0/60.0 > @HourLimit) THEN (format((DateDiff(SECOND, sl.[EndStateDate], @Now)/60.0/60.0-@HourLimit),'0.00')) ELSE '0' END as [OTH]
, CASE WHEN (CHARINDEX(@HolidayFlag,sl.[CustomData]) > 0) THEN 1 ELSE 0 END as [H]

FROM [EntityStateLogs] sl
left join [Entities] e on e.[Id]=sl.[EntityId]
left join [EntityTypes] et on et.[Id]=e.[EntityTypeId]
WHERE 1=1
and sl.[Id]=(select max([Id]) from [EntityStateLogs] where [EntityId]=sl.[EntityId] and [EndState]=@Clockin)
and [EndStateDate]>(select max([StartStateDate]) from [EntityStateLogs] where [EntityId]=sl.[EntityId] and [StartState]=@Clockin)
and sl.[StartStateDate] >= @StartDate -- something wrong here
and sl.[EndStateDate] < @EndDate
and et.[EntityName] = @EntityType
and sl.[EndState] = @Clockin
and e.[Name]=@Employee
ORDER BY e.[Name], sl.[StartStateDate]

 

Gerekli düzenlemeleri yaptıktan sonra, Kaydet butonuna tıklayın.

 

7.2.3. Personel Saatleri Total

Ana Menü > Yönetim > Otomasyon > Komutlar > burada Komut Ekle üzerine tıklayın.

Komut Adı: EmployeeHoursTTL

Denetimci: @@EmployeeHoursTTL

Komut: Aşağıdaki kod grubunu kopyalayıp, komut alanına yapıştırın;

-- PARM for Employee Entity Type
declare @EntityType varchar(20)  = '@1'
-- PARM for Employee Name
declare @Employee varchar(20)    = '@2'
-- PARM for Date Filter Start
declare @StartDateIn varchar(25) = '@3'
-- PARM for Date Filter End
declare @EndDateIn varchar(25)   = '@4'
-- if Employee Entity Type is invalid, set default as 'Employee'
IF (@EntityType = '') OR (@EntityType is null) OR (@EntityType = '$1') SET @EntityType = 'Employee'
-- if Date Filter START is invalid, set default to beginning of Current Month
IF (@StartDateIn = '') OR (@StartDateIn is null) OR (@StartDateIn = '$3') SET @StartDateIn = left(CONVERT(VARCHAR(25), GETDATE(), 126),7)+'-01T00:00:00'
-- if Date Filter END is invalid, set a default
IF (@EndDateIn = '') OR (@EndDateIn is null) OR (@EndDateIn = '$4') SET @EndDateIn = dateadd(Month,1,@StartDateIn)

-- set START and END date for Report Period
declare @StartDate datetime = convert(varchar(25),@StartDateIn,126)
declare @EndDate datetime = convert(varchar(25),@EndDateIn,126)
declare @EndDateInc datetime = convert(varchar(25),dateadd(day,-1,@EndDate),126)

-- set name of HolidayFlag
declare @HolidayFlag varchar(20) = 'Holiday'
-- set name of Clock-In State
declare @Clockin varchar(20) = 'PunchIn'
-- set Overtime Hour Limit
declare @HourLimit decimal(4,2) = 8.00

 

-- NOTHING TO SET BEYOND HERE

 

SELECT
left(convert(date,[Date],120),7)
,left(convert(datetime,[Date],107),3)
,'',''
, format(sum([Hours]),'###.00') as [Hours]
, format(sum([OTH]),'###.00') as [OTH]
, sum([H]) as [H]
FROM (

SELECT
sl.[StartStateDate] as [Date]
,Left(format(sl.[StartStateDate],'D'),3) as [Day]
,substring(convert(varchar(19),sl.[StartStateDate],120),12,5) as [Start]
,substring(convert(varchar(19),sl.[EndStateDate],120),12,5) as [End]
,(DateDiff(SECOND, sl.[StartStateDate], sl.[EndStateDate])/60.0/60.0) as [Hours]
, CASE WHEN (DateDiff(SECOND, sl.[StartStateDate], sl.[EndStateDate])/60.0/60.0 > @HourLimit) THEN (DateDiff(SECOND, sl.[StartStateDate], sl.[EndStateDate])/60.0/60.0-@HourLimit) ELSE 0 END as [OTH]
, CASE WHEN (CHARINDEX(@HolidayFlag,sl.[CustomData]) > 0) THEN 1 ELSE 0 END as [H]

FROM [EntityStateLogs] sl
left join [Entities] e on e.[Id]=sl.[EntityId]
left join [EntityTypes] et on et.[Id]=e.[EntityTypeId]

WHERE 1=1
and sl.[StartStateDate] >= @StartDate
and sl.[EndStateDate] < @EndDate
and et.[EntityName] = @EntityType
and sl.[StartState] = @Clockin
and e.[Name]=@Employee
) Daily
WHERE 1=1
GROUP BY left(convert(date,[Date],120),7), left(convert(datetime,[Date],107),3)
ORDER BY 1

 

Gerekli düzenlemeleri yaptıktan sonra, Kaydet butonuna tıklayın.

NoYes (+1 rating, 1 votes)
Loading...