FEAT_GPA_AUTO_TSA_FIX_DEMOGRAPHY : RV

This commit is contained in:
VENKATESHWARAN 2025-05-13 18:49:03 +05:30
parent 0e4e24fd7a
commit 239c55a7e5
7 changed files with 127 additions and 4 deletions

View File

@ -4685,7 +4685,7 @@ class ClientController extends AdminController
// ------------- LEADS CONTROLLER ----------------------------------------------------------
// $LeadsController = new LeadsController();
$LeadsController = new LeadsController();
// $RFQModel = new RFQModel();
// $data = $RFQModel->where('is_active', 1)->where('lead_id', 40)->first();
@ -4699,6 +4699,8 @@ class ClientController extends AdminController
// $returndata = $LeadsController->convertQCRJsonToPolicyTerms($jsonArray, $policy_type, $proposel_name, $insurer_name);
// dd($returndata);
$LeadsController->handleMemberDataGPATotalSumInsurerFromExcel(['lead_id' => 169]);
// -----------BDS REPORT CONTROLLER---------------------------------------------------------------------------------
// $BDSReportController = new BDSReportController();

View File

@ -444,6 +444,8 @@ class EmployeeController extends AdminController
$filePath = ROOTPATH . 'public/sample_excel/enrollment.xlsx';
}else if ($actionType == 'missed_inception') {
$filePath = ROOTPATH . 'public/sample_excel/sample_inception.xls';
}else if ($actionType == 'member_data') {
$filePath = ROOTPATH . 'public/sample_excel/Sample_Member_Data.xlsx';
}
// Check if the file exists

View File

@ -712,6 +712,12 @@ class LeadsController extends BaseController
$subject = "{{CLIENT_NAME}} _ {{POLICY_TYPE}} _ {{RFQ_OR_QCR}} _ {{POLICY_YEAR}}";
}
if($lead_data['policy_type_id'] == 1){
$data['totalSumAssured'] = $this->handleMemberDataGPATotalSumInsurerFromExcel(['lead_id' => $id]);
}else{
$data['totalSumAssured'] = [];
}
$data['mail_content'] = $this->transformMailContent($lead_data, $mail_content, $data['page_name']);
$data['subject'] = $this->transformMailContent($lead_data, $subject, $data['page_name']);
@ -1762,7 +1768,7 @@ class LeadsController extends BaseController
['file_path' => WRITEPATH . 'uploads/lead_files/' . $lead_data['file_name'], 'sheets' => [0, 1]],
['file_path' => WRITEPATH . '/uploads/lead_files/' . $result['filename'], 'sheets' => []],
];
$outputPath = WRITEPATH . 'uploads/lead_files/Member_Data.xlsx';
$outputPath = WRITEPATH . 'uploads/lead_files/' .$lead_data['file_name'];
$result_merge = ExcelMergeHelper::mergeExcelFiles($filePaths, $outputPath);
if ($result_merge) {
// Call the delete function after the file is successfully created
@ -4077,4 +4083,71 @@ class LeadsController extends BaseController
return $attachments;
}
public function handleMemberDataGPATotalSumInsurerFromExcel($params)
{
$lead_id = $params['lead_id'];
$lead_data = $this->leadsModel->find($lead_id);
// dd($lead_data);
$file_name_with_path = WRITEPATH . "/uploads/lead_files/" . $lead_data['file_name'];
// dd($file_name_with_path);
if (!$lead_data) {
return ['status' => 'failed', 'message' => 'Lead data not found'];
}
if ($lead_data['file_name']) {
//check physical file
if (!file_exists($file_name_with_path)) {
$message = "Lead Physcial file not found";
$this->myLogger->logme('error', ($message . ' for file ' . $file_name_with_path));
return ['status' => 'failed', 'message' => 'no physical file'];
}
$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($file_name_with_path);
//get members data
$members_sheet = $spreadsheet->getSheet(0);
$highestRowAndColumn = $members_sheet->getHighestRowAndColumn();
// dd($highestRowAndColumn);
$uncleaned_members = $members_sheet->rangeToArray('A1:' . $highestRowAndColumn['column'] . $highestRowAndColumn['row']);
// dd($uncleaned_members);
$members = ExcelSanitizeHelper::sanitizeArrayData($uncleaned_members);
// dd($members);
// Check column headings
$members_heading = $members[0];
$available_col = [];
$lower_headers = array_map('strtolower', $members_heading);
foreach ($lower_headers as $index => $header) {
if (preg_match('/^sa\s*-\s*option\s*\d*$/i', $header)) {
$column_name = $members_heading[$index];
$sum = 0;
for ($i = 1; $i < count($members); $i++) {
$cell_raw = $members[$i][$index] ?? '';
$cell_clean = preg_replace('/[^0-9.\-]/', '', $cell_raw); // remove non-numeric chars
if ($cell_clean !== '' && is_numeric($cell_clean)) {
$sum += (float) $cell_clean;
}
}
$available_col[] = $sum;
}
}
// dd($available_col);
return $available_col;
}
return [];
}
}

View File

@ -346,14 +346,21 @@ if (isset($selected_lead_type)) {
let placeholder = isFirstField ? 'First file must be Demography.' : '';
let accept = isFirstField ? '.xls,.xlsx' : '';
if(selected_lead_form_type != 1){
placeholder = '';
accept = '';
}
let sample_dwn_link = "";
if(selected_lead_form_type == 1 && isFirstField == 1){
sample_dwn_link = '&nbsp;[ <a href="<?= base_url("util/download-excel/member_data"); ?>" id="excel_download" data-toggle="tooltip" data-placement="top" title="Download Sample Excel">Sample Excel</a> ]';
}
div.innerHTML = `
<div class="form-group col-md-5">
<label>Document Name<span class="text-danger"></span></label>
<label>Document Name ${sample_dwn_link}<span class="text-danger"></span></label>
<input type="text" class="form-control" name="docs_name_${increment}[]" placeholder="${placeholder}">
</div>
<div class="form-group col-md-5">

View File

@ -635,6 +635,7 @@
var user_role_id = <?= get_role_id(); ?>;
var jsonDataForHide = null;
var multi_file_data = [];
var totalSumAssuredData = [];
const editorConfig = {
buttons: [
@ -708,6 +709,9 @@
let qcr_count = <?= isset($qcr_count) ? $qcr_count : 0 ?>;
let question_json = <?= isset($question_json) ? json_encode($question_json) : 'null' ?>;
let policy_terms_json = <?= isset($policy_terms) ? json_encode($policy_terms) : 'null' ?>;
totalSumAssuredData = <?= isset($totalSumAssured) ? json_encode($totalSumAssured) : '[]' ?>;
console.log('totalSumAssuredData', totalSumAssuredData);
console.log('totalSumAssuredData.type', typeof totalSumAssuredData);
// console.log('policy_terms_json', policy_terms_json);
data = JSON.parse(data);
@ -1236,7 +1240,7 @@ function addSuggestionsToTable() {
particularsCell.innerText = details.display_values;
const columnCount = $("#rfqTable thead tr th").length;
console.log('columnCount' + columnCount);
// console.log('columnCount' + columnCount);
for (let i = 3; i < columnCount - 6; i++) {
@ -1333,8 +1337,43 @@ function addSuggestionsToTable() {
moveAddRowButton();
hideQCR();
isFormDataModified = false;
processTotalSumInsured(totalSumAssuredData)
}
function processTotalSumInsured(data) {
let values = [];
if (Array.isArray(data)) {
data.forEach((value, index) => {
console.log('total - value', value);
if (index !== 0) {
$('#addQuote').click();
}
});
values = data
} else if (typeof data === 'object' && data !== null) {
$.each(data, function(key, value) {
console.log('total - value', value);
if (key != 0) {
$('#addQuote').click();
}
});
values = Object.values(data)
} else {
console.log("Data is not iterable.");
return;
}
// Set values in td.editablecolumns in order
$('#totalSumInsured .editablecolumns').each(function(index) {
if (values[index] !== undefined) {
$(this).text(values[index]);
}
});
}
// Function to move add row button to last row
function moveAddRowButton() {

Binary file not shown.

Binary file not shown.