48 lines
1.7 KiB
PL/PgSQL
48 lines
1.7 KiB
PL/PgSQL
-- Deploy camper:payment to pg
|
|
-- requires: roles
|
|
-- requires: schema_camper
|
|
-- requires: company
|
|
-- requires: campsite_type
|
|
-- requires: payment_status
|
|
-- requires: positive_integer
|
|
-- requires: nonnegative_integer
|
|
-- requires: percentage
|
|
-- requires: currency_code
|
|
-- requires: currency
|
|
|
|
begin;
|
|
|
|
set search_path to camper, public;
|
|
|
|
create table payment (
|
|
payment_id integer generated by default as identity primary key,
|
|
company_id integer not null references company,
|
|
slug uuid not null unique default gen_random_uuid(),
|
|
campsite_type_id integer not null references campsite_type,
|
|
arrival_date date not null,
|
|
departure_date date not null constraint departure_after_arrival check (departure_date > arrival_date),
|
|
subtotal_nights nonnegative_integer not null,
|
|
number_adults positive_integer not null,
|
|
subtotal_adults nonnegative_integer not null,
|
|
number_teenagers nonnegative_integer not null,
|
|
subtotal_teenagers nonnegative_integer not null,
|
|
number_children nonnegative_integer not null,
|
|
subtotal_children nonnegative_integer not null,
|
|
number_dogs nonnegative_integer not null,
|
|
subtotal_dogs nonnegative_integer not null,
|
|
subtotal_tourist_tax nonnegative_integer not null,
|
|
total nonnegative_integer not null,
|
|
currency_code currency_code not null references currency,
|
|
down_payment_percent percentage not null default 1.0,
|
|
zone_preferences text not null,
|
|
payment_status text not null default 'draft' references payment_status,
|
|
created_at timestamp with time zone not null default current_timestamp,
|
|
updated_at timestamp with time zone not null default current_timestamp
|
|
);
|
|
|
|
grant select, insert, update on table payment to guest;
|
|
grant select, insert, update on table payment to employee;
|
|
grant select, insert, update, delete on table payment to admin;
|
|
|
|
commit;
|