refactor into guest driven and host driven
This commit is contained in:
parent
578ef9b0f3
commit
3f99cdc181
1 changed files with 10 additions and 99 deletions
|
|
@ -21,97 +21,9 @@ with
|
|||
int_core__payaway_per_month_user as (
|
||||
select * from {{ ref("int_core__payaway_per_month_user") }}
|
||||
),
|
||||
fee_vat_details as (
|
||||
select
|
||||
vtp.id_verification_to_payment,
|
||||
coalesce(vat.vat_rate, 0) as vat_rate,
|
||||
true as is_service_subject_to_vat,
|
||||
case
|
||||
when vat.vat_rate = 0
|
||||
then false
|
||||
when gu.billing_country_iso_3 is null
|
||||
then false
|
||||
when vat.vat_rate < 1 and vat.vat_rate > 0
|
||||
then true
|
||||
else false
|
||||
end as is_vat_taxed,
|
||||
(gu.billing_country_iso_3 is null) as is_missing_user_country,
|
||||
(
|
||||
gu.billing_country_iso_3 is not null and vat.alpha_3 is null
|
||||
) as is_missing_vat_rate_for_country,
|
||||
(gu.is_deleted = true) as are_user_details_deleted,
|
||||
-- This final case isolates null VAT rates that are not caused
|
||||
-- by the previous columns. The idea is: if any of the previous
|
||||
-- have happened, that's ok because there are known exceptions.
|
||||
-- But if the VAT rate is missing and it's not for any of those
|
||||
-- reasons, we have some unhandled issue.
|
||||
case
|
||||
when gu.billing_country_iso_3 is null
|
||||
then false
|
||||
when gu.is_deleted = true
|
||||
then false
|
||||
when gu.billing_country_iso_3 is not null and vat.alpha_3 is null
|
||||
then false
|
||||
when vat.vat_rate is null
|
||||
then true
|
||||
else false
|
||||
end as is_missing_vat_details_without_known_cause
|
||||
from stg_core__verification_to_payment vtp
|
||||
left join
|
||||
stg_core__verification_payment_type vpt
|
||||
on vtp.id_verification_payment_type = vpt.id_verification_payment_type
|
||||
left join int_core__unified_user gu on vtp.id_guest_user = gu.id_user
|
||||
left join
|
||||
stg_seed__guest_services_vat_rates_by_country vat
|
||||
on gu.billing_country_iso_3 = vat.alpha_3
|
||||
where vpt.verification_payment_type = 'Fee'
|
||||
),
|
||||
cih_vat_details as (
|
||||
select
|
||||
vtp.id_verification_to_payment,
|
||||
coalesce(vat.vat_rate, 0) as vat_rate,
|
||||
true as is_service_subject_to_vat,
|
||||
case
|
||||
when vat.vat_rate = 0
|
||||
then false
|
||||
when gu.billing_country_iso_3 is null
|
||||
then false
|
||||
when vat.vat_rate < 1 and vat.vat_rate > 0
|
||||
then true
|
||||
else false
|
||||
end as is_vat_taxed,
|
||||
(gu.billing_country_iso_3 is null) as is_missing_user_country,
|
||||
(
|
||||
gu.billing_country_iso_3 is not null and vat.alpha_3 is null
|
||||
) as is_missing_vat_rate_for_country,
|
||||
(gu.is_deleted = true) as are_user_details_deleted,
|
||||
-- This final case isolates null VAT rates that are not caused
|
||||
-- by the previous columns. The idea is: if any of the previous
|
||||
-- have happened, that's ok because there are known exceptions.
|
||||
-- But if the VAT rate is missing and it's not for any of those
|
||||
-- reasons, we have some unhandled issue.
|
||||
case
|
||||
when gu.billing_country_iso_3 is null
|
||||
then false
|
||||
when gu.is_deleted = true
|
||||
then false
|
||||
when gu.billing_country_iso_3 is not null and vat.alpha_3 is null
|
||||
then false
|
||||
when vat.vat_rate is null
|
||||
then true
|
||||
else false
|
||||
end as is_missing_vat_details_without_known_cause
|
||||
from stg_core__verification_to_payment vtp
|
||||
left join
|
||||
stg_core__verification_payment_type vpt
|
||||
on vtp.id_verification_payment_type = vpt.id_verification_payment_type
|
||||
left join int_core__unified_user gu on vtp.id_guest_user = gu.id_user
|
||||
left join
|
||||
stg_seed__guest_services_vat_rates_by_country vat
|
||||
on gu.billing_country_iso_3 = vat.alpha_3
|
||||
where vpt.verification_payment_type = 'CheckInCover'
|
||||
),
|
||||
sh_waiver_vat_details as (
|
||||
guest_driven_vat_details as (
|
||||
-- This CTE contains the logic that applies to services where VAT rate
|
||||
-- is determined by the guest's country.
|
||||
select
|
||||
vtp.id_verification_to_payment,
|
||||
coalesce(vat.vat_rate, 0) as vat_rate,
|
||||
|
|
@ -163,9 +75,14 @@ with
|
|||
on vr.id_user_host = pamu.id_user_host
|
||||
and vtp.payment_due_at_utc
|
||||
between pamu.active_in_month_start_date_utc and active_in_month_end_date_utc
|
||||
where vpt.verification_payment_type = 'Waiver' and pamu.id_payaway_plan is null
|
||||
where
|
||||
(vpt.verification_payment_type = 'Waiver' and pamu.id_payaway_plan is null)
|
||||
or vpt.verification_payment_type = 'CheckInCover'
|
||||
or vpt.verification_payment_type = 'Fee'
|
||||
),
|
||||
host_waiver_vat_details as (
|
||||
-- This CTE contains the logic that applies to services where VAT rate
|
||||
-- is determined by the host's country.
|
||||
select
|
||||
vtp.id_verification_to_payment,
|
||||
case
|
||||
|
|
@ -303,13 +220,7 @@ left join
|
|||
left join
|
||||
(
|
||||
select *
|
||||
from fee_vat_details
|
||||
union all
|
||||
select *
|
||||
from cih_vat_details
|
||||
union all
|
||||
select *
|
||||
from sh_waiver_vat_details
|
||||
from guest_driven_vat_details
|
||||
union all
|
||||
select *
|
||||
from host_waiver_vat_details
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue