DatabaseProgramming: 03 Invoice remaining balance.sql
| File 03 Invoice remaining balance.sql, 434 bytes (added by , 10 days ago) |
|---|
| Line | |
|---|---|
| 1 | CREATE OR REPLACE FUNCTION public.fn_get_invoice_remaining_balance(p_invoice_id bigint) |
| 2 | RETURNS numeric |
| 3 | LANGUAGE sql |
| 4 | STABLE |
| 5 | AS $$ |
| 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 |
