feat(MED-97): update cart flow for using benefits
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
alter table medreport.account_balance_entries add column "is_analysis_order" boolean;
|
||||
alter table medreport.account_balance_entries add column "is_analysis_package_order" boolean;
|
||||
|
||||
drop function if exists medreport.consume_account_balance(uuid, numeric, text, text);
|
||||
|
||||
-- Create function to consume balance (for purchases)
|
||||
create or replace function medreport.consume_account_balance(
|
||||
p_account_id uuid,
|
||||
p_amount numeric,
|
||||
p_description text,
|
||||
p_reference_id text default null,
|
||||
p_is_analysis_order boolean default false,
|
||||
p_is_analysis_package_order boolean default false
|
||||
)
|
||||
returns boolean
|
||||
language plpgsql
|
||||
security definer
|
||||
as $$
|
||||
declare
|
||||
current_balance numeric;
|
||||
remaining_amount numeric := p_amount;
|
||||
entry_record record;
|
||||
consumed_amount numeric;
|
||||
begin
|
||||
-- Get current balance
|
||||
current_balance := medreport.get_account_balance(p_account_id);
|
||||
|
||||
-- Check if sufficient balance
|
||||
if current_balance < p_amount then
|
||||
return false;
|
||||
end if;
|
||||
|
||||
-- Record the consumption
|
||||
insert into medreport.account_balance_entries (
|
||||
account_id,
|
||||
amount,
|
||||
entry_type,
|
||||
description,
|
||||
reference_id,
|
||||
created_by,
|
||||
is_analysis_order,
|
||||
is_analysis_package_order
|
||||
) values (
|
||||
p_account_id,
|
||||
-p_amount,
|
||||
'purchase',
|
||||
p_description,
|
||||
p_reference_id,
|
||||
auth.uid(),
|
||||
p_is_analysis_order,
|
||||
p_is_analysis_package_order
|
||||
);
|
||||
|
||||
return true;
|
||||
end;
|
||||
$$;
|
||||
|
||||
-- Grant execute permission
|
||||
grant execute on function medreport.consume_account_balance(uuid, numeric, text, text, boolean, boolean) to authenticated, service_role;
|
||||
Reference in New Issue
Block a user