Valmiit ilmoitukset ovat käytettävissä Työaika Pro -palvelutasolla sekä tätä ylemmillä työajan palvelutasoilla. Muokattavat ilmoitukset ovat käytettävissä Työaika Complete -palvelutasolla.
Tämä artikkeli koskee muokattavia ilmoituksia. Lisätietoja ilmoitukset-näkymästä ja ilmoituksien luomisesta löytyy artikkelista Ilmoituksen luominen.
Mitä ovat muokattavat ilmoitukset?
- Haettavat tiedot ilmoituksen kohteista (esim. henkilöt, tapahtumat, saldot).
- Määritellä ehdot, joiden täyttyessä ilmoitus lähetetään.
- Rajata tietoja henkilöstöryhmän, maksuryhmän tai muiden kriteerien perusteella.
Muokattavan ilmoituksen määrittely
Muokattava ilmoitus määritellään lisäasetukset-välilehdellä, jossa hallitaan ilmoituksen poimintasääntöjä. Poimintasäännöt määrittävät, millä perusteella ilmoitukseen sisältyvät tiedot valitaan. Näkymässä voidaan muokata SQL-pohjaista sääntöä, joka hakee tarvittavat tapahtumat, henkilöt ja ryhmät järjestelmän tietokantatauluista.
Lisäasetukset-näkymä:
- Poimintasääntö: Näyttää SQL-kyselyn, joka määrittää ilmoituksen sisällön. Kyselyssä voidaan käyttää valmiita muuttujia ja lisätä asiakaskohtaisia sääntöjä.
-
Painikkeet
- Katso säännön tulokset: Aukaisee uuden ikkunan, jossa voi testata säännön toimintaa.
- Tallenna: Tallentaa tehdyt muutokset poimintasääntöön.
- Peruuta: Sulkee näkymän tallentamatta muutoksia.
- Poista: Poistaa ilmoituksen kokonaan.
Poimintasäännön rakenne
Tyypillinen poimintasääntö sisältää seuraavat osat:
- SELECT - Määrittää, mitä tietoja ilmoitukseen sisällytetään (esim. käyttäjän tunniste, nimi, tapahtumien määrä). Jokaiselle kannattaa antaa alias (AS), jotta tieto voidaan käyttää ilmoituksen sähköpostiviestissä.
-
FROM ja JOIN - Yhdistää tarvittavat taulut, kuten tapahtumat (
UserEventData) ja käyttäjät (UserData). Lisätietoja voidaan hakea muista tauluista, kutenUserInfoData. - WHERE - Rajaa mukaan vain tietyt tiedot (esim. hyväksymättömät tapahtumat, tietyt ryhmät).
- GROUP BY - Ryhmittelee tiedot henkilöittäin tai muulla logiikalla.
- HAVING - Määrittää ehdon ryhmitellyille tiedoille (esim. tapahtumien määrä > 0).
Yleisimmät taulut ja kentät
Tässä perustietoa yleisimmistä tiedoista, joita tarvitaan ilmoitusten sääntöjoukkojen rakentamiseen. Kaikki tietokantataulujen sisällöt on kerrottu artikkelissa Tietokantataulujen sisältö.
UserEventData
-
ActivityId– tapahtuman tunniste -
StartDatetime– tapahtuman aloitusaika -
isApproved– hyväksyntästatus (N = ei hyväksytty)
UserData
-
UserId– henkilön tunniste -
firstName,lastName– nimi -
UserGroupCode– henkilöryhmä
UserSalaryData
-
Amount– arvo sekunteina CompensationType– kertoo rivin tyypin (esim.Accrual= kertymä)AccrualType– kertoo kertymän kohteen (esim.Balance= työaikasaldo)-
SalaryRenderingDate– päivämäärä, johon tapahtuma tai kertymä liittyy
Henkilöryhmä- ja maksuryhmäsuodatus
Henkilöryhmäsuodatus
WHERE
ued.isApproved = 'N' -- hyväksymättömät tapahtumat, korvaa omalla rajausehdollasi
AND ud.UserGroupCode IN (
[notificationPersonFilter | {select_user_groups} | persongroupselect | ]
) -- henkilöryhmäsuodatusMaksuryhmäsuodatus
WHERE
ued.isApproved = 'N' -- hyväksymättömät tapahtumat, korvaa omalla rajausehdollasi
AND uid.InfoTypeName = 'NeptonPaymentGroupCode_SDSQL'
AND uid.Value IN (
[notificationPersonFilter | {Valitse maksuryhmät} | paymentgroupselect | ]
) -- maksuryhmäsuodatusValmiiden ilmoitusten muokkaaminen
Valmiiden ilmoitusten poimintasääntöjen yläosassa on kohta, mihin asiakaskohtaiset muokkaukset tulee lisätä. Mikäli näin ei tee, asiakaskohtaiset muokkaukset katoavat, mikäli Nepton päivittää ilmoituksen toimintaa kaikille asiakkaille.
Jos on tarpeen muokata valmiita ilmoituksia laajemmin, tulee luoda muokattava ilmoitus ja kopioida valmiin ilmoituksen sääntö sen pohjaksi.
/* --- Add customer-specific notification rules BELOW this line --- */
/* --- Add customer-specific notification rules ABOVE this line --- */Esimerkkejä poimintasäännöistä
Muokattava ilmoitus: Saldoa yli 40 tuntia
AccrualType = Balance) suoraan ajojakson viimeiseltä päivältä, jolloin ilmoitus näyttää ajantasaisen saldon tilanteen.- Poimintasääntö summaa saldon (Amount) sekunteina ja muuntaa sen tunneiksi.
- Viimeisellä rivillä asetetaan saldoilmoituksen raja-arvo (40 tuntia = 14400 sekuntia)
SELECT
usd.UserId AS 'affectedUserId',
-- Ilmoituksen kohteena olevan henkilön tunniste
CONCAT(ud.firstName, " ", ud.lastName) AS 'PersonName',
-- Henkilön nimi ilmoitusta varten
ROUND(
SUM(usd.Amount) / 3600.0,
2
) AS 'BalanceHours' -- Lasketaan saldo tunneissa. Amount on sekunteina, joten jaetaan 3600:lla ja pyöristetään kahteen desimaaliin.
FROM
UserSalaryData usd -- Taulu, jossa on tulkitut tapahtumat ja saldotiedot.
INNER JOIN UserData ud ON ud.UserId = usd.UserId -- Liitetään henkilön perustiedot (nimi, ryhmän koodi)
WHERE
usd.CompensationType = 'Accrual' -- Rajataan kertymäriveihin
AND usd.AccrualType = 'Balance' -- Valitaan nimenomaan saldokertymä
AND usd.SalaryRenderingDate = DATE(:ExportPeriodEnd) -- Poimitaan ajojakson viimeisen päivän arvo (snapshot)
AND ud.UserGroupCode IN (
[notificationPersonFilter | {select_user_groups} | persongroupselect | ]
) -- Aktivoidaan ilmoitukseen henkilöryhmäsuodatus, ilmoitus koskee vain valittuja henkilöryhmiä.
GROUP BY
usd.UserId -- Yksi rivi per henkilö
HAVING
SUM(usd.Amount) > 144000 -- Lähetetään ilmoitus, jos saldo ylittää 40 tuntia (144000 sekuntia)Valmis ilmoitus: Hyväksymättömät tapahtumat henkilöryhmittäin
/* --- Update this rule with the latest from the notification integration (unapproved events) template:[Yes] --- */
SELECT
ued.userId as 'affectedUserId',
CONCAT(ud.firstName, " ", ud.lastName) AS 'PersonName',
COUNT(ued.ActivityId) AS 'UnapprovedCount'
/* --- Add customer-specific notification rules BELOW this line --- */
/* --- Add customer-specific notification rules ABOVE this line --- */
FROM
UserEventData ued
INNER JOIN UserData ud ON ued.UserId = ud.UserId
WHERE
ued.isApproved = 'N'
AND ud.UserGroupCode IN (
[notificationPersonFilter | {select_user_groups} | persongroupselect | ]
)
GROUP BY
affectedUserId
HAVING
UnapprovedCount > 0Valmis ilmoitus: Hyväksymättömät tapahtumat maksuryhmittäin
/* --- Update this rule with the latest from the notification integration (unapproved events) template:[Yes] --- */
SELECT
ued.userId as 'affectedUserId',
CONCAT(ud.firstName, " ", ud.lastName) AS 'PersonName',
COUNT(ued.ActivityId) AS 'UnapprovedCount'
/* --- Add customer-specific notification rules BELOW this line --- */
/* --- Add customer-specific notification rules ABOVE this line --- */
FROM
UserEventData ued
INNER JOIN UserData ud ON ued.UserId = ud.UserId
LEFT JOIN UserInfoData uid ON ued.UserId = uid.UserId
AND datetime(ued.StartDatetime) BETWEEN uid.ValidFrom
AND uid.ValidTo
WHERE
ued.isApproved = 'N'
AND uid.InfoTypeName = 'NeptonPaymentGroupCode_SDSQL'
AND uid.Value IN (
[notificationPersonFilter | {select_groups_of_persons_to_check_for_unapproved_events} | paymentgroupselect | ]
)
GROUP BY
affectedUserId
HAVING
UnapprovedCount > 0Säännön tietojen käyttäminen ilmoituksen sähköpostiviestissä
Hei [PersonName], saldosi on [BalanceHours] tuntia.
Tiedot nimetään AS-aliaksella, kuten alla olevassa poimintasäännössä on tehty 'PersonName' sekä 'BalanceHours' kohdalla.
Tämän jälkeen poimintasäännössä määriteltyjä AS-aliaksia voidaan käyttää viestissä kirjoittamalla ne hakasulkujen väliin esim. [PersonName], jolloin viestin sisältö päivittyy automaattisesti viimeisimmillä tiedoilla.