mirror of
https://github.com/renee-png/acmcc.git
synced 2026-06-21 09:50:01 +00:00
Add ACMCC app source, Supabase backend, and project config
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
CREATE OR REPLACE FUNCTION public.get_required_approvals_for_bill(p_bill_id uuid)
|
||||
RETURNS integer
|
||||
LANGUAGE plpgsql
|
||||
STABLE SECURITY DEFINER
|
||||
SET search_path TO 'public'
|
||||
AS $function$
|
||||
DECLARE
|
||||
v_assoc uuid;
|
||||
v_amount numeric;
|
||||
v_vendor text;
|
||||
v_rule public.bill_approval_rules%ROWTYPE;
|
||||
v_required integer;
|
||||
BEGIN
|
||||
SELECT b.association_id, b.amount, COALESCE(v.name, b.notes, '')
|
||||
INTO v_assoc, v_amount, v_vendor
|
||||
FROM public.bills b
|
||||
LEFT JOIN public.vendors v ON v.id = b.vendor_id
|
||||
WHERE b.id = p_bill_id;
|
||||
|
||||
IF v_assoc IS NULL THEN RETURN NULL; END IF;
|
||||
|
||||
SELECT * INTO v_rule FROM public.bill_approval_rules WHERE association_id = v_assoc;
|
||||
IF v_rule.id IS NULL OR v_rule.enabled = false THEN
|
||||
RETURN NULL;
|
||||
END IF;
|
||||
|
||||
SELECT required_approvals INTO v_required
|
||||
FROM public.bill_approval_rule_vendor_exceptions
|
||||
WHERE rule_id = v_rule.id AND lower(vendor_name) = lower(v_vendor)
|
||||
LIMIT 1;
|
||||
IF v_required IS NOT NULL THEN RETURN v_required; END IF;
|
||||
|
||||
SELECT required_approvals INTO v_required
|
||||
FROM public.bill_approval_rule_thresholds
|
||||
WHERE rule_id = v_rule.id
|
||||
AND COALESCE(v_amount,0) >= min_amount
|
||||
AND (max_amount IS NULL OR COALESCE(v_amount,0) <= max_amount)
|
||||
ORDER BY min_amount DESC
|
||||
LIMIT 1;
|
||||
IF v_required IS NOT NULL THEN RETURN v_required; END IF;
|
||||
|
||||
RETURN v_rule.required_approvals;
|
||||
END;
|
||||
$function$;
|
||||
Reference in New Issue
Block a user