MERGE_TEST_BUG_FIXES
This commit is contained in:
commit
25870c8f92
@ -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([
|
||||
|
||||
@ -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());
|
||||
}
|
||||
|
||||
@ -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');
|
||||
|
||||
Loading…
Reference in New Issue
Block a user