{% set resolutions_host_payment_account_name = "('RESOLUTIONS - HOST PAYMENT')" %}
{% set relevant_transaction_status = "('AUTHORISED')" %}

{{ config(materialized="table", unique_key=["date", "id_deal", "business_scope"]) }}
select
    -- Unique Key --
    ixbt.transaction_date_utc as date,
    coalesce(ixc.id_deal, 'UNSET') as id_deal,
    case
        when ikdd.client_type = 'API'
        then 'API'
        -- We will assume that any host resolution payment happening in the same month
        -- or after the user has been created in the New Dash is considered as New
        -- Dash. This might not be 100% accurate, but it's a reasonable assumption.
        when ikdd.client_type = 'PLATFORM'
        then
            case
                when
                    icnddsd.id_deal is not null
                    and date_trunc('month', ixbt.transaction_date_utc)::date
                    >= date_trunc(
                        'month', icnddsd.min_user_in_new_dash_since_date_utc
                    )::date
                    and ixbt.transaction_date_utc
                    >= date({{ var("new_dash_first_invoicing_date") }})
                then 'New Dash'
                else 'Old Dash'
            end
        else 'UNSET'
    end as business_scope,
    -- Dimensions --
    coalesce(
        ikdd.main_billing_country_iso_3_per_deal, 'UNSET'
    ) as main_billing_country_iso_3_per_deal,
    coalesce(
        icmas.active_accommodations_per_deal_segmentation, 'UNSET'
    ) as active_accommodations_per_deal_segmentation,
    -- Metrics --
    sum(ixbtli.line_amount_wo_taxes_in_gbp) as xero_host_resolution_amount_paid_in_gbp,
    count(distinct ixbt.id_bank_transaction) as xero_host_resolution_payment_count
from {{ ref("int_xero__bank_transactions") }} as ixbt
inner join
    {{ ref("int_xero__bank_transaction_line_items") }} as ixbtli
    on ixbt.id_bank_transaction = ixbtli.id_bank_transaction
    and upper(ixbtli.account_name) in {{ resolutions_host_payment_account_name }}
    and upper(ixbt.transaction_status) in {{ relevant_transaction_status }}
left join {{ ref("int_xero__contacts") }} as ixc on ixc.id_contact = ixbt.id_contact
left join {{ ref("int_kpis__dimension_deals") }} as ikdd on ixc.id_deal = ikdd.id_deal
left join
    {{ ref("int_kpis__dimension_daily_accommodation") }} as icmas
    on ixc.id_deal = icmas.id_deal
    and ixbt.transaction_date_utc = icmas.date
left join
    {{ ref("int_core__new_dash_deal_since_date") }} as icnddsd
    on ixc.id_deal = icnddsd.id_deal
group by 1, 2, 3, 4, 5
