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 { Business Type Client Type Insured Name - Policy /
Endorsement + Transaction Type Policy Type BAP Group Vehicle Number @@ -99,23 +103,60 @@ table.dataTable tbody td { Reference Remarks BP Premium - TP/Ter Premium + TP Premium Premium
(without GST) Total Premium - BP% - TP/Ter% + Agreed BP % + Agreed TP % Rewards Agreed Amount Invoiced Amount Outstanding Amount + Salse Person Service Person - Nhance Branch + Salse Person Branch Installment Data Received Date Renewal Date - + + Co-Premium + Remuneration Pay By Leader + + Salse Person Manager + Service Person Manager + Service Person Branch + + Rollover Date + + Policyholder Name + Insured (Same as Proposer) + + Follower Policy No + + Co-Share % + Non Commissional
Premium Amount + + CGST + SGST + IGST + + Stamp Duty + + Standard BP % + Standard TP % + + Actual BP Amount + Actual TP Amount + + Actual BP % + Actual TP % + + Actual BP Remuneration Amount + Actual TP Remuneration Amount + + CD Account No @@ -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);