MERGE_TEST_BUG_FIXES

This commit is contained in:
Ubuntu 2026-07-09 12:56:10 +05:30
commit 25870c8f92
3 changed files with 172 additions and 81 deletions

View File

@ -2147,6 +2147,59 @@ class LeadsController extends BaseController
return $result;
}
private function saveLeadInstallmentDetails(int $lead_id, $installments): array
{
if (is_string($installments)) {
$installments = json_decode($installments, true) ?? [];
}
if (! is_array($installments) || empty($installments)) {
return [];
}
$existingInstallments = $this->leadInstallmentPaymentDetails
->where('lead_id', $lead_id)
->where('is_active', 1)
->orderBy('id', 'ASC')
->findAll();
$savedInstallments = [];
foreach ($installments as $index => $installment) {
if (! is_array($installment)) {
continue;
}
$data = [
'lead_id' => $lead_id,
'installment_amount' => $installment['installment_amount'] ?? null,
'payment_date' => ! empty($installment['payment_date'])
? change_date_format($installment['payment_date'])
: null,
'utr_no' => $installment['utr_no'] ?? null,
];
$installmentId = ! empty($installment['id']) ? (int) $installment['id'] : null;
if (! $installmentId && isset($existingInstallments[$index]['id'])) {
$installmentId = (int) $existingInstallments[$index]['id'];
}
if ($installmentId) {
$this->leadInstallmentPaymentDetails->update($installmentId, $data);
$data['id'] = $installmentId;
} else {
$data['is_active'] = 1;
$newId = $this->leadInstallmentPaymentDetails->insert($data);
$data['id'] = $newId;
}
$savedInstallments[] = $data;
}
return $savedInstallments;
}
public function removeInstallments()
{
$id = $this->request->getGet('id');
@ -3811,21 +3864,7 @@ class LeadsController extends BaseController
$this->leadsModel->where('id', $lead_id)->set($data)->update();
if (isset($params['installments']) && ! empty($params['installments'])) {
$installment_data = json_decode($params['installments'], true);
if (! empty($installment_data)) {
foreach ($installment_data as $key => $value) {
// print_r($value);die
$value['payment_date'] = ! empty($value['payment_date'])
? change_date_format($value['payment_date'])
: null;
if (isset($value['id']) && ! empty($value['id'])) {
$this->leadInstallmentPaymentDetails->where('id', $value['id'])->set($value)->update();
} else {
$this->leadInstallmentPaymentDetails->insert($value);
}
}
}
$this->saveLeadInstallmentDetails((int) $lead_id, $params['installments']);
}
}
@ -8491,29 +8530,12 @@ class LeadsController extends BaseController
$this->myLogger->logme('error', "Lead updated successfully for ID: $lead_id");
// Save installment details
$savedInstallments = [];
if (! empty($params['installments'])) {
$installments = json_decode($params['installments'], true);
$this->myLogger->logme('error', "Installments data received: " . json_encode($installments));
if (is_array($installments) && ! empty($installments)) {
foreach ($installments as $installment) {
$installment['payment_date'] = ! empty($installment['payment_date'])
? change_date_format($installment['payment_date'])
: null;
$installment['lead_id'] = $lead_id;
if (! empty($installment['id'])) {
$this->leadInstallmentPaymentDetails->update($installment['id'], $installment);
$this->myLogger->logme('error', "Installment updated: " . json_encode($installment));
} else {
$this->leadInstallmentPaymentDetails->insert($installment);
$this->myLogger->logme('error', "Installment inserted: " . json_encode($installment));
}
}
}
$savedInstallments = $this->saveLeadInstallmentDetails((int) $lead_id, $params['installments']);
$this->myLogger->logme('error', 'Installments saved: ' . json_encode($savedInstallments));
} else {
$this->myLogger->logme('error', "No installments provided");
$this->myLogger->logme('error', 'No installments provided');
}
// Update lead file status to pending
@ -8526,12 +8548,13 @@ class LeadsController extends BaseController
$this->myLogger->logme('error', "--- savePlacementDataAndValidateMemberDataFile END (SUCCESS) ---");
return $this->respond([
'status' => true,
'code' => 200,
'message' => 'Placement data saved successfully. File being validated',
'lead_id' => $lead_id,
'data' => $data,
'params' => $params,
'status' => true,
'code' => 200,
'message' => 'Placement data saved successfully. File being validated',
'lead_id' => $lead_id,
'installments' => $savedInstallments,
'data' => $data,
'params' => $params,
], 200);
} catch (\Exception $e) {
@ -8614,31 +8637,17 @@ class LeadsController extends BaseController
$this->leadsModel->update($lead_id, $data);
$savedInstallments = [];
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'])
? change_date_format($installment['payment_date'])
: null;
$installment['lead_id'] = $lead_id;
if (! empty($installment['id'])) {
$this->leadInstallmentPaymentDetails->update($installment['id'], $installment);
} else {
$this->leadInstallmentPaymentDetails->insert($installment);
}
}
}
$savedInstallments = $this->saveLeadInstallmentDetails((int) $lead_id, $params['installments']);
}
return $this->respond([
'status' => true,
'code' => 200,
'message' => 'Placement data saved successfully',
'lead_id' => $lead_id,
'status' => true,
'code' => 200,
'message' => 'Placement data saved successfully',
'lead_id' => $lead_id,
'installments' => $savedInstallments,
], 200);
} catch (\Exception $e) {
return $this->respond([

View File

@ -5439,31 +5439,91 @@ class PolicyTransactionController extends BaseController
return ['status' => false, 'message' => 'No data found', 'response' => []];
}
$results = [];
$successCount = 0;
$failedCount = 0;
$skippedCount = 0;
foreach ($bdsInstallmentData as $installmentData) {
$installmentId = $installmentData['id'] ?? 'unknown';
$leadId = $installmentData['lead_id'] ?? 'unknown';
$mailData = $this->PrepareBDSMailData($installmentData);
$to_mail = $mailData['to_mail'];
$message = $mailData['message'];
$subject = $mailData['subject'];
try {
$mailData = $this->PrepareBDSMailData($installmentData);
$this->myLogger->logme("error", "Installment Pending for" . $subject);
if (empty($mailData) || empty($mailData['to_mail'])) {
$this->myLogger->logme(
'error',
"Installment {$installmentId} (lead {$leadId}): skipped — no valid recipient emails"
);
$skippedCount++;
$results[] = [
'installment_id' => $installmentId,
'lead_id' => $leadId,
'status' => 'skipped',
'message' => 'No valid recipient emails',
];
continue;
}
$common = ['mail_type' => 'installment_amount_due_remainder_mail'];
$to_mail = $mailData['to_mail'];
$message = $mailData['message'];
$subject = $mailData['subject'];
$res = MailHelper::send_email(['mail' => $to_mail, 'subject' => $subject, 'message' => $message, 'common' => $common]);
$this->myLogger->logme("error", "Installment Pending for " . $subject);
$res = json_decode($res);
$this->myLogger->logme('error', 'res: ' . json_encode($res));
$common = ['mail_type' => 'installment_amount_due_remainder_mail'];
if ($res->status == 'success') {
CLI::write("Mail sent successfully to " . count($to_mail) . " recipients");
return ['status' => true, 'message' => 'Mail sent successfully', 'response' => $res];
} else {
CLI::write("Mail sent failed to " . count($to_mail) . " recipients");
return ['status' => false, 'message' => 'Mail sent failed', 'response' => $res];
$res = MailHelper::send_email(['mail' => $to_mail, 'subject' => $subject, 'message' => $message, 'common' => $common]);
$res = json_decode($res);
$this->myLogger->logme(
'error',
"Installment {$installmentId} (lead {$leadId}) mail result: " . json_encode($res)
);
if ($res->status == 'success') {
$successCount++;
CLI::write("Mail sent successfully for installment {$installmentId} to " . count($to_mail) . " recipients");
$results[] = [
'installment_id' => $installmentId,
'lead_id' => $leadId,
'status' => 'success',
];
} else {
$failedCount++;
CLI::write("Mail failed for installment {$installmentId}");
$results[] = [
'installment_id' => $installmentId,
'lead_id' => $leadId,
'status' => 'failed',
'response' => $res,
];
}
} catch (Exception $e) {
$failedCount++;
$this->myLogger->logme(
'error',
"Installment {$installmentId} (lead {$leadId}) exception: " . $e->getMessage()
);
$results[] = [
'installment_id' => $installmentId,
'lead_id' => $leadId,
'status' => 'failed',
'message' => $e->getMessage(),
];
}
}
$totalProcessed = count($bdsInstallmentData);
$summaryMessage = "Processed {$totalProcessed} installment(s): {$successCount} sent, {$failedCount} failed, {$skippedCount} skipped";
return [
'status' => $successCount > 0,
'message' => $summaryMessage,
'response' => $results,
];
} catch (Exception $e) {
$this->myLogger->logme('error', 'Exception: ' . $e->getMessage() . 'Page: ' . $e->getFile() . ' Line: ' . $e->getLine());
}

View File

@ -7160,6 +7160,8 @@ function appendMultiFileData(data) {
function addInstallmentHTML() {
let html = `
<div class="form-row align-items-end">
<input type="hidden" name="installment_primary_key[]" value="">
<div class="form-group col-md-3">
<label for="installment_amount">Installment Amount</label>
<input type="text" class="form-control" name="installment_amount[]" placeholder="Enter Amount">
@ -7259,9 +7261,8 @@ function appendMultiFileData(data) {
console.log("Form row count:", row_count);
if (row_count === 1) {
// $installmentContainer.empty();
for (let index = 0; index < no_of_installments - 1; index++) {
if (row_count === 1 && no_of_installments > row_count) {
for (let index = 0; index < no_of_installments - row_count; index++) {
addInstallmentHTML();
}
} else if (no_of_installments === row_count) {
@ -7589,6 +7590,25 @@ function appendMultiFileData(data) {
}
}
function updateInstallmentPrimaryKeys(installments) {
if (!installments || !installments.length) {
return;
}
$('#installment_form_row .form-row').each(function(index) {
if (!installments[index] || !installments[index].id) {
return;
}
let $hidden = $(this).find('input[name="installment_primary_key[]"]');
if ($hidden.length === 0) {
$(this).prepend('<input type="hidden" name="installment_primary_key[]" value="' + installments[index].id + '">');
} else {
$hidden.val(installments[index].id);
}
});
}
function constructPlacementDataPayload() {
var lead_id = $('#lead_id').val();
let placement_date = $('#placement_date').val();
@ -7677,6 +7697,7 @@ function appendMultiFileData(data) {
if (res.status == true) {
toastr.success(res.message, 'Success');
updateInstallmentPrimaryKeys(res.installments);
$('.close').click();
} else {
toastr.warning(res.message || 'Failed to save placement data', 'Warning');
@ -7711,6 +7732,7 @@ function appendMultiFileData(data) {
if (res.status == true) {
toastr.success(res.message, 'Success');
updateInstallmentPrimaryKeys(res.installments);
checkMemberDataValidationStatus(res.lead_id)
} else {
toastr.warning(res.message, 'Warning');