diff --git a/app/Controllers/PolicyTransactionController.php b/app/Controllers/PolicyTransactionController.php index 7cc91aca..64425b2e 100644 --- a/app/Controllers/PolicyTransactionController.php +++ b/app/Controllers/PolicyTransactionController.php @@ -669,14 +669,43 @@ ->where('is_active', 1) ->findAll(); + // // Fetch Sales Team + // $data['salse_team'] = $this->userModel + // ->select('user_profiles.*,nhance_branch.id as nhance_branch_id, nhance_branch.branch_name as nhance_branch_name') + // ->join('user_teams', 'user_profiles.id = user_teams.user_id') + // ->join('nhance_branch', 'user_profiles.nhance_branch_id = nhance_branch.id','left') + // ->where('user_teams.team_id', 5) + // ->where('user_teams.is_active', 1) + // ->where('user_profiles.is_active', 1) + // ->findAll(); + + // // Fetch Partner Agent + // $data['partner_agent'] = db_connect()->table('partner_agent') + // ->where('is_active', 1) + // ->get() + // ->getResultArray(); + + // // Fetch ACM + // $data['ACM'] = $this->userModel + // ->where('role', 3) // Assuming `role` is in `user_profiles` + // ->where('is_active', 1) + // ->findAll(); + // Fetch Sales Team $data['salse_team'] = $this->userModel - ->select('user_profiles.*,nhance_branch.id as nhance_branch_id, nhance_branch.branch_name as nhance_branch_name') + ->select(' + user_profiles.*, + nhance_branch.id as nhance_branch_id, + nhance_branch.branch_name as nhance_branch_name, + rm.first_name AS rm_name + ') ->join('user_teams', 'user_profiles.id = user_teams.user_id') ->join('nhance_branch', 'user_profiles.nhance_branch_id = nhance_branch.id','left') + ->join('user_profiles AS rm', 'user_profiles.rm_id = rm.id', 'left') ->where('user_teams.team_id', 5) ->where('user_teams.is_active', 1) ->where('user_profiles.is_active', 1) + ->groupBy('user_profiles.id', 'asc') ->findAll(); // Fetch Partner Agent @@ -687,12 +716,20 @@ // Fetch ACM $data['ACM'] = $this->userModel - ->where('role', 3) // Assuming `role` is in `user_profiles` - ->where('is_active', 1) - ->findAll(); - // echo '
';
+ ->select('
+ user_profiles.*,
+ nhance_branch.id AS nhance_branch_id,
+ nhance_branch.branch_name AS nhance_branch_name,
+ rm.first_name AS rm_name
+ ')
+ ->join('user_teams', 'user_profiles.id = user_teams.user_id')
+ ->join('nhance_branch', 'user_profiles.nhance_branch_id = nhance_branch.id', 'left')
+ ->join('user_profiles AS rm', 'user_profiles.rm_id = rm.id', 'left')
+ ->where('user_profiles.role', 3)
+ ->where('user_profiles.is_active', 1)
+ ->groupBy('user_profiles.id', 'asc')
+ ->findAll();
- // print_r($data['ppTeamsData']); die;
// dd($data);
diff --git a/app/Models/PolicyTransactionModel.php b/app/Models/PolicyTransactionModel.php
index 1ac58a29..97798b57 100644
--- a/app/Models/PolicyTransactionModel.php
+++ b/app/Models/PolicyTransactionModel.php
@@ -2572,6 +2572,7 @@
cb.address1 AS client_address,
ptype.policy_type,
ptype.bap,
+ ins.id AS insurer_id,
ins.name AS insurer_name,
ins.short_name AS insurer_short_name,
ib.branch_name AS insurer_branch_name,
@@ -2596,7 +2597,6 @@
ROUND(pcsd.cotp_amt + pcsd.cotep_amt, 2) AS tp_or_ter,
DATEDIFF(pt.policy_end_date, CURDATE()) AS days,
(pcsd.agreed_tp_per + pcsd.agreed_tep_per) AS agreed_tp_or_ter_per,
- pcsd.agreed_bp_per,
ROUND(pcsd.exp_amt, 2) AS total_irda_amt,
0.00 AS reward,
@@ -2607,7 +2607,55 @@
WHEN pcsd.co_share_type > 1 THEN
IFNULL(NULLIF(pcsd.follower_policy_no,''), pt.policy_no)
ELSE pt.policy_no
- END AS policy_no
+ END AS policy_no,
+
+ CASE
+ WHEN pt.co_share = 1 THEN 'Yes'
+ ELSE 'No'
+ END AS co_share,
+
+ CASE
+ WHEN pt.bro_payable_by = 1 THEN 'Yes'
+ ELSE 'No'
+ END AS bro_payable_by,
+
+ pcsd.non_comm_per_amt,
+
+ pcsd.bp_igst,
+ pcsd.bp_sgst,
+ pcsd.bp_cgst,
+
+ pcsd.agreed_bp_per,
+ ROUND(pcsd.agreed_tp_per + pcsd.agreed_tep_per,2) AS agreed_tp_per,
+
+ pcsd.standerd_bp_per,
+ ROUND(pcsd.standerd_tp_per + pcsd.standerd_tep_per,2) AS standerd_tp_per,
+
+ 0 AS actual_bp_amt,
+ ROUND(0, 2) AS actual_tp_amt,
+
+ 0 AS actual_bp_per,
+ ROUND(0, 2) AS actual_tp_per,
+
+ 0 AS actual_tep_brokerage_amt,
+ ROUND(0, 2) AS actual_tp_brokerage_amt,
+
+ service_branch.branch_name as service_branch,
+
+ salse_manager.first_name as salse_manager_name,
+ service_manager.first_name as service_manager_name,
+ cd_master.cd_ac_no,
+ pt.rollover_date,
+ pt.policy_holder_name,
+
+ CASE
+ WHEN pt.same_as_proposer = 1 THEN 'Yes'
+ ELSE 'No'
+ END AS same_as_proposer,
+
+ pcsd.follower_policy_no,
+ pcsd.co_share_per,
+ pcsd.stamp_duty
FROM policy_transaction pt
LEFT JOIN pt_co_share_details pcsd ON pt.id = pcsd.pt_id
@@ -2626,6 +2674,11 @@
LEFT JOIN user_profiles created_user ON pt.created_by = created_user.id
LEFT JOIN nhance_branch ON pt.issuer_branch = nhance_branch.id
+ LEFT JOIN nhance_branch service_branch ON pt.service_person_branch_id = service_branch.id
+ LEFT JOIN user_profiles salse_manager ON pt.salse_person_manager_id = salse_manager.id
+ LEFT JOIN user_profiles service_manager ON pt.service_person_manager_id = service_manager.id
+ LEFT JOIN cd_master ON pt.cd_ac_pk = cd_master.id
+
WHERE pt.is_active = 1
AND pcsd.is_active = 1
$default_date_filter
@@ -2663,10 +2716,20 @@
END AS revenue_type,
CASE
- WHEN pt.action_type = 'inception' THEN 'Policy'
+ WHEN
+ IFNULL(cssd.actual_tep_brokerage_amt, 0) = 0
+ AND IFNULL(cssd.actual_tp_brokerage_amt, 0) = 0
+ AND IFNULL(cssd.actual_bp_brokerage_amt, 0) = 0
+ AND IFNULL(cssd.reward, 0) != 0
+ THEN 'Rewards'
+
+ WHEN pt.action_type = 'inception'
+ THEN 'Policy'
+
ELSE 'Endorsement'
END AS action_type,
+
pt.action_type as action_type_string,
c.client_name,
@@ -2675,20 +2738,13 @@
cb.address1 AS client_address,
ptype.policy_type,
ptype.bap,
+ ins.id AS insurer_id,
ins.name AS insurer_name,
ins.short_name AS insurer_short_name,
ib.branch_name AS insurer_branch_name,
ib.branch_code AS insurer_branch_code,
- CASE
- WHEN
- IFNULL(cssd.actual_tep_brokerage_amt,0) = 0 AND
- IFNULL(cssd.actual_tp_brokerage_amt,0) = 0 AND
- IFNULL(cssd.actual_bp_brokerage_amt,0) = 0 AND
- IFNULL(cssd.reward,0) != 0
- THEN 'Rewards'
- ELSE created_user.first_name
- END AS user_name,
+ created_user.first_name as user_name,
v.vehicle_no,
tpa.name AS tpa_name,
@@ -2708,7 +2764,6 @@
ROUND(pcsd.cotp_amt + pcsd.cotep_amt,2) AS tp_or_ter,
DATEDIFF(pt.policy_end_date, CURDATE()) AS days,
(pcsd.agreed_tp_per + pcsd.agreed_tep_per) AS agreed_tp_or_ter_per,
- pcsd.agreed_bp_per,
CASE
WHEN insq.month = pt.month THEN pcsd.exp_amt
@@ -2747,7 +2802,55 @@
WHEN pcsd.co_share_type > 1
THEN IFNULL(NULLIF(pcsd.follower_policy_no,''), pt.policy_no)
ELSE pt.policy_no
- END AS policy_no
+ END AS policy_no,
+
+ CASE
+ WHEN pt.co_share = 1 THEN 'Yes'
+ ELSE 'No'
+ END AS co_share,
+
+ CASE
+ WHEN pt.bro_payable_by = 1 THEN 'Yes'
+ ELSE 'No'
+ END AS bro_payable_by,
+
+ pcsd.non_comm_per_amt,
+
+ pcsd.bp_igst,
+ pcsd.bp_sgst,
+ pcsd.bp_cgst,
+
+ pcsd.agreed_bp_per,
+ ROUND(pcsd.agreed_tp_per + pcsd.agreed_tep_per,2) AS agreed_tp_per,
+
+ pcsd.standerd_bp_per,
+ ROUND(pcsd.standerd_tp_per + pcsd.standerd_tep_per,2) AS standerd_tp_per,
+
+ cssd.actual_bp_amt,
+ ROUND(cssd.actual_tp_amt + cssd.actual_tep_amt,2) AS actual_tp_amt,
+
+ cssd.actual_bp_per,
+ ROUND(cssd.actual_tp_per + cssd.actual_tep_per,2) AS actual_tp_per,
+
+ cssd.actual_tep_brokerage_amt,
+ ROUND(cssd.actual_tp_brokerage_amt + cssd.actual_bp_brokerage_amt,2) AS actual_tp_brokerage_amt,
+
+ service_branch.branch_name as service_branch,
+
+ salse_manager.first_name as salse_manager_name,
+ service_manager.first_name as service_manager_name,
+ cd_master.cd_ac_no,
+ pt.rollover_date,
+ pt.policy_holder_name,
+
+ CASE
+ WHEN pt.same_as_proposer = 1 THEN 'Yes'
+ ELSE 'No'
+ END AS same_as_proposer,
+
+ pcsd.follower_policy_no,
+ pcsd.co_share_per,
+ pcsd.stamp_duty
FROM policy_transaction pt
LEFT JOIN pt_co_share_details pcsd ON pt.id = pcsd.pt_id
@@ -2768,6 +2871,12 @@
LEFT JOIN user_profiles created_user ON pt.created_by = created_user.id
LEFT JOIN nhance_branch ON pt.issuer_branch = nhance_branch.id
+ LEFT JOIN nhance_branch service_branch ON pt.service_person_branch_id = service_branch.id
+ LEFT JOIN user_profiles salse_manager ON pt.salse_person_manager_id = salse_manager.id
+ LEFT JOIN user_profiles service_manager ON pt.service_person_manager_id = service_manager.id
+ LEFT JOIN cd_master ON pt.cd_ac_pk = cd_master.id
+
+
WHERE pt.is_active = 1
AND pcsd.is_active = 1
AND cssd.is_active = 1
@@ -2823,29 +2932,64 @@
$result = array_values($filtered);
// dd($result);
- $runningBilled = [];
+ // $runningBilled = [];
+ // $totalIrdaMap = [];
+ // $final = [];
+
+ // foreach ($result as $row) {
+ // $ptId = $row['pt_id'];
+
+ // // Store total_irda_amt only once (first non-zero value)
+ // if (!isset($totalIrdaMap[$ptId]) && $row['total_irda_amt'] > 0) {
+ // $totalIrdaMap[$ptId] = $row['total_irda_amt'];
+ // }
+
+ // // Initialize running sum
+ // if (!isset($runningBilled[$ptId])) {
+ // $runningBilled[$ptId] = 0;
+ // }
+
+ // // Add billed amount to running total
+ // $runningBilled[$ptId] += (float)$row['billed_amt'];
+
+ // // Calculate unbilled amount
+ // $row['unbilled_amount'] = ($totalIrdaMap[$ptId] ?? 0) - $runningBilled[$ptId];
+
+ // $final[] = $row;
+ // }
+
+ $totalBilled = [];
$totalIrdaMap = [];
- $final = [];
foreach ($result as $row) {
- $ptId = $row['pt_id'];
+ $key = $row['pt_id'].'-'.$row['insurer_id'];
- // Store total_irda_amt only once (first non-zero value)
- if (!isset($totalIrdaMap[$ptId]) && $row['total_irda_amt'] > 0) {
- $totalIrdaMap[$ptId] = $row['total_irda_amt'];
+ // Sum billed amount
+ $totalBilled[$key] = ($totalBilled[$key] ?? 0)
+ + (float) ($row['billed_amt'] ?? 0);
+
+ // Store total_irda_amt once
+ if (!isset($totalIrdaMap[$key]) && ($row['total_irda_amt'] ?? 0) > 0) {
+ $totalIrdaMap[$key] = (float) $row['total_irda_amt'];
}
+ }
- // Initialize running sum
- if (!isset($runningBilled[$ptId])) {
- $runningBilled[$ptId] = 0;
+
+ $ptSeen = [];
+ $final = [];
+
+ foreach ($result as $row) {
+ $ptId = $row['pt_id'].'-'.$row['insurer_id'];
+ if (!isset($ptSeen[$ptId])) {
+ // First entry → set unbilled amount
+ $row['unbilled_amount'] = ($totalIrdaMap[$ptId] ?? 0) - ($totalBilled[$ptId] ?? 0);
+
+ $ptSeen[$ptId] = true;
+ } else {
+ // Other entries → zero
+ $row['unbilled_amount'] = 0;
}
- // Add billed amount to running total
- $runningBilled[$ptId] += (float)$row['billed_amt'];
-
- // Calculate unbilled amount
- $row['unbilled_amount'] = ($totalIrdaMap[$ptId] ?? 0) - $runningBilled[$ptId] ;
-
$final[] = $row;
}
diff --git a/app/Views/policy_transaction_inception_form.php b/app/Views/policy_transaction_inception_form.php
index 80ae3e0b..25e18758 100644
--- a/app/Views/policy_transaction_inception_form.php
+++ b/app/Views/policy_transaction_inception_form.php
@@ -325,6 +325,10 @@
+
+
+
+
@@ -420,7 +424,7 @@
-->
-
+
+
@@ -779,7 +784,7 @@
name="renewal_date" placeholder="DD/MM/YYYY">
-
+
+
+
+
+
+
+
+
+
+
+
@@ -6422,8 +6486,6 @@
}
-
-
function generateShortName() {
let clientInput = $("#client_name");
let shortInput = $("#short_name");
@@ -6593,4 +6655,76 @@
}
}
+ function setNhanceBranch(select, show_id) {
+
+ if (!select || !select.options || select.selectedIndex < 0) {
+ console.warn('No option selected yet');
+ return;
+ }
+
+ let selectedOption = select.options[select.selectedIndex];
+
+ let nbID = selectedOption.getAttribute('data-nbid');
+ let nbName = selectedOption.getAttribute('data-nbname');
+
+ console.log('NB ID:', nbID);
+ console.log('NB Name:', nbName);
+
+ if(show_id == "nhance_branch_info"){
+ $('#issuer_branch').val(nbID ? nbID : '');
+ }else{
+ $('#service_person_branch_id').val(nbID ? nbID : '');
+ }
+
+ let nbDiv = document.getElementById(show_id);
+
+ if (!nbID || !nbName) {
+ nbDiv.innerHTML = '';
+ nbDiv.classList.remove('show');
+ return;
+ }
+
+ nbDiv.innerHTML =
+ '' + nbName + '' +
+ ' ✓ Nhance Branch';
+
+ nbDiv.classList.add('show');
+ }
+
+ function setRM(select, show_id) {
+
+ if (!select || !select.options || select.selectedIndex < 0) {
+ console.warn('No option selected yet');
+ return;
+ }
+
+ let selectedOption = select.options[select.selectedIndex];
+
+ let rmid = selectedOption.getAttribute('data-rmid');
+ let rmname = selectedOption.getAttribute('data-rmname');
+
+ console.log('RM ID:', rmid);
+ console.log('RM Name:', rmname);
+
+ if(show_id == "salse_rm_info"){
+ $('#salse_person_manager_id').val(rmid ? rmid : '');
+ }else{
+ $('#service_person_manager_id').val(rmid ? rmid : '');
+ }
+
+ let rmDiv = document.getElementById(show_id);
+
+ if (!rmid || !rmname) {
+ rmDiv.innerHTML = '';
+ rmDiv.classList.remove('show');
+ return;
+ }
+
+ rmDiv.innerHTML =
+ '' + rmname + '' +
+ ' ✓ RM';
+
+ rmDiv.classList.add('show');
+ }
+
diff --git a/app/Views/report_bds.php b/app/Views/report_bds.php
index db84e64e..1d459049 100644
--- a/app/Views/report_bds.php
+++ b/app/Views/report_bds.php
@@ -54,11 +54,15 @@ table.dataTable tbody td {
- Total Rewards: 0.00
+ IRDA Amount : 0.00
- Total IRDA Revenue INR: 0.00
+ Rewards: 0.00
+
+
+
+ Revenue: 0.00
@@ -84,7 +88,7 @@ table.dataTable tbody td {
Insured Name
- Policy /
Endorsement
+ Transaction Type
Policy Type
@@ -99,23 +103,60 @@ table.dataTable tbody td {
BP Premium
- TP/Ter Premium
+ TP Premium
Premium
(without GST)
- BP%
- TP/Ter%
+ Agreed BP %
+ Agreed TP %
Agreed Amount
Invoiced Amount
Outstanding Amount
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -148,13 +189,14 @@ table.dataTable tbody td {
+
-
+
-
- %
- %
+
+ %
+ %
@@ -198,6 +242,44 @@ table.dataTable tbody td {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -602,12 +684,14 @@ $(document).ready(function() {
var totalRewards = getTotal(24);
var totalIrda = getTotal(25);
var totalBilled = getTotal(26);
+ var totalRevenue = parseFloat(totalIrda) + parseFloat(totalRewards);
// var totalUnbilled = getTotal(27);
// Update the totals section above the table
$('#total_premium').text(totalPremium.toFixed(2));
$('#total_rewards').text(totalRewards.toFixed(2));
$('#total_irda').text(totalIrda.toFixed(2));
+ $('#total_revenue').text(totalRevenue.toFixed(2));
$('#total_billed').text(totalBilled.toFixed(2));
// $('#total_unbilled').text(totalUnbilled.toFixed(2));
var totalUnbilled = getUniqueUnbilled(27);