diff --git a/application/WorkorderBase/WorkorderBaseController.php b/application/WorkorderBase/WorkorderBaseController.php index 794890b8b..fcfce3a08 100644 --- a/application/WorkorderBase/WorkorderBaseController.php +++ b/application/WorkorderBase/WorkorderBaseController.php @@ -161,7 +161,8 @@ class WorkorderBaseController extends TTCrud $networks = NetworkModel::search(['owner_id' => $config->addressId]); if (empty($networks)) continue; - $tenantCampaigns = array_map(fn($n) => $n->id, PreordercampaignModel::getAll(['network_id' => array_map(fn($n) => $n->id, $networks)])); + $networkIds = array_map(fn($n) => $n->id, $networks); + $tenantCampaigns = array_map(fn($c) => $c->id, PreordercampaignModel::search(['network_id' => $networkIds])); if (empty($tenantCampaigns)) continue; $filters['preordercampaign_id'] = $tenantCampaigns; @@ -228,18 +229,21 @@ class WorkorderBaseController extends TTCrud continue; } - $tenantCampaignIds = array_column(PreordercampaignModel::getAll(['network_id' => array_column($networks, 'id')]), 'id'); + $networkIds = array_map(fn($n) => $n->id, $networks); + $tenantCampaignIds = array_map(fn($c) => $c->id, PreordercampaignModel::search(['network_id' => $networkIds])); if (empty($tenantCampaignIds)) { continue; } $activeFilters['preordercampaign_id'] = $tenantCampaignIds; - $activePreorderIds = array_column(PreorderModel::searchActive($activeFilters), 'id'); + $activePreorderIds = array_map(fn($p) => $p->id, PreorderModel::searchActive($activeFilters)); $activePreorderIdsSet = array_flip($activePreorderIds); $statusesToCheck = ['new', 'assigned', 'scheduled', 'in_progress', 'correction_requested', 'intervention_required', 'civil_engineering_required', 'civil_engineering_completed', 'problem_solved']; + // Get ALL preorders for tenant (including deleted/cancelled) to ensure their workorders get archived + // Note: Not passing 'deleted' filter means all preorders are returned regardless of deleted status $allTenantPreorders = PreorderModel::search(['preordercampaign_id' => $tenantCampaignIds]); if(empty($allTenantPreorders)) continue;