Merge branch 'dev' of bitbucket.org:jubilian/nhance into dev

This commit is contained in:
VENKATESHWARAN 2025-10-31 17:16:57 +05:30
commit 6c1ecac7a1
9 changed files with 6274 additions and 6231 deletions

View File

@ -428,7 +428,7 @@ $routes->group("policy_tranction", ["filter" => "authMVC"], function ($routes) {
$routes->group("report", ["filter" => "authMVC"], function ($routes) { $routes->group("report", ["filter" => "authMVC"], function ($routes) {
$routes->match(['get', 'post'],"list", "PolicyTransactionController::reportBDSNew"); $routes->match(['get', 'post'],"list", "PolicyTransactionController::reportBDSNew");
$routes->match(['get', 'post'],"listNew", "PolicyTransactionController::reportBDSNew"); $routes->match(['get', 'post'],"list_old", "PolicyTransactionController::reportBDS");
$routes->get("report-varience-list", "PolicyTransactionController::reportVarience"); $routes->get("report-varience-list", "PolicyTransactionController::reportVarience");
$routes->get("report-business-list", "PolicyTransactionController::reportBusinessList"); $routes->get("report-business-list", "PolicyTransactionController::reportBusinessList");
$routes->get("report-finance-list", "PolicyTransactionController::reportFinanceList"); $routes->get("report-finance-list", "PolicyTransactionController::reportFinanceList");

View File

@ -937,7 +937,13 @@ class BDSReportController extends AdminController
} }
} }
public function bdsTATReport() /** New arugument Introduced Named as "$isInternalCalled"
* Functional Based called means $isInternalCalled is True.
* Output returning as Array
* Route Based called means $isInternalCalled is False. becoz this is External Call
* Output returning as Page
*/
public function bdsTATReport($isInternalCalled = false)
{ {
$sql = " $sql = "
SELECT SELECT
@ -1010,9 +1016,8 @@ class BDSReportController extends AdminController
// dd(db_connect()->getLastQuery(),$result); // dd(db_connect()->getLastQuery(),$result);
$data['data'] = $result; $data['data'] = $result;
// dd($data, get_role_id(), ENROLLMENT_TEAM_ID, user_team()); // dd($data, get_role_id(), ENROLLMENT_TEAM_ID, user_team());
// return $this->loadLayout('bds_tat_wise_report', $data); if ($isInternalCalled) { return $result; }
return $this->loadLayout('bds_tat_wise_report', $data);
return $result;
} }
public function accountMangerStatusBDSReport() public function accountMangerStatusBDSReport()
@ -1141,7 +1146,7 @@ class BDSReportController extends AdminController
if ($report_type == 1){ if ($report_type == 1){
$data['page_title'] = "BDS TAT Report"; $data['page_title'] = "BDS TAT Report";
$data['data'] = $this->bdsTATReport(); $data['data'] = $this->bdsTATReport(true); // Functional Based called means True
}else if ($report_type == 2){ }else if ($report_type == 2){
$data['page_title'] = "Account Manager Status Report"; $data['page_title'] = "Account Manager Status Report";

View File

@ -1,46 +1,46 @@
<?php <?php
namespace App\Controllers; namespace App\Controllers;
use App\Controllers\BaseController; use App\Controllers\BaseController;
use App\Controllers\GoogleDriveController; use App\Controllers\GoogleDriveController;
use App\Helpers\DepositHelper; use App\Helpers\DepositHelper;
use CodeIgniter\API\ResponseTrait; use CodeIgniter\API\ResponseTrait;
use App\Models\PolicyTransactionModel; use App\Models\PolicyTransactionModel;
use App\Models\PolicyTransactionStatusModel; use App\Models\PolicyTransactionStatusModel;
use App\Models\ClientModel; use App\Models\ClientModel;
use App\Models\ClientBranchModel; use App\Models\ClientBranchModel;
use App\Models\ClientDepositModel; use App\Models\ClientDepositModel;
use App\Models\ClientPolicyModel; use App\Models\ClientPolicyModel;
use App\Models\PolicyTypeModel; use App\Models\PolicyTypeModel;
use App\Models\InsurerBranchModel; use App\Models\InsurerBranchModel;
use App\Models\InsurerModel; use App\Models\InsurerModel;
use App\Models\KYCEntityTypeModel; use App\Models\KYCEntityTypeModel;
use App\Models\ClientKYCDocsModel; use App\Models\ClientKYCDocsModel;
use App\Models\TPABranchModel; use App\Models\TPABranchModel;
use App\Models\TPAModel; use App\Models\TPAModel;
use App\Models\PTFileModel; use App\Models\PTFileModel;
use App\Models\PTCOShareDetailsModel; use App\Models\PTCOShareDetailsModel;
use App\Models\EmployeeModel; use App\Models\EmployeeModel;
use App\Models\UserTeamsModel; use App\Models\UserTeamsModel;
use App\Models\UserModel; use App\Models\UserModel;
use App\Models\EmployeePolicyModel; use App\Models\EmployeePolicyModel;
use App\Models\InsurerStatements; use App\Models\InsurerStatements;
use App\Models\InvPaymentDetailsModel; use App\Models\InvPaymentDetailsModel;
use App\Models\BatchFileModel; use App\Models\BatchFileModel;
use App\Models\FileModel; use App\Models\FileModel;
use App\Models\COShareStmtDetailsModel; use App\Models\COShareStmtDetailsModel;
use App\Models\BdsPlacementModel; use App\Models\BdsPlacementModel;
use Kint\Kint; use Kint\Kint;
use App\Helpers\MailHelper; use App\Helpers\MailHelper;
use App\Helpers\ExcelSanitizeHelper; use App\Helpers\ExcelSanitizeHelper;
use App\Models\NhanceBranchModel; use App\Models\NhanceBranchModel;
use Exception; use Exception;
class PolicyTransactionController extends BaseController class PolicyTransactionController extends BaseController
{ {
use ResponseTrait; use ResponseTrait;
protected $myLogger; protected $myLogger;
@ -3179,8 +3179,8 @@ class PolicyTransactionController extends BaseController
} }
public function reportBDSNew() public function reportBDSNew()
{ {
// 🧭 Basic Page Info // 🧭 Basic Page Info
$data['tab_name'] = 'BDS Report'; $data['tab_name'] = 'BDS Report';
$data['page_name'] = 'BDS Report'; $data['page_name'] = 'BDS Report';
@ -3285,8 +3285,8 @@ public function reportBDSNew()
// 🧩 Load View // 🧩 Load View
$this->loadLayout('report_bds_filter', $data); $this->loadLayout('report_bds_filter', $data);
} }
} }

View File

@ -779,32 +779,63 @@ class UserController extends AdminController
} }
} }
// public function downloadIncentivesFile($file_id)
// {
// try {
// $result = $this->partnerManagerIncentiveFileModel->where('id', $file_id)->first();
// if (!$result || empty($result['incentive_file_name'])) {
// throw new \Exception("File Name Not Found");
// }
// $incentive_file_name = $result['incentive_file_name'];
// $file_name = basename($incentive_file_name);
// $filePath = WRITEPATH . 'uploads/incentives/' . $file_name;
// if (file_exists($filePath)) {
// return $this->response->download($filePath, null);
// } else {
// throw new \Exception("File Not Found");
// }
// } catch (\Exception $e) {
// $this->myLogger->logme('error', $e->getMessage());
// // Show 404 error view
// $data['message'] = $e->getMessage();
// return view('errors/404', $data);
// }
// }
public function downloadIncentivesFile($file_id) public function downloadIncentivesFile($file_id)
{ {
try { try {
$result = $this->partnerManagerIncentiveFileModel->where('id', $file_id)->first(); $result = $this->partnerManagerIncentiveFileModel->where('id', $file_id)->first();
if (!$result || empty($result['incentive_file_name'])) { if (!$result || empty($result['incentive_file_name'])) {
throw new \Exception("File Name Not Found"); throw new \Exception("File Name Not Found for ID {$file_id}");
} }
$incentive_file_name = $result['incentive_file_name']; $incentive_file_name = $result['incentive_file_name'];
$file_name = basename($incentive_file_name); $file_name = basename($incentive_file_name);
$filePath = WRITEPATH . 'uploads/incentives/' . $file_name; $filePath = WRITEPATH . 'uploads/incentives/' . $file_name;
if (file_exists($filePath)) { if (!file_exists($filePath)) {
return $this->response->download($filePath, null); throw new \Exception("File Not Found: {$file_name}");
} else {
throw new \Exception("File Not Found");
} }
} catch (\Exception $e) { return $this->response->download($filePath, null);
} catch (\Throwable $e) {
// Catch all kinds of exceptions
$this->myLogger->logme('error', $e->getMessage()); $this->myLogger->logme('error', $e->getMessage());
// Show 404 error view // Return proper 404 for missing file, else 500 for unexpected error
$data['message'] = $e->getMessage(); if (str_contains($e->getMessage(), 'Not Found')) {
return view('errors/404', $data); return $this->response->setStatusCode(404)->setBody($e->getMessage());
}
return $this->response->setStatusCode(500)->setBody('Internal Server Error');
} }
} }

View File

@ -1,11 +1,11 @@
<?php <?php
namespace App\Models; namespace App\Models;
use CodeIgniter\Model; use CodeIgniter\Model;
class PolicyTransactionModel extends Model class PolicyTransactionModel extends Model
{ {
protected $table = 'policy_transaction'; protected $table = 'policy_transaction';
protected $primaryKey = 'id'; protected $primaryKey = 'id';
protected $useAutoIncrement = true; protected $useAutoIncrement = true;
@ -1851,7 +1851,7 @@ class PolicyTransactionModel extends Model
policy_transaction.ref AS ref, policy_transaction.ref AS ref,
DATE_FORMAT(policy_transaction.policy_issue_date, '%d %b %Y') AS policy_issue_date, DATE_FORMAT(policy_transaction.policy_issue_date, '%d %b %Y') AS policy_issue_date,
DATE_FORMAT( policy_transaction.policy_issue_date,, '%b %Y') AS policy_issue_month, DATE_FORMAT( policy_transaction.policy_issue_date, '%b %Y') AS policy_issue_month,
CASE CASE
WHEN 1 = 1 THEN 'no statement uploaded' WHEN 1 = 1 THEN 'no statement uploaded'
@ -2297,4 +2297,4 @@ class PolicyTransactionModel extends Model
} }

View File

@ -1550,9 +1550,10 @@ table.dataTable tbody td {
container.append(`<div class="no-files-message">No Files have been Uploaded</div>`); container.append(`<div class="no-files-message">No Files have been Uploaded</div>`);
} }
}, },
error: function(xhr) { error: function (xhr, status, errorThrown) {
container.html(`<div class="no-files-message">No Files have been Uploaded</div>`); container.html(`<div class="no-files-message">No Files have been Uploaded</div>`);
toastr.error('Server error occurred.', 'Error'); console.log("Error: " + xhr.status + " - " + errorThrown);
if (xhr.status !== 404) toastr.error(errorThrown || xhr.responseText || 'Something went wrong', 'Error');
} }
}); });
} }

View File

@ -62,7 +62,7 @@
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script> <script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.5.3/dist/umd/popper.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.5.3/dist/umd/popper.min.js"></script>
<!-- <link rel="manifest" href="../manifest.json"> --> <link rel="manifest" href="../manifest.json">
<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;700&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;700&display=swap" rel="stylesheet">
@ -71,15 +71,15 @@
<script> <script>
// if ('serviceWorker' in navigator) { if ('serviceWorker' in navigator) {
// window.addEventListener('load', function() { window.addEventListener('load', function() {
// navigator.serviceWorker.register('../service-worker.js').then(function(registration) { navigator.serviceWorker.register('../service-worker.js').then(function(registration) {
// // console.log('Service Worker registration successful with scope:', registration.scope); // console.log('Service Worker registration successful with scope:', registration.scope);
// }, function(err) { }, function(err) {
// // console.log('Service Worker registration failed:', err); // console.log('Service Worker registration failed:', err);
// }); });
// }); });
// } }
</script> </script>
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.css" /> <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.css" />
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick-theme.min.css" /> <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick-theme.min.css" />
@ -1254,16 +1254,16 @@
} }
/* Cancel Bootstrap's .form-control for file inputs */ /* Cancel Bootstrap's .form-control for file inputs */
input[type="file"].form-control { /* input[type="file"].form-control { */
height: auto !important; /* height: auto !important;*/
/* remove forced height */ /* remove forced height */
padding: initial !important; /* padding: initial !important;*/
/* reset padding */ /* reset padding */
font-size: inherit !important; /* font-size: inherit !important;*/
/* reset font size */ /* reset font size */
line-height: normal !important; /* line-height: normal !important;*/
/* reset line height */ /* reset line height */
} /* } */
/* Apply to Select2 (single select) */ /* Apply to Select2 (single select) */

View File

@ -1,43 +1,44 @@
<style> <style>
.table th, .table th,
.table td { .table td {
padding: 8px; padding: 8px;
} }
table.dataTable tbody td { table.dataTable tbody td {
padding: 4px 4px !important; padding: 4px 4px !important;
} }
.col-12 { .col-12 {
max-width: 98% !important; max-width: 98% !important;
} }
.dataTables_filter { .dataTables_filter {
position: absolute; position: absolute;
} }
.right-align-input { .right-align-input {
text-align: right; text-align: right;
} }
.badge-container { .badge-container {
background: #F0F0F0; background: #F0F0F0;
padding: 6px 12px; padding: 6px 12px;
border-radius: 6px; border-radius: 6px;
font-size: 14px; font-size: 14px;
display: inline-block; display: inline-block;
} }
#totals { #totals {
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
gap: 8px; gap: 8px;
} }
</style> </style>
<div class="col-12" id="second_page">
<div class="col-12" id="second_page">
<div class="card"> <div class="card">
<div class="card-body"> <div class="card-body">
<div class="row" style="padding-bottom: 10px;"> <div class="row" style="padding-bottom: 10px;">
@ -158,19 +159,24 @@ table.dataTable tbody td {
$uniqueAgreedAmountPerInsurer = "$policy_no-$policy_type-$client_name-$insurer_branch_name" ; $uniqueAgreedAmountPerInsurer = "$policy_no-$policy_type-$client_name-$insurer_branch_name" ;
$pastMonth = explode("-",$uniqueRecord )[1] ;
$currentMonth = $policy_updated_month ;
if(isset($uniquePoliciesReport[$uniqueRecord]) && $statement_status == "no statement uploaded" ){ if(isset($uniquePoliciesReport[$uniqueRecord]) && $statement_status == "no statement uploaded" ){
continue ; continue ;
} }
else if(isset($uniquePoliciesReport[$uniqueRecord]) && $statement_status == "statement uploaded" ){ else if(isset($uniquePoliciesReport[$uniqueRecord]) && $statement_status == "statement uploaded" && $pastMonth != $currentMonth){
unset($uniquePoliciesReport[$uniqueRecord]); unset($uniquePoliciesReport[$uniqueRecord]);
}else{ }else{
if(isset($uniqueAgreedAmountList[$uniqueAgreedAmountPerInsurer]) ){ if(isset($uniqueAgreedAmountList[$uniqueAgreedAmountPerInsurer]) ){
$uniqueAgreedAmountList[$uniqueAgreedAmountPerInsurer] -= $row['billed_amt']; $uniqueAgreedAmountList[$uniqueAgreedAmountPerInsurer] -= $row['billed_amt'];
$row['total_irda_amt'] = 0; $row['total_irda_amt'] = $pastMonth == $currentMonth ? $row['total_irda_amt'] : 0 ;
$row['outstanding_amt'] = $uniqueAgreedAmountList[$uniqueAgreedAmountPerInsurer]; $row['outstanding_amt'] = $uniqueAgreedAmountList[$uniqueAgreedAmountPerInsurer];
$row['multiple_months'] = true; $row['multiple_months'] = $pastMonth == $currentMonth ? false : true ;
} }
else{ else{
$row['outstanding_amt'] = $row['total_irda_amt'] - $row['billed_amt']; $row['outstanding_amt'] = $row['total_irda_amt'] - $row['billed_amt'];
@ -262,10 +268,10 @@ table.dataTable tbody td {
</div> </div>
</div><!-- end col --> </div><!-- end col -->
</div> </div>
</div> </div>
<!-- modal content --> <!-- modal content -->
<div class="modal fade" id="centermodal" tabindex="-1" role="dialog" aria-hidden="true" aria-modal="true" data-backdrop="static"> <div class="modal fade" id="centermodal" tabindex="-1" role="dialog" aria-hidden="true" aria-modal="true" data-backdrop="static">
<div class="modal-dialog modal-lg"> <div class="modal-dialog modal-lg">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header" style="background-color: gainsboro;"> <div class="modal-header" style="background-color: gainsboro;">
@ -292,13 +298,13 @@ table.dataTable tbody td {
</div> </div>
</div><!-- /.modal-content --> </div><!-- /.modal-content -->
</div><!-- /.modal-dialog --> </div><!-- /.modal-dialog -->
</div><!-- /.modal --> </div><!-- /.modal -->
<!--------------------------------------------------------------------------------------------------> <!-------------------------------------------------------------------------------------------------->
<script> <script>
// Datatable document ready // Datatable document ready
$(document).ready(function() { $(document).ready(function() {
var ticketsTable = $('#scroll-horizontal-datatable'); var ticketsTable = $('#scroll-horizontal-datatable');
@ -581,11 +587,11 @@ $(document).ready(function() {
} else { } else {
console.error("Table atet found."); console.error("Table atet found.");
} }
}); });
// ---------------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------------
function showCoShareStatementDetails(input){ function showCoShareStatementDetails(input){
let pt_id = $(input).data('id'); let pt_id = $(input).data('id');
console.log('pt_id', pt_id) console.log('pt_id', pt_id)
@ -594,10 +600,10 @@ function showCoShareStatementDetails(input){
myModal.show(); myModal.show();
getCoShareStatementDetails(pt_id) getCoShareStatementDetails(pt_id)
} }
function getCoShareStatementDetails(pt_id){ function getCoShareStatementDetails(pt_id){
let url = '<?= base_url('util/getCoShareStatementDetails/') ?>' + pt_id; let url = '<?= base_url('util/getCoShareStatementDetails/') ?>' + pt_id;
@ -616,9 +622,9 @@ function getCoShareStatementDetails(pt_id){
console.error(xhr.responseText); console.error(xhr.responseText);
}); });
} }
function appendTableData(data) { function appendTableData(data) {
// Ensure the table body selector matches your table's structure // Ensure the table body selector matches your table's structure
let tableBody = $("#table_data"); let tableBody = $("#table_data");
@ -640,7 +646,7 @@ function appendTableData(data) {
`; `;
tableBody.append(tableRow); tableBody.append(tableRow);
}); });
} }
</script> </script>

View File

@ -1,9 +1,9 @@
<style> <style>
</style> </style>
<div class="container-fluid-min"> <div class="container-fluid-min">
<div class="col-12" id="bds_filter"> <div class="col-12" id="bds_filter">
<div class="card-body"> <div class="card-body">
<div id="accordion" class="mb-3"> <div id="accordion" class="mb-3">
@ -149,11 +149,11 @@
<div id="file_list"> <div id="file_list">
<?php include('report_bds.php'); ?> <?php include('report_bds.php'); ?>
</div> </div>
</div> </div>
<script> <script>
let client_list = []; let client_list = [];
let branch_list = []; let branch_list = [];
let policy_list = []; let policy_list = [];
@ -559,4 +559,4 @@
} }
} }
</script> </script>