SELECT
AF.RealBOCLSID CLSID,
AF.FIELDNAME FIELDNAME,
AF.REFERENCECLSID REFERENCECLSID,
AF.REFERENCEFIELDNAME REFERENCEFIELDNAME,
PF.PRPermit_ID PRPermit_ID
FROM
(
/* Zde zgrupujeme všechny existující položky ochrany dat, které jsou aktivní */
SELECT
A.RealBOCLSID RealBOCLSID,
A.FIELDNAME FIELDNAME,
MAX(A.REFERENCECLSID) REFERENCECLSID,
MAX(A.REFERENCEFIELDNAME) REFERENCEFIELDNAME
FROM DPPROTECTEDFIELDS A
JOIN DPDEFINITIONS DPD ON DPD.ID = A.PARENT_ID
WHERE
DPD.PROCESSSUBJECTRIGHTS = 'A' AND
DPD.DATAPROTECTIONDRIVER_ID = :DPDriver_ID
GROUP BY A.RealBOCLSID, A.FIELDNAME
) AF
LEFT JOIN
(
/* Zde zgrupujeme všechny položky ochrany dat, které jsou aktivní, existuje
na ne v daném aktuálním datu povolenka pro firmu nebo pro osobu. Povolenka
nesmí být vyloucena ze zpracování. Pokud je povolenek více, vezme se ID
povolenky, která má nejvyšší hodnotu Datum do. */
SELECT
A.RealBOCLSID RealBOCLSID,
A.FIELDNAME FIELDNAME,
MAX(A.REFERENCECLSID) REFERENCECLSID,
MAX(A.REFERENCEFIELDNAME) REFERENCEFIELDNAME,
MAX(PP.ID) PRPermit_ID
FROM DPPROTECTEDFIELDS A
JOIN DPDEFINITIONS DPD ON DPD.ID = A.PARENT_ID
JOIN (
SELECT
MAX(PP4.ID) ID,
PP4.DEFINITION_ID DEFINITION_ID
FROM
(SELECT
PP2.DEFINITION_ID DEFINITION_ID,
MAX(PP2.VALIDTODATE$DATE) VALIDTODATE$DATE
FROM GDPRPROCESSINGPERMITS PP2
WHERE
PP2.VALIDFROMDATE$DATE <= :DocDate AND ((PP2.VALIDFROMDATE$DATE = 0) OR (PP2.VALIDTODATE$DATE >= :DocDate)) AND
PP2.VALIDITYSUSPENDED <> 'A' AND
((PP2.PERSON_ID = :Person_ID) OR (PP2.FIRM_ID = :Firm_ID))
GROUP BY PP2.DEFINITION_ID) PP3
JOIN GDPRPROCESSINGPERMITS PP4 ON
(PP3.DEFINITION_ID = PP4.DEFINITION_ID) AND
(PP3.VALIDTODATE$DATE = PP4.VALIDTODATE$DATE) AND
((PP4.PERSON_ID = :Person_ID) OR (PP4.FIRM_ID = :Firm_ID))
GROUP BY PP4.DEFINITION_ID
) PP ON PP.DEFINITION_ID = DPD.ID
WHERE
DPD.PROCESSSUBJECTRIGHTS = 'A' AND
DPD.DATAPROTECTIONDRIVER_ID = :DPDriver_ID
GROUP BY A.RealBOCLSID, A.FIELDNAME
) PF
ON (AF.RealBOCLSID = PF.RealBOCLSID) AND (AF.FIELDNAME = PF.FIELDNAME)
ORDER BY 1, 2Generated by ABRA Software a.s. 27.10.2021 16:34:08