From 7d79dc8e4b7ad5aa71a1469973f1cf72324131e1 Mon Sep 17 00:00:00 2001 From: Pablo Martin Date: Tue, 16 Apr 2024 16:07:25 +0200 Subject: [PATCH] contacts model and schema --- models/staging/xero/schema.yml | 171 +++++++++++++++++++++ models/staging/xero/stg_xero__contacts.sql | 52 +++++++ 2 files changed, 223 insertions(+) create mode 100644 models/staging/xero/schema.yml create mode 100644 models/staging/xero/stg_xero__contacts.sql diff --git a/models/staging/xero/schema.yml b/models/staging/xero/schema.yml new file mode 100644 index 0000000..ec6c99e --- /dev/null +++ b/models/staging/xero/schema.yml @@ -0,0 +1,171 @@ +version: 2 + +models: + - name: stg_xero__contacts + description: | + Xero contacts identify other parties we transact with: customers, suppliers, employees, etc. + + The most interesting contacts are our customers. + columns: + - name: id_contact + data_type: character varying + description: Xero's unique identifier for the contact. + + - name: account_number + data_type: character varying + description: A Superhog set identifier. For customers, this is Hubspot's Deal Id. + + - name: contact_name + data_type: character varying + description: The name for the customer. + + - name: is_customer + data_type: boolean + description: Flag that shows if the contact is a Superhog customer. + + - name: is_supplier + data_type: boolean + description: Flag that shows if the contact is a Superhog supplier. + + - name: tax_number + data_type: character varying + description: Tax number for this contact. + + - name: contact_first_name + data_type: character varying + description: "" + + - name: contact_last_name + data_type: character varying + description: "" + + - name: phones + data_type: jsonb + description: "" + + - name: website + data_type: character varying + description: "" + + - name: balances + data_type: jsonb + description: "" + + - name: discount + data_type: numeric + description: "" + + - name: addresses + data_type: jsonb + description: "" + + - name: attachments + data_type: jsonb + description: "" + + - name: email_addresses + data_type: character varying + description: "" + + - name: payment_terms + data_type: jsonb + description: "" + + - name: batch_payments + data_type: jsonb + description: "" + + - name: branding_theme + data_type: jsonb + description: "" + + - name: contact_groups + data_type: jsonb + description: "" + + - name: contact_number + data_type: character varying + description: "" + + - name: contact_status + data_type: character varying + description: "" + + - name: skyper_user_name + data_type: character varying + description: "" + + - name: contact_persons + data_type: jsonb + description: "" + + - name: has_attachments + data_type: boolean + description: "" + + - name: updated_at_utc + data_type: timestamp with time zone + description: "" + + - name: updated_date_utc + data_type: date + description: "" + + - name: xero_network_key + data_type: character varying + description: "" + + - name: default_currency_iso_4217 + data_type: character varying + description: | + The default currency used to interact with this contact. + + For customers, this is the currency we will usually use to invoice. + + - name: validation_errors + data_type: jsonb + description: "" + + - name: bank_account_details + data_type: character varying + description: "" + + - name: has_validation_errors + data_type: boolean + description: "" + + - name: tracking_category_name + data_type: character varying + description: "" + + - name: account_payable_tax_type + data_type: character varying + description: "" + + - name: tracking_category_option + data_type: character varying + description: "" + + - name: sales_default_account_code + data_type: character varying + description: "" + + - name: sales_tracking_categories + data_type: jsonb + description: "" + + - name: account_receivable_tax_type + data_type: character varying + description: "" + + - name: purchases_default_account_code + data_type: character varying + description: "" + + - name: purchases_tracking_categories + data_type: jsonb + description: "" + + - name: dwh_extracted_at_utc + data_type: timestamp with time zone + description: "" \ No newline at end of file diff --git a/models/staging/xero/stg_xero__contacts.sql b/models/staging/xero/stg_xero__contacts.sql new file mode 100644 index 0000000..f006e6e --- /dev/null +++ b/models/staging/xero/stg_xero__contacts.sql @@ -0,0 +1,52 @@ +with + raw_contacts as (select * from {{ source("xero", "contacts") }}), + stg_xero__contacts as ( + select + {{ adapter.quote("ContactID") }} as id_contact, + {{ adapter.quote("AccountNumber") }} as account_number, + {{ adapter.quote("Name") }} as contact_name, + {{ adapter.quote("IsCustomer") }} as is_customer, + {{ adapter.quote("IsSupplier") }} as is_supplier, + {{ adapter.quote("TaxNumber") }} as tax_number, + {{ adapter.quote("FirstName") }} as contact_first_name, + {{ adapter.quote("LastName") }} as contact_last_name, + {{ adapter.quote("Phones") }} as phones, + {{ adapter.quote("Website") }} as website, + {{ adapter.quote("Balances") }} as balances, + {{ adapter.quote("Discount") }} as discount, + {{ adapter.quote("Addresses") }} as addresses, + {{ adapter.quote("Attachments") }} as attachments, + {{ adapter.quote("EmailAddress") }} as email_addresses, + {{ adapter.quote("PaymentTerms") }} as payment_terms, + {{ adapter.quote("BatchPayments") }} as batch_payments, + {{ adapter.quote("BrandingTheme") }} as branding_theme, + {{ adapter.quote("ContactGroups") }} as contact_groups, + {{ adapter.quote("ContactNumber") }} as contact_number, + {{ adapter.quote("ContactStatus") }} as contact_status, + {{ adapter.quote("SkypeUserName") }} as skyper_user_name, + {{ adapter.quote("ContactPersons") }} as contact_persons, + {{ adapter.quote("HasAttachments") }} as has_attachments, + {{ adapter.quote("UpdatedDateUTC") }} as updated_at_utc, + cast({{ adapter.quote("UpdatedDateUTC") }} as date) as updated_date_utc, + {{ adapter.quote("XeroNetworkKey") }} as xero_network_key, + {{ adapter.quote("DefaultCurrency") }} as default_currency_iso_4217, + {{ adapter.quote("ValidationErrors") }} as validation_errors, + {{ adapter.quote("BankAccountDetails") }} as bank_account_details, + {{ adapter.quote("HasValidationErrors") }} as has_validation_errors, + {{ adapter.quote("TrackingCategoryName") }} as tracking_category_name, + {{ adapter.quote("AccountsPayableTaxType") }} as account_payable_tax_type, + {{ adapter.quote("TrackingCategoryOption") }} as tracking_category_option, + {{ adapter.quote("SalesDefaultAccountCode") }} + as sales_default_account_code, + {{ adapter.quote("SalesTrackingCategories") }} as sales_tracking_categories, + {{ adapter.quote("AccountsReceivableTaxType") }} + as account_receivable_tax_type, + {{ adapter.quote("PurchasesDefaultAccountCode") }} + as purchases_default_account_code, + {{ adapter.quote("PurchasesTrackingCategories") }} + as purchases_tracking_categories, + {{ adapter.quote("_airbyte_extracted_at") }} as dwh_extracted_at_utc + from raw_contacts + ) +select * +from stg_xero__contacts