version: 1

job:
  name: netsuite-revenue-to-nexuscrm
  owner: data-platform

source:
  account_realm: "7429932"
  restlet_url_env: NETSUITE_REVENUE_RESTLET_URL
  consumer_key_env: NETSUITE_REVENUE_TBA_CONSUMER_KEY
  consumer_secret_env: NETSUITE_REVENUE_TBA_CONSUMER_SECRET
  token_key_env: NETSUITE_REVENUE_TBA_TOKEN_KEY
  token_secret_env: NETSUITE_REVENUE_TBA_TOKEN_SECRET
  saved_search_id: customsearch1710
  schema_version: netsuite-saved-search-export/v2
  report_schema_version: revenue-voucher-excel/v1
  transaction_type: Journal
  account_number_prefix: "6001"
  page_size: 500

# The only source of truth for the ordered 35-field business mapping. Candidate
# validation, payload hashing, NexusCRM payload construction, and fixture
# checks consume this list; never maintain a second header-to-field mapping.
mapping:
  - {header: Type, field: Transaction_Type__c, kind: text}
  - {header: Company, field: Company__c, kind: text}
  - {header: Date, field: Transaction_Date__c, kind: date}
  - {header: Document Number, field: Document_Number__c, kind: text}
  - {header: Period, field: Posting_Period__c, kind: text}
  - {header: Transaction Number, field: Transaction_Number__c, kind: text}
  - {header: Description, field: Description__c, kind: text}
  - {header: Account number, field: GL_Account_Number__c, kind: text}
  - {header: Account name, field: GL_Account_Name__c, kind: text}
  - {header: Currency, field: Transaction_Currency__c, kind: text}
  - {header: Transaction Amount, field: Transaction_Amount__c, kind: currency}
  - {header: Exchange Rate, field: Exchange_Rate__c, kind: number}
  - {header: Amount, field: Base_Amount__c, kind: currency}
  - {header: COST CENTER, field: Cost_Center_Code__c, kind: text}
  - {header: Cost Center（公式取）, field: Cost_Center_Formula__c, kind: text}
  - {header: Name, field: Entity_Name__c, kind: text}
  - {header: Account ID, field: Source_Customer_Account_Id__c, kind: text, admission_account_id: true}
  - {header: Management Reporting Item L1（公式取）, field: Mgmt_Report_L1_Formula__c, kind: text}
  - {header: Management Reporting Item L2（公式取）, field: Mgmt_Report_L2_Formula__c, kind: text}
  - {header: Management Reporting Item L1, field: Mgmt_Report_L1__c, kind: text}
  - {header: Management Reporting Item L2, field: Mgmt_Report_L2__c, kind: text}
  - {header: Department (no hierarchy), field: Department_No_Hierarchy__c, kind: text}
  - {header: First Level Department, field: First_Level_Department__c, kind: text}
  - {header: Trading Partner Name, field: Trading_Partner_Name__c, kind: text}
  - {header: Memo (Main), field: Main_Memo__c, kind: text}
  - {header: Customer Region, field: Customer_Region__c, kind: text}
  - {header: Order number, field: Order_Number__c, kind: text}
  - {header: Support Type, field: Support_Type__c, kind: text}
  - {header: Group COA, field: Group_COA__c, kind: text}
  - {header: Last Modified, field: Source_Transaction_Modified_At__c, kind: datetime}
  - {header: Line Last Modified, field: Source_Line_Modified_At__c, kind: datetime}
  - {header: Account Type, field: GL_Account_Type__c, kind: text}
  - {header: Product, field: Product_Name__c, kind: text}
  - {header: cloud provider, field: Cloud_Provider__c, kind: text}
  - {header: Project, field: Project__c, kind: text}

target:
  project: gcp-digital-bi
  environment: production
  base_url_env: NEXUSCRM_REVENUE_BASE_URL
  client_id_env: NEXUSCRM_REVENUE_CLIENT_ID
  client_secret_env: NEXUSCRM_REVENUE_CLIENT_SECRET
  api_version: v63.0
  object: NetSuite_Revenue_Voucher_Line__c
  name_field: Name
  external_key_field: NetSuite_Source_Key__c
  active_flag_field: Is_Source_Active__c
  account:
    object: Account
    id_field: Id
    account_id_field: Account_ID__c
    active_flag_field: IsDeleted
    relation_field: CRM_Account__c
  controls:
    account_realm: NetSuite_Account_Realm__c
    transaction_id: NetSuite_Transaction_Id__c
    line_unique_key: NetSuite_Line_Unique_Key__c
    accounting_book_id: NetSuite_Accounting_Book_Id__c
    posting_period_id: NetSuite_Posting_Period_Id__c
    search_id: Source_Search_Id__c
    schema_version: Source_Schema_Version__c
    payload_hash: Source_Payload_Hash__c
    first_seen_run_id: First_Seen_Run_Id__c
    first_seen_at: First_Seen_At__c
    last_seen_run_id: Last_Seen_Run_Id__c
    last_seen_at: Last_Seen_At__c
    is_source_active: Is_Source_Active__c
  protected_system_fields:
    - Id
    - OwnerId
    - CreatedById
    - LastModifiedById
    - CreatedDate
    - LastModifiedDate
    - SystemModstamp
    - IsDeleted

candidate:
  gcs_uri_env: NETSUITE_REVENUE_CANDIDATE_GCS_URI
  local_directory: .runs/netsuite-revenue-to-nexuscrm

execution:
  max_http_attempts: 4
  account_lookup_batch_size: 500
  crm_upsert_batch_size: 200
  soft_deactivation_enabled: false
