db->table('policy_transaction') ->select(" policy_transaction.*, DATE_FORMAT(policy_transaction.policy_issue_date, '%d %b %Y') AS policy_issue_date, DATE_FORMAT( IF(policy_transaction.month IS NULL, policy_transaction.policy_issue_date, policy_transaction.month), '%b %Y') AS policy_issue_month, CASE WHEN clients.client_type = 1 THEN 'Group' WHEN clients.client_type = 2 THEN 'Retail' ELSE '-' END AS client_type, CASE WHEN policy_transaction.revenue_type = 'NA' THEN 'Fresh' ELSE 'Renewal' END AS revenue_type, CASE WHEN policy_transaction.action_type = 'inception' THEN 'Policy' ELSE 'Endorsement' END AS action_type, clients.client_name AS client_name, clients.short_name AS client_short_name, client_branch.branch_name AS client_branch_name, client_branch.address1 AS client_address, policy_type.policy_type, policy_type.bap, insurers.name AS insurer_name, insurers.short_name AS insurer_short_name, insurer_branch.branch_name AS insurer_branch_name, insurer_branch.branch_code AS insurer_branch_code, user_profiles.first_name as user_name, vehicle.vehicle_no, tpa.name as tpa_name, pt_co_share_details.remark as remarks, pt_co_share_details.reward, pt_co_share_details.bp_amt, sales_user.first_name as salse_person_name, service_user.first_name as service_person_name, ROUND((pt_co_share_details.bp_amt + pt_co_share_details.tp_amt + pt_co_share_details.tep_amt), 2) AS premium_wo_gst, ROUND((ROUND((pt_co_share_details.bp_amt + pt_co_share_details.tp_amt + pt_co_share_details.tep_amt), 2) * 18 / 100), 2) AS gst_amount, ROUND((ROUND((pt_co_share_details.bp_amt + pt_co_share_details.tp_amt + pt_co_share_details.tep_amt), 2) + ROUND((ROUND((pt_co_share_details.bp_amt + pt_co_share_details.tp_amt + pt_co_share_details.tep_amt), 2) * 18 / 100), 2)), 2) AS total_premium, ROUND((pt_co_share_details.tp_amt + pt_co_share_details.tep_amt), 2) AS tp_or_ter, DATEDIFF(policy_transaction.policy_end_date, CURDATE()) AS days, (pt_co_share_details.agreed_tp_per + pt_co_share_details.agreed_tep_per) AS agreed_tp_or_ter_per, pt_co_share_details.agreed_bp_per, ROUND( (pt_co_share_details.bp_amt * pt_co_share_details.agreed_bp_per + (pt_co_share_details.tp_amt + pt_co_share_details.tep_amt) * (pt_co_share_details.agreed_tp_per + pt_co_share_details.agreed_tep_per)) / 100, 2) AS total_irda, ROUND( (ROUND( (pt_co_share_details.bp_amt * pt_co_share_details.agreed_bp_per + (pt_co_share_details.tp_amt + pt_co_share_details.tep_amt) * (pt_co_share_details.agreed_tp_per + pt_co_share_details.agreed_tep_per)) / 100, 2) * 18 / 100), 2) AS gst_on_revenue, ROUND( (ROUND( (pt_co_share_details.bp_amt * pt_co_share_details.agreed_bp_per + (pt_co_share_details.tp_amt + pt_co_share_details.tep_amt) * (pt_co_share_details.agreed_tp_per + pt_co_share_details.agreed_tep_per)) / 100, 2) + ROUND( (ROUND( (pt_co_share_details.bp_amt * pt_co_share_details.agreed_bp_per + (pt_co_share_details.tp_amt + pt_co_share_details.tep_amt) * (pt_co_share_details.agreed_tp_per + pt_co_share_details.agreed_tep_per)) / 100, 2) * 18 / 100), 2)), 2) AS total_amt_received, insurer_statements.invoice_date, insurer_statements.invoice_no, insurer_statements.invoice_amount, ( SELECT (SUM(inv_payment_details.inv_amt) + SUM(inv_payment_details.tds)) AS realization_amount FROM inv_payment_details WHERE inv_payment_details.statement_id = insurer_statements.id AND inv_payment_details.is_active = 1 ) AS realization_amount, ROUND( insurer_statements.invoice_amount - ( SELECT (SUM(inv_payment_details.inv_amt) + SUM(inv_payment_details.tds)) FROM inv_payment_details WHERE inv_payment_details.statement_id = insurer_statements.id AND inv_payment_details.is_active = 1 ), 2) AS outstanding_amount, ( SELECT GROUP_CONCAT(inv_payment_details.utr_no SEPARATOR ', ') AS utr_numbers FROM inv_payment_details WHERE inv_payment_details.statement_id = insurer_statements.id AND inv_payment_details.is_active = 1 ) AS utr_numbers, ( SELECT GROUP_CONCAT(inv_payment_details.received_date SEPARATOR ', ') AS payment_dates FROM inv_payment_details WHERE inv_payment_details.statement_id = insurer_statements.id AND inv_payment_details.is_active = 1 ) AS payment_dates ") ->join('pt_co_share_details', 'policy_transaction.id = pt_co_share_details.pt_id', 'left') ->join('insurer_statements', 'pt_co_share_details.statement_id = insurer_statements.id', 'left') ->join('clients', 'clients.id = policy_transaction.client_id') ->join('client_branch', 'policy_transaction.client_branch_id = client_branch.id', 'left') ->join('client_policy', 'policy_transaction.client_policy_id = client_policy.id', 'left') ->join('user_profiles', 'policy_transaction.created_by = user_profiles.id', 'left') ->join('vehicle', 'policy_transaction.vehicle_id = vehicle.id', 'left') ->join('policy_type', 'policy_transaction.policy_type_id = policy_type.id', 'left') ->join('insurers', 'policy_transaction.insurer_id = insurers.id', 'left') ->join('insurer_branch', 'policy_transaction.insurer_branch_id = insurer_branch.id', 'left') ->join('tpa', 'policy_transaction.tpa_id = tpa.id', 'left') ->join('tpa_branch', 'policy_transaction.tpa_branch_id = tpa_branch.id', 'left') ->join('user_profiles AS sales_user', 'policy_transaction.sales_generated_by = sales_user.id', 'left') ->join('user_profiles AS service_user', 'policy_transaction.serviced_by = service_user.id', 'left') ->where('policy_transaction.is_active', 1); // Check if the start date and end date are provided if ($start_date != 0 && $end_date != 0 && $date_type != 0) { $startDate = date('Y-m-d 00:00:00', strtotime($start_date)); $endDate = date('Y-m-d 23:59:59', strtotime($end_date)); $builder->where('policy_transaction.' . $date_type . '>=', $startDate) ->where('policy_transaction.' . $date_type . '<=', $endDate); } else { // $fromDate = date('Y-m-d', strtotime('-30 days')); // $toDate = date('Y-m-d 23:59:59'); // $builder->where('policy_transaction.created_at >=', $fromDate) // ->where('policy_transaction.created_at <=', $toDate); } if ($client_id != 0) { $builder->where('policy_transaction.client_id', $client_id); } if ($insurer_id != 0) { $builder->where('policy_transaction.insurer_id', $insurer_id); } if ($policy_type_id != 0) { $builder->where('client_policy.policy_type_id', $policy_type_id); } if ($issuer != 0) { $builder->where('policy_transaction.issuer', $issuer); } if ($client_id == 0 && $insurer_id == 0 && $policy_type_id == 0 && $date_type == 0 && $issuer == 0) { $fromDate = date('Y-m-d', strtotime('-30 days')); $toDate = date('Y-m-d 23:59:59'); $builder->where('policy_transaction.created_at >=', $fromDate) ->where('policy_transaction.created_at <=', $toDate); } $builder->orderBy('policy_transaction.id', 'desc'); return $builder->get()->getResultArray(); } // BDS Report NEW Functin for QUERY // public function getBDSReportList($client_id, $policy_id, $branch_id, $issuer) // public function getBDSReportList($start_date = 0, $end_date = 0, $client_id = 0, $insurer_id = 0, $policy_type_id = 0, $date_type = 0, $issuer = 0, $client_branch_id = 0, $insurer_branch_id = 0, $client_policy_id = 0) // { // $date_condition = ''; // if($date_type == 'statement_month' && $start_date != 0 && $end_date != 0) { // $date_condition = " // AND insurer_statements.month >= '".$start_date ."' // AND insurer_statements.month <= '".$end_date ."' // "; // } // $builder = $this->db->table('policy_transaction') // ->select(" // policy_transaction.*, // DATE_FORMAT(policy_transaction.policy_issue_date, '%d %b %Y') AS policy_issue_date, // DATE_FORMAT( // IF(policy_transaction.month IS NULL, // policy_transaction.policy_issue_date, // policy_transaction.month), // '%b %Y') AS policy_issue_month, // CASE // WHEN clients.client_type = 1 THEN 'Group' // WHEN clients.client_type = 2 THEN 'Retail' // ELSE '-' // END AS client_type, // CASE // WHEN policy_transaction.revenue_type = 'NA' THEN 'Fresh' // ELSE 'Renewal' // END AS revenue_type, // CASE // WHEN policy_transaction.action_type = 'inception' THEN 'Policy' // ELSE 'Endorsement' // END AS action_type, // clients.client_name AS client_name, // clients.short_name AS client_short_name, // client_branch.branch_name AS client_branch_name, // client_branch.address1 AS client_address, // policy_type.policy_type, // policy_type.bap, // insurers.name AS insurer_name, // insurers.short_name AS insurer_short_name, // insurer_branch.branch_name AS insurer_branch_name, // insurer_branch.branch_code AS insurer_branch_code, // user_profiles.first_name as user_name, // vehicle.vehicle_no, // tpa.name as tpa_name, // pt_co_share_details.remark as remarks, // pt_co_share_details.bp_amt, // pt_co_share_details.exp_amt, // pt_co_share_details.id as pt_id, // sales_user.first_name as salse_person_name, // service_user.first_name as service_person_name, // ROUND((pt_co_share_details.bp_amt + pt_co_share_details.tp_amt + pt_co_share_details.tep_amt), 2) AS premium_wo_gst, // ROUND((ROUND((pt_co_share_details.bp_amt + pt_co_share_details.tp_amt + pt_co_share_details.tep_amt), 2) * 18 / 100), 2) AS gst_amount, // ROUND((ROUND((pt_co_share_details.bp_amt + pt_co_share_details.tp_amt + pt_co_share_details.tep_amt), 2) + ROUND((ROUND((pt_co_share_details.bp_amt + pt_co_share_details.tp_amt + pt_co_share_details.tep_amt), 2) * 18 / 100), 2)), 2) AS total_premium, // ROUND((pt_co_share_details.tp_amt + pt_co_share_details.tep_amt), 2) AS tp_or_ter, // DATEDIFF(policy_transaction.policy_end_date, CURDATE()) AS days, // (pt_co_share_details.agreed_tp_per + pt_co_share_details.agreed_tep_per) AS agreed_tp_or_ter_per, // pt_co_share_details.agreed_bp_per, // ROUND( // ( // SELECT // ( // SUM(co_share_stmt_details.actual_bp_brokerage_amt) + // SUM(co_share_stmt_details.actual_tp_brokerage_amt) + // SUM(co_share_stmt_details.actual_tep_brokerage_amt) + // SUM(co_share_stmt_details.reward) // ) AS total_irda_amt // FROM // co_share_stmt_details // JOIN insurer_statements ON co_share_stmt_details.statement_id = insurer_statements.id // WHERE // co_share_stmt_details.co_share_id = pt_co_share_details.id // AND co_share_stmt_details.is_active = 1 // AND insurer_statements.is_active = 1 // $date_condition // ), // 2 // ) AS total_irda_amt, // ROUND( // ( // SELECT // ( // SUM(co_share_stmt_details.reward) // ) AS reward // FROM // co_share_stmt_details // JOIN insurer_statements ON co_share_stmt_details.statement_id = insurer_statements.id // WHERE // co_share_stmt_details.co_share_id = pt_co_share_details.id // AND co_share_stmt_details.is_active = 1 // AND insurer_statements.is_active = 1 // $date_condition // ), // 2 // ) AS reward, // ROUND( // ( // SELECT // SUM( // COALESCE(co_share_stmt_details.actual_bp_brokerage_amt, 0) + // COALESCE(co_share_stmt_details.actual_tp_brokerage_amt, 0) + // COALESCE(co_share_stmt_details.actual_tep_brokerage_amt, 0) + // COALESCE(co_share_stmt_details.reward, 0) // ) AS total_irda_amt // FROM // co_share_stmt_details // JOIN pt_co_share_details AS pt_table ON co_share_stmt_details.co_share_id = pt_table.id // JOIN insurer_statements ON co_share_stmt_details.statement_id = insurer_statements.id // WHERE // co_share_stmt_details.co_share_id = pt_co_share_details.id // AND co_share_stmt_details.is_active = 1 // AND pt_table.is_active = 1 // AND insurer_statements.is_active = 1 // AND insurer_statements.invoice_status IS NOT NULL // $date_condition // ), // 2 // ) AS billed_amt, // ROUND( // ( // ( // SELECT // SUM( // COALESCE(co_share_stmt_details.actual_bp_brokerage_amt, 0) // + COALESCE(co_share_stmt_details.actual_tp_brokerage_amt, 0) // + COALESCE(co_share_stmt_details.actual_tep_brokerage_amt, 0) // + COALESCE(co_share_stmt_details.reward, 0) // ) // FROM // co_share_stmt_details // JOIN insurer_statements ON co_share_stmt_details.statement_id = insurer_statements.id // WHERE // co_share_stmt_details.co_share_id = pt_co_share_details.id // AND co_share_stmt_details.is_active = 1 // $date_condition // ) // - // ( // SELECT // SUM( // COALESCE(co_share_stmt_details.actual_bp_brokerage_amt, 0) // + COALESCE(co_share_stmt_details.actual_tp_brokerage_amt, 0) // + COALESCE(co_share_stmt_details.actual_tep_brokerage_amt, 0) // + COALESCE(co_share_stmt_details.reward, 0) // ) // FROM // co_share_stmt_details // JOIN pt_co_share_details AS pt_table ON co_share_stmt_details.co_share_id = pt_table.id // JOIN insurer_statements ON co_share_stmt_details.statement_id = insurer_statements.id // WHERE // co_share_stmt_details.co_share_id = pt_co_share_details.id // AND co_share_stmt_details.is_active = 1 // AND pt_table.is_active = 1 // AND insurer_statements.is_active = 1 // AND insurer_statements.invoice_status IS NULL // $date_condition // ) // ), // 2 // ) AS unbilled_amt // ") // ->join('pt_co_share_details', 'policy_transaction.id = pt_co_share_details.pt_id', 'left') // // ->join('insurer_statements', 'pt_co_share_details.statement_id = insurer_statements.id', 'left') // ->join('clients', 'clients.id = policy_transaction.client_id') // ->join('client_branch', 'policy_transaction.client_branch_id = client_branch.id', 'left') // ->join('client_policy', 'policy_transaction.client_policy_id = client_policy.id', 'left') // ->join('user_profiles', 'policy_transaction.created_by = user_profiles.id', 'left') // ->join('vehicle', 'policy_transaction.vehicle_id = vehicle.id', 'left') // ->join('policy_type', 'policy_transaction.policy_type_id = policy_type.id', 'left') // ->join('insurers', 'pt_co_share_details.insurer_id = insurers.id', 'left') // ->join('insurer_branch', 'pt_co_share_details.insurer_branch_id = insurer_branch.id', 'left') // ->join('tpa', 'policy_transaction.tpa_id = tpa.id', 'left') // ->join('tpa_branch', 'policy_transaction.tpa_branch_id = tpa_branch.id', 'left') // ->join('user_profiles AS sales_user', 'policy_transaction.sales_generated_by = sales_user.id', 'left') // ->join('user_profiles AS service_user', 'policy_transaction.serviced_by = service_user.id', 'left') // ->where('policy_transaction.is_active', 1) // ->where('pt_co_share_details.is_active', 1); // // Check if the start date and end date are provided // if ($start_date != 0 && $end_date != 0 && $date_type != 0 && $date_type != 'statement_month') { // $startDate = date('Y-m-d 00:00:00', strtotime($start_date)); // $endDate = date('Y-m-d 23:59:59', strtotime($end_date)); // $builder->where('policy_transaction.'.$date_type.'>=', $startDate) // ->where('policy_transaction.'.$date_type.'<=', $endDate); // } // // if($date_type == 'statement_month' && $start_date != 0 && $end_date != 0){ // // $startDate = date('Y-m-d 00:00:00', strtotime($start_date)); // // $endDate = date('Y-m-d 23:59:59', strtotime($end_date)); // // $builder->where('policy_transaction.month >=', $startDate) // // ->where('policy_transaction.month <=', $endDate); // // } // // Conditionally join insurer_statements if $date_type == 'statement_month' // if ($date_type == 'statement_month' && $start_date != 0 && $end_date != 0) { // $startDate = date('Y-m-d', strtotime($start_date)); // $endDate = date('Y-m-d', strtotime($end_date)); // $builder->join('co_share_stmt_details', 'pt_co_share_details.id = co_share_stmt_details.co_share_id', 'left') // ->join('insurer_statements', 'co_share_stmt_details.statement_id = insurer_statements.id','left') // ->where('insurer_statements.is_active', 1) // ->where('insurer_statements.month >=', $startDate) // ->where('insurer_statements.month <=', $endDate) // ->groupBy('co_share_stmt_details.co_share_id'); // } // if ($client_id != 0) { // $builder->where('policy_transaction.client_id', $client_id); // } // if ($insurer_id != 0) { // $builder->where('policy_transaction.insurer_id', $insurer_id); // } // if ($client_branch_id != 0) { // $builder->where('policy_transaction.client_branch_id', $client_branch_id); // } // if ($insurer_branch_id != 0) { // $builder->where('policy_transaction.insurer_branch_id', $insurer_branch_id); // } // if ($client_policy_id != 0) { // $builder->where('policy_transaction.client_policy_id', $client_policy_id); // } // if ($policy_type_id != 0) { // $builder->where('client_policy.policy_type_id', $policy_type_id); // } // if ($issuer != 0) { // $builder->where('policy_transaction.issuer', $issuer); // } // if($client_id == 0 && $insurer_id == 0 && $policy_type_id == 0 && $date_type == 0 && $issuer == 0){ // $fromDate = date('Y-m-d', strtotime('-30 days')); // $toDate = date('Y-m-d 23:59:59'); // $builder->where('policy_transaction.created_at >=', $fromDate) // ->where('policy_transaction.created_at <=', $toDate); // } // $builder->orderBy('policy_transaction.id', 'desc'); // $result = $builder->get()->getResultArray(); // // dd($this->db->getLastQuery()); // return $result; // } public function getBDSReportList($start_date = 0, $end_date = 0, $client_id = 0, $insurer_id = 0, $policy_type_id = 0, $date_type = 0, $issuer = 0, $client_branch_id = 0, $insurer_branch_id = 0, $client_policy_id = 0, $where = []) { $date_condition = ''; if ($date_type == 'statement_month' && $start_date != 0 && $end_date != 0) { $date_condition = " AND insurer_statements.month >= '" . $start_date . "' AND insurer_statements.month <= '" . $end_date . "' "; } $builder = $this->db->table('policy_transaction') ->select(" policy_transaction.*, DATE_FORMAT(policy_transaction.policy_issue_date, '%d %b %Y') AS policy_issue_date, DATE_FORMAT( IF(policy_transaction.month IS NULL, policy_transaction.policy_issue_date, policy_transaction.month), '%b %Y') AS policy_issue_month, CASE WHEN clients.client_type = 1 THEN 'Group' WHEN clients.client_type = 2 THEN 'Retail' ELSE '-' END AS client_type, CASE WHEN policy_transaction.revenue_type = 'NA' THEN 'Fresh' ELSE 'Renewal' END AS revenue_type, CASE WHEN policy_transaction.action_type = 'inception' THEN 'Policy' ELSE 'Endorsement' END AS action_type, clients.client_name AS client_name, clients.short_name AS client_short_name, client_branch.branch_name AS client_branch_name, client_branch.address1 AS client_address, policy_type.policy_type, policy_type.bap, insurers.name AS insurer_name, insurers.short_name AS insurer_short_name, insurer_branch.branch_name AS insurer_branch_name, insurer_branch.branch_code AS insurer_branch_code, user_profiles.first_name as user_name, vehicle.vehicle_no, tpa.name as tpa_name, pt_co_share_details.remark as remarks, pt_co_share_details.cop_amt as bp_amt, pt_co_share_details.exp_amt, pt_co_share_details.id as pt_id, sales_user.first_name as salse_person_name, service_user.first_name as service_person_name, ROUND((pt_co_share_details.cop_amt + pt_co_share_details.cotp_amt + pt_co_share_details.cotep_amt), 2) AS premium_wo_gst, ROUND((ROUND((pt_co_share_details.cop_amt + pt_co_share_details.cotp_amt + pt_co_share_details.cotep_amt), 2) * 18 / 100), 2) AS gst_amount, ROUND((ROUND((pt_co_share_details.cop_amt + pt_co_share_details.cotp_amt + pt_co_share_details.cotep_amt), 2) + ROUND((ROUND((pt_co_share_details.cop_amt + pt_co_share_details.cotp_amt + pt_co_share_details.cotep_amt), 2) * 18 / 100), 2)), 2) AS total_premium, ROUND((pt_co_share_details.cotp_amt + pt_co_share_details.cotep_amt), 2) AS tp_or_ter, DATEDIFF(policy_transaction.policy_end_date, CURDATE()) AS days, (pt_co_share_details.agreed_tp_per + pt_co_share_details.agreed_tep_per) AS agreed_tp_or_ter_per, pt_co_share_details.agreed_bp_per, ROUND( ( SELECT ( SUM(co_share_stmt_details.actual_bp_brokerage_amt) + SUM(co_share_stmt_details.actual_tp_brokerage_amt) + SUM(co_share_stmt_details.actual_tep_brokerage_amt) + SUM(co_share_stmt_details.reward) ) AS total_irda_amt FROM co_share_stmt_details JOIN insurer_statements ON co_share_stmt_details.statement_id = insurer_statements.id WHERE co_share_stmt_details.co_share_id = pt_co_share_details.id AND co_share_stmt_details.is_active = 1 AND insurer_statements.is_active = 1 $date_condition ), 2 ) AS total_irda_amt, ROUND( ( SELECT ( SUM(co_share_stmt_details.reward) ) AS reward FROM co_share_stmt_details JOIN insurer_statements ON co_share_stmt_details.statement_id = insurer_statements.id WHERE co_share_stmt_details.co_share_id = pt_co_share_details.id AND co_share_stmt_details.is_active = 1 AND insurer_statements.is_active = 1 $date_condition ), 2 ) AS reward, ROUND( ( SELECT SUM( COALESCE(co_share_stmt_details.actual_bp_brokerage_amt, 0) + COALESCE(co_share_stmt_details.actual_tp_brokerage_amt, 0) + COALESCE(co_share_stmt_details.actual_tep_brokerage_amt, 0) + COALESCE(co_share_stmt_details.reward, 0) ) AS total_irda_amt FROM co_share_stmt_details JOIN pt_co_share_details AS pt_table ON co_share_stmt_details.co_share_id = pt_table.id JOIN insurer_statements ON co_share_stmt_details.statement_id = insurer_statements.id WHERE co_share_stmt_details.co_share_id = pt_co_share_details.id AND co_share_stmt_details.is_active = 1 AND pt_table.is_active = 1 AND insurer_statements.is_active = 1 AND insurer_statements.invoice_status IS NOT NULL $date_condition ), 2 ) AS billed_amt, ROUND( ( ( SELECT SUM( COALESCE(co_share_stmt_details.actual_bp_brokerage_amt, 0) + COALESCE(co_share_stmt_details.actual_tp_brokerage_amt, 0) + COALESCE(co_share_stmt_details.actual_tep_brokerage_amt, 0) + COALESCE(co_share_stmt_details.reward, 0) ) FROM co_share_stmt_details JOIN insurer_statements ON co_share_stmt_details.statement_id = insurer_statements.id WHERE co_share_stmt_details.co_share_id = pt_co_share_details.id AND co_share_stmt_details.is_active = 1 $date_condition ) - ( SELECT SUM( COALESCE(co_share_stmt_details.actual_bp_brokerage_amt, 0) + COALESCE(co_share_stmt_details.actual_tp_brokerage_amt, 0) + COALESCE(co_share_stmt_details.actual_tep_brokerage_amt, 0) + COALESCE(co_share_stmt_details.reward, 0) ) FROM co_share_stmt_details JOIN pt_co_share_details AS pt_table ON co_share_stmt_details.co_share_id = pt_table.id JOIN insurer_statements ON co_share_stmt_details.statement_id = insurer_statements.id WHERE co_share_stmt_details.co_share_id = pt_co_share_details.id AND co_share_stmt_details.is_active = 1 AND pt_table.is_active = 1 AND insurer_statements.is_active = 1 AND insurer_statements.invoice_status IS NULL $date_condition ) ), 2 ) AS unbilled_amt ") ->join('pt_co_share_details', 'policy_transaction.id = pt_co_share_details.pt_id', 'left') // ->join('insurer_statements', 'pt_co_share_details.statement_id = insurer_statements.id', 'left') ->join('clients', 'clients.id = policy_transaction.client_id') ->join('client_branch', 'policy_transaction.client_branch_id = client_branch.id', 'left') ->join('client_policy', 'policy_transaction.client_policy_id = client_policy.id', 'left') ->join('user_profiles', 'policy_transaction.created_by = user_profiles.id', 'left') ->join('vehicle', 'policy_transaction.vehicle_id = vehicle.id', 'left') ->join('policy_type', 'policy_transaction.policy_type_id = policy_type.id', 'left') ->join('insurers', 'pt_co_share_details.insurer_id = insurers.id', 'left') ->join('insurer_branch', 'pt_co_share_details.insurer_branch_id = insurer_branch.id', 'left') ->join('tpa', 'policy_transaction.tpa_id = tpa.id', 'left') ->join('tpa_branch', 'policy_transaction.tpa_branch_id = tpa_branch.id', 'left') ->join('user_profiles AS sales_user', 'policy_transaction.sales_generated_by = sales_user.id', 'left') ->join('user_profiles AS service_user', 'policy_transaction.serviced_by = service_user.id', 'left') ->where('policy_transaction.is_active', 1) ->where('pt_co_share_details.is_active', 1); if ( (!in_array(get_role_id(), [1, 5])) && !( in_array(MANAGEMENT_TEAM_ID, user_team()) || in_array(FINANCE_TEAM_ID, user_team()) || in_array(BUSINESS_TEAM_ID, user_team()) ) ) { if (get_role_id() == 4 && in_array(POS_TEAM_ID, user_team())) { $builder->where('policy_transaction.created_by', get_session_userid()); } } if (!empty($where)) { log_message('info', 'Where condition: ' . json_encode($where)); $builder->where($where); } // Check if the start date and end date are provided if ($start_date != 0 && $end_date != 0 && $date_type != 0 && $date_type != 'statement_month') { $startDate = date('Y-m-d 00:00:00', strtotime($start_date)); $endDate = date('Y-m-d 23:59:59', strtotime($end_date)); $builder->where('policy_transaction.' . $date_type . '>=', $startDate) ->where('policy_transaction.' . $date_type . '<=', $endDate); } // if($date_type == 'statement_month' && $start_date != 0 && $end_date != 0){ // $startDate = date('Y-m-d 00:00:00', strtotime($start_date)); // $endDate = date('Y-m-d 23:59:59', strtotime($end_date)); // $builder->where('policy_transaction.month >=', $startDate) // ->where('policy_transaction.month <=', $endDate); // } // Conditionally join insurer_statements if $date_type == 'statement_month' if ($date_type == 'statement_month' && $start_date != 0 && $end_date != 0) { $startDate = date('Y-m-d', strtotime($start_date)); $endDate = date('Y-m-d', strtotime($end_date)); $builder->join('co_share_stmt_details', 'pt_co_share_details.id = co_share_stmt_details.co_share_id', 'left') ->join('insurer_statements', 'co_share_stmt_details.statement_id = insurer_statements.id', 'left') ->where('insurer_statements.is_active', 1) ->where('insurer_statements.month >=', $startDate) ->where('insurer_statements.month <=', $endDate) ->groupBy('co_share_stmt_details.co_share_id'); } if ($client_id != 0) { $builder->where('policy_transaction.client_id', $client_id); } if ($insurer_id != 0) { $builder->where('policy_transaction.insurer_id', $insurer_id); } if ($client_branch_id != 0) { $builder->where('policy_transaction.client_branch_id', $client_branch_id); } if ($insurer_branch_id != 0) { $builder->where('policy_transaction.insurer_branch_id', $insurer_branch_id); } if ($client_policy_id != 0) { $builder->where('policy_transaction.client_policy_id', $client_policy_id); } if ($policy_type_id != 0) { $builder->where('client_policy.policy_type_id', $policy_type_id); } if ($issuer != 0) { $builder->where('policy_transaction.issuer', $issuer); } if ($client_id == 0 && $insurer_id == 0 && $policy_type_id == 0 && $date_type == 0 && $issuer == 0) { $fromDate = date('Y-m-d', strtotime('-60 days')); $toDate = date('Y-m-d 23:59:59'); if (empty($where)) { $builder->where('policy_transaction.created_at >=', $fromDate) ->where('policy_transaction.created_at <=', $toDate); } } $builder->orderBy('policy_transaction.id', 'desc'); $result = $builder->get()->getResultArray(); // dd($this->db->getLastQuery()); return $result; } // public function getInceptionTranctionListData($start_date = 0, $end_date = 0, $client_id = 0, $insurer_id = 0, $policy_type_id = 0, $date_type = 0, $issuer = 0, $status = 0) // { // // dd($start_date, $end_date, $client_id, $insurer_id, $policy_type_id, $date_type, $issuer, $status); // $builder = $this->db->table('policy_transaction') // ->select(' // policy_transaction.*, // clients.short_name AS client_short_name, // clients.client_code, // clients.client_type, // clients.client_name, // client_branch.branch_name AS client_branch_name, // insurers.name AS insurer_name, // insurers.short_name AS insurer_short_name, // policy_type.policy_type, // pt_co_share_details.agreed_amt AS amount, // pt_co_share_details.bp_amt AS bp, // pt_co_share_details.tp_amt AS tp // ') // ->join('pt_co_share_details', 'policy_transaction.id = pt_co_share_details.pt_id', 'left') // ->join('clients', 'clients.id = policy_transaction.client_id', 'left') // ->join('client_branch', 'policy_transaction.client_branch_id = client_branch.id', 'left') // ->join('insurers', 'pt_co_share_details.insurer_id = insurers.id', 'left') // ->join('client_policy', 'policy_transaction.client_policy_id = client_policy.id', 'left') // ->join('policy_type', 'policy_transaction.policy_type_id = policy_type.id', 'left') // ->where('policy_transaction.is_active', 1) // ->where('policy_transaction.action_type', 'inception'); // if ($start_date != 0 && $end_date != 0 && $date_type != 0) { // $startDate = date('Y-m-d 00:00:00', strtotime($start_date)); // $endDate = date('Y-m-d 23:59:59', strtotime($end_date)); // $builder->where('policy_transaction.'.$date_type.'>=', $startDate) // ->where('policy_transaction.'.$date_type.'<=', $endDate); // }else{ // // $fromDate = date('Y-m-d', strtotime('-30 days')); // // $toDate = date('Y-m-d 23:59:59'); // // $builder->where('policy_transaction.created_at >=', $fromDate) // // ->where('policy_transaction.created_at <=', $toDate); // } // if ($client_id != 0) { // $builder->where('policy_transaction.client_id', $client_id); // } // if ($insurer_id != 0) { // $builder->where('policy_transaction.insurer_id', $insurer_id); // } // if ($policy_type_id != 0) { // $builder->where('client_policy.policy_type_id', $policy_type_id); // } // if ($issuer != 0) { // $builder->where('policy_transaction.issuer', $issuer); // } // if ($status != 0) { // $builder->where('policy_transaction.status', $status); // } // if($client_id == 0 && $insurer_id == 0 && $policy_type_id == 0 && $date_type == 0 && $issuer == 0){ // $fromDate = date('Y-m-d', strtotime('-30 days')); // $toDate = date('Y-m-d 23:59:59'); // $builder->where('policy_transaction.created_at >=', $fromDate) // ->where('policy_transaction.created_at <=', $toDate); // } // $builder->orderBy('policy_transaction.id', 'desc')->limit(10); // $result = $builder->get()->getResultArray(); // // dd($this->db->getLastQuery()); // return $result; // } public function getInceptionTranctionListData($start_date = 0, $end_date = 0, $client_id = 0, $insurer_id = 0, $policy_type_id = 0, $date_type = 0, $issuer = 0, $status = 0, $where = null) { $builder = $this->db->table('policy_transaction') ->select(' policy_transaction.*, clients.short_name AS client_short_name, clients.client_code, clients.client_type, clients.client_name, client_branch.branch_name AS client_branch_name, insurers.name AS insurer_name, insurers.short_name AS insurer_short_name, policy_type.policy_type, pt_co_share_details.agreed_amt AS amount, pt_co_share_details.bp_amt AS bp, pt_co_share_details.tp_amt AS tp, clients.pan ') ->join('pt_co_share_details', 'policy_transaction.id = pt_co_share_details.pt_id', 'left') ->join('clients', 'clients.id = policy_transaction.client_id', 'left') ->join('client_branch', 'policy_transaction.client_branch_id = client_branch.id', 'left') ->join('insurers', 'pt_co_share_details.insurer_id = insurers.id', 'left') ->join('client_policy', 'policy_transaction.client_policy_id = client_policy.id', 'left') ->join('policy_type', 'policy_transaction.policy_type_id = policy_type.id', 'left') ->where('policy_transaction.is_active', 1) ->where('policy_transaction.action_type', 'inception'); if ( (!in_array(get_role_id(), [1, 5])) && !( in_array(MANAGEMENT_TEAM_ID, user_team()) || in_array(FINANCE_TEAM_ID, user_team()) || in_array(BUSINESS_TEAM_ID, user_team()) ) ) { if (get_role_id() == 4 && in_array(POS_TEAM_ID, user_team())) { $builder->where('policy_transaction.created_by', get_session_userid()); } } // Optimize Date Filtering if (!empty($start_date) && !empty($end_date) && !empty($date_type)) { $builder->where("policy_transaction.$date_type >=", date('Y-m-d 00:00:00', strtotime($start_date))) ->where("policy_transaction.$date_type <=", date('Y-m-d 23:59:59', strtotime($end_date))); } // Apply Filters Only When Necessary if (!empty($client_id)) { $builder->where('policy_transaction.client_id', $client_id); } if (!empty($insurer_id)) { $builder->where('policy_transaction.insurer_id', $insurer_id); } if (!empty($policy_type_id)) { $builder->where('client_policy.policy_type_id', $policy_type_id); } if (!empty($issuer)) { $builder->where('policy_transaction.issuer', $issuer); } if (!empty($status)) { $builder->where('policy_transaction.status', $status); } // Default to Last 30 Days if No Filters Are Applied if (empty($client_id) && empty($insurer_id) && empty($policy_type_id) && empty($date_type) && empty($issuer) && empty($where)) { $fromDate = date('Y-m-d', strtotime('-60 days')); $toDate = date('Y-m-d 23:59:59'); $builder->where('policy_transaction.created_at >=', $fromDate) ->where('policy_transaction.created_at <=', $toDate); } if (!empty($where)) { $builder->whereIn('policy_transaction.id', $where); } // Optimize Query Execution $builder->orderBy('policy_transaction.id', 'desc'); return $builder->get()->getResultArray(); } public function getEndorsementTranctionListData($start_date = 0, $end_date = 0, $client_id = 0, $insurer_id = 0, $policy_type_id = 0, $date_type = 0, $issuer = 0, $status = 0) { // dd($start_date, $end_date, $client_id, $insurer_id, $policy_type_id, $date_type, $issuer, $status); $builder = $this->db->table('policy_transaction') ->select(' policy_transaction.*, clients.short_name as client_short_name, clients.client_code, client_branch.branch_name as client_branch_name, insurers.name AS insurer_name, insurers.short_name AS insurer_short_name, policy_type.policy_type ') ->join('pt_co_share_details', 'policy_transaction.id = pt_co_share_details.pt_id', 'left') ->join('clients', 'policy_transaction.client_id = clients.id', 'left') ->join('client_branch', 'policy_transaction.client_branch_id = client_branch.id', 'left') ->join('insurers', 'pt_co_share_details.insurer_id = insurers.id', 'left') ->join('client_policy', 'policy_transaction.client_policy_id = client_policy.id', 'left') ->join('policy_type', 'client_policy.policy_type_id = policy_type.id', 'left') ->where('policy_transaction.is_active', 1) ->where('policy_transaction.action_type !=', 'inception'); if ( (!in_array(get_role_id(), [1, 5])) && !( in_array(MANAGEMENT_TEAM_ID, user_team()) || in_array(FINANCE_TEAM_ID, user_team()) || in_array(BUSINESS_TEAM_ID, user_team()) ) ) { if (get_role_id() == 4 && in_array(POS_TEAM_ID, user_team())) { $builder->where('policy_transaction.created_by', get_session_userid()); } } if ($start_date != 0 && $end_date != 0 && $date_type != 0) { $startDate = date('Y-m-d 00:00:00', strtotime($start_date)); $endDate = date('Y-m-d 23:59:59', strtotime($end_date)); $builder->where('policy_transaction.' . $date_type . '>=', $startDate) ->where('policy_transaction.' . $date_type . '<=', $endDate); } else { // $fromDate = date('Y-m-d', strtotime('-30 days')); // $toDate = date('Y-m-d 23:59:59'); // $builder->where('policy_transaction.created_at >=', $fromDate) // ->where('policy_transaction.created_at <=', $toDate); } if ($client_id != 0) { $builder->where('policy_transaction.client_id', $client_id); } if ($insurer_id != 0) { $builder->where('policy_transaction.insurer_id', $insurer_id); } if ($policy_type_id != 0) { $builder->where('client_policy.policy_type_id', $policy_type_id); } if ($issuer != 0) { $builder->where('policy_transaction.issuer', $issuer); } if ($status != 0) { $builder->where('policy_transaction.status', $status); } if ($client_id == 0 && $insurer_id == 0 && $policy_type_id == 0 && $date_type == 0 && $issuer == 0) { $fromDate = date('Y-m-d', strtotime('-30 days')); $toDate = date('Y-m-d 23:59:59'); $builder->where('policy_transaction.created_at >=', $fromDate) ->where('policy_transaction.created_at <=', $toDate); } $builder->orderBy('policy_transaction.id', 'desc'); return $builder->get()->getResultArray(); } public function getVarienceReportLIst($start_date = 0, $end_date = 0, $client_id = 0, $insurer_id = 0, $policy_type_id = 0, $date_type = 0, $issuer = 0, $client_branch_id = 0, $insurer_branch_id = 0, $client_policy_id = 0) { $builder = $this->db->table('policy_transaction') ->select(" policy_transaction.id, clients.client_name, client_branch.branch_name as client_branch_name, insurers.name AS insurer_name, insurer_branch.branch_name AS insurer_branch_name, policy_type.policy_type, policy_transaction.policy_no, policy_transaction.endorsement_no, pt_co_share_details.exp_amt, pt_co_share_details.variance, ROUND ( (pt_co_share_details.cop_amt + pt_co_share_details.cotp_amt + pt_co_share_details.cotep_amt),2) as original_premium, ROUND( ( SELECT ( SUM(co_share_stmt_details.actual_bp_amt) + SUM(co_share_stmt_details.actual_tp_amt) + SUM(co_share_stmt_details.actual_tep_amt) ) AS total_stmt_amt FROM co_share_stmt_details JOIN insurer_statements ON co_share_stmt_details.statement_id = insurer_statements.id and insurer_statements.is_active = 1 WHERE co_share_stmt_details.co_share_id = pt_co_share_details.id AND co_share_stmt_details.is_active = 1 ), 2 ) AS statement_premium, COALESCE( (pt_co_share_details.cop_amt + pt_co_share_details.cotp_amt + pt_co_share_details.cotep_amt), 0 ) - COALESCE( ( SELECT SUM(co_share_stmt_details.actual_bp_amt) + SUM(co_share_stmt_details.actual_tp_amt) + SUM(co_share_stmt_details.actual_tep_amt) FROM co_share_stmt_details JOIN insurer_statements ON co_share_stmt_details.statement_id = insurer_statements.id AND insurer_statements.is_active = 1 WHERE co_share_stmt_details.co_share_id = pt_co_share_details.id AND co_share_stmt_details.is_active = 1 ), 0 ) AS premium_variance_amt, ROUND( ( SELECT ( SUM(co_share_stmt_details.actual_bp_brokerage_amt) + SUM(co_share_stmt_details.actual_tp_brokerage_amt) + SUM(co_share_stmt_details.actual_tep_brokerage_amt) + SUM(co_share_stmt_details.reward) ) AS total_irda_amt FROM co_share_stmt_details JOIN insurer_statements ON co_share_stmt_details.statement_id = insurer_statements.id and insurer_statements.is_active = 1 WHERE co_share_stmt_details.co_share_id = pt_co_share_details.id AND co_share_stmt_details.is_active = 1 ), 2 ) AS statement_amount, ROUND( pt_co_share_details.exp_amt - ( SELECT ( SUM(co_share_stmt_details.actual_bp_brokerage_amt) + SUM(co_share_stmt_details.actual_tp_brokerage_amt) + SUM(co_share_stmt_details.actual_tep_brokerage_amt) + SUM(co_share_stmt_details.reward) ) FROM co_share_stmt_details JOIN insurer_statements ON co_share_stmt_details.statement_id = insurer_statements.id and insurer_statements.is_active = 1 WHERE co_share_stmt_details.co_share_id = pt_co_share_details.id AND co_share_stmt_details.is_active = 1 ), 2 ) AS variance_amt ") ->join('pt_co_share_details', 'policy_transaction.id = pt_co_share_details.pt_id', 'left') ->join('insurer_statements', 'pt_co_share_details.statement_id = insurer_statements.id', 'left') ->join('clients', 'clients.id = policy_transaction.client_id', 'left') ->join('client_branch', 'client_branch.id = policy_transaction.client_branch_id', 'left') ->join('insurers', 'pt_co_share_details.insurer_id = insurers.id', 'left') ->join('insurer_branch', 'pt_co_share_details.insurer_branch_id = insurer_branch.id', 'left') ->join('client_policy', 'policy_transaction.client_policy_id = client_policy.id', 'left') ->join('policy_type', 'policy_transaction.policy_type_id = policy_type.id', 'left') ->where('policy_transaction.is_active', 1) ->where('pt_co_share_details.is_active', 1) // ->where('insurer_statements.is_active',1); // ->having('variance_amt IS NOT NULL') // ->having('variance_amt !=',0) // ->having('premium_variance_amt IS NOT NULL') // ->having('premium_variance_amt !=',0); // ->group_start() ->having('variance_amt IS NOT NULL') ->orHaving('variance_amt !=', 0) ->having('premium_variance_amt IS NOT NULL') ->orHaving('premium_variance_amt !=', 0); // ->group_end(); // ->where('pt_co_share_details.actual_bp_brokerage_amt IS NOT NULL AND pt_co_share_details.actual_bp_brokerage_amt != 0'); // ->where('pt_co_share_details.variance IS NOT NULL') // ->where('pt_co_share_details.variance !=', 0); if ($start_date != 0 && $end_date != 0 && $date_type != 0) { $startDate = date('Y-m-d 00:00:00', strtotime($start_date)); $endDate = date('Y-m-d 23:59:59', strtotime($end_date)); $builder->where('policy_transaction.' . $date_type . '>=', $startDate) ->where('policy_transaction.' . $date_type . '<=', $endDate); } else { $fromDate = date('Y-m-d', strtotime('-30 days')); $toDate = date('Y-m-d 23:59:59'); $builder->where('policy_transaction.created_at >=', $fromDate) ->where('policy_transaction.created_at <=', $toDate); } if ($client_id != 0) { $builder->where('policy_transaction.client_id', $client_id); } if ($insurer_id != 0) { $builder->where('policy_transaction.insurer_id', $insurer_id); } if ($policy_type_id != 0) { $builder->where('client_policy.policy_type_id', $policy_type_id); } if ($issuer != 0) { $builder->where('policy_transaction.issuer', $issuer); } if ($client_branch_id != 0) { $builder->where('policy_transaction.client_branch_id', $client_branch_id); } if ($insurer_branch_id != 0) { $builder->where('policy_transaction.insurer_branch_id', $insurer_branch_id); } if ($client_policy_id != 0) { $builder->where('policy_transaction.client_policy_id', $client_policy_id); } $builder->orderBy('policy_transaction.id', 'desc'); return $builder->get()->getResultArray(); } public function getBusinessReportList($start_date = 0, $end_date = 0, $client_id = 0, $insurer_id = 0, $policy_type_id = 0, $date_type = 0, $issuer = 0, $status = 0) { $dateThreshold = date('Y-m-d H:i:s', strtotime("- 3 days")); $builder = $this->db->table('policy_transaction') ->select([ 'policy_transaction.id AS policy_trns_id', 'clients.client_name', 'insurers.name AS insurer_name', 'policy_type.policy_type', 'policy_transaction.policy_no', 'policy_transaction.endorsement_no', "CASE WHEN policy_transaction.action_type = 'inception' THEN 'I' ELSE 'E' END AS action_type", 'policy_transaction.action_type as action_type_full', 'pt_co_share_details.bp_amt', 'pt_co_share_details.tp_amt', 'pt_co_share_details.tep_amt', 'policy_transaction.status' ]) ->join('pt_co_share_details', 'policy_transaction.id = pt_co_share_details.pt_id', 'left') ->join('clients', 'clients.id = policy_transaction.client_id', 'left') ->join('insurers', 'pt_co_share_details.insurer_id = insurers.id', 'left') ->join('client_policy', 'policy_transaction.client_policy_id = client_policy.id', 'left') ->join('policy_type', 'policy_transaction.policy_type_id = policy_type.id', 'left') ->join( '(SELECT policy_tran_id, MAX(created_at) AS last_policy_status_change,is_active FROM policy_transaction_status WHERE is_active = 1 GROUP BY policy_tran_id) th', 'policy_transaction.id = th.policy_tran_id' ) ->where("th.last_policy_status_change <= '{$dateThreshold}'", null, false) ->where('policy_transaction.is_active', 1) ->where("policy_transaction.status is not null", null, false) ->whereNotIn("policy_transaction.status", ['completed']) // ->where('policy_transaction.status', 'completed') ->where('(pt_co_share_details.bp_amt IS NULL OR pt_co_share_details.bp_amt = 0)', null, false); if ($start_date != 0 && $end_date != 0 && $date_type != 0) { $startDate = date('Y-m-d 00:00:00', strtotime($start_date)); $endDate = date('Y-m-d 23:59:59', strtotime($end_date)); $builder->where('policy_transaction.' . $date_type . '>=', $startDate) ->where('policy_transaction.' . $date_type . '<=', $endDate); } else { $fromDate = date('Y-m-d', strtotime('-30 days')); $toDate = date('Y-m-d 23:59:59'); $builder->where('policy_transaction.created_at >=', $fromDate) ->where('policy_transaction.created_at <=', $toDate); } if ($client_id != 0) { $builder->where('policy_transaction.client_id', $client_id); } if ($insurer_id != 0) { $builder->where('policy_transaction.insurer_id', $insurer_id); } if ($policy_type_id != 0) { $builder->where('client_policy.policy_type_id', $policy_type_id); } if ($issuer != 0) { $builder->where('policy_transaction.issuer', $issuer); } if ($status != 0) { $builder->where('policy_transaction.status', $status); } $builder->orderBy('policy_transaction.id', 'desc'); // echo $builder->getCompiledSelect(); // exit; $returnData = $builder->get()->getResultArray(); // dd($returnData); return $returnData; } public function getFinanceReportList($start_date = 0, $end_date = 0, $client_id = 0, $insurer_id = 0, $policy_type_id = 0, $date_type = 0, $issuer = 0, $status = 0) { $dateThreshold = date('Y-m-d H:i:s', strtotime("- 3 days")); $builder = $this->db->table('policy_transaction') ->select(" policy_transaction.id, clients.client_name, insurers.name AS insurer_name, policy_type.policy_type, policy_transaction.policy_no, policy_transaction.endorsement_no, CASE WHEN policy_transaction.action_type = 'inception' THEN 'I' ELSE 'E' END AS action_type, policy_transaction.action_type AS action_type_full, pt_co_share_details.exp_amt, pt_co_share_details.variance, policy_transaction.status ") ->join('pt_co_share_details', 'policy_transaction.id = pt_co_share_details.pt_id', 'left') ->join('clients', 'clients.id = policy_transaction.client_id', 'left') ->join('insurers', 'pt_co_share_details.insurer_id = insurers.id', 'left') ->join('client_policy', 'policy_transaction.client_policy_id = client_policy.id', 'left') ->join('policy_type', 'policy_transaction.policy_type_id = policy_type.id', 'left') ->join( '(SELECT policy_tran_id, MAX(created_at) AS last_policy_status_change,is_active FROM policy_transaction_status WHERE is_active = 1 GROUP BY policy_tran_id) th', 'policy_transaction.id = th.policy_tran_id' ) ->where("th.last_policy_status_change <= '{$dateThreshold}'", null, false) ->where('policy_transaction.is_active', 1) // ->where('policy_transaction.status', 'completed') ->where('COALESCE(pt_co_share_details.agreed_bp_per, 0) + COALESCE(pt_co_share_details.agreed_tp_per, 0) + COALESCE(pt_co_share_details.agreed_tep_per, 0) = 0') ->where('COALESCE(pt_co_share_details.actual_bp_amt, 0) + COALESCE(pt_co_share_details.actual_tp_amt, 0) + COALESCE(pt_co_share_details.actual_tep_amt, 0) = 0') ->where('COALESCE(pt_co_share_details.actual_bp_brokerage_amt, 0) + COALESCE(pt_co_share_details.actual_tp_brokerage_amt, 0) + COALESCE(pt_co_share_details.actual_tep_brokerage_amt, 0) = 0') ->where("policy_transaction.status is not null", null, false) ->whereNotIn("policy_transaction.status", ['completed']); if ($start_date != 0 && $end_date != 0 && $date_type != 0) { $startDate = date('Y-m-d 00:00:00', strtotime($start_date)); $endDate = date('Y-m-d 23:59:59', strtotime($end_date)); $builder->where('policy_transaction.' . $date_type . '>=', $startDate) ->where('policy_transaction.' . $date_type . '<=', $endDate); } else { $fromDate = date('Y-m-d', strtotime('-30 days')); $toDate = date('Y-m-d 23:59:59'); $builder->where('policy_transaction.created_at >=', $fromDate) ->where('policy_transaction.created_at <=', $toDate); } if ($client_id != 0) { $builder->where('policy_transaction.client_id', $client_id); } if ($insurer_id != 0) { $builder->where('policy_transaction.insurer_id', $insurer_id); } if ($policy_type_id != 0) { $builder->where('client_policy.policy_type_id', $policy_type_id); } if ($issuer != 0) { $builder->where('policy_transaction.issuer', $issuer); } if ($status != 0) { $builder->where('policy_transaction.status', $status); } $builder->orderBy('policy_transaction.id', 'desc'); return $builder->get()->getResultArray(); } public function getOutstandingReportList_OLD($start_date = 0, $end_date = 0, $client_id = 0, $insurer_id = 0, $policy_type_id = 0, $date_type = 0, $issuer = 0, $status = 0) { $builder = $this->db->table('policy_transaction') ->select(" policy_transaction.id, clients.client_name, insurers.name AS insurer_name, policy_type.policy_type, policy_transaction.policy_no, policy_transaction.endorsement_no, CASE WHEN policy_transaction.action_type = 'inception' THEN 'I' ELSE 'E' END AS action_type, pt_co_share_details.exp_amt, pt_co_share_details.variance, insurer_statements.invoice_amount, insurer_statements.invoice_status, ROUND((pt_co_share_details.actual_bp_brokerage_amt + pt_co_share_details.actual_tp_brokerage_amt + pt_co_share_details.actual_tep_brokerage_amt), 2) AS realization_amount2, ( SELECT (SUM(inv_payment_details.inv_amt) + SUM(inv_payment_details.tds)) AS realization_amount FROM inv_payment_details WHERE inv_payment_details.statement_id = insurer_statements.id AND inv_payment_details.is_active = 1 ) AS realization_amount, ROUND( insurer_statements.invoice_amount - ( SELECT (SUM(inv_payment_details.inv_amt) + SUM(inv_payment_details.tds)) FROM inv_payment_details WHERE inv_payment_details.statement_id = insurer_statements.id AND inv_payment_details.is_active = 1 ), 2) AS outstanding_amount ") ->join('pt_co_share_details', 'policy_transaction.id = pt_co_share_details.pt_id', 'left') ->join('insurer_statements', 'pt_co_share_details.statement_id = insurer_statements.id', 'left') ->join('inv_payment_details', 'insurer_statements.id = inv_payment_details.statement_id', 'left') ->join('clients', 'clients.id = policy_transaction.client_id', 'left') ->join('insurers', 'pt_co_share_details.insurer_id = insurers.id', 'left') ->join('client_policy', 'policy_transaction.client_policy_id = client_policy.id', 'left') ->join('policy_type', 'policy_transaction.policy_type_id = policy_type.id', 'left') ->where('policy_transaction.is_active', 1); // Date range filtering if ($start_date != 0 && $end_date != 0 && $date_type != 0) { $startDate = date('Y-m-d 00:00:00', strtotime($start_date)); $endDate = date('Y-m-d 23:59:59', strtotime($end_date)); $builder->where('policy_transaction.' . $date_type . '>=', $startDate) ->where('policy_transaction.' . $date_type . '<=', $endDate); } else { $fromDate = date('Y-m-d', strtotime('-30 days')); $toDate = date('Y-m-d 23:59:59'); $builder->where('policy_transaction.created_at >=', $fromDate) ->where('policy_transaction.created_at <=', $toDate); } // Additional filters if ($client_id != 0) { $builder->where('policy_transaction.client_id', $client_id); } if ($insurer_id != 0) { $builder->where('policy_transaction.insurer_id', $insurer_id); } if ($policy_type_id != 0) { $builder->where('client_policy.policy_type_id', $policy_type_id); } if ($issuer != 0) { $builder->where('policy_transaction.issuer', $issuer); } if ($status != 0) { $builder->where('policy_transaction.status', $status); } // Filter where outstanding_amount is not null $builder->having('outstanding_amount IS NOT NULL'); $builder->orderBy('policy_transaction.id', 'desc'); return $builder->get()->getResultArray(); } public function getOutstandingReportList($start_date = 0, $end_date = 0, $insurer_id = 0, $insurer_branch_id = 0) { $builder = $this->db->table('insurer_statements s') ->select(' s.id, s.insurer_id, s.branch_id, ins.short_name, ib.branch_name, s.month, s.line_items, s.stmt_sno, s.invoice_status, s.invoice_date, s.invoice_no, s.invoice_amount, COALESCE(SUM(p.inv_amt) + SUM(p.tds) + SUM(p.gst), 0) AS total_paid, (s.invoice_amount - COALESCE(SUM(p.inv_amt) + SUM(p.tds) + SUM(p.gst), 0)) AS outstanding_amount ') ->join('inv_payment_details p', 's.id = p.statement_id', 'left') ->join('insurers ins', 's.insurer_id = ins.id') ->join('insurer_branch ib', 's.branch_id = ib.id') ->where('s.is_active', 1) ->where('p.is_active', 1) ->groupBy('s.id, s.invoice_no, s.invoice_date, s.invoice_amount') ->having('outstanding_amount >', 0); // ->get(); // Date range filtering if ($start_date != 0 && $end_date != 0) { $builder->where('s.month >=', $start_date) ->where('s.month <=', $end_date); } if ($insurer_id != 0) { $builder->where('s.insurer_id', $insurer_id); } if ($insurer_branch_id != 0) { $builder->where('s.branch_id', $insurer_branch_id); } $builder->orderBy('s.id', 'desc'); return $builder->get()->getResultArray(); } //function for fetch renewal report data public function getRenewalReportData($start_date = null, $end_date = null, $client_type = null, $client = null, $issuer = null) { $fromDate = date('Y-m-d', strtotime('-60 days')); $toDate = date('Y-m-d 23:59:59'); if (!empty($start_date) && !empty($end_date)) { $fromDate = change_date_format($start_date); $toDate = change_date_format($end_date); } $query = $this->db->table('policy_transaction pt') ->select(' pt.*, c.client_name, c.short_name AS client_short_name, c.client_type, policy_type.policy_type, i.name as insurer_name, ib.branch_name as insurer_branch_name, vehicle.vehicle_no, leads.status as lead_status ') ->join('clients c', 'pt.client_id = c.id', 'left') ->join('pt_co_share_details pt_co', 'pt.id = pt_co.pt_id and pt_co.co_share_type = 1', 'left') ->join('insurers i', 'pt_co.insurer_id = i.id', 'left') ->join('insurer_branch ib', 'pt_co.insurer_branch_id = ib.id', 'left') ->join('policy_type', 'pt.policy_type_id = policy_type.id', 'left') ->join('vehicle', 'pt.vehicle_id = vehicle.id and vehicle.is_active = 1', 'left') ->join('leads', 'pt.client_policy_id = leads.source_policy_id and leads.source_policy_id != 0 and leads.is_active = 1', 'left') ->where('pt.policy_end_date >=', $fromDate) ->where('pt.policy_end_date <=', $toDate) ->where('pt.is_active', 1) ->where('pt_co.is_active', 1) ->where('pt.action_type', "inception"); // Apply filters if parameters are provided if (!empty($client_type)) { $query->where('c.client_type', $client_type); } if (!empty($client)) { $query->where('pt.client_id', $client); } if (!empty($issuer)) { // Corrected condition to check $issuer $query->where('pt.issuer', $issuer); } $query->groupBy('pt.id'); $query->orderBy('pt.id', 'DESC'); // Fetch and return results $results = $query->get()->getResultArray(); // print($this->db->getLastQuery()); die; return $results; } public function getBDSRenewalData() { // Increase GROUP_CONCAT limit $this->db->query("SET SESSION group_concat_max_len = 1000000;"); $builder = $this->db->table('policy_transaction pt'); $builder->select([ 'SUM(CASE WHEN pt.policy_end_date < CURDATE() THEN 1 ELSE 0 END) AS Expired', 'SUM(CASE WHEN pt.policy_end_date BETWEEN CURDATE() AND (CURDATE() + INTERVAL 1 MONTH) THEN 1 ELSE 0 END) AS `Renewal Pending`', 'GROUP_CONCAT(CASE WHEN pt.policy_end_date < CURDATE() THEN pt.id ELSE NULL END) AS Expired_ids', 'GROUP_CONCAT(CASE WHEN pt.policy_end_date BETWEEN CURDATE() AND (CURDATE() + INTERVAL 1 MONTH) THEN pt.id ELSE NULL END) AS Renewal_Pending_ids' ]); $builder->where("pt.policy_end_date IS NOT NULL", null, false); $builder->where('pt.is_active', 1); // Self join to check if a policy has been renewed $builder->join('policy_transaction renewed', 'renewed.source_client_policy_id = pt.client_policy_id and renewed.client_id = pt.client_id and renewed.client_branch_id = pt.client_branch_id', 'left'); // Filter for expired or expiring policies $builder->where("(pt.policy_end_date < CURDATE() OR pt.policy_end_date BETWEEN CURDATE() AND (CURDATE() + INTERVAL 1 MONTH))", null, false); $builder->where('renewed.id IS NULL', null, false); $query = $builder->get(); $result = $query->getResultArray(); $total = 0; foreach ($result[0] as $key => $value) { if ($key !== 'Expired_ids' && $key !== 'Renewal_Pending_ids') { $total += $value; } } // Ensure ID fields are arrays (not null) $result[0]['Expired_ids'] = $result[0]['Expired_ids'] ? $result[0]['Expired_ids'] : []; $result[0]['Renewal Pending_ids'] = $result[0]['Renewal_Pending_ids'] ? $result[0]['Renewal_Pending_ids'] : []; // Add total count $result[0]['total'] = $total; return $result[0]; } }