mirror of
https://gitlab.com/cief-data/dbt_cloud.git
synced 2026-08-19 04:14:00 +00:00
Add Business Term status
This commit is contained in:
@@ -1,3 +1,23 @@
|
||||
-- VARIABLES
|
||||
{% set var_service_type = [
|
||||
'1688 PAYMENT',
|
||||
'1 DAY TRANSFER',
|
||||
'3 DAYS TRANSFER',
|
||||
'Enterprise to Enterprise 公打公'] %}
|
||||
|
||||
{% set var_working_days_including_base_date = [
|
||||
'add_1_working_day_included_base_date',
|
||||
'add_1_working_day_included_base_date',
|
||||
'add_3_working_day_included_base_date',
|
||||
'add_7_working_day_included_base_date'] %}
|
||||
|
||||
{% set var_working_days_excluding_base_date = [
|
||||
'add_1_working_day_excluded_base_date',
|
||||
'add_1_working_day_excluded_base_date',
|
||||
'add_3_working_day_excluded_base_date',
|
||||
'add_7_working_day_excluded_base_date'] %}
|
||||
|
||||
|
||||
-- IMPORT
|
||||
WITH orders AS (
|
||||
SELECT * FROM {{ ref('fct_exchange__transaction_orders') }}
|
||||
@@ -25,6 +45,8 @@ fct_and_dim_joins AS (
|
||||
orders.booking_id,
|
||||
orders.booking_marking_id,
|
||||
orders.company_id,
|
||||
orders.transaction_status,
|
||||
orders.document_status,
|
||||
|
||||
companies.name AS company_name,
|
||||
companies.company_marking_id AS company_marking_id,
|
||||
@@ -40,6 +62,7 @@ fct_and_dim_joins AS (
|
||||
companies.has_wallet AS company_has_wallet,
|
||||
companies.latitude AS company_latitude,
|
||||
companies.longitude AS company_longitude,
|
||||
companies.company_created_datetime AS company_created_datetime,
|
||||
|
||||
orders.user_id,
|
||||
orders.bank_id,
|
||||
@@ -91,63 +114,56 @@ fct_and_dim_joins AS (
|
||||
|
||||
-- Estimated delivery datetime based on CIEF internal SLA (cutoff time 4pm)
|
||||
CASE
|
||||
WHEN orders.order_created_datetime >= '2023-01-01' AND orders.service_type = '1 DAY TRANSFER' AND DATE_PART(HOUR, orders.order_pending_verification_datetime) < 16
|
||||
THEN TO_TIMESTAMP(order_created_dates.add_1_working_day_included_base_date || ' 23:59:59 +08:00')
|
||||
WHEN orders.order_created_datetime >= '2023-01-01' AND orders.service_type = '1 DAY TRANSFER' AND DATE_PART(HOUR, orders.order_pending_verification_datetime) >= 16
|
||||
THEN TO_TIMESTAMP(order_created_dates.add_1_working_day_excluded_base_date || ' 23:59:59 +08:00')
|
||||
{% for (loop_service_type, working_day_with_base_date, working_day_without_base_date) in zip(var_service_type, var_working_days_including_base_date, var_working_days_excluding_base_date) %}
|
||||
|
||||
WHEN orders.order_created_datetime >= '2023-01-01' AND orders.service_type = '{{loop_service_type}}' AND DATE_PART(HOUR, orders.order_pending_verification_datetime) < 16
|
||||
THEN TO_TIMESTAMP(order_created_dates.{{working_day_with_base_date}} || ' 23:59:59 +08:00')
|
||||
WHEN orders.order_created_datetime >= '2023-01-01' AND orders.service_type = '{{loop_service_type}}' AND DATE_PART(HOUR, orders.order_pending_verification_datetime) >= 16
|
||||
THEN TO_TIMESTAMP(order_created_dates.{{working_day_without_base_date}} || ' 23:59:59 +08:00')
|
||||
|
||||
{% endfor %}
|
||||
|
||||
WHEN orders.order_created_datetime >= '2023-01-01' AND orders.service_type = '3 DAYS TRANSFER' AND DATE_PART(HOUR, orders.order_pending_verification_datetime) < 16
|
||||
THEN TO_TIMESTAMP(order_created_dates.add_3_working_day_included_base_date || ' 23:59:59 +08:00')
|
||||
WHEN orders.order_created_datetime >= '2023-01-01' AND orders.service_type = '3 DAYS TRANSFER' AND DATE_PART(HOUR, orders.order_pending_verification_datetime) >= 16
|
||||
THEN TO_TIMESTAMP(order_created_dates.add_3_working_day_excluded_base_date || ' 23:59:59 +08:00')
|
||||
ELSE NULL
|
||||
|
||||
WHEN orders.order_created_datetime >= '2023-01-01' AND orders.service_type = '1688 PAYMENT' AND DATE_PART(HOUR, orders.order_pending_verification_datetime) < 16
|
||||
THEN TO_TIMESTAMP(order_created_dates.add_1_working_day_included_base_date || ' 23:59:59 +08:00')
|
||||
WHEN orders.order_created_datetime >= '2023-01-01' AND orders.service_type = '1688 PAYMENT' AND DATE_PART(HOUR, orders.order_pending_verification_datetime) >= 16
|
||||
THEN TO_TIMESTAMP(order_created_dates.add_1_working_day_excluded_base_date || ' 23:59:59 +08:00')
|
||||
|
||||
ELSE null
|
||||
END AS estimated_order_delivery_datetime_website_sla,
|
||||
|
||||
--- Estimated delivery datetime based on customer expectation
|
||||
CASE
|
||||
WHEN orders.order_created_datetime >= '2023-01-01' AND orders.service_type = '1 DAY TRANSFER' AND DATE_PART(HOUR, orders.order_pending_verification_datetime) < 16
|
||||
THEN TO_TIMESTAMP(order_created_dates.add_1_working_day_included_base_date || ' ' || (orders.order_pending_verification_datetime::TIME)::STRING )
|
||||
WHEN orders.order_created_datetime >= '2023-01-01' AND orders.service_type = '1 DAY TRANSFER' AND DATE_PART(HOUR, orders.order_pending_verification_datetime) >= 16
|
||||
THEN TO_TIMESTAMP(order_created_dates.add_1_working_day_excluded_base_date || ' ' || (orders.order_pending_verification_datetime::TIME)::STRING )
|
||||
{% for (loop_service_type, working_day_with_base_date, working_day_without_base_date) in zip(var_service_type, var_working_days_including_base_date, var_working_days_excluding_base_date) %}
|
||||
|
||||
WHEN orders.order_created_datetime >= '2023-01-01' AND orders.service_type = '{{loop_service_type}}' AND DATE_PART(HOUR, orders.order_pending_verification_datetime) < 16
|
||||
THEN TO_TIMESTAMP(order_created_dates.{{working_day_with_base_date}} || ' ' || (orders.order_pending_verification_datetime::TIME)::STRING )
|
||||
WHEN orders.order_created_datetime >= '2023-01-01' AND orders.service_type = '{{loop_service_type}}' AND DATE_PART(HOUR, orders.order_pending_verification_datetime) >= 16
|
||||
THEN TO_TIMESTAMP(order_created_dates.{{working_day_without_base_date}} || ' ' || (orders.order_pending_verification_datetime::TIME)::STRING )
|
||||
|
||||
{% endfor %}
|
||||
|
||||
WHEN orders.order_created_datetime >= '2023-01-01' AND orders.service_type = '3 DAYS TRANSFER' AND DATE_PART(HOUR, orders.order_pending_verification_datetime) < 16
|
||||
THEN TO_TIMESTAMP(order_created_dates.add_3_working_day_included_base_date || ' ' || (orders.order_pending_verification_datetime::TIME)::STRING )
|
||||
WHEN orders.order_created_datetime >= '2023-01-01' AND orders.service_type = '3 DAYS TRANSFER' AND DATE_PART(HOUR, orders.order_pending_verification_datetime) >= 16
|
||||
THEN TO_TIMESTAMP(order_created_dates.add_3_working_day_excluded_base_date || ' ' || (orders.order_pending_verification_datetime::TIME)::STRING )
|
||||
ELSE NULL
|
||||
|
||||
WHEN orders.order_created_datetime >= '2023-01-01' AND orders.service_type = '1688 PAYMENT' AND DATE_PART(HOUR, orders.order_pending_verification_datetime) < 16
|
||||
THEN TO_TIMESTAMP(order_created_dates.add_1_working_day_included_base_date || ' ' || (orders.order_pending_verification_datetime::TIME)::STRING )
|
||||
WHEN orders.order_created_datetime >= '2023-01-01' AND orders.service_type = '1688 PAYMENT' AND DATE_PART(HOUR, orders.order_pending_verification_datetime) >= 16
|
||||
THEN TO_TIMESTAMP(order_created_dates.add_1_working_day_excluded_base_date || ' ' || (orders.order_pending_verification_datetime::TIME)::STRING )
|
||||
|
||||
ELSE null
|
||||
END AS estimated_order_delivery_datetime_customer_expectation,
|
||||
|
||||
-- On time delivery boolean (CIEF internal SLA)
|
||||
CASE
|
||||
WHEN order_completed_datetime IS NULL THEN NULL
|
||||
WHEN estimated_order_delivery_datetime_website_sla > order_completed_datetime THEN 1
|
||||
-- On-time boolean is null when order is not complete
|
||||
WHEN account_verified_payment_datetime IS NULL THEN NULL
|
||||
WHEN estimated_order_delivery_datetime_website_sla > orders.operation_uploaded_bank_slip_datetime THEN 1
|
||||
ELSE 0
|
||||
|
||||
END AS is_on_time_delivery_website_sla,
|
||||
|
||||
-- On time delivery boolean (Customer Expectation)
|
||||
CASE
|
||||
WHEN order_completed_datetime IS NULL THEN NULL
|
||||
WHEN estimated_order_delivery_datetime_customer_expectation > order_completed_datetime THEN 1
|
||||
-- On-time boolean is null when order is not complete
|
||||
WHEN account_verified_payment_datetime IS NULL THEN NULL
|
||||
WHEN estimated_order_delivery_datetime_customer_expectation > orders.operation_uploaded_bank_slip_datetime THEN 1
|
||||
ELSE 0
|
||||
|
||||
END AS is_on_time_delivery_customer_expectation,
|
||||
|
||||
orders.order_approved_datetime,
|
||||
orders.order_completed_datetime,
|
||||
orders.order_rejected_datetime,
|
||||
orders.order_suspended_datetime,
|
||||
orders.next_order_created_datetime,
|
||||
orders.order_expected_expired_datetime,
|
||||
orders.order_expired_datetime,
|
||||
|
||||
@@ -169,6 +185,8 @@ fct_and_dim_joins AS (
|
||||
orders.cost_tax_rm,
|
||||
orders.cost_service_charge_rm,
|
||||
orders.total_cost_value_rm,
|
||||
orders.purchase_order_number,
|
||||
orders.invoice_number,
|
||||
orders.cost_created_datetime,
|
||||
orders.cost_pending_submission_datetime,
|
||||
orders.cost_pending_verification_datetime,
|
||||
@@ -176,6 +194,19 @@ fct_and_dim_joins AS (
|
||||
orders.cost_completed_datetime,
|
||||
orders.cost_rejected_datetime,
|
||||
|
||||
orders.customer_made_booking_datetime,
|
||||
orders.customer_placed_order_datetime,
|
||||
orders.customer_made_payment_datetime,
|
||||
orders.account_verified_payment_datetime,
|
||||
orders.first_white_form_generated_datetime,
|
||||
orders.last_white_form_generated_datetime,
|
||||
orders.operation_uploaded_bank_slip_datetime,
|
||||
orders.first_purchase_order_uploaded_datetime,
|
||||
orders.last_purchase_order_uploaded_datetime,
|
||||
orders.operation_generated_invoice_datetime,
|
||||
orders.account_rejected_payment_datetime,
|
||||
orders.next_order_created_datetime,
|
||||
|
||||
'{{ modules.datetime.datetime.now(modules.pytz.timezone("Asia/Kuala_Lumpur")) }}' AS _dbt_ran_datetime
|
||||
|
||||
FROM orders
|
||||
@@ -218,6 +249,8 @@ final__rep_exchange__daily_orders AS (
|
||||
-- dimensions
|
||||
company_name,
|
||||
supplier_company_name,
|
||||
transaction_status,
|
||||
document_status,
|
||||
fix_currency_name,
|
||||
quote_currency_name,
|
||||
base_currency_name,
|
||||
@@ -253,6 +286,8 @@ final__rep_exchange__daily_orders AS (
|
||||
is_first_time_booking_user_completed,
|
||||
is_on_time_delivery_website_sla,
|
||||
is_on_time_delivery_customer_expectation,
|
||||
purchase_order_number,
|
||||
invoice_number,
|
||||
|
||||
-- measures
|
||||
order_base_to_quote_currency_exchange_rate,
|
||||
@@ -279,6 +314,7 @@ final__rep_exchange__daily_orders AS (
|
||||
estimate_booking_value_rm,
|
||||
|
||||
-- date/times
|
||||
company_created_datetime,
|
||||
order_created_datetime,
|
||||
order_created_week,
|
||||
order_expected_expired_datetime,
|
||||
@@ -289,7 +325,6 @@ final__rep_exchange__daily_orders AS (
|
||||
order_rejected_datetime,
|
||||
order_suspended_datetime,
|
||||
order_expired_datetime,
|
||||
next_order_created_datetime,
|
||||
cost_created_datetime,
|
||||
cost_pending_submission_datetime,
|
||||
cost_pending_verification_datetime,
|
||||
@@ -302,6 +337,19 @@ final__rep_exchange__daily_orders AS (
|
||||
booking_suspended_datetime,
|
||||
estimated_order_delivery_datetime_website_sla,
|
||||
estimated_order_delivery_datetime_customer_expectation,
|
||||
|
||||
customer_made_booking_datetime,
|
||||
customer_placed_order_datetime,
|
||||
customer_made_payment_datetime,
|
||||
account_verified_payment_datetime,
|
||||
first_white_form_generated_datetime,
|
||||
last_white_form_generated_datetime,
|
||||
operation_uploaded_bank_slip_datetime,
|
||||
first_purchase_order_uploaded_datetime,
|
||||
last_purchase_order_uploaded_datetime,
|
||||
operation_generated_invoice_datetime,
|
||||
account_rejected_payment_datetime,
|
||||
next_order_created_datetime,
|
||||
|
||||
-- metadata
|
||||
_dbt_ran_datetime
|
||||
@@ -310,4 +358,4 @@ final__rep_exchange__daily_orders AS (
|
||||
|
||||
)
|
||||
|
||||
SELECT * FROM final__rep_exchange__daily_orders
|
||||
SELECT * FROM final__rep_exchange__daily_orders
|
||||
Reference in New Issue
Block a user