414 lines
14 KiB
JavaScript
414 lines
14 KiB
JavaScript
"use strict";
|
|
|
|
// Toggle extra input fields in the "Add New Bank" modal
|
|
$(".more-field-btn").on("click", function () {
|
|
const $extraFields = $(".extra-fields");
|
|
const $toggleBtn = $(this);
|
|
|
|
if ($extraFields.hasClass("hidden-fields")) {
|
|
$extraFields.removeClass("hidden-fields");
|
|
$toggleBtn.text("- Hide fields");
|
|
} else {
|
|
$extraFields.addClass("hidden-fields");
|
|
$toggleBtn.text("+ Add more fields");
|
|
}
|
|
});
|
|
|
|
/** Dynamically Bank Transaction Modal Open start */
|
|
// Fetch banks
|
|
function fetchBanks(callback) {
|
|
var url = $('#get_banks').val();
|
|
$.get(url, function(data) {
|
|
var options = '<option value="">Select one</option>';
|
|
data.forEach(function(bank) {
|
|
options += `<option value="${bank.id}">${bank.name}</option>`;
|
|
});
|
|
callback(options);
|
|
});
|
|
}
|
|
|
|
// Open modal dynamically & build From/To fields based on type
|
|
function openTransactionModal(type, transaction = null, route = null) {
|
|
var $modal = $('#bankTransactionModal');
|
|
var $title = $('#transactionModalTitle');
|
|
var $modalBody = $modal.find('.modal-body .row');
|
|
var $form = $modal.find('form');
|
|
|
|
// Remove old dynamic fields
|
|
$modalBody.find('.dynamic-field').remove();
|
|
|
|
// transaction_type input field
|
|
$modal.find('input[name="transaction_type"]').remove();
|
|
$form.append(`<input type="hidden" name="transaction_type" value="${type}">`);
|
|
|
|
// Set form action & method
|
|
if (transaction && route) {
|
|
// Edit mode
|
|
$form.attr('action', route);
|
|
if ($form.find('input[name="_method"]').length === 0) {
|
|
$form.append('<input type="hidden" name="_method" value="PUT">');
|
|
} else {
|
|
$form.find('input[name="_method"]').val('PUT');
|
|
}
|
|
} else {
|
|
// Create mode
|
|
$form.attr('action', route);
|
|
$form.find('input[name="_method"]').remove();
|
|
}
|
|
|
|
// Fetch banks and build fields
|
|
fetchBanks(function(options){
|
|
var content = '';
|
|
var titleText = '';
|
|
|
|
if (type === 'bank_to_bank') {
|
|
titleText = 'Bank to Bank Transfer';
|
|
content = `
|
|
<div class="col-lg-6 mb-2 dynamic-field">
|
|
<label>From</label>
|
|
<select name="from" class="form-control table-select w-100 from" required>${options}</select>
|
|
</div>
|
|
<div class="col-lg-6 mb-2 dynamic-field">
|
|
<label>To</label>
|
|
<select name="to" class="form-control table-select w-100 to" required>${options}</select>
|
|
</div>`;
|
|
}
|
|
|
|
if (type === 'bank_to_cash') {
|
|
titleText = 'Bank to Cash Transfer';
|
|
content = `
|
|
<div class="col-lg-6 mb-2 dynamic-field">
|
|
<label>From</label>
|
|
<select name="from" class="form-control table-select w-100 from" required>${options}</select>
|
|
</div>
|
|
<div class="col-lg-6 mb-2 dynamic-field">
|
|
<label>To</label>
|
|
<input type="text" readonly value="Cash" class="form-control to">
|
|
</div>`;
|
|
}
|
|
|
|
if (type === 'adjust_bank') {
|
|
titleText = 'Adjust Bank Balance';
|
|
content = `
|
|
<div class="col-lg-6 mb-2 dynamic-field">
|
|
<label>Account Name</label>
|
|
<select name="from" class="form-control table-select w-100 from" required>${options}</select>
|
|
</div>
|
|
<div class="col-lg-6 mb-2 dynamic-field">
|
|
<label>Type</label>
|
|
<select name="type" class="form-control table-select w-100 type" required>
|
|
<option value="credit">Increase balance</option>
|
|
<option value="debit">Decrease balance</option>
|
|
</select>
|
|
</div>`;
|
|
}
|
|
|
|
if (type === 'cash_to_bank') {
|
|
titleText = 'Cash To Bank Transfer';
|
|
content = `
|
|
<div class="col-lg-6 mb-2 dynamic-field">
|
|
<label>From</label>
|
|
<input type="text" readonly name="from" value="Cash" class="form-control from">
|
|
</div>
|
|
<div class="col-lg-6 mb-2 dynamic-field">
|
|
<label>To</label>
|
|
<select name="to" class="form-control table-select w-100 to" required>${options}</select>
|
|
</div>`;
|
|
}
|
|
|
|
if (type === 'adjust_cash') {
|
|
titleText = 'Adjust Cash Balance';
|
|
|
|
var creditChecked = transaction && transaction.type === 'credit' ? 'checked' : '';
|
|
var debitChecked = transaction && transaction.type === 'debit' ? 'checked' : '';
|
|
|
|
content = `
|
|
<div class="col-lg-12 mb-3 dynamic-field">
|
|
<div class="form-check">
|
|
<input class="form-check-input" type="radio" name="type" id="addCash" value="credit" ${creditChecked}>
|
|
<label class="form-check-label cash-label" for="addCash">
|
|
Add Cash
|
|
</label>
|
|
</div>
|
|
<div class="form-check">
|
|
<input class="form-check-input" type="radio" name="type" id="reduceCash" value="debit" ${debitChecked}>
|
|
<label class="form-check-label cash-label" for="reduceCash">
|
|
Reduce Cash
|
|
</label>
|
|
</div>
|
|
</div>`;
|
|
}
|
|
|
|
// Insert dynamic fields
|
|
$modalBody.prepend(content);
|
|
|
|
// Set modal title
|
|
$title.text(titleText);
|
|
|
|
if (transaction) {
|
|
$modal.find('.from').val(transaction.from);
|
|
$modal.find('.type').val(transaction.type);
|
|
$modal.find('.amount').val(transaction.amount);
|
|
$modal.find('.date').val(transaction.date);
|
|
$modal.find('.note').val(transaction.note);
|
|
|
|
// Special handling for To field
|
|
if (type === 'bank_to_cash') {
|
|
$modal.find('.to').val('Cash');
|
|
} else if (type === 'cash_to_bank') {
|
|
$modal.find('.to').val(transaction.to);
|
|
} else {
|
|
$modal.find('.to').val(transaction.to);
|
|
}
|
|
|
|
if(transaction.image) {
|
|
$('#customPreviewImg').attr('src', transaction.image).show();
|
|
$('#customUploadContent').hide();
|
|
} else {
|
|
$('#customPreviewImg').hide();
|
|
$('#customUploadContent').show();
|
|
}
|
|
}
|
|
|
|
// Show modal
|
|
new bootstrap.Modal($modal[0]).show();
|
|
});
|
|
}
|
|
|
|
// Create buttons
|
|
$('#bank_to_bank, #bank_to_cash, #adjust_bank, #cash_to_bank, #adjust_cash').on('click', function() {
|
|
var type = this.id;
|
|
var route = $(this).data('route');
|
|
|
|
openTransactionModal(type, null, route);
|
|
});
|
|
|
|
// Edit buttons
|
|
$(document).on('click', '.edit-transaction', function() {
|
|
var transactionType = $(this).data('transaction_type');
|
|
var transaction = {
|
|
amount: $(this).data('amount'),
|
|
date: $(this).data('date'),
|
|
note: $(this).data('note'),
|
|
type: $(this).data('type'),
|
|
image: $(this).data('image')
|
|
};
|
|
|
|
// handling for cash transactions
|
|
if(transactionType === 'cash_to_bank') {
|
|
transaction.from = 'Cash';
|
|
transaction.to = $(this).data('to'); // bank id
|
|
} else if(transactionType === 'adjust_cash') {
|
|
transaction.type = $(this).data('type'); // credit/debit
|
|
} else {
|
|
// bank transactions
|
|
transaction.from = $(this).data('from');
|
|
transaction.to = $(this).data('to');
|
|
}
|
|
|
|
var route = $(this).data('route');
|
|
|
|
openTransactionModal(transactionType, transaction, route);
|
|
});
|
|
|
|
/** Dynamically Bank Transaction Modal Open end */
|
|
|
|
// Cheque transfer start
|
|
$(document).on("click", ".cheque-transfer-btn", function () {
|
|
var received_from = $(this).data("received-from");
|
|
var cheque_amount = $(this).data("cheque-amount");
|
|
var cheque_no = $(this).data("cheque-no");
|
|
var cheque_date = $(this).data("cheque-date");
|
|
var ref_no = $(this).data("ref-no");
|
|
var transaction_id = $(this).data("transaction-id");
|
|
|
|
$("#received_from").text(received_from);
|
|
$("#cheque_amount").text(cheque_amount);
|
|
$("#cheque_no").text(cheque_no);
|
|
$("#cheque_date").text(cheque_date);
|
|
$("#ref_no").text(ref_no);
|
|
$("#deposit_transaction_id").val(transaction_id);
|
|
});
|
|
// Cheque transfer end
|
|
|
|
// When clicking Re-Open button
|
|
$(document).on("click", ".reopen-btn", function () {
|
|
|
|
let transaction_id = $(this).data("transaction-id");
|
|
|
|
$("#reopen_transaction_id").val(transaction_id);
|
|
|
|
let $modalEl = $("#reopen");
|
|
let modal = new bootstrap.Modal($modalEl[0]);
|
|
modal.show();
|
|
});
|
|
|
|
// Bank Accounts Img upload ----------->
|
|
// Bank Accounts Img upload ----------->
|
|
$(document).ready(function () {
|
|
const $fileInput = $("#customFileInput");
|
|
const $previewImg = $("#customPreviewImg");
|
|
const $content = $("#customUploadContent");
|
|
|
|
$fileInput.on("change", function () {
|
|
const file = this.files[0];
|
|
if (file) {
|
|
const reader = new FileReader();
|
|
reader.onload = function (e) {
|
|
$previewImg.attr("src", e.target.result).show();
|
|
$content.hide();
|
|
};
|
|
reader.readAsDataURL(file);
|
|
}
|
|
});
|
|
});
|
|
|
|
// Bank edit start
|
|
$(document).on("click", ".bank-edit-btn", function () {
|
|
var url = $(this).data("url");
|
|
var name = $(this).data("name");
|
|
var opening_balance = $(this).data("opening-balance");
|
|
var opening_date = $(this).data("opening-date");
|
|
var account_number = $(this).data("account-number");
|
|
var routing_number = $(this).data("routing-number");
|
|
var upi_id = $(this).data("upi-id");
|
|
var bank_name = $(this).data("bank-name");
|
|
var branch_name = $(this).data("branch-name");
|
|
var account_holder = $(this).data("account-holder");
|
|
var show_in_invoice = $(this).data("show-in-invoice");
|
|
|
|
$("#name").val(name);
|
|
$("#opening_balance").val(opening_balance);
|
|
$("#opening_date").val(opening_date);
|
|
$("#account_number").val(account_number);
|
|
$("#routing_number").val(routing_number);
|
|
$("#upi_id").val(upi_id);
|
|
$("#bank_name").val(bank_name);
|
|
$("#branch_name").val(branch_name);
|
|
$("#account_holder").val(account_holder);
|
|
$("#show_in_invoice").prop('checked', show_in_invoice === 1);
|
|
|
|
$(".bankUpdateForm").attr("action", url);
|
|
});
|
|
// Bank edit end
|
|
|
|
// Bank view start
|
|
$(document).on("click", ".bank-view-btn", function () {
|
|
var name = $(this).data("name");
|
|
var balance = $(this).data("balance");
|
|
var opening_date = $(this).data("opening-date");
|
|
var account_number = $(this).data("account-number");
|
|
var bank_name = $(this).data("bank-name");
|
|
var branch_name = $(this).data("branch-name");
|
|
var routing_number = $(this).data("routing-number");
|
|
var upi_id = $(this).data("upi-id");
|
|
var account_holder = $(this).data("account-holder");
|
|
var show_in_invoice = $(this).data("show-in-invoice");
|
|
|
|
$("#view_account_name").text(name);
|
|
$("#view_balance").text(balance);
|
|
$("#view_opening_date").text(opening_date);
|
|
$("#view_account_number").text(account_number);
|
|
$("#view_bank_name").text(bank_name);
|
|
$("#view_branch_name").text(branch_name);
|
|
$("#view_routing_number").text(routing_number);
|
|
$("#view_upi_id").text(upi_id);
|
|
$("#view_account_holder").text(account_holder);
|
|
$("#view_show_in_invoice").text(show_in_invoice == 1 ? 'Yes' : 'No');
|
|
});
|
|
// Bank view end
|
|
|
|
// Bank Delete Start
|
|
$(document).on("click", ".delete-bank-action", function (event) {
|
|
event.preventDefault();
|
|
|
|
let url = $(this).data("action") ?? $(this).attr("href");
|
|
let method = $(this).data("method") ?? "DELETE";
|
|
let icon = $(this).data("icon") ?? "fas fa-trash-alt";
|
|
|
|
$.confirm({
|
|
title: "Are you sure?",
|
|
icon: icon,
|
|
theme: "modern",
|
|
closeIcon: true,
|
|
animation: "scale",
|
|
type: "red",
|
|
buttons: {
|
|
confirm: {
|
|
btnClass: "btn-red",
|
|
action: function () {
|
|
$.ajax({
|
|
type: method,
|
|
url: url,
|
|
success: function (response) {
|
|
if (response === false) {
|
|
$("#warning-modal").modal("show");
|
|
}
|
|
else if (response.redirect) {
|
|
window.sessionStorage.hasPreviousMessage = true;
|
|
window.sessionStorage.previousMessage =
|
|
response.message ?? null;
|
|
location.href = response.redirect;
|
|
}
|
|
else {
|
|
Notify("success", response.message || response);
|
|
}
|
|
},
|
|
error: function (xhr) {
|
|
Notify(
|
|
"error",
|
|
xhr.responseJSON?.message || "Something went wrong!"
|
|
);
|
|
},
|
|
});
|
|
},
|
|
},
|
|
close: {
|
|
action: function () {
|
|
this.buttons.close.hide();
|
|
},
|
|
},
|
|
},
|
|
});
|
|
});
|
|
// Bank Delete Start
|
|
|
|
// Transaction view start
|
|
$(document).on("click", ".transaction-view-btn", function () {
|
|
var img = $(this).data("img");
|
|
var user = $(this).data("user");
|
|
var transaction_type = $(this).data("transaction-type");
|
|
var amount = $(this).data("amount");
|
|
var date = $(this).data("date");
|
|
var note = $(this).data("note");
|
|
|
|
$("#view_img").attr("src", img);
|
|
$("#view_user").text(user);
|
|
$("#view_transaction_type").text(transaction_type);
|
|
$("#view_amount").text(amount);
|
|
$("#view_date").text(date);
|
|
$("#view_note").text(note);
|
|
});
|
|
// Transaction view end
|
|
|
|
// Cash Transaction view start
|
|
$(document).on("click", ".cash-view-btn", function () {
|
|
var img = $(this).data("img");
|
|
var user = $(this).data("user");
|
|
var transaction_type = $(this).data("transaction-type");
|
|
var platform = $(this).data("platform");
|
|
var amount = $(this).data("amount");
|
|
var note = $(this).data("note");
|
|
var date = $(this).data("date");
|
|
|
|
$("#view_img").attr("src", img);
|
|
$("#view_user").text(user);
|
|
$("#view_transaction_type").text(transaction_type);
|
|
$("#view_platform").text(platform);
|
|
$("#view_amount").text(amount);
|
|
$("#view_note").text(note);
|
|
$("#view_date").text(date);
|
|
});
|
|
// Cash Transaction view end
|
|
|