Customer Daily Status
Customer Daily Status
customer AS (
SELECT
id customer_id,
phone_number,
full_name,
--active,
customer_code,
dda_code
FROM ewa.customer
)
, organization AS (
SELECT
tb1.id organization_id,
tb1.partner_id,
tb1.parent_id,
tb1."name" organization_name,
tb1.code organization_code,
split_part(tb1.path,'/',2) as org_lv1,
split_part(tb1.path,'/',3) as org_lv2,
split_part(tb1.path,'/',4) as org_lv3,
split_part(tb1.path,'/',5) as org_lv4,
split_part(tb1.path,'/',6) as org_lv5
FROM ewa.organization_structure tb1
)
, employee AS (
SELECT
tb1.id customer_id,
tb3.code employee_code,
tb1.phone_number mobile_phone,
tb3.partner_id,
tb1.customer_code,
tb3.bank_acc_number,
tb4.trading_name bank_name,
tb5.organization_id,
tb5.organization_name
, sale_code AS (
SELECT co.*,cu.ewa_id
FROM gimo_customer.customer_onboard co
LEFT JOIN gimo_customer.customer cu
ON co.customer_id = cu.id
)
FROM datawarehouse.fact_daily_customer_status_v2 fd
LEFT JOIN customer cu ON cu.customer_code = fd.customer_code
LEFT JOIN employee em ON em.customer_id = fd.customer_code AND em.partner_id =
fd.partner_id
)
,fn_table AS (
SELECT
dt.date,
dt.customer_id,
dt.mobile_phone,
dt.customer_code,
dt.customer_fullname,
dt.bank_acc_number,
dt.bank_name,
dt.ewa_longest_bill_over_due_day,
dt.ewa_due_debt_amount,
dt.ewa_over_due_debt_amount,
dt.ewa_status,
dt.employee_id,
dt.employee_code,
dt.organization_code,
dt.organization_name,
dt.org_lv1,
dt.org_lv2,
dt.org_lv3,
dt.org_lv4,
dt.org_lv5,
dt.working_status,
dt.partner_id,
po.short_name
short_name,
po.partner_type
partner_type,
po.status
partner_status,
(po.onboarded_month + INTERVAL '7 hours') :: date
onboarded_month,
po.total_employee_pool
total_employee_pool,
po.base
base,
po.sale_person
sale_person,
po.sale_team_name
sale_team_name,
CASE WHEN po."type" = 'Local' THEN 'EWA01' ELSE 'EWA02-EWA03-EWA04'
END "type",
dt.employee_created_at,
dt.service_active_created_at,
dt.customer_created_at,
dt.current_dda_status,
dt.form_1_submited_date,
dt.form_1_approved_date,
dt.form_2_submited_date,
dt.form_2_approved_date,
dt.gimo_approved_date,
dt.ekyc_approved_date,
dt.first_dda_approved,
dt.epm_date,
CASE
--th0 - EDA
WHEN po.partner_type = 'EWA01' THEN dt.service_active_created_at
--th1 - 'EWA02', 'EWA03'
WHEN po.partner_type IN ('EWA02', 'EWA03')
AND dt.employee_created_at < '2022-08-29'
AND dt.customer_created_at < '2022-08-29'
THEN GREATEST(dt.service_active_created_at)
--th2 - 'EWA02', 'EWA03'
WHEN po.partner_type IN ('EWA02', 'EWA03')
AND dt.employee_created_at < '2022-08-29'
AND dt.customer_created_at >= '2022-08-29'
AND dt.form_1_approved_date IS NOT NULL
THEN GREATEST(dt.form_1_approved_date, dt.gimo_approved_date)
-- th3 - 'EWA02', 'EWA03'
WHEN po.partner_type IN ('EWA02', 'EWA03')
AND dt.employee_created_at >= '2022-08-29'
AND dt.customer_created_at < '2022-08-29'
AND dt.form_1_approved_date IS NOT NULL
THEN GREATEST(dt.form_1_approved_date, dt.gimo_approved_date)
-- th4 - 'EWA02', 'EWA03'
WHEN po.partner_type IN ('EWA02', 'EWA03')
AND dt.employee_created_at >= '2022-08-29'
AND dt.customer_created_at >= '2022-08-29'
AND dt.form_1_approved_date IS NOT NULL
AND dt.gimo_approved_date IS NOT NULL
THEN GREATEST(dt.form_1_approved_date, dt.gimo_approved_date)
-------------------
--th5 - 'EWA02 - EWA04', 'EWA03 - EWA04', 'EWA04'
WHEN po.partner_type IN ('EWA02 - EWA04', 'EWA03 - EWA04', 'EWA04')
AND dt.employee_created_at < '2022-08-29'
AND dt.customer_created_at < '2022-08-29'
THEN GREATEST(dt.service_active_created_at)
--th6 - 'EWA02 - EWA04', 'EWA03 - EWA04', 'EWA04'
WHEN po.partner_type IN ('EWA02 - EWA04', 'EWA03 - EWA04', 'EWA04')
AND dt.employee_created_at < '2022-08-29'
AND dt.customer_created_at >= '2022-08-29'
AND dt.form_1_approved_date IS NOT NULL
THEN GREATEST(dt.form_1_approved_date, dt.gimo_approved_date)
-- th7 - 'EWA02 - EWA04', 'EWA03 - EWA04', 'EWA04'
WHEN po.partner_type IN ('EWA02 - EWA04', 'EWA03 - EWA04', 'EWA04')
AND dt.employee_created_at >= '2022-08-29'
AND dt.customer_created_at < '2022-08-29'
AND dt.form_1_approved_date IS NOT NULL
THEN GREATEST(dt.form_1_approved_date, dt.gimo_approved_date)
-- th8 - 'EWA02 - EWA04', 'EWA03 - EWA04', 'EWA04'
WHEN po.partner_type IN ('EWA02 - EWA04', 'EWA03 - EWA04', 'EWA04')
AND dt.employee_created_at >= '2022-08-29'
AND dt.customer_created_at >= '2022-08-29'
AND dt.form_1_approved_date IS NOT NULL
AND dt.gimo_approved_date IS NOT NULL
THEN GREATEST(dt.form_1_approved_date, dt.gimo_approved_date)
END gm_date,
-----------------------GVM----------------------------
CASE
--th0 - EDA
WHEN po.partner_type = 'EWA01' THEN dt.service_active_created_at
--th1 - 'EWA02', 'EWA03'
WHEN po.partner_type IN ('EWA02', 'EWA03')
AND dt.employee_created_at < '2022-08-29'
AND dt.customer_created_at < '2022-08-29'
AND dt.first_dda_approved IS NOT NULL
THEN GREATEST(dt.service_active_created_at, dt.first_dda_approved)
--th2 - 'EWA02', 'EWA03'
WHEN po.partner_type IN ('EWA02', 'EWA03')
AND dt.employee_created_at < '2022-08-29'
AND dt.customer_created_at >= '2022-08-29'
AND dt.form_1_approved_date IS NOT NULL
AND dt.service_active_created_at IS NOT NULL
AND dt.first_dda_approved IS NOT NULL
THEN GREATEST(dt.form_1_approved_date, dt.form_2_approved_date,
dt.service_active_created_at, dt.first_dda_approved, dt.gimo_approved_date)
-- th3 - 'EWA02', 'EWA03'
WHEN po.partner_type IN ('EWA02', 'EWA03')
AND dt.employee_created_at >= '2022-08-29'
AND dt.customer_created_at < '2022-08-29'
AND dt.form_1_approved_date IS NOT NULL
AND dt.form_2_approved_date IS NOT NULL
AND dt.service_active_created_at IS NOT NULL
AND dt.first_dda_approved IS NOT NULL
THEN GREATEST(dt.form_1_approved_date, dt.form_2_approved_date,
dt.service_active_created_at, dt.first_dda_approved, dt.gimo_approved_date)
-- th4 - 'EWA02', 'EWA03'
WHEN po.partner_type IN ('EWA02', 'EWA03')
AND dt.employee_created_at >= '2022-08-29'
AND dt.customer_created_at >= '2022-08-29'
AND dt.form_1_approved_date IS NOT NULL
AND dt.form_2_approved_date IS NOT NULL
AND dt.gimo_approved_date IS NOT NULL
AND dt.first_dda_approved IS NOT NULL
THEN GREATEST(dt.form_1_approved_date, dt.form_2_approved_date,
dt.gimo_approved_date, dt.first_dda_approved)
-------------------
--th5 - 'EWA02 - EWA04', 'EWA03 - EWA04', 'EWA04'
WHEN po.partner_type IN ('EWA02 - EWA04', 'EWA03 - EWA04', 'EWA04')
AND dt.employee_created_at < '2022-08-29'
AND dt.customer_created_at < '2022-08-29'
THEN GREATEST(dt.service_active_created_at)
--th6 - 'EWA02 - EWA04', 'EWA03 - EWA04', 'EWA04'
WHEN po.partner_type IN ('EWA02 - EWA04', 'EWA03 - EWA04', 'EWA04')
AND dt.employee_created_at < '2022-08-29'
AND dt.customer_created_at >= '2022-08-29'
AND dt.form_1_approved_date IS NOT NULL
AND dt.service_active_created_at IS NOT NULL
THEN GREATEST(dt.form_1_approved_date, dt.form_2_approved_date,
dt.service_active_created_at, dt.gimo_approved_date)
-- th7 - 'EWA02 - EWA04', 'EWA03 - EWA04', 'EWA04'
WHEN po.partner_type IN ('EWA02 - EWA04', 'EWA03 - EWA04', 'EWA04')
AND dt.employee_created_at >= '2022-08-29'
AND dt.customer_created_at < '2022-08-29'
AND dt.form_1_approved_date IS NOT NULL
AND dt.form_2_approved_date IS NOT NULL
AND dt.service_active_created_at IS NOT NULL
THEN GREATEST(dt.form_1_approved_date, dt.form_2_approved_date,
dt.service_active_created_at, dt.gimo_approved_date)
-- th8 - 'EWA02 - EWA04', 'EWA03 - EWA04', 'EWA04'
WHEN po.partner_type IN ('EWA02 - EWA04', 'EWA03 - EWA04')
AND dt.employee_created_at >= '2022-08-29'
AND dt.customer_created_at >= '2022-08-29'
AND dt.form_1_approved_date IS NOT NULL
AND dt.form_2_approved_date IS NOT NULL
AND dt.gimo_approved_date IS NOT NULL
AND (dt.epm_date IS NOT NULL AND dt.first_dda_approved IS NULL)
THEN GREATEST(dt.form_1_approved_date, dt.form_2_approved_date,
dt.gimo_approved_date)
-- th9 - 'EWA02 - EWA04', 'EWA03 - EWA04', 'EWA04'
WHEN po.partner_type IN ('EWA02 - EWA04', 'EWA03 - EWA04')
AND dt.employee_created_at >= '2022-08-29'
AND dt.customer_created_at >= '2022-08-29'
AND dt.form_1_approved_date IS NOT NULL
AND dt.form_2_approved_date IS NOT NULL
AND dt.gimo_approved_date IS NOT NULL
AND (dt.first_dda_approved IS NOT NULL AND dt.epm_date <
dt.first_dda_approved)
THEN GREATEST(dt.form_1_approved_date, dt.form_2_approved_date,
dt.gimo_approved_date)
-- th10 - 'EWA02 - EWA04', 'EWA03 - EWA04', 'EWA04'
WHEN po.partner_type IN ('EWA02 - EWA04', 'EWA03 - EWA04')
AND dt.employee_created_at >= '2022-08-29'
AND dt.customer_created_at >= '2022-08-29'
AND dt.form_1_approved_date IS NOT NULL
AND dt.form_2_approved_date IS NOT NULL
AND dt.gimo_approved_date IS NOT NULL
AND (dt.first_dda_approved IS NOT NULL AND (dt.epm_date >=
dt.first_dda_approved OR dt.epm_date IS NULL))
THEN GREATEST(dt.form_1_approved_date, dt.form_2_approved_date,
dt.gimo_approved_date, dt.first_dda_approved)
END gvm_date_check,
CASE
WHEN origin_gvm_date IS NOT NULL AND current_dda_status = 1 AND
partner_type IN ('EWA02 - EWA04') THEN 'EWA02'
WHEN origin_gvm_date IS NOT NULL AND current_dda_status = 1 AND
partner_type IN ('EWA03 - EWA04') THEN 'EWA03'
WHEN origin_gvm_date IS NOT NULL AND (current_dda_status <> 1 OR
current_dda_status IS NULL)
AND partner_type IN ('EWA02 - EWA04', 'EWA03 - EWA04')
AND (organization_name LIKE 'NONDDA%' OR organization_name LIKE
'EPM%')
THEN 'EWA04'
WHEN origin_gvm_date IS NOT NULL AND partner_type NOT IN ('EWA02 -
EWA04', 'EWA03 - EWA04') THEN partner_type
END gvm_type,
CASE
WHEN origin_gvm_date IS NOT NULL AND current_dda_status = 1 AND
partner_type IN ('EWA02 - EWA04') THEN origin_gvm_date
WHEN origin_gvm_date IS NOT NULL AND current_dda_status = 1 AND
partner_type IN ('EWA03 - EWA04') THEN origin_gvm_date
WHEN origin_gvm_date IS NOT NULL AND (current_dda_status <> 1 OR
current_dda_status IS NULL)
AND partner_type IN ('EWA02 - EWA04', 'EWA03 - EWA04')
AND (organization_name LIKE 'NONDDA%' OR organization_name LIKE
'EPM%')
THEN origin_gvm_date
WHEN origin_gvm_date IS NOT NULL AND partner_type NOT IN ('EWA02 -
EWA04', 'EWA03 - EWA04') THEN origin_gvm_date
END gvm_date,
FROM dataset dt
LEFT JOIN partner_info po ON po.partner_id = dt.partner_id
LEFT JOIN sale_code co ON co.ewa_id = dt.customer_id )