diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 4e8cab49..626ac5a7 100755 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -779,6 +779,8 @@ $routes->group('payout', function($routes) { $routes->get('invoices', 'PayoutController::invoices'); $routes->post('invoices/save', 'PayoutController::saveInvoice'); $routes->get('invoices/history', 'PayoutController::auditHistory'); + $routes->get('invoice/generate-number/(:num)', 'PayoutController::generateInvoiceNumberAjax/$1'); + }); //PARTNER COMMISSION diff --git a/app/Controllers/PayoutController.php b/app/Controllers/PayoutController.php index 5c86ff39..e2479e42 100644 --- a/app/Controllers/PayoutController.php +++ b/app/Controllers/PayoutController.php @@ -30,7 +30,7 @@ class PayoutController extends BaseController $this->payout_status = [ 1 => "Pending", - 2 => "Complete", + 2 => "Completed", ]; $this->invoiceItemModel = new InvoiceItemModel(); @@ -84,7 +84,7 @@ class PayoutController extends BaseController // for list $data['payout_status'] = $this->payout_status; $data['agent_list'] = $this->invoiceModel->agentList(); - $data['page_name'] = "Payout"; + $data['page_name'] = "Invoices"; $payout_data['payout_list_data'] = $this->invoiceModel->invoiceList(); $data['payout_list'] = view('payout_list', $payout_data); @@ -199,10 +199,10 @@ class PayoutController extends BaseController $type = $this->request->getGet('type'); - $title = $type === 'add' ? 'Add Invoices' - : ($type === 'edit' ? 'Edit Invoices' - : ($type === 'adjustment' ? 'Adjustment Invoices' - : 'Invoices')); + $title = $type === 'add' ? 'Add Payouts' + : ($type === 'edit' ? 'Edit Payouts' + : ($type === 'adjustment' ? 'Payouts Adjustment' + : 'Payouts')); $data['tab_name'] = $title; $data['page_name'] = $title; @@ -219,9 +219,9 @@ class PayoutController extends BaseController //... Now Seperated edit and adjustment => 'policy_transaction_payouts' old file //... Reason : Due Datatable issues Export button Searching like that so seperated if ($type === 'add') { - $invoiceNo = $this->generateInvoiceNumber(); + // $invoiceNo = $this->generateInvoiceNumber(); $data['payouts'] = $this->invoiceModel->payoutList(1); - $data['invoice_number'] = $invoiceNo; + // $data['invoice_number'] = $invoiceNo; return $this->loadLayout('invoice_policy_mapping_add', $data); } @@ -229,6 +229,7 @@ class PayoutController extends BaseController $invoice = $this->invoiceModel->where('id', $id)->first(); $data['freeze_edit'] = $this->auditHistory->where('table_name', 'partner_invoice')->where('pk', $id)->countAllResults(); + $agentId = $invoice['agent_id'] ?? null; @@ -246,6 +247,7 @@ class PayoutController extends BaseController $data['invoice_number']= $invoice['invoice_no']; $data['type'] = $type; + $data['payout_status'] = $invoice['payout_status'] ; return $this->loadLayout('invoice_policy_mapping', $data); @@ -268,9 +270,18 @@ class PayoutController extends BaseController //... ADD Part 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 = [ - 'invoice_no' => $json['invoice_no'], + 'invoice_no' => $InvNum, 'agent_id' => $json['agent_id'], 'invoice_date' => $json['invoice_date'], 'invoice_amount' => $json['invoice_amount'], @@ -387,34 +398,69 @@ class PayoutController extends BaseController } - - + //... 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) - private function generateInvoiceNumber() + // Note New Pattern : INV/AG001/20251101/xx (REF:SVM) + public function generateInvoiceNumberAjax($agentId) { - $year = date('Y'); - $month = date('m'); + if (!$agentId) { + return $this->response->setJSON([ + 'status' => 'error', + 'message' => 'Agent ID missing' + ]); + } - do { - // random 3-digit number - $random = str_pad(rand(1, 999), 3, '0', STR_PAD_LEFT); - $invoiceNo = "INV{$year}{$month}{$random}"; + $invoiceNo = $this->generateInvoiceNumber($agentId); - // 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; + return $this->response->setJSON([ + 'status' => 'success', + 'invoice_no' => $invoiceNo + ]); } + + //... Payout-invoice Mapping - Invoice number is auto-generated only for the Add mode. + // Note New Pattern : INV/AG001/20251101/xx (REF:SVM) + private function generateInvoiceNumber($agentId) + { + $agent = $this->invoiceModel->agentListById($agentId); + $agentCode = $agent["agent_code"]; + + $today = date("Ymd"); + $likePattern = "INV/$agentCode/$today/%"; + + $count = $this->invoiceModel + ->like("invoice_no", $likePattern) + ->countAllResults(); + + $nextNumber = $count + 1; + + return "INV/$agentCode/$today/$nextNumber"; + } + + // 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) public function auditHistory() @@ -434,7 +480,7 @@ class PayoutController extends BaseController ->getResultArray(); $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('partner_invoice_items', 'partner_invoice_items.id = auditing_history.pk', 'left') ->join('partner_invoice', 'partner_invoice.id = partner_invoice_items.invoice_id', 'left') diff --git a/app/Controllers/RuleImportController.php b/app/Controllers/RuleImportController.php index fbe785a1..91fc2ddc 100644 --- a/app/Controllers/RuleImportController.php +++ b/app/Controllers/RuleImportController.php @@ -822,6 +822,7 @@ class RuleImportController extends AdminController $count = $this->partnerPolicyModel->where('commission_applied_rule', $rule_id) ->countAllResults(); + // $count = 1; return $this->respond(['status' => true, 'code' => 200, 'count' => $count, 'message' => ""], 200); } diff --git a/app/Models/InvoiceModel.php b/app/Models/InvoiceModel.php index ea5fc4d3..d1c312f4 100644 --- a/app/Models/InvoiceModel.php +++ b/app/Models/InvoiceModel.php @@ -101,7 +101,7 @@ class InvoiceModel extends Model -- Payout status CASE WHEN payout_status = 1 THEN 'Pending' - WHEN payout_status = 2 THEN 'Complete' + WHEN payout_status = 2 THEN 'Completed' END AS status_text, partner_agent.name as agent_name @@ -175,7 +175,7 @@ class InvoiceModel extends Model -- Payout status CASE WHEN payout_status = 1 THEN 'Pending' - WHEN payout_status = 2 THEN 'Complete' + WHEN payout_status = 2 THEN 'Completed' END AS status_text, partner_agent.name as agent_name @@ -198,26 +198,26 @@ class InvoiceModel extends Model pt.agent_id AS agentId, pp.insured_name AS customer, 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, 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') ->where('pt.is_active',1) ->where('pt.agent_id IS NOT NULL', null, false); if ($flag == 1) { // Add mode - // EXCLUDE all policies that exist in partner_invoice_items - $builder->join('partner_invoice_items pii','pii.policy_no = pt.policy_no','left'); + // EXCLUDE all policies that exist in partner_invoice_items $builder->where("pt.policy_no NOT IN (SELECT policy_no FROM partner_invoice_items)", null, false); } if ($flag == 2) { // Edit mode // 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); if ($invoiceId) { $builder->where('pi.id', $invoiceId); // only policies of this invoice @@ -229,8 +229,6 @@ class InvoiceModel extends Model if ($flag == 3) { // Extra policies // 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); if ($agentId) { $builder->where('pt.agent_id', $agentId); @@ -240,4 +238,14 @@ class InvoiceModel extends Model return $builder->get()->getResultArray(); } + public function agentListById($agentId) + { + return $this->db->table('partner_agent') + ->where('id', $agentId) + ->where('is_active', 1) + ->get() + ->getRowArray(); + } + + } diff --git a/app/Views/UserList.php b/app/Views/UserList.php index d0dca952..a991670d 100755 --- a/app/Views/UserList.php +++ b/app/Views/UserList.php @@ -858,9 +858,13 @@ table.dataTable tbody td { table = $('#user-table').DataTable({ 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>>" + - "<'row'<'col-sm-12'tr>>" + - "<'row'<'col-sm-5'i><'col-sm-7'p>>", + "<'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: [ // { // extend: 'collection', diff --git a/app/Views/add_image_list.php b/app/Views/add_image_list.php index c47c5880..034923f6 100755 --- a/app/Views/add_image_list.php +++ b/app/Views/add_image_list.php @@ -223,9 +223,12 @@ var table; $(document).ready(function() { table = $('#tickets-table').DataTable({ // 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>>>" + "<'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: [ { text: ' Add', diff --git a/app/Views/batch_list.php b/app/Views/batch_list.php index 6600162f..7e66110d 100755 --- a/app/Views/batch_list.php +++ b/app/Views/batch_list.php @@ -224,9 +224,9 @@ $(document).ready(function() { $('#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>>>" + - "<'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>>>" + + // "<'row'<'col-sm-12'tr>>" + + // "<'row'<'col-sm-5'i><'col-sm-7'p>>", // buttons: [{ // extend: 'csv', // text: 'CSV', @@ -239,6 +239,10 @@ // 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: [{ extend: 'collection', text: ' Export ', diff --git a/app/Views/bds_multi_report.php b/app/Views/bds_multi_report.php index 33fa456a..69d3b787 100644 --- a/app/Views/bds_multi_report.php +++ b/app/Views/bds_multi_report.php @@ -89,9 +89,13 @@ if (ticketsTable.length) { ticketsTable.DataTable({ 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>>" + - "<'row'<'col-sm-12'tr>>" + - "<'row'<'col-sm-5'i><'col-sm-7'p>>", + "<'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: [ { extend: 'collection', diff --git a/app/Views/bds_renewal_report_list.php b/app/Views/bds_renewal_report_list.php index c11290a7..d1dd8c17 100644 --- a/app/Views/bds_renewal_report_list.php +++ b/app/Views/bds_renewal_report_list.php @@ -117,9 +117,13 @@ $(document).ready(function() { if (ticketsTable.length) { ticketsTable.DataTable({ 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 "<'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: [ { extend: 'collection', diff --git a/app/Views/bds_report_Insurer_wise_Data.php b/app/Views/bds_report_Insurer_wise_Data.php index d020fb8c..a6e6e2a9 100644 --- a/app/Views/bds_report_Insurer_wise_Data.php +++ b/app/Views/bds_report_Insurer_wise_Data.php @@ -74,9 +74,13 @@ table.dataTable tbody td { if (ticketsTable.length) { ticketsTable.DataTable({ 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 - "<'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-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: [ { extend: 'collection', diff --git a/app/Views/bds_report_bap_wise_data.php b/app/Views/bds_report_bap_wise_data.php index 928ad3a4..8a5b467a 100644 --- a/app/Views/bds_report_bap_wise_data.php +++ b/app/Views/bds_report_bap_wise_data.php @@ -76,9 +76,13 @@ table.dataTable tbody td { if (ticketsTable.length) { ticketsTable.DataTable({ 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 - "<'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-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: [ { extend: 'collection', diff --git a/app/Views/bds_tat_wise_report.php b/app/Views/bds_tat_wise_report.php index c47cc259..41f85f71 100644 --- a/app/Views/bds_tat_wise_report.php +++ b/app/Views/bds_tat_wise_report.php @@ -91,9 +91,9 @@ if (ticketsTable.length) { ticketsTable.DataTable({ 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>>" + + // "<'row'<'col-sm-12'tr>>" + + // "<'row'<'col-sm-5'i><'col-sm-7'p>>", // buttons: [ // { // 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: [ { extend: 'collection', diff --git a/app/Views/business_team_list.php b/app/Views/business_team_list.php index 3aeb2ed0..c00fcd6e 100644 --- a/app/Views/business_team_list.php +++ b/app/Views/business_team_list.php @@ -338,9 +338,13 @@ if (ticketsTable.length) { 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 - "<'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-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: [ { extend: 'collection', diff --git a/app/Views/cd_master_list.php b/app/Views/cd_master_list.php index c530a6bb..30c20b60 100755 --- a/app/Views/cd_master_list.php +++ b/app/Views/cd_master_list.php @@ -217,9 +217,13 @@ table.dataTable thead th { $('#scroll-horizontal-datatable').DataTable({ 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>>" + + // "<'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>>" + + "<'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: [ { text: ' Add ', diff --git a/app/Views/claim_dump_file_list.php b/app/Views/claim_dump_file_list.php index 70282d89..a2f27a80 100644 --- a/app/Views/claim_dump_file_list.php +++ b/app/Views/claim_dump_file_list.php @@ -284,9 +284,13 @@ if (ticketsTable.length) { ticketsTable.DataTable({ 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 - "<'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-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: [ { text: 'Add', diff --git a/app/Views/claim_files_upload.php b/app/Views/claim_files_upload.php index 31888578..80eccfa0 100644 --- a/app/Views/claim_files_upload.php +++ b/app/Views/claim_files_upload.php @@ -56,7 +56,7 @@
| S.No | +S.No | Docs Name | File Name | Action | @@ -266,7 +266,7 @@ function create_url_list(data) { let base_url = ""; - if (data && data.length > 0) { + if (data && data.length > 0) { let html = ""; data.forEach((item, index) => { diff --git a/app/Views/claims_report_acc_manager_wise.php b/app/Views/claims_report_acc_manager_wise.php index 177fe93f..066514d9 100644 --- a/app/Views/claims_report_acc_manager_wise.php +++ b/app/Views/claims_report_acc_manager_wise.php @@ -84,9 +84,13 @@ if (ticketsTable.length) { ticketsTable.DataTable({ 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>>" + - "<'row'<'col-sm-12'tr>>" + - "<'row'<'col-sm-5'i><'col-sm-7'p>>", + "<'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: [ { extend: 'collection', diff --git a/app/Views/claims_report_tpa_wise.php b/app/Views/claims_report_tpa_wise.php index fbf5daa5..55711b3e 100644 --- a/app/Views/claims_report_tpa_wise.php +++ b/app/Views/claims_report_tpa_wise.php @@ -82,9 +82,13 @@ if (ticketsTable.length) { ticketsTable.DataTable({ 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>>" + - "<'row'<'col-sm-12'tr>>" + - "<'row'<'col-sm-5'i><'col-sm-7'p>>", + "<'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: [ { extend: 'collection', diff --git a/app/Views/client_deposit_list.php b/app/Views/client_deposit_list.php index a86ffa11..10aa6c74 100755 --- a/app/Views/client_deposit_list.php +++ b/app/Views/client_deposit_list.php @@ -71,6 +71,9 @@ $(document).ready(function() { $('#tickets-table').DataTable({ // 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>>>", + "<'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: [ { extend: 'collection', diff --git a/app/Views/client_list.php b/app/Views/client_list.php index 473d75fe..0df5b975 100755 --- a/app/Views/client_list.php +++ b/app/Views/client_list.php @@ -298,10 +298,13 @@ var table; $(document).ready(function() { 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>>>" + - "<'row'<'col-sm-12'tr>>" + - "<'row'<'col-sm-5'i><'col-sm-7'p>>", - + "<'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: [ { text: 'Add From Lead', diff --git a/app/Views/commission_file_upload.php b/app/Views/commission_file_upload.php index b2041356..4bec2202 100644 --- a/app/Views/commission_file_upload.php +++ b/app/Views/commission_file_upload.php @@ -372,10 +372,13 @@ $(document).ready(function() { table = $('#tickets-table').DataTable({ 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>>>" + "<'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: [{ text: 'Upload ', className: 'btn app-btn-primary mr-2', // custom class diff --git a/app/Views/commission_rules_list.php b/app/Views/commission_rules_list.php index d3b34eab..93399920 100644 --- a/app/Views/commission_rules_list.php +++ b/app/Views/commission_rules_list.php @@ -5,12 +5,23 @@ } .action-bar { - display: flex; - justify-content: space-between; + /* display: flex; + justify-content: space-between; */ align-items: center; margin-bottom: 30px; - background: white; - padding: 20px; + background-color: #F5FFFF !important; + padding: 15px 25px 10px 25px; + border-radius: 10px; + box-shadow: 0 5px 15px rgba(0,0,0,0.1); + } + + .action-bar-header { + /* display: flex; + justify-content: space-between; */ + align-items: center; + margin-bottom: 5px; + background-color: #F5FFFF !important; + padding: 0px 0px 0px 25px; border-radius: 10px; box-shadow: 0 5px 15px rgba(0,0,0,0.1); } @@ -29,7 +40,7 @@ } .rule-card { - background: white; + background:#F5FFFF !important; border-radius: 10px; padding: 10px; box-shadow: 0 5px 20px rgba(0,0,0,0.1); @@ -85,11 +96,17 @@ } .condition-badge { + padding: 2px 5px; border-radius: 15px; font-size: 7px; - color: white; - background: linear-gradient(45deg, #3498db, #2980b9); + display: inline-block; + border-radius: 6px; + background: #f1f5f9; + margin-right: 6px; + color: #222; + margin-top: 6px; + font-weight: 600; } .detail-item { @@ -98,8 +115,8 @@ } .detail-label { - font-weight: 500; - color: #000000; + font-weight: 600; + margin-right: 6px; } #ruleModal .modal-body { @@ -220,26 +237,140 @@ color: #666; } + .select2-hidden-accessible + .select2-container .select2-dropdown { + display: none !important; + } + + .select2-container .select2-selection--multiple .select2-selection__choice { + color: #000000; + } + + .select2-selection__choice { + background-color: #0a8794 !important; + color: white !important; + font-weight: bold; + } + + .select2-selection__choice__remove { + color: white !important; + margin-right: 5px; + } + + .muted { + color: #666; + font-size: 13px; + } + + .dynamic-filters { + margin-top: 12px; + display: flex; + flex-direction: column; + gap: 8px; + } + + .filter-row { + display: flex; + gap: 8px; + align-items: center; + } + + .no-rulesList { + padding: 20px; + text-align: center; + color: #666; + } + + /* layout for rulesList area */ + #rulesList { + display: grid; + gap: 12px; + grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); + } + @@ -384,7 +516,7 @@ - + @@ -611,28 +743,7 @@ }); }); - - function deleteRule(ruleId, department) { - if (confirm('Are you sure you want to delete this rule?')) { - fetch('', { - method: 'POST', - headers: { - 'Content-Type': 'application/x-www-form-urlencoded', - }, - body: 'action=delete_rule&rule_id=' + ruleId + '&department=' + department - }) - .then(response => response.json()) - .then(data => { - if (data.success) { - showAlert('Rule deleted successfully!', 'success'); - // loadAllRules(); - } else { - showAlert('Error deleting rule: ' + data.message, 'error'); - } - }); - } - } - + function resetForm() { document.getElementById('ruleForm').reset(); document.getElementById('ruleId').value = ''; @@ -643,48 +754,6 @@ addCondition(); toggleCalculationFields(); } - - function filterRules() { - const department = document.getElementById('filterDepartment').value; - - if (!department) { - // loadAllRules(); - return; - } - - fetch('', { - method: 'POST', - headers: { - 'Content-Type': 'application/x-www-form-urlencoded', - }, - body: 'action=get_rules&department=' + department - }) - .then(response => response.json()) - .then(rules => { - const rulesWithDept = rules.map(rule => ({...rule, department: department})); - displayRules(rulesWithDept); - }); - } - - function showAlert(message, type) { - const alertContainer = document.getElementById('alert-container'); - const alertClass = type === 'success' ? 'alert-success' : 'alert-error'; - - alertContainer.innerHTML = ` -
|---|