Merged PR 4102: Athena price update

# Description

This PR handles the new price set for Athena in Nov.24, as indicated by Nila from Finance (see more detailes in linked story). Price has gone from 2.0GBP to 2.1GBP.

Note that I have manually checked the correctness of the figures, I'm highly confident on the quality of the PR. All figures stay the same in old and new version of to the cutoff date (`2024-11-01T00:00:00Z`). Then, after that date, the 10 cents extra show appropiately.

# Checklist

- [X] The edited models and dependants run properly with production data.
- [X] The edited models are sufficiently documented.
- [X] The edited models contain PK tests, and I've ran and passed them.
- [X] I have checked for DRY opportunities with other models and docs.
- [X] I've picked the right materialization for the affected models.

# Other

- [ ] Check if a full-refresh is required after this PR is merged.

Related work items: #26475
This commit is contained in:
Pablo Martín 2025-01-17 16:34:29 +00:00 committed by Oriol Roqué Paniagua
parent 53f9c1e08f
commit 3f3b99cdf6
3 changed files with 33 additions and 4 deletions

View file

@ -1,8 +1,9 @@
{% set ok_status = "Approved" %} {% set ok_status = "Approved" %}
-- 2GBP/booked night if booking is approved, to be charged on checkout
{% set cost_per_night = 2 %}
with with
int_athena__verifications as (select * from {{ ref("int_athena__verifications") }}), int_athena__verifications as (select * from {{ ref("int_athena__verifications") }}),
stg_seed__athena_price_history as (
select * from {{ ref("stg_seed__athena_price_history") }}
),
-- CTE to rank verifications by updated_at_utc per id_booking -- CTE to rank verifications by updated_at_utc per id_booking
ranked_verifications as ( ranked_verifications as (
select select
@ -21,14 +22,17 @@ select
-- Charge for 1 night if number_nights = 0 -- Charge for 1 night if number_nights = 0
case case
when v.number_nights = 0 and v.verification_status = '{{ ok_status }}' when v.number_nights = 0 and v.verification_status = '{{ ok_status }}'
then {{ cost_per_night }} then ph.fee_per_night_gbp
when v.verification_status = '{{ ok_status }}' when v.verification_status = '{{ ok_status }}'
then v.number_nights * {{ cost_per_night }} then v.number_nights * ph.fee_per_night_gbp
else 0 else 0
end as ok_status_fee_in_gbp, end as ok_status_fee_in_gbp,
v.created_date_utc, v.created_date_utc,
v.checkout_date_utc v.checkout_date_utc
from ranked_verifications v from ranked_verifications v
left join
stg_seed__athena_price_history ph
on v.checkout_date_utc between ph.start_at_utc and ph.end_at_utc
where where
-- Select only the most recent verification for each id_booking -- Select only the most recent verification for each id_booking
v.rn = 1 v.rn = 1

View file

@ -152,3 +152,25 @@ seeds:
description: | description: |
How much Superhog decided to pay out to the partner as part of this How much Superhog decided to pay out to the partner as part of this
claim, defined in the settlement currency. claim, defined in the settlement currency.
- name: stg_seed__athena_price_history
description: |
A price history for the Athena fee per night.
Yes, I know. It's terrible that we keep this here. Oh boy, how I wish it
wasn't like this!
columns:
- name: start_at_utc
data_type: timestamp
description: |
The start of the time range where this record is applicable.
- name: end_at_utc
data_type: timestamp
description: The end of the time range where this record is applicable.
- name: fee_per_night_gbp
data_type: numeric
description: |
How much we charge per night in this time range.

View file

@ -0,0 +1,3 @@
start_at_utc,end_at_utc,fee_per_night_gbp
2020-01-01T00:00:00Z,2024-11-01T00:00:00Z,2.0
2024-11-01T00:00:00Z,2099-12-31T00:00:00Z,2.1
1 start_at_utc end_at_utc fee_per_night_gbp
2 2020-01-01T00:00:00Z 2024-11-01T00:00:00Z 2.0
3 2024-11-01T00:00:00Z 2099-12-31T00:00:00Z 2.1