Untitled
unknown
plain_text
3 months ago
12 kB
5
Indexable
WITH disbursement_data AS( SELECT dis.loan_id, dis.partner_id, dis.product_partnership_id, dis.product_id, dis.loan_start_date, dis.tenure, dis.loan_amount, dis.interest_rate, dis.loan_disbursal_date, dis.state_code_originator, dis.appform_id, case when olls.dpd_days > 0 then olls.sma_tag else null end AS sma_tag, case when olls.sma_tag = 'NPA' THEN 'Y' ELSE 'N' end AS npa_flag, olls.dpd_days FROM "omni-lms".disbursement dis right join "omni-lms".loan_summary olls on olls.loan_id = dis.loan_id and olls.product_partnership_id = dis.product_partnership_id and olls.product_id = dis.product_id WHERE dis.product_partnership_id in('0d849e78-1d3f-49e7-a452-8e062ac1e293', '746123f3-4b52-4ed3-877d-5df7f3a0ae9a') AND olls.as_of_date = '2024-12-31' AND dis.deleted = 0 and olls.deleted = 0 AND olls.funding_allocation = 1 ), colending AS( SELECT * FROM "omni-lms".colending WHERE product_partnership_id IN ('0d849e78-1d3f-49e7-a452-8e062ac1e293', '746123f3-4b52-4ed3-877d-5df7f3a0ae9a') AND deleted = 0 ), colending_data AS ( SELECT colending.loan_id, colending.partner_id, colending.product_partnership_id, colending.product_id, colending.interest_rate, dd.loan_disbursal_date, colending.loan_start_date, colending.loan_amount, colending.funding_allocation FROM colending INNER JOIN disbursement_data dd ON dd.loan_id = colending.loan_id AND dd.product_partnership_id = colending.product_partnership_id ), interest_days_config AS ( SELECT * FROM ( SELECT DISTINCT lcm.product_id, alm.allowed_value, lcm.effective_date, Rank() OVER ( partition BY product_id, alm.config_name ORDER BY lcm.id DESC ) AS rk FROM "omni-lms".lms_config_product_mapping lcm JOIN "omni-lms".allowed_lms_config alm ON alm.id = lcm.config_id WHERE lcm.config_name = 'interestDaysBasis' AND lcm.date_type = 'DISBURSAL' ) AS config WHERE rk = 1 ), loan_data AS ( SELECT * FROM "omni-lms".loan_summary WHERE deleted = 0 AND product_partnership_id IN ('0d849e78-1d3f-49e7-a452-8e062ac1e293', '746123f3-4b52-4ed3-877d-5df7f3a0ae9a') AND funding_allocation != 1.0 AND as_of_date = '2024-12-31' ), loans_with_interest_days AS ( SELECT cd.*, idc.allowed_value AS interest_days_basis FROM colending_data cd LEFT JOIN interest_days_config idc ON cd.product_id = idc.product_id WHERE idc.effective_date <= cd.loan_start_date AND idc.effective_date <= cd.loan_disbursal_date ), accrual AS ( SELECT Max(as_of_date) AS as_of_date, loan_id, product_id, product_partnership_id, Sum(interest_accrued) AS total_interest_accrued FROM "omni-lms".accrual WHERE funding_allocation != 1.0 AND deleted = 0 AND product_partnership_id IN ('0d849e78-1d3f-49e7-a452-8e062ac1e293', '746123f3-4b52-4ed3-877d-5df7f3a0ae9a') GROUP BY loan_id, product_partnership_id, product_id ), accrual_data AS ( SELECT accrual.* FROM accrual INNER JOIN disbursement_data dd ON dd.loan_id = accrual.loan_id AND accrual.product_partnership_id IN ('0d849e78-1d3f-49e7-a452-8e062ac1e293', '746123f3-4b52-4ed3-877d-5df7f3a0ae9a') ), originator_data AS ( SELECT ls.id, dd.loan_id, dd.partner_id, dd.product_partnership_id, dd.product_id, dd.interest_rate, dd.loan_start_date, dd.state_code_originator, dd.tenure, dd.loan_amount, ls.as_of_date, ls.total_principal_outstanding, ls.dpd_days, ls.total_principal_overdue, ls.total_interest_overdue, ls.total_amount_overdue, ls.loan_status, ls.loan_closed_date, case when ls.dpd_days > 0 then ls.sma_tag else null end AS sma_tag, case when ls.sma_tag = 'NPA' THEN 'Y' ELSE 'N' end AS npa_flag, dd.sma_tag as customer_sma_tag, dd.npa_flag as customer_npa_tag, dd.dpd_days as customer_dpd, COALESCE(ad.total_interest_accrued, 0) AS total_interest_accrued, lwid.interest_days_basis, dd.appform_id FROM loan_data ls INNER JOIN disbursement_data dd ON dd.loan_id = ls.loan_id AND dd.product_partnership_id = ls.product_partnership_id AND dd.product_id = ls.product_id LEFT JOIN accrual_data ad ON ad.loan_id = ls.loan_id AND ad.product_partnership_id = ls.product_partnership_id AND ad.product_id = ls.product_id AND ad.as_of_date = ls.as_of_date JOIN loans_with_interest_days lwid ON lwid.loan_id = dd.loan_id AND lwid.product_id = dd.product_id ), lender_data AS ( SELECT ls.id, cd.product_id, dd.state_code_originator, cd.product_partnership_id, cd.funding_allocation, cd.interest_rate, cd.loan_start_date, cd.loan_amount, ls.partner_id, ls.as_of_date, ls.loan_id, ls.total_principal_outstanding, ls.dpd_days, ls.total_principal_overdue, ls.total_interest_overdue, ls.total_amount_overdue, ls.loan_status, ls.loan_closed_date, case when ls.dpd_days > 0 then ls.sma_tag else null end AS sma_tag, case when ls.sma_tag = 'NPA' THEN 'Y' ELSE 'N' end AS npa_flag, ls.number_of_paid_installments + ls.number_of_unpaid_installments AS tenure, COALESCE(ad.total_interest_accrued, 0) AS total_interest_accrued, lwid.interest_days_basis FROM loan_data ls INNER JOIN disbursement_data dd ON dd.loan_id = ls.loan_id AND dd.product_partnership_id = ls.product_partnership_id AND dd.product_id != ls.product_id INNER JOIN colending_data cd ON cd.loan_id = ls.loan_id AND ls.product_partnership_id = cd.product_partnership_id AND cd.product_id = ls.product_id LEFT JOIN accrual_data ad ON ad.loan_id = ls.loan_id AND ad.product_partnership_id = ls.product_partnership_id AND ad.product_id = ls.product_id AND ad.as_of_date = ls.as_of_date JOIN loans_with_interest_days lwid ON lwid.loan_id = cd.loan_id AND lwid.product_id = cd.product_id ), customer_info AS ( SELECT lt.appform_id AS appform_id, lt.originator_customer_id AS customer_id, appl.NAME AS customer_name, appl.applicant_type AS customer_type, ap.loan_application_id AS loan_application_id, ap.product_id AS product_id, ap.loan_id AS loan_id FROM "appform".loan_term lt INNER JOIN "appform".applicant appl ON appl.appform_id = lt.appform_id INNER JOIN "appform".appform ap ON ap.id = appl.appform_id WHERE appl.applicant_type = 'borrower' ), loan_id_mapping_data AS ( SELECT dis.loan_id as parent_loan_id, dis.product_partnership_id, lim.related_loan_id, opm.partner_name, dis.partner_id FROM "omni-lms".disbursement dis left join "omni-lms".loan_id_mapping as lim on dis.loan_id = lim.parent_loan_id and dis.product_partnership_id = lim.product_partnership_id left join "partner-service".partner_product_partnership psppp on dis.partner_id = psppp.lender_id :: varchar and dis.product_partnership_id = psppp.partnership_product_id :: varchar inner JOIN "partner-service".omni_partner_master opm ON opm.partner_id :: varchar = dis.partner_id where dis.deleted = 0 AND ( lim.related_loan_id IS NULL OR ( lim.mapping_type = 'LENDER' AND lim.deleted = 0 ) ) ), lender_interest_rate AS ( SELECT loan_id, product_partnership_id, product_id, interest_rate, ROW_NUMBER() OVER ( PARTITION BY loan_id, product_partnership_id, product_id ORDER BY effective_date DESC ) AS rn FROM "omni-lms".interest_rate WHERE product_partnership_id IN ('0d849e78-1d3f-49e7-a452-8e062ac1e293', '746123f3-4b52-4ed3-877d-5df7f3a0ae9a') AND effective_date <= '2024-12-31' AND deleted = 0 ), latest_interest_rate AS ( SELECT * FROM lender_interest_rate WHERE rn = 1 ), originator_interest_rate AS ( SELECT lir.loan_id, lir.product_partnership_id, lir.interest_rate AS roi_ksf FROM latest_interest_rate lir JOIN originator_data od ON lir.loan_id = od.loan_id AND lir.product_partnership_id = od.product_partnership_id AND lir.product_id = od.product_id ), lender_interest_rate_split AS ( SELECT lir.loan_id, lir.product_partnership_id, lir.interest_rate AS hurdle_rate, lir.interest_rate AS roi_bank_nbfc FROM latest_interest_rate lir JOIN lender_data ld ON lir.loan_id = ld.loan_id AND lir.product_partnership_id = ld.product_partnership_id AND lir.product_id = ld.product_id ), colending_bank_data as ( SELECT p3.partnership_product_id as ppid, opm.partner_name AS bank_name FROM "partner-service".partner_product_partnership p3 JOIN "partner-service".omni_partner_master opm ON opm.partner_id = p3.lender_id ) SELECT ld.as_of_date AS snapshot_date, ld.product_id AS product_id, ld.product_partnership_id AS product_partnership_id, ld.funding_allocation AS funding_allocation, '' AS deal_name, ci.customer_id AS customer_id, od.loan_id AS account_number, COALESCE(od.state_code_originator, '45') AS branch_code, ci.appform_id AS appform_id, ci.customer_name AS customer_name, oir.roi_ksf AS roi_ksf, -- lir.hurdle_rate AS hurdle_rate, -- lir.roi_bank_nbfc AS roi_bank_nbfc, od.tenure AS tenure_ksf, -- ld.tenure AS tenure_bank_nbfc, od.loan_start_date AS loan_start_date_ksf, -- ld.loan_start_date AS loan_start_date_bank_nbfc, od.interest_days_basis AS int_calculation_method_ksf, -- ld.interest_days_basis AS int_calculation_method_bank_nbfc, od.loan_amount AS total_share_at_time_of_clm2, od.loan_amount - ld.loan_amount AS ksf_share, -- ld.loan_amount AS bank_nbfc_share, od.total_principal_outstanding AS ksf_pos, -- ld.total_principal_outstanding AS bank_nbfc_pos, od.dpd_days AS ksf_dpd, -- ld.dpd_days AS bank_nbfc_dpd, od.total_principal_overdue AS ksf_principal_overdue, -- ld.total_principal_overdue AS bank_nbfc_principal_overdue, od.total_interest_overdue AS ksf_interest_overdue, -- ld.total_interest_overdue AS bank_nbfc_interest_overdue, od.total_amount_overdue AS ksf_total_overdue, -- ld.total_amount_overdue AS bank_nbfc_total_overdue, od.sma_tag AS ksf_asset_classification, -- ld.sma_tag AS bank_nbfc_asset_classification, NULL AS ksf_excess_plus_advance_emi, -- NULL AS bank_nbfc_excess_plus_advance_emi, od.loan_status AS ksf_loan_status, -- ld.loan_status AS bank_nbfc_loan_status, od.loan_closed_date AS ksf_loan_closure_date, -- ld.loan_closed_date AS bank_nbfc_loan_closure_date, NULL AS ksf_principal_waiver, -- NULL AS bank_nbfc_principal_waiver, NULL AS ksf_interest_waiver, -- NULL AS bank_nbfc_interest_waiver, NULL AS ksf_charges_waiver, -- NULL AS bank_nbfc_charges_waiver, od.total_interest_accrued AS accrued_interest_ksf, -- ld.total_interest_accrued AS accrued_interest_bank_nbfc, od.npa_flag as ksf_npa_flag, -- ld.npa_flag as bank_nbfc_npa_flag, limd.related_loan_id as lender_loan_id, bank.bank_name as lender_name, od.customer_sma_tag as customer_sma_sub_categories, od.customer_npa_tag as customer_npa_tag, od.customer_dpd as customer_dpd FROM originator_data od INNER JOIN lender_data ld ON ld.loan_id = od.loan_id AND ld.product_partnership_id = od.product_partnership_id AND od.as_of_date = ld.as_of_date LEFT JOIN customer_info ci ON ci.appform_id = od.appform_id left join loan_id_mapping_data limd on limd.parent_loan_id = od.loan_id and limd.product_partnership_id = od.product_partnership_id LEFT JOIN originator_interest_rate oir ON oir.loan_id = od.loan_id AND oir.product_partnership_id = od.product_partnership_id LEFT JOIN lender_interest_rate_split lir ON lir.loan_id = od.loan_id AND lir.product_partnership_id = od.product_partnership_id LEFT JOIN colending_bank_data bank ON od.product_partnership_id = bank.ppid :: varchar;
Editor is loading...
Leave a Comment