mirror of
https://gitlab.com/cief-data/dbt_cloud.git
synced 2026-08-19 04:14:00 +00:00
Because cost move to INT, delete some code
This commit is contained in:
@@ -9,6 +9,7 @@
|
||||
column='status')
|
||||
%}
|
||||
|
||||
|
||||
-- IMPORTS
|
||||
WITH transaction_orders AS (
|
||||
SELECT * FROM {{ ref('int_exchange__transaction_orders_get_user_ids') }}
|
||||
@@ -19,11 +20,7 @@ transaction_order_logs AS (
|
||||
),
|
||||
|
||||
transaction_costs AS (
|
||||
SELECT * FROM {{ ref('stg_exchange__transaction_costs') }}
|
||||
),
|
||||
|
||||
transaction_cost_logs AS (
|
||||
SELECT * FROM {{ ref('stg_exchange__transaction_cost_logs') }}
|
||||
SELECT * FROM {{ ref('int_exchange__transaction_cost_with_latest_cost_ids') }}
|
||||
),
|
||||
|
||||
bookings AS (
|
||||
@@ -34,13 +31,24 @@ booking_logs AS (
|
||||
SELECT * FROM {{ ref('stg_exchange__booking_logs') }}
|
||||
),
|
||||
|
||||
purchase_orders AS (
|
||||
SELECT * FROM {{ ref('stg_exchange__transaction_purchase_orders') }}
|
||||
),
|
||||
|
||||
invoices AS (
|
||||
SELECT * FROM {{ ref('stg_exchange__transaction_invoices') }}
|
||||
),
|
||||
|
||||
|
||||
-- LOGIC
|
||||
order_logs_join_bookings AS (
|
||||
|
||||
SELECT
|
||||
transaction_order_logs.*,
|
||||
bookings.service_type,
|
||||
ROW_NUMBER() OVER (PARTITION BY transaction_order_id
|
||||
ORDER BY transaction_order_logs.updated_datetime DESC,
|
||||
ORDER BY
|
||||
transaction_order_logs.updated_datetime DESC,
|
||||
transaction_order_logs.transaction_order_id DESC,
|
||||
transaction_order_logs.transaction_order_log_id DESC) AS rank_index
|
||||
|
||||
@@ -177,22 +185,7 @@ transaction_order_datetime_imputation AS (
|
||||
END AS new_order_completed_datetime
|
||||
|
||||
FROM transaction_order_order_status_datetime
|
||||
),
|
||||
|
||||
transaction_cost_status_datetime AS (
|
||||
|
||||
SELECT
|
||||
transaction_cost_id,
|
||||
MIN(created_datetime) AS cost_created_datetime,
|
||||
|
||||
{%- for status in order_status %}
|
||||
MAX(CASE WHEN status = '{{status}}' THEN updated_datetime END) AS cost_{{status.lower()}}_datetime {%- if not loop.last %},{% endif -%}
|
||||
{% endfor %}
|
||||
|
||||
FROM transaction_cost_logs
|
||||
|
||||
GROUP BY
|
||||
transaction_cost_id
|
||||
),
|
||||
|
||||
booking_status_datetime AS (
|
||||
@@ -209,6 +202,7 @@ booking_status_datetime AS (
|
||||
|
||||
GROUP BY
|
||||
booking_id
|
||||
|
||||
),
|
||||
|
||||
transaction_orders_lists AS (
|
||||
@@ -284,63 +278,65 @@ transaction_orders_lists AS (
|
||||
|
||||
LEFT JOIN transaction_order_datetime_imputation
|
||||
ON (transaction_orders.transaction_order_id = transaction_order_datetime_imputation.transaction_order_id)
|
||||
|
||||
),
|
||||
|
||||
transaction_costs_lists AS (
|
||||
|
||||
SELECT
|
||||
transaction_costs.transaction_cost_id,
|
||||
transaction_costs.transaction_order_id,
|
||||
transaction_costs.supplier_company_id,
|
||||
transaction_costs.bank_id,
|
||||
transaction_costs.base_currency_id,
|
||||
transaction_costs.quote_currency_id,
|
||||
transaction_costs.transaction_type,
|
||||
transaction_costs.payment_method,
|
||||
transaction_costs.status,
|
||||
transaction_costs.payment_reference,
|
||||
transaction_costs.bill_number,
|
||||
transaction_costs.base_value,
|
||||
transaction_costs.quote_value,
|
||||
transaction_costs.base_to_quote_currency_exchange_rate,
|
||||
transaction_costs.base_tax,
|
||||
transaction_costs.base_service_charge,
|
||||
transaction_cost_id,
|
||||
transaction_order_id,
|
||||
supplier_company_id,
|
||||
bank_id,
|
||||
base_currency_id,
|
||||
quote_currency_id,
|
||||
transaction_type,
|
||||
payment_method,
|
||||
status,
|
||||
payment_reference,
|
||||
bill_number,
|
||||
base_value,
|
||||
quote_value,
|
||||
base_to_quote_currency_exchange_rate,
|
||||
base_tax,
|
||||
base_service_charge,
|
||||
|
||||
-- use for future if base currency id other from '1'
|
||||
IFF(transaction_costs.base_currency_id = '1',
|
||||
transaction_costs.base_value,
|
||||
IFF(base_currency_id = '1',
|
||||
base_value,
|
||||
-9999999999) AS value_rm,
|
||||
|
||||
-- use for future if base currency id other from '1'
|
||||
IFF(transaction_costs.base_currency_id = '1',
|
||||
transaction_costs.base_tax,
|
||||
IFF(base_currency_id = '1',
|
||||
base_tax,
|
||||
-9999999999) AS tax_rm,
|
||||
|
||||
-- use for future if base currency id other from '1'
|
||||
IFF(transaction_costs.base_currency_id = '1',
|
||||
transaction_costs.base_service_charge,
|
||||
IFF(base_currency_id = '1',
|
||||
base_service_charge,
|
||||
-9999999999) AS service_charge_rm,
|
||||
|
||||
(value_rm + service_charge_rm + tax_rm) AS total_value_rm,
|
||||
|
||||
transaction_costs.expired_datetime,
|
||||
transaction_costs.deleted_datetime,
|
||||
transaction_costs.created_datetime,
|
||||
transaction_costs.updated_datetime,
|
||||
|
||||
{%- for status in order_status %}
|
||||
transaction_cost_status_datetime.cost_{{status.lower()}}_datetime,
|
||||
{% endfor %}
|
||||
transaction_cost_status_datetime.cost_created_datetime
|
||||
expired_datetime,
|
||||
deleted_datetime,
|
||||
created_datetime,
|
||||
updated_datetime,
|
||||
cost_created_datetime,
|
||||
cost_completed_datetime,
|
||||
cost_pending_submission_datetime,
|
||||
cost_approved_datetime,
|
||||
cost_pending_verification_datetime,
|
||||
cost_rejected_datetime,
|
||||
cost_suspended_datetime,
|
||||
cost_expired_datetime
|
||||
|
||||
FROM transaction_costs
|
||||
|
||||
LEFT JOIN transaction_cost_status_datetime
|
||||
ON (transaction_costs.transaction_cost_id = transaction_cost_status_datetime.transaction_cost_id)
|
||||
|
||||
),
|
||||
|
||||
bookings_lists AS (
|
||||
|
||||
SELECT
|
||||
bookings.*,
|
||||
|
||||
@@ -370,6 +366,7 @@ bookings_lists AS (
|
||||
|
||||
LEFT JOIN booking_status_datetime
|
||||
ON (bookings.booking_id = booking_status_datetime.booking_id)
|
||||
|
||||
),
|
||||
|
||||
bookings_orders_costs_join AS (
|
||||
@@ -452,9 +449,7 @@ bookings_orders_costs_join AS (
|
||||
transaction_costs_lists.cost_pending_verification_datetime,
|
||||
transaction_costs_lists.cost_approved_datetime,
|
||||
transaction_costs_lists.cost_completed_datetime,
|
||||
transaction_costs_lists.cost_rejected_datetime,
|
||||
|
||||
'{{ modules.datetime.datetime.now(modules.pytz.timezone("Asia/Kuala_Lumpur")) }}' AS _dbt_ran_datetime
|
||||
transaction_costs_lists.cost_rejected_datetime
|
||||
|
||||
FROM transaction_orders_lists
|
||||
|
||||
@@ -466,6 +461,112 @@ bookings_orders_costs_join AS (
|
||||
|
||||
),
|
||||
|
||||
purchase_orders_invoices_join AS (
|
||||
|
||||
SELECT
|
||||
bookings_orders_costs_join.*,
|
||||
invoices.created_datetime AS invoice_created_datetime,
|
||||
purchase_orders.created_datetime AS purchase_order_created_datetime,
|
||||
purchase_orders.updated_datetime AS purchase_order_updated_datetime,
|
||||
|
||||
CASE
|
||||
WHEN order_status NOT IN ('REJECTED', 'SUSPENDED', 'EXPIRED') THEN purchase_orders.purchase_order_number
|
||||
END AS purchase_order_number,
|
||||
CASE
|
||||
WHEN order_status NOT IN ('REJECTED', 'SUSPENDED', 'EXPIRED') THEN purchase_orders.status
|
||||
END AS purchase_order_status,
|
||||
|
||||
CASE
|
||||
WHEN cost_status IN ('APPROVED') THEN invoices.invoice_number
|
||||
END AS invoice_number,
|
||||
CASE
|
||||
WHEN cost_status IN ('APPROVED') THEN invoices.status
|
||||
END AS invoice_status
|
||||
|
||||
FROM bookings_orders_costs_join
|
||||
|
||||
LEFT JOIN purchase_orders
|
||||
ON (bookings_orders_costs_join.booking_id = purchase_orders.booking_id)
|
||||
|
||||
LEFT JOIN invoices
|
||||
ON (bookings_orders_costs_join.booking_id = invoices.booking_id)
|
||||
|
||||
),
|
||||
|
||||
purchase_order_invoice_status_redefined AS (
|
||||
|
||||
SELECT
|
||||
*,
|
||||
|
||||
COALESCE( 'COST_' ||cost_status, 'ORDER_' || order_status ) AS transaction_temp_status,
|
||||
|
||||
-- Transaction status tracks the orders and costs
|
||||
CASE
|
||||
|
||||
WHEN order_status IN ('COMPLETED', 'APPROVED') AND cost_status IS NULL
|
||||
THEN 'PENDING_GENERATE_WHITE_FORM'
|
||||
WHEN order_status IN ('COMPLETED', 'APPROVED') AND cost_status IN ('PENDING_VERIFICATION')
|
||||
THEN 'GENERATED_WHITE_FORM'
|
||||
WHEN transaction_temp_status IN ('COST_APPROVED', 'COST_COMPLETED')
|
||||
THEN 'UPLOADED_BANK_SLIP'
|
||||
WHEN transaction_temp_status IN ('ORDER_APPROVED')
|
||||
THEN 'VERIFIED_PAYMENT_STATEMENT'
|
||||
WHEN transaction_temp_status IN ('ORDER_PENDING_VERIFICATION')
|
||||
THEN 'PENDING_VERIFICATION_PAYMENT_STATEMENT'
|
||||
WHEN transaction_temp_status IN ('ORDER_PENDING_SUBMISSION')
|
||||
THEN 'PENDING_SUBMISSION_PAYMENT_STATEMENT'
|
||||
|
||||
END AS transaction_temp_status_2,
|
||||
|
||||
-- Document status tracks the purchase orders and invoices
|
||||
CASE
|
||||
|
||||
WHEN order_status IN ('REJECTED', 'SUSPENDED', 'EXPIRED')
|
||||
THEN null
|
||||
WHEN ( purchase_order_status IS NULL OR purchase_order_status IN ('PENDING_SUBMISSION') ) AND purchase_order_number IS NULL
|
||||
THEN 'PENDING_SUBMISSION_PURCHASE_ORDER'
|
||||
WHEN purchase_order_status IN ('PENDING_VERIFICATION')
|
||||
THEN 'PENDING_VERIFICATION_PURCHASE_ORDER'
|
||||
WHEN purchase_order_number IS NOT NULL AND purchase_order_status IN ( 'PENDING_VERIFICATION', 'PENDING_SUBMISSION' ) AND purchase_order_number IS NOT NULL
|
||||
THEN 'PENDING_RESUBMISSION_PURCHASE_ORDER'
|
||||
WHEN purchase_order_status IN ('APPROVED') AND invoice_number IS NULL AND cost_status IN ('APPROVED', 'COMPLETED')
|
||||
THEN 'PENDING_GENERATE_INVOICE'
|
||||
WHEN purchase_order_status IN ('APPROVED') AND invoice_status IS NULL
|
||||
THEN 'APPROVED_PURCHASE_ORDER'
|
||||
WHEN invoice_status IN ('APPROVED') AND cost_status IN ('COMPLETED', 'APPROVED')
|
||||
THEN 'GENERATED_INVOICE'
|
||||
|
||||
END AS document_status,
|
||||
|
||||
COALESCE(transaction_temp_status_2, transaction_temp_status ) AS transaction_status
|
||||
|
||||
FROM purchase_orders_invoices_join
|
||||
|
||||
),
|
||||
|
||||
renaming_datetime_columns AS (
|
||||
|
||||
SELECT
|
||||
*,
|
||||
booking_created_datetime AS customer_made_booking_datetime,
|
||||
order_created_datetime AS customer_placed_order_datetime,
|
||||
order_pending_verification_datetime AS customer_made_payment_datetime,
|
||||
order_approved_datetime AS account_verified_payment_datetime,
|
||||
order_completed_datetime AS first_white_form_generated_datetime,
|
||||
cost_pending_verification_datetime AS last_white_form_generated_datetime,
|
||||
COALESCE(cost_approved_datetime, cost_completed_datetime) AS operation_uploaded_bank_slip_datetime,
|
||||
purchase_order_created_datetime AS first_purchase_order_uploaded_datetime,
|
||||
purchase_order_updated_datetime AS last_purchase_order_uploaded_datetime,
|
||||
invoice_created_datetime AS operation_generated_invoice_datetime,
|
||||
order_rejected_datetime AS account_rejected_payment_datetime,
|
||||
|
||||
'{{ modules.datetime.datetime.now(modules.pytz.timezone("Asia/Kuala_Lumpur")) }}' AS _dbt_ran_datetime
|
||||
|
||||
FROM purchase_order_invoice_status_redefined
|
||||
|
||||
),
|
||||
|
||||
|
||||
-- FINAL
|
||||
final_fct_exchange__new_orders AS (
|
||||
|
||||
@@ -485,6 +586,8 @@ final_fct_exchange__new_orders AS (
|
||||
base_currency_id,
|
||||
|
||||
-- dimensions
|
||||
transaction_status,
|
||||
document_status,
|
||||
service_type,
|
||||
booking_status,
|
||||
is_first_time_booking_company,
|
||||
@@ -505,6 +608,10 @@ final_fct_exchange__new_orders AS (
|
||||
cost_status,
|
||||
cost_payment_reference,
|
||||
cost_bill_number,
|
||||
purchase_order_status,
|
||||
purchase_order_number,
|
||||
invoice_status,
|
||||
invoice_number,
|
||||
|
||||
-- measures
|
||||
estimate_booking_base_to_quote_currency_exchange_rate,
|
||||
@@ -520,6 +627,7 @@ final_fct_exchange__new_orders AS (
|
||||
order_service_charge_rm,
|
||||
order_tax_rm,
|
||||
total_order_value_rm,
|
||||
|
||||
cost_base_value,
|
||||
cost_quote_value,
|
||||
cost_base_to_quote_currency_exchange_rate,
|
||||
@@ -548,18 +656,31 @@ final_fct_exchange__new_orders AS (
|
||||
order_suspended_datetime,
|
||||
order_expired_datetime,
|
||||
|
||||
next_order_created_datetime,
|
||||
cost_created_datetime,
|
||||
cost_pending_submission_datetime,
|
||||
cost_pending_verification_datetime,
|
||||
cost_approved_datetime,
|
||||
cost_completed_datetime,
|
||||
cost_rejected_datetime,
|
||||
cost_rejected_datetime,
|
||||
|
||||
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
|
||||
|
||||
FROM bookings_orders_costs_join
|
||||
FROM renaming_datetime_columns
|
||||
|
||||
)
|
||||
|
||||
SELECT * FROM final_fct_exchange__new_orders
|
||||
Reference in New Issue
Block a user