Varallaolo vähennettynä varallaoloaikana tehdyllä työllä
SELECT OnCall.*, OnCall.SumAmount, - IFNULL(OnCallWork.SumAmount, 0) AS OverrideAmount,
substring_part(Oncall.ActivityTypeCode, '/', 2) AS OverrideSalaryCode
FROM (SELECT *, SUM(Amount) SumAmount
FROM UserSalaryData
WHERE CompensationType = 'MarkedTime'AND BasePartTarget IS NULL AND ActivityTypeCode = '33'GROUP BY SalaryRenderingDate)
OnCall
LEFT JOIN (SELECT *, SUM(Amount) SumAmount
FROM UserSalaryData
WHERE ActivityTypeCode IN ('1') -- jatka tähän listaan ne kaikki tapahtumat joiden päällekkäisyys vähennetään varallaolona poimittavasta arvosta
AND
(OverlapsUnderlyingActivityTypeIds LIKE '%,33,%' OR OverlapsUnderlyingActivityTypeIds LIKE '%,VARA%,%')
AND CompensationType IN ('BasicTime', 'AdditionalWork', 'OvertimeDaily50',
'OvertimeDaily100','OvertimeWeekly50', 'OvertimeWeekly100', 'OvertimeSunday50',
'OvertimeSunday100')
GROUPBY SalaryRenderingDate)
OnCallWork
ON (OnCallWork.SalaryRenderingDate = OnCall.SalaryRenderingDate)
GROUPBY OverrideSalaryCode, Oncall.SalaryRenderingDate, Oncall.ProjectCode1, Oncall.ProjectCode2, Oncall.ProjectCode3,
Oncall.ProjectCode4, Oncall.ProjectCode5, Oncall.ProjectCode6, Oncall.Comment
Yllä olevaa mallia suositeltiin aiemmin käytettäväksi varallaoloaikojen laskemiseen palkkaliittymissä. Mallissa vähennetään varallaoloaika-tapahtuman kestosta tietyt tapahtumat, jotka on kirjattu sen päälle.
Tällainen laskenta lisättiin myöhemmin osaksi järjestelmää (tarkemmat tiedot täällä).
Mallin mukainen kysely toimii edelleen mutta mikäli haluat käyttää järjestelmän sisäistä laskentaa ja asettaa sen arvot esille kalenterinäkymään on vahvasti suositeltavaa, että palkkaliittymiin välitetään sama arvo sen sijaan että se lasketaan erikseen sääntöjoukossa. UserSalaryData taulu sisältää nyt erilliset rivit varallaoloajalle kts. päivitetty esimerkki täältä
Kommentit
0 kommenttia
Kirjaudu sisään jättääksesi kommentin.