-- Deploy numerus:invoice_amount to pg -- requires: schema_numerus -- requires: invoice_product -- requires: invoice_tax_amount begin; set search_path to numerus, public; create or replace view invoice_amount as with taxable as ( select invoice_id , sum(round(price * quantity * (1 - discount_rate))::integer)::integer as subtotal from invoice_product group by invoice_id ), taxes as ( select invoice_id , sum(amount)::integer as tax_amount from invoice_tax_amount group by invoice_id ) select invoice_id , subtotal , subtotal + coalesce(tax_amount, 0) as total from taxable left join taxes using (invoice_id) ; grant select on table invoice_amount to invoicer; grant select on table invoice_amount to admin; commit;