diff --git a/app/Http/Controllers/Api/RequestAssignmentController.php b/app/Http/Controllers/Api/RequestAssignmentController.php index b008c42..5b8bee3 100644 --- a/app/Http/Controllers/Api/RequestAssignmentController.php +++ b/app/Http/Controllers/Api/RequestAssignmentController.php @@ -70,11 +70,25 @@ class RequestAssignmentController extends Controller case 'potention': $potentionStatuses = PbgTaskStatus::getPotention(); $rejectedStatuses = PbgTaskStatus::getRejected(); - $query->whereIn("status", $potentionStatuses) - ->whereNotIn("status", $rejectedStatuses); + $nonVerifiedStatuses = PbgTaskStatus::getNonVerified(); + $query->where(function($q) use ($potentionStatuses, $rejectedStatuses, $nonVerifiedStatuses) { + $q->where(function($q1) use ($potentionStatuses, $rejectedStatuses, $nonVerifiedStatuses) { + // Verified potention (main logic) + $q1->whereIn("status", $potentionStatuses) + ->whereNotIn("status", $rejectedStatuses) + ->whereNotIn("status", $nonVerifiedStatuses); + }) + ->orWhere(function($q2) use ($nonVerifiedStatuses) { + // Add non-verified WITH retributions (business logic exception) + $q2->whereIn("status", $nonVerifiedStatuses) + ->whereHas('pbg_task_retributions'); + }); + }); Log::info('Potention filter applied', [ 'status_list' => $potentionStatuses, 'excluded_rejected' => $rejectedStatuses, + 'excluded_non_verified_without_retributions' => $nonVerifiedStatuses, + 'included_non_verified_with_retributions' => true, 'count_before_filter' => PbgTask::count(), 'count_after_filter' => $query->count() ]); diff --git a/app/Models/BigdataResume.php b/app/Models/BigdataResume.php index 8bd2466..28c1ec1 100644 --- a/app/Models/BigdataResume.php +++ b/app/Models/BigdataResume.php @@ -69,8 +69,8 @@ class BigdataResume extends Model SUM(CASE WHEN pbg_task.status in (".implode(',', PbgTaskStatus::getIssuanceRealizationPbg()).") THEN ptr.nilai_retribusi_bangunan ELSE 0 END) AS issuance_realization_pbg_total, COUNT(CASE WHEN pbg_task.status in (".implode(',', PbgTaskStatus::getProcessInTechnicalOffice()).") THEN pbg_task.uuid END) AS process_in_technical_office_count, SUM(CASE WHEN pbg_task.status in (".implode(',', PbgTaskStatus::getProcessInTechnicalOffice()).") THEN ptr.nilai_retribusi_bangunan ELSE 0 END) AS process_in_technical_office_total, - COUNT(CASE WHEN pbg_task.status in (".implode(',', PbgTaskStatus::getPotention()).") THEN pbg_task.uuid END) AS potention_count, - SUM(CASE WHEN pbg_task.status in (".implode(',', PbgTaskStatus::getPotention()).") THEN ptr.nilai_retribusi_bangunan ELSE 0 END) AS potention_total + COUNT(CASE WHEN (pbg_task.status in (".implode(',', PbgTaskStatus::getPotention()).") AND pbg_task.status not in (".implode(',', PbgTaskStatus::getRejected()).") AND pbg_task.status not in (".implode(',', PbgTaskStatus::getNonVerified()).")) OR (pbg_task.status in (".implode(',', PbgTaskStatus::getNonVerified()).") AND ptr.pbg_task_uid IS NOT NULL) THEN pbg_task.uuid END) AS potention_count, + SUM(CASE WHEN (pbg_task.status in (".implode(',', PbgTaskStatus::getPotention()).") AND pbg_task.status not in (".implode(',', PbgTaskStatus::getRejected()).") AND pbg_task.status not in (".implode(',', PbgTaskStatus::getNonVerified()).")) OR (pbg_task.status in (".implode(',', PbgTaskStatus::getNonVerified()).") AND ptr.pbg_task_uid IS NOT NULL) THEN ptr.nilai_retribusi_bangunan ELSE 0 END) AS potention_total ") ->first();