Liste aktuelle Bewilligungsangaben und Betreuung aus Bewilligungen - für Caritas Günzburg
SupportOID=162631
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
// Ursprünglich Caritas GünzburgNeuUlm 3432911735 (APP4)
|
||||
// Liste aller Klienten mit aktuellen Bewilligungsangaben und Betreuung aus Bewilligungen
|
||||
|
||||
SELECT
|
||||
base.Nachname, base.Vorname, base.Kostentraeger, base.`Bewilligung 1`, base.`Stunden 1`,
|
||||
(SELECT GROUP_CONCAT(
|
||||
CONCAT(p2.`FirstName`, ' ', p2.`LastName`, ' ', ROUND(scap2e.Betreuungsschluessel, 2), CASE WHEN scap2e.IsAbsolut = 0 THEN '%' ELSE '' END)
|
||||
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`,
|
||||
(SELECT GROUP_CONCAT(
|
||||
CONCAT(p2.`FirstName`, ' ', p2.`LastName`, ' ', ROUND(scap2e.Betreuungsschluessel, 2), CASE WHEN scap2e.IsAbsolut = 0 THEN '%' ELSE '' END)
|
||||
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`,
|
||||
(SELECT GROUP_CONCAT(
|
||||
CONCAT(p2.`FirstName`, ' ', p2.`LastName`, ' ', ROUND(scap2e.Betreuungsschluessel, 2), CASE WHEN scap2e.IsAbsolut = 0 THEN '%' ELSE '' END)
|
||||
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 (SELECT p.LastName AS Nachname, p.FirstName AS Vorname, o.`Name` AS Kostentraeger,
|
||||
MAX(CASE WHEN scap.rn = 1 THEN cat1.Name END) AS 'Bewilligung 1',
|
||||
MAX(CASE WHEN scap.rn = 1 THEN ROUND(scap.ApprovedBETotal, 2) END) AS 'Stunden 1',
|
||||
MAX(CASE WHEN scap.rn = 2 THEN cat2.Name END) AS 'Bewilligung 2',
|
||||
MAX(CASE WHEN scap.rn = 2 THEN ROUND(scap.ApprovedBETotal, 2) END) AS 'Stunden 2',
|
||||
MAX(CASE WHEN scap.rn = 3 THEN cat3.Name END) AS 'Bewilligung 3',
|
||||
MAX(CASE WHEN scap.rn = 3 THEN ROUND(scap.ApprovedBETotal, 2) END) AS 'Stunden 3',
|
||||
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.ApprovedBETotal,
|
||||
s1.Start, s1.EndDate, s1.ServiceCategoryOid, s1.Notice,
|
||||
COUNT(s2p.Oid) + 1 AS rn
|
||||
FROM `supportconceptapprovalperiod` s1
|
||||
LEFT JOIN servicecategory sc1 ON s1.ServiceCategoryOid = sc1.Oid
|
||||
LEFT JOIN (
|
||||
SELECT s2.Oid, s2.CostBearer2SupportConceptOid, s2.Start, s2.EndDate,
|
||||
CASE WHEN sc2.Name = 'Qualifiziert' THEN 0 ELSE 1 END AS prio
|
||||
FROM `supportconceptapprovalperiod` s2
|
||||
LEFT JOIN servicecategory sc2 ON s2.ServiceCategoryOid = sc2.Oid
|
||||
WHERE s2.Start <= CURDATE() AND (s2.EndDate IS NULL OR s2.EndDate >= CURDATE())
|
||||
) s2p ON s1.CostBearer2SupportConceptOid = s2p.CostBearer2SupportConceptOid
|
||||
AND (s2p.prio < CASE WHEN sc1.Name = 'Qualifiziert' THEN 0 ELSE 1 END
|
||||
OR (s2p.prio = CASE WHEN sc1.Name = 'Qualifiziert' THEN 0 ELSE 1 END
|
||||
AND (s2p.Start < s1.Start OR (s2p.Start = s1.Start AND s2p.Oid < s1.Oid))))
|
||||
WHERE s1.Start <= CURDATE() AND (s1.EndDate IS NULL OR s1.EndDate >= CURDATE())
|
||||
GROUP BY s1.Oid, s1.CostBearer2SupportConceptOid, s1.ApprovedBETotal, 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.Oid, cb2sc.ApprovedStartDate, cb2sc.ApprovedEndDate
|
||||
) base
|
||||
ORDER BY base.Nachname, base.Vorname;
|
||||
Reference in New Issue
Block a user