Modified model to only have fees

This commit is contained in:
Joaquin Ossa 2024-09-03 12:15:14 +02:00
parent 906bccce0e
commit a99d4f622f
2 changed files with 96 additions and 23 deletions

View file

@ -7,25 +7,47 @@ with
int_edeposit__verifications as (
select * from {{ ref("int_edeposit__verifications") }}
),
stg_core__edeposit_users as (select * from {{ ref("stg_core__edeposit_users") }}),
stg_xedotcom__exchange_rates as (
select * from {{ ref("stg_xedotcom__exchange_rates") }}
),
edeposit_records as (
select
id_verification,
id_user_partner,
id_booking,
is_cancelled,
creation_at_utc,
v.id_verification,
v.id_user_partner,
v.id_booking,
v.currency,
er.rate,
v.is_cancelled,
v.creation_at_utc,
case
when verification_status in {{ ok_status }}
then nightly_fee_local * number_nights
when v.verification_status in {{ ok_status }}
then v.nightly_fee_local * v.number_nights
else 0
end as ok_status_fee,
end as ok_status_fee_in_txn_currency,
case
when verification_status = '{{ rejected_status }}'
when v.verification_status in {{ ok_status }}
then er.rate * v.nightly_fee_local * v.number_nights
else 0
end as ok_status_fee_in_gbp,
case
when v.verification_status = '{{ rejected_status }}'
then {{ rejected_fee }}
else 0
end as rejected_fee,
to_char(checkout_at_utc, 'YYYY-MM') as year_month_checkout
from int_edeposit__verifications
end as rejected_fee_in_txn_currency,
case
when v.verification_status = '{{ rejected_status }}'
then er.rate * {{ rejected_fee }}
else 0
end as rejected_fee_in_gbp,
to_char(v.checkout_at_utc, 'YYYY-MM') as year_month_checkout
from int_edeposit__verifications v
inner join stg_core__edeposit_users eu on v.id_user_partner = eu.id_user_partner
inner join
stg_xedotcom__exchange_rates er
on er.from_currency = eu.currency
and er.rate_date_utc = v.checkout_date_utc
and er.to_currency = 'GBP'
where version = 'V2'
),
monthly_cancellation_threshold as (
@ -44,13 +66,21 @@ with
)
select
id_verification,
ok_status_fee,
rejected_fee,
currency,
ok_status_fee_in_txn_currency,
ok_status_fee_in_gbp,
rejected_fee_in_txn_currency,
rejected_fee_in_gbp,
case
when ct.is_cancellation_threshold_surpassed is true
then {{ cancellation_fee }}
else 0
end as cancelled_fee
end as cancelled_fee_in_txn_currency,
case
when ct.is_cancellation_threshold_surpassed is true
then rate * {{ cancellation_fee }}
else 0
end as cancelled_fee_in_gbp
from edeposit_records er
left join
monthly_cancellation_threshold ct

View file

@ -211,7 +211,8 @@ models:
"This table shows all fee charges per verification for E-deposit.
Cancellation fee is charged when the monthly rate of cancelled bookings over
total booking of the partner surpasses the threshold (currently set at 0.05).
Both cancellation and rejection fees are set to 0.25 though it might change"
Both cancellation and rejection fees are set to 0.25 though it might change.
Fees are both in the currency used by the user and in GBP"
columns:
- name: id_verification
data_type: text
@ -220,20 +221,62 @@ models:
- unique
- not_null
- name: ok_status_fee
data_type: numeric
description: "fee charged for approved or flagged verifications"
- name: currency
data_type: text
description: "currency in which the transaction actually happened"
tests:
- not_null
- name: rejected_fee
- name: ok_status_fee_in_txn_currency
data_type: numeric
description: "fee charged for rejected verifications"
description: "fee charged in used currency for approved or flagged verifications"
tests:
- not_null
- dbt_expectations.expect_column_values_to_be_between:
min_value: 0
strictly: false
- name: cancelled_fee
- name: ok_status_fee_in_gbp
data_type: numeric
description: "fee charged for cancelled verifications"
description: "fee charged in gbp for approved or flagged verifications"
tests:
- not_null
- dbt_expectations.expect_column_values_to_be_between:
min_value: 0
strictly: false
- name: rejected_fee_in_txn_currency
data_type: numeric
description: "fee charged in used currency for rejected verifications"
tests:
- not_null
- dbt_expectations.expect_column_values_to_be_between:
min_value: 0
strictly: false
- name: rejected_fee_in_gbp
data_type: numeric
description: "fee charged in gbp for rejected verifications"
tests:
- not_null
- dbt_expectations.expect_column_values_to_be_between:
min_value: 0
strictly: false
- name: cancelled_fee_in_txn_currency
data_type: numeric
description: "fee charged in used currency for cancelled verifications"
tests:
- not_null
- dbt_expectations.expect_column_values_to_be_between:
min_value: 0
strictly: false
- name: cancelled_fee_in_gbp
data_type: numeric
description: "fee charged in gbp for cancelled verifications"
tests:
- not_null
- dbt_expectations.expect_column_values_to_be_between:
min_value: 0
strictly: false