view: vendor_snowflake {
  sql_table_name: royalty_accounting_reporting.prod.vw_dim_abacus_ar_vendor ;;

  dimension: api_vendor_id {
    primary_key: yes
    type: number
    sql: ${TABLE}.api_vendor_id ;;
  }

  dimension: additional_id {
    type: number
    sql: ${TABLE}.additional_id ;;
  }

  dimension: allow_orchard_credit {
    type: string
    sql: ${TABLE}.allow_orchard_credit ;;
  }

  dimension: assigned_to {
    type: number
    sql: ${TABLE}.assigned_to ;;
  }

  dimension: quarterback_label_manager {
    type: number
    sql: ${TABLE}.quarterback_label_manager ;;
    hidden: yes
  }

  dimension: bademail {
    type: string
    sql: ${TABLE}.bademail ;;
  }

  dimension: ca_rep {
    type: number
    sql: ${TABLE}.ca_rep ;;
  }

  dimension: checks {
    type: string
    sql: ${TABLE}.checks ;;
  }

  dimension: company {
    type: string
    sql: ${TABLE}.company ;;
  }

  dimension: contact_email {
    type: string
    sql: ${TABLE}.contact_email ;;
  }

  dimension: country {
    type: number
    sql: ${TABLE}.country ;;
  }

  dimension_group: date_created {
    type: time
    timeframes: [date, week, month]
    convert_tz: no
    sql: ${TABLE}.date_created ;;
  }

  dimension_group: date_signed {
    type: time
    timeframes: [date, week, month, quarter]
    convert_tz: no
    sql: ${TABLE}.date_signed ;;
  }

  dimension: encrypted_foreign_tin {
    type: string
    sql: ${TABLE}.encrypted_foreign_tin ;;
  }

  dimension: encrypted_tin {
    type: string
    sql: ${TABLE}.encrypted_tin ;;
  }

  dimension: has_encrypted_foreign_tin {
    type: yesno
    sql: CASE WHEN
          ${TABLE}.encrypted_foreign_tin IS NULL
            OR ${TABLE}.encrypted_foreign_tin = ''
          THEN FALSE ELSE TRUE END ;;
  }

  dimension: has_encrypted_tin {
    type: yesno
    sql: CASE WHEN
          ${TABLE}.encrypted_tin IS NULL
            OR ${TABLE}.encrypted_tin = ''
          THEN FALSE ELSE TRUE END ;;
  }

  dimension: choose_tin {
    type: string
    sql:
      IFF(${TABLE}.encrypted_foreign_tin IS NULL
        OR ${TABLE}.encrypted_foreign_tin = '',
        ${TABLE}.encrypted_tin,
        ${TABLE}.encrypted_foreign_tin);;
  }

  dimension: est_total_releases {
    type: number
    sql: ${TABLE}.est_total_releases ;;
  }

  dimension: est_total_tracks {
    type: number
    sql: ${TABLE}.est_total_tracks ;;
  }

  dimension: foreign_tax_id {
    type: string
    sql: ${TABLE}.foreign_tax_id ;;
  }

  dimension: is_distributor {
    type: string
    sql: ${TABLE}.is_distributor ;;
  }

  dimension: is_login_null {
    type: string
    sql: ${TABLE}.is_login_null ;;
  }

  dimension: is_owned {
    type: string
    sql: ${TABLE}.is_owned ;;
  }

  dimension: join_vendor_id {
    type: number
    sql: ${TABLE}.join_vendor_id ;;
  }

  dimension: label_identifier {
    type: string
    sql: ${TABLE}.label_identifier ;;
  }

  dimension: label_summary {
    type: string
    sql: ${TABLE}.label_summary ;;
  }

  dimension: language {
    type: string
    sql: ${TABLE}.language ;;
  }

  dimension: last_modified_by {
    type: number
    sql: ${TABLE}.last_modified_by ;;
  }

  dimension_group: last_update {
    type: time
    timeframes: [time, date, week, month]
    sql: ${TABLE}.last_update ;;
  }

  dimension: login {
    type: string
    sql: ${TABLE}.login ;;
  }

  dimension: monthly_accounting {
    type: string
    sql: ${TABLE}.monthly_accounting ;;
  }

  dimension: myspace_url {
    type: string
    sql: ${TABLE}.myspace_url ;;
  }

  dimension: name {
    type: string
    sql: ${TABLE}.name ;;
  }

  dimension: vendor_name {
    type: string
    sql: IFF(${company} IS NULL OR ${company}  = '',  ${name}, ${company})
      ;;
  }
  dimension: vendor_name_upper_case {
    view_label: "Custom Fields"
    label: "Vendor Name"
    type: string
    sql: UPPER(${vendor_name});;
  }

  dimension: newsletter {
    type: string
    sql: ${TABLE}.newsletter ;;
  }

  dimension: number_format {
    type: string
    sql: ${TABLE}.number_format ;;
  }

  dimension: old_passwords {
    type: string
    sql: ${TABLE}.old_passwords ;;
  }

  dimension: original_owner {
    type: string
    sql: ${TABLE}.original_owner ;;
  }

  dimension: overall_priority {
    type: number
    sql: ${TABLE}.overall_priority ;;
  }

  dimension: owner {
    type: string
    sql: ${TABLE}.owner ;;
  }

  dimension: passwords {
    type: string
    sql: ${TABLE}.passwords ;;
  }

  dimension: payment_type {
    type: string
    sql: ${TABLE}.payment_type ;;
  }

  dimension: primary_genre {
    type: number
    sql: ${TABLE}.primary_genre ;;
  }

  dimension: priority {
    type: number
    sql: ${TABLE}.priority ;;
  }

  dimension: recurring_payment_threshold {
    type: number
    sql: ${TABLE}.recurring_payment_threshold ;;
  }

  dimension: referral {
    type: string
    sql: ${TABLE}.referral ;;
  }

  dimension: region {
    type: number
    sql: ${TABLE}.region ;;
  }

  dimension: show_release_builder {
    type: string
    sql: ${TABLE}.show_release_builder ;;
  }

  dimension: ssn {
    type: string
    sql: ${TABLE}.ssn ;;
  }

  dimension: status {
    type: string
    sql: ${TABLE}.status ;;
  }

  dimension: tax_form_received {
    type: string
    sql: ${TABLE}.tax_form_received ;;
  }

  dimension: tax_id_country {
    type: number
    #value_format_name: id
    sql: ${TABLE}.tax_id_country ;;
  }

  dimension: tax_id_type {
    type: string
    sql: ${TABLE}.tax_id_type ;;
  }

  dimension: tax_name {
    type: string
    sql: ${TABLE}.tax_name ;;
  }

  dimension: token {
    type: string
    sql: ${TABLE}.token ;;
  }

  dimension: vendor_id {
    label: "Label ID"
    type: number
    sql: ${TABLE}.vendor_id ;;
    view_label: "Vendor"
  }

  dimension_group: w8_tax_form {
    type: time
    timeframes: [date, week, month]
    convert_tz: no
    sql: ${TABLE}.w8_tax_form_date ;;
  }

  dimension: website {
    type: string
    sql: ${TABLE}.website ;;
  }

  dimension_group: wel_email_send {
    type: time
    timeframes: [time, date, week, month]
    sql: ${TABLE}.wel_email_send_date ;;
  }

  dimension: wel_email_sender {
    type: number
    sql: ${TABLE}.wel_email_sender ;;
  }

  dimension: wire_info {
    type: string
    sql: ${TABLE}.wire_info ;;
  }

  measure: count {
    type: count
    hidden: yes
    drill_fields: [detail*]
  }

  measure: count_vendors {
    description: "Number of Distinct Vendors"
    type: count_distinct
    sql: ${TABLE}.vendor_id ;;
  }

  # ----- Sets of fields for drilling ------
  set: detail {
    fields: [
      api_vendor_id,
      name,
      tax_name,
      vendor.name,
      vendor.tax_name,
      vendor.api_vendor_id,
      api_artist_custom_fields.count,
      api_invoices.count,
      api_label_custom_fields.count,
      artist_info.count,
      artist_info_tmp.count,
      booked_vendor_contract_snapshot.count,
      carveout_change_vendor.count,
      catalog.count,
      cd_receive.count,
      credit_card_info.count,
      dms_links_email.count,
      dra_optout_responses.count,
      ex_a_artist_info.count,
      fc_vendor_accounting.count,
      insertedmr_703_prs_backfill.count,
      inventory_return.count,
      label_sales_adjustment.count,
      marketplace_terms_and_conditions_history.count,
      oms_track.count,
      owner_checkspaid.count,
      pnl_sales.count,
      ppb_trashlist.count,
      project.count,
      proposal_response.count,
      prospective_label.count,
      publishing_admin_contract.count,
      red_backup_vendor_territory_contract_4_9_2013.count,
      red_essential_label_mapping.count,
      reorder_new.count,
      replacedmr_703_prs_backfill.count,
      rollbackdig2812_enable_project_mode.count,
      rollbackmr_703_prs_backfill.count,
      rollbackmr_792_project_mode.count,
      rollbackplat204_foreign_tin.count,
      rollbackvideo_dashboard_item.count,
      rollback_mov1654_vendor_restricted_features.count,
      royalty_collection_contract.count,
      soundscan_codes.count,
      soundscan_vendor_exclusion.count,
      subaccount.count,
      sync_admin_contract.count,
      temp_dig_sales_statements.count,
      temp_project_pre_backfill.count,
      temp_project_with_bad_subaccount.count,
      test_vendors.count,
      travelex.count,
      tv_series.count,
      ugc_policy.count,
      vendor.count,
      vendor_97.count,
      vendor_accounting.count,
      vendor_accounting_flat.count,
      vendor_checkspaid.count,
      vendor_checkspaid_tmp.count,
      vendor_contract.count,
      vendor_dms_contract.count,
      vendor_dms_master_contract.count,
      vendor_icon.count,
      vendor_logo.count,
      vendor_message.count,
      vendor_notes.count,
      vendor_payment_interval_history.count,
      vendor_proposed_dms_contract.count,
      vendor_proposed_dms_master_contract.count,
      vendor_proposed_term.count,
      vendor_proposed_territory_contract.count,
      vendor_restricted_features.count,
      vendor_territory_contract.count,
      vendor_tmp.count,
      vendor_tmp_notes.count,
      vend_contact.count,
      video_dashboard_item.count,
      vw_active_vendor_contract.count,
      vw_product.count,
      welcome_email.count,
      youtube_audit.count,
      youtube_audit_log.count,
      youtube_channel.count
    ]
  }
}