Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
velz 2025-11-21 15:54:58 +05:30
commit 60dc7d2d0b
65 changed files with 1377 additions and 366 deletions

View File

@ -779,6 +779,8 @@ $routes->group('payout', function($routes) {
$routes->get('invoices', 'PayoutController::invoices'); $routes->get('invoices', 'PayoutController::invoices');
$routes->post('invoices/save', 'PayoutController::saveInvoice'); $routes->post('invoices/save', 'PayoutController::saveInvoice');
$routes->get('invoices/history', 'PayoutController::auditHistory'); $routes->get('invoices/history', 'PayoutController::auditHistory');
$routes->get('invoice/generate-number/(:num)', 'PayoutController::generateInvoiceNumberAjax/$1');
}); });
//PARTNER COMMISSION //PARTNER COMMISSION

View File

@ -30,7 +30,7 @@ class PayoutController extends BaseController
$this->payout_status = [ $this->payout_status = [
1 => "Pending", 1 => "Pending",
2 => "Complete", 2 => "Completed",
]; ];
$this->invoiceItemModel = new InvoiceItemModel(); $this->invoiceItemModel = new InvoiceItemModel();
@ -84,7 +84,7 @@ class PayoutController extends BaseController
// for list // for list
$data['payout_status'] = $this->payout_status; $data['payout_status'] = $this->payout_status;
$data['agent_list'] = $this->invoiceModel->agentList(); $data['agent_list'] = $this->invoiceModel->agentList();
$data['page_name'] = "Payout"; $data['page_name'] = "Invoices";
$payout_data['payout_list_data'] = $this->invoiceModel->invoiceList(); $payout_data['payout_list_data'] = $this->invoiceModel->invoiceList();
$data['payout_list'] = view('payout_list', $payout_data); $data['payout_list'] = view('payout_list', $payout_data);
@ -199,10 +199,10 @@ class PayoutController extends BaseController
$type = $this->request->getGet('type'); $type = $this->request->getGet('type');
$title = $type === 'add' ? 'Add Invoices' $title = $type === 'add' ? 'Add Payouts'
: ($type === 'edit' ? 'Edit Invoices' : ($type === 'edit' ? 'Edit Payouts'
: ($type === 'adjustment' ? 'Adjustment Invoices' : ($type === 'adjustment' ? 'Payouts Adjustment'
: 'Invoices')); : 'Payouts'));
$data['tab_name'] = $title; $data['tab_name'] = $title;
$data['page_name'] = $title; $data['page_name'] = $title;
@ -219,9 +219,9 @@ class PayoutController extends BaseController
//... Now Seperated edit and adjustment => 'policy_transaction_payouts' old file //... Now Seperated edit and adjustment => 'policy_transaction_payouts' old file
//... Reason : Due Datatable issues Export button Searching like that so seperated //... Reason : Due Datatable issues Export button Searching like that so seperated
if ($type === 'add') { if ($type === 'add') {
$invoiceNo = $this->generateInvoiceNumber(); // $invoiceNo = $this->generateInvoiceNumber();
$data['payouts'] = $this->invoiceModel->payoutList(1); $data['payouts'] = $this->invoiceModel->payoutList(1);
$data['invoice_number'] = $invoiceNo; // $data['invoice_number'] = $invoiceNo;
return $this->loadLayout('invoice_policy_mapping_add', $data); return $this->loadLayout('invoice_policy_mapping_add', $data);
} }
@ -230,6 +230,7 @@ class PayoutController extends BaseController
$invoice = $this->invoiceModel->where('id', $id)->first(); $invoice = $this->invoiceModel->where('id', $id)->first();
$data['freeze_edit'] = $this->auditHistory->where('table_name', 'partner_invoice')->where('pk', $id)->countAllResults(); $data['freeze_edit'] = $this->auditHistory->where('table_name', 'partner_invoice')->where('pk', $id)->countAllResults();
$agentId = $invoice['agent_id'] ?? null; $agentId = $invoice['agent_id'] ?? null;
$data['payouts'] = $this->invoiceModel->payoutList(2 ,$agentId,$id); $data['payouts'] = $this->invoiceModel->payoutList(2 ,$agentId,$id);
@ -246,6 +247,7 @@ class PayoutController extends BaseController
$data['invoice_number']= $invoice['invoice_no']; $data['invoice_number']= $invoice['invoice_no'];
$data['type'] = $type; $data['type'] = $type;
$data['payout_status'] = $invoice['payout_status'] ;
return $this->loadLayout('invoice_policy_mapping', $data); return $this->loadLayout('invoice_policy_mapping', $data);
@ -268,9 +270,18 @@ class PayoutController extends BaseController
//... ADD Part //... ADD Part
if (empty($id)) { if (empty($id)) {
$exists = $this->invoiceModel
->where('invoice_no', $json['invoice_no'])
->first();
if ($exists) {
$InvNum = $this->generateInvoiceNumber($json['agent_id']);
} else {
$InvNum = $json['invoice_no'];
}
$invoiceData = [ $invoiceData = [
'invoice_no' => $json['invoice_no'], 'invoice_no' => $InvNum,
'agent_id' => $json['agent_id'], 'agent_id' => $json['agent_id'],
'invoice_date' => $json['invoice_date'], 'invoice_date' => $json['invoice_date'],
'invoice_amount' => $json['invoice_amount'], 'invoice_amount' => $json['invoice_amount'],
@ -388,34 +399,69 @@ class PayoutController extends BaseController
//... Payout-invoice Mapping - Invoice number is auto-generated only for the Add mode.
// Note New Pattern : INV/AG001/20251101/xx (REF:SVM)
public function generateInvoiceNumberAjax($agentId)
{
if (!$agentId) {
return $this->response->setJSON([
'status' => 'error',
'message' => 'Agent ID missing'
]);
}
$invoiceNo = $this->generateInvoiceNumber($agentId);
return $this->response->setJSON([
'status' => 'success',
'invoice_no' => $invoiceNo
]);
}
//... Payout-invoice Mapping - Invoice number is auto-generated only for the Add mode. //... Payout-invoice Mapping - Invoice number is auto-generated only for the Add mode.
// Note: It will change each time the page is reloaded.. (REF:MGW) // Note New Pattern : INV/AG001/20251101/xx (REF:SVM)
private function generateInvoiceNumber() private function generateInvoiceNumber($agentId)
{ {
$year = date('Y'); $agent = $this->invoiceModel->agentListById($agentId);
$month = date('m'); $agentCode = $agent["agent_code"];
do { $today = date("Ymd");
// random 3-digit number $likePattern = "INV/$agentCode/$today/%";
$random = str_pad(rand(1, 999), 3, '0', STR_PAD_LEFT);
$invoiceNo = "INV{$year}{$month}{$random}";
// check main invoice table $count = $this->invoiceModel
$existsMain = $this->invoiceModel ->like("invoice_no", $likePattern)
->where('invoice_no', $invoiceNo) ->countAllResults();
->first();
// check partner invoice table $nextNumber = $count + 1;
$existsPartner = $this->invoiceModel
->where('invoice_no', $invoiceNo)
->first();
} while ($existsMain || $existsPartner); // regenerate if duplicate found return "INV/$agentCode/$today/$nextNumber";
return $invoiceNo;
} }
// private function generateInvoiceNumber()
// {
// $year = date('Y');
// $month = date('m');
// do {
// // random 3-digit number
// $random = str_pad(rand(1, 999), 3, '0', STR_PAD_LEFT);
// $invoiceNo = "INV{$year}{$month}{$random}";
// // check main invoice table
// $existsMain = $this->invoiceModel
// ->where('invoice_no', $invoiceNo)
// ->first();
// // check partner invoice table
// $existsPartner = $this->invoiceModel
// ->where('invoice_no', $invoiceNo)
// ->first();
// } while ($existsMain || $existsPartner); // regenerate if duplicate found
// return $invoiceNo;
// }
//... Payout-invoice Mapping Audit History Based on "Adjustment" value (REF: KV,SVM) //... Payout-invoice Mapping Audit History Based on "Adjustment" value (REF: KV,SVM)
public function auditHistory() public function auditHistory()
{ {
@ -434,7 +480,7 @@ class PayoutController extends BaseController
->getResultArray(); ->getResultArray();
$details['invoice_child'] = $this->auditHistory $details['invoice_child'] = $this->auditHistory
->select('auditing_history.*,partner_invoice.invoice_no, user_profiles.first_name as created_name') ->select('auditing_history.*,partner_invoice.invoice_no, user_profiles.first_name as created_name,partner_invoice_items.policy_no')
->join('user_profiles', 'user_profiles.id = auditing_history.created_by', 'left') ->join('user_profiles', 'user_profiles.id = auditing_history.created_by', 'left')
->join('partner_invoice_items', 'partner_invoice_items.id = auditing_history.pk', 'left') ->join('partner_invoice_items', 'partner_invoice_items.id = auditing_history.pk', 'left')
->join('partner_invoice', 'partner_invoice.id = partner_invoice_items.invoice_id', 'left') ->join('partner_invoice', 'partner_invoice.id = partner_invoice_items.invoice_id', 'left')

View File

@ -822,6 +822,7 @@ class RuleImportController extends AdminController
$count = $this->partnerPolicyModel->where('commission_applied_rule', $rule_id) $count = $this->partnerPolicyModel->where('commission_applied_rule', $rule_id)
->countAllResults(); ->countAllResults();
// $count = 1;
return $this->respond(['status' => true, 'code' => 200, 'count' => $count, 'message' => ""], 200); return $this->respond(['status' => true, 'code' => 200, 'count' => $count, 'message' => ""], 200);
} }

View File

@ -101,7 +101,7 @@ class InvoiceModel extends Model
-- Payout status -- Payout status
CASE CASE
WHEN payout_status = 1 THEN 'Pending' WHEN payout_status = 1 THEN 'Pending'
WHEN payout_status = 2 THEN 'Complete' WHEN payout_status = 2 THEN 'Completed'
END AS status_text, END AS status_text,
partner_agent.name as agent_name partner_agent.name as agent_name
@ -175,7 +175,7 @@ class InvoiceModel extends Model
-- Payout status -- Payout status
CASE CASE
WHEN payout_status = 1 THEN 'Pending' WHEN payout_status = 1 THEN 'Pending'
WHEN payout_status = 2 THEN 'Complete' WHEN payout_status = 2 THEN 'Completed'
END AS status_text, END AS status_text,
partner_agent.name as agent_name partner_agent.name as agent_name
@ -198,26 +198,26 @@ class InvoiceModel extends Model
pt.agent_id AS agentId, pt.agent_id AS agentId,
pp.insured_name AS customer, pp.insured_name AS customer,
pp.premium_amount AS premium, pp.premium_amount AS premium,
pp.commission_amount AS commission, COALESCE(pii.commission_amount, pp.commission_amount) AS commission,
pp.issued_date AS date_db, pp.issued_date AS date_db,
DATE_FORMAT(pp.issued_date, "%d/%m/%Y") AS date, DATE_FORMAT(pp.issued_date, "%d/%m/%Y") AS date,
pii.id AS invoiceItemId pii.id AS invoiceItemId,
pii.commission_amount as paid_amount,
pi.payout_status
') ')
->join('partner_invoice_items pii','pii.policy_no = pt.policy_no','left')
->join('partner_invoice pi','pi.id = pii.invoice_id','left')
->join('partner_policy pp','pt.policy_no = pp.policy_number AND pt.agent_id = pp.agent_id','left') ->join('partner_policy pp','pt.policy_no = pp.policy_number AND pt.agent_id = pp.agent_id','left')
->where('pt.is_active',1) ->where('pt.is_active',1)
->where('pt.agent_id IS NOT NULL', null, false); ->where('pt.agent_id IS NOT NULL', null, false);
if ($flag == 1) { // Add mode if ($flag == 1) { // Add mode
// EXCLUDE all policies that exist in partner_invoice_items // EXCLUDE all policies that exist in partner_invoice_items
$builder->join('partner_invoice_items pii','pii.policy_no = pt.policy_no','left');
$builder->where("pt.policy_no NOT IN (SELECT policy_no FROM partner_invoice_items)", null, false); $builder->where("pt.policy_no NOT IN (SELECT policy_no FROM partner_invoice_items)", null, false);
} }
if ($flag == 2) { // Edit mode if ($flag == 2) { // Edit mode
// Policies belonging to a specific invoice // Policies belonging to a specific invoice
$builder->select('pii.commission_amount as paid_amount');
$builder->join('partner_invoice_items pii','pii.policy_no = pt.policy_no','inner'); // must exist
$builder->join('partner_invoice pi','pi.id = pii.invoice_id','inner'); // must exist
$builder->where('pii.is_active',1); $builder->where('pii.is_active',1);
if ($invoiceId) { if ($invoiceId) {
$builder->where('pi.id', $invoiceId); // only policies of this invoice $builder->where('pi.id', $invoiceId); // only policies of this invoice
@ -229,8 +229,6 @@ class InvoiceModel extends Model
if ($flag == 3) { // Extra policies if ($flag == 3) { // Extra policies
// Policies not assigned to any invoice // Policies not assigned to any invoice
$builder->select('pii.commission_amount as paid_amount');
$builder->join('partner_invoice_items pii','pii.policy_no = pt.policy_no','left');
$builder->where('pii.id IS NULL', null, false); $builder->where('pii.id IS NULL', null, false);
if ($agentId) { if ($agentId) {
$builder->where('pt.agent_id', $agentId); $builder->where('pt.agent_id', $agentId);
@ -240,4 +238,14 @@ class InvoiceModel extends Model
return $builder->get()->getResultArray(); return $builder->get()->getResultArray();
} }
public function agentListById($agentId)
{
return $this->db->table('partner_agent')
->where('id', $agentId)
->where('is_active', 1)
->get()
->getRowArray();
}
} }

View File

@ -858,9 +858,13 @@ table.dataTable tbody td {
table = $('#user-table').DataTable({ table = $('#user-table').DataTable({
scrollX: true, scrollX: true,
// dom: "<'row'<'col-sm-3'f><'col-sm-9'B>>" +
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>",
dom: "<'row'<'col-sm-3'f><'col-sm-9'B>>" + dom: "<'row'<'col-sm-3'f><'col-sm-9'B>>" +
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
// { // {
// extend: 'collection', // extend: 'collection',

View File

@ -223,9 +223,12 @@ var table;
$(document).ready(function() { $(document).ready(function() {
table = $('#tickets-table').DataTable({ table = $('#tickets-table').DataTable({
// dom: "<'row'<'col-sm-1'f><'col-sm-11 text-right'B>>" + // Filter left, button right // dom: "<'row'<'col-sm-1'f><'col-sm-11 text-right'B>>" + // Filter left, button right
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>",
dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" + dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
text: '<i class="mdi mdi-plus"></i> <span class="btn-custom">Add</span>', text: '<i class="mdi mdi-plus"></i> <span class="btn-custom">Add</span>',

View File

@ -224,9 +224,9 @@
$(document).ready(function() { $(document).ready(function() {
$('#datatable-buttons').DataTable({ $('#datatable-buttons').DataTable({
dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" + // dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
"<'row'<'col-sm-12'tr>>" + // "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // "<'row'<'col-sm-5'i><'col-sm-7'p>>",
// buttons: [{ // buttons: [{
// extend: 'csv', // extend: 'csv',
// text: 'CSV', // text: 'CSV',
@ -239,6 +239,10 @@
// left: "50px" // left: "50px"
// }); // });
// }, // },
dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
"<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [{ buttons: [{
extend: 'collection', extend: 'collection',
text: '<span class=" btn-custom"> Export </span><i class="mdi mdi-menu-down"></i>', text: '<span class=" btn-custom"> Export </span><i class="mdi mdi-menu-down"></i>',

View File

@ -89,9 +89,13 @@
if (ticketsTable.length) { if (ticketsTable.length) {
ticketsTable.DataTable({ ticketsTable.DataTable({
scrollX: true, scrollX: true,
// dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" +
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>",
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" +
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
extend: 'collection', extend: 'collection',

View File

@ -117,9 +117,13 @@ $(document).ready(function() {
if (ticketsTable.length) { if (ticketsTable.length) {
ticketsTable.DataTable({ ticketsTable.DataTable({
scrollX: true, scrollX: true,
// dom: "<'row'<'col-sm-2'f><'col-sm-10 text-right'B>>" + // Filter left, buttons right
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector
dom: "<'row'<'col-sm-2'f><'col-sm-10 text-right'B>>" + // Filter left, buttons right dom: "<'row'<'col-sm-2'f><'col-sm-10 text-right'B>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
extend: 'collection', extend: 'collection',

View File

@ -74,9 +74,13 @@ table.dataTable tbody td {
if (ticketsTable.length) { if (ticketsTable.length) {
ticketsTable.DataTable({ ticketsTable.DataTable({
scrollX: true, scrollX: true,
// dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
extend: 'collection', extend: 'collection',

View File

@ -76,9 +76,13 @@ table.dataTable tbody td {
if (ticketsTable.length) { if (ticketsTable.length) {
ticketsTable.DataTable({ ticketsTable.DataTable({
scrollX: true, scrollX: true,
// dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
extend: 'collection', extend: 'collection',

View File

@ -91,9 +91,9 @@
if (ticketsTable.length) { if (ticketsTable.length) {
ticketsTable.DataTable({ ticketsTable.DataTable({
scrollX: true, scrollX: true,
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" +
"<'row'<'col-sm-12'tr>>" + // "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // "<'row'<'col-sm-5'i><'col-sm-7'p>>",
// buttons: [ // buttons: [
// { // {
// extend: 'csv', // extend: 'csv',
@ -107,6 +107,10 @@
// }, // },
// ], // ],
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" +
"<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
extend: 'collection', extend: 'collection',

View File

@ -338,9 +338,13 @@
if (ticketsTable.length) { if (ticketsTable.length) {
ticketsTable.DataTable({ ticketsTable.DataTable({
// dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
extend: 'collection', extend: 'collection',

View File

@ -217,9 +217,13 @@ table.dataTable thead th {
$('#scroll-horizontal-datatable').DataTable({ $('#scroll-horizontal-datatable').DataTable({
scrollX: true, scrollX: true,
// dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" +
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>",
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" +
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
text: '<i class="mdi mdi-plus" ></i><span class=" btn-custom"> Add </span>', text: '<i class="mdi mdi-plus" ></i><span class=" btn-custom"> Add </span>',

View File

@ -284,9 +284,13 @@
if (ticketsTable.length) { if (ticketsTable.length) {
ticketsTable.DataTable({ ticketsTable.DataTable({
scrollX: true, scrollX: true,
// dom: "<'row'<'col-sm-7'f><'col-sm-5 text-right'B>>" + // Filter left, buttons right
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector
dom: "<'row'<'col-sm-7'f><'col-sm-5 text-right'B>>" + // Filter left, buttons right dom: "<'row'<'col-sm-7'f><'col-sm-5 text-right'B>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
text: 'Add', text: 'Add',

View File

@ -56,7 +56,7 @@
<table data-custom-table-css="table" id="scroll-horizontal-datatable" class="table w-100 nowrap"> <table data-custom-table-css="table" id="scroll-horizontal-datatable" class="table w-100 nowrap">
<thead class="bg-light"> <thead class="bg-light">
<tr> <tr>
<th>S.No&nbsp;</th> <th class="text-center">S.No&nbsp;</th>
<th>Docs Name&nbsp;</th> <th>Docs Name&nbsp;</th>
<th>File Name&nbsp;</th> <th>File Name&nbsp;</th>
<th>Action&nbsp;</th> <th>Action&nbsp;</th>

View File

@ -84,9 +84,13 @@
if (ticketsTable.length) { if (ticketsTable.length) {
ticketsTable.DataTable({ ticketsTable.DataTable({
scrollX: true, scrollX: true,
// dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" +
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>",
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" +
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
extend: 'collection', extend: 'collection',

View File

@ -82,9 +82,13 @@
if (ticketsTable.length) { if (ticketsTable.length) {
ticketsTable.DataTable({ ticketsTable.DataTable({
scrollX: true, scrollX: true,
// dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" +
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>",
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" +
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
extend: 'collection', extend: 'collection',

View File

@ -71,6 +71,9 @@ $(document).ready(function() {
$('#tickets-table').DataTable({ $('#tickets-table').DataTable({
// dom: "<'row'<'col-sm-0'f><'col-sm-9 text-right'B>>", // dom: "<'row'<'col-sm-0'f><'col-sm-9 text-right'B>>",
dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>", dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>",
"<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
extend: 'collection', extend: 'collection',

View File

@ -298,10 +298,13 @@ var table;
$(document).ready(function() $(document).ready(function()
{ {
table = $('#tickets-table').DataTable({ table = $('#tickets-table').DataTable({
// dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>",
dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" + dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
text: 'Add From Lead', text: 'Add From Lead',

View File

@ -372,10 +372,13 @@
$(document).ready(function() { $(document).ready(function() {
table = $('#tickets-table').DataTable({ table = $('#tickets-table').DataTable({
scrollX: true, scrollX: true,
// dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>",
dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" + dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [{ buttons: [{
text: 'Upload <i class="mdi mdi-upload"></i>', text: 'Upload <i class="mdi mdi-upload"></i>',
className: 'btn app-btn-primary mr-2', // custom class className: 'btn app-btn-primary mr-2', // custom class

File diff suppressed because it is too large Load Diff

View File

@ -173,9 +173,13 @@
if (ticketsTable.length) { if (ticketsTable.length) {
ticketsTable.DataTable({ ticketsTable.DataTable({
scrollX: true, scrollX: true,
// dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>",
dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" + dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [{ buttons: [{
extend: 'collection', extend: 'collection',
text: '<span class=" btn-custom"> Export </span><i class="mdi mdi-menu-down"></i>', text: '<span class=" btn-custom"> Export </span><i class="mdi mdi-menu-down"></i>',

View File

@ -49,7 +49,7 @@
<table data-custom-table-css="second-table" id="scroll-horizontal-datatable" class="table w-100 nowrap"> <table data-custom-table-css="second-table" id="scroll-horizontal-datatable" class="table w-100 nowrap">
<thead class="bg-light"> <thead class="bg-light">
<tr> <tr>
<th>S.No&nbsp;</th> <th class="text-center">S.No&nbsp;</th>
<th>Docs Name&nbsp;</th> <th>Docs Name&nbsp;</th>
<th>File Name&nbsp;</th> <th>File Name&nbsp;</th>
<th>Action&nbsp;</th> <th>Action&nbsp;</th>

View File

@ -341,9 +341,13 @@
if (ticketsTable.length) { if (ticketsTable.length) {
ticketsTable.DataTable({ ticketsTable.DataTable({
scrollX: true, scrollX: true,
// dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
extend: 'collection', extend: 'collection',

View File

@ -594,9 +594,13 @@
$(document).ready(function() { $(document).ready(function() {
$('#tickets-table').DataTable({ $('#tickets-table').DataTable({
// dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>",
dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" + dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [{ buttons: [{
text: '<i class="mdi mdi-plus" ></i><span class=" btn-custom"> Add </span>', text: '<i class="mdi mdi-plus" ></i><span class=" btn-custom"> Add </span>',
className: 'btn app-btn-primary mr-2', className: 'btn app-btn-primary mr-2',

View File

@ -461,12 +461,16 @@ $(document).ready(function() {
$('#tickets-table').DataTable({ $('#tickets-table').DataTable({
// dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>",
dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" + dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [{ buttons: [{
extend: 'collection', extend: 'collection',
text: '<span class=" btn-custom"> Export </span><i class="mdi mdi-menu-down"></i>', text: '<span class=" btn-custom"> Export </span><i class="mdi mdi-menu-down"></i>',

View File

@ -336,10 +336,14 @@ $(document).ready(function () {
if (ticketsTable.length) { if (ticketsTable.length) {
ticketsTable.DataTable({ ticketsTable.DataTable({
dom: // dom:
"<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right // "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
extend: 'collection', extend: 'collection',

View File

@ -98,9 +98,13 @@ $(document).ready(function () {
var table = ticketsTable.DataTable({ var table = ticketsTable.DataTable({
scrollX: true, scrollX: true,
// dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>",
dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" + dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
language: { language: {
search: ` search: `
<div class="datatable-search-wrapper" style="position:relative; display:inline-block; width:100%;"> <div class="datatable-search-wrapper" style="position:relative; display:inline-block; width:100%;">

View File

@ -356,9 +356,13 @@
// for datatable // for datatable
$(document).ready(function() { $(document).ready(function() {
$('#hr_tickets_table').DataTable({ $('#hr_tickets_table').DataTable({
// dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>",
dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" + dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [{ buttons: [{
extend: 'collection', extend: 'collection',
text: '<span class=" btn-custom"> Export </span><i class="mdi mdi-menu-down"></i>', text: '<span class=" btn-custom"> Export </span><i class="mdi mdi-menu-down"></i>',

View File

@ -182,9 +182,13 @@
$(document).ready(function() { $(document).ready(function() {
$('#tickets-table').DataTable({ $('#tickets-table').DataTable({
// dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>",
dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" + dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
text: '<i class="mdi mdi-plus" ></i><span class=" btn-custom"> Add </span>', text: '<i class="mdi mdi-plus" ></i><span class=" btn-custom"> Add </span>',

View File

@ -136,12 +136,12 @@ table.dataTable tbody td { padding: 4px 4px !important; }
<div class="col-auto d-flex align-items-center"> <div class="col-auto d-flex align-items-center">
<input type="date" class="form-control mr-2" id="fromDate" placeholder="From Date" title="From Date" style="width:170px;"> <!-- <input type="date" class="form-control mr-2" id="fromDate" placeholder="From Date" title="From Date" style="width:170px;">
<input type="date" class="form-control mr-2" id="toDate" placeholder="To Date" title="To Date" style="width:170px;"> <input type="date" class="form-control mr-2" id="toDate" placeholder="To Date" title="To Date" style="width:170px;">
<button type="button" class="btn-icon mr-1" title="Reset Filters" onclick="resetFilters()"><i class="mdi mdi-refresh"></i></button> <button type="button" class="btn-icon mr-1" title="Reset Filters" onclick="resetFilters()"><i class="mdi mdi-refresh"></i></button>
<button type="button" class="btn-icon mr-1" title="Search" onclick="searchPolicies()"><i class="mdi mdi-magnify"></i></button> <button type="button" class="btn-icon mr-1" title="Search" onclick="searchPolicies()"><i class="mdi mdi-magnify"></i></button> -->
<!-- <button class="btn app-btn-primary mr-2" onclick="resetFilters()" title="Reset Filters"> <!-- <button class="btn app-btn-primary mr-2" onclick="resetFilters()" title="Reset Filters">
@ -319,7 +319,6 @@ table.dataTable tbody td { padding: 4px 4px !important; }
"<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" +
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", "<'row'<'col-sm-5'i><'col-sm-7'p>>",
buttons: [ buttons: [
{ {
extend: 'collection', extend: 'collection',
@ -630,13 +629,13 @@ table.dataTable tbody td { padding: 4px 4px !important; }
filteredPolicies = [...filteredPolicies, ...newPolicies]; filteredPolicies = [...filteredPolicies, ...newPolicies];
// In EDIT mode, pre-check any policies that already have invoiceItemId // In EDIT mode, pre-check any policies that already have invoiceItemId
if (invoiceType != 'add') { // if (invoiceType != 'add') {
filteredPolicies.forEach(p => { // filteredPolicies.forEach(p => {
if (p.invoiceItemId && !selectedPolicies.has(String(p.id))) { // if (p.invoiceItemId && !selectedPolicies.has(String(p.id))) {
selectedPolicies.add(String(p.id)); // selectedPolicies.add(String(p.id));
} // }
}); // });
} // }
// Re-render table // Re-render table
renderPolicies(); renderPolicies();
@ -791,27 +790,29 @@ table.dataTable tbody td { padding: 4px 4px !important; }
<script> <script>
document.addEventListener('DOMContentLoaded', function () { document.addEventListener('DOMContentLoaded', function () {
const freeze = <?= isset($freeze_edit) ? (int)$freeze_edit : 0 ?>; const freeze = <?= isset($freeze_edit) ? (int)$freeze_edit : 0 ?>;
const payout_status = <?= isset($payout_status) ? (int)$payout_status : 0 ?>;
const type = '<?= isset($type) ? $type : '' ?>'; const type = '<?= isset($type) ? $type : '' ?>';
if (freeze > 0 && type === 'edit') { // Determine if we should freeze edits
const shouldFreeze =
(freeze > 0 && type === 'edit') ||
(payout_status === 2 && (type === 'adjustment' || type === 'edit'));
if (shouldFreeze) {
console.log("Freeze edit active"); console.log("Freeze edit active");
// Wait until DataTable is initialized // Disable checkboxes and adjustment inputs after DataTable draw
$('#policy_table').on('draw.dt', function() { $('#policy_table').on('draw.dt', function() {
document.querySelectorAll('.CB').forEach(cb => cb.disabled = true); document.querySelectorAll('.CB').forEach(cb => cb.disabled = true);
document.querySelectorAll('.policy-adjustment').forEach(input => input.disabled = true);
}); });
// Hide summary bar actions // Hide summary bar action buttons
document.querySelector('.S').style.display = 'none'; // hides it document.querySelectorAll('.S, .C, .M').forEach(btn => btn.style.display = 'none');
document.querySelector('.C').style.display = 'none';
document.querySelector('.M').style.display = 'none'; // hides it
} }
}); });
</script> </script>
<script> <script>
function auditingHistory() { function auditingHistory() {
@ -896,7 +897,7 @@ function auditingHistory() {
table += ` table += `
<tr> <tr>
<td>${index + 1}</td> <td>${index + 1}</td>
<td>${row.field_name.replace(/_/g, " ")}</td> <td>${row.policy_no + ' (' + row.field_name.replace(/_/g, " ") + ')'}</td>
<td>${row.old_value ?? '-'}</td> <td>${row.old_value ?? '-'}</td>
<td>${row.new_value ?? '-'}</td> <td>${row.new_value ?? '-'}</td>
<td>${row.created_name ?? '-'}</td> <td>${row.created_name ?? '-'}</td>
@ -965,6 +966,7 @@ function getExportFileName() {
let day = String(d.getDate()).padStart(2, '0'); let day = String(d.getDate()).padStart(2, '0');
let month = String(d.getMonth() + 1).padStart(2, '0'); let month = String(d.getMonth() + 1).padStart(2, '0');
let year = d.getFullYear(); let year = d.getFullYear();
return `Invoice Policies List ${day}-${month}-${year}`; // let INV = $("#invoiceNo").val() || '';
return `Payouts (${day}-${month}-${year})`;
} }
</script> </script>

View File

@ -84,7 +84,7 @@ table.dataTable tbody td { padding: 4px 4px !important; }
<div class="form-group col-md-3"> <div class="form-group col-md-3">
<label for="agents"> Agents <span class="text-danger"></span></label> <label for="agents"> Agents <span class="text-danger"></span></label>
<select class="form-control" id="agentSelect" name="agents_id" onchange="loadPolicies()" required> <select class="form-control" id="agentSelect" name="agents_id" onchange="loadPolicies(); generateInvoiceNumberAjaxCall();" required autocomplete="off">
<option value="">Select Agent</option> <option value="">Select Agent</option>
<?php <?php
if(isset($agents) && count($agents)) { if(isset($agents) && count($agents)) {
@ -127,10 +127,10 @@ table.dataTable tbody td { padding: 4px 4px !important; }
</div> </div>
<div class="col-auto d-flex align-items-center"> <div class="col-auto d-flex align-items-center">
<input type="date" class="form-control mr-2" id="fromDate" placeholder="From Date" title="From Date" style="width:170px;"> <!-- <input type="date" class="form-control mr-2" id="fromDate" placeholder="From Date" title="From Date" style="width:170px;" autocomplete="off">
<input type="date" class="form-control mr-2" id="toDate" placeholder="To Date" title="To Date" style="width:170px;"> <input type="date" class="form-control mr-2" id="toDate" placeholder="To Date" title="To Date" style="width:170px;" autocomplete="off">
<button type="button" class="btn-icon mr-1" title="Reset Filters" onclick="resetFilters()"><i class="mdi mdi-refresh"></i></button> <button type="button" class="btn-icon mr-1" title="Reset Filters" onclick="resetFilters()"><i class="mdi mdi-refresh"></i></button>
<button type="button" class="btn-icon mr-1" title="Search" onclick="searchPolicies()"><i class="mdi mdi-magnify"></i></button> <button type="button" class="btn-icon mr-1" title="Search" onclick="searchPolicies()"><i class="mdi mdi-magnify"></i></button> -->
</div> </div>
<a id="toggleIcon" class="text-dark float-right" data-toggle="collapse" href="#collapseTwo" aria-expanded="true"> <a id="toggleIcon" class="text-dark float-right" data-toggle="collapse" href="#collapseTwo" aria-expanded="true">
@ -198,14 +198,19 @@ table.dataTable tbody td { padding: 4px 4px !important; }
function getEl(id) { return document.getElementById(id); } function getEl(id) { return document.getElementById(id); }
$(document).ready(function(){ $(document).ready(function(){
$('#agentSelect').select2 && $('#agentSelect').select2();
const today = new Date().toISOString().split("T")[0];
if (getEl('agentSelect')) getEl('agentSelect').value = ""; // Initialize Select2
if (getEl('invoiceNo')) getEl('invoiceNo').value = "<?= $invoice_number ?>"; if ($('#agentSelect').select2) $('#agentSelect').select2();
// Clear fields without triggering change
$("#invoiceNo").val("");
$("#agentSelect").val(""); // do NOT trigger change
// Set max dates for date fields
const today = new Date().toISOString().split("T")[0];
if (getEl('invoiceDate')) getEl('invoiceDate').max = today; if (getEl('invoiceDate')) getEl('invoiceDate').max = today;
if (getEl('invoiceDate')) getEl('invoiceDate').valueAsDate = new Date();
if (getEl('policyTillDate')) getEl('policyTillDate').max = today; if (getEl('policyTillDate')) getEl('policyTillDate').max = today;
if (getEl('invoiceDate')) getEl('invoiceDate').valueAsDate = new Date();
if (getEl('policyTillDate')) getEl('policyTillDate').valueAsDate = new Date(); if (getEl('policyTillDate')) getEl('policyTillDate').valueAsDate = new Date();
// Initial empty DataTable so buttons/search are available even before loading policies // Initial empty DataTable so buttons/search are available even before loading policies
@ -214,14 +219,12 @@ table.dataTable tbody td { padding: 4px 4px !important; }
} }
$('#tickets-table').DataTable({ $('#tickets-table').DataTable({
dom: dom:
"<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" +
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
extend: 'collection', extend: 'collection',
@ -339,7 +342,8 @@ table.dataTable tbody td { padding: 4px 4px !important; }
dom: dom:
"<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" +
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
extend: 'collection', extend: 'collection',
@ -471,13 +475,13 @@ table.dataTable tbody td { padding: 4px 4px !important; }
// Reset filters (keeps agent selection; clear others) // Reset filters (keeps agent selection; clear others)
function resetFilters() { function resetFilters() {
['fromDate','toDate','from_date','to_date','policyTillDate'].forEach(id => { // Keep agent selected
const el = getEl(id); ['fromDate','toDate','from_date','to_date'].forEach(id => {
if (el) el.value = ''; if (getEl(id)) getEl(id).value = '';
}); });
loadPolicies();
} }
// Save invoice (AJAX) // Save invoice (AJAX)
function saveInvoice() { function saveInvoice() {
const agentId = getEl('agentSelect')?.value || ''; const agentId = getEl('agentSelect')?.value || '';
@ -536,8 +540,58 @@ table.dataTable tbody td { padding: 4px 4px !important; }
let day = String(d.getDate()).padStart(2, '0'); let day = String(d.getDate()).padStart(2, '0');
let month = String(d.getMonth() + 1).padStart(2, '0'); let month = String(d.getMonth() + 1).padStart(2, '0');
let year = d.getFullYear(); let year = d.getFullYear();
return `Invoice Policies List ${day}-${month}-${year}`; return `Payouts (${day}-${month}-${year})`;
} }
function generateInvoiceNumberAjaxCall() {
let agentId = $("#agentSelect").val();
if (!agentId) {
$("#invoiceNo").val("");
toastr.error("Please Select The Agent");
return;
}
$.ajax({
url: "<?= base_url('payout/invoice/generate-number') ?>/" + agentId,
method: "GET",
dataType: "json",
success: function (res) {
if (res.status === "success") {
$("#invoiceNo").val(res.invoice_no);
} else {
toastr.error(res.message);
}
},
error: function () {
toastr.error("Error generating invoice number");
}
});
}
// function searchPolicies() {
// filterPolicies();
// }
// function filterPolicies() {
// const fromDate = document.getElementById('fromDate').value;
// const toDate = document.getElementById('toDate').value;
// const agentId = document.getElementById('agentSelect').value;
// const policyTillDate = document.getElementById('policyTillDate').value;
// if (!agentId) {
// alert('Please select an agent first');
// return;
// }
// filteredPolicies = allPolicies.filter(p => {
// if (p.agentId != agentId) return false;
// if (policyTillDate && p.date_db > policyTillDate) return false;
// if (fromDate && p.date_db < fromDate) return false;
// if (toDate && p.date_db > toDate) return false;
// return true;
// });
// loadPolicies();
// }
</script> </script>

View File

@ -206,9 +206,13 @@ $(document).ready(function() {
if (ticketsTable.length) { if (ticketsTable.length) {
ticketsTable.DataTable({ ticketsTable.DataTable({
scrollX: true, scrollX: true,
// dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
extend: 'collection', extend: 'collection',

View File

@ -239,9 +239,9 @@ $(document).ready(function() {
if (ticketsTable.length) { if (ticketsTable.length) {
ticketsTable.DataTable({ ticketsTable.DataTable({
scrollX: true, scrollX: true,
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right // dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" + // "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector // "<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector
// buttons: [{ // buttons: [{
// extend: 'csv', // extend: 'csv',
// text: 'CSV', // text: 'CSV',
@ -295,6 +295,10 @@ $(document).ready(function() {
// } // }
// ], // ],
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
extend: 'collection', extend: 'collection',

View File

@ -75,9 +75,9 @@ $(document).ready(function() {
if (ticketsTable.length) { if (ticketsTable.length) {
ticketsTable.DataTable({ ticketsTable.DataTable({
scrollX: true, scrollX: true,
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right // dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" + // "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector // "<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector
// buttons: [{ // buttons: [{
// extend: 'csv', // extend: 'csv',
// text: 'CSV', // text: 'CSV',
@ -131,6 +131,10 @@ $(document).ready(function() {
// } // }
// ], // ],
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
extend: 'collection', extend: 'collection',

View File

@ -176,11 +176,13 @@
$('#tickets-table').DataTable({ $('#tickets-table').DataTable({
// dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>" ,
dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" + dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>" , "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
text: '<i class="mdi mdi-plus" ></i><span class=" btn-custom"> Add </span>', text: '<i class="mdi mdi-plus" ></i><span class=" btn-custom"> Add </span>',

View File

@ -458,9 +458,13 @@ table.dataTable tbody td {
if (ticketsTable.length) { if (ticketsTable.length) {
ticketsTable.DataTable({ ticketsTable.DataTable({
scrollX: true, scrollX: true,
// dom: "<'row'<'col-sm-7'f><'col-sm-5 text-right'B>>" + // Filter left, buttons right
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector
dom: "<'row'<'col-sm-7'f><'col-sm-5 text-right'B>>" + // Filter left, buttons right dom: "<'row'<'col-sm-7'f><'col-sm-5 text-right'B>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
text: 'Add', text: 'Add',

View File

@ -94,9 +94,13 @@
var ticketsTable = $('#user-table'); var ticketsTable = $('#user-table');
ticketsTable.DataTable({ ticketsTable.DataTable({
scrollX: true, scrollX: true,
// dom: "<'row'<'col-sm-7'f><'col-sm-5 text-right'B>>" + // Filter left, buttons right
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector
dom: "<'row'<'col-sm-7'f><'col-sm-5 text-right'B>>" + // Filter left, buttons right dom: "<'row'<'col-sm-7'f><'col-sm-5 text-right'B>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
text: 'Add', text: 'Add',

View File

@ -342,7 +342,7 @@
<!-- end --> <!-- end -->
<!-- Modal content for the Large example --> <!-- Modal content for the Large example => Common mail -->
<div class="modal fade" id="member_common_mail_modal" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" <div class="modal fade" id="member_common_mail_modal" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel"
aria-hidden="true" aria-modal="true" data-backdrop="static"> aria-hidden="true" aria-modal="true" data-backdrop="static">
<div class="modal-dialog modal-full-width scrollb"> <div class="modal-dialog modal-full-width scrollb">
@ -429,6 +429,7 @@
</tr> </tr>
</thead> </thead>
<tbody id="attachment_tbody"> <tbody id="attachment_tbody">
</tbody> </tbody>
</table> </table>
@ -446,8 +447,7 @@
</div><!-- /.modal-dialog --> </div><!-- /.modal-dialog -->
</div><!-- /.modal --> </div><!-- /.modal -->
<!-- Modal content for the Large example => Welcome mail-->
<!-- Modal content for the Large example -->
<div class="modal fade" id="member_welcome_mail_modal" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" <div class="modal fade" id="member_welcome_mail_modal" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel"
aria-hidden="true" aria-modal="true" data-backdrop="static"> aria-hidden="true" aria-modal="true" data-backdrop="static">
<div class="modal-dialog modal-full-width scrollb"> <div class="modal-dialog modal-full-width scrollb">
@ -527,7 +527,7 @@
</div><!-- /.modal-dialog --> </div><!-- /.modal-dialog -->
</div><!-- /.modal --> </div><!-- /.modal -->
<!-- Modal content for the Large example --> <!-- Modal content for the Large example => Remainder mail -->
<div class="modal fade" id="member_reminder_mail_modal" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="false" aria-modal="true"> <div class="modal fade" id="member_reminder_mail_modal" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="false" aria-modal="true">
<div class="modal-dialog modal-full-width"> <div class="modal-dialog modal-full-width">
<div class="modal-content"> <div class="modal-content">
@ -618,7 +618,7 @@
</div><!-- /.modal-dialog --> </div><!-- /.modal-dialog -->
</div><!-- /.modal --> </div><!-- /.modal -->
<!-- Modal content for the Large example --> <!-- Modal content for the Large example => Ecard mail -->
<div class="modal fade" id="member_ecard_mail_modal" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" <div class="modal fade" id="member_ecard_mail_modal" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel"
aria-hidden="true" aria-modal="true" data-backdrop="static"> aria-hidden="true" aria-modal="true" data-backdrop="static">
<div class="modal-dialog modal-full-width"> <div class="modal-dialog modal-full-width">
@ -708,7 +708,7 @@
</div><!-- /.modal-dialog --> </div><!-- /.modal-dialog -->
</div><!-- /.modal --> </div><!-- /.modal -->
<!-- Modal content for the Large example --> <!-- Modal content for the Large example => Review And Summary mail -->
<div class="modal fade" id="member_review_and_summary_mail_modal" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" <div class="modal fade" id="member_review_and_summary_mail_modal" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel"
aria-hidden="true" aria-modal="true" data-backdrop="static"> aria-hidden="true" aria-modal="true" data-backdrop="static">
<div class="modal-dialog modal-full-width"> <div class="modal-dialog modal-full-width">
@ -799,6 +799,8 @@
</div><!-- /.modal-content --> </div><!-- /.modal-content -->
</div><!-- /.modal-dialog --> </div><!-- /.modal-dialog -->
</div><!-- /.modal --> </div><!-- /.modal -->
<!-- Modal content for the Large example => Acc Manager Summary mail -->
<div class="modal fade" id="account_maneger_summary_mail_modal" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" <div class="modal fade" id="account_maneger_summary_mail_modal" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel"
aria-hidden="true" aria-modal="true" data-backdrop="static"> aria-hidden="true" aria-modal="true" data-backdrop="static">
<div class="modal-dialog modal-full-width"> <div class="modal-dialog modal-full-width">

View File

@ -178,9 +178,13 @@
if (ticketsTable.length) { if (ticketsTable.length) {
ticketsTable.DataTable({ ticketsTable.DataTable({
scrollX: true, scrollX: true,
// dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [{ buttons: [{
extend: 'collection', extend: 'collection',
text: '<span class=" btn-custom"> Export </span><i class="mdi mdi-menu-down"></i>', text: '<span class=" btn-custom"> Export </span><i class="mdi mdi-menu-down"></i>',

View File

@ -182,18 +182,6 @@
<div class="col-12"> <div class="col-12">
<div class="card"> <div class="card">
<div class="card-body"> <div class="card-body">
<div class="row" style="padding-bottom: 10px;">
<div class="col-6" style="align-self: center;">
<!-- <h4 style="position: relative;">Payout List <span id="payout_title"></span></h4> -->
</div>
<div class="col-5" style="align-self: right;"></div>
<div class="col-1" style="align-self: right;">
<button class="btn app-btn-primary mr-2" type="button"
onclick="window.location.href='<?= base_url('payout/invoices?type=add') ?>'">
Add
</button>
</div>
</div>
<div class="table-responsive"> <div class="table-responsive">
<table data-custom-table-css="table" id="scroll-horizontal-datatable" class="table w-100 nowrap"> <table data-custom-table-css="table" id="scroll-horizontal-datatable" class="table w-100 nowrap">
<thead class="bg-light"> <thead class="bg-light">
@ -215,7 +203,7 @@
<tr> <tr>
<td> <?= $index + 1 ?> </td> <td> <?= $index + 1 ?> </td>
<td> <?= $row['invoice_no'] ?> </td> <td> <?= $row['invoice_no'] ?> </td>
<td> <?= change_date_format($row['invoice_no'], null, 'd-M-Y') ?? "" ?> </td> <td> <?= change_date_format($row['invoice_date'], null, 'd-M-Y') ?? "" ?> </td>
<td> <?= format_indian_number($row['invoice_amount']) ?> </td> <td> <?= format_indian_number($row['invoice_amount']) ?> </td>
<td> <?= format_indian_number($row['total_utr_amount']) ?> </td> <td> <?= format_indian_number($row['total_utr_amount']) ?> </td>
<td> <?= format_indian_number($row['balance_amount']) ?> </td> <td> <?= format_indian_number($row['balance_amount']) ?> </td>
@ -261,14 +249,26 @@
// Datatable document ready // Datatable document ready
$(document).ready(function() { $(document).ready(function() {
var ticketsTable = $('#scroll-horizontal-datatable'); var tableEl = $('#scroll-horizontal-datatable');
if (ticketsTable.length) { if (tableEl.length) {
ticketsTable.DataTable({
var ticketsTable = tableEl.DataTable({
scrollX: true, scrollX: true,
// dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{
text: 'Add',
className: 'btn app-btn-primary mr-2',
action: function (e, dt, node, config) {
window.location.href = "<?= base_url('payout/invoices?type=add') ?>";
}
},
{ {
extend: 'collection', extend: 'collection',
text: '<span class=" btn-custom"> Export </span><i class="mdi mdi-menu-down"></i>', text: '<span class=" btn-custom"> Export </span><i class="mdi mdi-menu-down"></i>',
@ -276,15 +276,21 @@
buttons: [ buttons: [
{ {
extend: 'csv', extend: 'csv',
title: 'List', title: getExportFileName(),
text: '<i class="mdi mdi-file-delimited " ></i><span class=" btn-custom"> CSV </span>', text: '<i class="mdi mdi-file-delimited " ></i><span class=" btn-custom"> CSV </span>',
exportOptions: {
columns: ':not(:last-child)'
},
}, },
{ {
extend: 'excel', extend: 'excel',
title: 'List', title: getExportFileName(),
sheetName: 'Policy-Tranction-payout-List', sheetName: getExportFileName(),
text: '<i class="mdi mdi-file-excel " ></i><span class=" btn-custom"> EXCEL </span>', text: '<i class="mdi mdi-file-excel " ></i><span class=" btn-custom"> EXCEL </span>',
className: 'app-btn-primary ', className: 'app-btn-primary ',
exportOptions: {
columns: ':not(:last-child)'
},
} }
] ]
} }
@ -305,10 +311,21 @@
pageLength: 10, // Set default number of rows per page (optional) pageLength: 10, // Set default number of rows per page (optional)
ordering: false ordering: false
}); });
// IMPORTANT — DataTables draw event REF: TTS
ticketsTable.on('draw.dt', function () {
let rowCount = $('#scroll-horizontal-datatable').DataTable().rows({ filter: 'applied' }).count();
if (rowCount <= 2) {
$('.dataTables_scrollBody').css('overflow', 'inherit');
} else {
$('.dataTables_scrollBody').css('overflow', 'auto');
}
});
} else { } else {
console.error("Table atet found."); console.error("Table atet found.");
} }
}); });
function fetchUtrDetails(invoice_id, invoice_no) function fetchUtrDetails(invoice_id, invoice_no)
@ -361,4 +378,12 @@
}); });
} }
function getExportFileName() {
let d = new Date();
let day = String(d.getDate()).padStart(2, '0');
let month = String(d.getMonth() + 1).padStart(2, '0');
let year = d.getFullYear();
return `Invoices (${day}-${month}-${year})`;
}
</script> </script>

View File

@ -154,6 +154,7 @@
toastr.success(response.message, 'SUCCESS'); toastr.success(response.message, 'SUCCESS');
$('#modal_body').empty(); $('#modal_body').empty();
$('#modal_body').append(response.data); $('#modal_body').append(response.data);
window.location.href = '<?= base_url("payout/list") ?>';
}else{ }else{
toastr.warning(response.message || 'Unable to fetch data', 'WARNING'); toastr.warning(response.message || 'Unable to fetch data', 'WARNING');
} }
@ -163,7 +164,6 @@
$('.loader').fadeOut(); $('.loader').fadeOut();
$('.loader-mask').delay(350).fadeOut('slow'); $('.loader-mask').delay(350).fadeOut('slow');
}, },
error: function(xhr, status, error) { error: function(xhr, status, error) {
$('.loader').fadeOut(); $('.loader').fadeOut();

View File

@ -490,9 +490,13 @@ table.dataTable thead th {
ticketsTable.DataTable({ ticketsTable.DataTable({
scrollX: true, scrollX: true,
// dom: "<'row'<'col-sm-1'f><'col-sm-11 text-right'B>>" + // Filter left, buttons right // dom: "<'row'<'col-sm-1'f><'col-sm-11 text-right'B>>" + // Filter left, buttons right
// dom: "<'row'<'col-12 d-flex justify-content-between'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector
dom: "<'row'<'col-12 d-flex justify-content-between'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" + dom: "<'row'<'col-12 d-flex justify-content-between'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
text: '<i class="mdi mdi-plus" ></i><span class=" btn-custom"> Add </span>', text: '<i class="mdi mdi-plus" ></i><span class=" btn-custom"> Add </span>',

View File

@ -562,9 +562,13 @@ $(document).ready(function() {
ticketsTable.DataTable({ ticketsTable.DataTable({
scrollX: true, scrollX: true,
// dom: "<'row'<'col-12'f><'col-sm-11 text-right'B>>" + // Filter left, buttons right // dom: "<'row'<'col-12'f><'col-sm-11 text-right'B>>" + // Filter left, buttons right
// dom: "<'row'<'col-12 d-flex justify-content-between'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector
dom: "<'row'<'col-12 d-flex justify-content-between'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" + dom: "<'row'<'col-12 d-flex justify-content-between'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
text: '<i class="mdi mdi-plus" ></i><span class=" btn-custom"> Add </span>', text: '<i class="mdi mdi-plus" ></i><span class=" btn-custom"> Add </span>',

View File

@ -217,9 +217,9 @@
$(document).ready(function(){ $(document).ready(function(){
$('#tickets-table').DataTable({ $('#tickets-table').DataTable({
dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" + // dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
"<'row'<'col-sm-12'tr>>" + // "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // "<'row'<'col-sm-5'i><'col-sm-7'p>>",
// buttons: [ // buttons: [
// { // {
// extend: 'csv', // extend: 'csv',
@ -230,6 +230,10 @@
// } // }
// } // }
// ], // ],
dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
"<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
extend: 'collection', extend: 'collection',

View File

@ -232,9 +232,9 @@ $(document).ready(function() {
if (ticketsTable.length) { if (ticketsTable.length) {
ticketsTable.DataTable({ ticketsTable.DataTable({
scrollX: true, scrollX: true,
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right // dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" + // "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector // "<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector
// buttons: [ // buttons: [
// { // {
// extend: 'csv', // extend: 'csv',
@ -286,6 +286,10 @@ $(document).ready(function() {
// } // }
// } // }
// ], // ],
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
extend: 'collection', extend: 'collection',

View File

@ -301,9 +301,9 @@
if (ticketsTable.length) { if (ticketsTable.length) {
ticketsTable.DataTable({ ticketsTable.DataTable({
scrollX: true, scrollX: true,
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right // dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" + // "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector // "<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector
// buttons: [ // buttons: [
// { // {
// extend: 'csv', // extend: 'csv',
@ -355,6 +355,10 @@
// } // }
// } // }
// ], // ],
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
extend: 'collection', extend: 'collection',

View File

@ -149,9 +149,13 @@ $(document).ready(function() {
if (ticketsTable.length) { if (ticketsTable.length) {
ticketsTable.DataTable({ ticketsTable.DataTable({
scrollX: true, scrollX: true,
// dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
extend: 'csv', extend: 'csv',

View File

@ -340,9 +340,9 @@
$(document).ready(function() { $(document).ready(function() {
$('#tickets-table').DataTable({ $('#tickets-table').DataTable({
dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" + // dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
"<'row'<'col-sm-12'tr>>" + // "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // "<'row'<'col-sm-5'i><'col-sm-7'p>>",
// buttons: [{ // buttons: [{
// extend: 'csv', // extend: 'csv',
// text: 'CSV', // text: 'CSV',
@ -361,6 +361,10 @@
// } // }
// } // }
// }], // }],
dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
"<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [{ buttons: [{
extend: 'collection', extend: 'collection',
text: '<span class=" btn-custom"> Export </span><i class="mdi mdi-menu-down"></i>', text: '<span class=" btn-custom"> Export </span><i class="mdi mdi-menu-down"></i>',

View File

@ -117,9 +117,13 @@
var ticketsTable = $('#user-table'); var ticketsTable = $('#user-table');
ticketsTable.DataTable({ ticketsTable.DataTable({
scrollX: true, scrollX: true,
// dom: "<'row'<'col-sm-7'f><'col-sm-5 text-right'B>>" + // Filter left, buttons right
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector
dom: "<'row'<'col-sm-7'f><'col-sm-5 text-right'B>>" + // Filter left, buttons right dom: "<'row'<'col-sm-7'f><'col-sm-5 text-right'B>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
text: 'Add', text: 'Add',

View File

@ -97,9 +97,9 @@
if (ticketsTable.length) { if (ticketsTable.length) {
ticketsTable.DataTable({ ticketsTable.DataTable({
scrollX: true, scrollX: true,
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right // dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" + // "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector // "<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector
// buttons: [{ // buttons: [{
// extend: 'csv', // extend: 'csv',
// text: 'CSV', // text: 'CSV',
@ -111,6 +111,10 @@
// title: 'TAT BAND WISE DATA', // title: 'TAT BAND WISE DATA',
// } // }
// ], // ],
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
extend: 'collection', extend: 'collection',

View File

@ -539,9 +539,13 @@ document.addEventListener("DOMContentLoaded", function () {
if (ticketsTable.length) { if (ticketsTable.length) {
ticketsTable.DataTable({ ticketsTable.DataTable({
scrollX: true, scrollX: true,
// dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [{ buttons: [{
text:'Map Employees', text:'Map Employees',
action: function(e, dt, node, config) { action: function(e, dt, node, config) {

View File

@ -320,9 +320,13 @@ table.dataTable tbody td {
if (ticketsTable.length) { if (ticketsTable.length) {
ticketsTable.DataTable({ ticketsTable.DataTable({
scrollX: true, scrollX: true,
// dom: "<'row'<'col-sm-7'f><'col-sm-5 text-right'B>>" + // Filter left, buttons right
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector
dom: "<'row'<'col-sm-7'f><'col-sm-5 text-right'B>>" + // Filter left, buttons right dom: "<'row'<'col-sm-7'f><'col-sm-5 text-right'B>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
text: '<i class="mdi mdi-plus" ></i><span class=" btn-custom"> Add </span>', text: '<i class="mdi mdi-plus" ></i><span class=" btn-custom"> Add </span>',

View File

@ -95,9 +95,9 @@ $(document).ready(function() {
ticketsTable.DataTable({ ticketsTable.DataTable({
scrollX: true, scrollX: true,
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right // dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" + // "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector // "<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector
// buttons: [{ // buttons: [{
// extend: 'csv', // extend: 'csv',
// text: 'CSV', // text: 'CSV',
@ -112,6 +112,10 @@ $(document).ready(function() {
// }, // },
// }, // },
// ], // ],
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
extend: 'collection', extend: 'collection',

View File

@ -41,9 +41,9 @@ var ticketsTable = $('#scroll-horizontal-datatable');
if (ticketsTable.length) { if (ticketsTable.length) {
ticketsTable.DataTable({ ticketsTable.DataTable({
// scrollX: true, // scrollX: true,
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'>>" + // Filter left, buttons right // dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" + // "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector // "<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector
// buttons: [{ // buttons: [{
// extend: 'csv', // extend: 'csv',
// text: 'CSV', // text: 'CSV',
@ -59,6 +59,10 @@ if (ticketsTable.length) {
// } // }
// ], // ],
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
language: { language: {
search: ` search: `
<div class="datatable-search-wrapper" style="position:relative; display:inline-block;"> <div class="datatable-search-wrapper" style="position:relative; display:inline-block;">

View File

@ -268,9 +268,9 @@ $(document).ready(function() {
ticketsTable.DataTable({ ticketsTable.DataTable({
scrollX: true, scrollX: true,
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right // dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" + // "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector // "<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector
// buttons: [{ // buttons: [{
// extend: 'csv', // extend: 'csv',
// text: 'CSV', // text: 'CSV',
@ -292,6 +292,10 @@ $(document).ready(function() {
// } // }
// } // }
// ], // ],
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
text: '<i class="mdi mdi-plus" ></i><span class=" btn-custom"> Add </span>', text: '<i class="mdi mdi-plus" ></i><span class=" btn-custom"> Add </span>',

View File

@ -254,9 +254,13 @@
ticketsTable.DataTable({ ticketsTable.DataTable({
scrollX: true, scrollX: true,
// dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [{ buttons: [{
text: 'Add Template', text: 'Add Template',
className: 'buttons-html5 addbtnStyle', className: 'buttons-html5 addbtnStyle',

View File

@ -179,9 +179,13 @@
$('#tickets-table').DataTable({ $('#tickets-table').DataTable({
// dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>",
dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" + dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
text: '<i class="mdi mdi-plus" ></i><span class=" btn-custom"> Add </span>', text: '<i class="mdi mdi-plus" ></i><span class=" btn-custom"> Add </span>',

View File

@ -221,9 +221,13 @@
if (ticketsTable.length) { if (ticketsTable.length) {
ticketsTable.DataTable({ ticketsTable.DataTable({
scrollX: true, scrollX: true,
// dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector
dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right dom: "<'row'<'col-sm-6'f><'col-sm-6 text-right'B>>" + // Filter left, buttons right
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [{ buttons: [{
extend: 'collection', extend: 'collection',
text: '<span class=" btn-custom"> Export </span><i class="mdi mdi-menu-down"></i>', text: '<span class=" btn-custom"> Export </span><i class="mdi mdi-menu-down"></i>',

View File

@ -49,7 +49,7 @@
<table data-custom-table-css="second-table" id="scroll-horizontal-datatable" class="table w-100 nowrap"> <table data-custom-table-css="second-table" id="scroll-horizontal-datatable" class="table w-100 nowrap">
<thead class="bg-light"> <thead class="bg-light">
<tr> <tr>
<th>S.No&nbsp;</th> <th class="text-center">S.No&nbsp;</th>
<th>Docs Name&nbsp;</th> <th>Docs Name&nbsp;</th>
<th>File Name&nbsp;</th> <th>File Name&nbsp;</th>
<th>Action&nbsp;</th> <th>Action&nbsp;</th>

View File

@ -470,9 +470,13 @@ $(document).ready(function() {
if (ticketsTable.length) { if (ticketsTable.length) {
ticketsTable.DataTable({ ticketsTable.DataTable({
scrollX: true, scrollX: true,
// dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>",
dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" + dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
text: '<i class="mdi mdi-plus" ></i><span class=" btn-custom"> Add </span>', text: '<i class="mdi mdi-plus" ></i><span class=" btn-custom"> Add </span>',

View File

@ -765,9 +765,13 @@
table = $('#user-table').DataTable({ table = $('#user-table').DataTable({
scrollX: true, scrollX: true,
// dom: "<'row'<'col-sm-3'f><'col-sm-9'B>>" +
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>",
dom: "<'row'<'col-sm-3'f><'col-sm-9'B>>" + dom: "<'row'<'col-sm-3'f><'col-sm-9'B>>" +
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
// { // {
// extend: 'collection', // extend: 'collection',

View File

@ -96,9 +96,12 @@
ticketsTable.DataTable({ ticketsTable.DataTable({
scrollX: true, scrollX: true,
// dom: "<'row'<'col-sm-7'f><'col-sm-5 text-right'B>>" + // Filter left, buttons right // dom: "<'row'<'col-sm-7'f><'col-sm-5 text-right'B>>" + // Filter left, buttons right
// "<'row'<'col-sm-12'tr>>" +
// "<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector
dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" + dom: "<'row'<'col-12 d-flex justify-content-between align-items-center'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
"<'row'<'col-sm-12'tr>>" + "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // Pagination at the bottom, without page length selector "<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
text: 'Add', text: 'Add',

View File

@ -255,9 +255,9 @@
}); });
$('#tickets-table').DataTable({ $('#tickets-table').DataTable({
dom: "<'row'<'col-sm-2'f><'col-sm-10 text-right'B>>" + // dom: "<'row'<'col-sm-2'f><'col-sm-10 text-right'B>>" +
"<'row'<'col-sm-12'tr>>" + // "<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-7'p>>", // "<'row'<'col-sm-5'i><'col-sm-7'p>>",
// buttons: [ // buttons: [
// { // {
// text: '+ add', // text: '+ add',
@ -299,6 +299,10 @@
// } // }
// } // }
// ], // ],
dom: "<'row'<'col-12 d-flex justify-content-between'<'datatable-search dataTables_filter'f><'datatable-buttons dt-buttons'B>>>" +
"<'row'<'col-sm-12'tr>>" +
"<'row'<'col-sm-5'i><'col-sm-3 text-center'l><'col-sm-4 text-end'p>>",
lengthMenu: [[10, 20, 50, 100], [10, 20, 50, 100]],
buttons: [ buttons: [
{ {
text: '<i class="mdi mdi-plus" ></i><span class=" btn-custom"> Add </span>', text: '<i class="mdi mdi-plus" ></i><span class=" btn-custom"> Add </span>',