numerus/deploy/quote.sql
jordi fita mas 35b12f7ea4 Add relations for sales quotations and their products
They are mostly the same as invoices, but the contact and payment method
are optional, thus, like other optionals fields, i created relations to
link these that have payment method or contact, to avoid NULL columns in
quote.

Still missing functions to add and edit quotations, and views to compute
their tax and total amount.
2023-06-06 21:08:31 +02:00

49 lines
1.3 KiB
PL/PgSQL

-- Deploy numerus:quote to pg
-- requires: roles
-- requires: schema_numerus
-- requires: company
-- requires: quote_status
-- requires: currency
-- requires: tag_name
begin;
set search_path to numerus, public;
create table quote (
quote_id serial primary key,
company_id integer not null references company,
slug uuid not null unique default gen_random_uuid(),
quote_number text not null constraint quote_number_not_empty check(length(trim(quote_number)) > 1),
quote_date date not null default current_date,
quote_status text not null default 'created' references quote_status,
terms_and_conditions text not null default '',
notes text not null default '',
tags tag_name[] not null default '{}',
currency_code text not null references currency,
created_at timestamptz not null default current_timestamp
);
create index on quote using gin (tags);
grant select, insert, update, delete on table quote to invoicer;
grant select, insert, update, delete on table quote to admin;
grant usage on sequence quote_quote_id_seq to invoicer;
grant usage on sequence quote_quote_id_seq to admin;
alter table quote enable row level security;
create policy company_policy
on quote
using (
exists(
select 1
from company_user
join user_profile using (user_id)
where company_user.company_id = quote.company_id
)
);
commit;