412 lines
18 KiB
PHP
412 lines
18 KiB
PHP
|
||
<!-- modal content -->
|
||
<div id="con-close-modal" class="modal fade app-font-family" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static">
|
||
<div class="modal-dialog modal-dialog-centered modal-lg" <?= !isset($CD_Master_Data) ? 'style="max-width: 35% !important; margin:5px auto!important;"' : '' ?>>
|
||
<div class="modal-content">
|
||
<div class="modal-header">
|
||
<h4 class="modal-title" id="title">Add Opening Amount</h4>
|
||
<button type="button" class="close" data-dismiss="modal" aria-hidden="true" onclick="resetCdMasterFormModal()">×</button>
|
||
</div>
|
||
|
||
<div class="modal-body">
|
||
<div class="">
|
||
<form role="form" class="parsley-examples" id="CDMasterForm" enctype="multipart/form-data" data-parsley-validate>
|
||
<input type="hidden" name="PrimaryKey" id="CD_Master_ID" />
|
||
<div class="form-group">
|
||
|
||
<div class="form-row">
|
||
<div class="form-group col-md-6">
|
||
<label for="emp_code">Client<span class="text-danger">*</span></label>
|
||
<select class="form-control <?= !isset($CD_Master_Data) ? 'readonly-select' : '' ?>" id="cd_client_id" name="client_id" required>
|
||
<option value="" >Select Client</option>
|
||
<?php foreach($clients as $value) {
|
||
if(isset($client['id']) && $value['id'] == $client['id']){
|
||
$client_select = "selected";
|
||
}else{
|
||
$client_select = "";
|
||
}
|
||
?>
|
||
|
||
<option value="<?= $value['id'] ?>" <?= $client_select ?>><?= $value['client_name'] ?></option>
|
||
<?php } ?>
|
||
</select>
|
||
</div>
|
||
|
||
<div class="form-group col-md-6">
|
||
<label for="profile">Insurer<span class="text-danger">*</span></label>
|
||
<select class="form-control <?= !isset($CD_Master_Data) ? 'readonly-select' : '' ?>" id="insurer_id_for_cd" name="insurer_id" <?= isset($CD_Master_Data) ? 'onchange="filterInsurerBranch(this)"' : '' ?> required>
|
||
<option value="">Select Insurer</option>
|
||
<?php foreach($insurers as $value) { ?>
|
||
<option value="<?= $value['id'] ?>"><?= $value['name'] ?></option>
|
||
<?php } ?>
|
||
</select>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="form-row">
|
||
<div class="form-group col-md-6">
|
||
<label for="insurer_branch_id">Insurer Branch<span class="text-danger">*</span></label>
|
||
<select class="form-control <?= !isset($CD_Master_Data) ? 'readonly-select' : '' ?>" id="insurer_branch_id" name="insurer_branch_id" onchange="checkDuplicateCdAccount(this)" required>
|
||
<option value="">Select Insurer Branch</option>
|
||
<?php if(isset($insurer_branch) && !empty($insurer_branch))
|
||
{ foreach($insurer_branch as $branch) { ?>
|
||
<option data-insurer="<?= $branch['insurer_id'] ?>" value="<?= $branch['id'] ?>"><?= $branch['branch_name'] ?></option>
|
||
<?php } } ?>
|
||
</select>
|
||
</div>
|
||
|
||
<div class="form-group col-md-6">
|
||
<label for="email">Opening Date<span class="text-danger">*</span></label>
|
||
<div class="input-icon">
|
||
<input type="text" class="form-control" name="opening_date" id="opening_date" required>
|
||
<i class="mdi mdi-calendar-blank-outline additional-icon"></i>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="form-row">
|
||
<div class="form-group col-md-6">
|
||
<label for="mobile">CD Account Number<span class="text-danger">*</span></label>
|
||
<input type="text" class="form-control" id="cd_ac_no_for_cd_master" name="cd_ac_no"
|
||
required
|
||
data-parsley-pattern="^[a-zA-Z0-9\/_-]+$"
|
||
data-parsley-pattern-message="Only letters, numbers, /, -, and _ are allowed."
|
||
data-parsley-trigger="keyup">
|
||
<small style="margin-left: 10px;font-size: 10px;"><span class="text-danger" id="cd_ac_no_for_cd_master_errorr"></span></small>
|
||
</div>
|
||
|
||
<div class="form-group col-md-6">
|
||
<label for="mobile">Opening Amount<span class="text-danger">*</span></label>
|
||
<input type="text" class="form-control" id="opening_bal" name="opening_bal"
|
||
required
|
||
data-parsley-type="number"
|
||
data-parsley-min="0"
|
||
data-parsley-type-message="Opening amount must be numeric."
|
||
data-parsley-min-message="Opening amount cannot be negative.">
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div id="cdButtonWrapper" class="form-group text-right m-b-0">
|
||
<button class="btn app-btn-outline-secondary mr-2 " type="button" class="close" data-dismiss="modal" aria-hidden="true" onclick="resetCdMasterFormModal()">Cancel</button>
|
||
<button type="submit" class="btn btn-primary waves-effect waves-light" id="cd_master_btn_Submit">Submit</button>
|
||
<!-- <button type="button" class="btn btn-secondry waves-effect waves-light mr-1" data-dismiss="modal" aria-hidden="true">Close</button> -->
|
||
</div>
|
||
</form>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<!-- /.modal -->
|
||
|
||
<script>
|
||
|
||
//checking and setting this is CD master page or not
|
||
var isCdMasterPage = <?php echo isset($CD_Master_Data) ? 'true' : 'false'; ?>;
|
||
console.log("isCdMasterPage", isCdMasterPage);
|
||
|
||
function formatCdOpeningDateForInput(inputDate) {
|
||
if (!inputDate || String(inputDate).trim() === '') {
|
||
return '';
|
||
}
|
||
var str = String(inputDate).trim();
|
||
var iso = str.match(/^(\d{4})-(\d{2})-(\d{2})/);
|
||
if (iso) {
|
||
return iso[3] + '/' + iso[2] + '/' + iso[1];
|
||
}
|
||
var dmy = str.match(/^(\d{1,2})[-\/](\d{1,2})[-\/](\d{4})$/);
|
||
if (dmy) {
|
||
var day = ('0' + dmy[1]).slice(-2);
|
||
var month = ('0' + dmy[2]).slice(-2);
|
||
return day + '/' + month + '/' + dmy[3];
|
||
}
|
||
return str;
|
||
}
|
||
|
||
function cdOpeningDateForSubmit(inputDate) {
|
||
var formatted = formatCdOpeningDateForInput(inputDate);
|
||
if (!formatted) {
|
||
return inputDate || '';
|
||
}
|
||
var parts = formatted.split('/');
|
||
return parts[0] + '-' + parts[1] + '-' + parts[2];
|
||
}
|
||
|
||
var openingDatePicker;
|
||
|
||
$(document).ready(function(){
|
||
|
||
openingDatePicker = flatpickr("#opening_date", {
|
||
dateFormat: "d/m/Y",
|
||
allowInput: false
|
||
});
|
||
|
||
$('#con-close-modal').on('shown.bs.modal', function() {
|
||
var val = $('#opening_date').val();
|
||
if (val) {
|
||
var formatted = formatCdOpeningDateForInput(val);
|
||
openingDatePicker.setDate(formatted, false);
|
||
}
|
||
});
|
||
|
||
if(isCdMasterPage == true){
|
||
$('#cd_client_id').select2();
|
||
$('#insurer_id_for_cd').select2();
|
||
$('#insurer_branch_id').select2();
|
||
}
|
||
})
|
||
|
||
$('#cd_ac_no_for_cd_master').keyup(function(){
|
||
console.log('key chnage detected');
|
||
var cd_ac_no = $(this).val();
|
||
console.log(cd_ac_no +'-'+cd_ac_no.length);
|
||
cd_ac_no = cd_ac_no.trim();
|
||
console.log(cd_ac_no +'-'+cd_ac_no.length);
|
||
|
||
$.ajax({
|
||
url: '<?php echo base_url('util/check_cd_ac_no/');?>'+cd_ac_no,
|
||
type: "GET",
|
||
dataType: 'json',
|
||
success: function (res) {
|
||
|
||
console.log(res)
|
||
if(res.status == true){
|
||
|
||
$('#cd_ac_no_for_cd_master_errorr').text(res.message);
|
||
// toastr.warning(res.message, 'Warning');
|
||
// $('#cd_ac_no').val('');
|
||
$('#cd_master_btn_Submit').prop('disabled',true);
|
||
return;
|
||
}
|
||
$('#cd_master_btn_Submit').prop('disabled',false);
|
||
$('#cd_ac_no_for_cd_master_errorr').text('');
|
||
},
|
||
error: function (xhr, status, error) {
|
||
console.error(xhr.responseText);
|
||
console.error(status, error);
|
||
}
|
||
});
|
||
|
||
})
|
||
|
||
$('#CDMasterForm').submit(function(event) {
|
||
|
||
event.preventDefault();
|
||
console.log("submit CD Master Form Data function called");
|
||
|
||
var isValid = $('#CDMasterForm').parsley().validate();
|
||
|
||
if (!isValid) {
|
||
$('#CDMasterForm').find('input, select, textarea').each(function() {
|
||
if ($(this).parsley().isValid() === false && !$(this).val()) {
|
||
console.log('Empty field ID:', this.id);
|
||
}
|
||
});
|
||
console.log('Form is Empty', 'Warning');
|
||
return;
|
||
}
|
||
|
||
let formData = new FormData($('#CDMasterForm')[0]);
|
||
var openingDate = formData.get('opening_date');
|
||
if (openingDate) {
|
||
formData.set('opening_date', cdOpeningDateForSubmit(openingDate));
|
||
}
|
||
console.log("formData", formData);
|
||
|
||
let url = '<?= base_url('master/cash_deposite/create') ?>';
|
||
console.log("url", url);
|
||
|
||
$.ajax({
|
||
data: formData,
|
||
url: url,
|
||
type: "POST",
|
||
dataType: 'json',
|
||
processData: false,
|
||
contentType: false,
|
||
success: function(res) {
|
||
|
||
$('.loader').fadeOut();
|
||
$('.loader-mask').delay(350).fadeOut('slow');
|
||
|
||
console.log('CD Mater Form Submit Responce', res);
|
||
|
||
if (res.status == true) {
|
||
toastr.success(res.message, 'Success');
|
||
|
||
if(isCdMasterPage == false){
|
||
appendCDACNO(res.data, res.cd_master_data.id);
|
||
// appendCdAccNo(res.cd_master_data);
|
||
}
|
||
|
||
} else {
|
||
toastr.warning(res.message, 'Warning');
|
||
}
|
||
|
||
//this function for reset the form values after submitting the form or closing the form
|
||
resetCdMasterFormModal()
|
||
$('.close').click();
|
||
|
||
//if this page is CD mater form page than the page reload other wise not to reload
|
||
if(isCdMasterPage == true){
|
||
window.location.href = '<?= base_url('master/cash_deposite/list') ?>';
|
||
}
|
||
},
|
||
error: function(xhr, status, error) {
|
||
console.error(xhr.responseText);
|
||
console.error(status, error);
|
||
$('.loader').fadeOut();
|
||
$('.loader-mask').delay(350).fadeOut('slow');
|
||
if (xhr.status === 400) {
|
||
let response = JSON.parse(xhr.responseText);
|
||
let errorMessages = "";
|
||
let seenMessages = []; // Array to store unique messages
|
||
if (response.errors) {
|
||
$.each(response.errors, function (field, message) {
|
||
if (!seenMessages.includes(message)) {
|
||
errorMessages += `• ${message}<br>`;
|
||
seenMessages.push(message); // Mark this message as "seen"
|
||
}
|
||
});
|
||
toastr.error(errorMessages, 'Validation Error', { "allowHtml": true });
|
||
} else {
|
||
toastr.warning(response.message || 'Validation failed', 'Warning');
|
||
}
|
||
} else if (xhr.status === 403) {
|
||
let response = JSON.parse(xhr.responseText);
|
||
toastr.error(response.message, 'Security Policy');
|
||
} else if (xhr.status === 500) {
|
||
toastr.error('Something went wrong . Please try again later.', 'Server Error');
|
||
} else {
|
||
toastr.error('An unexpected error occurred. Please try again later.', 'Error');
|
||
}
|
||
toastr.error('An error occurred while adding the CD account number.', 'Error');
|
||
}
|
||
});
|
||
});
|
||
|
||
function resetCdMasterFormModal(){
|
||
|
||
console.log("resetCdMasterFormModal() function called");
|
||
|
||
$('#CD_Master_ID').val('');
|
||
$('#opening_date').val('');
|
||
$('#cd_ac_no_for_cd_master').val('');
|
||
$('#opening_bal').val('');
|
||
$('#CDMasterForm').parsley().reset();
|
||
$('#cd_ac_no_for_cd_master').prop("disabled", false);
|
||
$('#opening_bal').prop("disabled", false);
|
||
|
||
if(isCdMasterPage == true){
|
||
$('#cd_client_id').val('').select2();
|
||
$('#insurer_id_for_cd').val('').select2();
|
||
$('#insurer_branch_id').val('').select2();
|
||
|
||
$('#cd_client_id').prop("disabled", false);
|
||
$('#insurer_id_for_cd').prop("disabled", false);
|
||
$('#insurer_branch_id').prop("disabled", false);
|
||
|
||
$('#CDMasterForm')[0].reset();
|
||
}
|
||
}
|
||
|
||
function filterInsurerBranch(input) {
|
||
|
||
console.log("filterInsurerBranch function called");
|
||
|
||
let insurer_id = $(input).val();
|
||
console.log("insurer_id", insurer_id);
|
||
|
||
let branch_data = <?= isset($insurer_branch) && !empty($insurer_branch) ? json_encode($insurer_branch) : '[]' ?>;
|
||
console.log("branch_data", branch_data);
|
||
|
||
let filteredBranches = branch_data.filter(branch => branch.insurer_id == insurer_id);
|
||
console.log("filteredBranches", filteredBranches);
|
||
|
||
let $branchSelect = $('#insurer_branch_id');
|
||
$branchSelect.empty().append('<option value="">Select Insurer Branch</option>');
|
||
|
||
filteredBranches.forEach(branch => {
|
||
$branchSelect.append(
|
||
$('<option>', {
|
||
value: branch.id,
|
||
text: branch.branch_name
|
||
})
|
||
);
|
||
});
|
||
|
||
$branchSelect.val('').select2();
|
||
}
|
||
|
||
function showCdMasterAddModal(){
|
||
|
||
if(isCdMasterPage == true){
|
||
$('#client_id').val('');
|
||
$('#insurer_id_for_cd').val('');
|
||
$('#insurer_branch_id').val('');
|
||
}
|
||
|
||
$('#opening_date').val('');
|
||
$('#cd_ac_no_for_cd_master').val('');
|
||
// $('#CDMasterForm').attr('action', '<?php echo base_url('master/cash_deposite/create');?>');
|
||
$('#title').html('Add Opening Amount');
|
||
$('#cd_master_btn_Submit').html('Submit');
|
||
|
||
var myModal = new bootstrap.Modal(document.getElementById('con-close-modal'));
|
||
myModal.show();
|
||
}
|
||
|
||
function appendCdAccNo(data) {
|
||
|
||
console.log("appendCdAccNo function called :", data);
|
||
const option = $('<option>', {
|
||
value: data.id,
|
||
text: data.cd_ac_no,
|
||
selected: true // directly set selected in the object
|
||
});
|
||
|
||
console.log("option", option);
|
||
$('#cd_ac_no_for_cd_master').append(option);
|
||
}
|
||
|
||
function checkDuplicateCdAccount(){
|
||
|
||
let url = '<?= base_url('util/checkDuplicateCdAccount') ?>';
|
||
let client_id = $('#cd_client_id').val();
|
||
let insurer_id = $('#insurer_id_for_cd').val();
|
||
let insurer_branch_id = $('#insurer_branch_id').val();
|
||
console.log({client_id, insurer_id, insurer_branch_id});
|
||
|
||
// Data to send in the AJAX request
|
||
let requestData = {
|
||
client_id: client_id,
|
||
insurer_id: insurer_id,
|
||
insurer_branch_id: insurer_branch_id,
|
||
};
|
||
|
||
if(client_id != "" && insurer_id != "" && insurer_branch_id != ""){
|
||
// Send AJAX request
|
||
sendAjaxRequestForGlobal(url, 'GET', requestData, function(response) {
|
||
|
||
console.log('Data fetched successfully:', response);
|
||
|
||
if (response.status == true) {
|
||
console.log('No dublicate found');
|
||
} else {
|
||
|
||
$('#cd_client_id').val('').select2();
|
||
$('#insurer_id_for_cd').val('').select2();
|
||
$('#insurer_branch_id').val('').select2();
|
||
toastr.warning(response.message, 'Warning');
|
||
}
|
||
|
||
}, function(xhr, status, error) {
|
||
console.error('Error fetching data:', error);
|
||
console.error(xhr.responseText);
|
||
toastr.error('An error occurred while checking the CD amount.', 'Error');
|
||
});
|
||
}
|
||
}
|
||
|
||
</script>
|