mirror of
https://gitlab.com/cief-data/dbt_cloud.git
synced 2026-08-19 04:14:00 +00:00
134 lines
3.9 KiB
SQL
134 lines
3.9 KiB
SQL
-- IMPORTS
|
|
{% set cost_status = dbt_utils.get_column_values(
|
|
table=ref('stg_exchange__transaction_order_logs'),
|
|
column='status') %}
|
|
|
|
WITH transaction_costs AS (
|
|
SELECT * FROM {{ ref('stg_exchange__transaction_costs') }}
|
|
),
|
|
|
|
transaction_cost_logs AS (
|
|
SELECT * FROM {{ ref('stg_exchange__transaction_cost_logs') }}
|
|
),
|
|
|
|
-- LOGICS
|
|
transaction_cost_status_datetime AS (
|
|
|
|
SELECT
|
|
transaction_cost_id,
|
|
MIN(created_datetime) AS cost_created_datetime,
|
|
|
|
{%- for status in cost_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
|
|
),
|
|
|
|
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,
|
|
|
|
-- use for future if base currency id other from '1'
|
|
IFF(transaction_costs.base_currency_id = '1',
|
|
transaction_costs.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,
|
|
-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,
|
|
-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,
|
|
|
|
transaction_cost_status_datetime.cost_created_datetime,
|
|
{%- for status in cost_status %}
|
|
transaction_cost_status_datetime.cost_{{status.lower()}}_datetime,
|
|
{% endfor %}
|
|
|
|
'{{ modules.datetime.datetime.now(modules.pytz.timezone("Asia/Kuala_Lumpur")) }}' AS _dbt_ran_datetime
|
|
|
|
FROM transaction_costs
|
|
|
|
LEFT JOIN transaction_cost_status_datetime
|
|
ON (transaction_costs.transaction_cost_id = transaction_cost_status_datetime.transaction_cost_id)
|
|
),
|
|
|
|
|
|
-- FINAL
|
|
final__fct_exchange__transaction_costs AS (
|
|
SELECT
|
|
-- ids
|
|
transaction_cost_id,
|
|
transaction_order_id,
|
|
supplier_company_id,
|
|
bank_id,
|
|
base_currency_id,
|
|
quote_currency_id,
|
|
|
|
-- dimensions
|
|
transaction_type,
|
|
payment_method,
|
|
status,
|
|
payment_reference,
|
|
bill_number,
|
|
|
|
-- measures
|
|
base_value,
|
|
quote_value,
|
|
base_to_quote_currency_exchange_rate,
|
|
base_tax,
|
|
base_service_charge,
|
|
value_rm,
|
|
tax_rm,
|
|
service_charge_rm,
|
|
total_value_rm,
|
|
|
|
-- date/times
|
|
expired_datetime,
|
|
deleted_datetime,
|
|
created_datetime,
|
|
updated_datetime,
|
|
cost_created_datetime,
|
|
cost_pending_submission_datetime,
|
|
cost_pending_verification_datetime,
|
|
cost_approved_datetime,
|
|
cost_completed_datetime,
|
|
cost_rejected_datetime,
|
|
cost_suspended_datetime
|
|
|
|
-- metadata
|
|
_dbt_ran_datetime
|
|
|
|
FROM transaction_costs_lists
|
|
)
|
|
|
|
SELECT * FROM final__fct_exchange__transaction_costs |