Compute ACSI discount
After months of keeping what does the ACSI checkbox mean, now customer told us that we should add a discount based on a series of arbitrary conditions that, and need to be done NOW! There is no UI to edit the conditions due to lack of time.
This commit is contained in:
parent
cc1b334639
commit
0412ffca05
|
@ -10,8 +10,8 @@ values ('demo@camper', 'Demo User', 'demo', 'ca')
|
||||||
;
|
;
|
||||||
|
|
||||||
alter table company alter column company_id restart with 52;
|
alter table company alter column company_id restart with 52;
|
||||||
insert into company (slug, business_name, vatin, trade_name, phone, email, web, address, city, province, postal_code, country_code, rtc_number, tourist_tax, currency_code, default_lang_tag, legal_disclaimer)
|
insert into company (slug, business_name, vatin, trade_name, phone, email, web, address, city, province, postal_code, country_code, rtc_number, tourist_tax, tourist_tax_max_days, currency_code, default_lang_tag, legal_disclaimer)
|
||||||
values ('09184122-b276-4be2-9553-e4bbcbafe40d', 'El pont de Llierca, S.L.', 'ESB17377656', 'Càmping Montagut', parse_packed_phone_number('661 673 057', 'ES'), 'info@campingmontagut.com', 'https://campingmontagut.com/', 'Ctra. de Sadernes, Km 2', 'Montagut i Oix', 'Girona', '17855', 'ES', 'KG-000133', 60, 'EUR', 'ca', 'El pont de Llierca, S.L. és responsable del tractament de les seves dades d’acord amb el RGPD i la LOPDGDD, i les tracta per a mantenir una relació mercantil/comercial amb vostè. Les conservarà mentre es mantingui aquesta relació i no es comunicaran a tercers. Pot exercir els drets d’accés, rectificació, portabilitat, supressió, limitació i oposició a El pont de Llierca, S.L., amb domicili Ctra. de Sadernes, Km 2, 17855 Montagut i Oix o enviant un correu electrònic a info@campingmontagut.com. Per a qualsevol reclamació pot acudir a agpd.es. Per a més informació pot consultar la nostra política de privacitat a campingmontagut.com.');
|
values ('09184122-b276-4be2-9553-e4bbcbafe40d', 'El pont de Llierca, S.L.', 'ESB17377656', 'Càmping Montagut', parse_packed_phone_number('661 673 057', 'ES'), 'info@campingmontagut.com', 'https://campingmontagut.com/', 'Ctra. de Sadernes, Km 2', 'Montagut i Oix', 'Girona', '17855', 'ES', 'KG-000133', 60, 7, 'EUR', 'ca', 'El pont de Llierca, S.L. és responsable del tractament de les seves dades d’acord amb el RGPD i la LOPDGDD, i les tracta per a mantenir una relació mercantil/comercial amb vostè. Les conservarà mentre es mantingui aquesta relació i no es comunicaran a tercers. Pot exercir els drets d’accés, rectificació, portabilitat, supressió, limitació i oposició a El pont de Llierca, S.L., amb domicili Ctra. de Sadernes, Km 2, 17855 Montagut i Oix o enviant un correu electrònic a info@campingmontagut.com. Per a qualsevol reclamació pot acudir a agpd.es. Per a més informació pot consultar la nostra política de privacitat a campingmontagut.com.');
|
||||||
|
|
||||||
insert into company_host (company_id, host)
|
insert into company_host (company_id, host)
|
||||||
values (52, 'localhost:8080')
|
values (52, 'localhost:8080')
|
||||||
|
@ -1413,6 +1413,22 @@ values (72, 77, 'en', 'Legend')
|
||||||
, (76, 103, 'es', 'Leyenda')
|
, (76, 103, 'es', 'Leyenda')
|
||||||
;
|
;
|
||||||
|
|
||||||
|
insert into acsi (campsite_type_id, number_adults, number_teenagers, number_children, number_dogs, cost_per_night)
|
||||||
|
values (72, 2, 0, 0, 1, 2300);
|
||||||
|
|
||||||
|
insert into acsi_calendar (campsite_type_id, acsi_range)
|
||||||
|
values (72, daterange(make_date(extract(year from current_date)::int, 2, 4), make_date(extract(year from current_date)::int, 6, 20)))
|
||||||
|
, (72, daterange(make_date(extract(year from current_date)::int, 9, 1), make_date(extract(year from current_date)::int, 10, 13)))
|
||||||
|
;
|
||||||
|
|
||||||
|
insert into acsi_option (campsite_type_id, campsite_type_option_id, units)
|
||||||
|
values (72, 102, 1)
|
||||||
|
, (72, 103, 1)
|
||||||
|
, (72, 104, 1)
|
||||||
|
, (72, 107, 1)
|
||||||
|
, (72, 109, 1)
|
||||||
|
;
|
||||||
|
|
||||||
alter table surroundings_highlight alter column surroundings_highlight_id restart with 112;
|
alter table surroundings_highlight alter column surroundings_highlight_id restart with 112;
|
||||||
|
|
||||||
select add_surroundings_highlight(52, 62, 'El Pont del Llierca', '<p>Pont d’estil romànic i bany natural a 400 m del càmping.</p>');
|
select add_surroundings_highlight(52, 62, 'El Pont del Llierca', '<p>Pont d’estil romànic i bany natural a 400 m del càmping.</p>');
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
-- Deploy camper:acsi to pg
|
||||||
|
-- requires: roles
|
||||||
|
-- requires: schema_camper
|
||||||
|
-- requires: campsite_type
|
||||||
|
|
||||||
|
begin;
|
||||||
|
|
||||||
|
set search_path to camper, public;
|
||||||
|
|
||||||
|
create table acsi (
|
||||||
|
campsite_type_id integer primary key references campsite_type,
|
||||||
|
number_adults positive_integer not null,
|
||||||
|
number_teenagers nonnegative_integer not null,
|
||||||
|
number_children nonnegative_integer not null,
|
||||||
|
number_dogs nonnegative_integer not null,
|
||||||
|
cost_per_night nonnegative_integer not null
|
||||||
|
);
|
||||||
|
|
||||||
|
grant select on table acsi to guest;
|
||||||
|
grant select on table acsi to employee;
|
||||||
|
grant select, insert, update, delete on table acsi to admin;
|
||||||
|
|
||||||
|
commit;
|
|
@ -0,0 +1,21 @@
|
||||||
|
-- Deploy camper:acsi_calendar to pg
|
||||||
|
-- requires: roles
|
||||||
|
-- requires: schema_camper
|
||||||
|
-- requires: acsi
|
||||||
|
|
||||||
|
begin;
|
||||||
|
|
||||||
|
set search_path to camper, public;
|
||||||
|
|
||||||
|
create table acsi_calendar (
|
||||||
|
campsite_type_id integer not null references acsi,
|
||||||
|
acsi_range daterange not null,
|
||||||
|
primary key (campsite_type_id, acsi_range),
|
||||||
|
constraint disallow_acsi_overlap exclude using gist (campsite_type_id with =, acsi_range with &&)
|
||||||
|
);
|
||||||
|
|
||||||
|
grant select on table acsi_calendar to guest;
|
||||||
|
grant select on table acsi_calendar to employee;
|
||||||
|
grant select, insert, update, delete on table acsi_calendar to admin;
|
||||||
|
|
||||||
|
commit;
|
|
@ -0,0 +1,22 @@
|
||||||
|
-- Deploy camper:acsi_option to pg
|
||||||
|
-- requires: roles
|
||||||
|
-- requires: schema_camper
|
||||||
|
-- requires: acsi
|
||||||
|
-- requires: campsite_type_option
|
||||||
|
|
||||||
|
begin;
|
||||||
|
|
||||||
|
set search_path to camper, public;
|
||||||
|
|
||||||
|
create table acsi_option (
|
||||||
|
campsite_type_id integer not null references acsi,
|
||||||
|
campsite_type_option_id integer not null references campsite_type_option,
|
||||||
|
units positive_integer not null,
|
||||||
|
primary key (campsite_type_id, campsite_type_option_id)
|
||||||
|
);
|
||||||
|
|
||||||
|
grant select on table acsi_option to guest;
|
||||||
|
grant select on table acsi_option to employee;
|
||||||
|
grant select, insert, update, delete on table acsi_option to admin;
|
||||||
|
|
||||||
|
commit;
|
|
@ -11,12 +11,17 @@
|
||||||
-- requires: payment
|
-- requires: payment
|
||||||
-- requires: payment_option
|
-- requires: payment_option
|
||||||
-- requires: company__tourist_tax_max_days
|
-- requires: company__tourist_tax_max_days
|
||||||
|
-- requires: acsi
|
||||||
|
-- requires: acsi_calendar
|
||||||
|
-- requires: acsi_options
|
||||||
|
|
||||||
begin;
|
begin;
|
||||||
|
|
||||||
set search_path to camper, public;
|
set search_path to camper, public;
|
||||||
|
|
||||||
create or replace function draft_payment(payment_slug uuid, arrival_date date, departure_date date, campsite_type_slug uuid, num_adults integer, num_teenagers integer, num_children integer, num_dogs integer, zone_preferences text, options option_units[]) returns payment as
|
drop function if exists draft_payment(uuid, date, date, uuid, integer, integer, integer, integer, text, option_units[]);
|
||||||
|
|
||||||
|
create or replace function draft_payment(payment_slug uuid, arrival_date date, departure_date date, campsite_type_slug uuid, num_adults integer, num_teenagers integer, num_children integer, num_dogs integer, zone_preferences text, acsi_card boolean, options option_units[]) returns payment as
|
||||||
$$
|
$$
|
||||||
declare
|
declare
|
||||||
p payment;
|
p payment;
|
||||||
|
@ -44,26 +49,28 @@ begin
|
||||||
, currency_code
|
, currency_code
|
||||||
, down_payment_percent
|
, down_payment_percent
|
||||||
, zone_preferences
|
, zone_preferences
|
||||||
|
, acsi_card
|
||||||
)
|
)
|
||||||
select coalesce(payment_slug, gen_random_uuid())
|
select coalesce(payment_slug, gen_random_uuid())
|
||||||
, company_id
|
, company_id
|
||||||
, campsite_type_id
|
, campsite_type.campsite_type_id
|
||||||
, arrival_date
|
, arrival_date
|
||||||
, departure_date
|
, departure_date
|
||||||
, sum(cost.cost_per_night * ceiling((num_adults::numeric + num_teenagers::numeric + num_children::numeric) / max_campers::numeric)::integer)::integer
|
, sum(coalesce(acsi.cost_per_night, 0) + cost.cost_per_night * (ceiling((num_adults::numeric + num_teenagers::numeric + num_children::numeric) / max_campers::numeric)::integer - case when acsi.cost_per_night is null then 0 else 1 end))::integer
|
||||||
, num_adults
|
, num_adults
|
||||||
, sum(cost_per_adult * num_adults)::integer
|
, sum(cost_per_adult * greatest(0, num_adults - coalesce(acsi.number_adults, 0)))::integer
|
||||||
, num_teenagers
|
, num_teenagers
|
||||||
, sum(cost_per_teenager * num_teenagers)::integer
|
, sum(cost_per_teenager * greatest(0, num_teenagers - coalesce(acsi.number_teenagers, 0)))::integer
|
||||||
, num_children
|
, num_children
|
||||||
, sum(cost_per_child * num_children)::integer
|
, sum(cost_per_child * greatest(0, num_children - coalesce(acsi.number_children, 0)))::integer
|
||||||
, num_dogs
|
, num_dogs
|
||||||
, sum(case when num_dogs > 0 then coalesce(pet.cost_per_night, 0) else 0 end)::integer
|
, sum(case when (num_dogs - coalesce(acsi.number_dogs, 0)) > 0 then coalesce(pet.cost_per_night, 0) else 0 end)::integer
|
||||||
, sum(case when day_num <= tourist_tax_max_days then tourist_tax * num_adults else 0 end)::integer
|
, sum(case when day_num <= tourist_tax_max_days then tourist_tax * num_adults else 0 end)::integer
|
||||||
, 0
|
, 0
|
||||||
, currency_code
|
, currency_code
|
||||||
, case when arrival_date - current_date >= 7 then 0.3 else 1.0 end
|
, case when arrival_date - current_date >= 7 then 0.3 else 1.0 end
|
||||||
, coalesce(zone_preferences, '')
|
, coalesce(zone_preferences, '')
|
||||||
|
, acsi_card
|
||||||
from generate_series(arrival_date, departure_date - 1, interval '1 day') with ordinality as date(day, day_num)
|
from generate_series(arrival_date, departure_date - 1, interval '1 day') with ordinality as date(day, day_num)
|
||||||
left join season_calendar on season_range @> date.day::date
|
left join season_calendar on season_range @> date.day::date
|
||||||
left join season using (season_id)
|
left join season using (season_id)
|
||||||
|
@ -71,9 +78,13 @@ begin
|
||||||
left join campsite_type_pet_cost as pet using (campsite_type_id)
|
left join campsite_type_pet_cost as pet using (campsite_type_id)
|
||||||
left join campsite_type_cost as cost using (campsite_type_id, season_id)
|
left join campsite_type_cost as cost using (campsite_type_id, season_id)
|
||||||
left join company using (company_id)
|
left join company using (company_id)
|
||||||
|
left join (acsi join acsi_calendar using (campsite_type_id)) as acsi
|
||||||
|
on acsi_card
|
||||||
|
and acsi.campsite_type_id = campsite_type.campsite_type_id
|
||||||
|
and date.day::date <@ acsi_range
|
||||||
where campsite_type.slug = campsite_type_slug
|
where campsite_type.slug = campsite_type_slug
|
||||||
group by company_id
|
group by company_id
|
||||||
, campsite_type_id
|
, campsite_type.campsite_type_id
|
||||||
, currency_code
|
, currency_code
|
||||||
on conflict (slug) do update
|
on conflict (slug) do update
|
||||||
set company_id = excluded.company_id
|
set company_id = excluded.company_id
|
||||||
|
@ -94,6 +105,7 @@ begin
|
||||||
, currency_code = excluded.currency_code
|
, currency_code = excluded.currency_code
|
||||||
, down_payment_percent = excluded.down_payment_percent
|
, down_payment_percent = excluded.down_payment_percent
|
||||||
, zone_preferences = excluded.zone_preferences
|
, zone_preferences = excluded.zone_preferences
|
||||||
|
, acsi_card = excluded.acsi_card
|
||||||
, updated_at = current_timestamp
|
, updated_at = current_timestamp
|
||||||
returning *
|
returning *
|
||||||
into p
|
into p
|
||||||
|
@ -115,16 +127,18 @@ begin
|
||||||
, subtotal
|
, subtotal
|
||||||
)
|
)
|
||||||
select p.payment_id
|
select p.payment_id
|
||||||
, campsite_type_option_id
|
, campsite_type_option.campsite_type_option_id
|
||||||
, units
|
, option.units
|
||||||
, case when per_night then sum(cost * units)::integer else max(cost * units)::integer end
|
, case when per_night then sum(cost * greatest(0, option.units - coalesce(acsi_option.units, 0)))::integer else max(cost * greatest(0, option.units - coalesce(acsi_option.units, 0)))::integer end
|
||||||
from generate_series(arrival_date, departure_date - 1, interval '1 day') as date(day)
|
from generate_series(arrival_date, departure_date - 1, interval '1 day') as date(day)
|
||||||
join season_calendar on season_range @> date.day::date
|
join season_calendar on season_range @> date.day::date
|
||||||
join campsite_type_option_cost using (season_id)
|
join campsite_type_option_cost using (season_id)
|
||||||
join campsite_type_option using (campsite_type_option_id)
|
join campsite_type_option using (campsite_type_option_id)
|
||||||
join unnest(options) as option(campsite_type_option_id, units) using (campsite_type_option_id)
|
join unnest(options) as option(campsite_type_option_id, units) using (campsite_type_option_id)
|
||||||
group by campsite_type_option_id
|
left join acsi_calendar on acsi_card and day::date <@ acsi_range
|
||||||
, units
|
left join acsi_option on acsi_option.campsite_type_id = acsi_calendar.campsite_type_id and acsi_option.campsite_type_option_id = campsite_type_option.campsite_type_option_id
|
||||||
|
group by campsite_type_option.campsite_type_option_id
|
||||||
|
, option.units
|
||||||
, per_night
|
, per_night
|
||||||
on conflict (payment_id, campsite_type_option_id) do update
|
on conflict (payment_id, campsite_type_option_id) do update
|
||||||
set units = excluded.units
|
set units = excluded.units
|
||||||
|
@ -161,9 +175,9 @@ $$
|
||||||
language plpgsql
|
language plpgsql
|
||||||
;
|
;
|
||||||
|
|
||||||
revoke execute on function draft_payment(uuid, date, date, uuid, integer, integer, integer, integer, text, option_units[]) from public;
|
revoke execute on function draft_payment(uuid, date, date, uuid, integer, integer, integer, integer, text, boolean, option_units[]) from public;
|
||||||
grant execute on function draft_payment(uuid, date, date, uuid, integer, integer, integer, integer, text, option_units[]) to guest;
|
grant execute on function draft_payment(uuid, date, date, uuid, integer, integer, integer, integer, text, boolean, option_units[]) to guest;
|
||||||
grant execute on function draft_payment(uuid, date, date, uuid, integer, integer, integer, integer, text, option_units[]) to employee;
|
grant execute on function draft_payment(uuid, date, date, uuid, integer, integer, integer, integer, text, boolean, option_units[]) to employee;
|
||||||
grant execute on function draft_payment(uuid, date, date, uuid, integer, integer, integer, integer, text, option_units[]) to admin;
|
grant execute on function draft_payment(uuid, date, date, uuid, integer, integer, integer, integer, text, boolean, option_units[]) to admin;
|
||||||
|
|
||||||
commit;
|
commit;
|
||||||
|
|
|
@ -0,0 +1,169 @@
|
||||||
|
-- Deploy camper:draft_payment to pg
|
||||||
|
-- requires: roles
|
||||||
|
-- requires: schema_camper
|
||||||
|
-- requires: season_calendar
|
||||||
|
-- requires: season
|
||||||
|
-- requires: campsite_type
|
||||||
|
-- requires: campsite_type_pet_cost
|
||||||
|
-- requires: campsite_type_cost
|
||||||
|
-- requires: campsite_type_option_cost
|
||||||
|
-- requires: campsite_type_option
|
||||||
|
-- requires: payment
|
||||||
|
-- requires: payment_option
|
||||||
|
-- requires: company__tourist_tax_max_days
|
||||||
|
|
||||||
|
begin;
|
||||||
|
|
||||||
|
set search_path to camper, public;
|
||||||
|
|
||||||
|
create or replace function draft_payment(payment_slug uuid, arrival_date date, departure_date date, campsite_type_slug uuid, num_adults integer, num_teenagers integer, num_children integer, num_dogs integer, zone_preferences text, options option_units[]) returns payment as
|
||||||
|
$$
|
||||||
|
declare
|
||||||
|
p payment;
|
||||||
|
begin
|
||||||
|
if exists(select 1 from payment where slug = payment_slug and payment_status <> 'draft') then
|
||||||
|
payment_slug = null;
|
||||||
|
end if;
|
||||||
|
insert into payment (
|
||||||
|
slug
|
||||||
|
, 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
|
||||||
|
, down_payment_percent
|
||||||
|
, zone_preferences
|
||||||
|
)
|
||||||
|
select coalesce(payment_slug, gen_random_uuid())
|
||||||
|
, company_id
|
||||||
|
, campsite_type_id
|
||||||
|
, arrival_date
|
||||||
|
, departure_date
|
||||||
|
, sum(cost.cost_per_night * ceiling((num_adults::numeric + num_teenagers::numeric + num_children::numeric) / max_campers::numeric)::integer)::integer
|
||||||
|
, num_adults
|
||||||
|
, sum(cost_per_adult * num_adults)::integer
|
||||||
|
, num_teenagers
|
||||||
|
, sum(cost_per_teenager * num_teenagers)::integer
|
||||||
|
, num_children
|
||||||
|
, sum(cost_per_child * num_children)::integer
|
||||||
|
, num_dogs
|
||||||
|
, sum(case when num_dogs > 0 then coalesce(pet.cost_per_night, 0) else 0 end)::integer
|
||||||
|
, sum(case when day_num <= tourist_tax_max_days then tourist_tax * num_adults else 0 end)::integer
|
||||||
|
, 0
|
||||||
|
, currency_code
|
||||||
|
, case when arrival_date - current_date >= 7 then 0.3 else 1.0 end
|
||||||
|
, coalesce(zone_preferences, '')
|
||||||
|
from generate_series(arrival_date, departure_date - 1, interval '1 day') with ordinality as date(day, day_num)
|
||||||
|
left join season_calendar on season_range @> date.day::date
|
||||||
|
left join season using (season_id)
|
||||||
|
left join campsite_type using (company_id)
|
||||||
|
left join campsite_type_pet_cost as pet using (campsite_type_id)
|
||||||
|
left join campsite_type_cost as cost using (campsite_type_id, season_id)
|
||||||
|
left join company using (company_id)
|
||||||
|
where campsite_type.slug = campsite_type_slug
|
||||||
|
group by company_id
|
||||||
|
, campsite_type_id
|
||||||
|
, currency_code
|
||||||
|
on conflict (slug) do update
|
||||||
|
set company_id = excluded.company_id
|
||||||
|
, campsite_type_id = excluded.campsite_type_id
|
||||||
|
, arrival_date = excluded.arrival_date
|
||||||
|
, departure_date = excluded.departure_date
|
||||||
|
, subtotal_nights = excluded.subtotal_nights
|
||||||
|
, number_adults = excluded.number_adults
|
||||||
|
, subtotal_adults = excluded.subtotal_adults
|
||||||
|
, number_teenagers = excluded.number_teenagers
|
||||||
|
, subtotal_teenagers = excluded.subtotal_teenagers
|
||||||
|
, number_children = excluded.number_children
|
||||||
|
, subtotal_children = excluded.subtotal_children
|
||||||
|
, number_dogs = excluded.number_dogs
|
||||||
|
, subtotal_dogs = excluded.subtotal_dogs
|
||||||
|
, subtotal_tourist_tax = excluded.subtotal_tourist_tax
|
||||||
|
, total = excluded.total
|
||||||
|
, currency_code = excluded.currency_code
|
||||||
|
, down_payment_percent = excluded.down_payment_percent
|
||||||
|
, zone_preferences = excluded.zone_preferences
|
||||||
|
, updated_at = current_timestamp
|
||||||
|
returning *
|
||||||
|
into p
|
||||||
|
;
|
||||||
|
|
||||||
|
if array_length(coalesce(options, array[]::option_units[]), 1) > 0 then
|
||||||
|
delete
|
||||||
|
from payment_option
|
||||||
|
where payment_id = p.payment_id
|
||||||
|
and campsite_type_option_id not in (
|
||||||
|
select campsite_type_option_id
|
||||||
|
from unnest(options) as option(campsite_type_option_id, units)
|
||||||
|
);
|
||||||
|
|
||||||
|
insert into payment_option (
|
||||||
|
payment_id
|
||||||
|
, campsite_type_option_id
|
||||||
|
, units
|
||||||
|
, subtotal
|
||||||
|
)
|
||||||
|
select p.payment_id
|
||||||
|
, campsite_type_option_id
|
||||||
|
, units
|
||||||
|
, case when per_night then sum(cost * units)::integer else max(cost * units)::integer end
|
||||||
|
from generate_series(arrival_date, departure_date - 1, interval '1 day') as date(day)
|
||||||
|
join season_calendar on season_range @> date.day::date
|
||||||
|
join campsite_type_option_cost using (season_id)
|
||||||
|
join campsite_type_option using (campsite_type_option_id)
|
||||||
|
join unnest(options) as option(campsite_type_option_id, units) using (campsite_type_option_id)
|
||||||
|
group by campsite_type_option_id
|
||||||
|
, units
|
||||||
|
, per_night
|
||||||
|
on conflict (payment_id, campsite_type_option_id) do update
|
||||||
|
set units = excluded.units
|
||||||
|
, subtotal = excluded.subtotal
|
||||||
|
;
|
||||||
|
|
||||||
|
with option as (
|
||||||
|
select sum(subtotal)::integer as subtotal
|
||||||
|
from payment_option
|
||||||
|
where payment_id = p.payment_id
|
||||||
|
)
|
||||||
|
update payment
|
||||||
|
set total = subtotal_nights + subtotal_adults + subtotal_teenagers + subtotal_children + subtotal_dogs + subtotal_tourist_tax + coalesce(option.subtotal, 0)
|
||||||
|
from option
|
||||||
|
where payment_id = p.payment_id
|
||||||
|
returning total into p.total
|
||||||
|
;
|
||||||
|
else
|
||||||
|
delete
|
||||||
|
from payment_option
|
||||||
|
where payment_id = p.payment_id;
|
||||||
|
|
||||||
|
update payment
|
||||||
|
set total = subtotal_nights + subtotal_adults + subtotal_teenagers + subtotal_children + subtotal_dogs + subtotal_tourist_tax
|
||||||
|
where payment_id = p.payment_id
|
||||||
|
returning total into p.total
|
||||||
|
;
|
||||||
|
end if;
|
||||||
|
|
||||||
|
|
||||||
|
return p;
|
||||||
|
end;
|
||||||
|
$$
|
||||||
|
language plpgsql
|
||||||
|
;
|
||||||
|
|
||||||
|
revoke execute on function draft_payment(uuid, date, date, uuid, integer, integer, integer, integer, text, option_units[]) from public;
|
||||||
|
grant execute on function draft_payment(uuid, date, date, uuid, integer, integer, integer, integer, text, option_units[]) to guest;
|
||||||
|
grant execute on function draft_payment(uuid, date, date, uuid, integer, integer, integer, integer, text, option_units[]) to employee;
|
||||||
|
grant execute on function draft_payment(uuid, date, date, uuid, integer, integer, integer, integer, text, option_units[]) to admin;
|
||||||
|
|
||||||
|
commit;
|
|
@ -0,0 +1,22 @@
|
||||||
|
-- Deploy camper:payment__acsi_card to pg
|
||||||
|
-- requires: payment
|
||||||
|
|
||||||
|
begin;
|
||||||
|
|
||||||
|
set search_path to camper, public;
|
||||||
|
|
||||||
|
alter table payment
|
||||||
|
add column acsi_card boolean not null default false
|
||||||
|
;
|
||||||
|
|
||||||
|
update payment
|
||||||
|
set acsi_card = payment_customer.acsi_card
|
||||||
|
from payment_customer
|
||||||
|
where payment_customer.payment_id = payment.payment_id
|
||||||
|
;
|
||||||
|
|
||||||
|
alter table payment
|
||||||
|
alter column acsi_card drop default
|
||||||
|
;
|
||||||
|
|
||||||
|
commit;
|
|
@ -0,0 +1,10 @@
|
||||||
|
-- Deploy camper:payment_customer__-acsi_card to pg
|
||||||
|
-- requires: payment__acsi_card
|
||||||
|
|
||||||
|
begin;
|
||||||
|
|
||||||
|
alter table camper.payment_customer
|
||||||
|
drop column if exists acsi_card
|
||||||
|
;
|
||||||
|
|
||||||
|
commit;
|
|
@ -6,12 +6,16 @@
|
||||||
-- requires: country_code
|
-- requires: country_code
|
||||||
-- requires: email
|
-- requires: email
|
||||||
-- requires: extension_pg_libphonenumber
|
-- requires: extension_pg_libphonenumber
|
||||||
|
-- requires: payment__acsi_card
|
||||||
|
-- requires: payment_customer__-acsi_card
|
||||||
|
|
||||||
begin;
|
begin;
|
||||||
|
|
||||||
set search_path to camper, public;
|
set search_path to camper, public;
|
||||||
|
|
||||||
create or replace function ready_payment(payment_slug uuid, customer_name text, customer_address text, customer_post_code text, customer_city text, customer_country_code country_code, customer_email email, customer_phone text, customer_lang_tag text, customer_acsi_card boolean) returns integer as
|
drop function if exists ready_payment(uuid, text, text, text, text, country_code, email, text, text, boolean);
|
||||||
|
|
||||||
|
create or replace function ready_payment(payment_slug uuid, customer_name text, customer_address text, customer_post_code text, customer_city text, customer_country_code country_code, customer_email email, customer_phone text, customer_lang_tag text) returns integer as
|
||||||
$$
|
$$
|
||||||
declare
|
declare
|
||||||
pid integer;
|
pid integer;
|
||||||
|
@ -28,8 +32,8 @@ begin
|
||||||
raise check_violation using message = 'insert or update on table "payment" violates check constraint "payment_is_draft"';
|
raise check_violation using message = 'insert or update on table "payment" violates check constraint "payment_is_draft"';
|
||||||
end if;
|
end if;
|
||||||
|
|
||||||
insert into payment_customer (payment_id, full_name, address, postal_code, city, country_code, email, phone, acsi_card, lang_tag)
|
insert into payment_customer (payment_id, full_name, address, postal_code, city, country_code, email, phone, lang_tag)
|
||||||
values (pid, customer_name, customer_address, customer_post_code, customer_city, customer_country_code, customer_email, parse_packed_phone_number(customer_phone, customer_country_code), customer_acsi_card, customer_lang_tag)
|
values (pid, customer_name, customer_address, customer_post_code, customer_city, customer_country_code, customer_email, parse_packed_phone_number(customer_phone, customer_country_code), customer_lang_tag)
|
||||||
on conflict (payment_id) do update
|
on conflict (payment_id) do update
|
||||||
set full_name = excluded.full_name
|
set full_name = excluded.full_name
|
||||||
, address = excluded.address
|
, address = excluded.address
|
||||||
|
@ -38,7 +42,6 @@ begin
|
||||||
, country_code = excluded.country_code
|
, country_code = excluded.country_code
|
||||||
, email = excluded.email
|
, email = excluded.email
|
||||||
, phone = excluded.phone
|
, phone = excluded.phone
|
||||||
, acsi_card = excluded.acsi_card
|
|
||||||
, lang_tag = excluded.lang_tag
|
, lang_tag = excluded.lang_tag
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@ -48,9 +51,9 @@ $$
|
||||||
language plpgsql
|
language plpgsql
|
||||||
;
|
;
|
||||||
|
|
||||||
revoke execute on function ready_payment(uuid, text, text, text, text, country_code, email, text, text, boolean) from public;
|
revoke execute on function ready_payment(uuid, text, text, text, text, country_code, email, text, text) from public;
|
||||||
grant execute on function ready_payment(uuid, text, text, text, text, country_code, email, text, text, boolean) to guest;
|
grant execute on function ready_payment(uuid, text, text, text, text, country_code, email, text, text) to guest;
|
||||||
grant execute on function ready_payment(uuid, text, text, text, text, country_code, email, text, text, boolean) to employee;
|
grant execute on function ready_payment(uuid, text, text, text, text, country_code, email, text, text) to employee;
|
||||||
grant execute on function ready_payment(uuid, text, text, text, text, country_code, email, text, text, boolean) to admin;
|
grant execute on function ready_payment(uuid, text, text, text, text, country_code, email, text, text) to admin;
|
||||||
|
|
||||||
commit;
|
commit;
|
||||||
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
-- Deploy camper:ready_payment to pg
|
||||||
|
-- requires: roles
|
||||||
|
-- requires: schema_camper
|
||||||
|
-- requires: payment
|
||||||
|
-- requires: payment_customer
|
||||||
|
-- requires: country_code
|
||||||
|
-- requires: email
|
||||||
|
-- requires: extension_pg_libphonenumber
|
||||||
|
|
||||||
|
begin;
|
||||||
|
|
||||||
|
set search_path to camper, public;
|
||||||
|
|
||||||
|
create or replace function ready_payment(payment_slug uuid, customer_name text, customer_address text, customer_post_code text, customer_city text, customer_country_code country_code, customer_email email, customer_phone text, customer_lang_tag text, customer_acsi_card boolean) returns integer as
|
||||||
|
$$
|
||||||
|
declare
|
||||||
|
pid integer;
|
||||||
|
begin
|
||||||
|
update payment
|
||||||
|
set payment_status = 'pending'
|
||||||
|
, updated_at = current_timestamp
|
||||||
|
where slug = payment_slug
|
||||||
|
and payment_status = 'draft'
|
||||||
|
returning payment_id into pid
|
||||||
|
;
|
||||||
|
|
||||||
|
if pid is null then
|
||||||
|
raise check_violation using message = 'insert or update on table "payment" violates check constraint "payment_is_draft"';
|
||||||
|
end if;
|
||||||
|
|
||||||
|
insert into payment_customer (payment_id, full_name, address, postal_code, city, country_code, email, phone, acsi_card, lang_tag)
|
||||||
|
values (pid, customer_name, customer_address, customer_post_code, customer_city, customer_country_code, customer_email, parse_packed_phone_number(customer_phone, customer_country_code), customer_acsi_card, customer_lang_tag)
|
||||||
|
on conflict (payment_id) do update
|
||||||
|
set full_name = excluded.full_name
|
||||||
|
, address = excluded.address
|
||||||
|
, postal_code = excluded.postal_code
|
||||||
|
, city = excluded.city
|
||||||
|
, country_code = excluded.country_code
|
||||||
|
, email = excluded.email
|
||||||
|
, phone = excluded.phone
|
||||||
|
, acsi_card = excluded.acsi_card
|
||||||
|
, lang_tag = excluded.lang_tag
|
||||||
|
;
|
||||||
|
|
||||||
|
return pid;
|
||||||
|
end;
|
||||||
|
$$
|
||||||
|
language plpgsql
|
||||||
|
;
|
||||||
|
|
||||||
|
revoke execute on function ready_payment(uuid, text, text, text, text, country_code, email, text, text, boolean) from public;
|
||||||
|
grant execute on function ready_payment(uuid, text, text, text, text, country_code, email, text, text, boolean) to guest;
|
||||||
|
grant execute on function ready_payment(uuid, text, text, text, text, country_code, email, text, text, boolean) to employee;
|
||||||
|
grant execute on function ready_payment(uuid, text, text, text, text, country_code, email, text, text, boolean) to admin;
|
||||||
|
|
||||||
|
commit;
|
|
@ -66,6 +66,11 @@ func newBookingCart(ctx context.Context, conn *database.Conn, f *bookingForm, ca
|
||||||
zonePreferences = f.Options.ZonePreferences.Val
|
zonePreferences = f.Options.ZonePreferences.Val
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var ACSICard bool
|
||||||
|
if f.Guests.ACSICard != nil {
|
||||||
|
ACSICard = f.Guests.ACSICard.Checked
|
||||||
|
}
|
||||||
|
|
||||||
optionMap := make(map[int]*campsiteTypeOption)
|
optionMap := make(map[int]*campsiteTypeOption)
|
||||||
var typeOptions []*campsiteTypeOption
|
var typeOptions []*campsiteTypeOption
|
||||||
if f.Options != nil {
|
if f.Options != nil {
|
||||||
|
@ -97,7 +102,7 @@ func newBookingCart(ctx context.Context, conn *database.Conn, f *bookingForm, ca
|
||||||
, to_price(total, decimal_digits)
|
, to_price(total, decimal_digits)
|
||||||
, to_price(payment.down_payment, decimal_digits)
|
, to_price(payment.down_payment, decimal_digits)
|
||||||
, (payment.down_payment_percent * 100)::int
|
, (payment.down_payment_percent * 100)::int
|
||||||
from draft_payment($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) as payment
|
from draft_payment($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11) as payment
|
||||||
join currency using (currency_code)
|
join currency using (currency_code)
|
||||||
`,
|
`,
|
||||||
database.ZeroNullUUID(f.PaymentSlug.Val),
|
database.ZeroNullUUID(f.PaymentSlug.Val),
|
||||||
|
@ -109,6 +114,7 @@ func newBookingCart(ctx context.Context, conn *database.Conn, f *bookingForm, ca
|
||||||
numChildren,
|
numChildren,
|
||||||
numDogs,
|
numDogs,
|
||||||
zonePreferences,
|
zonePreferences,
|
||||||
|
ACSICard,
|
||||||
database.OptionUnitsArray(optionUnits),
|
database.OptionUnitsArray(optionUnits),
|
||||||
)
|
)
|
||||||
var paymentID int
|
var paymentID int
|
||||||
|
|
|
@ -43,7 +43,6 @@ func requestPayment(w http.ResponseWriter, r *http.Request, user *auth.User, com
|
||||||
f.Customer.Email.Val,
|
f.Customer.Email.Val,
|
||||||
f.Customer.Phone.Val,
|
f.Customer.Phone.Val,
|
||||||
user.Locale.Language,
|
user.Locale.Language,
|
||||||
f.Customer.ACSICard.Checked,
|
|
||||||
)
|
)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
|
|
|
@ -119,6 +119,7 @@ type bookingGuestFields struct {
|
||||||
NumberTeenagers *form.Input
|
NumberTeenagers *form.Input
|
||||||
NumberChildren *form.Input
|
NumberChildren *form.Input
|
||||||
NumberDogs *form.Input
|
NumberDogs *form.Input
|
||||||
|
ACSICard *form.Checkbox
|
||||||
Error error
|
Error error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -144,7 +145,6 @@ type bookingCustomerFields struct {
|
||||||
Country *form.Select
|
Country *form.Select
|
||||||
Email *form.Input
|
Email *form.Input
|
||||||
Phone *form.Input
|
Phone *form.Input
|
||||||
ACSICard *form.Checkbox
|
|
||||||
Agreement *form.Checkbox
|
Agreement *form.Checkbox
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -183,7 +183,7 @@ func newBookingForm(r *http.Request, company *auth.Company, conn *database.Conn,
|
||||||
return f, nil
|
return f, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
f.Guests, err = newBookingGuestFields(r.Context(), conn, campsiteType)
|
f.Guests, err = newBookingGuestFields(r.Context(), conn, campsiteType, f.Dates.ArrivalDate.Val, f.Dates.DepartureDate.Val)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -317,7 +317,7 @@ func (f *DateFields) Valid(v *form.Validator, l *locale.Locale) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func newBookingGuestFields(ctx context.Context, conn *database.Conn, campsiteType string) (*bookingGuestFields, error) {
|
func newBookingGuestFields(ctx context.Context, conn *database.Conn, campsiteType string, arrivalDate string, departureDate string) (*bookingGuestFields, error) {
|
||||||
f := &bookingGuestFields{
|
f := &bookingGuestFields{
|
||||||
NumberAdults: &form.Input{Name: "number_adults"},
|
NumberAdults: &form.Input{Name: "number_adults"},
|
||||||
NumberTeenagers: &form.Input{Name: "number_teenagers"},
|
NumberTeenagers: &form.Input{Name: "number_teenagers"},
|
||||||
|
@ -327,17 +327,26 @@ func newBookingGuestFields(ctx context.Context, conn *database.Conn, campsiteTyp
|
||||||
select max_campers
|
select max_campers
|
||||||
, overflow_allowed
|
, overflow_allowed
|
||||||
, pet.cost_per_night is not null as dogs_allowed
|
, pet.cost_per_night is not null as dogs_allowed
|
||||||
|
, exists (
|
||||||
|
select 1 from acsi_calendar
|
||||||
|
where acsi_calendar.campsite_type_id = campsite_type.campsite_type_id
|
||||||
|
and acsi_range && daterange($2::date, $3::date)
|
||||||
|
) as acsi_allowed
|
||||||
from campsite_type
|
from campsite_type
|
||||||
left join campsite_type_pet_cost as pet using (campsite_type_id)
|
left join campsite_type_pet_cost as pet using (campsite_type_id)
|
||||||
where slug = $1
|
where slug = $1
|
||||||
`, campsiteType)
|
`, campsiteType, arrivalDate, departureDate)
|
||||||
var dogsAllowed bool
|
var dogsAllowed bool
|
||||||
if err := row.Scan(&f.MaxGuests, &f.OverflowAllowed, &dogsAllowed); err != nil {
|
var ACSIAllowed bool
|
||||||
|
if err := row.Scan(&f.MaxGuests, &f.OverflowAllowed, &dogsAllowed, &ACSIAllowed); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
if dogsAllowed {
|
if dogsAllowed {
|
||||||
f.NumberDogs = &form.Input{Name: "number_dogs"}
|
f.NumberDogs = &form.Input{Name: "number_dogs"}
|
||||||
}
|
}
|
||||||
|
if ACSIAllowed {
|
||||||
|
f.ACSICard = &form.Checkbox{Name: "acsi_card"}
|
||||||
|
}
|
||||||
return f, nil
|
return f, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -349,6 +358,9 @@ func (f *bookingGuestFields) FillValues(r *http.Request, l *locale.Locale) {
|
||||||
if f.NumberDogs != nil {
|
if f.NumberDogs != nil {
|
||||||
fillNumericField(f.NumberDogs, r, 0)
|
fillNumericField(f.NumberDogs, r, 0)
|
||||||
}
|
}
|
||||||
|
if f.ACSICard != nil {
|
||||||
|
f.ACSICard.FillValue(r)
|
||||||
|
}
|
||||||
if numGuests > f.MaxGuests {
|
if numGuests > f.MaxGuests {
|
||||||
if f.OverflowAllowed {
|
if f.OverflowAllowed {
|
||||||
f.Overflow = true
|
f.Overflow = true
|
||||||
|
@ -495,9 +507,6 @@ func newBookingCustomerFields(ctx context.Context, conn *database.Conn, l *local
|
||||||
Phone: &form.Input{
|
Phone: &form.Input{
|
||||||
Name: "phone",
|
Name: "phone",
|
||||||
},
|
},
|
||||||
ACSICard: &form.Checkbox{
|
|
||||||
Name: "acsi_card",
|
|
||||||
},
|
|
||||||
Agreement: &form.Checkbox{
|
Agreement: &form.Checkbox{
|
||||||
Name: "agreement",
|
Name: "agreement",
|
||||||
},
|
},
|
||||||
|
@ -512,7 +521,6 @@ func (f *bookingCustomerFields) FillValues(r *http.Request) {
|
||||||
f.Country.FillValue(r)
|
f.Country.FillValue(r)
|
||||||
f.Email.FillValue(r)
|
f.Email.FillValue(r)
|
||||||
f.Phone.FillValue(r)
|
f.Phone.FillValue(r)
|
||||||
f.ACSICard.FillValue(r)
|
|
||||||
f.Agreement.FillValue(r)
|
f.Agreement.FillValue(r)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -348,6 +348,6 @@ func (tx *Tx) TranslateHome(ctx context.Context, companyID int, langTag language
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Conn) ReadyPayment(ctx context.Context, paymentSlug string, customerName string, customerAddress string, customerPostCode string, customerCity string, customerCountryCode string, customerEmail string, customerPhone string, customerLangTag language.Tag, acsiCard bool) (int, error) {
|
func (c *Conn) ReadyPayment(ctx context.Context, paymentSlug string, customerName string, customerAddress string, customerPostCode string, customerCity string, customerCountryCode string, customerEmail string, customerPhone string, customerLangTag language.Tag) (int, error) {
|
||||||
return c.GetInt(ctx, "select ready_payment($1, $2, $3, $4, $5, $6, $7, $8, $9, $10)", paymentSlug, customerName, customerAddress, customerPostCode, customerCity, customerCountryCode, customerEmail, customerPhone, customerLangTag, acsiCard)
|
return c.GetInt(ctx, "select ready_payment($1, $2, $3, $4, $5, $6, $7, $8, $9)", paymentSlug, customerName, customerAddress, customerPostCode, customerCity, customerCountryCode, customerEmail, customerPhone, customerLangTag)
|
||||||
}
|
}
|
||||||
|
|
|
@ -178,6 +178,7 @@ type paymentDetails struct {
|
||||||
DownPaymentPercent int
|
DownPaymentPercent int
|
||||||
DownPayment string
|
DownPayment string
|
||||||
ZonePreferences string
|
ZonePreferences string
|
||||||
|
ACSICard bool
|
||||||
Status string
|
Status string
|
||||||
StatusLabel string
|
StatusLabel string
|
||||||
CreatedAt time.Time
|
CreatedAt time.Time
|
||||||
|
@ -200,7 +201,6 @@ type paymentCustomer struct {
|
||||||
Email string
|
Email string
|
||||||
Phone string
|
Phone string
|
||||||
Language string
|
Language string
|
||||||
ACSICard bool
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func fetchPaymentDetails(ctx context.Context, conn *database.Conn, slug string, locale *locale.Locale) (*paymentDetails, error) {
|
func fetchPaymentDetails(ctx context.Context, conn *database.Conn, slug string, locale *locale.Locale) (*paymentDetails, error) {
|
||||||
|
@ -220,6 +220,7 @@ func fetchPaymentDetails(ctx context.Context, conn *database.Conn, slug string,
|
||||||
, (down_payment_percent * 100)::integer
|
, (down_payment_percent * 100)::integer
|
||||||
, to_price(payment.down_payment, decimal_digits)
|
, to_price(payment.down_payment, decimal_digits)
|
||||||
, zone_preferences
|
, zone_preferences
|
||||||
|
, acsi_card
|
||||||
, payment.payment_status
|
, payment.payment_status
|
||||||
, coalesce(payment_status_i18n.name, payment_status.name)
|
, coalesce(payment_status_i18n.name, payment_status.name)
|
||||||
, created_at
|
, created_at
|
||||||
|
@ -251,6 +252,7 @@ func fetchPaymentDetails(ctx context.Context, conn *database.Conn, slug string,
|
||||||
&details.DownPaymentPercent,
|
&details.DownPaymentPercent,
|
||||||
&details.DownPayment,
|
&details.DownPayment,
|
||||||
&details.ZonePreferences,
|
&details.ZonePreferences,
|
||||||
|
&details.ACSICard,
|
||||||
&details.Status,
|
&details.Status,
|
||||||
&details.StatusLabel,
|
&details.StatusLabel,
|
||||||
&details.CreatedAt,
|
&details.CreatedAt,
|
||||||
|
@ -309,7 +311,6 @@ func fetchPaymentCustomer(ctx context.Context, conn *database.Conn, paymentID in
|
||||||
, email
|
, email
|
||||||
, phone::text
|
, phone::text
|
||||||
, language.endonym
|
, language.endonym
|
||||||
, acsi_card
|
|
||||||
from payment_customer
|
from payment_customer
|
||||||
join country using (country_code)
|
join country using (country_code)
|
||||||
left join country_i18n on country.country_code = country_i18n.country_code
|
left join country_i18n on country.country_code = country_i18n.country_code
|
||||||
|
@ -327,7 +328,6 @@ func fetchPaymentCustomer(ctx context.Context, conn *database.Conn, paymentID in
|
||||||
&customer.Email,
|
&customer.Email,
|
||||||
&customer.Phone,
|
&customer.Phone,
|
||||||
&customer.Language,
|
&customer.Language,
|
||||||
&customer.ACSICard,
|
|
||||||
); err != nil {
|
); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
386
po/ca.po
386
po/ca.po
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: camper\n"
|
"Project-Id-Version: camper\n"
|
||||||
"Report-Msgid-Bugs-To: jordi@tandem.blog\n"
|
"Report-Msgid-Bugs-To: jordi@tandem.blog\n"
|
||||||
"POT-Creation-Date: 2024-02-29 16:55+0100\n"
|
"POT-Creation-Date: 2024-03-14 22:05+0100\n"
|
||||||
"PO-Revision-Date: 2024-02-06 10:04+0100\n"
|
"PO-Revision-Date: 2024-02-06 10:04+0100\n"
|
||||||
"Last-Translator: jordi fita mas <jordi@tandem.blog>\n"
|
"Last-Translator: jordi fita mas <jordi@tandem.blog>\n"
|
||||||
"Language-Team: Catalan <ca@dodds.net>\n"
|
"Language-Team: Catalan <ca@dodds.net>\n"
|
||||||
|
@ -127,160 +127,13 @@ msgid "Area preferences"
|
||||||
msgstr "Preferències d’àrea"
|
msgstr "Preferències d’àrea"
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:18
|
#: web/templates/mail/payment/details.gotxt:18
|
||||||
#: web/templates/public/campsite/dates.gohtml:4
|
|
||||||
#: web/templates/public/booking/fields.gohtml:30
|
|
||||||
#: web/templates/admin/payment/details.gohtml:52
|
#: web/templates/admin/payment/details.gohtml:52
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "Arrival date"
|
|
||||||
msgstr "Data d’arribada"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:19
|
|
||||||
#: web/templates/public/campsite/dates.gohtml:15
|
|
||||||
#: web/templates/public/booking/fields.gohtml:41
|
|
||||||
#: web/templates/admin/payment/details.gohtml:56
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Departure date"
|
|
||||||
msgstr "Data de sortida"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:20
|
|
||||||
#: web/templates/admin/payment/details.gohtml:60
|
|
||||||
msgctxt "cart"
|
|
||||||
msgid "Nights"
|
|
||||||
msgstr "Nits"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:21
|
|
||||||
#: web/templates/public/booking/fields.gohtml:60
|
|
||||||
#: web/templates/admin/payment/details.gohtml:64
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Adults aged 17 or older"
|
|
||||||
msgstr "Adults de 17 anys o més"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:22
|
|
||||||
#: web/templates/public/booking/fields.gohtml:71
|
|
||||||
#: web/templates/admin/payment/details.gohtml:68
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Teenagers from 11 to 16 years old"
|
|
||||||
msgstr "Adolescents d’entre 11 i 16 anys"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:23
|
|
||||||
#: web/templates/public/booking/fields.gohtml:82
|
|
||||||
#: web/templates/admin/payment/details.gohtml:72
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Children from 2 to 10 years old"
|
|
||||||
msgstr "Nens d’entre 2 i 10 anys"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:24
|
|
||||||
#: web/templates/public/booking/fields.gohtml:100
|
|
||||||
#: web/templates/admin/payment/details.gohtml:76
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Dogs"
|
|
||||||
msgstr "Gossos"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:25
|
|
||||||
#: web/templates/admin/payment/details.gohtml:80 pkg/booking/cart.go:191
|
|
||||||
msgctxt "cart"
|
|
||||||
msgid "Tourist tax"
|
|
||||||
msgstr "Impost turístic"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:26
|
|
||||||
#: web/templates/public/booking/fields.gohtml:242
|
|
||||||
msgctxt "cart"
|
|
||||||
msgid "Total"
|
|
||||||
msgstr "Total"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:27
|
|
||||||
#: web/templates/public/booking/fields.gohtml:247
|
|
||||||
#: web/templates/admin/payment/details.gohtml:84
|
|
||||||
msgctxt "cart"
|
|
||||||
msgid "Down payment"
|
|
||||||
msgstr "A compte"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:30
|
|
||||||
#: web/templates/admin/payment/details.gohtml:92
|
|
||||||
#: web/templates/admin/campsite/type/option/form.gohtml:18
|
|
||||||
#: web/templates/admin/campsite/type/option/index.gohtml:6
|
|
||||||
#: web/templates/admin/campsite/type/option/index.gohtml:17
|
|
||||||
msgctxt "title"
|
|
||||||
msgid "Campsite Type Options"
|
|
||||||
msgstr "Opcions del tipus d’allotjament"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:38
|
|
||||||
#: web/templates/public/booking/fields.gohtml:146
|
|
||||||
#: web/templates/admin/payment/details.gohtml:106
|
|
||||||
msgctxt "title"
|
|
||||||
msgid "Customer Details"
|
|
||||||
msgstr "Detalls del client"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:40
|
|
||||||
#: web/templates/public/booking/fields.gohtml:149
|
|
||||||
#: web/templates/admin/payment/details.gohtml:109
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Full name"
|
|
||||||
msgstr "Nom i cognoms"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:41
|
|
||||||
#: web/templates/public/booking/fields.gohtml:158
|
|
||||||
#: web/templates/admin/payment/details.gohtml:113
|
|
||||||
#: web/templates/admin/taxDetails.gohtml:69
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Address"
|
|
||||||
msgstr "Adreça"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:42
|
|
||||||
#: web/templates/public/booking/fields.gohtml:167
|
|
||||||
#: web/templates/admin/payment/details.gohtml:117
|
|
||||||
#: web/templates/admin/taxDetails.gohtml:93
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Postcode"
|
|
||||||
msgstr "Codi postal"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:43
|
|
||||||
#: web/templates/admin/payment/details.gohtml:121
|
|
||||||
#: web/templates/admin/taxDetails.gohtml:77
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "City"
|
|
||||||
msgstr "Població"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:44
|
|
||||||
#: web/templates/public/booking/fields.gohtml:185
|
|
||||||
#: web/templates/admin/payment/details.gohtml:125
|
|
||||||
#: web/templates/admin/taxDetails.gohtml:101
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Country"
|
|
||||||
msgstr "País"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:45
|
|
||||||
#: web/templates/public/booking/fields.gohtml:196
|
|
||||||
#: web/templates/admin/payment/details.gohtml:129
|
|
||||||
#: web/templates/admin/login.gohtml:27 web/templates/admin/profile.gohtml:38
|
|
||||||
#: web/templates/admin/taxDetails.gohtml:53
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Email"
|
|
||||||
msgstr "Correu-e"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:46
|
|
||||||
#: web/templates/public/booking/fields.gohtml:205
|
|
||||||
#: web/templates/admin/payment/details.gohtml:133
|
|
||||||
#: web/templates/admin/taxDetails.gohtml:45
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Phone"
|
|
||||||
msgstr "Telèfon"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:47
|
|
||||||
#: web/templates/admin/payment/details.gohtml:137
|
|
||||||
#: web/templates/admin/profile.gohtml:68
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Language"
|
|
||||||
msgstr "Idioma"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:48
|
|
||||||
#: web/templates/admin/payment/details.gohtml:141
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "ACSI card?"
|
msgid "ACSI card?"
|
||||||
msgstr "Targeta ACSI?"
|
msgstr "Targeta ACSI?"
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:48
|
#: web/templates/mail/payment/details.gotxt:18
|
||||||
#: web/templates/admin/payment/details.gohtml:142
|
#: web/templates/admin/payment/details.gohtml:53
|
||||||
#: web/templates/admin/campsite/index.gohtml:41
|
#: web/templates/admin/campsite/index.gohtml:41
|
||||||
#: web/templates/admin/campsite/type/index.gohtml:53
|
#: web/templates/admin/campsite/type/index.gohtml:53
|
||||||
#: web/templates/admin/season/index.gohtml:44
|
#: web/templates/admin/season/index.gohtml:44
|
||||||
|
@ -289,8 +142,8 @@ msgstr "Targeta ACSI?"
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
msgstr "Sí"
|
msgstr "Sí"
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:48
|
#: web/templates/mail/payment/details.gotxt:18
|
||||||
#: web/templates/admin/payment/details.gohtml:142
|
#: web/templates/admin/payment/details.gohtml:53
|
||||||
#: web/templates/admin/campsite/index.gohtml:41
|
#: web/templates/admin/campsite/index.gohtml:41
|
||||||
#: web/templates/admin/campsite/type/index.gohtml:53
|
#: web/templates/admin/campsite/type/index.gohtml:53
|
||||||
#: web/templates/admin/season/index.gohtml:44
|
#: web/templates/admin/season/index.gohtml:44
|
||||||
|
@ -299,6 +152,153 @@ msgstr "Sí"
|
||||||
msgid "No"
|
msgid "No"
|
||||||
msgstr "No"
|
msgstr "No"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:19
|
||||||
|
#: web/templates/public/campsite/dates.gohtml:4
|
||||||
|
#: web/templates/public/booking/fields.gohtml:30
|
||||||
|
#: web/templates/admin/payment/details.gohtml:56
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Arrival date"
|
||||||
|
msgstr "Data d’arribada"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:20
|
||||||
|
#: web/templates/public/campsite/dates.gohtml:15
|
||||||
|
#: web/templates/public/booking/fields.gohtml:41
|
||||||
|
#: web/templates/admin/payment/details.gohtml:60
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Departure date"
|
||||||
|
msgstr "Data de sortida"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:21
|
||||||
|
#: web/templates/admin/payment/details.gohtml:64
|
||||||
|
msgctxt "cart"
|
||||||
|
msgid "Nights"
|
||||||
|
msgstr "Nits"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:22
|
||||||
|
#: web/templates/public/booking/fields.gohtml:60
|
||||||
|
#: web/templates/admin/payment/details.gohtml:68
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Adults aged 17 or older"
|
||||||
|
msgstr "Adults de 17 anys o més"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:23
|
||||||
|
#: web/templates/public/booking/fields.gohtml:71
|
||||||
|
#: web/templates/admin/payment/details.gohtml:72
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Teenagers from 11 to 16 years old"
|
||||||
|
msgstr "Adolescents d’entre 11 i 16 anys"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:24
|
||||||
|
#: web/templates/public/booking/fields.gohtml:82
|
||||||
|
#: web/templates/admin/payment/details.gohtml:76
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Children from 2 to 10 years old"
|
||||||
|
msgstr "Nens d’entre 2 i 10 anys"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:25
|
||||||
|
#: web/templates/public/booking/fields.gohtml:100
|
||||||
|
#: web/templates/admin/payment/details.gohtml:80
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Dogs"
|
||||||
|
msgstr "Gossos"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:26
|
||||||
|
#: web/templates/admin/payment/details.gohtml:84 pkg/booking/cart.go:197
|
||||||
|
msgctxt "cart"
|
||||||
|
msgid "Tourist tax"
|
||||||
|
msgstr "Impost turístic"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:27
|
||||||
|
#: web/templates/public/booking/fields.gohtml:225
|
||||||
|
msgctxt "cart"
|
||||||
|
msgid "Total"
|
||||||
|
msgstr "Total"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:28
|
||||||
|
#: web/templates/public/booking/fields.gohtml:230
|
||||||
|
#: web/templates/admin/payment/details.gohtml:88
|
||||||
|
msgctxt "cart"
|
||||||
|
msgid "Down payment"
|
||||||
|
msgstr "A compte"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:31
|
||||||
|
#: web/templates/admin/payment/details.gohtml:96
|
||||||
|
#: web/templates/admin/campsite/type/option/form.gohtml:18
|
||||||
|
#: web/templates/admin/campsite/type/option/index.gohtml:6
|
||||||
|
#: web/templates/admin/campsite/type/option/index.gohtml:17
|
||||||
|
msgctxt "title"
|
||||||
|
msgid "Campsite Type Options"
|
||||||
|
msgstr "Opcions del tipus d’allotjament"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:39
|
||||||
|
#: web/templates/public/booking/fields.gohtml:146
|
||||||
|
#: web/templates/admin/payment/details.gohtml:110
|
||||||
|
msgctxt "title"
|
||||||
|
msgid "Customer Details"
|
||||||
|
msgstr "Detalls del client"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:41
|
||||||
|
#: web/templates/public/booking/fields.gohtml:149
|
||||||
|
#: web/templates/admin/payment/details.gohtml:113
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Full name"
|
||||||
|
msgstr "Nom i cognoms"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:42
|
||||||
|
#: web/templates/public/booking/fields.gohtml:158
|
||||||
|
#: web/templates/admin/payment/details.gohtml:117
|
||||||
|
#: web/templates/admin/taxDetails.gohtml:69
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Address"
|
||||||
|
msgstr "Adreça"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:43
|
||||||
|
#: web/templates/public/booking/fields.gohtml:167
|
||||||
|
#: web/templates/admin/payment/details.gohtml:121
|
||||||
|
#: web/templates/admin/taxDetails.gohtml:93
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Postcode"
|
||||||
|
msgstr "Codi postal"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:44
|
||||||
|
#: web/templates/admin/payment/details.gohtml:125
|
||||||
|
#: web/templates/admin/taxDetails.gohtml:77
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "City"
|
||||||
|
msgstr "Població"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:45
|
||||||
|
#: web/templates/public/booking/fields.gohtml:185
|
||||||
|
#: web/templates/admin/payment/details.gohtml:129
|
||||||
|
#: web/templates/admin/taxDetails.gohtml:101
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Country"
|
||||||
|
msgstr "País"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:46
|
||||||
|
#: web/templates/public/booking/fields.gohtml:196
|
||||||
|
#: web/templates/admin/payment/details.gohtml:133
|
||||||
|
#: web/templates/admin/login.gohtml:27 web/templates/admin/profile.gohtml:38
|
||||||
|
#: web/templates/admin/taxDetails.gohtml:53
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Email"
|
||||||
|
msgstr "Correu-e"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:47
|
||||||
|
#: web/templates/public/booking/fields.gohtml:205
|
||||||
|
#: web/templates/admin/payment/details.gohtml:137
|
||||||
|
#: web/templates/admin/taxDetails.gohtml:45
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Phone"
|
||||||
|
msgstr "Telèfon"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:48
|
||||||
|
#: web/templates/admin/payment/details.gohtml:141
|
||||||
|
#: web/templates/admin/profile.gohtml:68
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Language"
|
||||||
|
msgstr "Idioma"
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:54
|
#: web/templates/mail/payment/details.gotxt:54
|
||||||
msgid "Best regards,"
|
msgid "Best regards,"
|
||||||
msgstr "Salutacions,"
|
msgstr "Salutacions,"
|
||||||
|
@ -490,7 +490,7 @@ msgid "Discover"
|
||||||
msgstr "Descobreix"
|
msgstr "Descobreix"
|
||||||
|
|
||||||
#: web/templates/public/campsite/type.gohtml:49
|
#: web/templates/public/campsite/type.gohtml:49
|
||||||
#: web/templates/public/booking/fields.gohtml:269
|
#: web/templates/public/booking/fields.gohtml:273
|
||||||
msgctxt "action"
|
msgctxt "action"
|
||||||
msgid "Book"
|
msgid "Book"
|
||||||
msgstr "Reserva"
|
msgstr "Reserva"
|
||||||
|
@ -917,25 +917,25 @@ msgstr "Població"
|
||||||
msgid "Choose a country"
|
msgid "Choose a country"
|
||||||
msgstr "Esculli un país"
|
msgstr "Esculli un país"
|
||||||
|
|
||||||
#: web/templates/public/booking/fields.gohtml:216
|
#: web/templates/public/booking/fields.gohtml:242
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "ACSI card? (optional)"
|
msgid "ACSI card? (optional)"
|
||||||
msgstr "Targeta ACSI? (opcional)"
|
msgstr "Targeta ACSI? (opcional)"
|
||||||
|
|
||||||
#: web/templates/public/booking/fields.gohtml:224
|
#: web/templates/public/booking/fields.gohtml:250
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "I have read and I accept %[1]sthe reservation conditions%[2]s"
|
msgid "I have read and I accept %[1]sthe reservation conditions%[2]s"
|
||||||
msgstr "He llegit i accepto %[1]sles condicions de reserves%[2]s"
|
msgstr "He llegit i accepto %[1]sles condicions de reserves%[2]s"
|
||||||
|
|
||||||
#: web/templates/public/booking/fields.gohtml:261
|
#: web/templates/public/booking/fields.gohtml:258
|
||||||
msgid "By down paying the %d %% of the total, you are pre-booking your preferences. We will respond within 24 hours and this percentage will be charged if accepted."
|
msgid "By down paying the %d %% of the total, you are pre-booking your preferences. We will respond within 24 hours and this percentage will be charged if accepted."
|
||||||
msgstr "En tramitar el %d %% del total esteu realitzant la prereserva de les vostres preferències. Us respondrem en un termini de 24 hores i us cobrarem aquest percentatge en cas que sigui acceptada."
|
msgstr "En tramitar el %d %% del total esteu realitzant la prereserva de les vostres preferències. Us respondrem en un termini de 24 hores i us cobrarem aquest percentatge en cas que sigui acceptada."
|
||||||
|
|
||||||
#: web/templates/public/booking/fields.gohtml:263
|
#: web/templates/public/booking/fields.gohtml:260
|
||||||
msgid "By paying the total you are pre-booking your preferences. We will respond within 24 hours and this amount will be charged if accepted."
|
msgid "By paying the total you are pre-booking your preferences. We will respond within 24 hours and this amount will be charged if accepted."
|
||||||
msgstr "En tramitar el pagament del total esteu realitzant la prereserva de les vostres preferències. Us respondrem en un termini de 24 hores i us cobrarem aquesta quantitat en cas que sigui acceptada."
|
msgstr "En tramitar el pagament del total esteu realitzant la prereserva de les vostres preferències. Us respondrem en un termini de 24 hores i us cobrarem aquesta quantitat en cas que sigui acceptada."
|
||||||
|
|
||||||
#: web/templates/public/booking/fields.gohtml:267
|
#: web/templates/public/booking/fields.gohtml:264
|
||||||
msgid "See <%s>our conditions</%s> for more information."
|
msgid "See <%s>our conditions</%s> for more information."
|
||||||
msgstr "Consulteu <%s>les nostres condicions</%s> per a més informació."
|
msgstr "Consulteu <%s>les nostres condicions</%s> per a més informació."
|
||||||
|
|
||||||
|
@ -2270,7 +2270,7 @@ msgctxt "order product name"
|
||||||
msgid "Campsite Booking"
|
msgid "Campsite Booking"
|
||||||
msgstr "Reserva de càmping"
|
msgstr "Reserva de càmping"
|
||||||
|
|
||||||
#: pkg/payment/public.go:372
|
#: pkg/payment/public.go:369
|
||||||
msgctxt "subject"
|
msgctxt "subject"
|
||||||
msgid "Booking payment successfully received"
|
msgid "Booking payment successfully received"
|
||||||
msgstr "Rebut amb èxit el pagament de la reserva"
|
msgstr "Rebut amb èxit el pagament de la reserva"
|
||||||
|
@ -2314,12 +2314,12 @@ msgid "Slide image must be an image media type."
|
||||||
msgstr "La imatge de la diapositiva ha de ser un mèdia de tipus imatge."
|
msgstr "La imatge de la diapositiva ha de ser un mèdia de tipus imatge."
|
||||||
|
|
||||||
#: pkg/app/login.go:56 pkg/app/user.go:246 pkg/company/admin.go:224
|
#: pkg/app/login.go:56 pkg/app/user.go:246 pkg/company/admin.go:224
|
||||||
#: pkg/booking/public.go:536
|
#: pkg/booking/public.go:544
|
||||||
msgid "Email can not be empty."
|
msgid "Email can not be empty."
|
||||||
msgstr "No podeu deixar el correu-e en blanc."
|
msgstr "No podeu deixar el correu-e en blanc."
|
||||||
|
|
||||||
#: pkg/app/login.go:57 pkg/app/user.go:247 pkg/company/admin.go:225
|
#: pkg/app/login.go:57 pkg/app/user.go:247 pkg/company/admin.go:225
|
||||||
#: pkg/booking/public.go:537
|
#: pkg/booking/public.go:545
|
||||||
msgid "This email is not valid. It should be like name@domain.com."
|
msgid "This email is not valid. It should be like name@domain.com."
|
||||||
msgstr "Aquest correu-e no és vàlid. Hauria de ser similar a nom@domini.com."
|
msgstr "Aquest correu-e no és vàlid. Hauria de ser similar a nom@domini.com."
|
||||||
|
|
||||||
|
@ -2687,7 +2687,7 @@ msgstr "No podeu deixar l’adreça de l’enllaç en blanc."
|
||||||
msgid "This web address is not valid. It should be like https://domain.com/."
|
msgid "This web address is not valid. It should be like https://domain.com/."
|
||||||
msgstr "Aquesta adreça web no és vàlida. Hauria de ser similar a https://domini.com/."
|
msgstr "Aquesta adreça web no és vàlida. Hauria de ser similar a https://domini.com/."
|
||||||
|
|
||||||
#: pkg/company/admin.go:207 pkg/booking/public.go:521
|
#: pkg/company/admin.go:207 pkg/booking/public.go:529
|
||||||
msgid "Selected country is not valid."
|
msgid "Selected country is not valid."
|
||||||
msgstr "El país escollit no és vàlid."
|
msgstr "El país escollit no és vàlid."
|
||||||
|
|
||||||
|
@ -2707,15 +2707,15 @@ msgstr "No podeu deixar el NIF en blanc."
|
||||||
msgid "This VAT number is not valid."
|
msgid "This VAT number is not valid."
|
||||||
msgstr "Aquest NIF no és vàlid."
|
msgstr "Aquest NIF no és vàlid."
|
||||||
|
|
||||||
#: pkg/company/admin.go:219 pkg/booking/public.go:539
|
#: pkg/company/admin.go:219 pkg/booking/public.go:547
|
||||||
msgid "Phone can not be empty."
|
msgid "Phone can not be empty."
|
||||||
msgstr "No podeu deixar el telèfon en blanc."
|
msgstr "No podeu deixar el telèfon en blanc."
|
||||||
|
|
||||||
#: pkg/company/admin.go:220 pkg/booking/public.go:540
|
#: pkg/company/admin.go:220 pkg/booking/public.go:548
|
||||||
msgid "This phone number is not valid."
|
msgid "This phone number is not valid."
|
||||||
msgstr "Aquest número de telèfon no és vàlid."
|
msgstr "Aquest número de telèfon no és vàlid."
|
||||||
|
|
||||||
#: pkg/company/admin.go:230 pkg/booking/public.go:529
|
#: pkg/company/admin.go:230 pkg/booking/public.go:537
|
||||||
msgid "Address can not be empty."
|
msgid "Address can not be empty."
|
||||||
msgstr "No podeu deixar l’adreça en blanc."
|
msgstr "No podeu deixar l’adreça en blanc."
|
||||||
|
|
||||||
|
@ -2727,11 +2727,11 @@ msgstr "No podeu deixar la població en blanc."
|
||||||
msgid "Province can not be empty."
|
msgid "Province can not be empty."
|
||||||
msgstr "No podeu deixar la província en blanc."
|
msgstr "No podeu deixar la província en blanc."
|
||||||
|
|
||||||
#: pkg/company/admin.go:233 pkg/booking/public.go:531
|
#: pkg/company/admin.go:233 pkg/booking/public.go:539
|
||||||
msgid "Postcode can not be empty."
|
msgid "Postcode can not be empty."
|
||||||
msgstr "No podeu deixar el codi postal en blanc."
|
msgstr "No podeu deixar el codi postal en blanc."
|
||||||
|
|
||||||
#: pkg/company/admin.go:234 pkg/booking/public.go:532
|
#: pkg/company/admin.go:234 pkg/booking/public.go:540
|
||||||
msgid "This postcode is not valid."
|
msgid "This postcode is not valid."
|
||||||
msgstr "Aquest codi postal no és vàlid."
|
msgstr "Aquest codi postal no és vàlid."
|
||||||
|
|
||||||
|
@ -2783,27 +2783,27 @@ msgstr "No podeu deixar el fitxer del mèdia en blanc."
|
||||||
msgid "Filename can not be empty."
|
msgid "Filename can not be empty."
|
||||||
msgstr "No podeu deixar el nom del fitxer en blanc."
|
msgstr "No podeu deixar el nom del fitxer en blanc."
|
||||||
|
|
||||||
#: pkg/booking/cart.go:153
|
#: pkg/booking/cart.go:159
|
||||||
msgctxt "cart"
|
msgctxt "cart"
|
||||||
msgid "Night"
|
msgid "Night"
|
||||||
msgstr "Nit"
|
msgstr "Nit"
|
||||||
|
|
||||||
#: pkg/booking/cart.go:154
|
#: pkg/booking/cart.go:160
|
||||||
msgctxt "cart"
|
msgctxt "cart"
|
||||||
msgid "Adult"
|
msgid "Adult"
|
||||||
msgstr "Adult"
|
msgstr "Adult"
|
||||||
|
|
||||||
#: pkg/booking/cart.go:155
|
#: pkg/booking/cart.go:161
|
||||||
msgctxt "cart"
|
msgctxt "cart"
|
||||||
msgid "Teenager"
|
msgid "Teenager"
|
||||||
msgstr "Adolescent"
|
msgstr "Adolescent"
|
||||||
|
|
||||||
#: pkg/booking/cart.go:156
|
#: pkg/booking/cart.go:162
|
||||||
msgctxt "cart"
|
msgctxt "cart"
|
||||||
msgid "Child"
|
msgid "Child"
|
||||||
msgstr "Nen"
|
msgstr "Nen"
|
||||||
|
|
||||||
#: pkg/booking/cart.go:157
|
#: pkg/booking/cart.go:163
|
||||||
msgctxt "cart"
|
msgctxt "cart"
|
||||||
msgid "Dog"
|
msgid "Dog"
|
||||||
msgstr "Gos"
|
msgstr "Gos"
|
||||||
|
@ -2849,92 +2849,92 @@ msgstr "La data de sortida ha de ser igual o posterior a %s."
|
||||||
msgid "Departure date must be %s or before."
|
msgid "Departure date must be %s or before."
|
||||||
msgstr "La data de sortida ha de ser anterior o igual a %s."
|
msgstr "La data de sortida ha de ser anterior o igual a %s."
|
||||||
|
|
||||||
#: pkg/booking/public.go:356
|
#: pkg/booking/public.go:368
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "There can be at most %d guests in this accommodation."
|
msgid "There can be at most %d guests in this accommodation."
|
||||||
msgstr "Hi poden haver com a màxim %d convidats a aquest allotjament."
|
msgstr "Hi poden haver com a màxim %d convidats a aquest allotjament."
|
||||||
|
|
||||||
#: pkg/booking/public.go:376
|
#: pkg/booking/public.go:388
|
||||||
msgid "Number of adults can not be empty"
|
msgid "Number of adults can not be empty"
|
||||||
msgstr "No podeu deixar el número d’adults en blanc."
|
msgstr "No podeu deixar el número d’adults en blanc."
|
||||||
|
|
||||||
#: pkg/booking/public.go:377
|
#: pkg/booking/public.go:389
|
||||||
msgid "Number of adults must be an integer."
|
msgid "Number of adults must be an integer."
|
||||||
msgstr "El número d’adults ha de ser enter."
|
msgstr "El número d’adults ha de ser enter."
|
||||||
|
|
||||||
#: pkg/booking/public.go:378
|
#: pkg/booking/public.go:390
|
||||||
msgid "There must be at least one adult."
|
msgid "There must be at least one adult."
|
||||||
msgstr "Hi ha d’haver com a mínim un adult."
|
msgstr "Hi ha d’haver com a mínim un adult."
|
||||||
|
|
||||||
#: pkg/booking/public.go:381
|
#: pkg/booking/public.go:393
|
||||||
msgid "Number of teenagers can not be empty"
|
msgid "Number of teenagers can not be empty"
|
||||||
msgstr "No podeu deixar el número d’adolescents en blanc."
|
msgstr "No podeu deixar el número d’adolescents en blanc."
|
||||||
|
|
||||||
#: pkg/booking/public.go:382
|
#: pkg/booking/public.go:394
|
||||||
msgid "Number of teenagers must be an integer."
|
msgid "Number of teenagers must be an integer."
|
||||||
msgstr "El número d’adolescents ha de ser enter."
|
msgstr "El número d’adolescents ha de ser enter."
|
||||||
|
|
||||||
#: pkg/booking/public.go:383
|
#: pkg/booking/public.go:395
|
||||||
msgid "Number of teenagers can not be negative."
|
msgid "Number of teenagers can not be negative."
|
||||||
msgstr "El número d’adolescents no pot ser negatiu."
|
msgstr "El número d’adolescents no pot ser negatiu."
|
||||||
|
|
||||||
#: pkg/booking/public.go:386
|
#: pkg/booking/public.go:398
|
||||||
msgid "Number of children can not be empty"
|
msgid "Number of children can not be empty"
|
||||||
msgstr "No podeu deixar el número de nens en blanc."
|
msgstr "No podeu deixar el número de nens en blanc."
|
||||||
|
|
||||||
#: pkg/booking/public.go:387
|
#: pkg/booking/public.go:399
|
||||||
msgid "Number of children must be an integer."
|
msgid "Number of children must be an integer."
|
||||||
msgstr "El número de nens ha de ser enter."
|
msgstr "El número de nens ha de ser enter."
|
||||||
|
|
||||||
#: pkg/booking/public.go:388
|
#: pkg/booking/public.go:400
|
||||||
msgid "Number of children can not be negative."
|
msgid "Number of children can not be negative."
|
||||||
msgstr "El número de nens no pot ser negatiu."
|
msgstr "El número de nens no pot ser negatiu."
|
||||||
|
|
||||||
#: pkg/booking/public.go:391
|
#: pkg/booking/public.go:403
|
||||||
msgid "Number of dogs can not be empty"
|
msgid "Number of dogs can not be empty"
|
||||||
msgstr "No podeu deixar el número de gossos en blanc."
|
msgstr "No podeu deixar el número de gossos en blanc."
|
||||||
|
|
||||||
#: pkg/booking/public.go:392
|
#: pkg/booking/public.go:404
|
||||||
msgid "Number of dogs must be an integer."
|
msgid "Number of dogs must be an integer."
|
||||||
msgstr "El número de gossos ha de ser enter."
|
msgstr "El número de gossos ha de ser enter."
|
||||||
|
|
||||||
#: pkg/booking/public.go:393
|
#: pkg/booking/public.go:405
|
||||||
msgid "Number of dogs can not be negative."
|
msgid "Number of dogs can not be negative."
|
||||||
msgstr "El número de gossos no pot ser negatiu."
|
msgstr "El número de gossos no pot ser negatiu."
|
||||||
|
|
||||||
#: pkg/booking/public.go:464
|
#: pkg/booking/public.go:476
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s can not be empty"
|
msgid "%s can not be empty"
|
||||||
msgstr "No podeu deixar %s en blanc."
|
msgstr "No podeu deixar %s en blanc."
|
||||||
|
|
||||||
#: pkg/booking/public.go:465
|
#: pkg/booking/public.go:477
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s must be an integer."
|
msgid "%s must be an integer."
|
||||||
msgstr "%s ha de ser un número enter."
|
msgstr "%s ha de ser un número enter."
|
||||||
|
|
||||||
#: pkg/booking/public.go:466
|
#: pkg/booking/public.go:478
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s must be %d or greater."
|
msgid "%s must be %d or greater."
|
||||||
msgstr "El valor de %s ha de ser com a mínim %d."
|
msgstr "El valor de %s ha de ser com a mínim %d."
|
||||||
|
|
||||||
#: pkg/booking/public.go:467
|
#: pkg/booking/public.go:479
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s must be at most %d."
|
msgid "%s must be at most %d."
|
||||||
msgstr "El valor de %s ha de ser com a màxim %d."
|
msgstr "El valor de %s ha de ser com a màxim %d."
|
||||||
|
|
||||||
#: pkg/booking/public.go:525
|
#: pkg/booking/public.go:533
|
||||||
msgid "Full name can not be empty."
|
msgid "Full name can not be empty."
|
||||||
msgstr "No podeu deixar el nom i els cognoms en blanc."
|
msgstr "No podeu deixar el nom i els cognoms en blanc."
|
||||||
|
|
||||||
#: pkg/booking/public.go:526
|
#: pkg/booking/public.go:534
|
||||||
msgid "Full name must have at least one letter."
|
msgid "Full name must have at least one letter."
|
||||||
msgstr "El nom i els cognoms han de tenir com a mínim una lletra."
|
msgstr "El nom i els cognoms han de tenir com a mínim una lletra."
|
||||||
|
|
||||||
#: pkg/booking/public.go:530
|
#: pkg/booking/public.go:538
|
||||||
msgid "Town or village can not be empty."
|
msgid "Town or village can not be empty."
|
||||||
msgstr "No podeu deixar la població en blanc."
|
msgstr "No podeu deixar la població en blanc."
|
||||||
|
|
||||||
#: pkg/booking/public.go:545
|
#: pkg/booking/public.go:553
|
||||||
msgid "It is mandatory to agree to the reservation conditions."
|
msgid "It is mandatory to agree to the reservation conditions."
|
||||||
msgstr "És obligatori acceptar les condicions de reserves."
|
msgstr "És obligatori acceptar les condicions de reserves."
|
||||||
|
|
||||||
|
|
386
po/es.po
386
po/es.po
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: camper\n"
|
"Project-Id-Version: camper\n"
|
||||||
"Report-Msgid-Bugs-To: jordi@tandem.blog\n"
|
"Report-Msgid-Bugs-To: jordi@tandem.blog\n"
|
||||||
"POT-Creation-Date: 2024-02-29 16:55+0100\n"
|
"POT-Creation-Date: 2024-03-14 22:05+0100\n"
|
||||||
"PO-Revision-Date: 2024-02-06 10:04+0100\n"
|
"PO-Revision-Date: 2024-02-06 10:04+0100\n"
|
||||||
"Last-Translator: jordi fita mas <jordi@tandem.blog>\n"
|
"Last-Translator: jordi fita mas <jordi@tandem.blog>\n"
|
||||||
"Language-Team: Spanish <es@tp.org.es>\n"
|
"Language-Team: Spanish <es@tp.org.es>\n"
|
||||||
|
@ -127,160 +127,13 @@ msgid "Area preferences"
|
||||||
msgstr "Preferencias de área"
|
msgstr "Preferencias de área"
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:18
|
#: web/templates/mail/payment/details.gotxt:18
|
||||||
#: web/templates/public/campsite/dates.gohtml:4
|
|
||||||
#: web/templates/public/booking/fields.gohtml:30
|
|
||||||
#: web/templates/admin/payment/details.gohtml:52
|
#: web/templates/admin/payment/details.gohtml:52
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "Arrival date"
|
|
||||||
msgstr "Fecha de llegada"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:19
|
|
||||||
#: web/templates/public/campsite/dates.gohtml:15
|
|
||||||
#: web/templates/public/booking/fields.gohtml:41
|
|
||||||
#: web/templates/admin/payment/details.gohtml:56
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Departure date"
|
|
||||||
msgstr "Fecha de salida"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:20
|
|
||||||
#: web/templates/admin/payment/details.gohtml:60
|
|
||||||
msgctxt "cart"
|
|
||||||
msgid "Nights"
|
|
||||||
msgstr "Noches"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:21
|
|
||||||
#: web/templates/public/booking/fields.gohtml:60
|
|
||||||
#: web/templates/admin/payment/details.gohtml:64
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Adults aged 17 or older"
|
|
||||||
msgstr "Adultos de 17 años o más"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:22
|
|
||||||
#: web/templates/public/booking/fields.gohtml:71
|
|
||||||
#: web/templates/admin/payment/details.gohtml:68
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Teenagers from 11 to 16 years old"
|
|
||||||
msgstr "Adolescentes de 11 a 16 años"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:23
|
|
||||||
#: web/templates/public/booking/fields.gohtml:82
|
|
||||||
#: web/templates/admin/payment/details.gohtml:72
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Children from 2 to 10 years old"
|
|
||||||
msgstr "Niños de 2 a 10 años"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:24
|
|
||||||
#: web/templates/public/booking/fields.gohtml:100
|
|
||||||
#: web/templates/admin/payment/details.gohtml:76
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Dogs"
|
|
||||||
msgstr "Perros"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:25
|
|
||||||
#: web/templates/admin/payment/details.gohtml:80 pkg/booking/cart.go:191
|
|
||||||
msgctxt "cart"
|
|
||||||
msgid "Tourist tax"
|
|
||||||
msgstr "Impuesto turístico"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:26
|
|
||||||
#: web/templates/public/booking/fields.gohtml:242
|
|
||||||
msgctxt "cart"
|
|
||||||
msgid "Total"
|
|
||||||
msgstr "Total"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:27
|
|
||||||
#: web/templates/public/booking/fields.gohtml:247
|
|
||||||
#: web/templates/admin/payment/details.gohtml:84
|
|
||||||
msgctxt "cart"
|
|
||||||
msgid "Down payment"
|
|
||||||
msgstr "A cuenta"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:30
|
|
||||||
#: web/templates/admin/payment/details.gohtml:92
|
|
||||||
#: web/templates/admin/campsite/type/option/form.gohtml:18
|
|
||||||
#: web/templates/admin/campsite/type/option/index.gohtml:6
|
|
||||||
#: web/templates/admin/campsite/type/option/index.gohtml:17
|
|
||||||
msgctxt "title"
|
|
||||||
msgid "Campsite Type Options"
|
|
||||||
msgstr "Opciones del tipo de alojamiento"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:38
|
|
||||||
#: web/templates/public/booking/fields.gohtml:146
|
|
||||||
#: web/templates/admin/payment/details.gohtml:106
|
|
||||||
msgctxt "title"
|
|
||||||
msgid "Customer Details"
|
|
||||||
msgstr "Detalles del cliente"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:40
|
|
||||||
#: web/templates/public/booking/fields.gohtml:149
|
|
||||||
#: web/templates/admin/payment/details.gohtml:109
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Full name"
|
|
||||||
msgstr "Nombre y apellidos"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:41
|
|
||||||
#: web/templates/public/booking/fields.gohtml:158
|
|
||||||
#: web/templates/admin/payment/details.gohtml:113
|
|
||||||
#: web/templates/admin/taxDetails.gohtml:69
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Address"
|
|
||||||
msgstr "Dirección"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:42
|
|
||||||
#: web/templates/public/booking/fields.gohtml:167
|
|
||||||
#: web/templates/admin/payment/details.gohtml:117
|
|
||||||
#: web/templates/admin/taxDetails.gohtml:93
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Postcode"
|
|
||||||
msgstr "Código postal"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:43
|
|
||||||
#: web/templates/admin/payment/details.gohtml:121
|
|
||||||
#: web/templates/admin/taxDetails.gohtml:77
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "City"
|
|
||||||
msgstr "Población"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:44
|
|
||||||
#: web/templates/public/booking/fields.gohtml:185
|
|
||||||
#: web/templates/admin/payment/details.gohtml:125
|
|
||||||
#: web/templates/admin/taxDetails.gohtml:101
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Country"
|
|
||||||
msgstr "País"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:45
|
|
||||||
#: web/templates/public/booking/fields.gohtml:196
|
|
||||||
#: web/templates/admin/payment/details.gohtml:129
|
|
||||||
#: web/templates/admin/login.gohtml:27 web/templates/admin/profile.gohtml:38
|
|
||||||
#: web/templates/admin/taxDetails.gohtml:53
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Email"
|
|
||||||
msgstr "Correo-e"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:46
|
|
||||||
#: web/templates/public/booking/fields.gohtml:205
|
|
||||||
#: web/templates/admin/payment/details.gohtml:133
|
|
||||||
#: web/templates/admin/taxDetails.gohtml:45
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Phone"
|
|
||||||
msgstr "Teléfono"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:47
|
|
||||||
#: web/templates/admin/payment/details.gohtml:137
|
|
||||||
#: web/templates/admin/profile.gohtml:68
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Language"
|
|
||||||
msgstr "Idioma"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:48
|
|
||||||
#: web/templates/admin/payment/details.gohtml:141
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "ACSI card?"
|
msgid "ACSI card?"
|
||||||
msgstr "¿Tarjeta ACSI?"
|
msgstr "¿Tarjeta ACSI?"
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:48
|
#: web/templates/mail/payment/details.gotxt:18
|
||||||
#: web/templates/admin/payment/details.gohtml:142
|
#: web/templates/admin/payment/details.gohtml:53
|
||||||
#: web/templates/admin/campsite/index.gohtml:41
|
#: web/templates/admin/campsite/index.gohtml:41
|
||||||
#: web/templates/admin/campsite/type/index.gohtml:53
|
#: web/templates/admin/campsite/type/index.gohtml:53
|
||||||
#: web/templates/admin/season/index.gohtml:44
|
#: web/templates/admin/season/index.gohtml:44
|
||||||
|
@ -289,8 +142,8 @@ msgstr "¿Tarjeta ACSI?"
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
msgstr "Sí"
|
msgstr "Sí"
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:48
|
#: web/templates/mail/payment/details.gotxt:18
|
||||||
#: web/templates/admin/payment/details.gohtml:142
|
#: web/templates/admin/payment/details.gohtml:53
|
||||||
#: web/templates/admin/campsite/index.gohtml:41
|
#: web/templates/admin/campsite/index.gohtml:41
|
||||||
#: web/templates/admin/campsite/type/index.gohtml:53
|
#: web/templates/admin/campsite/type/index.gohtml:53
|
||||||
#: web/templates/admin/season/index.gohtml:44
|
#: web/templates/admin/season/index.gohtml:44
|
||||||
|
@ -299,6 +152,153 @@ msgstr "Sí"
|
||||||
msgid "No"
|
msgid "No"
|
||||||
msgstr "No"
|
msgstr "No"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:19
|
||||||
|
#: web/templates/public/campsite/dates.gohtml:4
|
||||||
|
#: web/templates/public/booking/fields.gohtml:30
|
||||||
|
#: web/templates/admin/payment/details.gohtml:56
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Arrival date"
|
||||||
|
msgstr "Fecha de llegada"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:20
|
||||||
|
#: web/templates/public/campsite/dates.gohtml:15
|
||||||
|
#: web/templates/public/booking/fields.gohtml:41
|
||||||
|
#: web/templates/admin/payment/details.gohtml:60
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Departure date"
|
||||||
|
msgstr "Fecha de salida"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:21
|
||||||
|
#: web/templates/admin/payment/details.gohtml:64
|
||||||
|
msgctxt "cart"
|
||||||
|
msgid "Nights"
|
||||||
|
msgstr "Noches"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:22
|
||||||
|
#: web/templates/public/booking/fields.gohtml:60
|
||||||
|
#: web/templates/admin/payment/details.gohtml:68
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Adults aged 17 or older"
|
||||||
|
msgstr "Adultos de 17 años o más"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:23
|
||||||
|
#: web/templates/public/booking/fields.gohtml:71
|
||||||
|
#: web/templates/admin/payment/details.gohtml:72
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Teenagers from 11 to 16 years old"
|
||||||
|
msgstr "Adolescentes de 11 a 16 años"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:24
|
||||||
|
#: web/templates/public/booking/fields.gohtml:82
|
||||||
|
#: web/templates/admin/payment/details.gohtml:76
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Children from 2 to 10 years old"
|
||||||
|
msgstr "Niños de 2 a 10 años"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:25
|
||||||
|
#: web/templates/public/booking/fields.gohtml:100
|
||||||
|
#: web/templates/admin/payment/details.gohtml:80
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Dogs"
|
||||||
|
msgstr "Perros"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:26
|
||||||
|
#: web/templates/admin/payment/details.gohtml:84 pkg/booking/cart.go:197
|
||||||
|
msgctxt "cart"
|
||||||
|
msgid "Tourist tax"
|
||||||
|
msgstr "Impuesto turístico"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:27
|
||||||
|
#: web/templates/public/booking/fields.gohtml:225
|
||||||
|
msgctxt "cart"
|
||||||
|
msgid "Total"
|
||||||
|
msgstr "Total"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:28
|
||||||
|
#: web/templates/public/booking/fields.gohtml:230
|
||||||
|
#: web/templates/admin/payment/details.gohtml:88
|
||||||
|
msgctxt "cart"
|
||||||
|
msgid "Down payment"
|
||||||
|
msgstr "A cuenta"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:31
|
||||||
|
#: web/templates/admin/payment/details.gohtml:96
|
||||||
|
#: web/templates/admin/campsite/type/option/form.gohtml:18
|
||||||
|
#: web/templates/admin/campsite/type/option/index.gohtml:6
|
||||||
|
#: web/templates/admin/campsite/type/option/index.gohtml:17
|
||||||
|
msgctxt "title"
|
||||||
|
msgid "Campsite Type Options"
|
||||||
|
msgstr "Opciones del tipo de alojamiento"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:39
|
||||||
|
#: web/templates/public/booking/fields.gohtml:146
|
||||||
|
#: web/templates/admin/payment/details.gohtml:110
|
||||||
|
msgctxt "title"
|
||||||
|
msgid "Customer Details"
|
||||||
|
msgstr "Detalles del cliente"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:41
|
||||||
|
#: web/templates/public/booking/fields.gohtml:149
|
||||||
|
#: web/templates/admin/payment/details.gohtml:113
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Full name"
|
||||||
|
msgstr "Nombre y apellidos"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:42
|
||||||
|
#: web/templates/public/booking/fields.gohtml:158
|
||||||
|
#: web/templates/admin/payment/details.gohtml:117
|
||||||
|
#: web/templates/admin/taxDetails.gohtml:69
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Address"
|
||||||
|
msgstr "Dirección"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:43
|
||||||
|
#: web/templates/public/booking/fields.gohtml:167
|
||||||
|
#: web/templates/admin/payment/details.gohtml:121
|
||||||
|
#: web/templates/admin/taxDetails.gohtml:93
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Postcode"
|
||||||
|
msgstr "Código postal"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:44
|
||||||
|
#: web/templates/admin/payment/details.gohtml:125
|
||||||
|
#: web/templates/admin/taxDetails.gohtml:77
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "City"
|
||||||
|
msgstr "Población"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:45
|
||||||
|
#: web/templates/public/booking/fields.gohtml:185
|
||||||
|
#: web/templates/admin/payment/details.gohtml:129
|
||||||
|
#: web/templates/admin/taxDetails.gohtml:101
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Country"
|
||||||
|
msgstr "País"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:46
|
||||||
|
#: web/templates/public/booking/fields.gohtml:196
|
||||||
|
#: web/templates/admin/payment/details.gohtml:133
|
||||||
|
#: web/templates/admin/login.gohtml:27 web/templates/admin/profile.gohtml:38
|
||||||
|
#: web/templates/admin/taxDetails.gohtml:53
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Email"
|
||||||
|
msgstr "Correo-e"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:47
|
||||||
|
#: web/templates/public/booking/fields.gohtml:205
|
||||||
|
#: web/templates/admin/payment/details.gohtml:137
|
||||||
|
#: web/templates/admin/taxDetails.gohtml:45
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Phone"
|
||||||
|
msgstr "Teléfono"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:48
|
||||||
|
#: web/templates/admin/payment/details.gohtml:141
|
||||||
|
#: web/templates/admin/profile.gohtml:68
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Language"
|
||||||
|
msgstr "Idioma"
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:54
|
#: web/templates/mail/payment/details.gotxt:54
|
||||||
msgid "Best regards,"
|
msgid "Best regards,"
|
||||||
msgstr "Saludos,"
|
msgstr "Saludos,"
|
||||||
|
@ -490,7 +490,7 @@ msgid "Discover"
|
||||||
msgstr "Descubre"
|
msgstr "Descubre"
|
||||||
|
|
||||||
#: web/templates/public/campsite/type.gohtml:49
|
#: web/templates/public/campsite/type.gohtml:49
|
||||||
#: web/templates/public/booking/fields.gohtml:269
|
#: web/templates/public/booking/fields.gohtml:273
|
||||||
msgctxt "action"
|
msgctxt "action"
|
||||||
msgid "Book"
|
msgid "Book"
|
||||||
msgstr "Reservar"
|
msgstr "Reservar"
|
||||||
|
@ -917,25 +917,25 @@ msgstr "Población"
|
||||||
msgid "Choose a country"
|
msgid "Choose a country"
|
||||||
msgstr "Escoja un país"
|
msgstr "Escoja un país"
|
||||||
|
|
||||||
#: web/templates/public/booking/fields.gohtml:216
|
#: web/templates/public/booking/fields.gohtml:242
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "ACSI card? (optional)"
|
msgid "ACSI card? (optional)"
|
||||||
msgstr "¿Tarjeta ACSI? (opcional)"
|
msgstr "¿Tarjeta ACSI? (opcional)"
|
||||||
|
|
||||||
#: web/templates/public/booking/fields.gohtml:224
|
#: web/templates/public/booking/fields.gohtml:250
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "I have read and I accept %[1]sthe reservation conditions%[2]s"
|
msgid "I have read and I accept %[1]sthe reservation conditions%[2]s"
|
||||||
msgstr "He leído y acepto %[1]slas condiciones de reserva%[2]s"
|
msgstr "He leído y acepto %[1]slas condiciones de reserva%[2]s"
|
||||||
|
|
||||||
#: web/templates/public/booking/fields.gohtml:261
|
#: web/templates/public/booking/fields.gohtml:258
|
||||||
msgid "By down paying the %d %% of the total, you are pre-booking your preferences. We will respond within 24 hours and this percentage will be charged if accepted."
|
msgid "By down paying the %d %% of the total, you are pre-booking your preferences. We will respond within 24 hours and this percentage will be charged if accepted."
|
||||||
msgstr "En tramitar el %d %% del total estáis realizando la prerreserva de vuestras preferencias. Os responderemos en un término de 24 horas y os cobraremos este porcentaje en caso que sea aceptada."
|
msgstr "En tramitar el %d %% del total estáis realizando la prerreserva de vuestras preferencias. Os responderemos en un término de 24 horas y os cobraremos este porcentaje en caso que sea aceptada."
|
||||||
|
|
||||||
#: web/templates/public/booking/fields.gohtml:263
|
#: web/templates/public/booking/fields.gohtml:260
|
||||||
msgid "By paying the total you are pre-booking your preferences. We will respond within 24 hours and this amount will be charged if accepted."
|
msgid "By paying the total you are pre-booking your preferences. We will respond within 24 hours and this amount will be charged if accepted."
|
||||||
msgstr "En tramitar el pago del total estáis realizando la prerreserva de vuestras preferencias. Os responderemos en un término de 24 horas y os cobraremos esta cantidad en caso que sea aceptada."
|
msgstr "En tramitar el pago del total estáis realizando la prerreserva de vuestras preferencias. Os responderemos en un término de 24 horas y os cobraremos esta cantidad en caso que sea aceptada."
|
||||||
|
|
||||||
#: web/templates/public/booking/fields.gohtml:267
|
#: web/templates/public/booking/fields.gohtml:264
|
||||||
msgid "See <%s>our conditions</%s> for more information."
|
msgid "See <%s>our conditions</%s> for more information."
|
||||||
msgstr "Consultad <%s>nuestras condiciones</%s> para más información."
|
msgstr "Consultad <%s>nuestras condiciones</%s> para más información."
|
||||||
|
|
||||||
|
@ -2270,7 +2270,7 @@ msgctxt "order product name"
|
||||||
msgid "Campsite Booking"
|
msgid "Campsite Booking"
|
||||||
msgstr "Reserva de camping"
|
msgstr "Reserva de camping"
|
||||||
|
|
||||||
#: pkg/payment/public.go:372
|
#: pkg/payment/public.go:369
|
||||||
msgctxt "subject"
|
msgctxt "subject"
|
||||||
msgid "Booking payment successfully received"
|
msgid "Booking payment successfully received"
|
||||||
msgstr "Se ha recibido correctamente el pago de la reserva"
|
msgstr "Se ha recibido correctamente el pago de la reserva"
|
||||||
|
@ -2314,12 +2314,12 @@ msgid "Slide image must be an image media type."
|
||||||
msgstr "La imagen de la diapositiva tiene que ser un medio de tipo imagen."
|
msgstr "La imagen de la diapositiva tiene que ser un medio de tipo imagen."
|
||||||
|
|
||||||
#: pkg/app/login.go:56 pkg/app/user.go:246 pkg/company/admin.go:224
|
#: pkg/app/login.go:56 pkg/app/user.go:246 pkg/company/admin.go:224
|
||||||
#: pkg/booking/public.go:536
|
#: pkg/booking/public.go:544
|
||||||
msgid "Email can not be empty."
|
msgid "Email can not be empty."
|
||||||
msgstr "No podéis dejar el correo-e en blanco."
|
msgstr "No podéis dejar el correo-e en blanco."
|
||||||
|
|
||||||
#: pkg/app/login.go:57 pkg/app/user.go:247 pkg/company/admin.go:225
|
#: pkg/app/login.go:57 pkg/app/user.go:247 pkg/company/admin.go:225
|
||||||
#: pkg/booking/public.go:537
|
#: pkg/booking/public.go:545
|
||||||
msgid "This email is not valid. It should be like name@domain.com."
|
msgid "This email is not valid. It should be like name@domain.com."
|
||||||
msgstr "Este correo-e no es válido. Tiene que ser parecido a nombre@dominio.com."
|
msgstr "Este correo-e no es válido. Tiene que ser parecido a nombre@dominio.com."
|
||||||
|
|
||||||
|
@ -2687,7 +2687,7 @@ msgstr "No podéis dejar la dirección del enlace en blanco."
|
||||||
msgid "This web address is not valid. It should be like https://domain.com/."
|
msgid "This web address is not valid. It should be like https://domain.com/."
|
||||||
msgstr "Esta dirección web no es válida. Tiene que ser parecido a https://dominio.com/."
|
msgstr "Esta dirección web no es válida. Tiene que ser parecido a https://dominio.com/."
|
||||||
|
|
||||||
#: pkg/company/admin.go:207 pkg/booking/public.go:521
|
#: pkg/company/admin.go:207 pkg/booking/public.go:529
|
||||||
msgid "Selected country is not valid."
|
msgid "Selected country is not valid."
|
||||||
msgstr "El país escogido no es válido."
|
msgstr "El país escogido no es válido."
|
||||||
|
|
||||||
|
@ -2707,15 +2707,15 @@ msgstr "No podéis dejar el NIF en blanco."
|
||||||
msgid "This VAT number is not valid."
|
msgid "This VAT number is not valid."
|
||||||
msgstr "Este NIF no es válido."
|
msgstr "Este NIF no es válido."
|
||||||
|
|
||||||
#: pkg/company/admin.go:219 pkg/booking/public.go:539
|
#: pkg/company/admin.go:219 pkg/booking/public.go:547
|
||||||
msgid "Phone can not be empty."
|
msgid "Phone can not be empty."
|
||||||
msgstr "No podéis dejar el teléfono en blanco."
|
msgstr "No podéis dejar el teléfono en blanco."
|
||||||
|
|
||||||
#: pkg/company/admin.go:220 pkg/booking/public.go:540
|
#: pkg/company/admin.go:220 pkg/booking/public.go:548
|
||||||
msgid "This phone number is not valid."
|
msgid "This phone number is not valid."
|
||||||
msgstr "Este teléfono no es válido."
|
msgstr "Este teléfono no es válido."
|
||||||
|
|
||||||
#: pkg/company/admin.go:230 pkg/booking/public.go:529
|
#: pkg/company/admin.go:230 pkg/booking/public.go:537
|
||||||
msgid "Address can not be empty."
|
msgid "Address can not be empty."
|
||||||
msgstr "No podéis dejar la dirección en blanco."
|
msgstr "No podéis dejar la dirección en blanco."
|
||||||
|
|
||||||
|
@ -2727,11 +2727,11 @@ msgstr "No podéis dejar la población en blanco."
|
||||||
msgid "Province can not be empty."
|
msgid "Province can not be empty."
|
||||||
msgstr "No podéis dejar la provincia en blanco."
|
msgstr "No podéis dejar la provincia en blanco."
|
||||||
|
|
||||||
#: pkg/company/admin.go:233 pkg/booking/public.go:531
|
#: pkg/company/admin.go:233 pkg/booking/public.go:539
|
||||||
msgid "Postcode can not be empty."
|
msgid "Postcode can not be empty."
|
||||||
msgstr "No podéis dejar el código postal en blanco."
|
msgstr "No podéis dejar el código postal en blanco."
|
||||||
|
|
||||||
#: pkg/company/admin.go:234 pkg/booking/public.go:532
|
#: pkg/company/admin.go:234 pkg/booking/public.go:540
|
||||||
msgid "This postcode is not valid."
|
msgid "This postcode is not valid."
|
||||||
msgstr "Este código postal no es válido."
|
msgstr "Este código postal no es válido."
|
||||||
|
|
||||||
|
@ -2783,27 +2783,27 @@ msgstr "No podéis dejar el archivo del medio en blanco."
|
||||||
msgid "Filename can not be empty."
|
msgid "Filename can not be empty."
|
||||||
msgstr "No podéis dejar el nombre del archivo en blanco."
|
msgstr "No podéis dejar el nombre del archivo en blanco."
|
||||||
|
|
||||||
#: pkg/booking/cart.go:153
|
#: pkg/booking/cart.go:159
|
||||||
msgctxt "cart"
|
msgctxt "cart"
|
||||||
msgid "Night"
|
msgid "Night"
|
||||||
msgstr "Noche"
|
msgstr "Noche"
|
||||||
|
|
||||||
#: pkg/booking/cart.go:154
|
#: pkg/booking/cart.go:160
|
||||||
msgctxt "cart"
|
msgctxt "cart"
|
||||||
msgid "Adult"
|
msgid "Adult"
|
||||||
msgstr "Adulto"
|
msgstr "Adulto"
|
||||||
|
|
||||||
#: pkg/booking/cart.go:155
|
#: pkg/booking/cart.go:161
|
||||||
msgctxt "cart"
|
msgctxt "cart"
|
||||||
msgid "Teenager"
|
msgid "Teenager"
|
||||||
msgstr "Adolescente"
|
msgstr "Adolescente"
|
||||||
|
|
||||||
#: pkg/booking/cart.go:156
|
#: pkg/booking/cart.go:162
|
||||||
msgctxt "cart"
|
msgctxt "cart"
|
||||||
msgid "Child"
|
msgid "Child"
|
||||||
msgstr "Niño"
|
msgstr "Niño"
|
||||||
|
|
||||||
#: pkg/booking/cart.go:157
|
#: pkg/booking/cart.go:163
|
||||||
msgctxt "cart"
|
msgctxt "cart"
|
||||||
msgid "Dog"
|
msgid "Dog"
|
||||||
msgstr "Perro"
|
msgstr "Perro"
|
||||||
|
@ -2849,92 +2849,92 @@ msgstr "La fecha de partida tiene que igual o posterior a %s."
|
||||||
msgid "Departure date must be %s or before."
|
msgid "Departure date must be %s or before."
|
||||||
msgstr "La fecha de partida tiene que ser anterior o igual a %s."
|
msgstr "La fecha de partida tiene que ser anterior o igual a %s."
|
||||||
|
|
||||||
#: pkg/booking/public.go:356
|
#: pkg/booking/public.go:368
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "There can be at most %d guests in this accommodation."
|
msgid "There can be at most %d guests in this accommodation."
|
||||||
msgstr "Solo puede haber como máximo %d invitados en este alojamiento."
|
msgstr "Solo puede haber como máximo %d invitados en este alojamiento."
|
||||||
|
|
||||||
#: pkg/booking/public.go:376
|
#: pkg/booking/public.go:388
|
||||||
msgid "Number of adults can not be empty"
|
msgid "Number of adults can not be empty"
|
||||||
msgstr "No podéis dejar el número de adultos blanco."
|
msgstr "No podéis dejar el número de adultos blanco."
|
||||||
|
|
||||||
#: pkg/booking/public.go:377
|
#: pkg/booking/public.go:389
|
||||||
msgid "Number of adults must be an integer."
|
msgid "Number of adults must be an integer."
|
||||||
msgstr "El número de adultos tiene que ser entero."
|
msgstr "El número de adultos tiene que ser entero."
|
||||||
|
|
||||||
#: pkg/booking/public.go:378
|
#: pkg/booking/public.go:390
|
||||||
msgid "There must be at least one adult."
|
msgid "There must be at least one adult."
|
||||||
msgstr "Tiene que haber como mínimo un adulto."
|
msgstr "Tiene que haber como mínimo un adulto."
|
||||||
|
|
||||||
#: pkg/booking/public.go:381
|
#: pkg/booking/public.go:393
|
||||||
msgid "Number of teenagers can not be empty"
|
msgid "Number of teenagers can not be empty"
|
||||||
msgstr "No podéis dejar el número de adolescentes en blanco."
|
msgstr "No podéis dejar el número de adolescentes en blanco."
|
||||||
|
|
||||||
#: pkg/booking/public.go:382
|
#: pkg/booking/public.go:394
|
||||||
msgid "Number of teenagers must be an integer."
|
msgid "Number of teenagers must be an integer."
|
||||||
msgstr "El número de adolescentes tiene que ser entero."
|
msgstr "El número de adolescentes tiene que ser entero."
|
||||||
|
|
||||||
#: pkg/booking/public.go:383
|
#: pkg/booking/public.go:395
|
||||||
msgid "Number of teenagers can not be negative."
|
msgid "Number of teenagers can not be negative."
|
||||||
msgstr "El número de adolescentes no puede ser negativo."
|
msgstr "El número de adolescentes no puede ser negativo."
|
||||||
|
|
||||||
#: pkg/booking/public.go:386
|
#: pkg/booking/public.go:398
|
||||||
msgid "Number of children can not be empty"
|
msgid "Number of children can not be empty"
|
||||||
msgstr "No podéis dejar el número de niños en blanco."
|
msgstr "No podéis dejar el número de niños en blanco."
|
||||||
|
|
||||||
#: pkg/booking/public.go:387
|
#: pkg/booking/public.go:399
|
||||||
msgid "Number of children must be an integer."
|
msgid "Number of children must be an integer."
|
||||||
msgstr "El número de niños tiene que ser entero."
|
msgstr "El número de niños tiene que ser entero."
|
||||||
|
|
||||||
#: pkg/booking/public.go:388
|
#: pkg/booking/public.go:400
|
||||||
msgid "Number of children can not be negative."
|
msgid "Number of children can not be negative."
|
||||||
msgstr "El número de niños no puede ser negativo."
|
msgstr "El número de niños no puede ser negativo."
|
||||||
|
|
||||||
#: pkg/booking/public.go:391
|
#: pkg/booking/public.go:403
|
||||||
msgid "Number of dogs can not be empty"
|
msgid "Number of dogs can not be empty"
|
||||||
msgstr "No podéis dejar el número de perros en blanco."
|
msgstr "No podéis dejar el número de perros en blanco."
|
||||||
|
|
||||||
#: pkg/booking/public.go:392
|
#: pkg/booking/public.go:404
|
||||||
msgid "Number of dogs must be an integer."
|
msgid "Number of dogs must be an integer."
|
||||||
msgstr "El número de perros tiene que ser entero."
|
msgstr "El número de perros tiene que ser entero."
|
||||||
|
|
||||||
#: pkg/booking/public.go:393
|
#: pkg/booking/public.go:405
|
||||||
msgid "Number of dogs can not be negative."
|
msgid "Number of dogs can not be negative."
|
||||||
msgstr "El número de perros no puede ser negativo."
|
msgstr "El número de perros no puede ser negativo."
|
||||||
|
|
||||||
#: pkg/booking/public.go:464
|
#: pkg/booking/public.go:476
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s can not be empty"
|
msgid "%s can not be empty"
|
||||||
msgstr "No podéis dejar %s en blanco."
|
msgstr "No podéis dejar %s en blanco."
|
||||||
|
|
||||||
#: pkg/booking/public.go:465
|
#: pkg/booking/public.go:477
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s must be an integer."
|
msgid "%s must be an integer."
|
||||||
msgstr "%s tiene que ser un número entero."
|
msgstr "%s tiene que ser un número entero."
|
||||||
|
|
||||||
#: pkg/booking/public.go:466
|
#: pkg/booking/public.go:478
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s must be %d or greater."
|
msgid "%s must be %d or greater."
|
||||||
msgstr "%s tiene que ser como mínimo %d."
|
msgstr "%s tiene que ser como mínimo %d."
|
||||||
|
|
||||||
#: pkg/booking/public.go:467
|
#: pkg/booking/public.go:479
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s must be at most %d."
|
msgid "%s must be at most %d."
|
||||||
msgstr "%s tiene que ser como máximo %d"
|
msgstr "%s tiene que ser como máximo %d"
|
||||||
|
|
||||||
#: pkg/booking/public.go:525
|
#: pkg/booking/public.go:533
|
||||||
msgid "Full name can not be empty."
|
msgid "Full name can not be empty."
|
||||||
msgstr "No podéis dejar el nombre y los apellidos en blanco."
|
msgstr "No podéis dejar el nombre y los apellidos en blanco."
|
||||||
|
|
||||||
#: pkg/booking/public.go:526
|
#: pkg/booking/public.go:534
|
||||||
msgid "Full name must have at least one letter."
|
msgid "Full name must have at least one letter."
|
||||||
msgstr "El nombre y los apellidos tienen que tener como mínimo una letra."
|
msgstr "El nombre y los apellidos tienen que tener como mínimo una letra."
|
||||||
|
|
||||||
#: pkg/booking/public.go:530
|
#: pkg/booking/public.go:538
|
||||||
msgid "Town or village can not be empty."
|
msgid "Town or village can not be empty."
|
||||||
msgstr "No podéis dejar la población en blanco."
|
msgstr "No podéis dejar la población en blanco."
|
||||||
|
|
||||||
#: pkg/booking/public.go:545
|
#: pkg/booking/public.go:553
|
||||||
msgid "It is mandatory to agree to the reservation conditions."
|
msgid "It is mandatory to agree to the reservation conditions."
|
||||||
msgstr "Es obligatorio aceptar las condiciones de reserva."
|
msgstr "Es obligatorio aceptar las condiciones de reserva."
|
||||||
|
|
||||||
|
|
386
po/fr.po
386
po/fr.po
|
@ -8,7 +8,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: camper\n"
|
"Project-Id-Version: camper\n"
|
||||||
"Report-Msgid-Bugs-To: jordi@tandem.blog\n"
|
"Report-Msgid-Bugs-To: jordi@tandem.blog\n"
|
||||||
"POT-Creation-Date: 2024-02-29 16:55+0100\n"
|
"POT-Creation-Date: 2024-03-14 22:05+0100\n"
|
||||||
"PO-Revision-Date: 2024-02-06 10:05+0100\n"
|
"PO-Revision-Date: 2024-02-06 10:05+0100\n"
|
||||||
"Last-Translator: Oriol Carbonell <info@oriolcarbonell.cat>\n"
|
"Last-Translator: Oriol Carbonell <info@oriolcarbonell.cat>\n"
|
||||||
"Language-Team: French <traduc@traduc.org>\n"
|
"Language-Team: French <traduc@traduc.org>\n"
|
||||||
|
@ -127,160 +127,13 @@ msgid "Area preferences"
|
||||||
msgstr "Préférences de zone"
|
msgstr "Préférences de zone"
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:18
|
#: web/templates/mail/payment/details.gotxt:18
|
||||||
#: web/templates/public/campsite/dates.gohtml:4
|
|
||||||
#: web/templates/public/booking/fields.gohtml:30
|
|
||||||
#: web/templates/admin/payment/details.gohtml:52
|
#: web/templates/admin/payment/details.gohtml:52
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "Arrival date"
|
|
||||||
msgstr "Date d’arrivée"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:19
|
|
||||||
#: web/templates/public/campsite/dates.gohtml:15
|
|
||||||
#: web/templates/public/booking/fields.gohtml:41
|
|
||||||
#: web/templates/admin/payment/details.gohtml:56
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Departure date"
|
|
||||||
msgstr "Date de depart"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:20
|
|
||||||
#: web/templates/admin/payment/details.gohtml:60
|
|
||||||
msgctxt "cart"
|
|
||||||
msgid "Nights"
|
|
||||||
msgstr "Nuits"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:21
|
|
||||||
#: web/templates/public/booking/fields.gohtml:60
|
|
||||||
#: web/templates/admin/payment/details.gohtml:64
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Adults aged 17 or older"
|
|
||||||
msgstr "Adultes âgés 17 ans ou plus"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:22
|
|
||||||
#: web/templates/public/booking/fields.gohtml:71
|
|
||||||
#: web/templates/admin/payment/details.gohtml:68
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Teenagers from 11 to 16 years old"
|
|
||||||
msgstr "Adolescents de 11 à 16 ans"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:23
|
|
||||||
#: web/templates/public/booking/fields.gohtml:82
|
|
||||||
#: web/templates/admin/payment/details.gohtml:72
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Children from 2 to 10 years old"
|
|
||||||
msgstr "Enfants de 2 à 10 ans"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:24
|
|
||||||
#: web/templates/public/booking/fields.gohtml:100
|
|
||||||
#: web/templates/admin/payment/details.gohtml:76
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Dogs"
|
|
||||||
msgstr "Chiens"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:25
|
|
||||||
#: web/templates/admin/payment/details.gohtml:80 pkg/booking/cart.go:191
|
|
||||||
msgctxt "cart"
|
|
||||||
msgid "Tourist tax"
|
|
||||||
msgstr "Taxe touristique"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:26
|
|
||||||
#: web/templates/public/booking/fields.gohtml:242
|
|
||||||
msgctxt "cart"
|
|
||||||
msgid "Total"
|
|
||||||
msgstr "Totale"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:27
|
|
||||||
#: web/templates/public/booking/fields.gohtml:247
|
|
||||||
#: web/templates/admin/payment/details.gohtml:84
|
|
||||||
msgctxt "cart"
|
|
||||||
msgid "Down payment"
|
|
||||||
msgstr "Acompte"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:30
|
|
||||||
#: web/templates/admin/payment/details.gohtml:92
|
|
||||||
#: web/templates/admin/campsite/type/option/form.gohtml:18
|
|
||||||
#: web/templates/admin/campsite/type/option/index.gohtml:6
|
|
||||||
#: web/templates/admin/campsite/type/option/index.gohtml:17
|
|
||||||
msgctxt "title"
|
|
||||||
msgid "Campsite Type Options"
|
|
||||||
msgstr "Options de type d’emplacement de camping"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:38
|
|
||||||
#: web/templates/public/booking/fields.gohtml:146
|
|
||||||
#: web/templates/admin/payment/details.gohtml:106
|
|
||||||
msgctxt "title"
|
|
||||||
msgid "Customer Details"
|
|
||||||
msgstr "Détails du client"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:40
|
|
||||||
#: web/templates/public/booking/fields.gohtml:149
|
|
||||||
#: web/templates/admin/payment/details.gohtml:109
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Full name"
|
|
||||||
msgstr "Nom et prénom"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:41
|
|
||||||
#: web/templates/public/booking/fields.gohtml:158
|
|
||||||
#: web/templates/admin/payment/details.gohtml:113
|
|
||||||
#: web/templates/admin/taxDetails.gohtml:69
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Address"
|
|
||||||
msgstr "Adresse"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:42
|
|
||||||
#: web/templates/public/booking/fields.gohtml:167
|
|
||||||
#: web/templates/admin/payment/details.gohtml:117
|
|
||||||
#: web/templates/admin/taxDetails.gohtml:93
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Postcode"
|
|
||||||
msgstr "Code postal"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:43
|
|
||||||
#: web/templates/admin/payment/details.gohtml:121
|
|
||||||
#: web/templates/admin/taxDetails.gohtml:77
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "City"
|
|
||||||
msgstr "Ville"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:44
|
|
||||||
#: web/templates/public/booking/fields.gohtml:185
|
|
||||||
#: web/templates/admin/payment/details.gohtml:125
|
|
||||||
#: web/templates/admin/taxDetails.gohtml:101
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Country"
|
|
||||||
msgstr "Pays"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:45
|
|
||||||
#: web/templates/public/booking/fields.gohtml:196
|
|
||||||
#: web/templates/admin/payment/details.gohtml:129
|
|
||||||
#: web/templates/admin/login.gohtml:27 web/templates/admin/profile.gohtml:38
|
|
||||||
#: web/templates/admin/taxDetails.gohtml:53
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Email"
|
|
||||||
msgstr "E-mail"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:46
|
|
||||||
#: web/templates/public/booking/fields.gohtml:205
|
|
||||||
#: web/templates/admin/payment/details.gohtml:133
|
|
||||||
#: web/templates/admin/taxDetails.gohtml:45
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Phone"
|
|
||||||
msgstr "Téléphone"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:47
|
|
||||||
#: web/templates/admin/payment/details.gohtml:137
|
|
||||||
#: web/templates/admin/profile.gohtml:68
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "Language"
|
|
||||||
msgstr "Langue"
|
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:48
|
|
||||||
#: web/templates/admin/payment/details.gohtml:141
|
|
||||||
msgctxt "input"
|
|
||||||
msgid "ACSI card?"
|
msgid "ACSI card?"
|
||||||
msgstr "Carte ACSI ?"
|
msgstr "Carte ACSI ?"
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:48
|
#: web/templates/mail/payment/details.gotxt:18
|
||||||
#: web/templates/admin/payment/details.gohtml:142
|
#: web/templates/admin/payment/details.gohtml:53
|
||||||
#: web/templates/admin/campsite/index.gohtml:41
|
#: web/templates/admin/campsite/index.gohtml:41
|
||||||
#: web/templates/admin/campsite/type/index.gohtml:53
|
#: web/templates/admin/campsite/type/index.gohtml:53
|
||||||
#: web/templates/admin/season/index.gohtml:44
|
#: web/templates/admin/season/index.gohtml:44
|
||||||
|
@ -289,8 +142,8 @@ msgstr "Carte ACSI ?"
|
||||||
msgid "Yes"
|
msgid "Yes"
|
||||||
msgstr "Oui"
|
msgstr "Oui"
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:48
|
#: web/templates/mail/payment/details.gotxt:18
|
||||||
#: web/templates/admin/payment/details.gohtml:142
|
#: web/templates/admin/payment/details.gohtml:53
|
||||||
#: web/templates/admin/campsite/index.gohtml:41
|
#: web/templates/admin/campsite/index.gohtml:41
|
||||||
#: web/templates/admin/campsite/type/index.gohtml:53
|
#: web/templates/admin/campsite/type/index.gohtml:53
|
||||||
#: web/templates/admin/season/index.gohtml:44
|
#: web/templates/admin/season/index.gohtml:44
|
||||||
|
@ -299,6 +152,153 @@ msgstr "Oui"
|
||||||
msgid "No"
|
msgid "No"
|
||||||
msgstr "Non"
|
msgstr "Non"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:19
|
||||||
|
#: web/templates/public/campsite/dates.gohtml:4
|
||||||
|
#: web/templates/public/booking/fields.gohtml:30
|
||||||
|
#: web/templates/admin/payment/details.gohtml:56
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Arrival date"
|
||||||
|
msgstr "Date d’arrivée"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:20
|
||||||
|
#: web/templates/public/campsite/dates.gohtml:15
|
||||||
|
#: web/templates/public/booking/fields.gohtml:41
|
||||||
|
#: web/templates/admin/payment/details.gohtml:60
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Departure date"
|
||||||
|
msgstr "Date de depart"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:21
|
||||||
|
#: web/templates/admin/payment/details.gohtml:64
|
||||||
|
msgctxt "cart"
|
||||||
|
msgid "Nights"
|
||||||
|
msgstr "Nuits"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:22
|
||||||
|
#: web/templates/public/booking/fields.gohtml:60
|
||||||
|
#: web/templates/admin/payment/details.gohtml:68
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Adults aged 17 or older"
|
||||||
|
msgstr "Adultes âgés 17 ans ou plus"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:23
|
||||||
|
#: web/templates/public/booking/fields.gohtml:71
|
||||||
|
#: web/templates/admin/payment/details.gohtml:72
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Teenagers from 11 to 16 years old"
|
||||||
|
msgstr "Adolescents de 11 à 16 ans"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:24
|
||||||
|
#: web/templates/public/booking/fields.gohtml:82
|
||||||
|
#: web/templates/admin/payment/details.gohtml:76
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Children from 2 to 10 years old"
|
||||||
|
msgstr "Enfants de 2 à 10 ans"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:25
|
||||||
|
#: web/templates/public/booking/fields.gohtml:100
|
||||||
|
#: web/templates/admin/payment/details.gohtml:80
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Dogs"
|
||||||
|
msgstr "Chiens"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:26
|
||||||
|
#: web/templates/admin/payment/details.gohtml:84 pkg/booking/cart.go:197
|
||||||
|
msgctxt "cart"
|
||||||
|
msgid "Tourist tax"
|
||||||
|
msgstr "Taxe touristique"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:27
|
||||||
|
#: web/templates/public/booking/fields.gohtml:225
|
||||||
|
msgctxt "cart"
|
||||||
|
msgid "Total"
|
||||||
|
msgstr "Totale"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:28
|
||||||
|
#: web/templates/public/booking/fields.gohtml:230
|
||||||
|
#: web/templates/admin/payment/details.gohtml:88
|
||||||
|
msgctxt "cart"
|
||||||
|
msgid "Down payment"
|
||||||
|
msgstr "Acompte"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:31
|
||||||
|
#: web/templates/admin/payment/details.gohtml:96
|
||||||
|
#: web/templates/admin/campsite/type/option/form.gohtml:18
|
||||||
|
#: web/templates/admin/campsite/type/option/index.gohtml:6
|
||||||
|
#: web/templates/admin/campsite/type/option/index.gohtml:17
|
||||||
|
msgctxt "title"
|
||||||
|
msgid "Campsite Type Options"
|
||||||
|
msgstr "Options de type d’emplacement de camping"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:39
|
||||||
|
#: web/templates/public/booking/fields.gohtml:146
|
||||||
|
#: web/templates/admin/payment/details.gohtml:110
|
||||||
|
msgctxt "title"
|
||||||
|
msgid "Customer Details"
|
||||||
|
msgstr "Détails du client"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:41
|
||||||
|
#: web/templates/public/booking/fields.gohtml:149
|
||||||
|
#: web/templates/admin/payment/details.gohtml:113
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Full name"
|
||||||
|
msgstr "Nom et prénom"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:42
|
||||||
|
#: web/templates/public/booking/fields.gohtml:158
|
||||||
|
#: web/templates/admin/payment/details.gohtml:117
|
||||||
|
#: web/templates/admin/taxDetails.gohtml:69
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Address"
|
||||||
|
msgstr "Adresse"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:43
|
||||||
|
#: web/templates/public/booking/fields.gohtml:167
|
||||||
|
#: web/templates/admin/payment/details.gohtml:121
|
||||||
|
#: web/templates/admin/taxDetails.gohtml:93
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Postcode"
|
||||||
|
msgstr "Code postal"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:44
|
||||||
|
#: web/templates/admin/payment/details.gohtml:125
|
||||||
|
#: web/templates/admin/taxDetails.gohtml:77
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "City"
|
||||||
|
msgstr "Ville"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:45
|
||||||
|
#: web/templates/public/booking/fields.gohtml:185
|
||||||
|
#: web/templates/admin/payment/details.gohtml:129
|
||||||
|
#: web/templates/admin/taxDetails.gohtml:101
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Country"
|
||||||
|
msgstr "Pays"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:46
|
||||||
|
#: web/templates/public/booking/fields.gohtml:196
|
||||||
|
#: web/templates/admin/payment/details.gohtml:133
|
||||||
|
#: web/templates/admin/login.gohtml:27 web/templates/admin/profile.gohtml:38
|
||||||
|
#: web/templates/admin/taxDetails.gohtml:53
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Email"
|
||||||
|
msgstr "E-mail"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:47
|
||||||
|
#: web/templates/public/booking/fields.gohtml:205
|
||||||
|
#: web/templates/admin/payment/details.gohtml:137
|
||||||
|
#: web/templates/admin/taxDetails.gohtml:45
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Phone"
|
||||||
|
msgstr "Téléphone"
|
||||||
|
|
||||||
|
#: web/templates/mail/payment/details.gotxt:48
|
||||||
|
#: web/templates/admin/payment/details.gohtml:141
|
||||||
|
#: web/templates/admin/profile.gohtml:68
|
||||||
|
msgctxt "input"
|
||||||
|
msgid "Language"
|
||||||
|
msgstr "Langue"
|
||||||
|
|
||||||
#: web/templates/mail/payment/details.gotxt:54
|
#: web/templates/mail/payment/details.gotxt:54
|
||||||
msgid "Best regards,"
|
msgid "Best regards,"
|
||||||
msgstr "Cordialement,"
|
msgstr "Cordialement,"
|
||||||
|
@ -490,7 +490,7 @@ msgid "Discover"
|
||||||
msgstr "Découvrir"
|
msgstr "Découvrir"
|
||||||
|
|
||||||
#: web/templates/public/campsite/type.gohtml:49
|
#: web/templates/public/campsite/type.gohtml:49
|
||||||
#: web/templates/public/booking/fields.gohtml:269
|
#: web/templates/public/booking/fields.gohtml:273
|
||||||
msgctxt "action"
|
msgctxt "action"
|
||||||
msgid "Book"
|
msgid "Book"
|
||||||
msgstr "Réserver"
|
msgstr "Réserver"
|
||||||
|
@ -917,25 +917,25 @@ msgstr "Ville"
|
||||||
msgid "Choose a country"
|
msgid "Choose a country"
|
||||||
msgstr "Choisissez un pays"
|
msgstr "Choisissez un pays"
|
||||||
|
|
||||||
#: web/templates/public/booking/fields.gohtml:216
|
#: web/templates/public/booking/fields.gohtml:242
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "ACSI card? (optional)"
|
msgid "ACSI card? (optional)"
|
||||||
msgstr "Carte ACSI ? (Facultatif)"
|
msgstr "Carte ACSI ? (Facultatif)"
|
||||||
|
|
||||||
#: web/templates/public/booking/fields.gohtml:224
|
#: web/templates/public/booking/fields.gohtml:250
|
||||||
msgctxt "input"
|
msgctxt "input"
|
||||||
msgid "I have read and I accept %[1]sthe reservation conditions%[2]s"
|
msgid "I have read and I accept %[1]sthe reservation conditions%[2]s"
|
||||||
msgstr "J’ai lu et j’accepte %[1]sles conditions de réservation%[2]s"
|
msgstr "J’ai lu et j’accepte %[1]sles conditions de réservation%[2]s"
|
||||||
|
|
||||||
#: web/templates/public/booking/fields.gohtml:261
|
#: web/templates/public/booking/fields.gohtml:258
|
||||||
msgid "By down paying the %d %% of the total, you are pre-booking your preferences. We will respond within 24 hours and this percentage will be charged if accepted."
|
msgid "By down paying the %d %% of the total, you are pre-booking your preferences. We will respond within 24 hours and this percentage will be charged if accepted."
|
||||||
msgstr "En En effectuant le paiement de %d %% du total vous pré-réservez vos préférences. Nous vous répondrons dans les 24 heures et ce pourcentage sera facturé en cas d’acceptation."
|
msgstr "En En effectuant le paiement de %d %% du total vous pré-réservez vos préférences. Nous vous répondrons dans les 24 heures et ce pourcentage sera facturé en cas d’acceptation."
|
||||||
|
|
||||||
#: web/templates/public/booking/fields.gohtml:263
|
#: web/templates/public/booking/fields.gohtml:260
|
||||||
msgid "By paying the total you are pre-booking your preferences. We will respond within 24 hours and this amount will be charged if accepted."
|
msgid "By paying the total you are pre-booking your preferences. We will respond within 24 hours and this amount will be charged if accepted."
|
||||||
msgstr "En procédant au paiement du montant total vous pré-réservez vos préférences. Nous vous répondrons dans les 24 heures et ce montant sera facturé en cas d’acceptation."
|
msgstr "En procédant au paiement du montant total vous pré-réservez vos préférences. Nous vous répondrons dans les 24 heures et ce montant sera facturé en cas d’acceptation."
|
||||||
|
|
||||||
#: web/templates/public/booking/fields.gohtml:267
|
#: web/templates/public/booking/fields.gohtml:264
|
||||||
msgid "See <%s>our conditions</%s> for more information."
|
msgid "See <%s>our conditions</%s> for more information."
|
||||||
msgstr "Consultez <%s>nos conditions</%s> pour plus d’informations."
|
msgstr "Consultez <%s>nos conditions</%s> pour plus d’informations."
|
||||||
|
|
||||||
|
@ -2270,7 +2270,7 @@ msgctxt "order product name"
|
||||||
msgid "Campsite Booking"
|
msgid "Campsite Booking"
|
||||||
msgstr "Réservation camping"
|
msgstr "Réservation camping"
|
||||||
|
|
||||||
#: pkg/payment/public.go:372
|
#: pkg/payment/public.go:369
|
||||||
msgctxt "subject"
|
msgctxt "subject"
|
||||||
msgid "Booking payment successfully received"
|
msgid "Booking payment successfully received"
|
||||||
msgstr "Paiement de réservation reçu avec succès"
|
msgstr "Paiement de réservation reçu avec succès"
|
||||||
|
@ -2314,12 +2314,12 @@ msgid "Slide image must be an image media type."
|
||||||
msgstr "L’image de la diapositive doit être de type média d’image."
|
msgstr "L’image de la diapositive doit être de type média d’image."
|
||||||
|
|
||||||
#: pkg/app/login.go:56 pkg/app/user.go:246 pkg/company/admin.go:224
|
#: pkg/app/login.go:56 pkg/app/user.go:246 pkg/company/admin.go:224
|
||||||
#: pkg/booking/public.go:536
|
#: pkg/booking/public.go:544
|
||||||
msgid "Email can not be empty."
|
msgid "Email can not be empty."
|
||||||
msgstr "L’e-mail ne peut pas être vide."
|
msgstr "L’e-mail ne peut pas être vide."
|
||||||
|
|
||||||
#: pkg/app/login.go:57 pkg/app/user.go:247 pkg/company/admin.go:225
|
#: pkg/app/login.go:57 pkg/app/user.go:247 pkg/company/admin.go:225
|
||||||
#: pkg/booking/public.go:537
|
#: pkg/booking/public.go:545
|
||||||
msgid "This email is not valid. It should be like name@domain.com."
|
msgid "This email is not valid. It should be like name@domain.com."
|
||||||
msgstr "Cette adresse e-mail n’est pas valide. Il devrait en être name@domain.com."
|
msgstr "Cette adresse e-mail n’est pas valide. Il devrait en être name@domain.com."
|
||||||
|
|
||||||
|
@ -2687,7 +2687,7 @@ msgstr "L’addresse du lien ne peut pas être vide."
|
||||||
msgid "This web address is not valid. It should be like https://domain.com/."
|
msgid "This web address is not valid. It should be like https://domain.com/."
|
||||||
msgstr "Cette adresse web n’est pas valide. Il devrait en être https://domain.com/."
|
msgstr "Cette adresse web n’est pas valide. Il devrait en être https://domain.com/."
|
||||||
|
|
||||||
#: pkg/company/admin.go:207 pkg/booking/public.go:521
|
#: pkg/company/admin.go:207 pkg/booking/public.go:529
|
||||||
msgid "Selected country is not valid."
|
msgid "Selected country is not valid."
|
||||||
msgstr "Le pays sélectionné n’est pas valide."
|
msgstr "Le pays sélectionné n’est pas valide."
|
||||||
|
|
||||||
|
@ -2707,15 +2707,15 @@ msgstr "Le numéro de TVA ne peut pas être vide."
|
||||||
msgid "This VAT number is not valid."
|
msgid "This VAT number is not valid."
|
||||||
msgstr "Ce numéro de TVA n’est pas valide."
|
msgstr "Ce numéro de TVA n’est pas valide."
|
||||||
|
|
||||||
#: pkg/company/admin.go:219 pkg/booking/public.go:539
|
#: pkg/company/admin.go:219 pkg/booking/public.go:547
|
||||||
msgid "Phone can not be empty."
|
msgid "Phone can not be empty."
|
||||||
msgstr "Le téléphone ne peut pas être vide."
|
msgstr "Le téléphone ne peut pas être vide."
|
||||||
|
|
||||||
#: pkg/company/admin.go:220 pkg/booking/public.go:540
|
#: pkg/company/admin.go:220 pkg/booking/public.go:548
|
||||||
msgid "This phone number is not valid."
|
msgid "This phone number is not valid."
|
||||||
msgstr "Ce numéro de téléphone n’est pas valide."
|
msgstr "Ce numéro de téléphone n’est pas valide."
|
||||||
|
|
||||||
#: pkg/company/admin.go:230 pkg/booking/public.go:529
|
#: pkg/company/admin.go:230 pkg/booking/public.go:537
|
||||||
msgid "Address can not be empty."
|
msgid "Address can not be empty."
|
||||||
msgstr "L’adresse ne peut pas être vide."
|
msgstr "L’adresse ne peut pas être vide."
|
||||||
|
|
||||||
|
@ -2727,11 +2727,11 @@ msgstr "La ville ne peut pas être vide."
|
||||||
msgid "Province can not be empty."
|
msgid "Province can not be empty."
|
||||||
msgstr "La province ne peut pas être vide."
|
msgstr "La province ne peut pas être vide."
|
||||||
|
|
||||||
#: pkg/company/admin.go:233 pkg/booking/public.go:531
|
#: pkg/company/admin.go:233 pkg/booking/public.go:539
|
||||||
msgid "Postcode can not be empty."
|
msgid "Postcode can not be empty."
|
||||||
msgstr "Le code postal ne peut pas être vide."
|
msgstr "Le code postal ne peut pas être vide."
|
||||||
|
|
||||||
#: pkg/company/admin.go:234 pkg/booking/public.go:532
|
#: pkg/company/admin.go:234 pkg/booking/public.go:540
|
||||||
msgid "This postcode is not valid."
|
msgid "This postcode is not valid."
|
||||||
msgstr "Ce code postal n’est pas valide."
|
msgstr "Ce code postal n’est pas valide."
|
||||||
|
|
||||||
|
@ -2783,27 +2783,27 @@ msgstr "Le fichier téléchargé ne peut pas être vide."
|
||||||
msgid "Filename can not be empty."
|
msgid "Filename can not be empty."
|
||||||
msgstr "Le nom de fichier ne peut pas être vide."
|
msgstr "Le nom de fichier ne peut pas être vide."
|
||||||
|
|
||||||
#: pkg/booking/cart.go:153
|
#: pkg/booking/cart.go:159
|
||||||
msgctxt "cart"
|
msgctxt "cart"
|
||||||
msgid "Night"
|
msgid "Night"
|
||||||
msgstr "Nuit"
|
msgstr "Nuit"
|
||||||
|
|
||||||
#: pkg/booking/cart.go:154
|
#: pkg/booking/cart.go:160
|
||||||
msgctxt "cart"
|
msgctxt "cart"
|
||||||
msgid "Adult"
|
msgid "Adult"
|
||||||
msgstr "Adulte"
|
msgstr "Adulte"
|
||||||
|
|
||||||
#: pkg/booking/cart.go:155
|
#: pkg/booking/cart.go:161
|
||||||
msgctxt "cart"
|
msgctxt "cart"
|
||||||
msgid "Teenager"
|
msgid "Teenager"
|
||||||
msgstr "Adolescent"
|
msgstr "Adolescent"
|
||||||
|
|
||||||
#: pkg/booking/cart.go:156
|
#: pkg/booking/cart.go:162
|
||||||
msgctxt "cart"
|
msgctxt "cart"
|
||||||
msgid "Child"
|
msgid "Child"
|
||||||
msgstr "Enfant"
|
msgstr "Enfant"
|
||||||
|
|
||||||
#: pkg/booking/cart.go:157
|
#: pkg/booking/cart.go:163
|
||||||
msgctxt "cart"
|
msgctxt "cart"
|
||||||
msgid "Dog"
|
msgid "Dog"
|
||||||
msgstr "Chien"
|
msgstr "Chien"
|
||||||
|
@ -2849,92 +2849,92 @@ msgstr "La date de départ doit être égale ou postérieure à %s."
|
||||||
msgid "Departure date must be %s or before."
|
msgid "Departure date must be %s or before."
|
||||||
msgstr "La date de départ doit être antérieure ou égale à %s."
|
msgstr "La date de départ doit être antérieure ou égale à %s."
|
||||||
|
|
||||||
#: pkg/booking/public.go:356
|
#: pkg/booking/public.go:368
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "There can be at most %d guests in this accommodation."
|
msgid "There can be at most %d guests in this accommodation."
|
||||||
msgstr "Il peut y avoir au plus %d invités dans cet hébergement."
|
msgstr "Il peut y avoir au plus %d invités dans cet hébergement."
|
||||||
|
|
||||||
#: pkg/booking/public.go:376
|
#: pkg/booking/public.go:388
|
||||||
msgid "Number of adults can not be empty"
|
msgid "Number of adults can not be empty"
|
||||||
msgstr "Le nombre d’adultes ne peut pas être vide."
|
msgstr "Le nombre d’adultes ne peut pas être vide."
|
||||||
|
|
||||||
#: pkg/booking/public.go:377
|
#: pkg/booking/public.go:389
|
||||||
msgid "Number of adults must be an integer."
|
msgid "Number of adults must be an integer."
|
||||||
msgstr "Le nombre d’adultes doit être un entier."
|
msgstr "Le nombre d’adultes doit être un entier."
|
||||||
|
|
||||||
#: pkg/booking/public.go:378
|
#: pkg/booking/public.go:390
|
||||||
msgid "There must be at least one adult."
|
msgid "There must be at least one adult."
|
||||||
msgstr "Il doit y avoir au moins un adulte."
|
msgstr "Il doit y avoir au moins un adulte."
|
||||||
|
|
||||||
#: pkg/booking/public.go:381
|
#: pkg/booking/public.go:393
|
||||||
msgid "Number of teenagers can not be empty"
|
msgid "Number of teenagers can not be empty"
|
||||||
msgstr "Le nombre d’adolescents ne peut pas être vide."
|
msgstr "Le nombre d’adolescents ne peut pas être vide."
|
||||||
|
|
||||||
#: pkg/booking/public.go:382
|
#: pkg/booking/public.go:394
|
||||||
msgid "Number of teenagers must be an integer."
|
msgid "Number of teenagers must be an integer."
|
||||||
msgstr "Le nombre d’adolescents doit être un entier."
|
msgstr "Le nombre d’adolescents doit être un entier."
|
||||||
|
|
||||||
#: pkg/booking/public.go:383
|
#: pkg/booking/public.go:395
|
||||||
msgid "Number of teenagers can not be negative."
|
msgid "Number of teenagers can not be negative."
|
||||||
msgstr "Le nombre d’adolescents ne peut pas être négatif."
|
msgstr "Le nombre d’adolescents ne peut pas être négatif."
|
||||||
|
|
||||||
#: pkg/booking/public.go:386
|
#: pkg/booking/public.go:398
|
||||||
msgid "Number of children can not be empty"
|
msgid "Number of children can not be empty"
|
||||||
msgstr "Le nombre d’enfants ne peut pas être vide."
|
msgstr "Le nombre d’enfants ne peut pas être vide."
|
||||||
|
|
||||||
#: pkg/booking/public.go:387
|
#: pkg/booking/public.go:399
|
||||||
msgid "Number of children must be an integer."
|
msgid "Number of children must be an integer."
|
||||||
msgstr "Le nombre d’enfants doit être un entier."
|
msgstr "Le nombre d’enfants doit être un entier."
|
||||||
|
|
||||||
#: pkg/booking/public.go:388
|
#: pkg/booking/public.go:400
|
||||||
msgid "Number of children can not be negative."
|
msgid "Number of children can not be negative."
|
||||||
msgstr "Le nombre d’enfants ne peut pas être négatif."
|
msgstr "Le nombre d’enfants ne peut pas être négatif."
|
||||||
|
|
||||||
#: pkg/booking/public.go:391
|
#: pkg/booking/public.go:403
|
||||||
msgid "Number of dogs can not be empty"
|
msgid "Number of dogs can not be empty"
|
||||||
msgstr "Le nombre de chiens ne peut pas être vide."
|
msgstr "Le nombre de chiens ne peut pas être vide."
|
||||||
|
|
||||||
#: pkg/booking/public.go:392
|
#: pkg/booking/public.go:404
|
||||||
msgid "Number of dogs must be an integer."
|
msgid "Number of dogs must be an integer."
|
||||||
msgstr "Le nombre de chiens nuits être un entier."
|
msgstr "Le nombre de chiens nuits être un entier."
|
||||||
|
|
||||||
#: pkg/booking/public.go:393
|
#: pkg/booking/public.go:405
|
||||||
msgid "Number of dogs can not be negative."
|
msgid "Number of dogs can not be negative."
|
||||||
msgstr "Le nombre de chiens ne peut pas être négatif."
|
msgstr "Le nombre de chiens ne peut pas être négatif."
|
||||||
|
|
||||||
#: pkg/booking/public.go:464
|
#: pkg/booking/public.go:476
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s can not be empty"
|
msgid "%s can not be empty"
|
||||||
msgstr "%s ne peut pas être vide"
|
msgstr "%s ne peut pas être vide"
|
||||||
|
|
||||||
#: pkg/booking/public.go:465
|
#: pkg/booking/public.go:477
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s must be an integer."
|
msgid "%s must be an integer."
|
||||||
msgstr "%s doit être un entier."
|
msgstr "%s doit être un entier."
|
||||||
|
|
||||||
#: pkg/booking/public.go:466
|
#: pkg/booking/public.go:478
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s must be %d or greater."
|
msgid "%s must be %d or greater."
|
||||||
msgstr "%s doit être %d ou plus."
|
msgstr "%s doit être %d ou plus."
|
||||||
|
|
||||||
#: pkg/booking/public.go:467
|
#: pkg/booking/public.go:479
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%s must be at most %d."
|
msgid "%s must be at most %d."
|
||||||
msgstr "%s doit être tout au plus %d."
|
msgstr "%s doit être tout au plus %d."
|
||||||
|
|
||||||
#: pkg/booking/public.go:525
|
#: pkg/booking/public.go:533
|
||||||
msgid "Full name can not be empty."
|
msgid "Full name can not be empty."
|
||||||
msgstr "Le nom complet ne peut pas être vide."
|
msgstr "Le nom complet ne peut pas être vide."
|
||||||
|
|
||||||
#: pkg/booking/public.go:526
|
#: pkg/booking/public.go:534
|
||||||
msgid "Full name must have at least one letter."
|
msgid "Full name must have at least one letter."
|
||||||
msgstr "Le nom complet doit comporter au moins une lettre."
|
msgstr "Le nom complet doit comporter au moins une lettre."
|
||||||
|
|
||||||
#: pkg/booking/public.go:530
|
#: pkg/booking/public.go:538
|
||||||
msgid "Town or village can not be empty."
|
msgid "Town or village can not be empty."
|
||||||
msgstr "La ville ne peut pas être vide."
|
msgstr "La ville ne peut pas être vide."
|
||||||
|
|
||||||
#: pkg/booking/public.go:545
|
#: pkg/booking/public.go:553
|
||||||
msgid "It is mandatory to agree to the reservation conditions."
|
msgid "It is mandatory to agree to the reservation conditions."
|
||||||
msgstr "Il est obligatoire d’accepter les conditions de réservation."
|
msgstr "Il est obligatoire d’accepter les conditions de réservation."
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
-- Revert camper:acsi from pg
|
||||||
|
|
||||||
|
begin;
|
||||||
|
|
||||||
|
drop table if exists camper.acsi;
|
||||||
|
|
||||||
|
commit;
|
|
@ -0,0 +1,7 @@
|
||||||
|
-- Revert camper:acsi_calendar from pg
|
||||||
|
|
||||||
|
begin;
|
||||||
|
|
||||||
|
drop table if exists camper.acsi_calendar;
|
||||||
|
|
||||||
|
commit;
|
|
@ -0,0 +1,7 @@
|
||||||
|
-- Revert camper:acsi_option from pg
|
||||||
|
|
||||||
|
begin;
|
||||||
|
|
||||||
|
drop table if exists camper.acsi_option;
|
||||||
|
|
||||||
|
commit;
|
|
@ -10,11 +10,14 @@
|
||||||
-- requires: campsite_type_option
|
-- requires: campsite_type_option
|
||||||
-- requires: payment
|
-- requires: payment
|
||||||
-- requires: payment_option
|
-- requires: payment_option
|
||||||
|
-- requires: company__tourist_tax_max_days
|
||||||
|
|
||||||
begin;
|
begin;
|
||||||
|
|
||||||
set search_path to camper, public;
|
set search_path to camper, public;
|
||||||
|
|
||||||
|
drop function if exists draft_payment(uuid, date, date, uuid, integer, integer, integer, integer, text, boolean, option_units[]);
|
||||||
|
|
||||||
create or replace function draft_payment(payment_slug uuid, arrival_date date, departure_date date, campsite_type_slug uuid, num_adults integer, num_teenagers integer, num_children integer, num_dogs integer, zone_preferences text, options option_units[]) returns payment as
|
create or replace function draft_payment(payment_slug uuid, arrival_date date, departure_date date, campsite_type_slug uuid, num_adults integer, num_teenagers integer, num_children integer, num_dogs integer, zone_preferences text, options option_units[]) returns payment as
|
||||||
$$
|
$$
|
||||||
declare
|
declare
|
||||||
|
@ -58,12 +61,12 @@ begin
|
||||||
, sum(cost_per_child * num_children)::integer
|
, sum(cost_per_child * num_children)::integer
|
||||||
, num_dogs
|
, num_dogs
|
||||||
, sum(case when num_dogs > 0 then coalesce(pet.cost_per_night, 0) else 0 end)::integer
|
, sum(case when num_dogs > 0 then coalesce(pet.cost_per_night, 0) else 0 end)::integer
|
||||||
, sum(tourist_tax * num_adults)::integer
|
, sum(case when day_num <= tourist_tax_max_days then tourist_tax * num_adults else 0 end)::integer
|
||||||
, 0
|
, 0
|
||||||
, currency_code
|
, currency_code
|
||||||
, case when arrival_date - current_date >= 7 then 0.3 else 1.0 end
|
, case when arrival_date - current_date >= 7 then 0.3 else 1.0 end
|
||||||
, coalesce(zone_preferences, '')
|
, coalesce(zone_preferences, '')
|
||||||
from generate_series(arrival_date, departure_date - 1, interval '1 day') as date(day)
|
from generate_series(arrival_date, departure_date - 1, interval '1 day') with ordinality as date(day, day_num)
|
||||||
left join season_calendar on season_range @> date.day::date
|
left join season_calendar on season_range @> date.day::date
|
||||||
left join season using (season_id)
|
left join season using (season_id)
|
||||||
left join campsite_type using (company_id)
|
left join campsite_type using (company_id)
|
||||||
|
|
|
@ -0,0 +1,168 @@
|
||||||
|
-- Deploy camper:draft_payment to pg
|
||||||
|
-- requires: roles
|
||||||
|
-- requires: schema_camper
|
||||||
|
-- requires: season_calendar
|
||||||
|
-- requires: season
|
||||||
|
-- requires: campsite_type
|
||||||
|
-- requires: campsite_type_pet_cost
|
||||||
|
-- requires: campsite_type_cost
|
||||||
|
-- requires: campsite_type_option_cost
|
||||||
|
-- requires: campsite_type_option
|
||||||
|
-- requires: payment
|
||||||
|
-- requires: payment_option
|
||||||
|
|
||||||
|
begin;
|
||||||
|
|
||||||
|
set search_path to camper, public;
|
||||||
|
|
||||||
|
create or replace function draft_payment(payment_slug uuid, arrival_date date, departure_date date, campsite_type_slug uuid, num_adults integer, num_teenagers integer, num_children integer, num_dogs integer, zone_preferences text, options option_units[]) returns payment as
|
||||||
|
$$
|
||||||
|
declare
|
||||||
|
p payment;
|
||||||
|
begin
|
||||||
|
if exists(select 1 from payment where slug = payment_slug and payment_status <> 'draft') then
|
||||||
|
payment_slug = null;
|
||||||
|
end if;
|
||||||
|
insert into payment (
|
||||||
|
slug
|
||||||
|
, 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
|
||||||
|
, down_payment_percent
|
||||||
|
, zone_preferences
|
||||||
|
)
|
||||||
|
select coalesce(payment_slug, gen_random_uuid())
|
||||||
|
, company_id
|
||||||
|
, campsite_type_id
|
||||||
|
, arrival_date
|
||||||
|
, departure_date
|
||||||
|
, sum(cost.cost_per_night * ceiling((num_adults::numeric + num_teenagers::numeric + num_children::numeric) / max_campers::numeric)::integer)::integer
|
||||||
|
, num_adults
|
||||||
|
, sum(cost_per_adult * num_adults)::integer
|
||||||
|
, num_teenagers
|
||||||
|
, sum(cost_per_teenager * num_teenagers)::integer
|
||||||
|
, num_children
|
||||||
|
, sum(cost_per_child * num_children)::integer
|
||||||
|
, num_dogs
|
||||||
|
, sum(case when num_dogs > 0 then coalesce(pet.cost_per_night, 0) else 0 end)::integer
|
||||||
|
, sum(tourist_tax * num_adults)::integer
|
||||||
|
, 0
|
||||||
|
, currency_code
|
||||||
|
, case when arrival_date - current_date >= 7 then 0.3 else 1.0 end
|
||||||
|
, coalesce(zone_preferences, '')
|
||||||
|
from generate_series(arrival_date, departure_date - 1, interval '1 day') as date(day)
|
||||||
|
left join season_calendar on season_range @> date.day::date
|
||||||
|
left join season using (season_id)
|
||||||
|
left join campsite_type using (company_id)
|
||||||
|
left join campsite_type_pet_cost as pet using (campsite_type_id)
|
||||||
|
left join campsite_type_cost as cost using (campsite_type_id, season_id)
|
||||||
|
left join company using (company_id)
|
||||||
|
where campsite_type.slug = campsite_type_slug
|
||||||
|
group by company_id
|
||||||
|
, campsite_type_id
|
||||||
|
, currency_code
|
||||||
|
on conflict (slug) do update
|
||||||
|
set company_id = excluded.company_id
|
||||||
|
, campsite_type_id = excluded.campsite_type_id
|
||||||
|
, arrival_date = excluded.arrival_date
|
||||||
|
, departure_date = excluded.departure_date
|
||||||
|
, subtotal_nights = excluded.subtotal_nights
|
||||||
|
, number_adults = excluded.number_adults
|
||||||
|
, subtotal_adults = excluded.subtotal_adults
|
||||||
|
, number_teenagers = excluded.number_teenagers
|
||||||
|
, subtotal_teenagers = excluded.subtotal_teenagers
|
||||||
|
, number_children = excluded.number_children
|
||||||
|
, subtotal_children = excluded.subtotal_children
|
||||||
|
, number_dogs = excluded.number_dogs
|
||||||
|
, subtotal_dogs = excluded.subtotal_dogs
|
||||||
|
, subtotal_tourist_tax = excluded.subtotal_tourist_tax
|
||||||
|
, total = excluded.total
|
||||||
|
, currency_code = excluded.currency_code
|
||||||
|
, down_payment_percent = excluded.down_payment_percent
|
||||||
|
, zone_preferences = excluded.zone_preferences
|
||||||
|
, updated_at = current_timestamp
|
||||||
|
returning *
|
||||||
|
into p
|
||||||
|
;
|
||||||
|
|
||||||
|
if array_length(coalesce(options, array[]::option_units[]), 1) > 0 then
|
||||||
|
delete
|
||||||
|
from payment_option
|
||||||
|
where payment_id = p.payment_id
|
||||||
|
and campsite_type_option_id not in (
|
||||||
|
select campsite_type_option_id
|
||||||
|
from unnest(options) as option(campsite_type_option_id, units)
|
||||||
|
);
|
||||||
|
|
||||||
|
insert into payment_option (
|
||||||
|
payment_id
|
||||||
|
, campsite_type_option_id
|
||||||
|
, units
|
||||||
|
, subtotal
|
||||||
|
)
|
||||||
|
select p.payment_id
|
||||||
|
, campsite_type_option_id
|
||||||
|
, units
|
||||||
|
, case when per_night then sum(cost * units)::integer else max(cost * units)::integer end
|
||||||
|
from generate_series(arrival_date, departure_date - 1, interval '1 day') as date(day)
|
||||||
|
join season_calendar on season_range @> date.day::date
|
||||||
|
join campsite_type_option_cost using (season_id)
|
||||||
|
join campsite_type_option using (campsite_type_option_id)
|
||||||
|
join unnest(options) as option(campsite_type_option_id, units) using (campsite_type_option_id)
|
||||||
|
group by campsite_type_option_id
|
||||||
|
, units
|
||||||
|
, per_night
|
||||||
|
on conflict (payment_id, campsite_type_option_id) do update
|
||||||
|
set units = excluded.units
|
||||||
|
, subtotal = excluded.subtotal
|
||||||
|
;
|
||||||
|
|
||||||
|
with option as (
|
||||||
|
select sum(subtotal)::integer as subtotal
|
||||||
|
from payment_option
|
||||||
|
where payment_id = p.payment_id
|
||||||
|
)
|
||||||
|
update payment
|
||||||
|
set total = subtotal_nights + subtotal_adults + subtotal_teenagers + subtotal_children + subtotal_dogs + subtotal_tourist_tax + coalesce(option.subtotal, 0)
|
||||||
|
from option
|
||||||
|
where payment_id = p.payment_id
|
||||||
|
returning total into p.total
|
||||||
|
;
|
||||||
|
else
|
||||||
|
delete
|
||||||
|
from payment_option
|
||||||
|
where payment_id = p.payment_id;
|
||||||
|
|
||||||
|
update payment
|
||||||
|
set total = subtotal_nights + subtotal_adults + subtotal_teenagers + subtotal_children + subtotal_dogs + subtotal_tourist_tax
|
||||||
|
where payment_id = p.payment_id
|
||||||
|
returning total into p.total
|
||||||
|
;
|
||||||
|
end if;
|
||||||
|
|
||||||
|
|
||||||
|
return p;
|
||||||
|
end;
|
||||||
|
$$
|
||||||
|
language plpgsql
|
||||||
|
;
|
||||||
|
|
||||||
|
revoke execute on function draft_payment(uuid, date, date, uuid, integer, integer, integer, integer, text, option_units[]) from public;
|
||||||
|
grant execute on function draft_payment(uuid, date, date, uuid, integer, integer, integer, integer, text, option_units[]) to guest;
|
||||||
|
grant execute on function draft_payment(uuid, date, date, uuid, integer, integer, integer, integer, text, option_units[]) to employee;
|
||||||
|
grant execute on function draft_payment(uuid, date, date, uuid, integer, integer, integer, integer, text, option_units[]) to admin;
|
||||||
|
|
||||||
|
commit;
|
|
@ -0,0 +1,9 @@
|
||||||
|
-- Revert camper:payment__acsi_card from pg
|
||||||
|
|
||||||
|
begin;
|
||||||
|
|
||||||
|
alter table camper.payment
|
||||||
|
drop column if exists acsi_card
|
||||||
|
;
|
||||||
|
|
||||||
|
commit;
|
|
@ -0,0 +1,21 @@
|
||||||
|
-- Revert camper:payment_customer__-acsi_card from pg
|
||||||
|
|
||||||
|
begin;
|
||||||
|
|
||||||
|
set search_path to camper, public;
|
||||||
|
|
||||||
|
alter table payment_customer
|
||||||
|
add column if not exists acsi_card boolean not null default false
|
||||||
|
;
|
||||||
|
|
||||||
|
update payment_customer
|
||||||
|
set acsi_card = payment.acsi_card
|
||||||
|
from payment
|
||||||
|
where payment.payment_id = payment_customer.payment_id
|
||||||
|
;
|
||||||
|
|
||||||
|
alter table payment_customer
|
||||||
|
alter column acsi_card drop default
|
||||||
|
;
|
||||||
|
|
||||||
|
commit;
|
|
@ -1,7 +1,58 @@
|
||||||
-- Revert camper:ready_payment from pg
|
-- Deploy camper:ready_payment to pg
|
||||||
|
-- requires: roles
|
||||||
|
-- requires: schema_camper
|
||||||
|
-- requires: payment
|
||||||
|
-- requires: payment_customer
|
||||||
|
-- requires: country_code
|
||||||
|
-- requires: email
|
||||||
|
-- requires: extension_pg_libphonenumber
|
||||||
|
|
||||||
begin;
|
begin;
|
||||||
|
|
||||||
drop function if exists camper.ready_payment(uuid, text, text, text, text, camper.country_code, camper.email, text, text, boolean);
|
set search_path to camper, public;
|
||||||
|
|
||||||
|
drop function if exists ready_payment(uuid, text, text, text, text, country_code, email, text, text);
|
||||||
|
|
||||||
|
create or replace function ready_payment(payment_slug uuid, customer_name text, customer_address text, customer_post_code text, customer_city text, customer_country_code country_code, customer_email email, customer_phone text, customer_lang_tag text, customer_acsi_card boolean) returns integer as
|
||||||
|
$$
|
||||||
|
declare
|
||||||
|
pid integer;
|
||||||
|
begin
|
||||||
|
update payment
|
||||||
|
set payment_status = 'pending'
|
||||||
|
, updated_at = current_timestamp
|
||||||
|
where slug = payment_slug
|
||||||
|
and payment_status = 'draft'
|
||||||
|
returning payment_id into pid
|
||||||
|
;
|
||||||
|
|
||||||
|
if pid is null then
|
||||||
|
raise check_violation using message = 'insert or update on table "payment" violates check constraint "payment_is_draft"';
|
||||||
|
end if;
|
||||||
|
|
||||||
|
insert into payment_customer (payment_id, full_name, address, postal_code, city, country_code, email, phone, acsi_card, lang_tag)
|
||||||
|
values (pid, customer_name, customer_address, customer_post_code, customer_city, customer_country_code, customer_email, parse_packed_phone_number(customer_phone, customer_country_code), customer_acsi_card, customer_lang_tag)
|
||||||
|
on conflict (payment_id) do update
|
||||||
|
set full_name = excluded.full_name
|
||||||
|
, address = excluded.address
|
||||||
|
, postal_code = excluded.postal_code
|
||||||
|
, city = excluded.city
|
||||||
|
, country_code = excluded.country_code
|
||||||
|
, email = excluded.email
|
||||||
|
, phone = excluded.phone
|
||||||
|
, acsi_card = excluded.acsi_card
|
||||||
|
, lang_tag = excluded.lang_tag
|
||||||
|
;
|
||||||
|
|
||||||
|
return pid;
|
||||||
|
end;
|
||||||
|
$$
|
||||||
|
language plpgsql
|
||||||
|
;
|
||||||
|
|
||||||
|
revoke execute on function ready_payment(uuid, text, text, text, text, country_code, email, text, text, boolean) from public;
|
||||||
|
grant execute on function ready_payment(uuid, text, text, text, text, country_code, email, text, text, boolean) to guest;
|
||||||
|
grant execute on function ready_payment(uuid, text, text, text, text, country_code, email, text, text, boolean) to employee;
|
||||||
|
grant execute on function ready_payment(uuid, text, text, text, text, country_code, email, text, text, boolean) to admin;
|
||||||
|
|
||||||
commit;
|
commit;
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
-- Revert camper:ready_payment from pg
|
||||||
|
|
||||||
|
begin;
|
||||||
|
|
||||||
|
drop function if exists camper.ready_payment(uuid, text, text, text, text, camper.country_code, camper.email, text, text, boolean);
|
||||||
|
|
||||||
|
commit;
|
|
@ -267,3 +267,10 @@ flush_payments [roles schema_camper payment payment_option payment_redsys_respon
|
||||||
@v5 2024-03-13T19:55:03Z jordi fita mas <jordi@tandem.blog> # Tag v5
|
@v5 2024-03-13T19:55:03Z jordi fita mas <jordi@tandem.blog> # Tag v5
|
||||||
|
|
||||||
season_calendar_season_id_fkey [season season_calendar] 2024-03-14T17:04:30Z jordi fita mas <jordi@tandem.blog> # Add foreign constraint between season_calendar and season
|
season_calendar_season_id_fkey [season season_calendar] 2024-03-14T17:04:30Z jordi fita mas <jordi@tandem.blog> # Add foreign constraint between season_calendar and season
|
||||||
|
acsi [roles schema_camper campsite_type] 2024-03-14T16:54:11Z jordi fita mas <jordi@tandem.blog> # Add relation of ACSI options
|
||||||
|
acsi_calendar [roles schema_camper acsi] 2024-03-14T16:59:43Z jordi fita mas <jordi@tandem.blog> # Add relation of dates for ACSI
|
||||||
|
acsi_option [roles schema_camper acsi campsite_type_option] 2024-03-14T17:56:59Z jordi fita mas <jordi@tandem.blog> # Add relation of acsi options
|
||||||
|
payment__acsi_card [payment] 2024-03-14T18:24:44Z jordi fita mas <jordi@tandem.blog> # Add acsi_card to payment
|
||||||
|
ready_payment [ready_payment@v5 payment__acsi_card] 2024-03-14T18:31:26Z jordi fita mas <jordi@tandem.blog> # Remove the acsi_card parameter from ready_payment
|
||||||
|
payment_customer__-acsi_card [payment__acsi_card] 2024-03-14T18:43:31Z jordi fita mas <jordi@tandem.blog> # Remove the acsi_card field from payment_customer
|
||||||
|
draft_payment [draft_payment@v5 acsi acsi_calendar acsi_option payment__acsi_card payment_customer__-acsi_card] 2024-03-14T18:05:25Z jordi fita mas <jordi@tandem.blog> # Include ACSI in payment drafting computation
|
||||||
|
|
|
@ -0,0 +1,57 @@
|
||||||
|
-- Test acsi
|
||||||
|
set client_min_messages to warning;
|
||||||
|
create extension if not exists pgtap;
|
||||||
|
reset client_min_messages;
|
||||||
|
|
||||||
|
begin;
|
||||||
|
|
||||||
|
select plan(33);
|
||||||
|
|
||||||
|
set search_path to camper, public;
|
||||||
|
|
||||||
|
select has_table('acsi');
|
||||||
|
select has_pk('acsi');
|
||||||
|
select table_privs_are('acsi', 'guest', array['SELECT']);
|
||||||
|
select table_privs_are('acsi', 'employee', array['SELECT']);
|
||||||
|
select table_privs_are('acsi', 'admin', array['SELECT', 'INSERT', 'UPDATE', 'DELETE']);
|
||||||
|
select table_privs_are('acsi', 'authenticator', array[]::text[]);
|
||||||
|
|
||||||
|
select has_column('acsi', 'campsite_type_id');
|
||||||
|
select col_is_pk('acsi', 'campsite_type_id');
|
||||||
|
select col_is_fk('acsi', 'campsite_type_id');
|
||||||
|
select fk_ok('acsi', 'campsite_type_id', 'campsite_type', 'campsite_type_id');
|
||||||
|
select col_type_is('acsi', 'campsite_type_id', 'integer');
|
||||||
|
select col_not_null('acsi', 'campsite_type_id');
|
||||||
|
select col_hasnt_default('acsi', 'campsite_type_id');
|
||||||
|
|
||||||
|
select has_column('acsi', 'number_adults');
|
||||||
|
select col_type_is('acsi', 'number_adults', 'positive_integer');
|
||||||
|
select col_not_null('acsi', 'number_adults');
|
||||||
|
select col_hasnt_default('acsi', 'number_adults');
|
||||||
|
|
||||||
|
select has_column('acsi', 'number_teenagers');
|
||||||
|
select col_type_is('acsi', 'number_teenagers', 'nonnegative_integer');
|
||||||
|
select col_not_null('acsi', 'number_teenagers');
|
||||||
|
select col_hasnt_default('acsi', 'number_teenagers');
|
||||||
|
|
||||||
|
select has_column('acsi', 'number_children');
|
||||||
|
select col_type_is('acsi', 'number_children', 'nonnegative_integer');
|
||||||
|
select col_not_null('acsi', 'number_children');
|
||||||
|
select col_hasnt_default('acsi', 'number_children');
|
||||||
|
|
||||||
|
select has_column('acsi', 'number_dogs');
|
||||||
|
select col_type_is('acsi', 'number_dogs', 'nonnegative_integer');
|
||||||
|
select col_not_null('acsi', 'number_dogs');
|
||||||
|
select col_hasnt_default('acsi', 'number_dogs');
|
||||||
|
|
||||||
|
select has_column('acsi', 'cost_per_night');
|
||||||
|
select col_type_is('acsi', 'cost_per_night', 'nonnegative_integer');
|
||||||
|
select col_not_null('acsi', 'cost_per_night');
|
||||||
|
select col_hasnt_default('acsi', 'cost_per_night');
|
||||||
|
|
||||||
|
|
||||||
|
select *
|
||||||
|
from finish();
|
||||||
|
|
||||||
|
rollback;
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
-- Test acsi_calendar
|
||||||
|
set client_min_messages to warning;
|
||||||
|
create extension if not exists pgtap;
|
||||||
|
reset client_min_messages;
|
||||||
|
|
||||||
|
begin;
|
||||||
|
|
||||||
|
select plan(17);
|
||||||
|
|
||||||
|
set search_path to camper, public;
|
||||||
|
|
||||||
|
select has_table('acsi_calendar');
|
||||||
|
select has_pk('acsi_calendar');
|
||||||
|
select col_is_pk('acsi_calendar', array['campsite_type_id', 'acsi_range']);
|
||||||
|
select table_privs_are('acsi_calendar', 'guest', array['SELECT']);
|
||||||
|
select table_privs_are('acsi_calendar', 'employee', array['SELECT']);
|
||||||
|
select table_privs_are('acsi_calendar', 'admin', array['SELECT', 'INSERT', 'UPDATE', 'DELETE']);
|
||||||
|
select table_privs_are('acsi_calendar', 'authenticator', array[]::text[]);
|
||||||
|
|
||||||
|
select has_column('acsi_calendar', 'campsite_type_id');
|
||||||
|
select col_is_fk('acsi_calendar', 'campsite_type_id');
|
||||||
|
select fk_ok('acsi_calendar', 'campsite_type_id', 'acsi', 'campsite_type_id');
|
||||||
|
select col_type_is('acsi_calendar', 'campsite_type_id', 'integer');
|
||||||
|
select col_not_null('acsi_calendar', 'campsite_type_id');
|
||||||
|
select col_hasnt_default('acsi_calendar', 'campsite_type_id');
|
||||||
|
|
||||||
|
select has_column('acsi_calendar', 'acsi_range');
|
||||||
|
select col_type_is('acsi_calendar', 'acsi_range', 'daterange');
|
||||||
|
select col_not_null('acsi_calendar', 'acsi_range');
|
||||||
|
select col_hasnt_default('acsi_calendar', 'acsi_range');
|
||||||
|
|
||||||
|
|
||||||
|
select *
|
||||||
|
from finish();
|
||||||
|
|
||||||
|
rollback;
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
-- Test acsi_option
|
||||||
|
set client_min_messages to warning;
|
||||||
|
create extension if not exists pgtap;
|
||||||
|
reset client_min_messages;
|
||||||
|
|
||||||
|
begin;
|
||||||
|
|
||||||
|
select plan(23);
|
||||||
|
|
||||||
|
set search_path to camper, public;
|
||||||
|
|
||||||
|
select has_table('acsi_option');
|
||||||
|
select has_pk('acsi_option');
|
||||||
|
select col_is_pk('acsi_option', array['campsite_type_id', 'campsite_type_option_id']);
|
||||||
|
select table_privs_are('acsi_option', 'guest', array['SELECT']);
|
||||||
|
select table_privs_are('acsi_option', 'employee', array['SELECT']);
|
||||||
|
select table_privs_are('acsi_option', 'admin', array['SELECT', 'INSERT', 'UPDATE', 'DELETE']);
|
||||||
|
select table_privs_are('acsi_option', 'authenticator', array[]::text[]);
|
||||||
|
|
||||||
|
select has_column('acsi_option', 'campsite_type_id');
|
||||||
|
select col_is_fk('acsi_option', 'campsite_type_id');
|
||||||
|
select fk_ok('acsi_option', 'campsite_type_id', 'acsi', 'campsite_type_id');
|
||||||
|
select col_type_is('acsi_option', 'campsite_type_id', 'integer');
|
||||||
|
select col_not_null('acsi_option', 'campsite_type_id');
|
||||||
|
select col_hasnt_default('acsi_option', 'campsite_type_id');
|
||||||
|
|
||||||
|
select has_column('acsi_option', 'campsite_type_option_id');
|
||||||
|
select col_is_fk('acsi_option', 'campsite_type_option_id');
|
||||||
|
select fk_ok('acsi_option', 'campsite_type_option_id', 'campsite_type_option', 'campsite_type_option_id');
|
||||||
|
select col_type_is('acsi_option', 'campsite_type_option_id', 'integer');
|
||||||
|
select col_not_null('acsi_option', 'campsite_type_option_id');
|
||||||
|
select col_hasnt_default('acsi_option', 'campsite_type_option_id');
|
||||||
|
|
||||||
|
select has_column('acsi_option', 'units');
|
||||||
|
select col_type_is('acsi_option', 'units', 'positive_integer');
|
||||||
|
select col_not_null('acsi_option', 'units');
|
||||||
|
select col_hasnt_default('acsi_option', 'units');
|
||||||
|
|
||||||
|
|
||||||
|
select *
|
||||||
|
from finish();
|
||||||
|
|
||||||
|
rollback;
|
||||||
|
|
|
@ -46,14 +46,14 @@ insert into campsite_type (campsite_type_id, slug, company_id, name, media_id, m
|
||||||
values (12, 'c1b6f4fc-32c1-4cd5-b796-0c5059152a52', 2, 'Plots', 10, 6, '[1, 7]', true)
|
values (12, 'c1b6f4fc-32c1-4cd5-b796-0c5059152a52', 2, 'Plots', 10, 6, '[1, 7]', true)
|
||||||
;
|
;
|
||||||
|
|
||||||
insert into payment (payment_id, 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, down_payment_percent, zone_preferences)
|
insert into payment (payment_id, 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, down_payment_percent, zone_preferences, acsi_card)
|
||||||
values (22, 2, 12, '2024-08-28', '2024-09-03', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'EUR', 1.0, '')
|
values (22, 2, 12, '2024-08-28', '2024-09-03', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'EUR', 1.0, '', false)
|
||||||
, (23, 2, 12, '2024-08-28', '2024-09-03', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'EUR', 0.5, '')
|
, (23, 2, 12, '2024-08-28', '2024-09-03', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'EUR', 0.5, '', false)
|
||||||
, (24, 2, 12, '2024-08-28', '2024-09-03', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2500, 'EUR', 0.75, '')
|
, (24, 2, 12, '2024-08-28', '2024-09-03', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 2500, 'EUR', 0.75, '', false)
|
||||||
, (25, 2, 12, '2024-08-28', '2024-09-03', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1234, 'EUR', 0.99, '')
|
, (25, 2, 12, '2024-08-28', '2024-09-03', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1234, 'EUR', 0.99, '', false)
|
||||||
, (26, 2, 12, '2024-08-28', '2024-09-03', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 'EUR', 0.5, '')
|
, (26, 2, 12, '2024-08-28', '2024-09-03', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 'EUR', 0.5, '', false)
|
||||||
, (27, 2, 12, '2024-08-28', '2024-09-03', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 987654, 'EUR', 0.33, '')
|
, (27, 2, 12, '2024-08-28', '2024-09-03', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 987654, 'EUR', 0.33, '', false)
|
||||||
, (28, 2, 12, '2024-08-28', '2024-09-03', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 987654, 'EUR', 0.19, '')
|
, (28, 2, 12, '2024-08-28', '2024-09-03', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 987654, 'EUR', 0.19, '', false)
|
||||||
;
|
;
|
||||||
|
|
||||||
select bag_eq(
|
select bag_eq(
|
||||||
|
|
|
@ -5,22 +5,25 @@ reset client_min_messages;
|
||||||
|
|
||||||
begin;
|
begin;
|
||||||
|
|
||||||
select plan(16);
|
select plan(17);
|
||||||
|
|
||||||
set search_path to camper, public;
|
set search_path to camper, public;
|
||||||
|
|
||||||
select has_function('camper', 'draft_payment', array['uuid', 'date', 'date', 'uuid', 'integer', 'integer', 'integer', 'integer', 'text', 'option_units[]']);
|
select has_function('camper', 'draft_payment', array['uuid', 'date', 'date', 'uuid', 'integer', 'integer', 'integer', 'integer', 'text', 'boolean', 'option_units[]']);
|
||||||
select function_lang_is('camper', 'draft_payment', array['uuid', 'date', 'date', 'uuid', 'integer', 'integer', 'integer', 'integer', 'text', 'option_units[]'], 'plpgsql');
|
select function_lang_is('camper', 'draft_payment', array['uuid', 'date', 'date', 'uuid', 'integer', 'integer', 'integer', 'integer', 'text', 'boolean', 'option_units[]'], 'plpgsql');
|
||||||
select function_returns('camper', 'draft_payment', array['uuid', 'date', 'date', 'uuid', 'integer', 'integer', 'integer', 'integer', 'text', 'option_units[]'], 'payment');
|
select function_returns('camper', 'draft_payment', array['uuid', 'date', 'date', 'uuid', 'integer', 'integer', 'integer', 'integer', 'text', 'boolean', 'option_units[]'], 'payment');
|
||||||
select isnt_definer('camper', 'draft_payment', array['uuid', 'date', 'date', 'uuid', 'integer', 'integer', 'integer', 'integer', 'text', 'option_units[]']);
|
select isnt_definer('camper', 'draft_payment', array['uuid', 'date', 'date', 'uuid', 'integer', 'integer', 'integer', 'integer', 'text', 'boolean', 'option_units[]']);
|
||||||
select volatility_is('camper', 'draft_payment', array['uuid', 'date', 'date', 'uuid', 'integer', 'integer', 'integer', 'integer', 'text', 'option_units[]'], 'volatile');
|
select volatility_is('camper', 'draft_payment', array['uuid', 'date', 'date', 'uuid', 'integer', 'integer', 'integer', 'integer', 'text', 'boolean', 'option_units[]'], 'volatile');
|
||||||
select function_privs_are('camper', 'draft_payment', array ['uuid', 'date', 'date', 'uuid', 'integer', 'integer', 'integer', 'integer', 'text', 'option_units[]'], 'guest', array['EXECUTE']);
|
select function_privs_are('camper', 'draft_payment', array ['uuid', 'date', 'date', 'uuid', 'integer', 'integer', 'integer', 'integer', 'text', 'boolean', 'option_units[]'], 'guest', array['EXECUTE']);
|
||||||
select function_privs_are('camper', 'draft_payment', array ['uuid', 'date', 'date', 'uuid', 'integer', 'integer', 'integer', 'integer', 'text', 'option_units[]'], 'employee', array['EXECUTE']);
|
select function_privs_are('camper', 'draft_payment', array ['uuid', 'date', 'date', 'uuid', 'integer', 'integer', 'integer', 'integer', 'text', 'boolean', 'option_units[]'], 'employee', array['EXECUTE']);
|
||||||
select function_privs_are('camper', 'draft_payment', array ['uuid', 'date', 'date', 'uuid', 'integer', 'integer', 'integer', 'integer', 'text', 'option_units[]'], 'admin', array['EXECUTE']);
|
select function_privs_are('camper', 'draft_payment', array ['uuid', 'date', 'date', 'uuid', 'integer', 'integer', 'integer', 'integer', 'text', 'boolean', 'option_units[]'], 'admin', array['EXECUTE']);
|
||||||
select function_privs_are('camper', 'draft_payment', array ['uuid', 'date', 'date', 'uuid', 'integer', 'integer', 'integer', 'integer', 'text', 'option_units[]'], 'authenticator', array[]::text[]);
|
select function_privs_are('camper', 'draft_payment', array ['uuid', 'date', 'date', 'uuid', 'integer', 'integer', 'integer', 'integer', 'text', 'boolean', 'option_units[]'], 'authenticator', array[]::text[]);
|
||||||
|
|
||||||
|
|
||||||
set client_min_messages to warning;
|
set client_min_messages to warning;
|
||||||
|
truncate acsi_option cascade;
|
||||||
|
truncate acsi_calendar cascade;
|
||||||
|
truncate acsi cascade;
|
||||||
truncate payment_option cascade;
|
truncate payment_option cascade;
|
||||||
truncate payment cascade;
|
truncate payment cascade;
|
||||||
truncate campsite_type_option_cost cascade;
|
truncate campsite_type_option_cost cascade;
|
||||||
|
@ -95,9 +98,9 @@ values (16, 4, 800)
|
||||||
, (20, 8, 590)
|
, (20, 8, 590)
|
||||||
;
|
;
|
||||||
|
|
||||||
insert into payment (payment_id, slug, 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, payment_status, created_at, updated_at)
|
insert into payment (payment_id, slug, 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, payment_status, created_at, updated_at)
|
||||||
values (22, '7cccfe16-695e-486d-a6a5-1162fb85cafb', 2, 12, current_date + 60, current_date + 62, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'USD', '', 'draft', '2024-01-01 01:01:01', '2024-01-01 01:01:01')
|
values (22, '7cccfe16-695e-486d-a6a5-1162fb85cafb', 2, 12, current_date + 60, current_date + 62, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'USD', '', false, 'draft', '2024-01-01 01:01:01', '2024-01-01 01:01:01')
|
||||||
, (24, '6eeae04c-2fea-4d67-97dc-a4b8a83df99f', 2, 12, current_date + 61, current_date + 62, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'USD', '', 'pending', '2024-01-01 02:02:02', '2024-01-01 02:02:02')
|
, (24, '6eeae04c-2fea-4d67-97dc-a4b8a83df99f', 2, 12, current_date + 61, current_date + 62, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'USD', '', false, 'pending', '2024-01-01 02:02:02', '2024-01-01 02:02:02')
|
||||||
;
|
;
|
||||||
|
|
||||||
insert into payment_option (payment_id, campsite_type_option_id, units, subtotal)
|
insert into payment_option (payment_id, campsite_type_option_id, units, subtotal)
|
||||||
|
@ -106,31 +109,50 @@ values (22, 16, 1, 0)
|
||||||
, (24, 16, 2, 0)
|
, (24, 16, 2, 0)
|
||||||
;
|
;
|
||||||
|
|
||||||
|
insert into acsi (campsite_type_id, number_adults, number_teenagers, number_children, number_dogs, cost_per_night)
|
||||||
|
values (12, 2, 0, 0, 1, 2300);
|
||||||
|
|
||||||
|
insert into acsi_calendar (campsite_type_id, acsi_range)
|
||||||
|
values (12, daterange(current_date + 60, current_date + 61))
|
||||||
|
, (12, daterange(current_date + 64, current_date + 65))
|
||||||
|
;
|
||||||
|
|
||||||
|
insert into acsi_option (campsite_type_id, campsite_type_option_id, units)
|
||||||
|
values (12, 16, 1)
|
||||||
|
, (12, 18, 1)
|
||||||
|
;
|
||||||
|
|
||||||
select lives_ok(
|
select lives_ok(
|
||||||
$$ select draft_payment(null, current_date + 59, current_date + 64, 'b065f4e3-2cc8-491d-a413-d015d7d00183', 1, 2, 3, 0, null, null) $$,
|
$$ select draft_payment(null, current_date + 59, current_date + 64, 'b065f4e3-2cc8-491d-a413-d015d7d00183', 1, 2, 3, 0, null, true, null) $$,
|
||||||
'Should be able to create a new draft for Bungalows'
|
'Should be able to create a new draft for Bungalows'
|
||||||
);
|
);
|
||||||
|
|
||||||
select lives_ok(
|
select lives_ok(
|
||||||
$$ select draft_payment(null, current_date + 6, current_date + 11, 'b065f4e3-2cc8-491d-a413-d015d7d00183', 1, 2, 3, 0, null, null) $$,
|
$$ select draft_payment(null, current_date + 6, current_date + 11, 'b065f4e3-2cc8-491d-a413-d015d7d00183', 1, 2, 3, 0, null, true, null) $$,
|
||||||
'A payment for a reservation in less than a week has a 100 % of downpayment'
|
'A payment for a reservation in less than a week has a 100 % of downpayment'
|
||||||
);
|
);
|
||||||
select lives_ok(
|
select lives_ok(
|
||||||
$$ select draft_payment(null, current_date + 10, current_date + 58, 'b065f4e3-2cc8-491d-a413-d015d7d00183', 2, 3, 4, 0, null, null) $$,
|
$$ select draft_payment(null, current_date + 10, current_date + 58, 'b065f4e3-2cc8-491d-a413-d015d7d00183', 2, 3, 4, 0, null, true, null) $$,
|
||||||
'All reservations incur a tourist tax for the first tourist_tax_max_days days'
|
'All reservations incur a tourist tax for the first tourist_tax_max_days days'
|
||||||
);
|
);
|
||||||
|
|
||||||
select lives_ok(
|
select lives_ok(
|
||||||
$$ select draft_payment('7cccfe16-695e-486d-a6a5-1162fb85cafb', current_date + 58, current_date + 65, 'c1b6f4fc-32c1-4cd5-b796-0c5059152a52', 2, 4, 6, 3, 'pref I before E', array[(16, 2), (20, 3)]::option_units[]) $$,
|
$$ select draft_payment('7cccfe16-695e-486d-a6a5-1162fb85cafb', current_date + 58, current_date + 65, 'c1b6f4fc-32c1-4cd5-b796-0c5059152a52', 2, 4, 6, 3, 'pref I before E', false, array[(16, 2), (20, 3)]::option_units[]) $$,
|
||||||
'Should be able to update the draft for Plots'
|
'Should be able to update the draft for Plots'
|
||||||
);
|
);
|
||||||
|
|
||||||
select results_ne(
|
select results_ne(
|
||||||
$$ select slug::text from draft_payment('6eeae04c-2fea-4d67-97dc-a4b8a83df99f', current_date + 31, current_date + 36, 'b065f4e3-2cc8-491d-a413-d015d7d00183', 2, 1, 1, 1, 'under a tree', array[(16, 1), (18, 1)]::option_units[]) $$,
|
$$ select slug::text from draft_payment('6eeae04c-2fea-4d67-97dc-a4b8a83df99f', current_date + 31, current_date + 36, 'b065f4e3-2cc8-491d-a413-d015d7d00183', 2, 1, 1, 1, 'under a tree', true, array[(16, 1), (18, 1)]::option_units[]) $$,
|
||||||
$$ values ('6eeae04c-2fea-4d67-97dc-a4b8a83df99f') $$,
|
$$ values ('6eeae04c-2fea-4d67-97dc-a4b8a83df99f') $$,
|
||||||
'When trying to draft a payment already pending, completed, failed, or refunded, create a new instead'
|
'When trying to draft a payment already pending, completed, failed, or refunded, create a new instead'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
select lives_ok(
|
||||||
|
$$ select draft_payment(null, current_date + 58, current_date + 65, 'c1b6f4fc-32c1-4cd5-b796-0c5059152a52', 3, 1, 1, 1, '', true, array[(16, 2), (18, 3), (20, 4)]::option_units[]) $$,
|
||||||
|
'Should be able to draft a payment for plots with ACSI discount during the days that is valid'
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
select bag_eq(
|
select bag_eq(
|
||||||
$$ 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, down_payment_percent, zone_preferences, payment_status, created_at, updated_at from payment $$,
|
$$ 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, down_payment_percent, zone_preferences, payment_status, created_at, updated_at from payment $$,
|
||||||
$$ values (2, 12, current_date + 58, current_date + 65, 3200, 2, 10420, 4, 20840, 6, 25080, 3, 2450, 4900, 79160, 'EUR', 0.3, 'pref I before E', 'draft', '2024-01-01 01:01:01', current_timestamp)
|
$$ values (2, 12, current_date + 58, current_date + 65, 3200, 2, 10420, 4, 20840, 6, 25080, 3, 2450, 4900, 79160, 'EUR', 0.3, 'pref I before E', 'draft', '2024-01-01 01:01:01', current_timestamp)
|
||||||
|
@ -139,6 +161,7 @@ select bag_eq(
|
||||||
, (2, 14, current_date + 6, current_date + 11, 85000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 86750, 'EUR', 1.0, '', 'draft', current_timestamp, current_timestamp)
|
, (2, 14, current_date + 6, current_date + 11, 85000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 86750, 'EUR', 1.0, '', 'draft', current_timestamp, current_timestamp)
|
||||||
, (2, 12, current_date + 61, current_date + 62, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'USD', 1.0, '', 'pending', '2024-01-01 02:02:02', '2024-01-01 02:02:02')
|
, (2, 12, current_date + 61, current_date + 62, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'USD', 1.0, '', 'pending', '2024-01-01 02:02:02', '2024-01-01 02:02:02')
|
||||||
, (2, 14, current_date + 31, current_date + 36, 85000, 2, 0, 1, 0, 1, 0, 1, 0, 3500, 96000, 'EUR', 0.3, 'under a tree', 'draft', current_timestamp, current_timestamp)
|
, (2, 14, current_date + 31, current_date + 36, 85000, 2, 0, 1, 0, 1, 0, 1, 0, 3500, 96000, 'EUR', 0.3, 'under a tree', 'draft', current_timestamp, current_timestamp)
|
||||||
|
, (2, 12, current_date + 58, current_date + 65, 6000, 3, 12830, 1, 5210, 1, 4180, 1, 1750, 7350, 61130, 'EUR', 0.3, '', 'draft', current_timestamp, current_timestamp)
|
||||||
$$,
|
$$,
|
||||||
'Should have added and updated payments'
|
'Should have added and updated payments'
|
||||||
);
|
);
|
||||||
|
@ -146,10 +169,13 @@ select bag_eq(
|
||||||
select bag_eq(
|
select bag_eq(
|
||||||
$$ select case payment_id when 22 then 'a' when 24 then 'b' else 'c' end, campsite_type_option_id, units, subtotal from payment_option $$,
|
$$ select case payment_id when 22 then 'a' when 24 then 'b' else 'c' end, campsite_type_option_id, units, subtotal from payment_option $$,
|
||||||
$$ values ('a', 16, 2, 10200)
|
$$ values ('a', 16, 2, 10200)
|
||||||
, ('a', 20, 3, 2070)
|
, ('a', 20, 3, 2070)
|
||||||
, ('b', 16, 2, 0)
|
, ('b', 16, 2, 0)
|
||||||
, ('c', 16, 1, 4000)
|
, ('c', 16, 1, 4000)
|
||||||
, ('c', 18, 1, 3500)
|
, ('c', 18, 1, 3500)
|
||||||
|
, ('c', 16, 2, 8860)
|
||||||
|
, ('c', 18, 3, 12190)
|
||||||
|
, ('c', 20, 4, 2760)
|
||||||
$$,
|
$$,
|
||||||
'Should have added, updated, and removed payment options'
|
'Should have added, updated, and removed payment options'
|
||||||
);
|
);
|
||||||
|
|
|
@ -51,16 +51,16 @@ insert into campsite_type_option (campsite_type_option_id, campsite_type_id, nam
|
||||||
values (16, 12, 'Big tent', '[0, 4)', true)
|
values (16, 12, 'Big tent', '[0, 4)', true)
|
||||||
;
|
;
|
||||||
|
|
||||||
insert into payment (payment_id, 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, payment_status, created_at, updated_at)
|
insert into payment (payment_id, 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, payment_status, created_at, updated_at)
|
||||||
values (22, 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', 'draft', '2024-01-01 01:01:01', current_timestamp - interval '1 day, -1 second')
|
values (22, 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', false, 'draft', '2024-01-01 01:01:01', current_timestamp - interval '1 day, -1 second')
|
||||||
, (24, 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', 'draft', '2024-01-01 01:01:01', current_timestamp - interval '1 day, 1 second')
|
, (24, 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', false, 'draft', '2024-01-01 01:01:01', current_timestamp - interval '1 day, 1 second')
|
||||||
, (26, 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', 'pending', '2024-01-02 02:02:02', current_timestamp - interval '1 hour, -1 second')
|
, (26, 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', false, 'pending', '2024-01-02 02:02:02', current_timestamp - interval '1 hour, -1 second')
|
||||||
, (28, 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', 'pending', '2024-01-03 03:03:03', current_timestamp - interval '1 hour, 1 second')
|
, (28, 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', false, 'pending', '2024-01-03 03:03:03', current_timestamp - interval '1 hour, 1 second')
|
||||||
, (30, 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', 'preauth', '2024-01-04 04:04:04', current_timestamp - interval '2 days')
|
, (30, 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', false, 'preauth', '2024-01-04 04:04:04', current_timestamp - interval '2 days')
|
||||||
, (32, 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', 'failed', '2024-01-05 05:05:05', current_timestamp - interval '2 days')
|
, (32, 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', false, 'failed', '2024-01-05 05:05:05', current_timestamp - interval '2 days')
|
||||||
, (34, 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', 'completed', '2024-01-05 05:05:05', current_timestamp - interval '2 days')
|
, (34, 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', false, 'completed', '2024-01-05 05:05:05', current_timestamp - interval '2 days')
|
||||||
, (36, 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', 'refunded', '2024-01-05 05:05:05', current_timestamp - interval '2 days')
|
, (36, 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', false, 'refunded', '2024-01-05 05:05:05', current_timestamp - interval '2 days')
|
||||||
, (38, 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', 'voided', '2024-01-05 05:05:05', current_timestamp - interval '2 days')
|
, (38, 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', false, 'voided', '2024-01-05 05:05:05', current_timestamp - interval '2 days')
|
||||||
;
|
;
|
||||||
|
|
||||||
insert into payment_option (payment_id, campsite_type_option_id, units, subtotal)
|
insert into payment_option (payment_id, campsite_type_option_id, units, subtotal)
|
||||||
|
|
|
@ -5,7 +5,7 @@ reset client_min_messages;
|
||||||
|
|
||||||
begin;
|
begin;
|
||||||
|
|
||||||
select plan(114);
|
select plan(118);
|
||||||
|
|
||||||
set search_path to camper, public;
|
set search_path to camper, public;
|
||||||
|
|
||||||
|
@ -126,6 +126,11 @@ select col_type_is('payment', 'zone_preferences', 'text');
|
||||||
select col_not_null('payment', 'zone_preferences');
|
select col_not_null('payment', 'zone_preferences');
|
||||||
select col_hasnt_default('payment', 'zone_preferences');
|
select col_hasnt_default('payment', 'zone_preferences');
|
||||||
|
|
||||||
|
select has_column('payment', 'acsi_card');
|
||||||
|
select col_type_is('payment', 'acsi_card', 'boolean');
|
||||||
|
select col_not_null('payment', 'acsi_card');
|
||||||
|
select col_hasnt_default('payment', 'acsi_card');
|
||||||
|
|
||||||
select has_column('payment', 'payment_status');
|
select has_column('payment', 'payment_status');
|
||||||
select col_is_fk('payment', 'payment_status');
|
select col_is_fk('payment', 'payment_status');
|
||||||
select fk_ok('payment', 'payment_status', 'payment_status', 'payment_status');
|
select fk_ok('payment', 'payment_status', 'payment_status', 'payment_status');
|
||||||
|
@ -173,7 +178,7 @@ values (10, 1, 2, 'Type A', '<p>A</p>', 5, '[1, 7]', true)
|
||||||
;
|
;
|
||||||
|
|
||||||
select throws_ok(
|
select throws_ok(
|
||||||
$$ insert into payment (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) values (1, 10, '2024-07-07', '2024-07-07', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'EUR', '') $$,
|
$$ insert into payment (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) values (1, 10, '2024-07-07', '2024-07-07', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'EUR', '', false) $$,
|
||||||
'23514', 'new row for relation "payment" violates check constraint "departure_after_arrival"',
|
'23514', 'new row for relation "payment" violates check constraint "departure_after_arrival"',
|
||||||
'Should not be able to insert a payment with a departure date equal or before the arrival date (i.e., at least one night)'
|
'Should not be able to insert a payment with a departure date equal or before the arrival date (i.e., at least one night)'
|
||||||
);
|
);
|
||||||
|
|
|
@ -5,7 +5,7 @@ reset client_min_messages;
|
||||||
|
|
||||||
begin;
|
begin;
|
||||||
|
|
||||||
select plan(53);
|
select plan(49);
|
||||||
|
|
||||||
set search_path to camper, public;
|
set search_path to camper, public;
|
||||||
|
|
||||||
|
@ -61,11 +61,6 @@ select col_type_is('payment_customer', 'phone', 'packed_phone_number');
|
||||||
select col_not_null('payment_customer', 'phone');
|
select col_not_null('payment_customer', 'phone');
|
||||||
select col_hasnt_default('payment_customer', 'phone');
|
select col_hasnt_default('payment_customer', 'phone');
|
||||||
|
|
||||||
select has_column('payment_customer', 'acsi_card');
|
|
||||||
select col_type_is('payment_customer', 'acsi_card', 'boolean');
|
|
||||||
select col_not_null('payment_customer', 'acsi_card');
|
|
||||||
select col_hasnt_default('payment_customer', 'acsi_card');
|
|
||||||
|
|
||||||
select has_column('payment_customer', 'lang_tag');
|
select has_column('payment_customer', 'lang_tag');
|
||||||
select col_is_fk('payment_customer', 'lang_tag');
|
select col_is_fk('payment_customer', 'lang_tag');
|
||||||
select fk_ok('payment_customer', 'lang_tag', 'language', 'lang_tag');
|
select fk_ok('payment_customer', 'lang_tag', 'language', 'lang_tag');
|
||||||
|
|
|
@ -44,14 +44,14 @@ insert into campsite_type (campsite_type_id, slug, company_id, name, media_id, m
|
||||||
values (12, 'c1b6f4fc-32c1-4cd5-b796-0c5059152a52', 2, 'Plots', 10, 6, '[1, 7]', true)
|
values (12, 'c1b6f4fc-32c1-4cd5-b796-0c5059152a52', 2, 'Plots', 10, 6, '[1, 7]', true)
|
||||||
;
|
;
|
||||||
|
|
||||||
insert into payment (payment_id, slug, 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)
|
insert into payment (payment_id, slug, 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)
|
||||||
values (22, '4ef35e2f-ef98-42d6-a724-913bd761ca8c', 2, 12, '2024-08-29', '2024-09-03', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'EUR', '')
|
values (22, '4ef35e2f-ef98-42d6-a724-913bd761ca8c', 2, 12, '2024-08-29', '2024-09-03', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'EUR', '', false)
|
||||||
, (23, '6d1b8e4c-c3c6-4fe4-92c1-2cbf94526693', 2, 12, '2024-08-29', '2024-09-03', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'EUR', '')
|
, (23, '6d1b8e4c-c3c6-4fe4-92c1-2cbf94526693', 2, 12, '2024-08-29', '2024-09-03', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'EUR', '', false)
|
||||||
, (24, '8d38a482-8a25-4d85-9929-e5f425fcac04', 2, 12, '2024-08-29', '2024-09-03', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'EUR', '')
|
, (24, '8d38a482-8a25-4d85-9929-e5f425fcac04', 2, 12, '2024-08-29', '2024-09-03', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'EUR', '', false)
|
||||||
, (25, 'b770f8b7-f148-4ab4-a786-aa070af598e5', 2, 12, '2024-08-29', '2024-09-03', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'EUR', '')
|
, (25, 'b770f8b7-f148-4ab4-a786-aa070af598e5', 2, 12, '2024-08-29', '2024-09-03', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'EUR', '', false)
|
||||||
, (26, '31910d73-d343-44b7-8a29-f7e075b64933', 2, 12, '2024-08-29', '2024-09-03', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'EUR', '')
|
, (26, '31910d73-d343-44b7-8a29-f7e075b64933', 2, 12, '2024-08-29', '2024-09-03', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'EUR', '', false)
|
||||||
, (27, 'c9488490-ac09-4402-90cd-f6f0546f04c0', 2, 12, '2024-08-29', '2024-09-03', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'EUR', '')
|
, (27, 'c9488490-ac09-4402-90cd-f6f0546f04c0', 2, 12, '2024-08-29', '2024-09-03', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'EUR', '', false)
|
||||||
, (28, '5819823e-c0ac-4baa-a3ae-515fbb70e909', 2, 12, '2024-08-29', '2024-09-03', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'EUR', '')
|
, (28, '5819823e-c0ac-4baa-a3ae-515fbb70e909', 2, 12, '2024-08-29', '2024-09-03', 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'EUR', '', false)
|
||||||
;
|
;
|
||||||
|
|
||||||
select bag_eq(
|
select bag_eq(
|
||||||
|
|
|
@ -44,17 +44,17 @@ insert into campsite_type (campsite_type_id, slug, company_id, name, media_id, m
|
||||||
values (12, 'c1b6f4fc-32c1-4cd5-b796-0c5059152a52', 2, 'Plots', 10, 6, '[1, 7]', true)
|
values (12, 'c1b6f4fc-32c1-4cd5-b796-0c5059152a52', 2, 'Plots', 10, 6, '[1, 7]', true)
|
||||||
;
|
;
|
||||||
|
|
||||||
insert into payment (payment_id, slug, 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, payment_status, created_at, updated_at)
|
insert into payment (payment_id, slug, 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, payment_status, created_at, updated_at)
|
||||||
values (22, '4ef35e2f-ef98-42d6-a724-913bd761ca8c', 2, 12, '2024-08-28', '2024-09-04', 3200, 2, 10420, 4, 20840, 6, 25080, 3, 2450, 4900, 79160, 'EUR', 'pref I before E', 'draft', '2024-01-01 01:01:01', '2024-01-01 01:01:01')
|
values (22, '4ef35e2f-ef98-42d6-a724-913bd761ca8c', 2, 12, '2024-08-28', '2024-09-04', 3200, 2, 10420, 4, 20840, 6, 25080, 3, 2450, 4900, 79160, 'EUR', 'pref I before E', false, 'draft', '2024-01-01 01:01:01', '2024-01-01 01:01:01')
|
||||||
, (24, '6d1b8e4c-c3c6-4fe4-92c1-2cbf94526693', 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', 'pending', '2024-01-02 02:02:02', '2024-01-02 02:02:02')
|
, (24, '6d1b8e4c-c3c6-4fe4-92c1-2cbf94526693', 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', false, 'pending', '2024-01-02 02:02:02', '2024-01-02 02:02:02')
|
||||||
, (26, '8d38a482-8a25-4d85-9929-e5f425fcac04', 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', 'completed', '2024-01-03 03:03:03', '2024-01-03 03:03:03')
|
, (26, '8d38a482-8a25-4d85-9929-e5f425fcac04', 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', false, 'completed', '2024-01-03 03:03:03', '2024-01-03 03:03:03')
|
||||||
, (28, 'b770f8b7-f148-4ab4-a786-aa070af598e5', 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', 'failed', '2024-01-04 04:04:04', '2024-01-04 04:04:04')
|
, (28, 'b770f8b7-f148-4ab4-a786-aa070af598e5', 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', false, 'failed', '2024-01-04 04:04:04', '2024-01-04 04:04:04')
|
||||||
, (30, '31910d73-d343-44b7-8a29-f7e075b64933', 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', 'refunded', '2024-01-05 05:05:05', '2024-01-05 05:05:05')
|
, (30, '31910d73-d343-44b7-8a29-f7e075b64933', 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', false, 'refunded', '2024-01-05 05:05:05', '2024-01-05 05:05:05')
|
||||||
, (32, 'c9488490-ac09-4402-90cd-f6f0546f04c0', 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', 'pending', '2024-01-05 05:05:05', '2024-01-05 05:05:05')
|
, (32, 'c9488490-ac09-4402-90cd-f6f0546f04c0', 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', false, 'pending', '2024-01-05 05:05:05', '2024-01-05 05:05:05')
|
||||||
, (34, '5819823e-c0ac-4baa-a3ae-515fbb70e909', 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', 'pending', '2024-01-05 05:05:05', '2024-01-06 06:06:06')
|
, (34, '5819823e-c0ac-4baa-a3ae-515fbb70e909', 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', false, 'pending', '2024-01-05 05:05:05', '2024-01-06 06:06:06')
|
||||||
, (36, 'f2871c2d-e11a-41e8-b264-0a8605c77dc1', 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', 'pending', '2024-01-05 05:05:05', '2024-01-06 06:06:06')
|
, (36, 'f2871c2d-e11a-41e8-b264-0a8605c77dc1', 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', false, 'pending', '2024-01-05 05:05:05', '2024-01-06 06:06:06')
|
||||||
, (38, '01505d14-6f4d-48a2-9a98-3a2099ab7eef', 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', 'preauth', '2024-01-05 05:05:05', '2024-01-06 06:06:06')
|
, (38, '01505d14-6f4d-48a2-9a98-3a2099ab7eef', 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', false, 'preauth', '2024-01-05 05:05:05', '2024-01-06 06:06:06')
|
||||||
, (40, '7cae7d1c-d626-41e0-b1c5-48359e515579', 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', 'preauth', '2024-01-05 05:05:05', '2024-01-06 06:06:06')
|
, (40, '7cae7d1c-d626-41e0-b1c5-48359e515579', 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', false, 'preauth', '2024-01-05 05:05:05', '2024-01-06 06:06:06')
|
||||||
;
|
;
|
||||||
|
|
||||||
insert into payment_redsys_response (payment_id, response_code, date_time, secure_payment, transaction_type, amount, currency_code, order_number, authorization_code, merchant_code, terminal_number, error_code)
|
insert into payment_redsys_response (payment_id, response_code, date_time, secure_payment, transaction_type, amount, currency_code, order_number, authorization_code, merchant_code, terminal_number, error_code)
|
||||||
|
|
|
@ -9,15 +9,15 @@ select plan(15);
|
||||||
|
|
||||||
set search_path to camper, public;
|
set search_path to camper, public;
|
||||||
|
|
||||||
select has_function('camper', 'ready_payment', array['uuid', 'text', 'text', 'text', 'text', 'country_code', 'email', 'text', 'text', 'boolean']);
|
select has_function('camper', 'ready_payment', array['uuid', 'text', 'text', 'text', 'text', 'country_code', 'email', 'text', 'text']);
|
||||||
select function_lang_is('camper', 'ready_payment', array['uuid', 'text', 'text', 'text', 'text', 'country_code', 'email', 'text', 'text', 'boolean'], 'plpgsql');
|
select function_lang_is('camper', 'ready_payment', array['uuid', 'text', 'text', 'text', 'text', 'country_code', 'email', 'text', 'text'], 'plpgsql');
|
||||||
select function_returns('camper', 'ready_payment', array['uuid', 'text', 'text', 'text', 'text', 'country_code', 'email', 'text', 'text', 'boolean'], 'integer');
|
select function_returns('camper', 'ready_payment', array['uuid', 'text', 'text', 'text', 'text', 'country_code', 'email', 'text', 'text'], 'integer');
|
||||||
select isnt_definer('camper', 'ready_payment', array['uuid', 'text', 'text', 'text', 'text', 'country_code', 'email', 'text', 'text', 'boolean']);
|
select isnt_definer('camper', 'ready_payment', array['uuid', 'text', 'text', 'text', 'text', 'country_code', 'email', 'text', 'text']);
|
||||||
select volatility_is('camper', 'ready_payment', array['uuid', 'text', 'text', 'text', 'text', 'country_code', 'email', 'text', 'text', 'boolean'], 'volatile');
|
select volatility_is('camper', 'ready_payment', array['uuid', 'text', 'text', 'text', 'text', 'country_code', 'email', 'text', 'text'], 'volatile');
|
||||||
select function_privs_are('camper', 'ready_payment', array ['uuid', 'text', 'text', 'text', 'text', 'country_code', 'email', 'text', 'text', 'boolean'], 'guest', array['EXECUTE']);
|
select function_privs_are('camper', 'ready_payment', array ['uuid', 'text', 'text', 'text', 'text', 'country_code', 'email', 'text', 'text'], 'guest', array['EXECUTE']);
|
||||||
select function_privs_are('camper', 'ready_payment', array ['uuid', 'text', 'text', 'text', 'text', 'country_code', 'email', 'text', 'text', 'boolean'], 'employee', array['EXECUTE']);
|
select function_privs_are('camper', 'ready_payment', array ['uuid', 'text', 'text', 'text', 'text', 'country_code', 'email', 'text', 'text'], 'employee', array['EXECUTE']);
|
||||||
select function_privs_are('camper', 'ready_payment', array ['uuid', 'text', 'text', 'text', 'text', 'country_code', 'email', 'text', 'text', 'boolean'], 'admin', array['EXECUTE']);
|
select function_privs_are('camper', 'ready_payment', array ['uuid', 'text', 'text', 'text', 'text', 'country_code', 'email', 'text', 'text'], 'admin', array['EXECUTE']);
|
||||||
select function_privs_are('camper', 'ready_payment', array ['uuid', 'text', 'text', 'text', 'text', 'country_code', 'email', 'text', 'text', 'boolean'], 'authenticator', array[]::text[]);
|
select function_privs_are('camper', 'ready_payment', array ['uuid', 'text', 'text', 'text', 'text', 'country_code', 'email', 'text', 'text'], 'authenticator', array[]::text[]);
|
||||||
|
|
||||||
|
|
||||||
set client_min_messages to warning;
|
set client_min_messages to warning;
|
||||||
|
@ -45,51 +45,51 @@ insert into campsite_type (campsite_type_id, slug, company_id, name, media_id, m
|
||||||
values (12, 'c1b6f4fc-32c1-4cd5-b796-0c5059152a52', 2, 'Plots', 10, 6, '[1, 7]', true)
|
values (12, 'c1b6f4fc-32c1-4cd5-b796-0c5059152a52', 2, 'Plots', 10, 6, '[1, 7]', true)
|
||||||
;
|
;
|
||||||
|
|
||||||
insert into payment (payment_id, slug, 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, payment_status, created_at, updated_at)
|
insert into payment (payment_id, slug, 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, payment_status, created_at, updated_at)
|
||||||
values (22, '4ef35e2f-ef98-42d6-a724-913bd761ca8c', 2, 12, '2024-08-28', '2024-09-04', 3200, 2, 10420, 4, 20840, 6, 25080, 3, 2450, 4900, 79160, 'EUR', 'pref I before E', 'draft', '2024-01-01 01:01:01', '2024-01-01')
|
values (22, '4ef35e2f-ef98-42d6-a724-913bd761ca8c', 2, 12, '2024-08-28', '2024-09-04', 3200, 2, 10420, 4, 20840, 6, 25080, 3, 2450, 4900, 79160, 'EUR', 'pref I before E', true, 'draft', '2024-01-01 01:01:01', '2024-01-01')
|
||||||
, (24, '6d1b8e4c-c3c6-4fe4-92c1-2cbf94526693', 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', 'draft', current_timestamp, current_timestamp)
|
, (24, '6d1b8e4c-c3c6-4fe4-92c1-2cbf94526693', 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, 'EUR', '', false, 'draft', current_timestamp, current_timestamp)
|
||||||
;
|
;
|
||||||
|
|
||||||
insert into payment_customer (payment_id, full_name, address, postal_code, city, country_code, email, phone, acsi_card, lang_tag)
|
insert into payment_customer (payment_id, full_name, address, postal_code, city, country_code, email, phone, lang_tag)
|
||||||
values (24, '', '', '', '', 'FR', 'a@a.com', '555-555-555', true, 'es')
|
values (24, '', '', '', '', 'FR', 'a@a.com', '555-555-555', 'es')
|
||||||
;
|
;
|
||||||
|
|
||||||
select is(
|
select is(
|
||||||
ready_payment('4ef35e2f-ef98-42d6-a724-913bd761ca8c', 'Juli Verd', 'C/ Fals, 123', '17486', 'Castelló d’Empúries', 'ES', 'juli@verd.cat', '972486 160', 'ca', true),
|
ready_payment('4ef35e2f-ef98-42d6-a724-913bd761ca8c', 'Juli Verd', 'C/ Fals, 123', '17486', 'Castelló d’Empúries', 'ES', 'juli@verd.cat', '972486 160', 'ca'),
|
||||||
22,
|
22,
|
||||||
'Should be able to ready the first draft payment'
|
'Should be able to ready the first draft payment'
|
||||||
);
|
);
|
||||||
|
|
||||||
select is(
|
select is(
|
||||||
ready_payment('6d1b8e4c-c3c6-4fe4-92c1-2cbf94526693', 'Pere Gil', 'Gutenbergstr. 9-13', '82178', 'Puchheim', 'DE', 'pere@gil.de', '8980902-0', 'en', false),
|
ready_payment('6d1b8e4c-c3c6-4fe4-92c1-2cbf94526693', 'Pere Gil', 'Gutenbergstr. 9-13', '82178', 'Puchheim', 'DE', 'pere@gil.de', '8980902-0', 'en'),
|
||||||
24,
|
24,
|
||||||
'Should be able to ready the second draft payment, and update customer details'
|
'Should be able to ready the second draft payment, and update customer details'
|
||||||
);
|
);
|
||||||
|
|
||||||
select throws_ok(
|
select throws_ok(
|
||||||
$$ select ready_payment('7ba7f0a5-d73d-4d6e-a9c4-3b88f2b2a357', 'Juli Verd', 'C/ Fals, 123', '17486', 'Castelló d’Empúries', 'ES', 'juli@verd.cat', '972 486 160', 'ca', true) $$,
|
$$ select ready_payment('7ba7f0a5-d73d-4d6e-a9c4-3b88f2b2a357', 'Juli Verd', 'C/ Fals, 123', '17486', 'Castelló d’Empúries', 'ES', 'juli@verd.cat', '972 486 160', 'ca') $$,
|
||||||
'23514', 'insert or update on table "payment" violates check constraint "payment_is_draft"',
|
'23514', 'insert or update on table "payment" violates check constraint "payment_is_draft"',
|
||||||
'Should not be able to ready an inexistent payment'
|
'Should not be able to ready an inexistent payment'
|
||||||
);
|
);
|
||||||
|
|
||||||
select throws_ok(
|
select throws_ok(
|
||||||
$$ select ready_payment('4ef35e2f-ef98-42d6-a724-913bd761ca8c', 'Juli Verd', 'C/ Fals, 123', '17486', 'Castelló d’Empúries', 'ES', 'juli@verd.cat', '972 486 160', 'ca', true) $$,
|
$$ select ready_payment('4ef35e2f-ef98-42d6-a724-913bd761ca8c', 'Juli Verd', 'C/ Fals, 123', '17486', 'Castelló d’Empúries', 'ES', 'juli@verd.cat', '972 486 160', 'ca') $$,
|
||||||
'23514', 'insert or update on table "payment" violates check constraint "payment_is_draft"',
|
'23514', 'insert or update on table "payment" violates check constraint "payment_is_draft"',
|
||||||
'Should not be able to ready an already processed payment'
|
'Should not be able to ready an already processed payment'
|
||||||
);
|
);
|
||||||
|
|
||||||
select bag_eq(
|
select bag_eq(
|
||||||
$$ select payment_id, slug::text, company_id, campsite_type_id, arrival_date::text, departure_date::text, subtotal_nights, number_adults, subtotal_adults, number_teenagers, subtotal_teenagers, number_children, subtotal_children, number_dogs, subtotal_dogs, subtotal_tourist_tax, total, zone_preferences, payment_status, created_at, updated_at from payment $$,
|
$$ select payment_id, slug::text, company_id, campsite_type_id, arrival_date::text, departure_date::text, subtotal_nights, number_adults, subtotal_adults, number_teenagers, subtotal_teenagers, number_children, subtotal_children, number_dogs, subtotal_dogs, subtotal_tourist_tax, total, zone_preferences, acsi_card, payment_status, created_at, updated_at from payment $$,
|
||||||
$$ values (22, '4ef35e2f-ef98-42d6-a724-913bd761ca8c', 2, 12, '2024-08-28', '2024-09-04', 3200, 2, 10420, 4, 20840, 6, 25080, 3, 2450, 4900, 79160, 'pref I before E', 'pending', '2024-01-01 01:01:01', current_timestamp)
|
$$ values (22, '4ef35e2f-ef98-42d6-a724-913bd761ca8c', 2, 12, '2024-08-28', '2024-09-04', 3200, 2, 10420, 4, 20840, 6, 25080, 3, 2450, 4900, 79160, 'pref I before E', true, 'pending', '2024-01-01 01:01:01', current_timestamp)
|
||||||
, (24, '6d1b8e4c-c3c6-4fe4-92c1-2cbf94526693', 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, '', 'pending', current_timestamp, current_timestamp)
|
, (24, '6d1b8e4c-c3c6-4fe4-92c1-2cbf94526693', 2, 12, '2024-08-29', '2024-09-03', 71000, 1, 0, 2, 0, 3, 0, 0, 0, 1750, 72750, '', false, 'pending', current_timestamp, current_timestamp)
|
||||||
$$,
|
$$,
|
||||||
'Should have updated payments'
|
'Should have updated payments'
|
||||||
);
|
);
|
||||||
|
|
||||||
select bag_eq(
|
select bag_eq(
|
||||||
$$ select payment_id, full_name, address, postal_code, city, country_code::text, email::text, phone::text, acsi_card, lang_tag from payment_customer $$,
|
$$ select payment_id, full_name, address, postal_code, city, country_code::text, email::text, phone::text, lang_tag from payment_customer $$,
|
||||||
$$ values (22, 'Juli Verd', 'C/ Fals, 123', '17486', 'Castelló d’Empúries', 'ES', 'juli@verd.cat', '+34 972 48 61 60', true, 'ca')
|
$$ values (22, 'Juli Verd', 'C/ Fals, 123', '17486', 'Castelló d’Empúries', 'ES', 'juli@verd.cat', '+34 972 48 61 60', 'ca')
|
||||||
, (24, 'Pere Gil', 'Gutenbergstr. 9-13', '82178', 'Puchheim', 'DE', 'pere@gil.de', '+49 89 809020', false, 'en')
|
, (24, 'Pere Gil', 'Gutenbergstr. 9-13', '82178', 'Puchheim', 'DE', 'pere@gil.de', '+49 89 809020', 'en')
|
||||||
$$,
|
$$,
|
||||||
'Should have added and updated customer details'
|
'Should have added and updated customer details'
|
||||||
);
|
);
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
-- Verify camper:acsi on pg
|
||||||
|
|
||||||
|
begin;
|
||||||
|
|
||||||
|
select campsite_type_id
|
||||||
|
, number_adults
|
||||||
|
, number_teenagers
|
||||||
|
, number_children
|
||||||
|
, number_dogs
|
||||||
|
, cost_per_night
|
||||||
|
from camper.acsi
|
||||||
|
where false;
|
||||||
|
|
||||||
|
rollback;
|
|
@ -0,0 +1,10 @@
|
||||||
|
-- Verify camper:acsi_calendar on pg
|
||||||
|
|
||||||
|
begin;
|
||||||
|
|
||||||
|
select campsite_type_id
|
||||||
|
, acsi_range
|
||||||
|
from camper.acsi_calendar
|
||||||
|
where false;
|
||||||
|
|
||||||
|
rollback;
|
|
@ -0,0 +1,11 @@
|
||||||
|
-- Verify camper:acsi_option on pg
|
||||||
|
|
||||||
|
begin;
|
||||||
|
|
||||||
|
select campsite_type_id
|
||||||
|
, campsite_type_option_id
|
||||||
|
, units
|
||||||
|
from camper.acsi_option
|
||||||
|
where false;
|
||||||
|
|
||||||
|
rollback;
|
|
@ -2,6 +2,6 @@
|
||||||
|
|
||||||
begin;
|
begin;
|
||||||
|
|
||||||
select has_function_privilege('camper.draft_payment(uuid, date, date, uuid, integer, integer, integer, integer, text, camper.option_units[])', 'execute');
|
select has_function_privilege('camper.draft_payment(uuid, date, date, uuid, integer, integer, integer, integer, text, boolean, camper.option_units[])', 'execute');
|
||||||
|
|
||||||
rollback;
|
rollback;
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
-- Verify camper:draft_payment on pg
|
||||||
|
|
||||||
|
begin;
|
||||||
|
|
||||||
|
select has_function_privilege('camper.draft_payment(uuid, date, date, uuid, integer, integer, integer, integer, text, camper.option_units[])', 'execute');
|
||||||
|
|
||||||
|
rollback;
|
|
@ -0,0 +1,10 @@
|
||||||
|
-- Verify camper:payment__acsi_card on pg
|
||||||
|
|
||||||
|
begin;
|
||||||
|
|
||||||
|
select acsi_card
|
||||||
|
from camper.payment
|
||||||
|
where false
|
||||||
|
;
|
||||||
|
|
||||||
|
rollback;
|
|
@ -0,0 +1,11 @@
|
||||||
|
-- Verify camper:payment_customer__-acsi_card on pg
|
||||||
|
|
||||||
|
begin;
|
||||||
|
|
||||||
|
select 1 / (1 - count(*))
|
||||||
|
from pg_attribute
|
||||||
|
where attrelid = 'camper.payment_customer'::regclass
|
||||||
|
and attname = 'acsi_card'
|
||||||
|
;
|
||||||
|
|
||||||
|
rollback;
|
|
@ -2,6 +2,6 @@
|
||||||
|
|
||||||
begin;
|
begin;
|
||||||
|
|
||||||
select has_function_privilege('camper.ready_payment(uuid, text, text, text, text, camper.country_code, camper.email, text, text, boolean)', 'execute');
|
select has_function_privilege('camper.ready_payment(uuid, text, text, text, text, camper.country_code, camper.email, text, text)', 'execute');
|
||||||
|
|
||||||
rollback;
|
rollback;
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
-- Verify camper:ready_payment on pg
|
||||||
|
|
||||||
|
begin;
|
||||||
|
|
||||||
|
select has_function_privilege('camper.ready_payment(uuid, text, text, text, text, camper.country_code, camper.email, text, text, boolean)', 'execute');
|
||||||
|
|
||||||
|
rollback;
|
|
@ -1399,6 +1399,12 @@ input[type="checkbox"]:focus {
|
||||||
top: 13rem;
|
top: 13rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#booking > footer fieldset {
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 1em;
|
||||||
|
margin: 1em 0;
|
||||||
|
}
|
||||||
|
|
||||||
#booking br {
|
#booking br {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,6 +48,10 @@
|
||||||
<th scope="row">{{( pgettext "Area preferences" "header" )}}</th>
|
<th scope="row">{{( pgettext "Area preferences" "header" )}}</th>
|
||||||
<td>{{ .ZonePreferences }}</td>
|
<td>{{ .ZonePreferences }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th scope="row">{{( pgettext "ACSI card?" "input" )}}</th>
|
||||||
|
<td>{{if .ACSICard}}{{( gettext "Yes" )}}{{ else }}{{( gettext "No" )}}{{ end }}</td>
|
||||||
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th scope="row">{{( pgettext "Arrival date" "input" )}}</th>
|
<th scope="row">{{( pgettext "Arrival date" "input" )}}</th>
|
||||||
<td>{{ .ArrivalDate | formatDate }}</td>
|
<td>{{ .ArrivalDate | formatDate }}</td>
|
||||||
|
@ -137,10 +141,6 @@
|
||||||
<th scope="row">{{( pgettext "Language" "input" )}}</th>
|
<th scope="row">{{( pgettext "Language" "input" )}}</th>
|
||||||
<td>{{ .Language }}</td>
|
<td>{{ .Language }}</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
|
||||||
<th scope="row">{{( pgettext "ACSI card?" "input" )}}</th>
|
|
||||||
<td>{{if .ACSICard}}{{( gettext "Yes" )}}{{ else }}{{( gettext "No" )}}{{ end }}</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
|
|
||||||
* {{( pgettext "Accommodation" "title" )}}: {{ .CampsiteType }}
|
* {{( pgettext "Accommodation" "title" )}}: {{ .CampsiteType }}
|
||||||
* {{( pgettext "Area preferences" "header" )}}: {{ .ZonePreferences }}
|
* {{( pgettext "Area preferences" "header" )}}: {{ .ZonePreferences }}
|
||||||
|
* {{( pgettext "ACSI card?" "input" )}}: {{if .ACSICard}}{{( gettext "Yes" )}}{{ else }}{{( gettext "No" )}}{{ end }}
|
||||||
* {{( pgettext "Arrival date" "input" )}}: {{ .ArrivalDate.Format "02/01/2006" }}
|
* {{( pgettext "Arrival date" "input" )}}: {{ .ArrivalDate.Format "02/01/2006" }}
|
||||||
* {{( pgettext "Departure date" "input" )}}: {{ .DepartureDate.Format "02/01/2006" }}
|
* {{( pgettext "Departure date" "input" )}}: {{ .DepartureDate.Format "02/01/2006" }}
|
||||||
* {{( pgettext "Nights" "cart" )}}: {{ .NumNights }}
|
* {{( pgettext "Nights" "cart" )}}: {{ .NumNights }}
|
||||||
|
@ -45,7 +46,6 @@
|
||||||
* {{( pgettext "Email" "input" )}}: {{ .Email }}
|
* {{( pgettext "Email" "input" )}}: {{ .Email }}
|
||||||
* {{( pgettext "Phone" "input" )}}: {{ .Phone }}
|
* {{( pgettext "Phone" "input" )}}: {{ .Phone }}
|
||||||
* {{( pgettext "Language" "input" )}}: {{ .Language }}
|
* {{( pgettext "Language" "input" )}}: {{ .Language }}
|
||||||
* {{( pgettext "ACSI card?" "input" )}}: {{if .ACSICard}}{{( gettext "Yes" )}}{{ else }}{{( gettext "No" )}}{{ end }}
|
|
||||||
|
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue