Tässä artikkelissa kuvataan parhaat käytännöt poissaolojen viemiseksi Sympaan.
Löydät tietokantataulujen sarakekuvaukset täältä
Tyypilliset työajan poiminnan esimerkit ovat tässä artikkelissa ja projektirakenteen, projektien huomioiden poiminta tässä artikkelissa ja poissaolojen poiminnan yleisohje tässä artikkelissa.
Esimerkissä siirretään
- Poissaolotapahtuman kokopäivän poissaolotunnit sekä osapäivän poissaolotunnit.
- Sairauslomatapahtuman kokopäivän poissaolotunnit sekä osapäivän poissaolotunnit.
- Poissaoloina käsiteltävien tapahtumatyyppien kokopäivän poissaolotunnit sekä osapäivän poissaolotunnit
Aineistoon muodostuu yksi rivi per tapahtuma. Rivi sisältää yksilöllisen tunnisteen (activityId), jonka perusteella Sympa päivittää riviin tulevat muutokset automaattisesti. Myös hyväksymättömät poissaolot ja tieto poistetuista tapahtumista siirretään. Muutokset poissaolon päivämääriin, poissaololajiin, hyväksyntätietoon sekä tieto tapahtuman poistamisesta siirtyy Sympaan sääntöjoukon ajastuksen mukaisesti. Sääntöjoukko suositellaan ajastettavan ajettavaksi kerran yössä, jolloin aineisto muodostuu SFTP palvelimelle. Aineisto poimitaan 3kk taaksepäin ja 3kk eteenpäin. Poimintasääntö rajaa siirrettäviksi tapahtumiksi ne, jotka alkavat enintään 2kk sitten.
Esimerkit ovat tehty siirrettäväksi Personec W poissaolot muodossa. Aineistoon tulee muodostaa poissaolon syy (salary code) vastaamaan Sympaan määriteltyjä koodeja. Siirtoaineiston kuvauksen löydät täältä.
Sympan määrittely tehdään tämän kuvauksen mukaisesti.
Poimintasäännöt tehdään tämän kuvauksen mukaisesti
Poimitaan poissaolo - tapahtumatyypin poissaolot
Poimitaan poissaolo-tapahtumatyypin poissaolot. Tulokseen muodostuu kokopäiväiset poissaolotunnit sekä osapäiväiset poissaolotunnit. Rivillä on ID, joka päivittää tiedon Sympaan mikäli se on jo siirretty aiemmilla ajoilla.
SELECT *, SUM( CASE WHEN SalaryRenderingDate NOT IN( SELECT SalaryRenderingDate FROM UserSalaryData WHERE ActivityTypeCode IN ('1') --Work event type AND CompensationType IN ( 'BasicTime', 'ReducedRateTime', 'UnpaidBasicTime', 'AdditionalWork', 'OvertimeDaily50', 'OvertimeDaily100', 'OvertimeWeekly50', 'OvertimeWeekly100', 'OvertimeSunday50', 'OvertimeSunday100', 'PublicHoliday', 'YearLeave' ) ) THEN Amount ELSE 0 END ) / 3600 AS OverrideAmount, --this gives the amount of absence hours when considering full day absences
REPLACE( --we replace dot with comma to have same numeric format as amount column
ROUND( -- we do the rounding to have 2 digits shown in the export file
SUM( CASE WHEN SalaryRenderingDate IN( SELECT SalaryRenderingDate FROM UserSalaryData WHERE ActivityTypeCode IN ('1') --Work event type AND CompensationType IN ( 'BasicTime', 'ReducedRateTime', 'UnpaidBasicTime', 'AdditionalWork', 'OvertimeDaily50', 'OvertimeDaily100', 'OvertimeWeekly50', 'OvertimeWeekly100', 'OvertimeSunday50', 'OvertimeSunday100', 'PublicHoliday', 'YearLeave' ) ) THEN Amount ELSE 0 END ) / 3600, 2), '.',',') AS CustomData3, --CustomData3 gives the amount of absence hours when considering part day absences MIN(ActivityId) As CustomData1, -- this is added to create a key that is used to match updates on Sympa side IsApproved As CustomData2, 'Uusi' AS OverrideUserCostGroup, MIN(SalaryRenderingDate) As OverrideStartDatetime, MAX(SalaryRenderingDate) AS OverrideEndDatetime, CASE WHEN AbsenceTypeId = 5 AND CompensationType = 'BasicTime' THEN 'PALKALLINEN_HOITOVAPAA' -- Palkallinen hoitovapaa WHEN AbsenceTypeId = 5 AND CompensationType = 'UnpaidBasicTime' THEN 'PALKATON_HOITOVAPAA' -- Palkaton hoitovapaa WHEN AbsenceTypeId = 3 AND CompensationType = 'BasicTime' THEN 'PALKALLINEN_ISYYSVAPAA' -- Isyysvapaa WHEN AbsenceTypeId = 3 AND CompensationType = 'UnpaidBasicTime' THEN 'PALKATON_ISYYSVAPAA' -- Isyysvapaa WHEN AbsenceTypeId = 2 THEN 'AITIYSVAPAA' -- Äitiysvapaa WHEN AbsenceTypeId = 10 THEN 'ASEVELVOLLISUUS' -- Ase tai siviilipalvelusaika WHEN AbsenceTypeId = 11 THEN '104' -- Kertausharjoitukset WHEN AbsenceTypeId = 8 AND CompensationType = 'BasicTime' THEN 'PALKALLINEN_OPINTOVAPAA' -- Palkallinen Opintovapaa WHEN AbsenceTypeId = 8 AND CompensationType = 'UnpaidBasicTime' THEN 'PALKATON_OPINTOVAPAA' -- Palkaton Opintovapaa WHEN AbsenceTypeId = 27 AND CompensationType = 'UnpaidBasicTime' THEN 'PALKATON_KUNTOUTUS' -- Palkaton Kuntoutus WHEN AbsenceTypeId = 4 AND CompensationType = 'UnpaidBasicTime' THEN 'PALKATON_VANHEMPAINVAPAA' -- Vanhempainvapaa WHEN AbsenceTypeId = 9 THEN 'VUOROTTELUVAPAA' -- Vuorotteluvapaa WHEN AbsenceTypeId = 13 AND CompensationType = 'UnpaidBasicTime' THEN 'PALKATON_MUUPOISSAOLO' -- Muu poissaolo palkaton WHEN AbsenceTypeId = 13 AND CompensationType = 'BasicTime' THEN 'PALKALLINEN_MUUPOISSAOLO' -- Muu poissaolo palkallinen WHEN AbsenceTypeId = 17 AND CompensationType = 'BasicTime' THEN 'PALKALLINEN_50TAI60MERKKIPAIVA' -- Omat 50- tai 60-vuotisjuhlat palkallinen WHEN AbsenceTypeId = 17 AND CompensationType = 'UnpaidBasicTime' THEN 'PALKATON_50TAI60MERKKIPAIVA' -- Omat 50- tai 60-vuotisjuhlat palkaton WHEN AbsenceTypeId = 22 AND CompensationType = 'UnpaidBasicTime' THEN 'PALKATON_OSAAIKAELAKE' -- Osa-aikaeläke palkaton WHEN AbsenceTypeId = 22 AND CompensationType = 'BasicTime' THEN 'PALKALLINEN_OSAAIKAELAKE' -- Osa-aikaeläke palkallinen WHEN AbsenceTypeId = 12 AND CompensationType = 'BasicTime' THEN 'PALKALLINEN_TYONTEKIJANOMAPYYNTO' -- Palkaton työntekijän oma pyyntö WHEN AbsenceTypeId = 12 AND CompensationType = 'UnpaidBasicTime' THEN 'PALKATON_TYONTEKIJANOMAPYYNTO' -- Palkallinen työntekijän oma pyyntö WHEN AbsenceTypeId = 15 AND CompensationType = 'BasicTime' THEN 'PALKALLINEN_LAHIOMAISENHAUTAJAISET' -- Palkallinen perheenjäsenen tai lähiomaisen hautajaiset WHEN AbsenceTypeId = 15 AND CompensationType = 'UnpaidBasicTime' THEN 'PALKATON_LAHIOMAISENHAUTAJAISET' -- Palkaton perheenjäsenen tai lähiomaisen hautajaiset WHEN AbsenceTypeId = 7 AND CompensationType = 'BasicTime' THEN 'PALKALLINEN_PAKOTTAVAPERHESYY' -- Poissaolo pakottavien perhesyiden takia WHEN AbsenceTypeId = 7 AND CompensationType = 'UnpaidBasicTime' THEN 'PALKATON_PAKOTTAVAPERHESYY' -- Poissaolo pakottavien perhesyiden takia WHEN AbsenceTypeId = 25 AND CompensationType = 'BasicTime' THEN 'PALKALLINEN_AMMATTIYHDISTYSTOIMINTA' -- Palkallinen ammattiyhdistystoiminta WHEN AbsenceTypeId = 25 AND CompensationType = 'UnpaidBasicTime' THEN 'PALKATON_AMMATTIYHDISTYSTOIMINTA' -- Palkaton ammattiyhdistystoiminta WHEN AbsenceTypeId = 18 AND CompensationType = 'BasicTime' THEN 'PALKALLINEN_KUTSUNTATILAISUUS' -- Palkallinen kutsuntatilaisuus WHEN AbsenceTypeId = 18 AND CompensationType = 'UnpaidBasicTime' THEN 'PALKATON_KUTSUNTATILAISUUS' -- Palkaton kutsuntatilaisuus WHEN AbsenceTypeId = 16 AND CompensationType = 'BasicTime' THEN 'PALKALLINEN_PARISUHTEENREKISTEROINTI' -- Palkallinen Omat vihkiäiset / Parisuhteen rekisteröinti WHEN AbsenceTypeId = 16 AND CompensationType = 'UnpaidBasicTime' THEN 'PALKATON_PARISUHTEENREKISTEROINTI' -- Palkaton Omat vihkiäiset / Parisuhteen rekisteröinti ELSE 'NOT DEFINED' END AS OverrideSalaryCode FROM UserSalaryData WHERE AbsenceTypeId IS NOT NULL AND CompensationType IN ('BasicTime', 'UnpaidBasicTime', 'ReducedRateTime') AND EventStartDateTime > date(SalaryRenderingDate , '-2 months') -- we pick events that are starting less than 60 days ago. This is done as the amount of hours are fetched from the range and if older events are picked then the amount of hours would start to decrease as the 'window' moves over it. GROUP BY ActivityId
Poimitaan sairauspoissaolot
Poimitaan sairauspoissaolot. Tulokseen muodostuu kokopäiväiset poissaolotunnit sekä osapäiväiset poissaolotunnit. Rivillä on ID, joka päivittää tiedon Sympaan mikäli se on jo siirretty aiemmilla ajoilla.
SELECT *, SUM( CASE WHEN SalaryRenderingDate NOT IN( SELECT SalaryRenderingDate FROM UserSalaryData WHERE ActivityTypeCode IN ('1') --Work event type AND CompensationType IN ( 'BasicTime', 'ReducedRateTime', 'UnpaidBasicTime', 'AdditionalWork', 'OvertimeDaily50', 'OvertimeDaily100', 'OvertimeWeekly50', 'OvertimeWeekly100', 'OvertimeSunday50', 'OvertimeSunday100', 'PublicHoliday', 'YearLeave' ) ) THEN Amount ELSE 0 END ) / 3600 AS OverrideAmount, --this gives the amount of absence hours when considering full day absences
REPLACE( --we replace dot with comma to have same numeric format as amount column
ROUND( -- we do the rounding to have 2 digits shown in the export file
SUM( CASE WHEN SalaryRenderingDate IN( SELECT SalaryRenderingDate FROM UserSalaryData WHERE ActivityTypeCode IN ('1') --Work event type AND CompensationType IN ( 'BasicTime', 'ReducedRateTime', 'UnpaidBasicTime', 'AdditionalWork', 'OvertimeDaily50', 'OvertimeDaily100', 'OvertimeWeekly50', 'OvertimeWeekly100', 'OvertimeSunday50', 'OvertimeSunday100', 'PublicHoliday', 'YearLeave' ) ) THEN Amount ELSE 0 END ) / 3600, 2), '.',',') AS CustomData3, --CustomData3 gives the amount of absence hours when considering part day absences
MIN(ActivityId) As CustomData1, -- this is added to create a key that is used to match updates on Sympa side IsApproved As CustomData2, 'Uusi' AS OverrideUserCostGroup, MIN(SalaryRenderingDate) As OverrideStartDatetime, MAX(SalaryRenderingDate) AS OverrideEndDatetime, CASE WHEN SickLeaveTypeId = 1 AND CompensationType = 'BasicTime' AND SickLeaveMedicalCertificateId = 2 THEN 'PALKALLINEN_ITSESAIRAS_TODISTUKSELLA' -- itse sairas todistuksella WHEN SickLeaveTypeId = 1 AND CompensationType = 'BasicTime' AND SickLeaveMedicalCertificateId <> 2 THEN 'PALKALLINEN_ITSESAIRAS' -- itse sairas WHEN SickLeaveTypeId = 2 AND CompensationType = 'BasicTime' AND SickLeaveMedicalCertificateId = 2 THEN 'PALKALLINEN_LAPSISAIRAS_TODISTUKSELLA' -- lapsi sairas todistuksella WHEN SickLeaveTypeId = 2 AND CompensationType = 'BasicTime' AND SickLeaveMedicalCertificateId <> 2 THEN 'PALKALLINEN_LAPSISAIRAS_ILMANTODISTUSTA' -- lapsi sairas WHEN SickLeaveTypeId = 3 AND CompensationType = 'BasicTime' THEN 'PALKALLINEN_TYOTAPATURMA_TOISSA' -- työtapaturma työpaikalla WHEN SickLeaveTypeId = 4 AND CompensationType = 'BasicTime' THEN 'PALKALLINEN_TYOTAPATURMA_TYOMATKALLA' -- työtapaturma työmatkalla WHEN SickLeaveTypeId = 5 AND CompensationType = 'BasicTime' THEN 'PALKALLINEN_TYOTAPATURMA_VAPAALLA' --työtapaturma vapaa-ajalla WHEN SickLeaveTypeId = 1 AND CompensationType = 'UnpaidBasicTime' AND SickLeaveMedicalCertificateId = 2 THEN 'PALKATON_ITSESAIRAS_TODISTUKSELLA' -- palkaton itse sairas todistuksella WHEN SickLeaveTypeId = 1 AND CompensationType = 'UnpaidBasicTime' AND SickLeaveMedicalCertificateId <> 2 THEN 'PALKATON_ITSESAIRAS' -- palkaton itse sairas WHEN SickLeaveTypeId = 2 AND CompensationType = 'UnpaidBasicTime' AND SickLeaveMedicalCertificateId = 2 THEN 'PALKATON_LAPSISAIRAS_TODISTUKSELLA' -- palkaton lapsi sairas todistuksella WHEN SickLeaveTypeId = 2 AND CompensationType = 'UnpaidBasicTime' AND SickLeaveMedicalCertificateId <> 2 THEN 'PALKATON_LAPSISAIRAS_ILMANTODISTUSTA' -- palkaton lapsi sairas WHEN SickLeaveTypeId = 3 AND CompensationType = 'UnpaidBasicTime' THEN 'PALKATON_TYOTAPATURMA_TOISSA' -- palkaton työtapaturma työpaikalla WHEN SickLeaveTypeId = 4 AND CompensationType = 'UnpaidBasicTime' THEN 'PALKATON_TYOTAPATURMA_TYOMATKALLA' -- palkaton työtapaturma työmatkalla WHEN SickLeaveTypeId = 5 AND CompensationType = 'UnpaidBasicTime' THEN 'PALKATON_TYOTAPATURMA_VAPAALLA' --palkaton työtapaturma vapaa-ajalla ELSE 'NOT DEFINED' END AS OverrideSalaryCode FROM UserSalaryData WHERE ActivityTypeCode = '2' --Sairausloma AND CompensationType IN ('BasicTime', 'UnpaidBasicTime', 'RedudedRateTime') -- this row exists to prevent lunch or other events from getting included AND EventStartDateTime > date( SalaryRenderingDate, '-2 months' ) -- we pick events that are starting less than 60 days ago. This is done as the amount of hours are fetched from the range and if older events are picked then the amount of hours would start to decrease as the 'window' moves over it. GROUP BY ActivityId
Poimitaan muut poissaolona käsiteltävät tapahtumatyypit
Poimitaan poissaoloina käsiteltävät tapahtumatyypit. Tulokseen muodostuu kokopäiväiset poissaolotunnit sekä osapäiväiset poissaolotunnit. Rivillä on ID, joka päivittää tiedon Sympaan mikäli se on jo siirretty aiemmilla ajoilla.
SELECT *, SUM( CASE WHEN SalaryRenderingDate NOT IN( SELECT SalaryRenderingDate FROM UserSalaryData WHERE ActivityTypeCode IN ('1') --Work event type AND CompensationType IN ( 'BasicTime', 'ReducedRateTime', 'UnpaidBasicTime', 'AdditionalWork', 'OvertimeDaily50', 'OvertimeDaily100', 'OvertimeWeekly50', 'OvertimeWeekly100', 'OvertimeSunday50', 'OvertimeSunday100', 'PublicHoliday', 'YearLeave' ) ) THEN Amount ELSE 0 END ) / 3600 AS OverrideAmount, --this gives the amount of absence hours when considering full day absences
REPLACE( --we replace dot with comma to have same numeric format as amount column
ROUND( -- we do the rounding to have 2 digits shown in the export file
SUM( CASE WHEN SalaryRenderingDate IN( SELECT SalaryRenderingDate FROM UserSalaryData WHERE ActivityTypeCode IN ('1') --Work event type AND CompensationType IN ( 'BasicTime', 'ReducedRateTime', 'UnpaidBasicTime', 'AdditionalWork', 'OvertimeDaily50', 'OvertimeDaily100', 'OvertimeWeekly50', 'OvertimeWeekly100', 'OvertimeSunday50', 'OvertimeSunday100', 'PublicHoliday', 'YearLeave' ) ) THEN Amount ELSE 0 END ) / 3600, 2), '.',',') AS CustomData3, --CustomData3 gives the amount of absence hours when considering part day absences MIN(ActivityId) As CustomData1, -- this is added to create a key that is used to match updates on Sympa side IsApproved As CustomData2, 'Uusi' AS OverrideUserCostGroup, MIN(SalaryRenderingDate) As OverrideStartDatetime, MAX(SalaryRenderingDate) AS OverrideEndDatetime, CASE WHEN ActivityTypeCode = '16' THEN 'SALDOVAPAA' -- Saldovapaa WHEN ActivityTypeCode = '278' THEN 'YLITYOVAPAA' -- Ylityövapaa WHEN ActivityTypeCode = '25' THEN 'PALKALLINEN_KOULUTUS' -- Koulutus WHEN ActivityTypeCode = '23' THEN 'LOMAUTUS' -- Lomautus WHEN ActivityTypeCode = '102' THEN 'PANKKIVAPAA' -- Pankkivapaa ELSE 'NOT DEFINED' END AS OverrideSalaryCode FROM UserSalaryData WHERE ActivityTypeCode IN ('16','278','25','23','102') AND CompensationType NOT IN ('MarkedTime') AND EventStartDateTime > date(SalaryRenderingDate , '-2 months') -- we pick events that are starting less than 60 days ago. This is done as the amount of hours are fetched from the range and if older events are picked then the amount of hours would start to decrease as the 'window' moves over it. GROUP BY ActivityId
Poimitaan poistetut poissaolot
Poimitaan poistetut poissaolot. Rivillä on ID, joka päivittää tiedon Sympaan mikäli se on jo siirretty aiemmilla ajoilla.
SELECT * , 0 AS OverrideAmount, MIN(ActivityId) As CustomData1, -- this is to match previously added event on Sympa side 0 AS CustomData3, IsApproved As CustomData2, 'Poisto' AS OverrideUserCostGroup, CASE WHEN ActivityTypeCode = '16' THEN 'SALDOVAPAA' -- Saldovapaa WHEN ActivityTypeCode = '278' THEN 'YLITYOVAPAA' -- Ylityövapaa WHEN ActivityTypeCode = '25' THEN 'PALKALLINEN_KOULUTUS' -- Koulutus WHEN ActivityTypeCode = '23' THEN 'LOMAUTUS' -- Lomautus WHEN ActivityTypeCode = '102' THEN 'PANKKIVAPAA' -- Pankkivapaa WHEN AbsenceTypeId = 5 AND AbsenceCompensationTypeId = 1 THEN 'PALKALLINEN_HOITOVAPAA' -- Palkallinen hoitovapaa WHEN AbsenceTypeId = 5 AND AbsenceCompensationTypeId = 2 THEN 'PALKATON_HOITOVAPAA' -- Palkaton hoitovapaa WHEN AbsenceTypeId = 3 AND AbsenceCompensationTypeId = 1 THEN 'PALKALLINEN_ISYYSVAPAA' -- Isyysvapaa WHEN AbsenceTypeId = 3 AND AbsenceCompensationTypeId = 2 THEN 'PALKATON_ISYYSVAPAA' -- Isyysvapaa WHEN AbsenceTypeId = 2 THEN 'AITIYSVAPAA' -- Äitiysvapaa WHEN AbsenceTypeId = 10 THEN 'ASEVELVOLLISUUS' -- Ase tai siviilipalvelusaika WHEN AbsenceTypeId = 11 THEN '104' -- Kertausharjoitukset WHEN AbsenceTypeId = 8 AND AbsenceCompensationTypeId = 1 THEN 'PALKALLINEN_OPINTOVAPAA' -- Palkallinen Opintovapaa WHEN AbsenceTypeId = 8 AND AbsenceCompensationTypeId = 2 THEN 'PALKATON_OPINTOVAPAA' -- Palkaton Opintovapaa WHEN AbsenceTypeId = 27 AND AbsenceCompensationTypeId = 2 THEN 'PALKATON_KUNTOUTUS' -- Palkaton Kuntoutus WHEN AbsenceTypeId = 4 AND AbsenceCompensationTypeId = 2 THEN 'PALKATON_VANHEMPAINVAPAA' -- Vanhempainvapaa WHEN AbsenceTypeId = 9 THEN 'VUOROTTELUVAPAA' -- Vuorotteluvapaa WHEN AbsenceTypeId = 13 AND AbsenceCompensationTypeId = 2 THEN 'PALKATON_MUUPOISSAOLO' -- Muu poissaolo palkaton WHEN AbsenceTypeId = 13 AND AbsenceCompensationTypeId = 1 THEN 'PALKALLINEN_MUUPOISSAOLO' -- Muu poissaolo palkallinen WHEN AbsenceTypeId = 17 AND AbsenceCompensationTypeId = 1 THEN 'PALKALLINEN_50TAI60MERKKIPAIVA' -- Omat 50- tai 60-vuotisjuhlat palkallinen WHEN AbsenceTypeId = 17 AND AbsenceCompensationTypeId = 2 THEN 'PALKATON_50TAI60MERKKIPAIVA' -- Omat 50- tai 60-vuotisjuhlat palkaton WHEN AbsenceTypeId = 22 AND AbsenceCompensationTypeId = 2 THEN 'PALKATON_OSAAIKAELAKE' -- Osa-aikaeläke palkaton WHEN AbsenceTypeId = 22 AND AbsenceCompensationTypeId = 1 THEN 'PALKALLINEN_OSAAIKAELAKE' -- Osa-aikaeläke palkallinen WHEN AbsenceTypeId = 12 AND AbsenceCompensationTypeId = 1 THEN 'PALKALLINEN_TYONTEKIJANOMAPYYNTO' -- Palkaton työntekijän oma pyyntö WHEN AbsenceTypeId = 12 AND AbsenceCompensationTypeId = 2 THEN 'PALKATON_TYONTEKIJANOMAPYYNTO' -- Palkallinen työntekijän oma pyyntö WHEN AbsenceTypeId = 15 AND AbsenceCompensationTypeId = 1 THEN 'PALKALLINEN_LAHIOMAISENHAUTAJAISET' -- Palkallinen perheenjäsenen tai lähiomaisen hautajaiset WHEN AbsenceTypeId = 15 AND AbsenceCompensationTypeId = 2 THEN 'PALKATON_LAHIOMAISENHAUTAJAISET' -- Palkaton perheenjäsenen tai lähiomaisen hautajaiset WHEN AbsenceTypeId = 7 AND AbsenceCompensationTypeId = 1 THEN 'PALKALLINEN_PAKOTTAVAPERHESYY' -- Poissaolo pakottavien perhesyiden takia WHEN AbsenceTypeId = 7 AND AbsenceCompensationTypeId = 2 THEN 'PALKATON_PAKOTTAVAPERHESYY' -- Poissaolo pakottavien perhesyiden takia WHEN AbsenceTypeId = 25 AND AbsenceCompensationTypeId = 1 THEN 'PALKALLINEN_AMMATTIYHDISTYSTOIMINTA' -- Palkallinen ammattiyhdistystoiminta WHEN AbsenceTypeId = 25 AND AbsenceCompensationTypeId = 2 THEN 'PALKATON_AMMATTIYHDISTYSTOIMINTA' -- Palkaton ammattiyhdistystoiminta WHEN AbsenceTypeId = 18 AND AbsenceCompensationTypeId = 1 THEN 'PALKALLINEN_KUTSUNTATILAISUUS' -- Palkallinen kutsuntatilaisuus WHEN AbsenceTypeId = 18 AND AbsenceCompensationTypeId = 2 THEN 'PALKATON_KUTSUNTATILAISUUS' -- Palkaton kutsuntatilaisuus WHEN AbsenceTypeId = 16 AND AbsenceCompensationTypeId = 1 THEN 'PALKALLINEN_PARISUHTEENREKISTEROINTI' -- Palkallinen Omat vihkiäiset / Parisuhteen rekisteröinti WHEN AbsenceTypeId = 16 AND AbsenceCompensationTypeId = 2 THEN 'PALKATON_PARISUHTEENREKISTEROINTI' -- Palkaton Omat vihkiäiset / Parisuhteen rekisteröinti WHEN SickLeaveTypeId = 1 AND SickLeaveCompensationTypeId = 1 AND SickLeaveMedicalCertificateId = 2 THEN 'PALKALLINEN_ITSESAIRAS_TODISTUKSELLA' -- itse sairas todistuksella WHEN SickLeaveTypeId = 1 AND SickLeaveCompensationTypeId = 1 AND SickLeaveMedicalCertificateId <> 2 THEN 'PALKALLINEN_ITSESAIRAS' -- itse sairas WHEN SickLeaveTypeId = 2 AND SickLeaveCompensationTypeId = 1 AND SickLeaveMedicalCertificateId = 2 THEN 'PALKALLINEN_LAPSISAIRAS_TODISTUKSELLA' -- lapsi sairas todistuksella WHEN SickLeaveTypeId = 2 AND SickLeaveCompensationTypeId = 1 AND SickLeaveMedicalCertificateId <> 2 THEN 'PALKALLINEN_LAPSISAIRAS_ILMANTODISTUSTA' -- lapsi sairas WHEN SickLeaveTypeId = 3 AND SickLeaveCompensationTypeId = 1 THEN 'PALKALLINEN_TYOTAPATURMA_TOISSA' -- työtapaturma työpaikalla WHEN SickLeaveTypeId = 4 AND SickLeaveCompensationTypeId = 1 THEN 'PALKALLINEN_TYOTAPATURMA_TYOMATKALLA' -- työtapaturma työmatkalla WHEN SickLeaveTypeId = 5 AND SickLeaveCompensationTypeId = 1 THEN 'PALKALLINEN_TYOTAPATURMA_VAPAALLA' --työtapaturma vapaa-ajalla WHEN SickLeaveTypeId = 1 AND SickLeaveCompensationTypeId = 2 AND SickLeaveMedicalCertificateId = 2 THEN 'PALKATON_ITSESAIRAS_TODISTUKSELLA' -- palkaton itse sairas todistuksella WHEN SickLeaveTypeId = 1 AND SickLeaveCompensationTypeId = 2 AND SickLeaveMedicalCertificateId <> 2 THEN 'PALKATON_ITSESAIRAS' -- palkaton itse sairas WHEN SickLeaveTypeId = 2 AND SickLeaveCompensationTypeId = 2 AND SickLeaveMedicalCertificateId = 2 THEN 'PALKATON_LAPSISAIRAS_TODISTUKSELLA' -- palkaton lapsi sairas todistuksella WHEN SickLeaveTypeId = 2 AND SickLeaveCompensationTypeId = 2 AND SickLeaveMedicalCertificateId <> 2 THEN 'PALKATON_LAPSISAIRAS_ILMANTODISTUSTA' -- palkaton lapsi sairas WHEN SickLeaveTypeId = 3 AND SickLeaveCompensationTypeId = 2 THEN 'PALKATON_TYOTAPATURMA_TOISSA' -- palkaton työtapaturma työpaikalla WHEN SickLeaveTypeId = 4 AND SickLeaveCompensationTypeId = 2 THEN 'PALKATON_TYOTAPATURMA_TYOMATKALLA' -- palkaton työtapaturma työmatkalla WHEN SickLeaveTypeId = 5 AND SickLeaveCompensationTypeId = 2 THEN 'PALKATON_TYOTAPATURMA_VAPAALLA' --palkaton työtapaturma vapaa-ajalla ELSE 'NOT DEFINED' END AS OverrideSalaryCode FROM UserEventHistoryData WHERE ModifiedDateTime BETWEEN :exportPeriodStart AND :exportPeriodEnd AND IsActive = 'N' AND OriginalActivityId IS NULL AND -- pick only those deleted events that are treated as absence type ( AbsenceTypeId IS NOT NULL OR ActivityTypeCode IN ('4','2','16', '278', '25', '23', '102') )