0% found this document useful (0 votes)
5 views

Customer Daily Status

Uploaded by

Hồ Hoàng
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views

Customer Daily Status

Uploaded by

Hồ Hoàng
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 6

WITH

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

FROM ewa.customer tb1


LEFT JOIN ewa.customer_verification tb2 ON tb1.id = tb2.customer_id
LEFT JOIN ewa.employee tb3 ON tb2.employee_id = tb3.id
LEFT JOIN ewa.bank tb4 ON tb4.id = tb3.bank_id
LEFT JOIN organization tb5 ON tb3.organization_structure_id =
tb5.organization_id
)
, partner_info AS (
SELECT
tb2.id partner_id,
tb2.short_name,
tb1.status,
tb1.onboarded_month,
tb1.total_employee_pool,
tb1."type",
tb1.base,
tb1.sale_person,
tb1.sale_team_name,
tb1.is_ewa04,
CASE
WHEN tb2.debt_collection = 1 AND tb2.onboard_method = 0 AND
tb2.debt_payment_method = 2 THEN 'EWA01'
WHEN tb2.debt_collection = 2 AND tb2.onboard_method = 1 AND
tb2.debt_payment_method = 1 THEN 'EWA02'
WHEN tb2.debt_collection = 2 AND tb2.onboard_method = 2 AND
tb2.debt_payment_method = 1 THEN 'EWA03'
WHEN tb2.debt_collection = 2 AND tb2.onboard_method = 1 AND
tb2.debt_payment_method = 2 THEN 'EWA04'
WHEN tb2.debt_collection = 2 AND tb2.onboard_method = 1 AND
tb2.debt_payment_method = 0 THEN 'EWA02 - EWA04'
WHEN tb2.debt_collection = 2 AND tb2.onboard_method = 2 AND
tb2.debt_payment_method = 0 THEN 'EWA03 - EWA04'
END partner_type
FROM ewa.partner_employee_pool tb1
RIGHT JOIN ewa.partner tb2 ON tb1.company_id = tb2.id
)

, 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
)

, dataset as (SELECT fd.*,


cu.customer_id customer_id,
em.organization_name,
em.organization_id,
em.bank_acc_number,
em.bank_name,
em.mobile_phone,
em.employee_code

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 epm_date IS NOT NULL AND gvm_date_check IS NULL THEN


service_active_created_at ELSE gvm_date_check END origin_gvm_date,
CASE WHEN gvm_date_check IS NOT NULL AND gm_date IS NULL THEN
form_1_approved_date ELSE gm_date END gm_date,

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,

CASE WHEN (co.sale_code IS NULL OR co.sale_code = '') THEN co.created_by ELSE


co.sale_code END sale_code

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 )

SELECT * FROM fn_table

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy