MERGE_TEST_PLACEMENT_CHANGES

This commit is contained in:
Ubuntu 2026-06-12 10:51:59 +05:30
commit 2f4d8f3a6e
4 changed files with 227 additions and 3 deletions

View File

@ -447,6 +447,7 @@ $routes->group("/util", ["filter" => "authMVC"], function ($routes) {
$routes->get('downloadFullMemberDataExcelErrorFile/(:any)', 'LeadsController::downloadFullMemberDataExcelErrorFile/$1');
$routes->get('getMemberDataExcelFileErrors', 'LeadsController::getMemberDataExcelFileErrors');
$routes->post('savePlacementDataAndValidateMemberDataFile', 'LeadsController::savePlacementDataAndValidateMemberDataFile');
$routes->post('savePlacementDataWithoutMail', 'LeadsController::savePlacementDataWithoutMail');
$routes->get('checkMemberDataFileValidationStatus', 'LeadsController::checkMemberDataFileValidationStatus');
$routes->match(['get', 'post', 'delete'], 'nhanceBranchMaster', 'MasterController::nhanceBranchMaster');
$routes->match(['get', 'post', 'delete'], 'vehicleTypeMaster', 'MasterController::vehicleTypeMaster');

View File

@ -8326,6 +8326,105 @@ class LeadsController extends BaseController
}
}
public function savePlacementDataWithoutMail()
{
try {
$params = $this->request->getPost();
if (empty($params['lead_id'])) {
return $this->respond([
'status' => false,
'code' => 400,
'message' => 'Opportunity ID is required',
], 400);
}
$lead_id = $params['lead_id'];
$lead_data = $this->leadsModel->where('id', $lead_id)->first();
if (! $lead_data) {
return $this->respond([
'status' => false,
'code' => 404,
'message' => 'Lead not found',
], 404);
}
$data = [
'placement_date' => ! empty($params['placement_date']) ? change_date_format($params['placement_date']) : null,
'payment_date' => ! empty($params['payment_date']) ? change_date_format($params['payment_date']) : null,
'utr_no' => $params['utr_no'] ?? null,
'is_cd' => $params['is_cd'] ?? null,
'premium_amount' => $params['premium_amount'] ?? null,
'total_amount' => $params['total_amount'] ?? null,
'cd_amount' => $params['cd_amount'] ?? null,
'no_of_installment' => $params['no_of_installment'] ?? null,
'is_installment' => $params['is_installment'] ?? null,
'agreed_percentage' => $params['agreed_percentage'] ?? null,
];
if (! empty($params['acm_pk'])) {
$data['acm_id'] = $params['acm_pk'];
}
if (! empty($params['policy_start_date'])) {
$converted_start = change_date_format($params['policy_start_date']);
if ($converted_start !== $lead_data['policy_start_date']) {
$data['policy_start_date'] = $converted_start;
}
}
if (! empty($params['policy_end_date'])) {
$converted_end = change_date_format($params['policy_end_date']);
if ($converted_end !== $lead_data['policy_end_date']) {
$data['policy_end_date'] = $converted_end;
}
}
if (! empty($params['tpa_id']) && strpos($params['tpa_id'], '-') !== false) {
list($tpaBranchId, $tpaId) = explode('-', $params['tpa_id']);
$data['tpa_branch_id'] = $tpaBranchId;
$data['tpa_id'] = $tpaId;
}
$this->leadsModel->update($lead_id, $data);
if (! empty($params['installments'])) {
$installments = json_decode($params['installments'], true);
if (is_array($installments) && ! empty($installments)) {
foreach ($installments as $installment) {
$installment['payment_date'] = ! empty($installment['payment_date']) && strtotime($installment['payment_date'])
? date('Y-m-d', strtotime($installment['payment_date']))
: null;
$installment['lead_id'] = $lead_id;
if (! empty($installment['id'])) {
$this->leadInstallmentPaymentDetails->update($installment['id'], $installment);
} else {
$this->leadInstallmentPaymentDetails->insert($installment);
}
}
}
}
return $this->respond([
'status' => true,
'code' => 200,
'message' => 'Placement data saved successfully',
'lead_id' => $lead_id,
], 200);
} catch (\Exception $e) {
return $this->respond([
'status' => false,
'code' => 500,
'message' => 'Error while saving placement data',
'error' => $e->getMessage(),
], 500);
}
}
public function checkMemberDataFileValidationStatus()
{
$lead_id = $this->request->getVar('lead_id');

View File

@ -115,6 +115,21 @@ class BdsPlacementModel extends Model
return $data;
}
private function addBusinessDays(int $days, ?string $fromDate = null): string
{
$date = new \DateTime($fromDate ?? 'today');
$added = 0;
while ($added < $days) {
$date->modify('+1 day');
if ((int) $date->format('N') < 6) {
$added++;
}
}
return $date->format('Y-m-d');
}
public function getLeadInstallmentDetails()
{
$heads = $this->db->table('user_profiles')
@ -139,7 +154,7 @@ class BdsPlacementModel extends Model
->join("client_policy cp", "cp.id = leads.source_policy_id", "left")
->where("lipd.is_active", 1)
->where("lipd.utr_no IS NULL")
->where("lipd.payment_date", date('Y-m-d', strtotime('+15 days')));
->where("lipd.payment_date", $this->addBusinessDays(5));
$data = $builder->get()->getResultArray();

View File

@ -962,8 +962,14 @@
<div id="installment_form_row">
<?= isset($lead_data['is_installment']) && $lead_data['is_installment'] == 1 && isset($lead_data['installment_data']) && !empty($lead_data['installment_data']) ? $lead_data['installment_data'] : '' ?>
</div>
<div id="placement_mail_section">
<hr>
<div class="form-group text-right m-b-0" id="save_placement_btn">
<button type="button" class="btn btn-success" onclick="savePlacementDataWithoutMail()">Save</button>
</div>
<div class="form-row">
<div class="form-group col-md-6">
@ -1018,6 +1024,7 @@
</div>
</div>
<hr>
<div class="form-row">
<div class="form-group col-md-12">
@ -1026,8 +1033,6 @@
</div>
</div>
</div>
<br>
<h4>Attachments Files</h4>
<hr>
@ -1037,6 +1042,7 @@
<?php echo isset($attachment_html) && !empty($attachment_html) ? $attachment_html : ''; ?>
</div>
</div>
</div>
<div class="form-group text-right m-b-0" id="send_mail_btn">
<button type="submit" class="btn btn-primary" onclick="constructURL(3)">Send Mail</button>
@ -7560,6 +7566,107 @@ function appendMultiFileData(data) {
}
}
function constructPlacementDataPayload() {
var lead_id = $('#lead_id').val();
let placement_date = $('#placement_date').val();
let policy_end_date = $('#policy_end_date').val();
let policy_start_date = $('#policy_start_date').val();
let payment_date = $('#payment_date').val();
let is_cd = $("#is_cd_switch").is(":checked") ? 1 : 0;
let utr_no = $('#utr_no').val();
let premium_amount = $('#premium_amount').val();
let agreed_percentage = $('#agreed_percentage').val();
let total_amount = $('#total_amount').val();
let cd_amount = $('#cd_amount').val();
let no_of_installment = $('#no_of_installment').val();
let tpa_id = $('#tpa_id').val();
let acm_pk = $('#acm_id option:selected').data('id');
let is_installment = $("#is_installment_switch").is(":checked") ? 1 : 0;
if (!policy_start_date) {
toastr.warning('Policy Start Date is required.', 'Warning');
$('#policy_start_date').focus();
return false;
}
if (!policy_end_date) {
toastr.warning('Policy End Date is required.', 'Warning');
$('#policy_end_date').focus();
return false;
}
let installments = [];
$('#installment_form_row .form-row').each(function () {
let installment_amount = $(this).find('input[name="installment_amount[]"]').val();
let installment_payment_date = $(this).find('input[name="payment_date[]"]').val();
let installment_utr_no = $(this).find('input[name="utr_no[]"]').val();
let id = $(this).find('input[name="installment_primary_key[]"]').val();
let obj = {
lead_id: lead_id,
installment_amount: installment_amount,
payment_date: installment_payment_date,
utr_no: installment_utr_no
};
if (id != undefined && id != null && id != '') {
obj.id = id;
}
installments.push(obj);
});
return {
lead_id: lead_id,
placement_date: placement_date,
payment_date: payment_date,
policy_end_date: policy_end_date,
policy_start_date: policy_start_date,
is_cd: is_cd,
utr_no: utr_no,
premium_amount: premium_amount,
total_amount: total_amount,
cd_amount: cd_amount,
no_of_installment: no_of_installment,
is_installment: is_installment,
tpa_id: tpa_id,
acm_pk: acm_pk,
agreed_percentage: agreed_percentage,
installments: JSON.stringify(installments),
};
}
function savePlacementDataWithoutMail() {
let url = '<?= base_url('util/savePlacementDataWithoutMail') ?>';
let requestData = constructPlacementDataPayload();
if (requestData === false) {
return false;
}
$('.loader').fadeIn();
$('.loader-mask').fadeIn();
sendAjaxRequestForGlobal(url, 'POST', requestData, function(res) {
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
if (res.status == true) {
toastr.success(res.message, 'Success');
$('.close').click();
} else {
toastr.warning(res.message || 'Failed to save placement data', 'Warning');
}
}, function(xhr, status, error) {
$('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow');
console.error('Error saving placement data:', error);
console.error(xhr.responseText);
toastr.error('An error occurred while saving placement data.', 'Error');
});
}
function savePlacementDataAndValidateMemberDataFile(){
let url = '<?= base_url('util/savePlacementDataAndValidateMemberDataFile') ?>';
@ -7719,6 +7826,8 @@ function appendMultiFileData(data) {
}
function toggleButtons(status) {
$("#save_placement_btn").show();
if (status === "failed") {
$("#send_mail_btn").hide();
$("#validate_file_btn").show();