2025-03-19 08:19:20 +00:00
|
|
|
with
|
|
|
|
|
stg_xero__contacts as (select * from {{ ref("stg_xero__contacts") }}),
|
|
|
|
|
contact_with_deal as (
|
|
|
|
|
select
|
|
|
|
|
id_contact,
|
|
|
|
|
case
|
|
|
|
|
when account_number ~ '^[0-9]{10,11}$' then account_number else null
|
|
|
|
|
end::text as id_deal,
|
|
|
|
|
updated_at_utc
|
|
|
|
|
from stg_xero__contacts
|
|
|
|
|
),
|
|
|
|
|
deals_ranked_per_updated_at_utc as (
|
|
|
|
|
select
|
|
|
|
|
id_contact,
|
|
|
|
|
id_deal,
|
|
|
|
|
row_number() over (
|
|
|
|
|
partition by id_deal order by updated_at_utc desc
|
|
|
|
|
) as deal_rank_per_updated_at_utc
|
|
|
|
|
from contact_with_deal
|
|
|
|
|
-- Ensuring id deal is set
|
|
|
|
|
where id_deal is not null
|
|
|
|
|
)
|
2024-05-13 16:09:56 +02:00
|
|
|
select
|
2025-03-19 08:19:20 +00:00
|
|
|
c.id_contact,
|
|
|
|
|
c.account_number,
|
|
|
|
|
cwd.id_deal,
|
|
|
|
|
case
|
|
|
|
|
when cwd.id_deal is null then true else false
|
|
|
|
|
end as is_contact_missing_id_deal,
|
|
|
|
|
-- The following ensures is the last updated contact that actually contains a deal
|
|
|
|
|
case
|
|
|
|
|
when dr.deal_rank_per_updated_at_utc = 1 then true else false
|
|
|
|
|
end as is_latest_updated_contact_per_deal,
|
|
|
|
|
c.contact_name,
|
|
|
|
|
c.is_customer,
|
|
|
|
|
c.is_supplier,
|
|
|
|
|
c.tax_number,
|
|
|
|
|
c.contact_first_name,
|
|
|
|
|
c.contact_last_name,
|
|
|
|
|
c.phones,
|
|
|
|
|
c.website,
|
|
|
|
|
c.balances,
|
|
|
|
|
c.discount,
|
|
|
|
|
c.addresses,
|
|
|
|
|
c.attachments,
|
|
|
|
|
c.email_addresses,
|
|
|
|
|
c.payment_terms,
|
|
|
|
|
c.batch_payments,
|
|
|
|
|
c.branding_theme,
|
|
|
|
|
c.contact_groups,
|
|
|
|
|
c.contact_number,
|
|
|
|
|
c.contact_status,
|
|
|
|
|
c.skyper_user_name,
|
|
|
|
|
c.contact_persons,
|
|
|
|
|
c.has_attachments,
|
|
|
|
|
c.updated_at_utc,
|
|
|
|
|
c.updated_date_utc,
|
|
|
|
|
c.xero_network_key,
|
|
|
|
|
c.default_currency_iso_4217,
|
|
|
|
|
c.validation_errors,
|
|
|
|
|
c.bank_account_details,
|
|
|
|
|
c.has_validation_errors,
|
|
|
|
|
c.tracking_category_name,
|
|
|
|
|
c.account_payable_tax_type,
|
|
|
|
|
c.tracking_category_option,
|
|
|
|
|
c.sales_default_account_code,
|
|
|
|
|
c.sales_tracking_categories,
|
|
|
|
|
c.account_receivable_tax_type,
|
|
|
|
|
c.purchases_default_account_code,
|
|
|
|
|
c.purchases_tracking_categories,
|
|
|
|
|
c.dwh_extracted_at_utc
|
|
|
|
|
from stg_xero__contacts c
|
|
|
|
|
left join contact_with_deal cwd on c.id_contact = cwd.id_contact
|
|
|
|
|
left join deals_ranked_per_updated_at_utc dr on c.id_contact = dr.id_contact
|