From 5d9f357837caa4e1846f3f47676b90f11022e234 Mon Sep 17 00:00:00 2001 From: CIEF ACC1 Date: Tue, 10 Oct 2023 05:23:03 +0000 Subject: [PATCH] Add Business Term status --- .../reporting/rep_exchange__daily_orders.sql | 118 ++++++++++++------ 1 file changed, 83 insertions(+), 35 deletions(-) diff --git a/models/marts/reporting/rep_exchange__daily_orders.sql b/models/marts/reporting/rep_exchange__daily_orders.sql index 93f63b9..8452a9c 100644 --- a/models/marts/reporting/rep_exchange__daily_orders.sql +++ b/models/marts/reporting/rep_exchange__daily_orders.sql @@ -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 \ No newline at end of file