Hilfepläne mit aktuellen Bewilligungen - mit Stunden, Leistungskategorien UND Betreuern.txt

SupportOID=161090
This commit is contained in:
2026-04-27 15:56:38 +02:00
parent b0ada94531
commit c1d26e3ae2

View File

@@ -0,0 +1,78 @@
-- Query- für Herrn Ferchland - 2385915144 (APP6)
-- Hilfepläne mit aktuellen Bewilligungen (max 3 Bew mit Leistungskategorie u Stunden / Woche + Betreuern)
SELECT
base.Nachname, base.Vorname, base.Kostentraeger, base.`Bewilligt von`, base.`Bewilligt bis`, base.`Bewilligung 1`, base.`Stunden 1`,
-- Betreuer für SCAP 1
(SELECT GROUP_CONCAT(CONCAT(p2.`FirstName`, ' ', p2.`LastName`) ORDER BY scap2e.EmployeeOid SEPARATOR ', ')
FROM supportconceptapprovalperiod2employee scap2e
INNER JOIN `employee` e ON scap2e.`EmployeeOid` = e.`Oid`
INNER JOIN `person` p2 ON e.`PersonOid` = p2.`Oid`
WHERE scap2e.SupportConceptApprovalPeriodOid = base.scap1_oid
) AS 'Betreuer 1',
base.`Bewilligung 2`, base.`Stunden 2`,
-- Betreuer für SCAP 2
(SELECT GROUP_CONCAT(
CONCAT(p2.`FirstName`, ' ', p2.`LastName`)
ORDER BY scap2e.EmployeeOid SEPARATOR ', ')
FROM supportconceptapprovalperiod2employee scap2e
INNER JOIN `employee` e ON scap2e.`EmployeeOid` = e.`Oid`
INNER JOIN `person` p2 ON e.`PersonOid` = p2.`Oid`
WHERE scap2e.SupportConceptApprovalPeriodOid = base.scap2_oid
) AS 'Betreuer 2',
base.`Bewilligung 3`, base.`Stunden 3`,
-- Betreuer für SCAP 3
(SELECT GROUP_CONCAT(
CONCAT(p2.`FirstName`, ' ', p2.`LastName`)
ORDER BY scap2e.EmployeeOid SEPARATOR ', ')
FROM supportconceptapprovalperiod2employee scap2e
INNER JOIN `employee` e ON scap2e.`EmployeeOid` = e.`Oid`
INNER JOIN `person` p2 ON e.`PersonOid` = p2.`Oid`
WHERE scap2e.SupportConceptApprovalPeriodOid = base.scap3_oid
) AS 'Betreuer 3'
FROM (
-- Kernabfrage Bewilligungen ohne Betreuuer
SELECT
p.LastName AS Nachname,
p.FirstName AS Vorname,
o.`Name` AS Kostentraeger,
cb2sc.ApprovedStartDate AS 'Bewilligt von',
cb2sc.ApprovedEndDate AS 'Bewilligt bis',
MAX(CASE WHEN scap.rn = 1 THEN ROUND(scap.ApprovedBEPerInterval, 2) END) AS 'Stunden 1',
MAX(CASE WHEN scap.rn = 1 THEN CONCAT(DATE_FORMAT(scap.Start, '%d.%m.%Y'), ' - ', DATE_FORMAT(scap.EndDate, '%d.%m.%Y'), ' ', cat1.Name) END) AS 'Bewilligung 1',
MAX(CASE WHEN scap.rn = 2 THEN ROUND(scap.ApprovedBEPerInterval, 2) END) AS 'Stunden 2',
MAX(CASE WHEN scap.rn = 2 THEN CONCAT(DATE_FORMAT(scap.Start, '%d.%m.%Y'), ' - ', DATE_FORMAT(scap.EndDate, '%d.%m.%Y'), ' ', cat2.Name) END) AS 'Bewilligung 2',
MAX(CASE WHEN scap.rn = 3 THEN ROUND(scap.ApprovedBEPerInterval, 2) END) AS 'Stunden 3',
MAX(CASE WHEN scap.rn = 3 THEN CONCAT(DATE_FORMAT(scap.Start, '%d.%m.%Y'), ' - ', DATE_FORMAT(scap.EndDate, '%d.%m.%Y'), ' ', cat3.Name) END) AS 'Bewilligung 3',
-- Hilfsspalten: OIDs der 4 SCRAPs für die Betreuer-Subqueries
MAX(CASE WHEN scap.rn = 1 THEN scap.Oid END) AS scap1_oid,
MAX(CASE WHEN scap.rn = 2 THEN scap.Oid END) AS scap2_oid,
MAX(CASE WHEN scap.rn = 3 THEN scap.Oid END) AS scap3_oid
FROM `person` p
INNER JOIN `customer` c ON p.Oid = c.PersonOid
LEFT JOIN team2customer t2c ON c.Oid = t2c.CustomerOid
LEFT JOIN team t ON t2c.TeamOid = t.Oid
INNER JOIN `supportconcept` sc ON c.Oid = sc.CustomerOid
INNER JOIN `costbearer2supportconcept` cb2sc ON sc.Oid = cb2sc.SupportConceptOid
INNER JOIN `costbearer` cb ON cb2sc.`CostBearerOid` = cb.`Oid`
INNER JOIN `organisation` o ON cb.`Oid` = o.`CostBearerOid`
INNER JOIN (
SELECT s1.Oid, s1.CostBearer2SupportConceptOid, s1.ApprovedBEPerInterval,
s1.Start, s1.EndDate, s1.ServiceCategoryOid, s1.Notice,
COUNT(s2.Oid) + 1 AS rn
FROM `supportconceptapprovalperiod` s1
LEFT JOIN `supportconceptapprovalperiod` s2
ON s1.CostBearer2SupportConceptOid = s2.CostBearer2SupportConceptOid
-- AND s1.Start <= CURDATE() AND (s1.EndDate IS NULL OR s1.EndDate >= CURDATE())
AND (s2.Start < s1.Start OR (s2.Start = s1.Start AND s2.Oid < s1.Oid))
-- WHERE s1.Start <= CURDATE() AND (s1.EndDate IS NULL OR s1.EndDate >= CURDATE())
GROUP BY s1.Oid, s1.CostBearer2SupportConceptOid, s1.ApprovedBEPerInterval, s1.Start, s1.EndDate, s1.ServiceCategoryOid, s1.Notice
) scap ON cb2sc.Oid = scap.CostBearer2SupportConceptOid
LEFT JOIN servicecategory cat1 ON scap.ServiceCategoryOid = cat1.Oid AND scap.rn = 1
LEFT JOIN servicecategory cat2 ON scap.ServiceCategoryOid = cat2.Oid AND scap.rn = 2
LEFT JOIN servicecategory cat3 ON scap.ServiceCategoryOid = cat3.Oid AND scap.rn = 3
WHERE c.IsActive = 1 AND sc.IsActive = 1
GROUP BY p.Oid, p.LastName, p.FirstName, p.DateOfBirth, o.`Name`, cb2sc.ApprovedStartDate, cb2sc.ApprovedEndDate
ORDER BY t.Name, p.LastName
) base;