Fixed showing preorders multiple times when more than 1 workorder

This commit is contained in:
Frank Schubert
2023-10-23 13:33:35 +02:00
parent cb5cb43a79
commit 56d4a849cb

View File

@@ -136,7 +136,7 @@ class PreorderModel {
LEFT JOIN `".FRONKDB_DBNAME."`.Preorderstatus tt_preorderstatus ON (tt_preorder.status_id = tt_preorderstatus.id)
LEFT JOIN `".ADDRESSDB_DBNAME."`.view_hausnummer as adb_hausnummer ON (tt_preorder.adb_hausnummer_id = adb_hausnummer.hausnummer_id)
LEFT JOIN `".ADDRESSDB_DBNAME."`.Wohneinheit as adb_wohneinheit ON (tt_preorder.adb_wohneinheit_id = adb_wohneinheit.id)
LEFT JOIN `".FRONKDB_DBNAME."`.RimoWorkorder tt_rimoworkorder ON (adb_wohneinheit.id = tt_rimoworkorder.adb_wohneinheit_id)
LEFT OUTER JOIN (SELECT adb_wohneinheit_id, count(*) cnt FROM `".FRONKDB_DBNAME."`.RimoWorkorder GROUP BY adb_wohneinheit_id) wocount ON adb_wohneinheit.id = wocount.adb_wohneinheit_id
WHERE $where
ORDER BY $orderBy
LIMIT 1";
@@ -166,7 +166,7 @@ class PreorderModel {
LEFT JOIN `".FRONKDB_DBNAME."`.Preorderstatus as tt_preorderstatus ON (tt_preorder.status_id = tt_preorderstatus.id)
LEFT JOIN `".ADDRESSDB_DBNAME."`.view_hausnummer as adb_hausnummer ON (tt_preorder.adb_hausnummer_id = adb_hausnummer.hausnummer_id)
LEFT JOIN `".ADDRESSDB_DBNAME."`.Wohneinheit as adb_wohneinheit ON (tt_preorder.adb_wohneinheit_id = adb_wohneinheit.id),
LEFT JOIN `".FRONKDB_DBNAME."`.RimoWorkorder tt_rimoworkorder ON (adb_wohneinheit.id = tt_rimoworkorder.adb_wohneinheit_id)
LEFT OUTER JOIN (SELECT adb_wohneinheit_id, count(*) cnt FROM `".FRONKDB_DBNAME."`.RimoWorkorder GROUP BY adb_wohneinheit_id) wocount ON adb_wohneinheit.id = wocount.adb_wohneinheit_id
JSON_TABLE(tt_preorder.addon_services,
'$[*]' COLUMNS (
ordered VARCHAR(64) PATH '$.ordered'
@@ -198,7 +198,7 @@ class PreorderModel {
LEFT JOIN `".FRONKDB_DBNAME."`.Preorderstatus as tt_preorderstatus ON (tt_preorder.status_id = tt_preorderstatus.id)
LEFT JOIN `".ADDRESSDB_DBNAME."`.view_hausnummer as adb_hausnummer ON (tt_preorder.adb_hausnummer_id = adb_hausnummer.hausnummer_id)
LEFT JOIN `".ADDRESSDB_DBNAME."`.Wohneinheit as adb_wohneinheit ON (tt_preorder.adb_wohneinheit_id = adb_wohneinheit.id),
LEFT JOIN `".FRONKDB_DBNAME."`.RimoWorkorder tt_rimoworkorder ON (adb_wohneinheit.id = tt_rimoworkorder.adb_wohneinheit_id)
LEFT OUTER JOIN (SELECT adb_wohneinheit_id, count(*) cnt FROM `".FRONKDB_DBNAME."`.RimoWorkorder GROUP BY adb_wohneinheit_id) wocount ON adb_wohneinheit.id = wocount.adb_wohneinheit_id
JSON_TABLE(tt_preorder.addon_services,
'$[*]' COLUMNS (
ordered VARCHAR(64) PATH '$.ordered'
@@ -238,7 +238,7 @@ class PreorderModel {
LEFT JOIN `".FRONKDB_DBNAME."`.Preorderstatus tt_preorderstatus ON (tt_preorder.status_id = tt_preorderstatus.id)
LEFT JOIN `".ADDRESSDB_DBNAME."`.view_hausnummer as adb_hausnummer ON (tt_preorder.adb_hausnummer_id = adb_hausnummer.hausnummer_id)
LEFT JOIN `".ADDRESSDB_DBNAME."`.Wohneinheit as adb_wohneinheit ON (tt_preorder.adb_wohneinheit_id = adb_wohneinheit.id)
LEFT JOIN `".FRONKDB_DBNAME."`.RimoWorkorder tt_rimoworkorder ON (adb_wohneinheit.id = tt_rimoworkorder.adb_wohneinheit_id)
LEFT OUTER JOIN (SELECT adb_wohneinheit_id, count(*) cnt FROM `".FRONKDB_DBNAME."`.RimoWorkorder GROUP BY adb_wohneinheit_id) wocount ON adb_wohneinheit.id = wocount.adb_wohneinheit_id
WHERE $where
";
@@ -257,12 +257,12 @@ class PreorderModel {
$db = FronkDB::singleton();
$where = self::getSqlFilter($filter);
$sql = "SELECT tt_preorder.* FROM `".FRONKDB_DBNAME."`.Preorder tt_preorder
LEFT JOIN `".FRONKDB_DBNAME."`.Preorderstatus tt_preorderstatus ON (tt_preorder.status_id = tt_preorderstatus.id)
LEFT JOIN `".ADDRESSDB_DBNAME."`.view_hausnummer as adb_hausnummer ON (tt_preorder.adb_hausnummer_id = adb_hausnummer.hausnummer_id)
LEFT JOIN `".ADDRESSDB_DBNAME."`.Wohneinheit as adb_wohneinheit ON (tt_preorder.adb_wohneinheit_id = adb_wohneinheit.id)
LEFT JOIN `".FRONKDB_DBNAME."`.RimoWorkorder tt_rimoworkorder ON (adb_wohneinheit.id = tt_rimoworkorder.adb_wohneinheit_id)
LEFT OUTER JOIN (SELECT adb_wohneinheit_id, count(*) cnt FROM `".FRONKDB_DBNAME."`.RimoWorkorder GROUP BY adb_wohneinheit_id) wocount ON adb_wohneinheit.id = wocount.adb_wohneinheit_id
WHERE $where
ORDER BY lastname, firstname
";
@@ -484,9 +484,9 @@ class PreorderModel {
if(array_key_exists("rimo_workorder", $filter)) {
$rimo_workorder = $filter['rimo_workorder'];
if($rimo_workorder === null || $rimo_workorder === false) {
$where .= " AND (tt_rimoworkorder.id IS NULL)";
$where .= " AND (wocount.cnt IS NULL OR wocount.cnt = 0)";
} elseif($rimo_workorder) {
$where .= " AND tt_rimoworkorder.id IS NOT NULL";
$where .= " AND wocount.cnt > 0";
}
}