68 lines
1.5 KiB
PL/PgSQL
68 lines
1.5 KiB
PL/PgSQL
-- Deploy camper:marshal_payment to pg
|
|
-- requires: roles
|
|
-- requires: schema_camper
|
|
-- requires: payment
|
|
-- requires: payment_customer
|
|
-- requires: payment_option
|
|
-- requires: payment__acsi_card
|
|
-- requires: payment_customer__-acsi_card
|
|
|
|
begin;
|
|
|
|
set search_path to camper, public;
|
|
|
|
create or replace function marshal_payment(pid integer) returns jsonb as
|
|
$$
|
|
select to_jsonb(ctx)
|
|
from (
|
|
select company_id
|
|
, campsite_type_id
|
|
, arrival_date
|
|
, departure_date
|
|
, subtotal_nights
|
|
, number_adults
|
|
, subtotal_adults
|
|
, number_teenagers
|
|
, subtotal_teenagers
|
|
, number_children
|
|
, subtotal_children
|
|
, number_dogs
|
|
, subtotal_dogs
|
|
, subtotal_tourist_tax
|
|
, total
|
|
, currency_code
|
|
, zone_preferences
|
|
, acsi_card
|
|
, full_name
|
|
, address
|
|
, postal_code
|
|
, city
|
|
, country_code
|
|
, email
|
|
, phone
|
|
, lang_tag
|
|
, (
|
|
select array_agg(to_jsonb(o))
|
|
from (
|
|
select campsite_type_option_id
|
|
, units
|
|
, subtotal
|
|
from payment_option
|
|
where payment_option.payment_id = payment.payment_id
|
|
) o
|
|
) as options
|
|
from payment
|
|
join payment_customer using (payment_id)
|
|
where payment_id = pid
|
|
) as ctx;
|
|
$$
|
|
language sql
|
|
;
|
|
|
|
revoke execute on function marshal_payment(integer) from public;
|
|
grant execute on function marshal_payment(integer) to guest;
|
|
grant execute on function marshal_payment(integer) to employee;
|
|
grant execute on function marshal_payment(integer) to admin;
|
|
|
|
commit;
|