with
    int_mtd_aggregated_metrics_by_deal as (
        select * from {{ ref("int_mtd_aggregated_metrics_by_deal") }}
    )

select
    -- PRIMARY KEY --
    m.date as date,
    m.id_deal as id_deal,
    m.metric as metric,

    -- TIME ATTRIBUTES --
    m.year as year,
    m.month as month,
    m.day as day,
    case when m.is_end_of_month then 1 else 0 end as is_end_of_month,
    case when m.is_current_month then 1 else 0 end as is_current_month,
    case
        when m.is_end_of_month_or_yesterday then 1 else 0
    end as is_end_of_month_or_yesterday,
    m.first_day_month as first_day_month,

    -- MAIN DEAL ATTRIBUTES --
    m.deal as deal,
    m.active_accommodations_per_deal_segmentation
    as active_accommodations_per_deal_segmentation,
    m.main_billing_country_iso_3_per_deal as main_billing_country_iso_3_per_deal,

    -- HUBSPOT ATTRIBUTES --
    m.account_manager as account_manager,

    -- DEAL BUSINESS SCOPE    
    m.business_scope as business_scope,

    -- DEAL LIFECYCLE --
    m.deal_lifecycle_state as deal_lifecycle_state,

    -- METRIC VALUES AND DISPLAY --
    m.order_by as order_by,
    m.number_format as number_format,
    m.value as value,
    m.previous_year_value as previous_year_value,
    m.relative_increment as relative_increment,
    m.relative_increment_with_sign_format as relative_increment_with_sign_format
from int_mtd_aggregated_metrics_by_deal m
where
    (
        (
            -- Not show current + previous month if the metric depends on
            -- invoicing cycle and it is before the 12th of the month, if it
            -- is the 12th of the month or after, only exclude the current
            -- month.
            m.display_exclusion = 'INVOICING'
            and {{ is_date_before_12th_of_previous_month("m.date") }}
        )
        or (
            -- Handle exclusion for Churn/MRR metrics: do not show them in the
            -- current month.
            m.display_exclusion = 'ONGOING_MONTH'
            and date_trunc('month', m.date) < date_trunc('month', current_date)
        )
        -- Keep all history for the rest of metrics
        or m.display_exclusion = 'NONE'
    )
