DatabaseProgramming: 03 Invoice remaining balance.sql

File 03 Invoice remaining balance.sql, 434 bytes (added by 231139, 10 days ago)
Line 
1CREATE OR REPLACE FUNCTION public.fn_get_invoice_remaining_balance(p_invoice_id bigint)
2RETURNS numeric
3LANGUAGE sql
4STABLE
5AS $$
6 SELECT GREATEST(
7 i.total_amount - COALESCE(SUM(p.amount) FILTER (WHERE p.status = 'completed'), 0),
8 0
9 )
10 FROM public.invoices i
11 LEFT JOIN public.payments p ON p.invoice_id = i.invoice_id
12 WHERE i.invoice_id = p_invoice_id
13 GROUP BY i.invoice_id, i.total_amount;
14$$;
15