feat(MED-171): update benefits info in company members table
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
DROP FUNCTION IF EXISTS medreport.get_benefits_usages_for_company_members(uuid);
|
||||
|
||||
CREATE OR REPLACE FUNCTION medreport.get_benefits_usages_for_company_members(p_account_id uuid)
|
||||
returns table (
|
||||
personal_account_id uuid,
|
||||
benefit_amount numeric,
|
||||
benefit_unused_amount numeric
|
||||
)
|
||||
language plpgsql
|
||||
as $$
|
||||
begin
|
||||
return query
|
||||
with benefit_recipient_accounts as (
|
||||
-- Find all personal accounts that have received benefits from this company
|
||||
select distinct account_id
|
||||
from medreport.account_balance_entries
|
||||
where source_company_id = p_account_id
|
||||
and entry_type = 'benefit'
|
||||
)
|
||||
select
|
||||
bra.account_id as personal_account_id,
|
||||
coalesce(sum(case when abe.entry_type = 'benefit' and abe.source_company_id = p_account_id then abe.amount else 0 end), 0) as benefit_amount,
|
||||
coalesce(sum(case when abe.entry_type = 'benefit' and abe.source_company_id = p_account_id then abe.amount when abe.entry_type = 'purchase' then abe.amount else 0 end), 0) as benefit_unused_amount
|
||||
from benefit_recipient_accounts bra
|
||||
left join medreport.account_balance_entries abe on abe.account_id = bra.account_id
|
||||
group by bra.account_id;
|
||||
end;
|
||||
$$;
|
||||
|
||||
grant execute on function medreport.get_benefits_usages_for_company_members(uuid) to authenticated, service_role;
|
||||
Reference in New Issue
Block a user