From 0540cd65851e82ca9eba22b802cb484ec19898c9 Mon Sep 17 00:00:00 2001 From: "venkatesh.r" Date: Wed, 25 Feb 2026 14:10:52 +0530 Subject: [PATCH] CHANGE_SALES_DASHBOARD --- app/Controllers/SalesController.php | 63 ++++++++++++++++--- app/Helpers/utility_helper.php | 44 ++++++++++++- .../sales/sales_manager_level_dashboard.php | 53 ++++++++++++---- 3 files changed, 139 insertions(+), 21 deletions(-) diff --git a/app/Controllers/SalesController.php b/app/Controllers/SalesController.php index f79fd170..047be5b3 100644 --- a/app/Controllers/SalesController.php +++ b/app/Controllers/SalesController.php @@ -672,7 +672,7 @@ class SalesController extends BaseController } - // ==================== Dashboard ==================== + // ==================== Dashboard ==================== public function branchLevelDashboard() { @@ -736,19 +736,39 @@ class SalesController extends BaseController public function salesManagerLevelDashboard() { - $userId = 1; + $userId = get_session_userid(); + // $userId = 1; $db = \Config\Database::connect(); try { + + $payload = $this->request->getGet(); + $current_fin_year = $payload['fy'] ?? getCurrentFinancialYear(); + + + $fin_years = $db->table('sales_target') + ->select('fy_year') + ->where('user_id', $userId) + ->orderBy('fy_year', 'desc') + ->get() + ->getResultArray(); + $fin_years = array_column($fin_years, 'fy_year'); + $fin_years[] = '2024-2025'; + $target = $db->table('sales_target') ->where('user_id', $userId) - ->where('fy_year', '2025-2026') - ->get()->getRowArray(); + ->where('fy_year', $current_fin_year) + ->get() + ->getRowArray(); + + $targetAmount = $target['target_amount'] ?? 0.00; + + // get achieved amount from leads table + $achievedAmount = $this->getUserAchievedAmount($current_fin_year, $userId); - $targetAmount = $target['target_amount'] ?? 2500000.00; - $achievedAmount = 600000.00; $remainingAmount = $targetAmount - $achievedAmount; - $achievementPercent = ($targetAmount > 0) ? round(($achievedAmount / $targetAmount) * 100) : 0; + // $achievementPercent = ($targetAmount > 0) ? round(($achievedAmount / $targetAmount) * 100) : 0; + $achievementPercent = ($targetAmount > 0) ? min(100, round(($achievedAmount / $targetAmount) * 100)) : 0; $activitySummary = [ 'total' => $this->activityModel->where('assigned_to', $userId)->countAllResults(), @@ -779,9 +799,13 @@ class SalesController extends BaseController 'lead_count' => $myLeadsCount, 'upcoming' => $upcomingActivities, 'recent_leads' => $recentLeads, - 'user_name' => session()->get('first_name') ?? 'John Doe' + 'fin_years' => $fin_years, + 'display_fin_years' => format_financial_year($current_fin_year), + 'user_name' => get_session_userdata()->first_namee ?? '' ]; + // dd($data); + // return view('sales/my_dashboard_view', $data); $this->loadLayout('sales/sales_manager_level_dashboard', $data); @@ -789,4 +813,27 @@ class SalesController extends BaseController return $this->failServerError($e->getMessage()); } } + + public function getUserAchievedAmount($financialYear, $userId) + { + // Split the string into two years + $years = explode('-', $financialYear); + $startYear = $years[0]; // 2025 + $endYear = $years[1]; // 2026 + + // Create the timestamps + $startFY = $startYear . '-04-01 00:00:00'; + $endFY = $endYear . '-03-31 23:59:59'; + + $achievedAmountData = $this->leadModel + ->select('SUM(leads.premium_amount) as achieved_amount') + ->join('leads', 'sales_actual_leads.lead_id = leads.actual_lead_id') + ->where('sales_actual_leads.assigned_to', $userId) + ->where('leads.status', 'won') + ->where('leads.updated_at >=', $startFY) + ->where('leads.updated_at <=', $endFY) + ->findAll(); + + return $achievedAmountData[0]['achieved_amount'] ?? 0.00; + } } \ No newline at end of file diff --git a/app/Helpers/utility_helper.php b/app/Helpers/utility_helper.php index 467f0338..ce6e6e4a 100755 --- a/app/Helpers/utility_helper.php +++ b/app/Helpers/utility_helper.php @@ -1210,7 +1210,7 @@ if (!function_exists('map_relationship')) { * Extract identity from POST body or GET params. * Looks for 'email' or 'mobile_number'. */ - function resolveIdentity($request): ?string + function resolveIdentity($request): ?string { // Try POST body first $email = $request->getPost('email'); @@ -1251,7 +1251,7 @@ if (!function_exists('map_relationship')) { } - function recordRateLimitFailure(string $context = 'authApi'): void + function recordRateLimitFailure(string $context = 'authApi'): void { /** @var IncomingRequest $request */ $request = \Config\Services::request(); @@ -1276,4 +1276,44 @@ if (!function_exists('map_relationship')) { } + if (!function_exists('getCurrentFinancialYear')) { + function getCurrentFinancialYear() + { + // Get current year and month + $date = new DateTime(); + $currentYear = (int)$date->format('Y'); + $currentMonth = (int)$date->format('m'); + + // If month is Jan, Feb, or March, we are still in the previous year's FY + if ($currentMonth < 4) { + $startYear = $currentYear - 1; + $endYear = $currentYear; + } else { + $startYear = $currentYear; + $endYear = $currentYear + 1; + } + + return $startYear . '-' . $endYear; + } + } + + + if (!function_exists('format_financial_year')) { + function format_financial_year(string $financialYear): string + { + if (empty($financialYear) || !str_contains($financialYear, '-')) { + return $financialYear; + } + + $years = explode('-', $financialYear); + + // Ensure we have both parts + $startYear = $years[0] ?? ''; + $endYear = $years[1] ?? ''; + + return "APR " . $startYear . " - MAR " . $endYear; + } + } + + diff --git a/app/Views/sales/sales_manager_level_dashboard.php b/app/Views/sales/sales_manager_level_dashboard.php index 5b75fc42..e103759c 100644 --- a/app/Views/sales/sales_manager_level_dashboard.php +++ b/app/Views/sales/sales_manager_level_dashboard.php @@ -1,5 +1,5 @@