MERGE_UAT_BUG_FIXES

This commit is contained in:
Ubuntu 2026-07-02 12:56:53 +05:30
commit d4fe43b48d

View File

@ -214,105 +214,108 @@ SQL;
/** Metabase #186: CLAIMS EXPERIENCE SUMMARY */ /** Metabase #186: CLAIMS EXPERIENCE SUMMARY */
public function claims_experience_summary(int $policyId): array public function claims_experience_summary(int $policyId): array
{ {
$sql = <<<'SQL' $sql = <<<'SQL'
SELECT SELECT
/* run days */ /* run days */
/* DATEDIFF(
DATEDIFF( LEAST(CURDATE(), cp.policy_end_date),
MAX(COALESCE(tm.claim_dump_date, cp.policy_end_date)), cp.policy_start_date
cp.policy_start_date ) + 1 AS run_days,
) + 1 AS run_days,
/* earned premium */
FORMAT(
(prem.premium_as_on_date / 365)
* (DATEDIFF(
MAX(COALESCE(tm.claim_dump_date, cp.policy_end_date)),
cp.policy_start_date
) + 1)
, 0) AS earned_premium,
*/
prem.premium_as_on_date,
/* earned premium */
FORMAT(
(prem.premium_as_on_date / 365) *
(
DATEDIFF( DATEDIFF(
LEAST(CURDATE(), cp.policy_end_date), LEAST(CURDATE(), cp.policy_end_date),
cp.policy_start_date cp.policy_start_date
) + 1 AS run_days, ) + 1
),
2
) AS earned_premium,
FORMAT( /* claims reported */
(prem.premium_as_on_date / 365) * FORMAT(COUNT(tm.id), 0) AS claims_reported,
( \t\t/* incurred claims count */
DATEDIFF( \tFORMAT(
LEAST(CURDATE(), cp.policy_end_date), \t SUM(
cp.policy_start_date \t CASE
) + 1 \t WHEN tcs.claim_status IN ('Settled', 'Paid') THEN 1
), \t WHEN tcs.claim_status NOT IN ('Settled', 'Paid', 'Rejected', 'Denied') THEN 1
2 \t ELSE 0
) AS earned_premium, \t END
\t )
, 0) AS incurred_claims,
/* incurred amount */
FORMAT(
COALESCE(SUM(
CASE
WHEN tcs.claim_status IN ('Settled', 'Paid')
THEN CAST(NULLIF(tm.approved_amount, '') AS DECIMAL(15,2))
WHEN tcs.claim_status NOT IN ('Settled', 'Paid', 'Rejected', 'Denied')
THEN CAST(NULLIF(tm.claim_amount, '') AS DECIMAL(15,2))
ELSE 0
END
), 0)
, 0) AS incurred_amount,
/* incurred ratio */
CONCAT(
ROUND(
COALESCE(SUM(
CASE
WHEN tcs.claim_status IN ('Settled', 'Paid')
THEN CAST(NULLIF(tm.approved_amount, '') AS DECIMAL(15,2))
WHEN tcs.claim_status NOT IN ('Settled', 'Paid', 'Rejected', 'Denied')
THEN CAST(NULLIF(tm.claim_amount, '') AS DECIMAL(15,2))
ELSE 0
END
), 0)
/ NULLIF(
(prem.premium_as_on_date / 365)
* DATEDIFF(
MAX(COALESCE(tm.claim_dump_date, cp.policy_end_date)),
cp.policy_start_date
)
, 0) * 100
, 2)
, '%') AS incurred_ratio,
/* claims reported */ /* rejection rate */
FORMAT(COUNT(tm.id), 0) AS claims_reported, CONCAT(
\t\t/* incurred claims count */ ROUND(
\tFORMAT( SUM(CASE WHEN tcs.claim_status IN ('Rejected', 'Denied') THEN 1 ELSE 0 END)
\t SUM( / NULLIF(COUNT(tm.id), 0) * 100
\t CASE , 2)
\t WHEN tcs.claim_status IN ('Settled', 'Paid') THEN 1 , '%') AS rejection_rate,
\t WHEN tcs.claim_status NOT IN ('Settled', 'Paid', 'Rejected', 'Denied') THEN 1
\t ELSE 0
\t END
\t )
, 0) AS incurred_claims,
/* incurred amount */ /* projected claims */
FORMAT( FORMAT(
COALESCE(SUM( (
CASE COALESCE(SUM(
WHEN tcs.claim_status IN ('Settled', 'Paid') CASE
THEN CAST(NULLIF(tm.approved_amount, '') AS DECIMAL(15,2)) WHEN tcs.claim_status IN ('Settled', 'Paid')
WHEN tcs.claim_status NOT IN ('Settled', 'Paid', 'Rejected', 'Denied') THEN CAST(NULLIF(tm.approved_amount, '') AS DECIMAL(15,2))
THEN CAST(NULLIF(tm.claim_amount, '') AS DECIMAL(15,2)) WHEN tcs.claim_status NOT IN ('Settled', 'Paid', 'Rejected', 'Denied')
ELSE 0 THEN CAST(NULLIF(tm.claim_amount, '') AS DECIMAL(15,2))
END ELSE 0
), 0) END
, 0) AS incurred_amount, ), 0)
/ NULLIF(
DATEDIFF(
MAX(COALESCE(tm.claim_dump_date, cp.policy_end_date)),
cp.policy_start_date
), 0
)
* 365
) * 1.10
, 0) AS projected_claims,
/* incurred ratio */ /* projected ratio */
CONCAT( CONCAT(
ROUND( ROUND(
COALESCE(SUM( (
CASE
WHEN tcs.claim_status IN ('Settled', 'Paid')
THEN CAST(NULLIF(tm.approved_amount, '') AS DECIMAL(15,2))
WHEN tcs.claim_status NOT IN ('Settled', 'Paid', 'Rejected', 'Denied')
THEN CAST(NULLIF(tm.claim_amount, '') AS DECIMAL(15,2))
ELSE 0
END
), 0)
/ NULLIF(
(prem.premium_as_on_date / 365)
* DATEDIFF(
MAX(COALESCE(tm.claim_dump_date, cp.policy_end_date)),
cp.policy_start_date
)
, 0) * 100
, 2)
, '%') AS incurred_ratio,
/* rejection rate */
CONCAT(
ROUND(
SUM(CASE WHEN tcs.claim_status IN ('Rejected', 'Denied') THEN 1 ELSE 0 END)
/ NULLIF(COUNT(tm.id), 0) * 100
, 2)
, '%') AS rejection_rate,
/* projected claims */
FORMAT(
( (
COALESCE(SUM( COALESCE(SUM(
CASE CASE
@ -331,73 +334,49 @@ SQL;
) )
* 365 * 365
) * 1.10 ) * 1.10
, 0) AS projected_claims, )
/ NULLIF(prem.premium_as_on_date, 0) * 100
, 2)
, '%') AS projected_ratio
/* projected ratio */ FROM client_policy cp
CONCAT(
ROUND(
(
(
COALESCE(SUM(
CASE
WHEN tcs.claim_status IN ('Settled', 'Paid')
THEN CAST(NULLIF(tm.approved_amount, '') AS DECIMAL(15,2))
WHEN tcs.claim_status NOT IN ('Settled', 'Paid', 'Rejected', 'Denied')
THEN CAST(NULLIF(tm.claim_amount, '') AS DECIMAL(15,2))
ELSE 0
END
), 0)
/ NULLIF(
DATEDIFF(
MAX(COALESCE(tm.claim_dump_date, cp.policy_end_date)),
cp.policy_start_date
), 0
)
* 365
) * 1.10
)
/ NULLIF(prem.premium_as_on_date, 0) * 100
, 2)
, '%') AS projected_ratio
FROM client_policy cp JOIN (
SELECT
ep2.client_policy_id,
COALESCE(SUM(
CASE
WHEN e2.change_event = 'inception'
THEN ep2.rata_premimum
WHEN e2.change_event != 'inception'
AND (ep2.date_of_exit IS NULL OR ep2.date_of_exit = '')
THEN ep2.rata_premimum
WHEN ep2.date_of_exit IS NOT NULL
AND ep2.date_of_exit != ''
AND ep2.claim_status = 0
THEN -ep2.rata_premimum
ELSE 0
END
), 0) AS premium_as_on_date
FROM employee_polices ep2
JOIN employees e2 ON e2.id = ep2.employee_id
WHERE ep2.client_policy_id = :policy_id:
AND ep2.is_active = 1
GROUP BY ep2.client_policy_id
) prem ON prem.client_policy_id = cp.id
JOIN ( JOIN ticket_master tm
SELECT ON tm.client_policy_id = cp.id
ep2.client_policy_id, AND tm.is_active = 1
COALESCE(SUM(
CASE
WHEN e2.change_event = 'inception'
THEN ep2.rata_premimum
WHEN e2.change_event != 'inception'
AND (ep2.date_of_exit IS NULL OR ep2.date_of_exit = '')
THEN ep2.rata_premimum
WHEN ep2.date_of_exit IS NOT NULL
AND ep2.date_of_exit != ''
AND ep2.claim_status = 0
THEN -ep2.rata_premimum
ELSE 0
END
), 0) AS premium_as_on_date
FROM employee_polices ep2
JOIN employees e2 ON e2.id = ep2.employee_id
WHERE ep2.client_policy_id = :policy_id:
AND ep2.is_active = 1
GROUP BY ep2.client_policy_id
) prem ON prem.client_policy_id = cp.id
JOIN ticket_master tm JOIN ticket_claim_status tcs
ON tm.client_policy_id = cp.id ON tcs.id = tm.claim_status_id
AND tm.is_active = 1
JOIN ticket_claim_status tcs WHERE cp.id = :policy_id:
ON tcs.id = tm.claim_status_id
WHERE cp.id = :policy_id: GROUP BY cp.id, cp.policy_start_date, prem.premium_as_on_date;
SQL;
GROUP BY cp.id, cp.policy_start_date, prem.premium_as_on_date; return $this->runKpiQuery($sql, $policyId);
SQL;
return $this->runKpiQuery($sql, $policyId);
} }
/** Metabase #190: Claim Amount by Gender */ /** Metabase #190: Claim Amount by Gender */