Adding
This commit is contained in:
+31
@@ -0,0 +1,31 @@
|
||||
SELECT DISTINCT
|
||||
a.TAXRPTFORPERSNBR AS PersonNumber,
|
||||
a.TAXRPTFORORGNBR AS ByOrgNbr,
|
||||
a.TAXRPTFORPERSNBR AS TaxReportForPersonNumber,
|
||||
a.TAXRPTFORORGNBR AS TaxReportForOrgNumber,
|
||||
o.ORGNAME AS OrganizationName,
|
||||
p.FIRSTNAME,
|
||||
p.MDLINIT AS MiddleInitial,
|
||||
p.MDLNAME AS MiddleName,
|
||||
p.LASTNAME,
|
||||
p.SUFFIX,
|
||||
'' AS Role,
|
||||
CASE WHEN (p.PERSNBR = a.TAXRPTFORPERSNBR OR o.ORGNBR = a.TAXRPTFORORGNBR) THEN (1) ELSE (0) END AS IsPrimaryOwner
|
||||
FROM osibank.ACCT a
|
||||
LEFT OUTER JOIN OSIBANK.PERS p ON a.TAXRPTFORPERSNBR = p.PERSNBR
|
||||
LEFT OUTER JOIN OSIBANK.ORG o ON a.TAXRPTFORORGNBR = o.ORGNBR
|
||||
WHERE a.ACCTNBR = :accountNumber
|
||||
UNION
|
||||
(SELECT DISTINCT a2.PERSNBR, NULL, NULL, NULL, NULL, p.FIRSTNAME, p.MDLINIT, p.MDLNAME, p.LASTNAME, p.SUFFIX, a2.ACCTROLECD, 0
|
||||
FROM OSIBANK.ACCTACCTROLEPERS a2
|
||||
LEFT OUTER JOIN OSIBANK.PERS p ON a2.PERSNBR = p.PERSNBR
|
||||
WHERE a2.ACCTROLECD IN ( 'SIGN', 'OWN', 'CUST', 'GUAD', 'PREP', 'REPP', 'VAFI', 'TRUT', 'TRUS')
|
||||
AND a2.ACCTNBR = :accountNumber
|
||||
AND a2.EFFDATE <= TO_DATE(:createdDate, 'YYYY-MM-DD HH24:MI:SS') AND a2.EFFDATE IS NOT NULL)
|
||||
UNION
|
||||
(SELECT DISTINCT NULL, a3.ORGNBR, NULL, NULL, o.ORGNAME, NULL, NULL, NULL, NULL, NULL, a3.ACCTROLECD, 0
|
||||
FROM OSIBANK.ACCTACCTROLEORG a3
|
||||
LEFT OUTER JOIN OSIBANK.ORG o ON a3.ORGNBR = o.ORGNBR
|
||||
WHERE a3.ACCTROLECD IN ( 'SIGN', 'OWN', 'CUST', 'GUAD', 'PREP', 'REPP', 'VAFI', 'TRUT', 'TRUS')
|
||||
AND a3.ACCTNBR = :accountNumber
|
||||
AND a3.EFFDATE <= TO_DATE(:createdDate, 'YYYY-MM-DD HH24:MI:SS') AND a3.EFFDATE IS NOT NULL)
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
SELECT DISTINCT
|
||||
a.TAXRPTFORPERSNBR AS PersonNumber,
|
||||
a.TAXRPTFORORGNBR AS ByOrgNbr,
|
||||
a.TAXRPTFORPERSNBR AS TaxReportForPersonNumber,
|
||||
a.TAXRPTFORORGNBR AS TaxReportForOrgNumber,
|
||||
o.ORGNAME AS OrganizationName,
|
||||
p.FIRSTNAME,
|
||||
p.MDLINIT AS MiddleInitial,
|
||||
p.MDLNAME AS MiddleName,
|
||||
p.LASTNAME,
|
||||
p.SUFFIX,
|
||||
CASE WHEN (p.PERSNBR = a.TAXRPTFORPERSNBR OR o.ORGNBR = a.TAXRPTFORORGNBR) THEN (1) ELSE (0) END AS IsPrimaryOwner
|
||||
FROM osibank.ACCT a
|
||||
LEFT OUTER JOIN OSIBANK.PERS p ON a.TAXRPTFORPERSNBR = p.PERSNBR
|
||||
LEFT OUTER JOIN OSIBANK.ORG o ON a.TAXRPTFORORGNBR = o.ORGNBR
|
||||
WHERE NLSSORT(TRIM(REPLACE(REPLACE(REPLACE(REGEXP_REPLACE(REPLACE(o.ORGNAME, '%2F', '/'), '[^[:alnum:] ]', ''), ' ', '<>'), '><', ''), '<>', ' ')), 'NLS_SORT = UCA0700_DUCET_AI')
|
||||
LIKE NLSSORT(TRIM(REPLACE(REPLACE(REPLACE(REGEXP_REPLACE(REPLACE(:organizationName, '%2F', '/'), '[^[:alnum:] ]', ''), ' ', '<>'), '><', ''), '<>', ' ')), 'NLS_SORT = UCA0700_DUCET_AI')
|
||||
OFFSET 0 ROWS
|
||||
FETCH FIRST 5 ROWS ONLY
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
SELECT DISTINCT
|
||||
a.TAXRPTFORPERSNBR AS PersonNumber,
|
||||
a.TAXRPTFORORGNBR AS ByOrgNbr,
|
||||
a.TAXRPTFORPERSNBR AS TaxReportForPersonNumber,
|
||||
a.TAXRPTFORORGNBR AS TaxReportForOrgNumber,
|
||||
o.ORGNAME AS OrganizationName,
|
||||
p.FIRSTNAME,
|
||||
p.MDLINIT AS MiddleInitial,
|
||||
p.MDLNAME AS MiddleName,
|
||||
p.LASTNAME,
|
||||
p.SUFFIX,
|
||||
CASE WHEN (p.PERSNBR = a.TAXRPTFORPERSNBR OR o.ORGNBR = a.TAXRPTFORORGNBR) THEN (1) ELSE (0) END AS IsPrimaryOwner
|
||||
FROM osibank.ACCT a
|
||||
LEFT OUTER JOIN OSIBANK.PERS p ON a.TAXRPTFORPERSNBR = p.PERSNBR
|
||||
LEFT OUTER JOIN OSIBANK.ORG o ON a.TAXRPTFORORGNBR = o.ORGNBR
|
||||
WHERE NLSSORT(TRIM(REPLACE(REPLACE(REPLACE(REGEXP_REPLACE(REPLACE(NVL(p.FIRSTNAME,'') || NVL(' ' || p.MDLINIT,'') || NVL(' ' || p.LASTNAME,'') || NVL(' ' || p.SUFFIX,''), '%2F', '/'), '[^[:alnum:] ]', ''), ' ', '<>'), '><', ''), '<>', ' ')), 'NLS_SORT = UCA0700_DUCET_AI')
|
||||
LIKE NLSSORT(TRIM(REPLACE(REPLACE(REPLACE(REGEXP_REPLACE(REPLACE(:personName, '%2F', '/'), '[^[:alnum:] ]', ''), ' ', '<>'), '><', ''), '<>', ' ')), 'NLS_SORT = UCA0700_DUCET_AI')
|
||||
OFFSET 0 ROWS
|
||||
FETCH FIRST 5 ROWS ONLY
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
select
|
||||
ac.branchorgnbr as branchcode,
|
||||
ac.acctnbr as accountnumber,
|
||||
CASE
|
||||
when (ac.taxrptforpersnbr is not null) then (concat(concat(pe.FirstNameUpper, ' '), pe.LastNameUpper))
|
||||
else (og.orgname)
|
||||
end as Name
|
||||
from acct ac
|
||||
left join pers pe on ac.taxrptforpersnbr = pe.persnbr
|
||||
left join org og on og.orgnbr = ac.taxrptfororgnbr
|
||||
Where AC.MJACCTTYPCD IN :majorAccountTypes
|
||||
and AC.CURRMIACCTTYPCD IN :minorAccountTypes
|
||||
and AC.CURRACCTSTATCD IN :accountStatusCodes
|
||||
and AC.Branchorgnbr IN :branchOrgCodes
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
SELECT
|
||||
ACCTNBR, DATELASTMAINT
|
||||
FROM Acct
|
||||
WHERE DATELASTMAINT >= TO_TIMESTAMP(:startDate, 'yyyy-mm-dd HH24:mi:ss')
|
||||
AND DATELASTMAINT < TO_TIMESTAMP(:endDate, 'yyyy-mm-dd HH24:mi:ss')
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
Select AC.ACCTNBR as AccountNumber
|
||||
FROM ACCT AC
|
||||
LEFT JOIN ACCTGRPACCT AGA ON AGA.ACCTNBR= AC.ACCTNBR
|
||||
LEFT JOIN ACCTGRP AG ON AG.ACCTGRPNBR = AGA.ACCTGRPNBR
|
||||
Where
|
||||
AC.MJACCTTYPCD = 'CK'
|
||||
And AC.CURRMIACCTTYPCD IN ('BC01','BC10','BC11','BC20','MMC1','MMC5','MMC9','BMM1','MMM1')
|
||||
And AC.CURRACCTSTATCD = 'ACT'
|
||||
And AG.ACCTGRPNBR is null
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
Select AC.ACCTNBR as AccountNumber from OSIBANK.ACCT AC
|
||||
INNER JOIN PERS PE ON PE.PersNbr = AC.TAXRPTFORPERSNBR
|
||||
INNER JOIN MEMBERAGREEMENT MA ON MA.PRIMARYPERSNBR = PE.PERSNBR
|
||||
Where AC.MJACCTTYPCD = 'SAV'
|
||||
and AC.CURRMIACCTTYPCD = 'SV01'
|
||||
and AC.CURRACCTSTATCD = 'APPR'
|
||||
and AC.Branchorgnbr = 1210
|
||||
and MA.SHAREACCTNBR = AC.ACCTNBR
|
||||
and NOT EXISTS (select null FROM ACCTACCTROLEPERS AR WHERE AR.ACCTNBR = AC.ACCTNBR And AR.ACCTROLECD = 'OEMP')
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
SELECT
|
||||
AC.ACCTNBR
|
||||
FROM
|
||||
OSIBANK.ACCT AC
|
||||
INNER JOIN OSIBANK.MJMIACCTTYP MI ON MI.MIACCTTYPCD = AC.CURRMIACCTTYPCD
|
||||
INNER JOIN OSIBANK.PERS PE ON PE.PERSNBR = AC.TAXRPTFORPERSNBR
|
||||
INNER JOIN OSIBANK.MEMBERAGREEMENT MA ON MA.PRIMARYPERSNBR = PE.PERSNBR
|
||||
WHERE
|
||||
(AC.BRANCHORGNBR = 1500 OR AC.BRANCHORGNBR = 1200)
|
||||
AND AC.CURRACCTSTATCD IN ('ACT', 'DORM', 'IACT', 'NPFM')
|
||||
AND AC.MJACCTTYPCD IN ('CK','SAV','TD','CML','CNS','MTG')
|
||||
AND AC.ACCTNBR NOT IN('99993001','99994001','99997001','27507971401','99998001')
|
||||
AND AC.CURRMIACCTTYPCD NOT IN ('GL','CK20','APCK','BAT','CASH','FLML','HSA','IRA',
|
||||
'IRTH','ITRD','MO','PREC','CDFN','CDFC','CDFI','INVR','DLR','CHSA','CITA','CRTA',
|
||||
'CLRA','CANZ','DEF1','LETR','DEF2','DEF3','SDFP','SDFS','SDFI','SVWV','PASS',
|
||||
'SVRT','TDFR','TDFN','CDNR')
|
||||
|
||||
+1
@@ -0,0 +1 @@
|
||||
SELECT EFFDATETIME FROM OSIBANK.ACCTACCTSTATHIST WHERE ACCTNBR = :accountNumber and ACCTSTATCD = 'CO' ORDER BY EFFDATETIME desc
|
||||
+110
@@ -0,0 +1,110 @@
|
||||
WITH PersonLookup AS
|
||||
(
|
||||
SELECT DISTINCT
|
||||
MAX(n.PERSNBR) AS PERSNBR,
|
||||
MAX(n.SHAREACCTNBR) AS SHAREACCTNBR,
|
||||
MAX(n.MEMBERAGREENBR) AS MEMBERAGREENBR,
|
||||
MAX(n.PRIORITY) AS PRIORITY
|
||||
FROM (
|
||||
SELECT a.TAXRPTFORPERSNBR AS PERSNBR, a.ACCTNBR AS SHAREACCTNBR, m.MEMBERAGREENBR, 0 AS PRIORITY
|
||||
FROM ACCT a
|
||||
LEFT OUTER JOIN MEMBERAGREEMENT m ON m.PRIMARYPERSNBR = a.TAXRPTFORPERSNBR
|
||||
LEFT OUTER JOIN OSIBANK.ACCTACCTROLEPERS a1 ON a1.ACCTNBR = a.ACCTNBR AND a.TAXRPTFORPERSNBR <> a1.PERSNBR AND a1.ACCTROLECD = 'CUST'
|
||||
WHERE a1.ACCTROLECD IS NULL
|
||||
UNION
|
||||
SELECT DISTINCT a.PERSNBR, a3.ACCTNBR AS SHAREACCTNBR, NULL AS MEMBERAGREENBR, 1 AS PRIORITY
|
||||
FROM OSIBANK.ACCTACCTROLEPERS a
|
||||
INNER JOIN OSIBANK.ACCTROLE a2 ON a.ACCTROLECD = a2.ACCTROLECD AND a2.TRANSACTYN = 'Y'
|
||||
INNER JOIN ACCT a3 ON a.ACCTNBR IN (a3.ACCTNBR, a3.STMTACCTNBR)
|
||||
LEFT OUTER JOIN MEMBERAGREEMENT e ON e.SHAREACCTNBR = a3.STMTACCTNBR
|
||||
WHERE a.EFFDATE <= CURRENT_DATE
|
||||
AND a.EFFDATE IS NOT NULL
|
||||
) n
|
||||
WHERE n.PERSNBR = :personNumber
|
||||
GROUP BY (n.PERSNBR, n.SHAREACCTNBR, n.MEMBERAGREENBR)
|
||||
ORDER BY (MAX(n.PRIORITY))
|
||||
)
|
||||
,Person AS
|
||||
(
|
||||
SELECT DISTINCT e.FIRSTNAME||COALESCE(nullif(' '||e.MDLINIT,' '), '')||' '||e.LASTNAME AS PERSONNAME, l.PERSNBR, l.MEMBERAGREENBR, l.SHAREACCTNBR
|
||||
FROM OSIBANK.PERS e
|
||||
INNER JOIN PersonLookup l ON l.PERSNBR=e.PERSNBR
|
||||
)
|
||||
,Phone_list AS
|
||||
(
|
||||
SELECT DISTINCT p.PERSNBR, p.AREACD||p.EXCHANGE||p.PHONENBR AS phone_number, p.PHONEUSECD AS phone_type, p.PHONESEQ,
|
||||
ROW_NUMBER () OVER(PARTITION BY p.PERSNBR, p.PHONEUSECD ORDER BY PREFERREDYN DESC, p.PHONESEQ DESC) AS rn
|
||||
FROM OSIBANK.PERSPHONE p
|
||||
INNER JOIN PersonLookup l ON l.PERSNBR=p.PERSNBR
|
||||
WHERE p.PHONEUSECD IN ('PER', 'CELL', 'BUS')
|
||||
)
|
||||
,phone_part AS
|
||||
(
|
||||
SELECT * FROM
|
||||
(
|
||||
SELECT PERSNBR, phone_type, phone_number
|
||||
FROM Phone_list
|
||||
WHERE rn=1
|
||||
)
|
||||
PIVOT
|
||||
(
|
||||
MAX(phone_number) FOR phone_type IN ('PER' AS Home_Phone, 'CELL' AS Cell_Phone, 'BUS' AS Business_Phone)
|
||||
)
|
||||
)
|
||||
,SharedAcctTran AS
|
||||
(
|
||||
SELECT t.ACCTNBR, a.PERSNBR, t.RTXNTYPCD, t.ORIGPOSTDATE, t.TRANAMT, a.SHAREACCTNBR,
|
||||
CASE WHEN t.RTXNTYPCD = 'WTH' THEN 'WTH'
|
||||
WHEN t.RTXNTYPCD IN ('DEP', 'XDEP') THEN 'DEP' END AS TransType
|
||||
FROM PersonLookup a
|
||||
INNER JOIN OSIBANK.RTXN t ON t.ACCTNBR=a.SHAREACCTNBR AND t.RTXNTYPCD IN ('WTH','DEP','XDEP')
|
||||
ORDER BY t.ORIGPOSTDATE DESC
|
||||
FETCH FIRST 1000 ROWS ONLY
|
||||
)
|
||||
,SharedAcctTranOrder AS
|
||||
(
|
||||
SELECT ACCTNBR, PERSNBR, ORIGPOSTDATE, TRANAMT, RTXNTYPCD, TransType, SHAREACCTNBR,
|
||||
ROW_NUMBER() OVER(PARTITION BY ACCTNBR, TransType ORDER BY ORIGPOSTDATE DESC) AS rn
|
||||
FROM SharedAcctTran
|
||||
)
|
||||
,SharedAcctTran_Part AS
|
||||
(
|
||||
SELECT ACCTNBR, PERSNBR, TransType, SHAREACCTNBR,
|
||||
CASE WHEN TransType='WTH' THEN ORIGPOSTDATE END AS Last_ShareAcct_Withdrawal_DateTime,
|
||||
CASE WHEN TransType='DEP' THEN ORIGPOSTDATE END AS Last_Share_Deposit_Date,
|
||||
CASE WHEN TransType='DEP' THEN TRANAMT END AS Last_Share_Deposit_Amount
|
||||
FROM SharedAcctTranOrder
|
||||
WHERE rn=1
|
||||
)
|
||||
,Autoloan_Part AS
|
||||
(
|
||||
SELECT DISTINCT MAX(l.PERSNBR) AS PERSNBR, MAX(pr.PROPDESC) AS PROPDESC
|
||||
FROM OSIBANK.ACCT a
|
||||
INNER JOIN PersonLookup l ON a.ACCTNBR = l.SHAREACCTNBR OR a.TAXRPTFORPERSNBR = l.PERSNBR
|
||||
INNER JOIN OSIBANK.ACCTPROP AP ON AP.ACCTNBR=a.ACCTNBR
|
||||
INNER JOIN OSIBANK.prop pr ON pr.propnbr=ap.PROPNBR
|
||||
WHERE a.MJACCTTYPCD='CNS'
|
||||
AND a.CURRMIACCTTYPCD IN ('DL01','DL02','DL03','DL04','DV01','DV02','DV03','DV04')
|
||||
GROUP BY (l.PERSNBR)
|
||||
ORDER BY a.CONTRACTDATE DESC
|
||||
)
|
||||
SELECT DISTINCT
|
||||
MAX(p.PERSNBR) AS PersonNumber,
|
||||
MAX(e.PERSONNAME) AS PERSONNAME,
|
||||
MAX(e.MEMBERAGREENBR) AS MemberNumber,
|
||||
MAX(p.Home_Phone) AS HomePhone,
|
||||
MAX(p.Cell_Phone) AS CellPhone,
|
||||
MAX(p.Business_Phone) AS BusinessPhone,
|
||||
MAX(w.Last_ShareAcct_Withdrawal_DateTime) AS LastShareAcctWithdrawalTime,
|
||||
MAX(d.Last_Share_Deposit_Date) AS LastShareDepositDate,
|
||||
MAX(d.Last_Share_Deposit_Amount) AS LastShareDepositAmount,
|
||||
MAX(l.PROPDESC) AS VehicleYearMakeModelVin,
|
||||
MAX(puf.VALUE) AS PassPhrase
|
||||
FROM phone_part p
|
||||
LEFT JOIN Person e ON p.PERSNBR=e.PERSNBR
|
||||
LEFT JOIN PERSUSERFIELD puf on p.PERSNBR=puf.PERSNBR AND puf.userfieldcd='PASS'
|
||||
LEFT JOIN SharedAcctTran_Part w ON e.SHAREACCTNBR=w.SHAREACCTNBR AND w.TransType='WTH'
|
||||
LEFT JOIN SharedAcctTran_Part d ON e.SHAREACCTNBR=d.SHAREACCTNBR AND d.TransType='DEP'
|
||||
LEFT JOIN Autoloan_Part l ON p.PERSNBR=l.PERSNBR
|
||||
GROUP BY (p.PERSNBR)
|
||||
FETCH FIRST 2 ROWS ONLY
|
||||
+115
@@ -0,0 +1,115 @@
|
||||
WITH PersonLookup AS
|
||||
(
|
||||
SELECT DISTINCT
|
||||
MAX(n.PERSNBR) AS PERSNBR,
|
||||
MAX(n.SHAREACCTNBR) AS SHAREACCTNBR,
|
||||
MAX(n.MEMBERAGREENBR) AS MEMBERAGREENBR,
|
||||
MAX(n.PRIORITY) AS PRIORITY
|
||||
FROM (
|
||||
SELECT a.TAXRPTFORPERSNBR AS PERSNBR, a.ACCTNBR AS SHAREACCTNBR, m.MEMBERAGREENBR, 0 AS PRIORITY
|
||||
FROM ACCT a
|
||||
LEFT OUTER JOIN MEMBERAGREEMENT m ON m.PRIMARYPERSNBR = a.TAXRPTFORPERSNBR
|
||||
LEFT OUTER JOIN OSIBANK.ACCTACCTROLEPERS a1 ON a1.ACCTNBR = a.ACCTNBR AND a.TAXRPTFORPERSNBR <> a1.PERSNBR AND a1.ACCTROLECD = 'CUST'
|
||||
WHERE a1.ACCTROLECD IS NULL
|
||||
UNION
|
||||
SELECT DISTINCT a.PERSNBR, a3.ACCTNBR AS SHAREACCTNBR, NULL AS MEMBERAGREENBR, 1 AS PRIORITY
|
||||
FROM OSIBANK.ACCTACCTROLEPERS a
|
||||
INNER JOIN OSIBANK.ACCTROLE a2 ON a.ACCTROLECD = a2.ACCTROLECD AND a2.TRANSACTYN = 'Y'
|
||||
INNER JOIN ACCT a3 ON a.ACCTNBR IN (a3.ACCTNBR, a3.STMTACCTNBR)
|
||||
LEFT OUTER JOIN MEMBERAGREEMENT e ON e.SHAREACCTNBR = a3.STMTACCTNBR
|
||||
WHERE a.EFFDATE <= CURRENT_DATE
|
||||
AND a.EFFDATE IS NOT NULL
|
||||
) n
|
||||
INNER JOIN (
|
||||
SELECT DISTINCT p2.PERSNBR
|
||||
FROM PERSPHONE p2
|
||||
WHERE p2.AREACD||p2.EXCHANGE||p2.PHONENBR = :phoneNumber
|
||||
FETCH FIRST 50 ROWS ONLY
|
||||
) l ON l.PERSNBR = n.PERSNBR
|
||||
GROUP BY (n.PERSNBR, n.SHAREACCTNBR)
|
||||
ORDER BY (MAX(n.PRIORITY))
|
||||
)
|
||||
,Person AS
|
||||
(
|
||||
SELECT DISTINCT e.FIRSTNAME||COALESCE(nullif(' '||e.MDLINIT,' '), '')||' '||e.LASTNAME AS PERSONNAME, l.PERSNBR, l.MEMBERAGREENBR, l.SHAREACCTNBR
|
||||
FROM OSIBANK.PERS e
|
||||
INNER JOIN PersonLookup l ON l.PERSNBR=e.PERSNBR
|
||||
)
|
||||
,Phone_list AS
|
||||
(
|
||||
SELECT DISTINCT p.PERSNBR, p.AREACD||p.EXCHANGE||p.PHONENBR AS phone_number, p.PHONEUSECD AS phone_type, p.PHONESEQ,
|
||||
ROW_NUMBER () OVER(PARTITION BY p.PERSNBR, p.PHONEUSECD ORDER BY PREFERREDYN DESC, p.PHONESEQ DESC) AS rn
|
||||
FROM OSIBANK.PERSPHONE p
|
||||
INNER JOIN PersonLookup l ON l.PERSNBR=p.PERSNBR
|
||||
WHERE p.PHONEUSECD IN ('PER', 'CELL', 'BUS')
|
||||
)
|
||||
,phone_part AS
|
||||
(
|
||||
SELECT * FROM
|
||||
(
|
||||
SELECT PERSNBR, phone_type, phone_number
|
||||
FROM Phone_list
|
||||
WHERE rn=1
|
||||
)
|
||||
PIVOT
|
||||
(
|
||||
MAX(phone_number) FOR phone_type IN ('PER' AS Home_Phone, 'CELL' AS Cell_Phone, 'BUS' AS Business_Phone)
|
||||
)
|
||||
)
|
||||
,SharedAcctTran AS
|
||||
(
|
||||
SELECT t.ACCTNBR, a.PERSNBR, t.RTXNTYPCD, t.ORIGPOSTDATE, t.TRANAMT, a.SHAREACCTNBR,
|
||||
CASE WHEN t.RTXNTYPCD = 'WTH' THEN 'WTH'
|
||||
WHEN t.RTXNTYPCD IN ('DEP', 'XDEP') THEN 'DEP' END AS TransType
|
||||
FROM PersonLookup a
|
||||
INNER JOIN OSIBANK.RTXN t ON t.ACCTNBR=a.SHAREACCTNBR AND t.RTXNTYPCD IN ('WTH','DEP','XDEP')
|
||||
ORDER BY t.ORIGPOSTDATE DESC
|
||||
FETCH FIRST 1000 ROWS ONLY
|
||||
)
|
||||
,SharedAcctTranOrder AS
|
||||
(
|
||||
SELECT ACCTNBR, PERSNBR, ORIGPOSTDATE, TRANAMT, RTXNTYPCD, TransType, SHAREACCTNBR,
|
||||
ROW_NUMBER() OVER(PARTITION BY ACCTNBR, TransType ORDER BY ORIGPOSTDATE DESC) AS rn
|
||||
FROM SharedAcctTran
|
||||
)
|
||||
,SharedAcctTran_Part AS
|
||||
(
|
||||
SELECT ACCTNBR, PERSNBR, TransType, SHAREACCTNBR,
|
||||
CASE WHEN TransType='WTH' THEN ORIGPOSTDATE END AS Last_ShareAcct_Withdrawal_DateTime,
|
||||
CASE WHEN TransType='DEP' THEN ORIGPOSTDATE END AS Last_Share_Deposit_Date,
|
||||
CASE WHEN TransType='DEP' THEN TRANAMT END AS Last_Share_Deposit_Amount
|
||||
FROM SharedAcctTranOrder
|
||||
WHERE rn=1
|
||||
)
|
||||
,Autoloan_Part AS
|
||||
(
|
||||
SELECT DISTINCT MAX(l.PERSNBR) AS PERSNBR, MAX(pr.PROPDESC) AS PROPDESC
|
||||
FROM OSIBANK.ACCT a
|
||||
INNER JOIN PersonLookup l ON a.ACCTNBR = l.SHAREACCTNBR OR a.TAXRPTFORPERSNBR = l.PERSNBR
|
||||
INNER JOIN OSIBANK.ACCTPROP AP ON AP.ACCTNBR=a.ACCTNBR
|
||||
INNER JOIN OSIBANK.prop pr ON pr.propnbr=ap.PROPNBR
|
||||
WHERE a.MJACCTTYPCD='CNS'
|
||||
AND a.CURRMIACCTTYPCD IN ('DL01','DL02','DL03','DL04','DV01','DV02','DV03','DV04')
|
||||
GROUP BY (l.PERSNBR)
|
||||
ORDER BY a.CONTRACTDATE DESC
|
||||
)
|
||||
SELECT DISTINCT
|
||||
MAX(p.PERSNBR) AS PersonNumber,
|
||||
MAX(e.PERSONNAME) AS PERSONNAME,
|
||||
MAX(e.MEMBERAGREENBR) AS MemberNumber,
|
||||
MAX(p.Home_Phone) AS HomePhone,
|
||||
MAX(p.Cell_Phone) AS CellPhone,
|
||||
MAX(p.Business_Phone) AS BusinessPhone,
|
||||
MAX(w.Last_ShareAcct_Withdrawal_DateTime) AS LastShareAcctWithdrawalTime,
|
||||
MAX(d.Last_Share_Deposit_Date) AS LastShareDepositDate,
|
||||
MAX(d.Last_Share_Deposit_Amount) AS LastShareDepositAmount,
|
||||
MAX(l.PROPDESC) AS VehicleYearMakeModelVin,
|
||||
MAX(puf.VALUE) AS PassPhrase
|
||||
FROM phone_part p
|
||||
LEFT JOIN Person e ON p.PERSNBR=e.PERSNBR
|
||||
LEFT JOIN PERSUSERFIELD puf on p.PERSNBR=puf.PERSNBR AND puf.userfieldcd='PASS'
|
||||
LEFT JOIN SharedAcctTran_Part w ON e.SHAREACCTNBR=w.SHAREACCTNBR AND w.TransType='WTH'
|
||||
LEFT JOIN SharedAcctTran_Part d ON e.SHAREACCTNBR=d.SHAREACCTNBR AND d.TransType='DEP'
|
||||
LEFT JOIN Autoloan_Part l ON p.PERSNBR=l.PERSNBR
|
||||
GROUP BY (p.PERSNBR)
|
||||
FETCH FIRST 2 ROWS ONLY
|
||||
+143
@@ -0,0 +1,143 @@
|
||||
/*New Activity Manager Incentive Referral Query
|
||||
----------------------------------
|
||||
DESCRIPTION:
|
||||
Get all Activity Manager entries associated with incented referrals.
|
||||
|
||||
Supplies Activity Data, Associate Name information, as well as the Agreement Number, Card Status (Should always be ISS (issue)),
|
||||
CardAgreementTypeCd, AccountNumber for the associated agreement as well as the account status at time the activity was generated.
|
||||
|
||||
RETURNS: Models/Activity/ActivityManagerIncentiveReferral.cs
|
||||
|
||||
PARAMS:
|
||||
|
||||
|afterActivityOd : Null or Int (as string)
|
||||
|------------------------------------------------------------------------------
|
||||
|Returns all Activity Manager entries with a ID after the supplied ID
|
||||
|If null defaults to -1 which will return all Checking SalesActivities
|
||||
|
||||
|newerThanOriginationDate : Null or Datetime in format 'YYYY-MM-DD HH24:MI:SS' (as string)
|
||||
|-----------------------------------------------------------------------------
|
||||
|Returns all Activity Manager entries that were created after specified date time.
|
||||
|The origination date is always the date that the activity was first entered into the system
|
||||
|regardless of its initial station or what station it is in now
|
||||
|If null defaults to '0001-01-01 00:00:00' which is oracles MIN Date time, this effectively
|
||||
|returns all Checking Sales Activities
|
||||
|
||||
NOTES:
|
||||
- When an activity's station is updated, its activity stays the same, but its created date and date last maintained
|
||||
dates are updated to the StationDate. They are always with respect to the current station. To get the date that
|
||||
the activity first entered activity manager, use OriginationDate
|
||||
|
||||
- When a referral is for a business the LF_PERS.EXTID3 column has a O in front of the OrgNbr,
|
||||
When a referral is for a person the LFPERS.EXTID3 coulumn has a P in front of the PersNbr
|
||||
|
||||
- Remember that these fields are all entered manually by an employee. This should not be used as a source of truth for any given activity.
|
||||
This data is supplied with the intention of matching this referral to a sale. It is the best plan to focus on the referred person,
|
||||
and manually query for related accounts as opposed to using the 'custom fields'. We include them here for audit purposes.
|
||||
|
||||
CUSTOM FIELD INFO (ActivityManager.LF_LEAD_CUSTOM):
|
||||
Credit Card Balance Transfer
|
||||
--LeadCust_39 = External CC Account Number
|
||||
--LeadCust_31 = Landmark Credit Card Number
|
||||
--LeadCust_29 = Transfer Ammount
|
||||
--LeadCust_28 = Payment State + Zip
|
||||
--LeadCust_27 = Payment City
|
||||
--LeadCust_26 = Payment Address Line 1
|
||||
--LeadCust_24 = Transfer Institution
|
||||
|
||||
Direct Deposit
|
||||
--LeadCust_38 = Direct Deposit is Qualified Referral
|
||||
--LeadCust_4 = Direct Deposit Account Number
|
||||
|
||||
LF_PERSON-><COMM{int}TYPE>
|
||||
B = PAGER
|
||||
C = MOBILE
|
||||
E = BUSINESS EMAIL
|
||||
F = FAX
|
||||
H = HOME
|
||||
J = PERSONAL EMAIL
|
||||
P = PHONE
|
||||
*/
|
||||
|
||||
WITH EmployeeEmail AS (
|
||||
SELECT pers.USERID AS SafUserId,
|
||||
prod.PERSNBR AS SafPersNbr,
|
||||
prod.PRODPERSID AS CorePersNbr,
|
||||
addr.TEXT AS EmployeeEmail
|
||||
FROM SAF.PERSUSER pers
|
||||
JOIN SAF.PERSPROD prod ON
|
||||
pers.PERSNBR = PROD.PERSNBR
|
||||
AND prod.PRODNBR = '3'
|
||||
JOIN OSIBANK.PERSADDRUSE paddr ON
|
||||
prod.PRODPERSID = PADDR.PERSNBR
|
||||
JOIN OSIBANK.ADDRLINE addr ON
|
||||
paddr.ADDRNBR = addr.ADDRNBR
|
||||
AND paddr.ADDRUSECD = 'EBUS'
|
||||
)
|
||||
SELECT ll.ID AS ActivityId,
|
||||
-- These custom fields can be reused, guarentee their contents by only using them for their respective campaigns
|
||||
(CASE WHEN ll.CAMPAIGN = 'CC Balance Transfer' THEN llc.LEADCUST_31 ELSE NULL END) AS LandmarkCreditCardNumber,
|
||||
(CASE WHEN ll.CAMPAIGN = 'Direct Deposit' THEN llc.LEADCUST_4 ELSE NULL END) AS DirectDepositAccountNumber,
|
||||
ll.ORIGINATOR AS OriginatorUserId,
|
||||
safprod.PRODPERSID AS OriginatorPersNbr,
|
||||
p.FIRSTNAME AS OriginatorFirstName,
|
||||
p.LASTNAME AS OriginatorLastName,
|
||||
p.MDLINIT AS OriginatorMiddleInitial,
|
||||
ee.EmployeeEmail AS EmployeeEmail,
|
||||
ll.CAMPAIGN AS Campaign,
|
||||
ll.CATEGORY AS Category,
|
||||
ll.STATION AS ReferralStation,
|
||||
ll.DATELASTMAINT AS LastUpdatedDateTime,
|
||||
(CASE WHEN att.INITIAL_STATION = 'Yes' THEN 1 ELSE 0 END) AS IsInitialStation,
|
||||
(CASE WHEN att.FINAL_STATION = 'Yes' THEN 1 ELSE 0 END) AS IsFinalStation,
|
||||
att.ACTIVITY_ORIGINATION_DATE AS OriginationDateTime,
|
||||
att.ENTER_STATION_DATETIME AS StationDateTime,
|
||||
ll.SOURCE AS OriginatingBranchName,
|
||||
(CASE WHEN SUBSTR(lp.EXTID3, 1, 1) = 'P' THEN REGEXP_SUBSTR(lp.EXTID3, '\d+') ELSE NULL END) AS ReferredPersonNbr,
|
||||
(CASE WHEN SUBSTR(lp.EXTID3, 1, 1) = 'O' THEN REGEXP_SUBSTR(lp.EXTID3, '\d+') ELSE NULL END) AS ReferredOrgNbr,
|
||||
CASE WHEN REFPERS.LASTNAME IS NOT NULL THEN CONCAT(CONCAT(REFPERS.LASTNAMEUPPER, ','), REFPERS.FIRSTNAMEUPPER)
|
||||
WHEN lp.LastName IS NOT NULL THEN CONCAT(CONCAT(UPPER(lp.LastName), ','), UPPER(lp.FirstName)) ELSE NULL END AS ReferredPersonName,
|
||||
REFORG.ORGNAME AS ReferredOrgName,
|
||||
lp.EXTID3 AS ReferredPersOrgNbr,
|
||||
lp.PREFERRED_PHONE AS PreferredPhone,
|
||||
COALESCE(lp.COMM1, '') AS COMM1,
|
||||
COALESCE(lp.COMM2, '') AS COMM2,
|
||||
COALESCE(lp.COMM3, '') AS COMM3,
|
||||
COALESCE(lp.COMM4, '') AS COMM4,
|
||||
COALESCE(lp.COMM5, '') AS COMM5,
|
||||
COALESCE(lp.COMM6, '') AS COMM6,
|
||||
COALESCE(lp.COMM7, '') AS COMM7
|
||||
FROM ACTIVITYMANAGER.LF_LEAD ll
|
||||
JOIN ACTIVITYMANAGER.LF_LEAD_CUSTOM llc ON
|
||||
ll.ID = llc.ID
|
||||
JOIN SAF.PERSUSER safp ON
|
||||
safp.USERID = ll.ORIGINATOR
|
||||
JOIN SAF.PERSPROD safprod ON
|
||||
SAFPROD.PERSNBR = safp.PERSNBR AND
|
||||
SAFPROD.PRODNBR = '3'
|
||||
JOIN OSIBANK.PERS p ON
|
||||
p.PERSNBR = SAFPROD.PRODPERSID
|
||||
LEFT JOIN EmployeeEmail ee ON
|
||||
ee.SafPersNbr = SAFP.PERSNBR
|
||||
JOIN ACTIVITYMANAGER.LF_PERSON lp ON
|
||||
lp.ID = ll.PERSONID
|
||||
JOIN ACTIVITYMANAGER.ACTIVITY_TIME_TRACKING att
|
||||
ON att.ACTIVITY_ID = ll.ID AND SEQUENCE_NUMBER = (
|
||||
SELECT MAX(SEQUENCE_NUMBER)
|
||||
FROM ACTIVITYMANAGER.ACTIVITY_TIME_TRACKING att2
|
||||
WHERE att2.ACTIVITY_ID = ll.ID
|
||||
)
|
||||
LEFT JOIN OSIBANK.ORG REFORG ON reforg.ORGNBR = (CASE WHEN SUBSTR(lp.EXTID3, 1, 1) = 'O' THEN REGEXP_SUBSTR(lp.EXTID3, '\d+') ELSE NULL END)
|
||||
LEFT JOIN OSIBANK.PERS REFPERS ON refpers.PERSNBR = (CASE WHEN SUBSTR(lp.EXTID3, 1, 1) = 'P' THEN REGEXP_SUBSTR(lp.EXTID3, '\d+') ELSE NULL END)
|
||||
WHERE ll.CAMPAIGN IN (
|
||||
'ATM Card',
|
||||
'Check Card Referral',
|
||||
'Checking Referral',
|
||||
'Direct Deposit',
|
||||
'CC Balance Transfer',
|
||||
'Mortgage Referral',
|
||||
'LIC Referral',
|
||||
'First Mortgage Referral',
|
||||
'eStatement Referral')
|
||||
AND ll.ID > TO_NUMBER(COALESCE(:afterActivityId, '-1'))
|
||||
AND att.ACTIVITY_ORIGINATION_DATE >= TO_TIMESTAMP(COALESCE(:newerThanOriginationDate, '0001-01-01 00:00:00'), 'YYYY-MM-DD HH24:MI:SS')
|
||||
+136
@@ -0,0 +1,136 @@
|
||||
/*New ATM/Check Cards Sale Query
|
||||
----------------------------------
|
||||
DESCRIPTION:
|
||||
Get all Activities related to New Check or ATM Cards (ActvType = AGRE and SubActivity contains a change
|
||||
to the 'CardAgreement' table where the AgreeTypCd = 'DBT', 'DBT2', 'BDBT', 'ATM')
|
||||
after a supplied DateTime (inclusive) or after a supplied ActivityNumber (not inclusive) or both.
|
||||
|
||||
Supplies Activity Data, Associate Name information, as well as the Agreement Number, Card Status (Should always be ISS (issue)),
|
||||
CardAgreementTypeCd, AccountNumber for the associated agreement as well as the account status at time the activity was generated.
|
||||
|
||||
RETURNS: Models/Activity/NewAtmCheckCardActivity.cs
|
||||
|
||||
PARAMS:
|
||||
|
||||
|afterActivityNbr : Null or Int (as string)
|
||||
|------------------------------------------------------------------------------
|
||||
|Returns all Checking Sales with ActivityNbrs larger than the supplied number.
|
||||
|If null defaults to -1 which will return all Checking SalesActivities
|
||||
|
||||
|newerThanDateTime : Null or Datetime in format 'YYYY-MM-DD HH24:MI:SS' (as string)
|
||||
|-----------------------------------------------------------------------------
|
||||
|Returns all Checking Sales with ActivityNbrs that occured on or after the supplied date
|
||||
|If null defaults to '0001-01-01 00:00:00' which is oracles MIN Date time, this effectively
|
||||
|returns all Checking Sales Activities
|
||||
|
||||
|limitAmount : Null or Int (as string)
|
||||
|------------------------------------------------------------------------------
|
||||
|Return record count
|
||||
|If null defaults to '100'
|
||||
|
||||
NOTES:
|
||||
- 'AGRE' activity is an activity related to a change or update to an agreement
|
||||
- 'DBT', 'DBT2', 'BDBT' abd 'ATM are the only CardTypes that are incented
|
||||
|
||||
- This will return all new ATM/Check card sales, even those that were created when a new account was created,
|
||||
Note that these are not incented. Uncommment the line in the where clause to filter out unincented accounts.
|
||||
|
||||
- Though not explicitly filtered these results will only include cards in the 'ISS' issued status. This is because
|
||||
of the join with CARDMEMBERISSUEHIST
|
||||
|
||||
- The AcctStatDuringActivity column is the last status of the account (from ACCTACCTSTATHIST table) before or when
|
||||
the activity occured. We do not return the current status at the time of the query.
|
||||
|
||||
- When Card is in APPR state, sometimes personNbr will be missing. When creating this query there were no situations
|
||||
Where the cards was in ACT state and did not have a person number assigned to them
|
||||
*/
|
||||
WITH EmployeeEmail AS (
|
||||
SELECT p.PERSNBR As CorePersNbr,
|
||||
addr.TEXT AS EmployeeEmail
|
||||
FROM OSIBANK.PERSEMPL p
|
||||
JOIN OSIBANK.PERSADDRUSE paddr ON
|
||||
p.PERSNBR = PADDR.PERSNBR
|
||||
JOIN OSIBANK.ADDRLINE addr ON
|
||||
paddr.ADDRNBR = addr.ADDRNBR
|
||||
AND paddr.ADDRUSECD = 'EBUS'
|
||||
),
|
||||
ActivitySubActivity AS (
|
||||
SELECT *
|
||||
FROM OSIBANK.ACTVSUBACTV asa
|
||||
WHERE asa.TABLEID = 'CardAgreement'
|
||||
),
|
||||
AGREEMENTACTIVITYDATA AS (
|
||||
SELECT a.ACTVNBR AS ActivityNbr,
|
||||
a.ACTVDATETIME AS ActivityDateTime,
|
||||
a.RESPPERSNBR AS ResponsiblePersonNbr,
|
||||
a.ACTVTYPCD AS ActivityTypeCde,
|
||||
-- CardAgreement table has only one row in value table. Other rows may have duplicate unmatching data for Non-owner users
|
||||
max(CASE WHEN asa.COLUMNID = 'AgreeNbr' THEN asa.NEWVALUE END) AS AgreementNbr,
|
||||
max(CASE WHEN asa.COLUMNID = 'AgreeTypCd' THEN asa.NEWVALUE END) AS CardState,
|
||||
max(CASE WHEN asa.COLUMNID = 'AgreeTypCd' THEN asa.NEWVALUE END) AS CardType,
|
||||
max(CASE WHEN asa.COLUMNID = 'ServChgAcctNbr' THEN asa.NEWVALUE END) AS AccountNbr,
|
||||
max(CASE WHEN asa.COLUMNID = 'OwnerPersNbr' THEN asa.NEWVALUE END) AS OwnerPersonNbr,
|
||||
max(CASE WHEN asa.COLUMNID = 'OwnerOrgNbr' THEN asa.NEWVALUE END) AS OwnerOrgNbr
|
||||
FROM OSIBANK.ACTV a
|
||||
LEFT JOIN ActivitySubActivity asa ON asa.ACTVNBR = a.ACTVNBR
|
||||
WHERE a.ACTVTYPCD = 'AGRE'
|
||||
GROUP BY a.ACTVNBR, a.ACTVDATETIME, a.RESPPERSNBR, a.ACTVTYPCD
|
||||
),
|
||||
PHONEMETADATA AS (
|
||||
SELECT p.PERSNBR,
|
||||
LISTAGG((pp.AREACD || pp.EXCHANGE || pp.PHONENBR), ',') AS PhoneNumbers
|
||||
FROM OSIBANK.PERS p
|
||||
LEFT JOIN OSIBANK.PERSPHONE pp ON p.PERSNBR = pp.PERSNBR AND pp.PHONEUSECD != 'BUS'
|
||||
GROUP BY p.PERSNBR
|
||||
),
|
||||
EMAILMETADATA AS (
|
||||
SELECT p.PERSNBR,
|
||||
LISTAGG(al.TEXT, ',') AS EmailAddresses
|
||||
FROM OSIBANK.PERS p
|
||||
LEFT JOIN OSIBANK.PERSADDRUSE pa ON p.PERSNBR = pa.PERSNBR AND pa.ADDRUSECD IN ('EHOM', 'EML')
|
||||
LEFT JOIN OSIBANK.ADDRLINE al ON pa.ADDRNBR = al.ADDRNBR AND al.LINENBR = 1
|
||||
GROUP BY p.PERSNBR
|
||||
)
|
||||
SELECT ActvData.*,
|
||||
acc.CURRACCTSTATCD AS AcctStatAtQueryTime,
|
||||
hist.ACCTSTATCD AS AcctStateAtActivity,
|
||||
hist.EFFDATETIME AS AcctStateEffDateTime,
|
||||
p.FIRSTNAME AS AssociateFirst,
|
||||
p.LASTNAME AS AssociateLast,
|
||||
p.MDLINIT AS AssociateMiddleInit,
|
||||
CASE
|
||||
WHEN acc.TAXRPTFORPERSNBR IS NOT NULL THEN CONCAT(CONCAT(TAXPERS.LASTNAMEUPPER, ','), TAXPERS.FIRSTNAMEUPPER)
|
||||
ELSE NULL
|
||||
END AS TaxPersonName,
|
||||
TAXORG.ORGNAME AS TaxOrgName,
|
||||
ee.EmployeeEmail AS EmployeeEmail,
|
||||
pmd.PhoneNumbers AS TaxPersonPhoneNumbers,
|
||||
emd.EmailAddresses AS TaxPersonEmailAddresses
|
||||
FROM AGREEMENTACTIVITYDATA ActvData
|
||||
-- Sometimes a card activity shows up with identical data but a different date time Seconds apart.
|
||||
-- There seems to always be an entry created in CARDMEMBERISSUEHIST that has one record matching these timestamps
|
||||
JOIN OSIBANK.CARDMEMBERISSUEHIST c ON
|
||||
c.AGREENBR = ActvData.AgreementNbr
|
||||
AND c.EFFDATETIME = ActvData.ActivityDateTime
|
||||
JOIN OSIBANK.ACCT acc ON acc.ACCTNBR = ActvData.AccountNbr
|
||||
LEFT JOIN OSIBANK.PERS taxpers ON ActvData.OwnerPersonNbr = TAXPERS.PERSNBR
|
||||
LEFT JOIN OSIBANK.ORG taxorg ON ActvData.OwnerOrgNbr = TAXORG.ORGNBR
|
||||
--Check for most recent account status before the Activity was recorded
|
||||
--This has been verified to not produce duplicate rows and not eliminate rows
|
||||
JOIN OSIBANK.ACCTACCTSTATHIST hist ON ActvData.AccountNbr = hist.ACCTNBR AND hist.TIMEUNIQUEEXTN = (
|
||||
SELECT MAX(TIMEUNIQUEEXTN)
|
||||
FROM OSIBANK.ACCTACCTSTATHIST histsearch
|
||||
WHERE histsearch.EFFDATETIME <= ActvData.ActivityDateTime
|
||||
AND histsearch.ACCTNBR = ActvData.AccountNbr
|
||||
)
|
||||
JOIN OSIBANK.PERS p ON ActvData.ResponsiblePersonNbr = p.PERSNBR
|
||||
JOIN EmployeeEmail ee ON ActvData.ResponsiblePersonNbr = ee.CorePersNbr
|
||||
LEFT JOIN PHONEMETADATA pmd ON taxpers.PERSNBR = pmd.PERSNBR
|
||||
LEFT JOIN EMAILMETADATA emd ON taxpers.PERSNBR = emd.PERSNBR
|
||||
WHERE (ActvData.AgreementNbr IS NOT NULL AND ActvData.CardState IS NOT NULL AND ActvData.CARDTYPE IS NOT NULL)
|
||||
AND ActvData.CardType IN ('DBT', 'DBT2', 'BDBT', 'ATM')
|
||||
--AND ACCTSTATCD = 'ACT' (Uncomment to only return cards that we issued to active accounts)
|
||||
AND ActivityNbr > TO_NUMBER(COALESCE(:afterActivityNbr, '-1'))
|
||||
AND ActivityDateTime >= TO_TIMESTAMP(COALESCE(:newerThanDateTime, '0001-01-01 00:00:00'), 'YYYY-MM-DD HH24:MI:SS')
|
||||
ORDER BY ActvData.ActivityDateTime ASC
|
||||
FETCH NEXT TO_NUMBER(COALESCE(:limitAmount, '100')) ROWS ONLY
|
||||
+126
@@ -0,0 +1,126 @@
|
||||
/*New Checking Account Sale Query
|
||||
----------------------------------
|
||||
DESCRIPTION:
|
||||
Get all Activities related to New checking accounts (ActvType = AADD and AccountType = 'Checking')
|
||||
after a supplied DateTime (inclusive) or after a supplied ActivityNumber (not inclusive) or both.
|
||||
Supplies Activity Data as well as the Account Number of the new account and the account status at the time of querying
|
||||
|
||||
RETURNS: Models/Activity/NewCheckingAccountActivity.cs
|
||||
|
||||
PARAMS:
|
||||
|
||||
|afterActivityNbr : Null or Int (as string)
|
||||
|------------------------------------------------------------------------------
|
||||
|Returns all Checking Sales with ActivityNbrs larger than the supplied number.
|
||||
|If null defaults to -1 which will return all Checking SalesActivities
|
||||
|
||||
|newerThanDateTime : Null or Datetime in format 'YYYY-MM-DD HH24:MI:SS' (as string)
|
||||
|-----------------------------------------------------------------------------
|
||||
|Returns all Checking Sales with ActivityNbrs that occured on or after the supplied date
|
||||
|If null defaults to '0001-01-01 00:00:00' which is oracles MIN Date time, this effectively
|
||||
|returns all Checking Sales Activities
|
||||
|
||||
|limitAmount : Null or Int (as string)
|
||||
|------------------------------------------------------------------------------
|
||||
|Return record count
|
||||
|If null defaults to '100'
|
||||
|
||||
NOTES:
|
||||
- Activity Type Code 'AADD' are activities related to 'Adding an account'
|
||||
- Limitation: You get the status of the account when querying. This could be different immediately after creation
|
||||
- When Acct is associated with person, the TAXRPTFORPERSNBR will populate, when associated with organizations the
|
||||
when associated with an organization the TAXRPTFORORGNBR will populate
|
||||
- Using both the following sub account filters resulted in the same number of activities to be found (638) and removed duplicates. When neither of these are checked for null values, there are 662 (24 duplicates)
|
||||
1. max(CASE WHEN a2.OLDVALUE = 'Key=' AND a2.TABLEID = 'Acct' AND a2.COLUMNID = 'AcctNbr' AND a2.DATABASEACTVCD = 'UPD' THEN a2.NEWVALUE END) AS SubActivityAccount (638 results)
|
||||
2. max(CASE WHEN a2.COLUMNID = 'ACCTNBR' AND a2.TABLEID = 'ACCT' AND a2.DATABASEACTVCD = 'ADD' THEN a2.NEWVALUE END) AS SubActivityAccount (638 results)
|
||||
|
||||
*/
|
||||
WITH EmployeeEmail AS (
|
||||
SELECT p.PERSNBR As CorePersNbr,
|
||||
addr.TEXT AS EmployeeEmail
|
||||
FROM OSIBANK.PERSEMPL p
|
||||
JOIN OSIBANK.PERSADDRUSE paddr ON
|
||||
p.PERSNBR = PADDR.PERSNBR
|
||||
JOIN OSIBANK.ADDRLINE addr ON
|
||||
paddr.ADDRNBR = addr.ADDRNBR
|
||||
AND paddr.ADDRUSECD = 'EBUS'
|
||||
),
|
||||
OriginalBalance AS (
|
||||
--This assumes there is only 1 Note/Bal sub account for every account
|
||||
--So far that has been true.
|
||||
SELECT ACCTNBR, ORIGBAL
|
||||
FROM OSIBANK.ACCTSUBACCT a2
|
||||
WHERE a2.BALCATCD = 'NOTE'
|
||||
AND a2.BALTYPCD = 'BAL'
|
||||
),
|
||||
ActivitySubActivity AS (
|
||||
SELECT *
|
||||
FROM OSIBANK.ACTVSUBACTV asa
|
||||
WHERE asa.TABLEID = 'Acct'
|
||||
),
|
||||
NEWCHECKINGACTIVITYDATA AS (
|
||||
SELECT a.ACTVNBR AS ActivityNbr,
|
||||
a.ACTVDATETIME AS ActivityDateTime,
|
||||
a.SUBJACCTNBR AS SubjectAccountNbr,
|
||||
a.RESPPERSNBR AS ResponsiblePersonNbr,
|
||||
a.ACTVTYPCD AS ActivityTypeCode,
|
||||
--2 activities are sometimes created for adding an account, only 1 will update the account from key= to the actual account number value
|
||||
max(CASE
|
||||
WHEN asa.OLDVALUE = 'Key=' AND asa.COLUMNID = 'AcctNbr' AND asa.DATABASEACTVCD = 'UPD' THEN asa.NEWVALUE
|
||||
END) AS SubActivityAccount
|
||||
FROM OSIBANK.ACTV a
|
||||
LEFT JOIN ActivitySubActivity asa ON asa.ACTVNBR = a.ACTVNBR
|
||||
WHERE a.ACTVTYPCD = 'AADD'
|
||||
GROUP BY a.ACTVNBR, a.ACTVDATETIME, a.SUBJACCTNBR, a.RESPPERSNBR, a.ACTVTYPCD
|
||||
),
|
||||
PHONEMETADATA AS (
|
||||
SELECT p.PERSNBR,
|
||||
LISTAGG((pp.AREACD || pp.EXCHANGE || pp.PHONENBR), ',') AS PhoneNumbers
|
||||
FROM OSIBANK.PERS p
|
||||
LEFT JOIN OSIBANK.PERSPHONE pp ON p.PERSNBR = pp.PERSNBR AND pp.PHONEUSECD != 'BUS'
|
||||
GROUP BY p.PERSNBR
|
||||
),
|
||||
EMAILMETADATA AS (
|
||||
SELECT p.PERSNBR,
|
||||
LISTAGG(al.TEXT, ',') AS EmailAddresses
|
||||
FROM OSIBANK.PERS p
|
||||
LEFT JOIN OSIBANK.PERSADDRUSE pa ON p.PERSNBR = pa.PERSNBR AND pa.ADDRUSECD IN ('EHOM', 'EML')
|
||||
LEFT JOIN OSIBANK.ADDRLINE al ON pa.ADDRNBR = al.ADDRNBR AND al.LINENBR = 1
|
||||
GROUP BY p.PERSNBR
|
||||
)
|
||||
SELECT ActvData.*,
|
||||
p.FIRSTNAME AS AssociateFirst,
|
||||
p.LASTNAME AS AssociateLast,
|
||||
p.MDLINIT AS AssociateMiddleInit,
|
||||
ee.EmployeeEmail AS EmployeeEmail,
|
||||
acc.CURRACCTSTATCD AS CurrentAccountStatus,
|
||||
acc.TAXRPTFORPERSNBR AS TaxPersonNbr,
|
||||
acc.TAXRPTFORORGNBR AS TaxOrgNbr,
|
||||
CASE
|
||||
WHEN acc.TAXRPTFORPERSNBR IS NOT NULL THEN CONCAT(CONCAT(TAXPERS.LASTNAMEUPPER, ','), TAXPERS.FIRSTNAMEUPPER)
|
||||
ELSE NULL
|
||||
END AS TaxPersonName,
|
||||
TAXORG.ORGNAME AS TaxOrgName,
|
||||
acc.BranchOrgNbr As BranchOrgNbr,
|
||||
acc.CONTRACTDATE AS AccountContractDate,
|
||||
acc.CURRMIACCTTYPCD AS MinorAccountType,
|
||||
org.ORGNAME AS BranchOrgName,
|
||||
ob.ORIGBAL AS OriginalBalance,
|
||||
pmd.PhoneNumbers AS TaxPersonPhoneNumbers,
|
||||
emd.EmailAddresses AS TaxPersonEmailAddresses
|
||||
FROM NEWCHECKINGACTIVITYDATA ActvData
|
||||
JOIN OSIBANK.PERS p ON p.PERSNBR = ActvData.ResponsiblePersonNbr
|
||||
LEFT JOIN EmployeeEmail ee ON ee.CorePersNbr = ActvData.ResponsiblePersonNbr
|
||||
JOIN OSIBANK.ACCT acc ON acc.ACCTNBR = ActvData.SubjectAccountNbr
|
||||
JOIN OSIBANK.ORG org ON acc.BranchOrgNbr = org.ORGNBR
|
||||
LEFT JOIN OSIBANK.PERS taxpers ON acc.TAXRPTFORPERSNBR = TAXPERS.PERSNBR
|
||||
LEFT JOIN OSIBANK.ORG taxorg ON acc.TAXRPTFORORGNBR = TAXORG.ORGNBR
|
||||
LEFT JOIN OriginalBalance ob ON acc.ACCTNBR = ob.AcctNbr
|
||||
LEFT JOIN PHONEMETADATA pmd ON taxpers.PERSNBR = pmd.PERSNBR
|
||||
LEFT JOIN EMAILMETADATA emd ON taxpers.PERSNBR = emd.PERSNBR
|
||||
WHERE ActvData.SubActivityAccount IS NOT NULL
|
||||
AND acc.CURRMIACCTTYPCD IN ('CK04', 'CK01', 'CK02', 'CK03', 'BC10', 'BC20', 'MMC5', 'BOC1', 'BOC2', 'BC01', 'MMC1', 'CK05', 'BC11', 'CK06')
|
||||
AND ActivityNbr > TO_NUMBER(COALESCE(:afterActivityNbr, '-1'))
|
||||
AND ActivityDateTime >= TO_TIMESTAMP(COALESCE(:newerThanDateTime, '0001-01-01 00:00:00'), 'YYYY-MM-DD HH24:MI:SS')
|
||||
ORDER BY ActvData.ActivityDateTime ASC
|
||||
FETCH NEXT TO_NUMBER(COALESCE(:limitAmount, '100')) ROWS ONLY
|
||||
+103
@@ -0,0 +1,103 @@
|
||||
/*New Checking Account Sale Query
|
||||
----------------------------------
|
||||
DESCRIPTION:
|
||||
Get all Activities related to New checking accounts (ActvType = ADAC and AccountType = 'Checking')
|
||||
after a supplied DateTime (inclusive) or after a supplied ActivityNumber (not inclusive) or both.
|
||||
Supplies Activity Data as well as the Account Number of the new account and the account status at the time of querying
|
||||
|
||||
RETURNS: Models/Activity/NewCheckingAccountActivity.cs
|
||||
|
||||
PARAMS:
|
||||
|
||||
|afterActivityNbr : Null or Int (as string)
|
||||
|------------------------------------------------------------------------------
|
||||
|Returns all Checking Sales with ActivityNbrs larger than the supplied number.
|
||||
|If null defaults to -1 which will return all Checking SalesActivities
|
||||
|
||||
|newerThanDateTime : Null or Datetime in format 'YYYY-MM-DD HH24:MI:SS' (as string)
|
||||
|-----------------------------------------------------------------------------
|
||||
|Returns all Checking Sales with ActivityNbrs that occured on or after the supplied date
|
||||
|If null defaults to '0001-01-01 00:00:00' which is oracles MIN Date time, this effectively
|
||||
|returns all Checking Sales Activities
|
||||
|
||||
NOTES:
|
||||
- Activity Type Code 'ADAC' are activities related to 'Adding an account'
|
||||
- Limitation: You get the status of the account when querying. This could be different immediately after creation
|
||||
- When Acct is associated with person, the TAXRPTFORPERSNBR will populate, when associated with organizations the
|
||||
when associated with an organization the TAXRPTFORORGNBR will populate
|
||||
- Using both the following sub account filters resulted in the same number of activities to be found (638) and removed duplicates. When neither of these are checked for null values, there are 662 (24 duplicates)
|
||||
1. max(CASE WHEN a2.OLDVALUE = 'Key=' AND a2.TABLEID = 'Acct' AND a2.COLUMNID = 'AcctNbr' AND a2.DATABASEACTVCD = 'ADD' THEN a2.NEWVALUE END) AS SubActivityAccount (638 results)
|
||||
2. max(CASE WHEN a2.COLUMNID = 'ACCTNBR' AND a2.TABLEID = 'ACCT' AND a2.DATABASEACTVCD = 'ADD' THEN a2.NEWVALUE END) AS SubActivityAccount (638 results)
|
||||
|
||||
*/
|
||||
WITH OriginalBalance AS (
|
||||
--This assumes there is only 1 Note/Bal sub account for every account
|
||||
--So far that has been true.
|
||||
SELECT ACCTNBR, ORIGBAL
|
||||
FROM OSIBANK.ACCTSUBACCT a2
|
||||
WHERE a2.BALCATCD = 'NOTE'
|
||||
AND a2.BALTYPCD = 'BAL'
|
||||
),
|
||||
NEWCHECKINGACTIVITYDATA AS (
|
||||
SELECT a.ACTVNBR AS ActivityNbr,
|
||||
a.ACTVDATETIME AS ActivityDateTime,
|
||||
a.SUBJACCTNBR AS SubjectAccountNbr,
|
||||
a.RESPPERSNBR AS ResponsiblePersonNbr,
|
||||
a.ACTVTYPCD AS ActivityTypeCode,
|
||||
--2 activities are sometimes created for adding an account, only 1 will update the account from key= to the actual account number value
|
||||
max(CASE
|
||||
WHEN asa.OLDVALUE = 'Key=' AND asa.COLUMNID = 'AcctNbr' AND asa.DATABASEACTVCD = 'ADD' THEN asa.NEWVALUE
|
||||
END) AS SubActivityAccount
|
||||
FROM OSIBANK.ACTV a
|
||||
LEFT JOIN OSIBANK.ACTVSUBACTV asa ON asa.ACTVNBR = a.ACTVNBR and asa.TABLEID = 'Acct'
|
||||
WHERE a.ACTVTYPCD = 'ADAC'
|
||||
GROUP BY a.ACTVNBR, a.ACTVDATETIME, a.SUBJACCTNBR, a.RESPPERSNBR, a.ACTVTYPCD
|
||||
),
|
||||
PHONEMETADATA AS (
|
||||
SELECT p.PERSNBR,
|
||||
LISTAGG((pp.AREACD || pp.EXCHANGE || pp.PHONENBR), ',') AS PhoneNumbers
|
||||
FROM OSIBANK.PERS p
|
||||
LEFT JOIN OSIBANK.PERSPHONE pp ON p.PERSNBR = pp.PERSNBR AND pp.PHONEUSECD != 'BUS'
|
||||
GROUP BY p.PERSNBR
|
||||
),
|
||||
EMAILMETADATA AS (
|
||||
SELECT p.PERSNBR,
|
||||
LISTAGG(al.TEXT, ',') AS EmailAddresses
|
||||
FROM OSIBANK.PERS p
|
||||
LEFT JOIN OSIBANK.PERSADDRUSE pa ON p.PERSNBR = pa.PERSNBR AND pa.ADDRUSECD IN ('EHOM', 'EML')
|
||||
LEFT JOIN OSIBANK.ADDRLINE al ON pa.ADDRNBR = al.ADDRNBR AND al.LINENBR = 1
|
||||
GROUP BY p.PERSNBR )
|
||||
SELECT ActvData.*,
|
||||
'Digital' AS AssociateFirst,
|
||||
'Banking' AS AssociateLast,
|
||||
p.MDLINIT AS AssociateMiddleInit,
|
||||
acc.CURRACCTSTATCD AS CurrentAccountStatus,
|
||||
acc.TAXRPTFORPERSNBR AS TaxPersonNbr,
|
||||
acc.TAXRPTFORORGNBR AS TaxOrgNbr,
|
||||
'[email protected]' AS EmployeeEmail, --we will not have employee email for Digital Banking
|
||||
CASE
|
||||
WHEN acc.TAXRPTFORPERSNBR IS NOT NULL THEN CONCAT(CONCAT(TAXPERS.LASTNAMEUPPER, ','), TAXPERS.FIRSTNAMEUPPER)
|
||||
ELSE NULL
|
||||
END AS TaxPersonName,
|
||||
TAXORG.ORGNAME AS TaxOrgName,
|
||||
acc.BranchOrgNbr As BranchOrgNbr,
|
||||
acc.CONTRACTDATE AS AccountContractDate,
|
||||
acc.CURRMIACCTTYPCD AS MinorAccountType,
|
||||
org.ORGNAME AS BranchOrgName,
|
||||
ob.ORIGBAL AS OriginalBalance,
|
||||
pmd.PhoneNumbers AS TaxPersonPhoneNumbers,
|
||||
emd.EmailAddresses AS TaxPersonEmailAddresses
|
||||
FROM NEWCHECKINGACTIVITYDATA ActvData
|
||||
JOIN OSIBANK.PERS p ON p.PERSNBR = ActvData.ResponsiblePersonNbr
|
||||
JOIN OSIBANK.ACCT acc ON acc.ACCTNBR = ActvData.SubjectAccountNbr
|
||||
JOIN OSIBANK.ORG org ON acc.BranchOrgNbr = org.ORGNBR
|
||||
LEFT JOIN OSIBANK.PERS taxpers ON acc.TAXRPTFORPERSNBR = TAXPERS.PERSNBR
|
||||
LEFT JOIN OSIBANK.ORG taxorg ON acc.TAXRPTFORORGNBR = TAXORG.ORGNBR
|
||||
LEFT JOIN OriginalBalance ob ON acc.ACCTNBR = ob.AcctNbr
|
||||
LEFT JOIN PHONEMETADATA pmd ON taxpers.PERSNBR = pmd.PERSNBR
|
||||
LEFT JOIN EMAILMETADATA emd ON taxpers.PERSNBR = emd.PERSNBR
|
||||
WHERE acc.CURRMIACCTTYPCD IN ('CK04', 'CK01', 'CK02', 'CK03', 'BC10', 'BC20', 'MMC5', 'BOC1', 'BOC2', 'BC01', 'MMC1', 'CK05', 'BC11', 'CK06')
|
||||
AND ActivityNbr > TO_NUMBER(COALESCE(:afterActivityNbr, '-1'))
|
||||
AND ActivityDateTime >= TO_TIMESTAMP(COALESCE(:newerThanDateTime, '0001-01-01 00:00:00'), 'YYYY-MM-DD HH24:MI:SS')
|
||||
ORDER BY ActvData.ActivityDateTime ASC
|
||||
FETCH NEXT TO_NUMBER(COALESCE(:limitAmount, '200')) ROWS ONLY
|
||||
+175
@@ -0,0 +1,175 @@
|
||||
/*New Debt Protected Loan Sale Query
|
||||
----------------------------------
|
||||
DESCRIPTION:
|
||||
All activities related to new loans that can have debt protection associated with them, but are not
|
||||
incentivised like Mortgages and Vehicles.
|
||||
|
||||
RETURNS: Models/Activity/NewCheckingAccountActivity.cs
|
||||
|
||||
PARAMS:
|
||||
|
||||
|afterActivityNbr : Null or Int (as string)
|
||||
|------------------------------------------------------------------------------
|
||||
|Returns all Sales with ActivityNbrs larger than the supplied number.
|
||||
|If null defaults to -1 which will return all Checking SalesActivities
|
||||
|
||||
|newerThanDateTime : Null or Datetime in format 'YYYY-MM-DD HH24:MI:SS' (as string)
|
||||
|-----------------------------------------------------------------------------
|
||||
|Returns all Sales with ActivityNbrs that occured on or after the supplied date
|
||||
|If null defaults to '0001-01-01 00:00:00' which is oracles MIN Date time, this effectively
|
||||
|returns all Checking Sales Activities
|
||||
|
||||
NOTES:
|
||||
- Use ContractDate as the date of the sale. This is the day that the customer signs for the loan. There is a legal grace-period between
|
||||
When a loan is signed and when the loan is booked into the banking system. This is why there is a gap between contract date and activity date.
|
||||
-Only need to know if an account has debt protection not how many debt protection policies the account has. We select the earliest sold
|
||||
debt protection and add the date and type to signify that the loan has debt protection
|
||||
- LADD type activities seem to produce duplicates occasionally, None were found for mortgage type accounts
|
||||
*/
|
||||
WITH EmployeeEmail AS (
|
||||
SELECT p.PERSNBR As CorePersNbr,
|
||||
addr.TEXT AS EmployeeEmail
|
||||
FROM OSIBANK.PERSEMPL p
|
||||
JOIN OSIBANK.PERSADDRUSE paddr ON
|
||||
p.PERSNBR = PADDR.PERSNBR
|
||||
JOIN OSIBANK.ADDRLINE addr ON
|
||||
paddr.ADDRNBR = addr.ADDRNBR
|
||||
AND paddr.ADDRUSECD = 'EBUS'
|
||||
),
|
||||
OriginatorRole AS (
|
||||
SELECT ACCTNBR, PERSNBR, ACCTROLECD, DATELASTMAINT, EFFDATE
|
||||
from OSIBANK.ACCTACCTROLEPERS a
|
||||
WHERE ACCTROLECD = 'OEMP'
|
||||
GROUP BY ACCTNBR, ACCTROLECD, DATELASTMAINT, EFFDATE, PERSNBR
|
||||
HAVING DATELASTMAINT = MAX(DATELASTMAINT)
|
||||
),
|
||||
LoanLimit AS (
|
||||
SELECT a2.ACCTNBR, a2.CREDITLIMITAMT, a2.DATELASTMAINT
|
||||
FROM OSIBANK.ACCTLOANLIMITHIST a2
|
||||
WHERE a2.CREDITLIMITAMT > '0'
|
||||
GROUP BY a2.ACCTNBR, a2.CREDITLIMITAMT, a2.DATELASTMAINT
|
||||
HAVING MIN(a2.DATELASTMAINT) = a2.DATELASTMAINT
|
||||
ORDER BY CREDITLIMITAMT
|
||||
),
|
||||
OriginalBalance AS (
|
||||
--This assumes there is only 1 Note/Bal sub account for every account
|
||||
--So far that has been true.
|
||||
SELECT ACCTNBR, ORIGBAL
|
||||
FROM OSIBANK.ACCTSUBACCT a2
|
||||
WHERE a2.BALCATCD = 'NOTE'
|
||||
AND a2.BALTYPCD = 'BAL'
|
||||
),
|
||||
DebtProtection AS (
|
||||
SELECT a.ACCTNBR,
|
||||
MIN(var.CALCTYPEFFDATE) AS EffectiveDate,
|
||||
a.BALCATCD
|
||||
FROM OSIBANK.ACCTSUBACCT a
|
||||
INNER JOIN (
|
||||
SELECT ACCTNBR, MIN(SUBACCTNBR) AS SUBACCTNBR
|
||||
FROM OSIBANK.ACCTSUBACCT sa
|
||||
WHERE sa.BALTYPCD = 'SINS'
|
||||
GROUP BY ACCTNBR
|
||||
) b ON a.ACCTNBR = b.ACCTNBR AND a.SUBACCTNBR = b.SUBACCTNBR
|
||||
INNER JOIN OSIBANK.ACCTSUBACCTCALCVAR var ON var.ACCTNBR = a.ACCTNBR AND a.SUBACCTNBR = var.SUBACCTNBR
|
||||
GROUP BY a.ACCTNBR, var.CALCTYPEFFDATE, a.BALCATCD
|
||||
),
|
||||
BorrowerAge AS (
|
||||
SELECT a.ACCTNBR, MAX(p.DATEBIRTH) AS YoungestBirthdate
|
||||
FROM OSIBANK.ACCTACCTROLEPERS a
|
||||
LEFT JOIN OSIBANK.ACCT acc ON a.ACCTNBR = acc.ACCTNBR
|
||||
LEFT JOIN OSIBANK.ACCTROLE r ON r.ACCTROLECD = a.ACCTROLECD
|
||||
LEFT JOIN OSIBANK.PERS p ON a.PERSNBR = p.PERSNBR
|
||||
WHERE a.ACCTROLECD IN ('TRO', 'NTO', 'SIGN')
|
||||
AND (p.DATEDEATH IS NULL OR p.DATEDEATH > acc.CONTRACTDATE)
|
||||
GROUP BY a.ACCTNBR
|
||||
),
|
||||
PHONEMETADATA AS (
|
||||
SELECT p.PERSNBR,
|
||||
LISTAGG((pp.AREACD || pp.EXCHANGE || pp.PHONENBR), ',') AS PhoneNumbers
|
||||
FROM OSIBANK.PERS p
|
||||
LEFT JOIN OSIBANK.PERSPHONE pp ON p.PERSNBR = pp.PERSNBR AND pp.PHONEUSECD != 'BUS'
|
||||
GROUP BY p.PERSNBR
|
||||
),
|
||||
EMAILMETADATA AS (
|
||||
SELECT p.PERSNBR,
|
||||
LISTAGG(al.TEXT, ',') AS EmailAddresses
|
||||
FROM OSIBANK.PERS p
|
||||
LEFT JOIN OSIBANK.PERSADDRUSE pa ON p.PERSNBR = pa.PERSNBR AND pa.ADDRUSECD IN ('EHOM', 'EML')
|
||||
LEFT JOIN OSIBANK.ADDRLINE al ON pa.ADDRNBR = al.ADDRNBR AND al.LINENBR = 1
|
||||
GROUP BY p.PERSNBR
|
||||
)
|
||||
SELECT a.ACTVNBR AS ActivityNbr,
|
||||
a.ACTVDATETIME AS ActivityDateTime,
|
||||
a.SUBJACCTNBR AS SubjectAccountNbr,
|
||||
a.RESPPERSNBR AS ActivityResponsiblePersonNbr,
|
||||
oe.PERSNBR AS OriginatingPersonNbr,
|
||||
a.ACTVTYPCD AS ActivityTypeCode,
|
||||
p.FIRSTNAME AS AssociateFirst,
|
||||
p.LASTNAME AS AssociateLast,
|
||||
p.MDLINIT AS AssociateMiddleInit,
|
||||
--NEW = "New" | REFI = "Refinance"
|
||||
ll.CREDITLIMITAMT AS LoanLimit,
|
||||
ob.OrigBal AS OriginalBalance,
|
||||
COALESCE(ll.CREDITLIMITAMT, ob.ORIGBAL) AS LoanAmount,
|
||||
al.LOANSOURCECD AS LoanSourceCode,
|
||||
--ABS(r.TRANAMT) AS LoanDispersalAmmount,
|
||||
ee.EmployeeEmail AS EmployeeEmail,
|
||||
acc.CURRACCTSTATCD AS CurrentAccountStatus,
|
||||
acc.TAXRPTFORPERSNBR AS TaxPersonNbr,
|
||||
acc.TAXRPTFORORGNBR AS TaxOrgNbr,
|
||||
CASE WHEN acc.TAXRPTFORPERSNBR IS NOT NULL THEN CONCAT(CONCAT(TAXPERS.LASTNAMEUPPER, ','), TAXPERS.FIRSTNAMEUPPER) ELSE NULL END AS TaxPersonName,
|
||||
TAXORG.ORGNAME AS TaxOrgName,
|
||||
acc.BranchOrgNbr As BranchOrgNbr,
|
||||
acc.MjAcctTypCd AS MajorAccountType,
|
||||
acc.CURRMIACCTTYPCD AS MinorAccountType,
|
||||
acc.CONTRACTDATE AS AccountContractDate,
|
||||
org.ORGNAME AS BranchOrgName,
|
||||
dp.EffectiveDate AS DebtProtectionEffectiveDate,
|
||||
dp.BALCATCD AS DebtProtectionCategory,
|
||||
CASE
|
||||
WHEN
|
||||
ba.YoungestBirthdate IS NOT NULL AND
|
||||
p2.DATEBIRTH IS NOT NULL
|
||||
THEN
|
||||
GREATEST(ba.YOUNGESTBIRTHDATE, p2.DATEBIRTH)
|
||||
ELSE
|
||||
COALESCE(ba.YOUNGESTBIRTHDATE, p2.DATEBIRTH)
|
||||
END AS YoungestBirthdateOnLoan,
|
||||
CASE
|
||||
WHEN
|
||||
acc.ACCTNBR IN (
|
||||
SELECT acctnbr
|
||||
FROM OSIBANK.ACCTACCTROLEORG aro
|
||||
Where aro.ACCTROLECD IN ('DBA', 'LLC', 'UNAS')
|
||||
) OR
|
||||
acc.TAXRPTFORORGNBR IS NOT NULL
|
||||
THEN 1
|
||||
ELSE 0
|
||||
END AS HasOrgRoles,
|
||||
pmd.PhoneNumbers AS TaxPersonPhoneNumbers,
|
||||
emd.EmailAddresses AS TaxPersonEmailAddresses
|
||||
FROM OSIBANK.ACTV a
|
||||
LEFT JOIN OSIBANK.ACCT acc ON acc.ACCTNBR = a.SUBJACCTNBR
|
||||
LEFT JOIN OriginatorRole oe ON acc.ACCTNBR = oe.AcctNbr
|
||||
LEFT JOIN OSIBANK.PERS p ON p.PERSNBR = oe.PERSNBR
|
||||
LEFT JOIN OSIBANK.PERS taxpers ON acc.TAXRPTFORPERSNBR = TAXPERS.PERSNBR
|
||||
LEFT JOIN OSIBANK.ORG taxorg ON acc.TAXRPTFORORGNBR = TAXORG.ORGNBR
|
||||
JOIN OSIBANK.ORG org ON org.ORGNBR = acc.BRANCHORGNBR
|
||||
LEFT JOIN EmployeeEmail ee ON p.PERSNBR = ee.CorePersNbr
|
||||
--Uncomment to get Loan Dispersal Transaction Information
|
||||
--LEFT JOIN OSIBANK.RTXN r ON acc.ACCTNBR = r.ACCTNBR AND r.RTXNTYPCD = 'NDSB'
|
||||
LEFT JOIN OSIBANK.ACCTLOAN al ON acc.ACCTNBR = al.ACCTNBR
|
||||
LEFT JOIN LoanLimit ll ON ll.AcctNbr = acc.ACCTNBR
|
||||
LEFT JOIN OriginalBalance ob ON ob.AcctNbr = acc.ACCTNBR
|
||||
LEFT JOIN DebtProtection dp ON dp.ACCTNBR = acc.ACCTNBR
|
||||
LEFT JOIN OSIBANK.ACTVSUBACTV sa ON sa.ACTVNBR = a.ACTVNBR
|
||||
LEFT JOIN BorrowerAge ba ON ba.AcctNbr = acc.ACCTNBR
|
||||
LEFT JOIN OSIBANK.PERS p2 ON acc.TAXRPTFORPERSNBR = p2.PERSNBR
|
||||
LEFT JOIN PHONEMETADATA pmd ON taxpers.PERSNBR = pmd.PERSNBR
|
||||
LEFT JOIN EMAILMETADATA emd ON taxpers.PERSNBR = emd.PERSNBR
|
||||
WHERE acc.CURRMIACCTTYPCD IN ('SC01', 'SC02', 'SG01')
|
||||
AND (a.ACTVTYPCD = 'ADAC' OR a.ACTVTYPCD = 'LADD')
|
||||
AND LOWER(sa.TABLEID) = 'acct'
|
||||
AND LOWER(sa.COLUMNID) = 'acctnbr'
|
||||
AND a.ACTVNBR > TO_NUMBER(COALESCE(:afterActivityNbr, '-1'))
|
||||
AND a.ACTVDATETIME >= TO_TIMESTAMP(COALESCE(:newerThanDateTime, '0001-01-01 00:00:00'), 'YYYY-MM-DD HH24:MI:SS')
|
||||
+186
@@ -0,0 +1,186 @@
|
||||
/*New Mortgagage Account Sale Query
|
||||
----------------------------------
|
||||
DESCRIPTION:
|
||||
Get all Activities related to New Mortgage Accounts (ActvType = AADD and AccountType = ('FE01', 'MF01', 'FE02', 'FLML')
|
||||
after a supplied DateTime (inclusive) or after a supplied ActivityNumber (not inclusive) or both.
|
||||
Supplies Activity Data as well as the Account Number of the new account and the account status at the time of querying
|
||||
|
||||
RETURNS: Models/Activity/NewCheckingAccountActivity.cs
|
||||
|
||||
PARAMS:
|
||||
|
||||
|afterActivityNbr : Null or Int (as string)
|
||||
|------------------------------------------------------------------------------
|
||||
|Returns all Checking Sales with ActivityNbrs larger than the supplied number.
|
||||
|If null defaults to -1 which will return all Checking SalesActivities
|
||||
|
||||
|newerThanDateTime : Null or Datetime in format 'YYYY-MM-DD HH24:MI:SS' (as string)
|
||||
|-----------------------------------------------------------------------------
|
||||
|Returns all Checking Sales with ActivityNbrs that occured on or after the supplied date
|
||||
|If null defaults to '0001-01-01 00:00:00' which is oracles MIN Date time, this effectively
|
||||
|returns all Checking Sales Activities
|
||||
|
||||
NOTES:
|
||||
- ALL HELOC type loans are technically 'children' of a mainline loan. A person may get approved for a 100,000 mainline loan
|
||||
but take out only 5k at a time via fixed loans. For incentive purposes we do not want to pull in the activity for HELOC's children loans
|
||||
instead we pull in Flex Mainline (FLML) Loans.
|
||||
- For mainline loans we use the first credit limit amount that is not 0 as the loan amount (the amount the customer was approved for)
|
||||
- For loans that do not have a parent mainline we use the original balance amount on the loan (the amount the customer has available after approval)
|
||||
- Use ContractDate as the date of the sale. This is the day that the customer signs for the loan. There is a legal grace-period between
|
||||
When a loan is signed and when the loan is booked into the banking system. This is why there is a gap between contract date and activity date.
|
||||
-Only need to know if an account has debt protection not how many debt protection policies the account has. We select the earliest sold
|
||||
debt protection and add the date and type to signify that the loan has debt protection
|
||||
- LADD type activities seem to produce duplicates occasionally, None were found for mortgage type accounts
|
||||
*/
|
||||
WITH EmployeeEmail AS (
|
||||
SELECT p.PERSNBR As CorePersNbr,
|
||||
addr.TEXT AS EmployeeEmail
|
||||
FROM OSIBANK.PERSEMPL p
|
||||
JOIN OSIBANK.PERSADDRUSE paddr ON
|
||||
p.PERSNBR = PADDR.PERSNBR
|
||||
JOIN OSIBANK.ADDRLINE addr ON
|
||||
paddr.ADDRNBR = addr.ADDRNBR
|
||||
AND paddr.ADDRUSECD = 'EBUS'
|
||||
),
|
||||
OriginatorRole AS (
|
||||
SELECT ACCTNBR, PERSNBR, ACCTROLECD, DATELASTMAINT, EFFDATE
|
||||
from OSIBANK.ACCTACCTROLEPERS a
|
||||
WHERE ACCTROLECD = 'OEMP'
|
||||
GROUP BY ACCTNBR, ACCTROLECD, DATELASTMAINT, EFFDATE, PERSNBR
|
||||
HAVING DATELASTMAINT = MAX(DATELASTMAINT)
|
||||
),
|
||||
LoanLimit AS (
|
||||
SELECT a2.ACCTNBR, a2.CREDITLIMITAMT, a2.DATELASTMAINT
|
||||
FROM OSIBANK.ACCTLOANLIMITHIST a2
|
||||
WHERE a2.CREDITLIMITAMT > '0'
|
||||
GROUP BY a2.ACCTNBR, a2.CREDITLIMITAMT, a2.DATELASTMAINT
|
||||
HAVING MIN(a2.DATELASTMAINT) = a2.DATELASTMAINT
|
||||
ORDER BY CREDITLIMITAMT
|
||||
),
|
||||
OriginalBalance AS (
|
||||
--This assumes there is only 1 Note/Bal sub account for every account
|
||||
--So far that has been true.
|
||||
SELECT ACCTNBR, ORIGBAL
|
||||
FROM OSIBANK.ACCTSUBACCT a2
|
||||
WHERE a2.BALCATCD = 'NOTE'
|
||||
AND a2.BALTYPCD = 'BAL'
|
||||
),
|
||||
DebtProtection AS (
|
||||
SELECT a.ACCTNBR,
|
||||
MIN(var.CALCTYPEFFDATE) AS EffectiveDate,
|
||||
a.BALCATCD
|
||||
FROM OSIBANK.ACCTSUBACCT a
|
||||
INNER JOIN (
|
||||
SELECT ACCTNBR, MIN(SUBACCTNBR) AS SUBACCTNBR
|
||||
FROM OSIBANK.ACCTSUBACCT sa
|
||||
WHERE sa.BALTYPCD = 'SINS'
|
||||
GROUP BY ACCTNBR
|
||||
) b ON a.ACCTNBR = b.ACCTNBR AND a.SUBACCTNBR = b.SUBACCTNBR
|
||||
INNER JOIN OSIBANK.ACCTSUBACCTCALCVAR var ON var.ACCTNBR = a.ACCTNBR AND a.SUBACCTNBR = var.SUBACCTNBR
|
||||
GROUP BY a.ACCTNBR, var.CALCTYPEFFDATE, a.BALCATCD
|
||||
),
|
||||
BorrowerAge AS (
|
||||
SELECT a.ACCTNBR, MAX(p.DATEBIRTH) AS YoungestBirthdate
|
||||
FROM OSIBANK.ACCTACCTROLEPERS a
|
||||
LEFT JOIN OSIBANK.ACCT acc ON a.ACCTNBR = acc.ACCTNBR
|
||||
LEFT JOIN OSIBANK.ACCTROLE r ON r.ACCTROLECD = a.ACCTROLECD
|
||||
LEFT JOIN OSIBANK.PERS p ON a.PERSNBR = p.PERSNBR
|
||||
WHERE a.ACCTROLECD IN ('TRO', 'NTO', 'SIGN')
|
||||
AND (p.DATEDEATH IS NULL OR p.DATEDEATH > acc.CONTRACTDATE)
|
||||
GROUP BY a.ACCTNBR
|
||||
),
|
||||
PHONEMETADATA AS (
|
||||
SELECT p.PERSNBR,
|
||||
LISTAGG((pp.AREACD || pp.EXCHANGE || pp.PHONENBR), ',') AS PhoneNumbers
|
||||
FROM OSIBANK.PERS p
|
||||
LEFT JOIN OSIBANK.PERSPHONE pp ON p.PERSNBR = pp.PERSNBR AND pp.PHONEUSECD != 'BUS'
|
||||
GROUP BY p.PERSNBR
|
||||
),
|
||||
EMAILMETADATA AS (
|
||||
SELECT p.PERSNBR,
|
||||
LISTAGG(al.TEXT, ',') AS EmailAddresses
|
||||
FROM OSIBANK.PERS p
|
||||
LEFT JOIN OSIBANK.PERSADDRUSE pa ON p.PERSNBR = pa.PERSNBR AND pa.ADDRUSECD IN ('EHOM', 'EML')
|
||||
LEFT JOIN OSIBANK.ADDRLINE al ON pa.ADDRNBR = al.ADDRNBR AND al.LINENBR = 1
|
||||
GROUP BY p.PERSNBR
|
||||
)
|
||||
SELECT a.ACTVNBR AS ActivityNbr,
|
||||
a.ACTVDATETIME AS ActivityDateTime,
|
||||
a.SUBJACCTNBR AS SubjectAccountNbr,
|
||||
a.RESPPERSNBR AS ActivityResponsiblePersonNbr,
|
||||
oe.PERSNBR AS OriginatingPersonNbr,
|
||||
a.ACTVTYPCD AS ActivityTypeCode,
|
||||
p.FIRSTNAME AS AssociateFirst,
|
||||
p.LASTNAME AS AssociateLast,
|
||||
p.MDLINIT AS AssociateMiddleInit,
|
||||
--NEW = "New" | REFI = "Refinance"
|
||||
ll.CREDITLIMITAMT AS LoanLimit,
|
||||
ob.OrigBal AS OriginalBalance,
|
||||
COALESCE(ll.CREDITLIMITAMT, ob.ORIGBAL) AS LoanAmount,
|
||||
al.LOANSOURCECD AS LoanSourceCode,
|
||||
--ABS(r.TRANAMT) AS LoanDispersalAmmount,
|
||||
ee.EmployeeEmail AS EmployeeEmail,
|
||||
acc.CURRACCTSTATCD AS CurrentAccountStatus,
|
||||
acc.TAXRPTFORPERSNBR AS TaxPersonNbr,
|
||||
acc.TAXRPTFORORGNBR AS TaxOrgNbr,
|
||||
CASE WHEN acc.TAXRPTFORPERSNBR IS NOT NULL THEN CONCAT(CONCAT(TAXPERS.LASTNAMEUPPER, ','), TAXPERS.FIRSTNAMEUPPER) ELSE NULL END AS TaxPersonName,
|
||||
TAXORG.ORGNAME AS TaxOrgName,
|
||||
acc.BranchOrgNbr As BranchOrgNbr,
|
||||
acc.MjAcctTypCd AS MajorAccountType,
|
||||
acc.CURRMIACCTTYPCD AS MinorAccountType,
|
||||
acc.CONTRACTDATE AS AccountContractDate,
|
||||
org.ORGNAME AS BranchOrgName,
|
||||
dp.EffectiveDate AS DebtProtectionEffectiveDate,
|
||||
dp.BALCATCD AS DebtProtectionCategory,
|
||||
CASE
|
||||
WHEN
|
||||
ba.YOUNGESTBIRTHDATE IS NOT NULL AND
|
||||
p2.DATEBIRTH IS NOT NULL
|
||||
THEN
|
||||
GREATEST(ba.YOUNGESTBIRTHDATE, p2.DATEBIRTH)
|
||||
ELSE
|
||||
COALESCE(ba.YOUNGESTBIRTHDATE, p2.DATEBIRTH)
|
||||
END AS YoungestBirthdateOnLoan,
|
||||
CASE
|
||||
WHEN
|
||||
acc.ACCTNBR IN (
|
||||
SELECT acctnbr
|
||||
FROM OSIBANK.ACCTACCTROLEORG aro
|
||||
Where aro.ACCTROLECD IN ('DBA', 'LLC', 'UNAS')
|
||||
) OR
|
||||
acc.TAXRPTFORORGNBR IS NOT NULL
|
||||
THEN 1
|
||||
ELSE 0
|
||||
END AS HasOrgRoles,
|
||||
pmd.PhoneNumbers AS TaxPersonPhoneNumbers,
|
||||
emd.EmailAddresses AS TaxPersonEmailAddresses
|
||||
FROM OSIBANK.ACTV a
|
||||
LEFT JOIN OSIBANK.ACCT acc ON acc.ACCTNBR = a.SUBJACCTNBR
|
||||
LEFT JOIN OriginatorRole oe ON acc.ACCTNBR = oe.AcctNbr
|
||||
LEFT JOIN OSIBANK.PERS p ON p.PERSNBR = oe.PERSNBR
|
||||
LEFT JOIN OSIBANK.PERS taxpers ON acc.TAXRPTFORPERSNBR = TAXPERS.PERSNBR
|
||||
LEFT JOIN OSIBANK.ORG taxorg ON acc.TAXRPTFORORGNBR = TAXORG.ORGNBR
|
||||
JOIN OSIBANK.ORG org ON org.ORGNBR = acc.BRANCHORGNBR
|
||||
LEFT JOIN EmployeeEmail ee ON p.PERSNBR = ee.CorePersNbr
|
||||
--Uncomment to get Loan Dispersal Transaction Information
|
||||
--LEFT JOIN OSIBANK.RTXN r ON acc.ACCTNBR = r.ACCTNBR AND r.RTXNTYPCD = 'NDSB'
|
||||
LEFT JOIN OSIBANK.ACCTLOAN al ON acc.ACCTNBR = al.ACCTNBR
|
||||
LEFT JOIN LoanLimit ll ON ll.AcctNbr = acc.ACCTNBR
|
||||
LEFT JOIN OriginalBalance ob ON ob.AcctNbr = acc.ACCTNBR
|
||||
LEFT JOIN DebtProtection dp ON dp.ACCTNBR = acc.ACCTNBR
|
||||
LEFT JOIN OSIBANK.ACTVSUBACTV sa ON sa.ACTVNBR = a.ACTVNBR
|
||||
LEFT JOIN BorrowerAge ba ON ba.AcctNbr = acc.ACCTNBR
|
||||
LEFT JOIN OSIBANK.PERS p2 ON acc.TAXRPTFORPERSNBR = p2.PERSNBR
|
||||
LEFT JOIN PHONEMETADATA pmd ON taxpers.PERSNBR = pmd.PERSNBR
|
||||
LEFT JOIN EMAILMETADATA emd ON taxpers.PERSNBR = emd.PERSNBR
|
||||
WHERE acc.MJACCTTYPCD IN ('CNS', 'MLN', 'MTG')
|
||||
AND acc.CURRMIACCTTYPCD IN ('HE01', 'FE01', 'MF01', 'FE02', 'FNMA', 'FRML', 'FRMH', 'MPFR', 'MJ30', 'HM01', 'HM02',
|
||||
'MF10', 'HM03', 'HM04', 'DEF3', 'ML01', 'ML03', 'MJ03', 'MJ05', 'MJ07', 'MF15', 'MF20', 'MF30', 'MC93', 'MA55', 'MS30',
|
||||
'MS10', 'MS15', 'MS20', 'MS40', 'MC09', 'ML02', 'MA01', 'MP05', 'MA05', 'MC01', 'MI05', 'MC03', 'MJ55', 'MC91', 'MF40',
|
||||
'MS05', 'MS07', 'MI03', 'MA03', 'MA07', 'MA27', 'ML23', 'ML21', 'MP25', 'MC21', 'MA21', 'MJ27', 'HM05', 'MA23', 'MA25',
|
||||
'MI25', 'MJ23', 'MJ25')
|
||||
AND (a.ACTVTYPCD = 'ADAC' OR a.ACTVTYPCD = 'LADD')
|
||||
AND LOWER(sa.TABLEID) = 'acct'
|
||||
AND LOWER(sa.COLUMNID) = 'acctnbr'
|
||||
AND a.ACTVNBR > TO_NUMBER(COALESCE(:afterActivityNbr, '-1'))
|
||||
AND a.ACTVDATETIME >= TO_TIMESTAMP(COALESCE(:newerThanDateTime, '0001-01-01 00:00:00'), 'YYYY-MM-DD HH24:MI:SS')
|
||||
+164
@@ -0,0 +1,164 @@
|
||||
/*New Vehicle Account Sale Query
|
||||
----------------------------------
|
||||
DESCRIPTION:
|
||||
Get all Activities related to New Mortgage Accounts (ActvType = AADD and AccountType = ('FE01', 'MF01', 'FE02', 'FLML')
|
||||
after a supplied DateTime (inclusive) or after a supplied ActivityNumber (not inclusive) or both.
|
||||
Supplies Activity Data as well as the Account Number of the new account and the account status at the time of querying
|
||||
|
||||
RETURNS: Models/Activity/NewCheckingAccountActivity.cs
|
||||
|
||||
PARAMS:
|
||||
|
||||
|afterActivityNbr : Null or Int (as string)
|
||||
|------------------------------------------------------------------------------
|
||||
|Returns all Checking Sales with ActivityNbrs larger than the supplied number.
|
||||
|If null defaults to -1 which will return all Checking SalesActivities
|
||||
|
||||
|newerThanDateTime : Null or Datetime in format 'YYYY-MM-DD HH24:MI:SS' (as string)
|
||||
|-----------------------------------------------------------------------------
|
||||
|Returns all Checking Sales with ActivityNbrs that occured on or after the supplied date
|
||||
|If null defaults to '0001-01-01 00:00:00' which is oracles MIN Date time, this effectively
|
||||
|returns all Checking Sales Activities
|
||||
Potential Types: DLxx may be added in the future
|
||||
'BE21','DL01','DL06','DL07','DL08','DL09','DL10','DL11','DL12','DL13','DL14','DL16','DV01','DV02','DV03','DV04','DV05','DV06','DV07','DV08',
|
||||
NOTES:
|
||||
- See Mortgage Loan Notes
|
||||
-Only need to know if an account has debt protection not how many debt protection policies the account has. We select the earliest sold
|
||||
debt protection and add the date and type to signify that the loan has debt protection
|
||||
- LADD type activities seem to produce duplicates occasionally, None were found for vehicle type accounts
|
||||
*/
|
||||
WITH EmployeeEmail AS (
|
||||
SELECT
|
||||
p.PERSNBR As CorePersNbr,
|
||||
addr.TEXT AS EmployeeEmail
|
||||
FROM
|
||||
OSIBANK.PERSEMPL p
|
||||
JOIN OSIBANK.PERSADDRUSE paddr ON
|
||||
p.PERSNBR = PADDR.PERSNBR
|
||||
JOIN OSIBANK.ADDRLINE addr ON
|
||||
paddr.ADDRNBR = addr.ADDRNBR
|
||||
AND paddr.ADDRUSECD = 'EBUS'
|
||||
),
|
||||
OriginatorRole AS (
|
||||
SELECT ACCTNBR, PERSNBR, ACCTROLECD, DATELASTMAINT, EFFDATE from OSIBANK.ACCTACCTROLEPERS a
|
||||
WHERE ACCTROLECD = 'OEMP'
|
||||
GROUP BY ACCTNBR, ACCTROLECD, DATELASTMAINT, EFFDATE, PERSNBR
|
||||
HAVING DATELASTMAINT = MAX(DATELASTMAINT)
|
||||
),
|
||||
OriginalBalance AS (
|
||||
--This assumes there is only 1 Note/Bal sub account for every account
|
||||
--So far that has been true.
|
||||
SELECT ACCTNBR, ORIGBAL FROM OSIBANK.ACCTSUBACCT a2
|
||||
WHERE a2.BALCATCD = 'NOTE' AND a2.BALTYPCD = 'BAL'
|
||||
),
|
||||
DebtProtection AS (
|
||||
SELECT
|
||||
a.ACCTNBR,
|
||||
MIN(var.CALCTYPEFFDATE) AS EffectiveDate,
|
||||
a.BALCATCD
|
||||
FROM OSIBANK.ACCTSUBACCT a
|
||||
INNER JOIN (
|
||||
SELECT ACCTNBR, MAX(SUBACCTNBR) AS SUBACCTNBR FROM OSIBANK.ACCTSUBACCT sa
|
||||
WHERE sa.BALTYPCD = 'SINS'
|
||||
GROUP BY ACCTNBR
|
||||
) b ON a.ACCTNBR = b.ACCTNBR AND a.SUBACCTNBR = b.SUBACCTNBR
|
||||
INNER JOIN OSIBANK.ACCTSUBACCTCALCVAR var ON var.ACCTNBR = a.ACCTNBR AND a.SUBACCTNBR = var.SUBACCTNBR
|
||||
GROUP BY a.ACCTNBR, var.CALCTYPEFFDATE, a.BALCATCD
|
||||
),
|
||||
BorrowerAge AS (
|
||||
SELECT a.ACCTNBR, MAX(p.DATEBIRTH) AS YoungestBirthdate FROM OSIBANK.ACCTACCTROLEPERS a
|
||||
LEFT JOIN OSIBANK.ACCT acc ON a.ACCTNBR = acc.ACCTNBR
|
||||
LEFT JOIN OSIBANK.ACCTROLE r ON r.ACCTROLECD = a.ACCTROLECD
|
||||
LEFT JOIN OSIBANK.PERS p ON a.PERSNBR = p.PERSNBR
|
||||
WHERE a.ACCTROLECD IN ('TRO','NTO','SIGN') AND (p.DATEDEATH IS NULL OR p.DATEDEATH > acc.CONTRACTDATE)
|
||||
GROUP BY a.ACCTNBR
|
||||
),
|
||||
PHONEMETADATA AS (
|
||||
SELECT
|
||||
p.PERSNBR,
|
||||
LISTAGG((pp.AREACD || pp.EXCHANGE || pp.PHONENBR),',') AS PhoneNumbers
|
||||
FROM OSIBANK.PERS p
|
||||
LEFT JOIN OSIBANK.PERSPHONE pp ON p.PERSNBR = pp.PERSNBR AND pp.PHONEUSECD != 'BUS'
|
||||
GROUP BY p.PERSNBR
|
||||
),
|
||||
EMAILMETADATA AS (
|
||||
SELECT
|
||||
p.PERSNBR,
|
||||
LISTAGG(al.TEXT,',') AS EmailAddresses
|
||||
FROM OSIBANK.PERS p
|
||||
LEFT JOIN OSIBANK.PERSADDRUSE pa ON p.PERSNBR = pa.PERSNBR AND pa.ADDRUSECD IN ('EHOM','EML')
|
||||
LEFT JOIN OSIBANK.ADDRLINE al ON pa.ADDRNBR = al.ADDRNBR AND al.LINENBR = 1
|
||||
GROUP BY p.PERSNBR
|
||||
)
|
||||
SELECT
|
||||
a.ACTVNBR AS ActivityNbr,
|
||||
a.ACTVDATETIME AS ActivityDateTime,
|
||||
a.SUBJACCTNBR AS SubjectAccountNbr,
|
||||
a.RESPPERSNBR AS ActivityResponsiblePersonNbr,
|
||||
oe.PERSNBR AS OriginatingPersonNbr,
|
||||
a.ACTVTYPCD AS ActivityTypeCode,
|
||||
p.FIRSTNAME AS AssociateFirst,
|
||||
p.LASTNAME AS AssociateLast,
|
||||
p.MDLINIT AS AssociateMiddleInit,
|
||||
--NEW = "New" | REFI = "Refinance"
|
||||
ob.OrigBal AS LoanAmount,
|
||||
al.LOANSOURCECD AS LoanSourceCode,
|
||||
--ABS(r.TRANAMT) AS LoanDispersalAmmount,
|
||||
ee.EmployeeEmail AS EmployeeEmail,
|
||||
acc.CURRACCTSTATCD AS CurrentAccountStatus,
|
||||
acc.TAXRPTFORPERSNBR AS TaxPersonNbr,
|
||||
acc.TAXRPTFORORGNBR AS TaxOrgNbr,
|
||||
CASE WHEN acc.TAXRPTFORPERSNBR IS NOT NULL THEN CONCAT(CONCAT(TAXPERS.LASTNAMEUPPER, ','),TAXPERS.FIRSTNAMEUPPER) ELSE NULL END AS TaxPersonName,
|
||||
TAXORG.ORGNAME AS TaxOrgName,
|
||||
acc.BranchOrgNbr As BranchOrgNbr,
|
||||
acc.MjAcctTypCd AS MajorAccountType,
|
||||
acc.CURRMIACCTTYPCD AS MinorAccountType,
|
||||
acc.CONTRACTDATE AS AccountContractDate,
|
||||
org.ORGNAME AS BranchOrgName,
|
||||
dp.EffectiveDate AS DebtProtectionEffectiveDate,
|
||||
dp.BALCATCD AS DebtProtectionCategory,
|
||||
CASE
|
||||
WHEN
|
||||
ba.YOUNGESTBIRTHDATE IS NOT NULL AND
|
||||
p2.DATEBIRTH IS NOT NULL
|
||||
THEN
|
||||
GREATEST(ba.YoungestBirthdate, p2.DATEBIRTH)
|
||||
ELSE
|
||||
COALESCE (ba.YoungestBirthdate, p2.DATEBIRTH)
|
||||
END AS YoungestBirthdateOnLoan,
|
||||
CASE
|
||||
WHEN
|
||||
acc.ACCTNBR IN (
|
||||
SELECT acctnbr FROM OSIBANK.ACCTACCTROLEORG aro
|
||||
Where aro.ACCTROLECD IN ('DBA', 'LLC','UNAS')
|
||||
) OR
|
||||
acc.TAXRPTFORORGNBR IS NOT NULL
|
||||
THEN 1
|
||||
ELSE 0
|
||||
END AS HasOrgRoles,
|
||||
pmd.PhoneNumbers AS TaxPersonPhoneNumbers,
|
||||
emd.EmailAddresses AS TaxPersonEmailAddresses
|
||||
FROM OSIBANK.ACTV a
|
||||
JOIN OSIBANK.ACCT acc ON acc.ACCTNBR = a.SUBJACCTNBR
|
||||
LEFT JOIN OriginatorRole oe ON acc.ACCTNBR = oe.AcctNbr
|
||||
LEFT JOIN OSIBANK.PERS p ON p.PERSNBR = oe.PERSNBR
|
||||
LEFT JOIN OSIBANK.PERS taxpers ON acc.TAXRPTFORPERSNBR = TAXPERS.PERSNBR
|
||||
LEFT JOIN OSIBANK.ORG taxorg ON acc.TAXRPTFORORGNBR = TAXORG.ORGNBR
|
||||
JOIN OSIBANK.ORG org ON org.ORGNBR = acc.BRANCHORGNBR
|
||||
LEFT JOIN EmployeeEmail ee ON p.PERSNBR = ee.CorePersNbr
|
||||
--Uncomment to get Loan Dispersal Transaction Information
|
||||
--LEFT JOIN OSIBANK.RTXN r ON acc.ACCTNBR = r.ACCTNBR AND r.RTXNTYPCD = 'NDSB'
|
||||
LEFT JOIN OSIBANK.ACCTLOAN al ON acc.ACCTNBR = al.ACCTNBR
|
||||
LEFT JOIN OriginalBalance ob ON ob.AcctNbr = acc.ACCTNBR
|
||||
LEFT JOIN DebtProtection dp ON dp.ACCTNBR = acc.ACCTNBR
|
||||
LEFT JOIN OSIBANK.ACTVSUBACTV sa ON sa.ACTVNBR = a.ACTVNBR
|
||||
LEFT JOIN BorrowerAge ba ON ba.AcctNbr = acc.ACCTNBR
|
||||
LEFT JOIN OSIBANK.PERS p2 ON acc.TAXRPTFORPERSNBR = p2.PERSNBR
|
||||
LEFT JOIN PHONEMETADATA pmd ON taxpers.PERSNBR = pmd.PERSNBR
|
||||
LEFT JOIN EMAILMETADATA emd ON taxpers.PERSNBR = emd.PERSNBR
|
||||
WHERE
|
||||
acc.MJACCTTYPCD IN ('CNS','CML')
|
||||
AND acc.CURRMIACCTTYPCD IN ('BE21','DV01','DV02','DV03','DV04','DV05','DV06','DV07','DV08')
|
||||
AND (a.ACTVTYPCD = 'ADAC' OR a.ACTVTYPCD = 'LADD') AND LOWER(sa.TABLEID) = 'acct' AND LOWER(sa.COLUMNID) = 'acctnbr'
|
||||
AND a.ACTVNBR > TO_NUMBER(COALESCE( :afterActivityNbr, '-1'))
|
||||
AND a.ACTVDATETIME >= TO_TIMESTAMP(COALESCE(:newerThanDateTime, '0001-01-01 00:00:00'), 'YYYY-MM-DD HH24:MI:SS')
|
||||
+80
@@ -0,0 +1,80 @@
|
||||
/*
|
||||
CUSTOM FIELD INFO (ActivityManager.LF_LEAD_CUSTOM):
|
||||
Credit Card Balance Transfer
|
||||
--LeadCust_39 = External CC Account Number
|
||||
--LeadCust_31 = Landmark Credit Card Number
|
||||
--LeadCust_29 = Transfer Ammount
|
||||
--LeadCust_28 = Payment State + Zip
|
||||
--LeadCust_27 = Payment City
|
||||
--LeadCust_26 = Payment Address Line 1
|
||||
--LeadCust_24 = Transfer Institution
|
||||
|
||||
Direct Deposit
|
||||
--LeadCust_38 = Direct Deposit is Qualified Referral
|
||||
--LeadCust_4 = Direct Deposit Account Number
|
||||
*/
|
||||
|
||||
WITH EmployeeEmail AS (
|
||||
SELECT pers.USERID AS SafUserId,
|
||||
prod.PERSNBR AS SafPersNbr,
|
||||
prod.PRODPERSID AS CorePersNbr,
|
||||
addr.TEXT AS EmployeeEmail
|
||||
FROM SAF.PERSUSER pers
|
||||
JOIN SAF.PERSPROD prod ON
|
||||
pers.PERSNBR = PROD.PERSNBR
|
||||
AND prod.PRODNBR = '3'
|
||||
JOIN OSIBANK.PERSADDRUSE paddr ON
|
||||
prod.PRODPERSID = PADDR.PERSNBR
|
||||
JOIN OSIBANK.ADDRLINE addr ON
|
||||
paddr.ADDRNBR = addr.ADDRNBR
|
||||
AND paddr.ADDRUSECD = 'EBUS'
|
||||
)
|
||||
SELECT ll.ID AS ActivityId,
|
||||
-- These custom fields can be reused, guarentee their contents by only using them for their respective campaigns
|
||||
(CASE WHEN ll.CAMPAIGN = 'CC Balance Transfer' THEN llc.LEADCUST_31 ELSE NULL END) AS LandmarkCreditCardNumber,
|
||||
(CASE WHEN ll.CAMPAIGN = 'Direct Deposit' THEN llc.LEADCUST_4 ELSE NULL END) AS DirectDepositAccountNumber,
|
||||
ll.ORIGINATOR AS OriginatorUserId,
|
||||
safprod.PRODPERSID AS OriginatorPersNbr,
|
||||
p.FIRSTNAME AS OriginatorFirstName,
|
||||
p.LASTNAME AS OriginatorLastName,
|
||||
p.MDLINIT AS OriginatorMiddleInitial,
|
||||
ee.EmployeeEmail AS EmployeeEmail,
|
||||
ll.CAMPAIGN AS Campaign,
|
||||
ll.CATEGORY AS Category,
|
||||
ll.STATION AS ReferralStation,
|
||||
ll.DATELASTMAINT AS LastUpdatedDateTime,
|
||||
(CASE WHEN att.INITIAL_STATION = 'Yes' THEN 1 ELSE 0 END) AS IsInitialStation,
|
||||
(CASE WHEN att.FINAL_STATION = 'Yes' THEN 1 ELSE 0 END) AS IsFinalStation,
|
||||
att.ACTIVITY_ORIGINATION_DATE AS OriginationDateTime,
|
||||
att.ENTER_STATION_DATETIME AS StationDateTime,
|
||||
ll.SOURCE AS OriginatingBranchName,
|
||||
(CASE
|
||||
WHEN SUBSTR(lp.EXTID3, 1, 1) = 'P' THEN REGEXP_SUBSTR(lp.EXTID3, '\d+')
|
||||
ELSE NULL END
|
||||
) AS ReferredPersonNbr,
|
||||
(CASE
|
||||
WHEN SUBSTR(lp.EXTID3, 1, 1) = 'O' THEN REGEXP_SUBSTR(lp.EXTID3, '\d+')
|
||||
ELSE NULL END
|
||||
) AS ReferredOrgNbr,
|
||||
lp.EXTID3 AS ReferredPersOrgNbr
|
||||
FROM ACTIVITYMANAGER.LF_LEAD ll
|
||||
JOIN ACTIVITYMANAGER.LF_LEAD_CUSTOM llc ON
|
||||
ll.ID = llc.ID
|
||||
JOIN SAF.PERSUSER safp ON
|
||||
safp.USERID = ll.ORIGINATOR
|
||||
JOIN SAF.PERSPROD safprod ON
|
||||
SAFPROD.PERSNBR = safp.PERSNBR AND
|
||||
SAFPROD.PRODNBR = '3'
|
||||
JOIN OSIBANK.PERS p ON
|
||||
p.PERSNBR = SAFPROD.PRODPERSID
|
||||
LEFT JOIN EmployeeEmail ee ON
|
||||
ee.SafPersNbr = SAFP.PERSNBR
|
||||
JOIN ACTIVITYMANAGER.LF_PERSON lp ON
|
||||
lp.ID = ll.PERSONID
|
||||
JOIN ACTIVITYMANAGER.ACTIVITY_TIME_TRACKING att
|
||||
ON att.ACTIVITY_ID = ll.ID AND SEQUENCE_NUMBER = (
|
||||
SELECT MAX(SEQUENCE_NUMBER)
|
||||
FROM ACTIVITYMANAGER.ACTIVITY_TIME_TRACKING att2
|
||||
WHERE att2.ACTIVITY_ID = ll.ID
|
||||
)
|
||||
WHERE ll.Id IN :activityIds
|
||||
+43
@@ -0,0 +1,43 @@
|
||||
With PhoneMetaData as (
|
||||
Select p.persnbr, ListAgg((pp.areacd || pp.exchange || pp.phonenbr), ',') As PhoneNumbers
|
||||
From Osibank.Pers p
|
||||
Left Join Osibank.PersPhone pp on p.persnbr = pp.persnbr and pp.phoneusecd != 'BUS'
|
||||
Group By p.persnbr
|
||||
),
|
||||
|
||||
EmailMetaData as (
|
||||
Select p.persnbr, ListAgg(al.text, ',') As EmailAddresses
|
||||
From Osibank.Pers p
|
||||
Left Join Osibank.PersAddrUse pa on p.persnbr = pa.persnbr and pa.ADDRUSECD IN ('EHOM', 'EML')
|
||||
Left Join Osibank.AddrLine al on pa.addrnbr = al.addrnbr and al.linenbr = 1
|
||||
Group By p.persnbr),
|
||||
|
||||
ActivityData as (
|
||||
Select activity.subjacctnbr as AccountNumber, activity.actvnbr as ActivityNumber, activity.datelastmaint as ActivityDateTime
|
||||
From (Select av.subjacctnbr, asv.actvnbr, asv.datelastmaint, ROW_NUMBER() Over (Partition by av.subjacctnbr Order by asv.datelastmaint asc) deliveryUpdate
|
||||
From Osibank.ActvSubActv asv
|
||||
Join Osibank.Actv av on asv.actvnbr = av.actvnbr
|
||||
where (
|
||||
asv.columnID = 'OvrDeliveryMethCd'
|
||||
and asv.OldValue = 'PRNT'
|
||||
and asv.databaseactvcd = 'UPD'
|
||||
and asv.NewValue = 'WWW'
|
||||
and asv.datelastmaint > TO_TIMESTAMP(:newerThanDateTime, 'YYYY-MM-DD HH24:MI:SS')
|
||||
)
|
||||
) activity
|
||||
|
||||
Where deliveryUpdate = 1 and activity.datelastmaint > TO_TIMESTAMP(:newerThanDateTime, 'YYYY-MM-DD HH24:MI:SS'))
|
||||
|
||||
Select ad.*, ma.shareacctnbr as ShareAccountNumber,
|
||||
ma.primarypersnbr as PersonNumber,
|
||||
ac.taxrptfororgnbr as OrganizationNumber,
|
||||
ac.currmiaccttypcd as MinorAccountType,
|
||||
pe.firstname as FirstName, pe.lastname as LastName,
|
||||
pmd.phonenumbers, emd.emailaddresses
|
||||
From Osibank.Acct ac
|
||||
Join ActivityData ad on ad.AccountNumber = ac.acctnbr
|
||||
Join Osibank.MemberAgreement ma on ma.shareacctnbr = ac.acctnbr
|
||||
Join Osibank.Pers pe on pe.persnbr = ma.primarypersnbr
|
||||
Left Join PhoneMetaData pmd on pe.persnbr = pmd.persnbr
|
||||
Left Join EmailMetaData emd on pe.persnbr = emd.persnbr
|
||||
where ac.OvrDeliveryMethCd = 'WWW'
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
/*ActivityAccountDetailsByAccountNbr
|
||||
-----------------------------------
|
||||
Get Account Details that are used by Activities. Used to Re-query accounts to check for
|
||||
relevant account fields changes.
|
||||
|
||||
--Notes
|
||||
It is expected that this will grow over time and require joining on more fields, it is therefore kept separate from
|
||||
a more generic account query.
|
||||
*/
|
||||
WITH DebtProtection AS (
|
||||
SELECT a.ACCTNBR,
|
||||
MAX(var.CALCTYPEFFDATE) AS EffectiveDate,
|
||||
MAX(var.CALCINACTIVEDATE) AS InactiveDate,
|
||||
a.BALCATCD AS DPCategory
|
||||
FROM OSIBANK.ACCTSUBACCT a
|
||||
INNER JOIN (
|
||||
SELECT sa.ACCTNBR, sa.SUBACCTNBR AS SUBACCTNBR
|
||||
FROM OSIBANK.ACCTSUBACCT sa
|
||||
WHERE sa.BALTYPCD = 'SINS'
|
||||
GROUP BY ACCTNBR, sa.SUBACCTNBR
|
||||
) b ON a.ACCTNBR = b.ACCTNBR AND a.SUBACCTNBR = b.SUBACCTNBR
|
||||
INNER JOIN OSIBANK.ACCTSUBACCTCALCVAR var ON a.ACCTNBR = var.ACCTNBR AND a.SUBACCTNBR = var.SUBACCTNBR
|
||||
GROUP BY a.ACCTNBR, var.CALCTYPEFFDATE, var.CALCINACTIVEDATE, a.BALCATCD
|
||||
)
|
||||
SELECT acc.ACCTNBR AS AccountNumber,
|
||||
acc.CURRACCTSTATCD AS CurrentAccountStatus,
|
||||
acc.TAXRPTFORPERSNBR AS TaxPersonNbr,
|
||||
acc.TAXRPTFORORGNBR AS TaxOrgNbr,
|
||||
acc.BRANCHORGNBR As BranchOrgNbr,
|
||||
acc.MJACCTTYPCD AS MajorAccountType,
|
||||
acc.CURRMIACCTTYPCD AS MinorAccountType,
|
||||
acc.CONTRACTDATE AS AccountContractDate,
|
||||
dp.EffectiveDate AS DebtProtectionEffectiveDate,
|
||||
dp.InactiveDate AS DebtProtectionInactiveDate,
|
||||
dp.DPCategory AS DebtProtectionCategory
|
||||
FROM OSIBANK.ACCT acc
|
||||
LEFT JOIN DebtProtection dp ON dp.ACCTNBR = acc.ACCTNBR
|
||||
WHERE acc.ACCTNBR IN :accountNumbers
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
SELECT ap.AgreeNbr AS AgreeNumber,
|
||||
ap.PersNbr AS PersonNumber,
|
||||
ap.UserId
|
||||
FROM OSIBANK.agreepers ap
|
||||
WHERE ap.UserId = :userId
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
select AP.USERID As UserId,
|
||||
AP.PERSNBR As PersonNumber,
|
||||
AG.AGREENBR As AgreeNumber
|
||||
FROM OSIBANK.AGREE AG
|
||||
INNER JOIN OSIBANK.AGREEPERS AP ON AP.AGREENBR=AG.AGREENBR AND
|
||||
AP.ACTIVEYN='Y'
|
||||
INNER JOIN OSIBANK.AGREEPERSACCESSTYP APAT ON APAT.AGREENBR=AP.AGREENBR AND
|
||||
APAT.PERSNBR=AP.PERSNBR AND
|
||||
APAT.ACCESSTYPCD='WWW'
|
||||
WHERE AP.USERID LIKE '%-%'
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
select distinct
|
||||
a.primarypersnbr AS PersonNumber
|
||||
from memberagreement a
|
||||
JOIN PERS b ON a.PRIMARYPERSNBR = b.PERSNBR
|
||||
JOIN ACCT c ON b.PERSNBR = c.TAXRPTFORPERSNBR AND a.MEMBERAGREENBR = c.MEMBERAGREENBR
|
||||
JOIN acctacctrolepers d ON c.acctnbr = d.ACCTNBR
|
||||
JOIN PERS g ON d.PERSNBR = g.PERSNBR
|
||||
JOIN AGREEPERSACCESSTYPACCT e ON e.ACCTNBR = c.acctnbr and e.PERSNBR = c.taxrptforpersnbr
|
||||
JOIN AGREEPERSACCESSTYP f ON e.AGREENBR = f.AGREENBR
|
||||
LEFT JOIN osibank.CARDAGREEMENT ca ON b.PERSNBR = ca.OWNERPERSNBR AND ca.AGREETYPCD = 'VRU'
|
||||
WHERE d.acctrolecd in ('CUST','GUAD','REPP','PREP','VAFI')
|
||||
AND activeyn = 'Y'
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
select distinct
|
||||
ca.agreenbr AS AgreeNumber,
|
||||
a.PRIMARYPERSNBR AS PersonNumber,
|
||||
f.UserId AS UserId
|
||||
from memberagreement a
|
||||
JOIN PERS b ON a.PRIMARYPERSNBR = b.PERSNBR
|
||||
JOIN ACCT c ON b.PERSNBR = c.TAXRPTFORPERSNBR AND a.MEMBERAGREENBR = c.MEMBERAGREENBR
|
||||
JOIN acctacctrolepers d ON c.acctnbr = d.ACCTNBR
|
||||
JOIN PERS g ON d.PERSNBR = g.PERSNBR
|
||||
JOIN AGREEPERSACCESSTYPACCT e ON e.ACCTNBR = c.acctnbr and e.PERSNBR = c.taxrptforpersnbr
|
||||
JOIN AGREEPERSACCESSTYP f ON e.AGREENBR = f.AGREENBR
|
||||
INNER JOIN osibank.CARDAGREEMENT ca ON b.PERSNBR = ca.OWNERPERSNBR AND ca.AGREETYPCD = 'VRU'
|
||||
INNER JOIN osibank.CARDMEMBERISSUE cmi ON cmi.AGREENBR = ca.AGREENBR
|
||||
WHERE d.acctrolecd in ('CUST','GUAD','REPP','PREP','VAFI')
|
||||
AND cmi.currstatuscd != 'CLOS'
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
select ap.AgreeNbr,
|
||||
ap.PersNbr,
|
||||
ap.UserId
|
||||
from OSIBANK.agreepers ap
|
||||
fetch first :fetchAmount rows only
|
||||
+38
@@ -0,0 +1,38 @@
|
||||
SELECT A.ACCTNBR AS AccountNumber,
|
||||
COALESCE(Y.AGREENBR,Z.AGREENBR) AS AgreeNumber,
|
||||
CAST(TRIM(COALESCE(Y.USERID,Z.USERID,CASE WHEN A.MEMBERAGREENBR IS NULL THEN NULL ELSE 'M'||A.MEMBERAGREENBR END)) AS VARCHAR2(32)) AS UserId
|
||||
FROM OSIBANK.ACCT A
|
||||
LEFT JOIN (/*FIND PPL WHO HAVE ACCESS TO ACCT AS WWW AND ARE ACTIVE(IN TWO TABLES), BREAK TIES WITH LOWEST AGREENBR*/
|
||||
SELECT ROW_NUMBER() OVER (PARTITION BY APATA.ACCTNBR,APATA.PERSNBR ORDER BY APATA.AGREENBR) AS ID,
|
||||
APATA.ACCTNBR,
|
||||
APATA.PERSNBR,
|
||||
AP.USERID,
|
||||
AG.AGREENBR
|
||||
FROM OSIBANK.AGREE AG /*[PK:AGREENBR]*/
|
||||
INNER JOIN OSIBANK.AGREEPERS AP ON AP.AGREENBR=AG.AGREENBR
|
||||
AND AP.ACTIVEYN='Y' /*[PK:AGREENBR, PERSNBR] [NEEDS TO BE ACTIVE]*/
|
||||
INNER JOIN OSIBANK.AGREEPERSACCESSTYP APAT ON APAT.AGREENBR=AP.AGREENBR
|
||||
AND APAT.PERSNBR=AP.PERSNBR
|
||||
AND APAT.ACCESSTYPCD='WWW'
|
||||
AND APAT.ACTIVEYN='Y' /*[PK:AGREENBR, PERSNBR, ACCESSTYPCD('WWW')] [NEEDS TO BE ACTIVE]*/
|
||||
INNER JOIN OSIBANK.AGREEPERSACCESSTYPACCT APATA ON APATA.AGREENBR=AP.AGREENBR
|
||||
AND APATA.PERSNBR=AP.PERSNBR
|
||||
AND APATA.ACCESSTYPCD=APAT.ACCESSTYPCD /*[PK:AGREENBR, PERSNBR, ACCESSTYPCD('WWW'), ACCTNBR]*/
|
||||
) Y ON Y.ACCTNBR=A.ACCTNBR AND Y.PERSNBR=A.TAXRPTFORPERSNBR AND Y.ID=1
|
||||
LEFT JOIN (/*FIND PPL WHO HAVE ACCESS TO ORG AS WWW AND ARE ACTIVE(IN TWO TABLES), BREAK TIES WITH PERSON WHO IS CURRENTLY ACTIVE, WAS ACTIVE FIRST, LOWEST AGREENBR, LOWEST PERSNBR*/
|
||||
SELECT ROW_NUMBER() OVER (PARTITION BY AG.BYORGNBR ORDER BY CASE WHEN RO.EFFDATE<=TRUNC(CURRENT_DATE) AND (RO.INACTIVEDATE IS NULL OR RO.INACTIVEDATE>TRUNC(CURRENT_DATE)) THEN 0 ELSE 1 END,RO.EFFDATE,AG.AGREENBR,AP.PERSNBR) AS ID,
|
||||
AG.BYORGNBR,
|
||||
AP.USERID,
|
||||
AG.AGREENBR
|
||||
FROM OSIBANK.AGREE AG /*[PK:AGREENBR]*/
|
||||
INNER JOIN OSIBANK.AGREEPERS AP ON AP.AGREENBR=AG.AGREENBR
|
||||
AND AP.ACTIVEYN='Y' /*[PK:AGREENBR, PERSNBR] [NEEDS TO BE ACTIVE]*/
|
||||
INNER JOIN OSIBANK.AGREEPERSACCESSTYP APAT ON APAT.AGREENBR=AP.AGREENBR
|
||||
AND APAT.PERSNBR=AP.PERSNBR
|
||||
AND APAT.ACCESSTYPCD='WWW'
|
||||
AND APAT.ACTIVEYN='Y' /*[PK:AGREENBR, PERSNBR, ACCESSTYPCD('WWW')] [NEEDS TO BE ACTIVE]*/
|
||||
LEFT JOIN OSIBANK.ORGPERSROLE RO ON RO.ORGNBR=AG.BYORGNBR
|
||||
AND RO.PERSNBR=AP.PERSNBR
|
||||
AND RO.PERSROLECD=APAT.ACCESSTYPCD /*[PK:ORGNBR, PERSROLECD, EFFDATE, PERSNBR]*/
|
||||
) Z ON Z.BYORGNBR=A.TAXRPTFORORGNBR AND Z.ID=1
|
||||
WHERE A.ACCTNBR in ({AccountNumbersHolder})
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
SELECT AP.USERID
|
||||
FROM OSIBANK.AGREE AG /*[PK:AGREENBR]*/
|
||||
INNER JOIN OSIBANK.AGREEPERS AP ON AP.AGREENBR=AG.AGREENBR AND AP.ACTIVEYN='Y' /*[PK:AGREENBR, PERSNBR] [NEEDS TO BE ACTIVE]*/
|
||||
INNER JOIN OSIBANK.AGREEPERSACCESSTYP APAT ON APAT.AGREENBR=AP.AGREENBR AND APAT.PERSNBR=AP.PERSNBR AND APAT.ACCESSTYPCD='WWW' AND APAT.ACTIVEYN='Y' /*[PK:AGREENBR, PERSNBR, ACCESSTYPCD('WWW')] [NEEDS TO BE ACTIVE]*/
|
||||
LEFT JOIN OSIBANK.ORGPERSROLE RO ON RO.ORGNBR=AG.BYORGNBR AND RO.PERSNBR=AP.PERSNBR AND RO.PERSROLECD=APAT.ACCESSTYPCD /*[PK:ORGNBR, PERSROLECD, EFFDATE, PERSNBR]*/
|
||||
WHERE AG.BYORGNBR = :organizationNumber
|
||||
ORDER BY ROW_NUMBER() OVER (PARTITION BY AG.BYORGNBR ORDER BY CASE WHEN RO.EFFDATE<=CURRENT_DATE AND (RO.INACTIVEDATE IS NULL OR RO.INACTIVEDATE>CURRENT_DATE) THEN 0 ELSE 1 END,RO.EFFDATE,AG.AGREENBR,AP.PERSNBR)
|
||||
FETCH NEXT 1 ROWS ONLY
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
SELECT AP.USERID
|
||||
FROM OSIBANK.AGREE AG /*[PK:AGREENBR]*/
|
||||
INNER JOIN OSIBANK.AGREEPERS AP ON AP.AGREENBR=AG.AGREENBR AND AP.ACTIVEYN='Y' /*[PK:AGREENBR, PERSNBR] [NEEDS TO BE ACTIVE]*/
|
||||
INNER JOIN OSIBANK.AGREEPERSACCESSTYP APAT ON APAT.AGREENBR=AP.AGREENBR AND APAT.PERSNBR=AP.PERSNBR AND APAT.ACCESSTYPCD='WWW' AND APAT.ACTIVEYN='Y' /*[PK:AGREENBR, PERSNBR, ACCESSTYPCD('WWW')] [NEEDS TO BE ACTIVE]*/
|
||||
WHERE AG.BYORGNBR IS NULL AND AP.PERSNBR = :personNumber
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
SELECT ACCTNBR AS AccountNumber, ACCTDESC AS AccountDescription, MJACCTTYPCD as MajorAccountTypeCode, TAXRPTFORPERSNBR AS TaxReportForPersonNumber, TAXRPTFORORGNBR AS TaxReportForOrgNumber, OVRDELIVERYMETHCD
|
||||
FROM OSIBANK.ACCT
|
||||
WHERE ACCTNBR = :accountNumber
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
SELECT a4.ACCTNBR AS AccountNumber, a4.ACCTDESC AS AccountDescription, a4.MJACCTTYPCD as MajorAccountTypeCode, a4.TAXRPTFORPERSNBR AS TaxReportForPersonNumber, a4.TAXRPTFORORGNBR AS TaxReportForOrgNumber, a4.OVRDELIVERYMETHCD
|
||||
FROM osibank.AGREEPERS a
|
||||
INNER JOIN OSIBANK.AGREEPERSACCESSTYPACCT a2 ON a.PERSNBR = a2.PERSNBR AND a.AGREENBR = a2.AGREENBR AND a2.ACCESSTYPCD = 'WWW'
|
||||
INNER JOIN OSIBANK.AGREE a3 ON a.AGREENBR = a3.AGREENBR AND a3.ACTIVEDATETIME <= CURRENT_DATE AND (a3.TERMINATEDATETIME IS NULL OR a3.TERMINATEDATETIME > CURRENT_DATE)
|
||||
INNER JOIN OSIBANK.ACCT a4 ON a2.ACCTNBR = a4.ACCTNBR
|
||||
WHERE a.USERID = :userId
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
SELECT ACCTNBR AS AccountNumber, ACCTDESC AS AccountDescription, MJACCTTYPCD as MajorAccountTypeCode, TAXRPTFORPERSNBR AS TaxReportForPersonNumber, TAXRPTFORORGNBR AS TaxReportForOrgNumber, OVRDELIVERYMETHCD
|
||||
FROM OSIBANK.ACCT
|
||||
WHERE TAXRPTFORORGNBR = :organizationId
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
SELECT a.AGREENBR AS AgreementNumber, a.USERID, a.PERSNBR AS PersonNumber,
|
||||
a3.BYORGNBR,
|
||||
o.ORGNAME AS OrganizationName,
|
||||
p.FIRSTNAME, p.MDLINIT AS MiddleInitial, p.MDLNAME AS MiddleName, p.LASTNAME, p.SUFFIX
|
||||
FROM OSIBANK.AGREEPERS a
|
||||
INNER JOIN OSIBANK.AGREEPERSACCESSTYPACCT a2 ON a.AGREENBR = a2.AGREENBR AND a.PERSNBR = a2.PERSNBR AND a2.ACCESSTYPCD = 'WWW'
|
||||
INNER JOIN OSIBANK.PERS p ON a2.PERSNBR = p.PERSNBR
|
||||
INNER JOIN OSIBANK.AGREE a3 ON a2.AGREENBR = a3.AGREENBR AND a3.ACTIVEDATETIME <= CURRENT_DATE AND (a3.TERMINATEDATETIME IS NULL OR a3.TERMINATEDATETIME > CURRENT_DATE)
|
||||
LEFT OUTER JOIN OSIBANK.ORG o ON a3.BYORGNBR = o.ORGNBR
|
||||
WHERE a.AGREENBR = :agreementId
|
||||
FETCH FIRST 1 ROWS ONLY
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
SELECT a.AGREENBR AS AgreementNumber, a.USERID, a.PERSNBR AS PersonNumber,
|
||||
a3.BYORGNBR,
|
||||
o.ORGNAME AS OrganizationName,
|
||||
p.FIRSTNAME, p.MDLINIT AS MiddleInitial, p.MDLNAME AS MiddleName, p.LASTNAME, p.SUFFIX
|
||||
FROM OSIBANK.AGREEPERS a
|
||||
INNER JOIN OSIBANK.AGREEPERSACCESSTYPACCT a2 ON a.AGREENBR = a2.AGREENBR AND a.PERSNBR = a2.PERSNBR AND a2.ACCESSTYPCD = 'WWW'
|
||||
INNER JOIN OSIBANK.PERS p ON a2.PERSNBR = p.PERSNBR
|
||||
INNER JOIN OSIBANK.AGREE a3 ON a2.AGREENBR = a3.AGREENBR AND a3.ACTIVEDATETIME <= CURRENT_DATE AND (a3.TERMINATEDATETIME IS NULL OR a3.TERMINATEDATETIME > CURRENT_DATE)
|
||||
LEFT OUTER JOIN OSIBANK.ORG o ON a3.BYORGNBR = o.ORGNBR
|
||||
WHERE a.UserId = :userId
|
||||
FETCH FIRST 1 ROWS ONLY
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
SELECT A.ACCTNBR AS AccountNumber,
|
||||
COALESCE(Y.AGREENBR,Z.AGREENBR) AS AgreementNumber,
|
||||
COALESCE(Y.USERID,Z.USERID) AS UserId,
|
||||
COALESCE(Y.PERSNBR, Z.PERSNBR) AS PersonNumber
|
||||
FROM OSIBANK.ACCT A
|
||||
LEFT JOIN (
|
||||
SELECT ROW_NUMBER() OVER (PARTITION BY APATA.ACCTNBR,APATA.PERSNBR ORDER BY APATA.AGREENBR) AS ID,
|
||||
APATA.ACCTNBR,
|
||||
APATA.PERSNBR,
|
||||
APATA.AGREENBR,
|
||||
AP.USERID
|
||||
FROM OSIBANK.AGREE AG
|
||||
INNER JOIN OSIBANK.AGREEPERS AP ON AP.AGREENBR=AG.AGREENBR AND AP.ACTIVEYN='Y'
|
||||
INNER JOIN OSIBANK.AGREEPERSACCESSTYP APAT ON APAT.AGREENBR=AP.AGREENBR AND APAT.PERSNBR=AP.PERSNBR AND APAT.ACCESSTYPCD='WWW' AND APAT.ACTIVEYN='Y'
|
||||
INNER JOIN OSIBANK.AGREEPERSACCESSTYPACCT APATA ON APATA.AGREENBR=AP.AGREENBR AND APATA.PERSNBR=AP.PERSNBR AND APATA.ACCESSTYPCD=APAT.ACCESSTYPCD
|
||||
) Y ON Y.ACCTNBR=A.ACCTNBR AND Y.PERSNBR=A.TAXRPTFORPERSNBR AND Y.ID=1
|
||||
LEFT JOIN (
|
||||
SELECT ROW_NUMBER() OVER (PARTITION BY AG.BYORGNBR ORDER BY CASE WHEN RO.EFFDATE<=TRUNC(CURRENT_DATE) AND (RO.INACTIVEDATE IS NULL OR RO.INACTIVEDATE>TRUNC(CURRENT_DATE)) THEN 0 ELSE 1 END,RO.EFFDATE,AP.AGREENBR,AP.PERSNBR) AS ID,
|
||||
AG.BYORGNBR,
|
||||
AG.AGREENBR,
|
||||
AP.USERID,
|
||||
AP.PERSNBR
|
||||
FROM OSIBANK.AGREE AG
|
||||
INNER JOIN OSIBANK.AGREEPERS AP ON AP.AGREENBR=AG.AGREENBR AND AP.ACTIVEYN='Y'
|
||||
INNER JOIN OSIBANK.AGREEPERSACCESSTYP APAT ON APAT.AGREENBR = AP.AGREENBR AND APAT.PERSNBR = AP.PERSNBR AND APAT.ACCESSTYPCD = 'WWW' AND APAT.ACTIVEYN = 'Y'
|
||||
LEFT JOIN OSIBANK.ORGPERSROLE RO ON RO.ORGNBR=AG.BYORGNBR AND RO.PERSNBR = AP.PERSNBR AND RO.PERSROLECD=APAT.ACCESSTYPCD
|
||||
) Z ON Z.BYORGNBR=A.TAXRPTFORORGNBR AND Z.ID=1
|
||||
WHERE A.ACCTNBR in ({AccountNumbersHolder})
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
SELECT a.AGREENBR AS AgreementNumber, a.USERID, a.PERSNBR AS PersonNumber,
|
||||
a3.BYORGNBR,
|
||||
o.ORGNAME AS OrganizationName,
|
||||
p.FIRSTNAME, p.MDLINIT AS MiddleInitial, p.MDLNAME AS MiddleName, p.LASTNAME, p.SUFFIX
|
||||
FROM OSIBANK.Acct a4
|
||||
INNER JOIN OSIBANK.AGREEPERSACCESSTYPACCT a2 ON a4.ACCTNBR = a2.ACCTNBR AND a2.ACCESSTYPCD = 'WWW'
|
||||
INNER JOIN OSIBANK.AGREEPERS a ON a2.AGREENBR = a.AGREENBR AND a2.PERSNBR = a.PERSNBR
|
||||
INNER JOIN OSIBANK.PERS p ON a2.PERSNBR = p.PERSNBR
|
||||
INNER JOIN OSIBANK.AGREE a3 ON a2.AGREENBR = a3.AGREENBR AND a3.ACTIVEDATETIME <= CURRENT_DATE AND (a3.TERMINATEDATETIME IS NULL OR a3.TERMINATEDATETIME > CURRENT_DATE)
|
||||
LEFT OUTER JOIN OSIBANK.ORG o ON a3.BYORGNBR = o.ORGNBR
|
||||
WHERE a4.ACCTNBR = :accountNumber
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
SELECT DISTINCT CASE WHEN UPPER(a.TABLEID) = 'AGREEPERSACCESSTYPACCT' AND UPPER(a.DATABASEACTVCD) = 'DEL' AND UPPER(a.COLUMNID) = 'ACCTNBR' AND a2.SUBJACCTNBR IS NULL THEN TO_NUMBER(a.OLDVALUE)
|
||||
WHEN UPPER(a.TABLEID) = 'AGREEPERSACCESSTYPACCT' AND UPPER(a.DATABASEACTVCD) = 'ADD' AND UPPER(a.COLUMNID) = 'ACCTNBR' AND a2.SUBJACCTNBR IS NULL THEN TO_NUMBER(a.NEWVALUE)
|
||||
ELSE a2.SUBJACCTNBR END AS AccountNumber
|
||||
FROM osibank.ACTVSUBACTV a
|
||||
LEFT OUTER JOIN OSIBANK.ACTV a2 ON a.ACTVNBR = a2.ACTVNBR AND a2.ACTVDATETIME > TO_DATE(:dateLastMaintained, 'YYYY-MM-DD HH24:MI:SS')
|
||||
WHERE a2.SUBJACCTNBR IS NOT NULL
|
||||
AND ((UPPER(a.TABLEID) = 'ACCT' AND (UPPER(COLUMNID) = 'TAXRPTFORPERSNBR' OR UPPER(COLUMNID) = 'TAXRPTFORORGNBR' OR UPPER(COLUMNID) = 'OVRDELIVERYMETHCD'))
|
||||
OR ((UPPER(a.TABLEID) = 'AGREEPERSACCESSTYPACCT' AND UPPER(DATABASEACTVCD) = 'DEL') AND UPPER(COLUMNID) = 'ACCTNBR' AND a2.ACTVDATETIME > TO_DATE(:dateLastMaintained, 'YYYY-MM-DD HH24:MI:SS'))
|
||||
OR ((UPPER(a.TABLEID) = 'AGREEPERSACCESSTYPACCT' AND UPPER(DATABASEACTVCD) = 'ADD') AND UPPER(COLUMNID) = 'ACCTNBR' AND a2.ACTVDATETIME > TO_DATE(:dateLastMaintained, 'YYYY-MM-DD HH24:MI:SS')))
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
SELECT DISTINCT a2.SUBJAGREENBR
|
||||
FROM OSIBANK.LCU_MVIEW_ACTVSUBACTV a
|
||||
LEFT OUTER JOIN OSIBANK.LCU_MVIEW_ACTV a2 ON a.ACTVNBR = a2.ACTVNBR
|
||||
WHERE a2.SUBJAGREENBR IS NOT NULL
|
||||
AND ((UPPER(a.TABLEID) = 'AGREEPERS' AND UPPER(COLUMNID) = 'ACTIVEYN' AND a.DATELASTMAINT > TO_DATE(:dateLastMaintained, 'YYYY-MM-DD HH24:MI:SS'))
|
||||
OR (UPPER(a.TABLEID) = 'AGREEPERSACCESSTYP' AND UPPER(COLUMNID) = 'ACTIVEYN' AND a.DATELASTMAINT > TO_DATE(:dateLastMaintained, 'YYYY-MM-DD HH24:MI:SS'))
|
||||
OR (UPPER(a.TABLEID) = 'AGREEPERSACCESSTYPACCT' AND UPPER(COLUMNID) = 'ACCESSTYPCD' AND (UPPER(OLDVALUE) LIKE '%WWW%' OR UPPER(NEWVALUE) LIKE '%WWWW%') AND a.DATELASTMAINT > TO_DATE(:dateLastMaintained, 'YYYY-MM-DD HH24:MI:SS')))
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
SELECT DISTINCT a2.SUBJORGNBR
|
||||
FROM osibank.LCU_MVIEW_ACTVSUBACTV a
|
||||
LEFT OUTER JOIN OSIBANK.LCU_MVIEW_ACTV a2 ON a.ACTVNBR = a2.ACTVNBR
|
||||
WHERE a2.SUBJORGNBR IS NOT NULL
|
||||
AND ((UPPER(a.TABLEID) = 'ORGPERSROLE' AND UPPER(COLUMNID) = 'INACTIVEDATE' AND OLDVALUE IS NOT NULL
|
||||
AND NEWVALUE IS NOT NULL AND a.DATELASTMAINT > TO_DATE(:dateLastMaintained, 'YYYY-MM-DD HH24:MI:SS'))
|
||||
OR (UPPER(a.TABLEID) = 'ORGPERSROLE' AND UPPER(COLUMNID) = 'PERSROLECD' AND (UPPER(OLDVALUE) LIKE '%WWW%' OR UPPER(NEWVALUE) LIKE '%WWW%')
|
||||
AND a.DATELASTMAINT > TO_DATE(:dateLastMaintained, 'YYYY-MM-DD HH24:MI:SS')))
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
SELECT appl.applname As ApplicationName,
|
||||
qah.applnbr As ApplicationNumber,
|
||||
qah.quenbr AS QueueNumber,
|
||||
qah.stopdatetime As StopDateTime,
|
||||
que.EffDate AS EffectiveDate
|
||||
FROM QUEAPPLHIST qah
|
||||
INNER JOIN appl ON qah.APPLNBR = appl.APPLNBR
|
||||
INNER JOIN que ON que.quenbr = qah.quenbr
|
||||
WHERE qah.APPLNBR in ({ApplicationNumbersHolder})
|
||||
AND que.EffDate = TO_TIMESTAMP(:EffectiveDate, 'YYYY-MM-DD HH24:MI:SS')
|
||||
+30
@@ -0,0 +1,30 @@
|
||||
SELECT DISTINCT base.Person as AssociateName,
|
||||
base.ActiveEmp as ActiveEmployee,
|
||||
base.PERSTYPDESC as PersonType,
|
||||
base.PERSNBR as PersonNumber
|
||||
FROM (
|
||||
SELECT
|
||||
P.PERSNBR,
|
||||
P.FIRSTNAME || ' ' || P.LASTNAME AS Person,
|
||||
CASE
|
||||
WHEN PE.PERSNBR is not null and ((PE.INACTIVEDATE is null) or (PE.INACTIVEDATE is not null and PE.INACTIVEDATE > CURRENT_DATE)) THEN 1
|
||||
WHEN PE.PERSNBR is not null and PE.INACTIVEDATE is not null and PE.INACTIVEDATE <= CURRENT_DATE THEN 0
|
||||
WHEN PE.PERSNBR is null THEN null
|
||||
ELSE null
|
||||
END AS ActiveEmp,
|
||||
ppt.PERSTYPDESC,
|
||||
P.TAXID
|
||||
FROM OSIBANK.PERS P
|
||||
LEFT JOIN OSIBANK.PERSEMPL PE ON PE.PERSNBR = P.PERSNBR
|
||||
JOIN (
|
||||
SELECT ppt.PERSNBR, LISTAGG(PT.PERSTYPDESC, ',') as PERSTYPDESC
|
||||
FROM OSIBANK.PERSPERSTYP ppt
|
||||
JOIN OSIBANK.PERSTYP PT ON ppt.PERSTYPCD = pt.PERSTYPCD
|
||||
WHERE ppt.PERSTYPCD IN ('AUD','DIR','EMP','EOFF','OFF','REPI')
|
||||
GROUP BY ppt.PERSNBR
|
||||
) ppt ON P.PERSNBR = ppt.PERSNBR
|
||||
LEFT JOIN OSIBANK.ACCT A ON P.PERSNBR = A.TAXRPTFORPERSNBR
|
||||
LEFT JOIN OSIBANK.VIEWPERSTAXID V ON P.PERSNBR = V.PERSNBR
|
||||
WHERE V.TAXID = :taxId
|
||||
) base
|
||||
ORDER BY AssociateName
|
||||
+120
@@ -0,0 +1,120 @@
|
||||
SELECT
|
||||
Coalesce(MA.MemberAgreeNbr, MAOrg.MemberAgreeNbr) AS MemberNumber,
|
||||
AC.ACCTNBR AS LoanNumber,
|
||||
AUFAI.Value AS ApplicationId,
|
||||
RTRIM(PERS.FirstName) AS MemberFirstName,
|
||||
PERS.mdlinit AS MemberInitial,
|
||||
COALESCE(RTRIM(PERS.LastName), RTRIM(ORGM.OrgName)) AS MemberLastName,
|
||||
OUFDC.Value AS DealerCode,
|
||||
DGA.AcctNbr AS DealerAccountNumber,
|
||||
DGA.taxrptfororgnbr AS DealerOrganizationNumber,
|
||||
ORGD.OrgName AS DealerName,
|
||||
CASE WHEN AUFWA.Value = 'Y' OR ASAW.SubAcctNbr IS NOT NULL THEN 1 ELSE 0 END AS Warranty,
|
||||
CASE WHEN AUFG.Value = 'Y' OR ASAG.SubAcctNbr IS NOT NULL THEN 1 ELSE 0 END AS GAP,
|
||||
CASE WHEN ASADL.SubAcctNbr IS NOT NULL OR ASADI.SubAcctNbr IS NOT NULL OR ASADLLD.SubAcctNbr IS NOT NULL OR ASADLLF.SubACctNbr IS NOT NULL THEN 1 ELSE 0 END AS CreditLife,
|
||||
CASE WHEN ASADD.SubAcctNbr IS NOT NULL OR ASADI.SubAcctNbr IS NOT NULL OR ASADLLD.SubAcctNbr IS NOT NULL OR ASADLDS.SubAcctNbr IS NOT NULL THEN 1 ELSE 0 END AS CreditDisability,
|
||||
CASE WHEN ASAMBP.SubAcctNbr IS NOT NULL THEN 1 ELSE 0 END AS Mbp,
|
||||
AC.currmiaccttypcd AS AccountType,
|
||||
MMA.MIACCTTYPDESC AS AccountDescription,
|
||||
AC.CONTRACTDATE AS LoanDate,
|
||||
Coalesce(RTXN.OrigPostDate,TO_DATE(AUFAD.Value, 'YYYY-MM-DD' )) AS PostedDate,
|
||||
AL.date1stpmtdue AS FirstPmtDate,
|
||||
AC.DATEMAT AS FinalPmtDate,
|
||||
AC.ORIGTERM AS OriginalTermInDays,
|
||||
ASA.OrigBal AS LoanAmount,
|
||||
To_number(AUFBR.Value) AS BuyRate,
|
||||
AUFLT.Value AS LoanType,
|
||||
RTC.INTRATE * 100 AS ContractRate,
|
||||
PT.PMTAMT AS MonthlyPmt,
|
||||
RTRIM(PR.PROPID) AS Vin,
|
||||
RTRIM(PR.PropMake) AS Make,
|
||||
RTRIM(PR.PropModel) AS Model,
|
||||
PR.propyearnbr AS Year,
|
||||
RTRIM(PR.PropColor) AS Color,
|
||||
PR.PropVehicleOdometer AS Mileage,
|
||||
AAA.PostDate AS PaidLoanDate
|
||||
FROM ACCT AC
|
||||
LEFT JOIN PERS
|
||||
ON PERS.PersNbr = AC.TAXRPTFORPERSNBR
|
||||
LEFT JOIN ORG ORGM
|
||||
ON ORGM.OrgNbr = AC.TaxrptForORgNbr
|
||||
LEFT JOIN MEMBERAGREEMENT MA
|
||||
ON MA.PrimaryPersNbr = PERS.PersNbr
|
||||
LEFT JOIN MEMBERAGREEMENT MAOrg
|
||||
ON MAOrg.PrimaryOrgNbr = ORGM.OrgNbr
|
||||
LEFT JOIN ACCTGRPACCT AGA
|
||||
ON AC.AcctNbr = AGA.AcctNbr
|
||||
LEFT JOIN (select acctgrpnbr, acct.acctnbr, acct.taxrptfororgnbr from acctgrpacct aga
|
||||
inner join acct
|
||||
on acct.acctnbr = aga.acctnbr and acct.currmiaccttypcd = 'DLR') DGA
|
||||
ON DGA.AcctGrpNbr = AGA.AcctGrpNbr
|
||||
LEFT JOIN ORG ORGD
|
||||
ON ORGD.ORGNbr = DGA.taxrptfororgnbr
|
||||
LEFT JOIN ACCTLOAN AL
|
||||
ON AL.AcctNbr = AC.AcctNbr
|
||||
LEFT JOIN (SELECT Propnbr, AcctNbr,ROW_NUMBER() OVER(PARTITION BY ACCTNBR ORDER BY PropNbr) PPP_RNK
|
||||
FROM ACCTPROP) AP ON AP.AcctNbr = AC.AcctNbr AND AP.PPP_RNK = 1
|
||||
LEFT JOIN PROP PR
|
||||
ON PR.Propnbr = AP.Propnbr
|
||||
LEFT JOIN ACCTSUBACCT ASA
|
||||
ON ASA.ACCTNBR = AC.ACCTNBR AND ASA.BALCATCD = 'NOTE' AND ASA.BALTYPCD = 'BAL'
|
||||
LEFT JOIN (SELECT PS.ACCTNBR,PS.SUBACCTNBR,PS.EFFDATE,PS.INACTIVEDATE,PMT.PMTNBR, PMT.PMTTYPCD,T.PMTTYPDESC,PMT.PMTAMT,PMT.PMTPERCENT,
|
||||
PMT.EFFDATE PMT_EFFDATE,PMT.PMTCALPERIODCD,PMT.INACTIVEDATE PMT_INACTIVEDATE,PMT.DATELASTMAINT,
|
||||
ROW_NUMBER() OVER(PARTITION BY PS.ACCTNBR,PS.SUBACCTNBR ORDER BY PMT.EFFDATE DESC ) P_RNK
|
||||
FROM ACCTPMTSUBACCTHIST PS
|
||||
JOIN ACCTSUBACCT ASA ON ASA.ACCTNBR = PS.ACCTNBR AND ASA.SUBACCTNBR = PS.SUBACCTNBR AND ASA.BALCATCD = 'NOTE' AND ASA.BALTYPCD = 'DUE'
|
||||
JOIN ACCTPMTHIST PMT ON PMT.ACCTNBR = PS.ACCTNBR AND PMT.PMTNBR = PS.PMTNBR
|
||||
JOIN PMTTYP T ON T.PMTTYPCD = PMT.PMTTYPCD) PT ON PT.ACCTNBR = AC.ACCTNBR AND P_RNK = 1
|
||||
LEFT JOIN (SELECT R.DATELASTMAINT,R.ACCTNBR,R.SUBACCTNBR, R.EFFDATE ,R.INTRATE,R.INACTIVEDATE,R.DELQRATEYN,R.POSTDATE,R.DISCLOSEDINTRATE
|
||||
,ROW_NUMBER() OVER(PARTITION BY R.ACCTNBR,R.SUBACCTNBR ORDER BY R.POSTDATE DESC ) RTB_RNK
|
||||
FROM ACCTRATEHIST R
|
||||
JOIN ACCTSUBACCT ASA ON ASA.ACCTNBR = R.ACCTNBR AND ASA.SUBACCTNBR = R.SUBACCTNBR AND ASA.BALCATCD = 'UPFR' AND ASA.BALTYPCD = 'DLR') RTB
|
||||
ON RTB.ACCTNBR = AC.ACCTNBR AND RTB_RNK = 1
|
||||
LEFT JOIN (SELECT R.DATELASTMAINT,R.ACCTNBR,R.SUBACCTNBR, R.EFFDATE,R.INTRATE,R.INACTIVEDATE,R.DELQRATEYN,R.POSTDATE,R.DISCLOSEDINTRATE
|
||||
,ROW_NUMBER() OVER(PARTITION BY R.ACCTNBR,R.SUBACCTNBR ORDER BY R.POSTDATE DESC) RTC_RNK
|
||||
FROM ACCTRATEHIST R
|
||||
JOIN ACCTSUBACCT ASA ON ASA.ACCTNBR = R.ACCTNBR AND ASA.SUBACCTNBR = R.SUBACCTNBR AND ASA.BALCATCD = 'NOTE' AND ASA.BALTYPCD = 'BAL') RTC
|
||||
ON RTC.ACCTNBR = AC.ACCTNBR AND RTC_RNK = 1
|
||||
LEFT JOIN MJMIACCTTYP MMA
|
||||
ON MMA.MIACCTTYPCD = AC.CURRMIACCTTYPCD
|
||||
LEFT JOIN ACCTUSERFIELD AUFLT
|
||||
ON AUFLT.Acctnbr = AC.Acctnbr AND AUFLT.userfieldCD = 'COMC'
|
||||
LEFT JOIN ACCTUSERFIELD AUFAI
|
||||
ON AUFAI.Acctnbr = AC.Acctnbr AND AUFAI.userfieldCD = 'LOSA'
|
||||
LEFT JOIN ORGUSERFIELD OUFDC
|
||||
ON OUFDC.OrgNbr = ORGD.OrgNbr AND OUFDC.UserFieldCD = 'DLCD'
|
||||
LEFT JOIN RTXN
|
||||
ON RTXN.ACCTNBR = AC.ACCTNBR AND rtxntypcd = 'NDSB'
|
||||
LEFT JOIN ACCTUSERFIELD AUFAD
|
||||
ON AUFAD.Acctnbr = AC.Acctnbr AND AUFAD.userfieldCD = 'LOSD'
|
||||
LEFT JOIN ACCTUSERFIELD AUFBR
|
||||
ON AUFBR.Acctnbr = AC.Acctnbr AND AUFBR.userfieldCD = 'BUYR'
|
||||
LEFT JOIN ACCTUSERFIELD AUFWA
|
||||
ON AUFWA.Acctnbr = AC.Acctnbr AND AUFWA.userfieldCD = 'WRYN'
|
||||
LEFT JOIN ACCTUSERFIELD AUFG
|
||||
ON AUFG.Acctnbr = AC.Acctnbr AND AUFG.userfieldCD = 'GPYN'
|
||||
LEFT JOIN ACCTSUBACCT ASADL
|
||||
ON ASADL.AcctNbr = AC.AcctNbr AND ASADL.BALTYPCD = 'SINS' AND ASADL.BALCATCD = 'DL'
|
||||
LEFT JOIN ACCTSUBACCT ASADD
|
||||
ON ASADD.AcctNbr = AC.AcctNbr AND ASADD.BALTYPCD = 'SINS' AND ASADD.BALCATCD = 'DD'
|
||||
LEFT JOIN ACCTSUBACCT ASADI
|
||||
ON ASADI.AcctNbr = AC.AcctNbr AND ASADI.BALTYPCD = 'SINS' AND ASADI.BALCATCD = 'DI'
|
||||
LEFT JOIN ACCTSUBACCT ASADLLD
|
||||
ON ASADLLD.AcctNbr = AC.AcctNbr AND ASADLLD.BALTYPCD = 'COST' AND ASADLLD.BALCATCD = 'DLLD'
|
||||
LEFT JOIN ACCTSUBACCT ASADLDS
|
||||
ON ASADLDS.AcctNbr = AC.AcctNbr AND ASADLDS.BALTYPCD = 'COST' AND ASADLDS.BALCATCD = 'DLDS'
|
||||
LEFT JOIN ACCTSUBACCT ASADLLF
|
||||
ON ASADLLF.AcctNbr = AC.AcctNbr AND ASADLLF.BALTYPCD = 'COST' AND ASADLLF.BALCATCD = 'DLLF'
|
||||
LEFT JOIN ACCTSUBACCT ASAG
|
||||
ON ASAG.AcctNbr = AC.AcctNbr AND ASAG.BALTYPCD = 'COST' AND ASAG.BALCATCD = 'GAP'
|
||||
LEFT JOIN ACCTSUBACCT ASAW
|
||||
ON ASAW.AcctNbr = AC.AcctNbr AND ASAW.BALTYPCD = 'COST' AND ASAW.BALCATCD = 'WARA'
|
||||
LEFT JOIN ACCTSUBACCT ASAMBP
|
||||
ON ASAMBP.AcctNbr = AC.AcctNbr AND ASAMBP.BALTYPCD = 'COST' AND ASAMBP.BALCATCD = 'ODLR'
|
||||
LEFT JOIN (SELECT aas.ACCTNBR,aas.EFFDATETIME ,aas.acctstatcd,aas.POSTDATE
|
||||
,ROW_NUMBER() OVER(PARTITION BY aas.ACCTNBR ORDER BY aas.EFFDATETIME DESC ) AAS_RNK
|
||||
FROM acctacctstathist aas ) aaa
|
||||
ON aaa.ACCTNBR = ac.ACCTNBR AND AAS_RNK = 1
|
||||
WHERE AC.currmiaccttypcd IN ('DL01','DL02','DL03','DL04','DL05','DL06','DL07','DL08','DL09','DL10','DL11','DL12','DL13','DL14','DL15','DL16')
|
||||
AND AC.CURRACCTSTATCD = 'CLS'
|
||||
AND AAA.EffDateTime >= TO_TIMESTAMP(:newerThanDateTime, 'YYYY-MM-DD HH24:MI:SS')
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
SELECT
|
||||
AC.ACCTNBR AS LoanNumber,
|
||||
AAA.PostDate AS PaidLoanDate
|
||||
FROM ACCT AC
|
||||
LEFT JOIN (SELECT aas.ACCTNBR,aas.EFFDATETIME, aas.POSTDATE
|
||||
,ROW_NUMBER() OVER(PARTITION BY aas.ACCTNBR ORDER BY aas.EFFDATETIME DESC ) AAS_RNK
|
||||
FROM acctacctstathist aas ) aaa
|
||||
ON aaa.ACCTNBR = ac.ACCTNBR AND AAS_RNK = 1
|
||||
WHERE AC.curracctstatcd = 'CLS' AND AAA.EFFDATETIME >= TO_TIMESTAMP(:newerThanDateTime, 'YYYY-MM-DD HH24:MI:SS')
|
||||
AND AC.currmiaccttypcd IN ('DL01','DL02','DL03','DL04','DL05','DL06','DL07','DL08','DL09','DL10','DL11','DL12','DL13','DL14','DL15','DL16')
|
||||
+118
@@ -0,0 +1,118 @@
|
||||
SELECT
|
||||
Coalesce(MA.MemberAgreeNbr, MAOrg.MemberAgreeNbr) AS MemberNumber,
|
||||
AC.ACCTNBR AS LoanNumber,
|
||||
AUFAI.Value AS ApplicationId,
|
||||
RTRIM(PERS.FirstName) AS MemberFirstName,
|
||||
PERS.mdlinit AS MemberInitial,
|
||||
COALESCE(RTRIM(PERS.LastName), RTRIM(ORGM.OrgName)) AS MemberLastName,
|
||||
OUFDC.Value AS DealerCode,
|
||||
DGA.AcctNbr AS DealerAccountNumber,
|
||||
DGA.taxrptfororgnbr AS DealerOrganizationNumber,
|
||||
ORGD.OrgName AS DealerName,
|
||||
CASE WHEN AUFWA.Value = 'Y' OR ASAW.SubAcctNbr IS NOT NULL THEN 1 ELSE 0 END AS Warranty,
|
||||
CASE WHEN AUFG.Value = 'Y' OR ASAG.SubAcctNbr IS NOT NULL THEN 1 ELSE 0 END AS GAP,
|
||||
CASE WHEN ASADL.SubAcctNbr IS NOT NULL OR ASADI.SubAcctNbr IS NOT NULL OR ASADLLD.SubAcctNbr IS NOT NULL OR ASADLLF.SubACctNbr IS NOT NULL THEN 1 ELSE 0 END AS CreditLife,
|
||||
CASE WHEN ASADD.SubAcctNbr IS NOT NULL OR ASADI.SubAcctNbr IS NOT NULL OR ASADLLD.SubAcctNbr IS NOT NULL OR ASADLDS.SubAcctNbr IS NOT NULL THEN 1 ELSE 0 END AS CreditDisability,
|
||||
CASE WHEN ASAM.SubAcctNbr IS NOT NULL THEN 1 ELSE 0 END As Mbp,
|
||||
AC.currmiaccttypcd AS AccountType,
|
||||
MMA.MIACCTTYPDESC AS AccountDescription,
|
||||
AC.CONTRACTDATE AS LoanDate,
|
||||
Coalesce(RTXN.OrigPostDate,TO_DATE(AUFAD.Value, 'YYYY-MM-DD' )) AS PostedDate,
|
||||
AL.date1stpmtdue AS FirstPmtDate,
|
||||
AC.DATEMAT AS FinalPmtDate,
|
||||
AC.ORIGTERM AS OriginalTermInDays,
|
||||
ASA.OrigBal AS LoanAmount,
|
||||
COALESCE(RTB.INTRATE * 100, To_number(AUFBR.Value)) AS BuyRate,
|
||||
AUFLT.Value AS LoanType,
|
||||
RTC.INTRATE * 100 AS ContractRate,
|
||||
PT.PMTAMT AS MonthlyPmt,
|
||||
RTRIM(PR.PROPID) AS Vin,
|
||||
RTRIM(PR.PropMake) AS Make,
|
||||
RTRIM(PR.PropModel) AS Model,
|
||||
PR.propyearnbr AS Year,
|
||||
RTRIM(PR.PropColor) AS Color,
|
||||
PR.PropVehicleOdometer AS Mileage,
|
||||
AAA.PostDate AS PaidLoanDate
|
||||
FROM ACCT AC
|
||||
LEFT JOIN PERS
|
||||
ON PERS.PersNbr = AC.TAXRPTFORPERSNBR
|
||||
LEFT JOIN ORG ORGM
|
||||
ON ORGM.OrgNbr = AC.TaxrptForORgNbr
|
||||
LEFT JOIN MEMBERAGREEMENT MA
|
||||
ON MA.PrimaryPersNbr = PERS.PersNbr
|
||||
LEFT JOIN MEMBERAGREEMENT MAOrg
|
||||
ON MAOrg.PrimaryOrgNbr = ORGM.OrgNbr
|
||||
LEFT JOIN ACCTGRPACCT AGA
|
||||
ON AC.AcctNbr = AGA.AcctNbr
|
||||
LEFT JOIN (select acctgrpnbr, acct.acctnbr, acct.taxrptfororgnbr from acctgrpacct aga
|
||||
inner join acct
|
||||
on acct.acctnbr = aga.acctnbr and acct.currmiaccttypcd = 'DLR') DGA
|
||||
ON DGA.AcctGrpNbr = AGA.AcctGrpNbr
|
||||
LEFT JOIN ORG ORGD
|
||||
ON ORGD.ORGNbr = DGA.taxrptfororgnbr
|
||||
LEFT JOIN ACCTLOAN AL
|
||||
ON AL.AcctNbr = AC.AcctNbr
|
||||
LEFT JOIN (SELECT Propnbr, AcctNbr,ROW_NUMBER() OVER(PARTITION BY ACCTNBR ORDER BY PropNbr) PPP_RNK
|
||||
FROM ACCTPROP) AP ON AP.AcctNbr = AC.AcctNbr AND AP.PPP_RNK = 1
|
||||
LEFT JOIN PROP PR
|
||||
ON PR.Propnbr = AP.Propnbr
|
||||
LEFT JOIN ACCTSUBACCT ASA
|
||||
ON ASA.ACCTNBR = AC.ACCTNBR AND ASA.BALCATCD = 'NOTE' AND ASA.BALTYPCD = 'BAL'
|
||||
LEFT JOIN (SELECT PS.ACCTNBR,PS.SUBACCTNBR,PS.EFFDATE,PS.INACTIVEDATE,PMT.PMTNBR, PMT.PMTTYPCD,T.PMTTYPDESC,PMT.PMTAMT,PMT.PMTPERCENT,
|
||||
PMT.EFFDATE PMT_EFFDATE,PMT.PMTCALPERIODCD,PMT.INACTIVEDATE PMT_INACTIVEDATE,PMT.DATELASTMAINT,
|
||||
ROW_NUMBER() OVER(PARTITION BY PS.ACCTNBR,PS.SUBACCTNBR ORDER BY PMT.EFFDATE DESC ) P_RNK
|
||||
FROM ACCTPMTSUBACCTHIST PS
|
||||
JOIN ACCTSUBACCT ASA ON ASA.ACCTNBR = PS.ACCTNBR AND ASA.SUBACCTNBR = PS.SUBACCTNBR AND ASA.BALCATCD = 'NOTE' AND ASA.BALTYPCD = 'DUE'
|
||||
JOIN ACCTPMTHIST PMT ON PMT.ACCTNBR = PS.ACCTNBR AND PMT.PMTNBR = PS.PMTNBR
|
||||
JOIN PMTTYP T ON T.PMTTYPCD = PMT.PMTTYPCD) PT ON PT.ACCTNBR = AC.ACCTNBR AND P_RNK = 1
|
||||
LEFT JOIN (SELECT R.DATELASTMAINT,R.ACCTNBR,R.SUBACCTNBR, R.EFFDATE ,R.INTRATE,R.INACTIVEDATE,R.DELQRATEYN,R.POSTDATE,R.DISCLOSEDINTRATE
|
||||
,ROW_NUMBER() OVER(PARTITION BY R.ACCTNBR,R.SUBACCTNBR ORDER BY R.POSTDATE DESC ) RTB_RNK
|
||||
FROM ACCTRATEHIST R
|
||||
JOIN ACCTSUBACCT ASA ON ASA.ACCTNBR = R.ACCTNBR AND ASA.SUBACCTNBR = R.SUBACCTNBR AND ASA.BALCATCD = 'UPFR' AND ASA.BALTYPCD = 'DLR') RTB
|
||||
ON RTB.ACCTNBR = AC.ACCTNBR AND RTB_RNK = 1
|
||||
LEFT JOIN (SELECT R.DATELASTMAINT,R.ACCTNBR,R.SUBACCTNBR, R.EFFDATE,R.INTRATE,R.INACTIVEDATE,R.DELQRATEYN,R.POSTDATE,R.DISCLOSEDINTRATE
|
||||
,ROW_NUMBER() OVER(PARTITION BY R.ACCTNBR,R.SUBACCTNBR ORDER BY R.POSTDATE DESC) RTC_RNK
|
||||
FROM ACCTRATEHIST R
|
||||
JOIN ACCTSUBACCT ASA ON ASA.ACCTNBR = R.ACCTNBR AND ASA.SUBACCTNBR = R.SUBACCTNBR AND ASA.BALCATCD = 'NOTE' AND ASA.BALTYPCD = 'BAL') RTC
|
||||
ON RTC.ACCTNBR = AC.ACCTNBR AND RTC_RNK = 1
|
||||
LEFT JOIN MJMIACCTTYP MMA
|
||||
ON MMA.MIACCTTYPCD = AC.CURRMIACCTTYPCD
|
||||
LEFT JOIN ACCTUSERFIELD AUFLT
|
||||
ON AUFLT.Acctnbr = AC.Acctnbr AND AUFLT.userfieldCD = 'COMC'
|
||||
LEFT JOIN ACCTUSERFIELD AUFAI
|
||||
ON AUFAI.Acctnbr = AC.Acctnbr AND AUFAI.userfieldCD = 'LOSA'
|
||||
LEFT JOIN ORGUSERFIELD OUFDC
|
||||
ON OUFDC.OrgNbr = ORGD.OrgNbr AND OUFDC.UserFieldCD = 'DLCD'
|
||||
LEFT JOIN RTXN
|
||||
ON RTXN.ACCTNBR = AC.ACCTNBR AND rtxntypcd = 'NDSB'
|
||||
LEFT JOIN ACCTUSERFIELD AUFAD
|
||||
ON AUFAD.Acctnbr = AC.Acctnbr AND AUFAD.userfieldCD = 'LOSD'
|
||||
LEFT JOIN ACCTUSERFIELD AUFBR
|
||||
ON AUFBR.Acctnbr = AC.Acctnbr AND AUFBR.userfieldCD = 'BUYR'
|
||||
LEFT JOIN ACCTUSERFIELD AUFWA
|
||||
ON AUFWA.Acctnbr = AC.Acctnbr AND AUFWA.userfieldCD = 'WRYN'
|
||||
LEFT JOIN ACCTUSERFIELD AUFG
|
||||
ON AUFG.Acctnbr = AC.Acctnbr AND AUFG.userfieldCD = 'GPYN'
|
||||
LEFT JOIN ACCTSUBACCT ASADL
|
||||
ON ASADL.AcctNbr = AC.AcctNbr AND ASADL.BALTYPCD = 'SINS' AND ASADL.BALCATCD = 'DL'
|
||||
LEFT JOIN ACCTSUBACCT ASADI
|
||||
ON ASADI.AcctNbr = AC.AcctNbr AND ASADI.BALTYPCD = 'SINS' AND ASADI.BALCATCD = 'DI'
|
||||
LEFT JOIN ACCTSUBACCT ASADD
|
||||
ON ASADD.AcctNbr = AC.AcctNbr AND ASADD.BALTYPCD = 'SINS' AND ASADD.BALCATCD = 'DD'
|
||||
LEFT JOIN ACCTSUBACCT ASADLLD
|
||||
ON ASADLLD.AcctNbr = AC.AcctNbr AND ASADLLD.BALTYPCD = 'FIN' AND ASADLLD.BALCATCD = 'DLLD'
|
||||
LEFT JOIN ACCTSUBACCT ASADLDS
|
||||
ON ASADLDS.AcctNbr = AC.AcctNbr AND ASADLDS.BALTYPCD = 'FIN' AND ASADLDS.BALCATCD = 'DLDS'
|
||||
LEFT JOIN ACCTSUBACCT ASADLLF
|
||||
ON ASADLLF.AcctNbr = AC.AcctNbr AND ASADLLF.BALTYPCD = 'FIN' AND ASADLLF.BALCATCD = 'DLLF'
|
||||
LEFT JOIN ACCTSUBACCT ASAG
|
||||
ON ASAG.AcctNbr = AC.AcctNbr AND ASAG.BALTYPCD = 'FIN' AND ASAG.BALCATCD = 'GAP'
|
||||
LEFT JOIN ACCTSUBACCT ASAW
|
||||
ON ASAW.AcctNbr = AC.AcctNbr AND ASAW.BALTYPCD = 'FIN' AND ASAW.BALCATCD = 'WARA'
|
||||
LEFT JOIN ACCTSUBACCT ASAM
|
||||
ON ASAW.AcctNbr = AC.AcctNbr AND ASAW.BALTYPCD = 'FIN' AND ASAW.BALCATCD = 'ODLR'
|
||||
LEFT JOIN (SELECT aas.ACCTNBR,aas.EFFDATETIME ,aas.acctstatcd,aas.POSTDATE
|
||||
,ROW_NUMBER() OVER(PARTITION BY aas.ACCTNBR ORDER BY aas.EFFDATETIME DESC ) AAS_RNK
|
||||
FROM acctacctstathist aas ) aaa
|
||||
ON aaa.ACCTNBR = ac.ACCTNBR AND AAS_RNK = 1
|
||||
WHERE AC.AcctNbr = :AcctNbr
|
||||
+129
@@ -0,0 +1,129 @@
|
||||
With Cte_IndirectActiveLoans as (
|
||||
SELECT
|
||||
Coalesce(MA.MemberAgreeNbr, MAOrg.MemberAgreeNbr) AS MemberNumber,
|
||||
AC.ACCTNBR AS LoanNumber,
|
||||
AUFAI.Value AS ApplicationId,
|
||||
RTRIM(PERS.FirstName) AS MemberFirstName,
|
||||
PERS.mdlinit AS MemberInitial,
|
||||
COALESCE(RTRIM(PERS.LastName), RTRIM(ORGM.OrgName)) AS MemberLastName,
|
||||
OUFDC.Value AS DealerCode,
|
||||
DGA.AcctNbr AS DealerAccountNumber,
|
||||
DGA.taxrptfororgnbr AS DealerOrganizationNumber,
|
||||
ORGD.OrgName AS DealerName,
|
||||
CASE WHEN AUFWA.Value = 'Y' OR ASAW.SubAcctNbr IS NOT NULL THEN 1 ELSE 0 END AS Warranty,
|
||||
CASE WHEN AUFG.Value = 'Y' OR ASAG.SubAcctNbr IS NOT NULL THEN 1 ELSE 0 END AS GAP,
|
||||
CASE WHEN ASADLLD.SubAcctNbr IS NOT NULL OR ASADLLF.SubACctNbr IS NOT NULL THEN 1 ELSE 0 END AS CreditLife,
|
||||
CASE WHEN ASADLLD.SubAcctNbr IS NOT NULL OR ASADLDS.SubAcctNbr IS NOT NULL THEN 1 ELSE 0 END AS CreditDisability,
|
||||
CASE WHEN ASAMBP.SubAcctNbr IS NOT NULL THEN 1 ELSE 0 END AS Mbp,
|
||||
AC.currmiaccttypcd AS AccountType,
|
||||
MMA.MIACCTTYPDESC AS AccountDescription,
|
||||
AC.CONTRACTDATE AS LoanDate,
|
||||
Coalesce(RTXN.OrigPostDate,TO_DATE(AUFAD.Value, 'YYYY-MM-DD' )) AS PostedDate,
|
||||
AL.date1stpmtdue AS FirstPmtDate,
|
||||
AC.DATEMAT AS FinalPmtDate,
|
||||
AC.ORIGTERM AS OriginalTermInDays,
|
||||
ASA.OrigBal AS LoanAmount,
|
||||
To_number(AUFBR.Value) AS BuyRate,
|
||||
AUFLT.Value AS LoanType,
|
||||
RTC.INTRATE * 100 AS ContractRate,
|
||||
PT.PMTAMT AS MonthlyPmt,
|
||||
RTRIM(PR.PROPID) AS Vin,
|
||||
RTRIM(PR.PropMake) AS Make,
|
||||
RTRIM(PR.PropModel) AS Model,
|
||||
PR.propyearnbr AS Year,
|
||||
RTRIM(PR.PropColor) AS Color,
|
||||
PR.PropVehicleOdometer AS Mileage
|
||||
FROM ACCT AC
|
||||
LEFT JOIN PERS
|
||||
ON PERS.PersNbr = AC.TAXRPTFORPERSNBR
|
||||
LEFT JOIN ORG ORGM
|
||||
ON ORGM.OrgNbr = AC.TaxrptForORgNbr
|
||||
LEFT JOIN MEMBERAGREEMENT MA
|
||||
ON MA.PrimaryPersNbr = PERS.PersNbr
|
||||
LEFT JOIN MEMBERAGREEMENT MAOrg
|
||||
ON MAOrg.PrimaryOrgNbr = ORGM.OrgNbr
|
||||
LEFT JOIN ACCTGRPACCT AGA
|
||||
ON AC.AcctNbr = AGA.AcctNbr
|
||||
LEFT JOIN (select acctgrpnbr, acct.acctnbr, acct.taxrptfororgnbr from acctgrpacct aga
|
||||
inner join acct
|
||||
on acct.acctnbr = aga.acctnbr and acct.currmiaccttypcd = 'DLR') DGA
|
||||
ON DGA.AcctGrpNbr = AGA.AcctGrpNbr
|
||||
LEFT JOIN ORG ORGD
|
||||
ON ORGD.ORGNbr = DGA.taxrptfororgnbr
|
||||
LEFT JOIN ACCTLOAN AL
|
||||
ON AL.AcctNbr = AC.AcctNbr
|
||||
LEFT JOIN (SELECT Propnbr, AcctNbr,ROW_NUMBER() OVER(PARTITION BY ACCTNBR ORDER BY PropNbr) PPP_RNK
|
||||
FROM ACCTPROP) AP ON AP.AcctNbr = AC.AcctNbr AND AP.PPP_RNK = 1
|
||||
LEFT JOIN PROP PR
|
||||
ON PR.Propnbr = AP.Propnbr
|
||||
LEFT JOIN ACCTSUBACCT ASA
|
||||
ON ASA.ACCTNBR = AC.ACCTNBR AND ASA.BALCATCD = 'NOTE' AND ASA.BALTYPCD = 'BAL'
|
||||
LEFT JOIN (SELECT PS.ACCTNBR,PS.SUBACCTNBR,PS.EFFDATE,PS.INACTIVEDATE,PMT.PMTNBR, PMT.PMTTYPCD,T.PMTTYPDESC,PMT.PMTAMT,PMT.PMTPERCENT,
|
||||
PMT.EFFDATE PMT_EFFDATE,PMT.PMTCALPERIODCD,PMT.INACTIVEDATE PMT_INACTIVEDATE,PMT.DATELASTMAINT,
|
||||
ROW_NUMBER() OVER(PARTITION BY PS.ACCTNBR,PS.SUBACCTNBR ORDER BY PMT.EFFDATE DESC ) P_RNK
|
||||
FROM ACCTPMTSUBACCTHIST PS
|
||||
JOIN ACCTSUBACCT ASA ON ASA.ACCTNBR = PS.ACCTNBR AND ASA.SUBACCTNBR = PS.SUBACCTNBR AND ASA.BALCATCD = 'NOTE' AND ASA.BALTYPCD = 'DUE'
|
||||
JOIN ACCTPMTHIST PMT ON PMT.ACCTNBR = PS.ACCTNBR AND PMT.PMTNBR = PS.PMTNBR
|
||||
JOIN PMTTYP T ON T.PMTTYPCD = PMT.PMTTYPCD) PT ON PT.ACCTNBR = AC.ACCTNBR AND P_RNK = 1
|
||||
LEFT JOIN (SELECT R.DATELASTMAINT,R.ACCTNBR,R.SUBACCTNBR, R.EFFDATE,R.INTRATE,R.INACTIVEDATE,R.DELQRATEYN,R.POSTDATE,R.DISCLOSEDINTRATE
|
||||
,ROW_NUMBER() OVER(PARTITION BY R.ACCTNBR,R.SUBACCTNBR ORDER BY R.POSTDATE DESC) RTC_RNK
|
||||
FROM ACCTRATEHIST R
|
||||
JOIN ACCTSUBACCT ASA ON ASA.ACCTNBR = R.ACCTNBR AND ASA.SUBACCTNBR = R.SUBACCTNBR AND ASA.BALCATCD = 'NOTE' AND ASA.BALTYPCD = 'BAL') RTC
|
||||
ON RTC.ACCTNBR = AC.ACCTNBR AND RTC_RNK = 1
|
||||
LEFT JOIN MJMIACCTTYP MMA
|
||||
ON MMA.MIACCTTYPCD = AC.CURRMIACCTTYPCD
|
||||
LEFT JOIN ACCTUSERFIELD AUFLT
|
||||
ON AUFLT.Acctnbr = AC.Acctnbr AND AUFLT.userfieldCD = 'COMC'
|
||||
LEFT JOIN ACCTUSERFIELD AUFAI
|
||||
ON AUFAI.Acctnbr = AC.Acctnbr AND AUFAI.userfieldCD = 'LOSA'
|
||||
LEFT JOIN ORGUSERFIELD OUFDC
|
||||
ON OUFDC.OrgNbr = ORGD.OrgNbr AND OUFDC.UserFieldCD = 'DLCD'
|
||||
LEFT JOIN RTXN
|
||||
ON RTXN.ACCTNBR = AC.ACCTNBR AND rtxntypcd = 'NDSB'
|
||||
LEFT JOIN ACCTUSERFIELD AUFAD
|
||||
ON AUFAD.Acctnbr = AC.Acctnbr AND AUFAD.userfieldCD = 'LOSD'
|
||||
LEFT JOIN ACCTUSERFIELD AUFBR
|
||||
ON AUFBR.Acctnbr = AC.Acctnbr AND AUFBR.userfieldCD = 'BUYR'
|
||||
LEFT JOIN ACCTUSERFIELD AUFWA
|
||||
ON AUFWA.Acctnbr = AC.Acctnbr AND AUFWA.userfieldCD = 'WRYN'
|
||||
LEFT JOIN ACCTUSERFIELD AUFG
|
||||
ON AUFG.Acctnbr = AC.Acctnbr AND AUFG.userfieldCD = 'GPYN'
|
||||
LEFT JOIN ACCTSUBACCT ASADLLD
|
||||
ON ASADLLD.AcctNbr = AC.AcctNbr AND ASADLLD.BALTYPCD = 'COST' AND ASADLLD.BALCATCD = 'DLLD'
|
||||
LEFT JOIN ACCTSUBACCT ASADLDS
|
||||
ON ASADLDS.AcctNbr = AC.AcctNbr AND ASADLDS.BALTYPCD = 'COST' AND ASADLDS.BALCATCD = 'DLDS'
|
||||
LEFT JOIN ACCTSUBACCT ASADLLF
|
||||
ON ASADLLF.AcctNbr = AC.AcctNbr AND ASADLLF.BALTYPCD = 'COST' AND ASADLLF.BALCATCD = 'DLLF'
|
||||
LEFT JOIN ACCTSUBACCT ASAG
|
||||
ON ASAG.AcctNbr = AC.AcctNbr AND ASAG.BALTYPCD = 'COST' AND ASAG.BALCATCD = 'GAP'
|
||||
LEFT JOIN ACCTSUBACCT ASAW
|
||||
ON ASAW.AcctNbr = AC.AcctNbr AND ASAW.BALTYPCD = 'COST' AND ASAW.BALCATCD = 'WARA'
|
||||
LEFT JOIN ACCTSUBACCT ASAMBP
|
||||
ON ASAMBP.AcctNbr = AC.AcctNbr AND ASAMBP.BALTYPCD = 'COST' AND ASAMBP.BALCATCD = 'ODLR'
|
||||
WHERE AC.currmiaccttypcd IN ('DL01','DL02','DL03','DL04','DL05','DL06','DL07','DL08','DL09','DL10','DL11','DL12','DL13','DL14','DL15','DL16')
|
||||
AND AC.CURRACCTSTATCD = 'ACT'
|
||||
AND (Coalesce(RTXN.OrigPostDate,TO_DATE(AUFAD.Value, 'YYYY-MM-DD' )) >= TO_TIMESTAMP(:newerThanDateTime, 'YYYY-MM-DD HH24:MI:SS')
|
||||
OR AC.DATELASTMAINT >= TO_TIMESTAMP(:newerThanDateTime, 'YYYY-MM-DD HH24:MI:SS')
|
||||
OR AL.DATELASTMAINT >= TO_TIMESTAMP(:newerThanDateTime, 'YYYY-MM-DD HH24:MI:SS')
|
||||
OR PERS.DATELASTMAINT >= TO_TIMESTAMP(:newerThanDateTime, 'YYYY-MM-DD HH24:MI:SS')
|
||||
OR MA.DATELASTMAINT >= TO_TIMESTAMP(:newerThanDateTime, 'YYYY-MM-DD HH24:MI:SS')
|
||||
OR AUFAI.DATELASTMAINT >= TO_TIMESTAMP(:newerThanDateTime, 'YYYY-MM-DD HH24:MI:SS')
|
||||
OR PR.DATELASTMAINT >= TO_TIMESTAMP(:newerThanDateTime, 'YYYY-MM-DD HH24:MI:SS')
|
||||
OR ORGD.DATELASTMAINT >= TO_TIMESTAMP(:newerThanDateTime, 'YYYY-MM-DD HH24:MI:SS')
|
||||
OR PT.DATELASTMAINT >= TO_TIMESTAMP(:newerThanDateTime, 'YYYY-MM-DD HH24:MI:SS')
|
||||
OR AUFLT.DATELASTMAINT >= TO_TIMESTAMP(:newerThanDateTime, 'YYYY-MM-DD HH24:MI:SS')
|
||||
OR OUFDC.DATELASTMAINT >= TO_TIMESTAMP(:newerThanDateTime, 'YYYY-MM-DD HH24:MI:SS')
|
||||
OR RTC.DATELASTMAINT >= TO_TIMESTAMP(:newerThanDateTime, 'YYYY-MM-DD HH24:MI:SS')
|
||||
OR AUFAD.DATELASTMAINT >= TO_TIMESTAMP(:newerThanDateTime, 'YYYY-MM-DD HH24:MI:SS')
|
||||
OR AUFBR.DATELASTMAINT >= TO_TIMESTAMP(:newerThanDateTime, 'YYYY-MM-DD HH24:MI:SS')
|
||||
OR AUFWA.DATELASTMAINT >= TO_TIMESTAMP(:newerThanDateTime, 'YYYY-MM-DD HH24:MI:SS')
|
||||
OR AUFG.DATELASTMAINT >= TO_TIMESTAMP(:newerThanDateTime, 'YYYY-MM-DD HH24:MI:SS')
|
||||
OR ASADLLD.DATELASTMAINT >= TO_TIMESTAMP(:newerThanDateTime, 'YYYY-MM-DD HH24:MI:SS')
|
||||
OR ASADLDS.DATELASTMAINT >= TO_TIMESTAMP(:newerThanDateTime, 'YYYY-MM-DD HH24:MI:SS')
|
||||
OR ASADLLF.DATELASTMAINT >= TO_TIMESTAMP(:newerThanDateTime, 'YYYY-MM-DD HH24:MI:SS')
|
||||
OR ASAW.DATELASTMAINT >= TO_TIMESTAMP(:newerThanDateTime, 'YYYY-MM-DD HH24:MI:SS')
|
||||
OR ASAMBP.DATELASTMAINT >= TO_TIMESTAMP(:newerThanDateTime, 'YYYY-MM-DD HH24:MI:SS')
|
||||
OR ASAG.DATELASTMAINT >= TO_TIMESTAMP(:newerThanDateTime, 'YYYY-MM-DD HH24:MI:SS')
|
||||
))
|
||||
Select * from Cte_IndirectActiveLoans
|
||||
Where NOT EXISTS (select null from ACTV AV Where AV.ACTVTYPCD = 'MDFY' and av.subjacctnbr = Cte_IndirectActiveLoans.LoanNumber)
|
||||
+231
@@ -0,0 +1,231 @@
|
||||
--BASED ON SPEC 1.6 BATCH PAYOFF QUOTES
|
||||
WITH CTE_DATES AS (
|
||||
SELECT Y.*,
|
||||
Y.DATE_RUN+Y.PAYOFF_DAYS AS EXPIRATION_DATE,
|
||||
CASE
|
||||
WHEN Y.DAYS_LEFT_IN_MONTH<=11 OR Y.DAY_OF_MONTH<=2 THEN 1
|
||||
ELSE 0
|
||||
END AS PAYOFF_INDICATOR
|
||||
FROM (/*DO IN TWO STEPS TO TROUBLESHOOT*/
|
||||
SELECT X.DATE_RUN,
|
||||
11 AS PAYOFF_DAYS,
|
||||
ADD_MONTHS(TRUNC(X.DATE_RUN,'YEAR'),12)-TRUNC(X.DATE_RUN,'YEAR') AS DAYS_IN_YEAR,
|
||||
(ADD_MONTHS(TRUNC(X.DATE_RUN,'MONTH'),1)-1)-X.DATE_RUN AS DAYS_LEFT_IN_MONTH,
|
||||
CAST(TO_CHAR(X.DATE_RUN,'DD') AS INT) AS DAY_OF_MONTH
|
||||
FROM (
|
||||
SELECT TO_DATE(:dateRange,'YYYY-MM-DD') AS DATE_RUN
|
||||
FROM DUAL
|
||||
) X
|
||||
) Y
|
||||
), CTE_LOANS_IN_SCOPE AS (/*PAYOFF CALCULATIONS ARE REALLY IMPORTANT, IF FAILS NEED TO FILL IN DAYS*/
|
||||
SELECT A.ACCTNBR,
|
||||
A.TAXRPTFORORGNBR,
|
||||
A.TAXRPTFORPERSNBR,
|
||||
COALESCE(CAST(AMT.VALUE AS NUMERIC(12,2)),0) AS PAYOFF_VALUE,
|
||||
DR.PAYOFF_DAYS+(DR.DATE_RUN-TO_DATE(DT.VALUE,'YYYY-MM-DD')) AS PAYOFF_DAYS,
|
||||
DR.EXPIRATION_DATE,
|
||||
DR.PAYOFF_INDICATOR,
|
||||
DR.DAYS_IN_YEAR,
|
||||
DR.DATE_RUN,
|
||||
A.DATEMAT
|
||||
FROM OSIBANK.ACCT A
|
||||
INNER JOIN CTE_DATES DR ON 1=1
|
||||
INNER JOIN OSIBANK.ACCTUSERFIELD AMT ON AMT.ACCTNBR=A.ACCTNBR AND AMT.USERFIELDCD='8AUF'
|
||||
INNER JOIN OSIBANK.ACCTUSERFIELD DT ON DT.ACCTNBR=AMT.ACCTNBR AND DT.USERFIELDCD='8DUF' AND DT.VALUE IS NOT NULL
|
||||
WHERE A.CURRACCTSTATCD IN ('ACT','NPFM')
|
||||
AND (
|
||||
(A.MJACCTTYPCD='CNS' AND A.CURRMIACCTTYPCD LIKE 'DL%')
|
||||
OR
|
||||
(A.MJACCTTYPCD='CNS' AND A.CURRMIACCTTYPCD LIKE 'DV%')
|
||||
OR
|
||||
(A.MJACCTTYPCD='CML' AND A.CURRMIACCTTYPCD='BE21')
|
||||
)
|
||||
AND A.ACCTNBR = :accountNumber
|
||||
), CTE_PRIMARY AS (
|
||||
SELECT X.ACCTNBR,
|
||||
UPPER(X.LASTNAME) AS LASTNAME,
|
||||
UPPER(X.FIRSTNAME) AS FIRSTNAME,
|
||||
UPPER(X.MDLINIT) AS MDLINIT,
|
||||
X.ORGNAME,
|
||||
X.PRIVACYYN AS OPTOUTCODE,
|
||||
TRIM(REGEXP_REPLACE(AD.CITYNAME,'( ){2,}',' ')) AS CITY,
|
||||
TRIM(AD.STATECD) AS STATE,
|
||||
TRIM(REGEXP_REPLACE(AL.LINE1,'( ){2,}',' ')) AS ADDRESS_1,
|
||||
TRIM(REGEXP_REPLACE(AL.LINE2||' '||AL.LINE3,'( ){2,}',' ')) AS ADDRESS_2,
|
||||
TRIM(REGEXP_REPLACE(AD.ZIPCD||CASE WHEN LPAD(AD.ZIPSUF,4,'0')='0000' THEN NULL ELSE LPAD(AD.ZIPSUF,4,'0') END,'( ){2,}',' ')) AS ZIP
|
||||
FROM
|
||||
(
|
||||
SELECT A.ACCTNBR,
|
||||
PAU.ADDRNBR,
|
||||
P1.PRIVACYYN,
|
||||
P1.LASTNAME,
|
||||
P1.FIRSTNAME,
|
||||
P1.MDLINIT,
|
||||
NULL AS ORGNAME
|
||||
FROM CTE_LOANS_IN_SCOPE A
|
||||
INNER JOIN OSIBANK.PERS P1 ON P1.PERSNBR=A.TAXRPTFORPERSNBR
|
||||
LEFT JOIN OSIBANK.PERSADDRUSE PAU ON PAU.PERSNBR=P1.PERSNBR AND PAU.ADDRUSECD='PRI'
|
||||
UNION ALL
|
||||
SELECT A.ACCTNBR,
|
||||
OAU.ADDRNBR,
|
||||
O1.PRIVACYYN,
|
||||
NULL AS LASTNAME,
|
||||
NULL AS FIRSTNAME,
|
||||
NULL AS MDLINIT,
|
||||
O1.ORGNAME
|
||||
FROM CTE_LOANS_IN_SCOPE A
|
||||
INNER JOIN OSIBANK.ORG O1 ON O1.ORGNBR=A.TAXRPTFORORGNBR
|
||||
LEFT JOIN OSIBANK.ORGADDRUSE OAU ON OAU.ORGNBR=O1.ORGNBR AND OAU.ADDRUSECD='PRI'
|
||||
) X
|
||||
LEFT JOIN OSIBANK.ADDR AD ON AD.ADDRNBR=X.ADDRNBR
|
||||
LEFT JOIN (
|
||||
SELECT X.ADDRNBR,
|
||||
MAX(DECODE(X.LINENUM,1,X.TEXT,NULL)) AS LINE1,
|
||||
MAX(DECODE(X.LINENUM,2,X.TEXT,NULL)) AS LINE2,
|
||||
MAX(DECODE(X.LINENUM,3,X.TEXT,NULL)) AS LINE3
|
||||
FROM (
|
||||
SELECT ROW_NUMBER() OVER (PARTITION BY AL.ADDRNBR ORDER BY AL.LINENBR) AS LINENUM,
|
||||
AL.ADDRNBR,
|
||||
AL.TEXT
|
||||
FROM OSIBANK.ADDRLINE AL
|
||||
INNER JOIN OSIBANK.ADDRLINETYP ALT ON AL.ADDRLINETYPCD=ALT.ADDRLINETYPCD
|
||||
WHERE ALT.MAILADDRYN='Y'
|
||||
) X
|
||||
GROUP BY X.ADDRNBR
|
||||
) AL ON AL.ADDRNBR=AD.ADDRNBR
|
||||
), CTE_EXCLUSIONS AS (
|
||||
SELECT LIS.ACCTNBR
|
||||
FROM CTE_LOANS_IN_SCOPE LIS
|
||||
WHERE LIS.PAYOFF_INDICATOR=1 /*END/START OF MONTH*/
|
||||
AND EXISTS (
|
||||
SELECT 1
|
||||
FROM OSIBANK.ACCTSUBACCT ASA
|
||||
INNER JOIN OSIBANK.ACCTSUBACCTCALCVAR ASACV ON ASACV.ACCTNBR=ASA.ACCTNBR AND ASACV.SUBACCTNBR=ASA.SUBACCTNBR AND ASACV.CALCTYPCD=ASA.BALTYPCD
|
||||
WHERE LIS.ACCTNBR=ASA.ACCTNBR
|
||||
AND UPPER(ASA.BALTYPCD)='SINS'/*SIMPLE*/
|
||||
AND UPPER(ASACV.CALCVARCD)='SCHD'/*SCHEDULE NUMBER*/
|
||||
AND ASACV.CALCVALUEEFFDATE<=LIS.DATE_RUN
|
||||
AND (ASACV.CALCINACTIVEDATE IS NULL OR ASACV.CALCINACTIVEDATE>=LIS.DATE_RUN)
|
||||
AND (
|
||||
/*MOB INSURANCE*/
|
||||
UPPER(ASA.BALCATCD) IN ('JDIS'/*JOINT-DISAB*/,'JLIF'/*JOINT-LIFE*/,'SDIS'/*SINGLE-DISAB*/,'SING'/*SINGLE-LIFE*/)
|
||||
OR
|
||||
/*DEBT PROTECTION*/
|
||||
UPPER(ASA.BALCATCD) IN ('DJD'/*DEBT-PRO-JOINT-DISAB*/,'DJL'/*DEBT-PRO-JOINT-LIFE*/,'DJLD'/*DEBT-PRO-JOINT-LIFE-DISAB*/,'DSD'/*DEBT-PRO-SINGLE-DISAB*/,'DSL'/*DEBT-PRO-SINGLE-LIFE*/,'DSLD'/*DEBT-PRO-SINGLE-LIFE-DISAB*/)
|
||||
)
|
||||
)
|
||||
), CTE_STAGE AS (
|
||||
SELECT LIS.ACCTNBR as ACCOUNTNUMBER,/*FOR TROUBLESHOOTING*/
|
||||
CE.ACCTNBR AS EXCLUSIONS,/*FOR TROUBLESHOOTING*/
|
||||
CAST(SUBSTR(CP.ACCTNBR,-4,4) AS VARCHAR2(4)) AS ACCOUNT,/*RIGHTMOST 4 DIGITS, MAXLENGTH 4*/
|
||||
CAST(
|
||||
CASE
|
||||
WHEN LENGTH(AU.VALUE) IS NULL OR LENGTH(AU.VALUE)>3 THEN '1234'
|
||||
ELSE AU.VALUE
|
||||
END AS VARCHAR2(20)) AS LENDERID,/*LOOK IN USERFIELD MAXLENGTH 20*/
|
||||
CP.OPTOUTCODE,/*MAIL MARKETING, MAXLENGTH 1*/
|
||||
CAST(SUBSTR(COALESCE(CP.FIRSTNAME,CP.ORGNAME),0,20) AS VARCHAR2(20)) AS FIRSTNAME,/*MAXLENGTH 20*/
|
||||
CAST(SUBSTR(CP.MDLINIT,0,1) AS VARCHAR2(1)) AS MIDDLENAME,/*MAXLENGTH 1*/
|
||||
CAST(SUBSTR(COALESCE(CP.LASTNAME,CP.ORGNAME),0,20) AS VARCHAR2(20)) AS LASTNAME,/*MAXLENGTH 20*/
|
||||
CAST(SUBSTR(CP.ADDRESS_1,0,20) AS VARCHAR2(20)) AS ADDRESS1,/*CLEAN UP IN ABOVE CTE, MAXLENGTH 20*/
|
||||
CAST(SUBSTR(CP.ADDRESS_2,0,20) AS VARCHAR2(20)) AS ADDRESS2,/*CLEAN UP IN ABOVE CTE, MAXLENGTH 20*/
|
||||
CAST(SUBSTR(CP.CITY,0,20) AS VARCHAR2(20)) AS CITY,/*CLEAN UP IN ABOVE CTE, MAXLENGTH 20*/
|
||||
CAST(SUBSTR(CP.STATE,0,2) AS VARCHAR2(2)) AS STATE,/*DNA ALLOWS LONGER, MAXLENGTH 2*/
|
||||
CAST(SUBSTR(CP.ZIP,0,9) AS VARCHAR2(9)) AS ZIPCODE, /*MAXLENGTH 9*/
|
||||
CAST(NULL AS VARCHAR2(10)) AS HOMEPHONE, /*NULL IN PREVIOUS VERSION MAXLENGTH 10*/
|
||||
CAST(NULL AS VARCHAR2(10)) AS BUSINESSPHONE, /*NULL IN PREVIOUS VERSION MAXLENGTH 10*/
|
||||
CAST(SUBSTR(PR.PROPID,0,17) AS VARCHAR2(17)) AS VEHICLEVIN, /*DNA ALLOWS LONGER, MAXLENGTH 17*/
|
||||
CAST(
|
||||
CASE
|
||||
WHEN LENGTH(PR.PROPYEARNBR)> 4 THEN NULL
|
||||
ELSE PR.PROPYEARNBR
|
||||
END
|
||||
AS VARCHAR2(4)) AS VEHICLEYEAR, /*DNA ALLOWS LONGER, MAXLENGTH 4, NEEDS TO BE NUMERIC, WHICH DNA IS*/
|
||||
CAST(SUBSTR(PR.PROPMAKE,0,20) AS VARCHAR2(20)) AS VEHICLEMAKE, /*DNA IS SHORTER, MAXLENGTH 20*/
|
||||
CAST(SUBSTR(PR.PROPMODEL,0,20) AS VARCHAR2(20)) AS VEHICLEMODEL, /*DNA IS SHORTER, MAXLENGTH 20*/
|
||||
CAST(NULL AS VARCHAR2(20)) AS VEHICLETRIM,/*NULL IN PREVIOUS VERSION MAXLENGTH 20*/
|
||||
CAST(NULL AS VARCHAR2(40)) AS VEHICLEDESCRIPTION,/*NULL IN PREVIOUS VERSION MAXLENGTH 40*/
|
||||
CAST('R' AS VARCHAR2(1)) AS PRODUCT,/*HARD-CODED IN PREVIOUS VERSION IN PREVIOUS VERSION MAXLENGTH 1*/
|
||||
CAST(NULL AS VARCHAR2(20)) AS SUBPRODUCT,/*NULL IN PREVIOUS VERSION IN PREVIOUS VERSION MAXLENGTH 20*/
|
||||
TO_CHAR(
|
||||
CASE WHEN CE.ACCTNBR IS NOT NULL THEN 0
|
||||
ELSE ROUND(LIS.PAYOFF_VALUE+(LIS.PAYOFF_DAYS*RATE.INTRATE/LIS.DAYS_IN_YEAR*CNB.BALAMT),2)
|
||||
END
|
||||
,'FM999990.00') AS NETPAYOFFAMOUNT,/*PER: KYLE MATHER-IF MOB OR DEBT PROTECTION THEN ZERO. MAXLENGTH 6.2*/
|
||||
TO_CHAR(LIS.EXPIRATION_DATE,'YYYYMMDD') AS GOODUNTILDATE, /*CALCULATED, MAXLENGTH 8*/
|
||||
TO_CHAR(LIS.DATEMAT,'YYYYMMDD') AS MATURITYDATE,
|
||||
CASE
|
||||
WHEN AC.ORIGTERM IS NULL OR AC.CONTRACTDATE IS NULL THEN 0--NO EXAMPLE OF NULL CONTRACT DATE BUT SYSTEM DOES NOT PREVENT IT
|
||||
ELSE ROUND(MONTHS_BETWEEN(AC.CONTRACTDATE+AC.ORIGTERM, AC.CONTRACTDATE))
|
||||
END AS TERMINMONTHS,/*MAXLENGTH2, PER KYLE MATHER SHOULD NOT BE LIMITED TO THIS*/
|
||||
CASE
|
||||
WHEN MONTHS_BETWEEN(LIS.DATEMAT,CDD.DUEDATE)<=0 THEN 0
|
||||
ELSE MONTHS_BETWEEN(LIS.DATEMAT,CDD.DUEDATE)+1
|
||||
END AS MONTHS_LEFT, /*MAXLENGTH 2, PER KYLE MATHER SHOULD NOT BE LIMITED TO THIS*/
|
||||
CAST(NULL AS VARCHAR2(8)) AS NEXTPAYMENTDATE,/*NULL IN PREVIOUS VERSION IN PREVIOUS VERSION MAXLENGTH 8*/
|
||||
TO_CHAR(ROUND(NVL(PMT.PMTAMT,0),2),'FM99990.00') AS MONTHLYPAYMENT, /*MAXLENGTH 5.2*/
|
||||
CAST(NULL AS VARCHAR2(9)) AS GROSSPAYOFF,/*NULL IN PREVIOUS VERSION IN PREVIOUS VERSION MAXLENGTH 6.2*/
|
||||
CAST(NULL AS VARCHAR2(9)) AS SECURITYDEPOSIT,/*NULL IN PREVIOUS VERSION IN PREVIOUS VERSION MAXLENGTH 6.2*/
|
||||
CAST(NULL AS VARCHAR2(9)) AS RESIDUALVALUE,/*NULL IN PREVIOUS VERSION IN PREVIOUS VERSION MAXLENGTH 6.2*/
|
||||
TO_CHAR(ROUND((RATE.INTRATE/LIS.DAYS_IN_YEAR*CNB.BALAMT),2),'FM999990.00') AS DOLLARDAYRATE,/*MAXLENGTH 6.2*/
|
||||
CAST(NULL AS VARCHAR2(9)) AS BALLOONAMOUNT,/*NULL IN PREVIOUS VERSION IN PREVIOUS VERSION MAXLENGTH 6.2*/
|
||||
CAST(
|
||||
CASE
|
||||
WHEN CE.ACCTNBR IS NOT NULL THEN 'Contact lender for payoff'
|
||||
ELSE NULL
|
||||
END
|
||||
AS VARCHAR2(80)) AS PAYOFFMESSAGE,/*MAXLENGTH 80*/
|
||||
CAST(NULL AS VARCHAR2(1)) AS PREAPPROVEDCODE,/*NULL IN PREVIOUS VERSION IN PREVIOUS VERSION MAXLENGTH 1*/
|
||||
CAST(NULL AS VARCHAR2(20)) AS REFERENCENUMBER,/*NULL IN PREVIOUS VERSION IN PREVIOUS VERSION MAXLENGTH 20*/
|
||||
CAST(NULL AS VARCHAR2(8)) AS EXPIRATIONDATE,/*NULL IN PREVIOUS VERSION IN PREVIOUS VERSION MAXLENGTH 8*/
|
||||
CAST(NULL AS VARCHAR2(9)) AS BUYRATE,/*NULL IN PREVIOUS VERSION IN PREVIOUS VERSION MAXLENGTH 2.6*/
|
||||
CAST(NULL AS VARCHAR2(8)) AS ACQUISITIONFEE,/*NULL IN PREVIOUS VERSION IN PREVIOUS VERSION MAXLENGTH 5.2*/
|
||||
CAST(NULL AS VARCHAR2(8)) AS PARTICIPATIONPERCENT/*NULL IN PREVIOUS VERSION IN PREVIOUS VERSION MAXLENGTH 3.2*/
|
||||
FROM CTE_LOANS_IN_SCOPE LIS
|
||||
INNER JOIN OSIBANK.ACCT AC ON AC.ACCTNBR=LIS.ACCTNBR
|
||||
INNER JOIN CTE_PRIMARY CP ON CP.ACCTNBR=LIS.ACCTNBR
|
||||
LEFT JOIN (
|
||||
SELECT PMT.ACCTNBR,
|
||||
SUM(PMT.PMTAMT) AS PMTAMT
|
||||
FROM OSIBANK.ACCTPMTHIST PMT
|
||||
INNER JOIN CTE_DATES CD ON 1=1
|
||||
INNER JOIN OSIBANK.ACCTPMTSUBACCTHIST APSH ON APSH.ACCTNBR=PMT.ACCTNBR AND APSH.PMTNBR=PMT.PMTNBR AND APSH.EFFDATE=PMT.EFFDATE
|
||||
INNER JOIN OSIBANK.ACCTSUBACCT ASA ON ASA.ACCTNBR=APSH.ACCTNBR AND ASA.SUBACCTNBR=APSH.SUBACCTNBR AND ASA.BALCATCD='NOTE' AND ASA.BALTYPCD IN ('OINT','BAL','DUE')
|
||||
WHERE PMT.PMTTYPCD IN ('FB','FBI','FDUE')
|
||||
AND PMT.EFFDATE<=CD.DATE_RUN
|
||||
AND (PMT.INACTIVEDATE>CD.DATE_RUN OR PMT.INACTIVEDATE IS NULL)
|
||||
AND (APSH.INACTIVEDATE>CD.DATE_RUN OR APSH.INACTIVEDATE IS NULL)
|
||||
GROUP BY PMT.ACCTNBR
|
||||
) PMT ON PMT.ACCTNBR=LIS.ACCTNBR
|
||||
LEFT JOIN (
|
||||
SELECT ARH.ACCTNBR,
|
||||
ARH.INTRATE,
|
||||
ROW_NUMBER() OVER (PARTITION BY ARH.ACCTNBR, ARH.SUBACCTNBR ORDER BY ARH.EFFDATE DESC) AS RWN
|
||||
FROM OSIBANK.ACCTRATEHIST ARH
|
||||
INNER JOIN OSIBANK.ACCTSUBACCT ASA ON ASA.ACCTNBR=ARH.ACCTNBR AND ASA.SUBACCTNBR=ARH.SUBACCTNBR AND ASA.BALCATCD='NOTE' AND ASA.BALTYPCD='BAL'
|
||||
INNER JOIN CTE_DATES CD ON 1=1
|
||||
WHERE ARH.EFFDATE<=CD.DATE_RUN AND (ARH.INACTIVEDATE>CD.DATE_RUN OR ARH.INACTIVEDATE IS NULL)
|
||||
) RATE ON RATE.ACCTNBR=LIS.ACCTNBR AND RATE.RWN=1
|
||||
LEFT JOIN OSIBANK.VIEW_LN_CURR_NOTEBAL CNB ON CNB.ACCTNBR=LIS.ACCTNBR
|
||||
LEFT JOIN OSIBANK.ACCTPROP AP ON AP.ACCTNBR=LIS.ACCTNBR
|
||||
LEFT JOIN OSIBANK.PROP PR ON PR.PROPNBR=AP.PROPNBR
|
||||
LEFT JOIN OSIBANK.VIEW_LN_CURR_DUEDATE CDD ON CDD.ACCTNBR=LIS.ACCTNBR
|
||||
LEFT JOIN OSIBANK.ACCTUSERFIELD AU ON AU.ACCTNBR=LIS.ACCTNBR AND AU.USERFIELDCD='DECD'
|
||||
LEFT JOIN CTE_EXCLUSIONS CE ON CE.ACCTNBR=LIS.ACCTNBR
|
||||
) /*MATCH REQUIREMENTS ON SPEC DOCUMENT*/
|
||||
SELECT DISTINCT *
|
||||
FROM CTE_STAGE S
|
||||
WHERE S.ACCOUNT IS NOT NULL
|
||||
AND S.LENDERID IS NOT NULL
|
||||
AND S.FIRSTNAME IS NOT NULL
|
||||
AND S.LASTNAME IS NOT NULL
|
||||
AND S.ADDRESS1 IS NOT NULL
|
||||
AND S.CITY IS NOT NULL
|
||||
/*PER KYLE MATHER INCLUDE RECORDS WITHOUT STATE, REJECT ON DEALERTRACK INGEST SIDE*/
|
||||
AND S.ZIPCODE IS NOT NULL
|
||||
AND S.VEHICLEVIN IS NOT NULL
|
||||
AND S.PRODUCT IS NOT NULL
|
||||
AND S.NETPAYOFFAMOUNT IS NOT NULL
|
||||
AND S.GOODUNTILDATE IS NOT NULL
|
||||
AND S.MATURITYDATE IS NOT NULL
|
||||
/*PER KYLE MATHER INCLUDE LOANS WITH MOB INSURANCE AND/OR DEBT PROTECTION*/
|
||||
+233
@@ -0,0 +1,233 @@
|
||||
--BASED ON SPEC 1.6 BATCH PAYOFF QUOTES
|
||||
WITH CTE_DATES AS (
|
||||
SELECT Y.*,
|
||||
Y.DATE_RUN+Y.PAYOFF_DAYS AS EXPIRATION_DATE,
|
||||
CASE
|
||||
WHEN Y.DAYS_LEFT_IN_MONTH<=11 OR Y.DAY_OF_MONTH<=2 THEN 1
|
||||
ELSE 0
|
||||
END AS PAYOFF_INDICATOR
|
||||
FROM (/*DO IN TWO STEPS TO TROUBLESHOOT*/
|
||||
SELECT X.DATE_RUN,
|
||||
11 AS PAYOFF_DAYS,
|
||||
ADD_MONTHS(TRUNC(X.DATE_RUN,'YEAR'),12)-TRUNC(X.DATE_RUN,'YEAR') AS DAYS_IN_YEAR,
|
||||
(ADD_MONTHS(TRUNC(X.DATE_RUN,'MONTH'),1)-1)-X.DATE_RUN AS DAYS_LEFT_IN_MONTH,
|
||||
CAST(TO_CHAR(X.DATE_RUN,'DD') AS INT) AS DAY_OF_MONTH
|
||||
FROM (
|
||||
SELECT TO_DATE(:dateRange,'YYYY-MM-DD') AS DATE_RUN
|
||||
FROM DUAL
|
||||
) X
|
||||
) Y
|
||||
), CTE_LOANS_IN_SCOPE AS (/*PAYOFF CALCULATIONS ARE REALLY IMPORTANT, IF FAILS NEED TO FILL IN DAYS*/
|
||||
SELECT A.ACCTNBR,
|
||||
A.TAXRPTFORORGNBR,
|
||||
A.TAXRPTFORPERSNBR,
|
||||
COALESCE(CAST(AMT.VALUE AS NUMERIC(12,2)),0) AS PAYOFF_VALUE,
|
||||
DR.PAYOFF_DAYS+(DR.DATE_RUN-TO_DATE(DT.VALUE,'YYYY-MM-DD')) AS PAYOFF_DAYS,
|
||||
DR.EXPIRATION_DATE,
|
||||
DR.PAYOFF_INDICATOR,
|
||||
DR.DAYS_IN_YEAR,
|
||||
DR.DATE_RUN,
|
||||
A.DATEMAT
|
||||
FROM OSIBANK.ACCT A
|
||||
INNER JOIN CTE_DATES DR ON 1=1
|
||||
INNER JOIN OSIBANK.ACCTUSERFIELD AMT ON AMT.ACCTNBR=A.ACCTNBR AND AMT.USERFIELDCD='8AUF'
|
||||
INNER JOIN OSIBANK.ACCTUSERFIELD DT ON DT.ACCTNBR=AMT.ACCTNBR AND DT.USERFIELDCD='8DUF' AND DT.VALUE IS NOT NULL
|
||||
INNER JOIN OSIBANK.ACCTPROP AP ON AP.ACCTNBR=A.ACCTNBR
|
||||
INNER JOIN OSIBANK.PROP PR ON PR.PROPNBR=AP.PROPNBR
|
||||
WHERE A.CURRACCTSTATCD IN ('ACT','NPFM')
|
||||
AND (
|
||||
(A.MJACCTTYPCD='CNS' AND A.CURRMIACCTTYPCD LIKE 'DL%')
|
||||
OR
|
||||
(A.MJACCTTYPCD='CNS' AND A.CURRMIACCTTYPCD LIKE 'DV%')
|
||||
OR
|
||||
(A.MJACCTTYPCD='CML' AND A.CURRMIACCTTYPCD='BE21')
|
||||
)
|
||||
AND PR.PROPID = :VIN
|
||||
), CTE_PRIMARY AS (
|
||||
SELECT X.ACCTNBR,
|
||||
UPPER(X.LASTNAME) AS LASTNAME,
|
||||
UPPER(X.FIRSTNAME) AS FIRSTNAME,
|
||||
UPPER(X.MDLINIT) AS MDLINIT,
|
||||
X.ORGNAME,
|
||||
X.PRIVACYYN AS OPTOUTCODE,
|
||||
TRIM(REGEXP_REPLACE(AD.CITYNAME,'( ){2,}',' ')) AS CITY,
|
||||
TRIM(AD.STATECD) AS STATE,
|
||||
TRIM(REGEXP_REPLACE(AL.LINE1,'( ){2,}',' ')) AS ADDRESS_1,
|
||||
TRIM(REGEXP_REPLACE(AL.LINE2||' '||AL.LINE3,'( ){2,}',' ')) AS ADDRESS_2,
|
||||
TRIM(REGEXP_REPLACE(AD.ZIPCD||CASE WHEN LPAD(AD.ZIPSUF,4,'0')='0000' THEN NULL ELSE LPAD(AD.ZIPSUF,4,'0') END,'( ){2,}',' ')) AS ZIP
|
||||
FROM
|
||||
(
|
||||
SELECT A.ACCTNBR,
|
||||
PAU.ADDRNBR,
|
||||
P1.PRIVACYYN,
|
||||
P1.LASTNAME,
|
||||
P1.FIRSTNAME,
|
||||
P1.MDLINIT,
|
||||
NULL AS ORGNAME
|
||||
FROM CTE_LOANS_IN_SCOPE A
|
||||
INNER JOIN OSIBANK.PERS P1 ON P1.PERSNBR=A.TAXRPTFORPERSNBR
|
||||
LEFT JOIN OSIBANK.PERSADDRUSE PAU ON PAU.PERSNBR=P1.PERSNBR AND PAU.ADDRUSECD='PRI'
|
||||
UNION ALL
|
||||
SELECT A.ACCTNBR,
|
||||
OAU.ADDRNBR,
|
||||
O1.PRIVACYYN,
|
||||
NULL AS LASTNAME,
|
||||
NULL AS FIRSTNAME,
|
||||
NULL AS MDLINIT,
|
||||
O1.ORGNAME
|
||||
FROM CTE_LOANS_IN_SCOPE A
|
||||
INNER JOIN OSIBANK.ORG O1 ON O1.ORGNBR=A.TAXRPTFORORGNBR
|
||||
LEFT JOIN OSIBANK.ORGADDRUSE OAU ON OAU.ORGNBR=O1.ORGNBR AND OAU.ADDRUSECD='PRI'
|
||||
) X
|
||||
LEFT JOIN OSIBANK.ADDR AD ON AD.ADDRNBR=X.ADDRNBR
|
||||
LEFT JOIN (
|
||||
SELECT X.ADDRNBR,
|
||||
MAX(DECODE(X.LINENUM,1,X.TEXT,NULL)) AS LINE1,
|
||||
MAX(DECODE(X.LINENUM,2,X.TEXT,NULL)) AS LINE2,
|
||||
MAX(DECODE(X.LINENUM,3,X.TEXT,NULL)) AS LINE3
|
||||
FROM (
|
||||
SELECT ROW_NUMBER() OVER (PARTITION BY AL.ADDRNBR ORDER BY AL.LINENBR) AS LINENUM,
|
||||
AL.ADDRNBR,
|
||||
AL.TEXT
|
||||
FROM OSIBANK.ADDRLINE AL
|
||||
INNER JOIN OSIBANK.ADDRLINETYP ALT ON AL.ADDRLINETYPCD=ALT.ADDRLINETYPCD
|
||||
WHERE ALT.MAILADDRYN='Y'
|
||||
) X
|
||||
GROUP BY X.ADDRNBR
|
||||
) AL ON AL.ADDRNBR=AD.ADDRNBR
|
||||
), CTE_EXCLUSIONS AS (
|
||||
SELECT LIS.ACCTNBR
|
||||
FROM CTE_LOANS_IN_SCOPE LIS
|
||||
WHERE LIS.PAYOFF_INDICATOR=1 /*END/START OF MONTH*/
|
||||
AND EXISTS (
|
||||
SELECT 1
|
||||
FROM OSIBANK.ACCTSUBACCT ASA
|
||||
INNER JOIN OSIBANK.ACCTSUBACCTCALCVAR ASACV ON ASACV.ACCTNBR=ASA.ACCTNBR AND ASACV.SUBACCTNBR=ASA.SUBACCTNBR AND ASACV.CALCTYPCD=ASA.BALTYPCD
|
||||
WHERE LIS.ACCTNBR=ASA.ACCTNBR
|
||||
AND UPPER(ASA.BALTYPCD)='SINS'/*SIMPLE*/
|
||||
AND UPPER(ASACV.CALCVARCD)='SCHD'/*SCHEDULE NUMBER*/
|
||||
AND ASACV.CALCVALUEEFFDATE<=LIS.DATE_RUN
|
||||
AND (ASACV.CALCINACTIVEDATE IS NULL OR ASACV.CALCINACTIVEDATE>=LIS.DATE_RUN)
|
||||
AND (
|
||||
/*MOB INSURANCE*/
|
||||
UPPER(ASA.BALCATCD) IN ('JDIS'/*JOINT-DISAB*/,'JLIF'/*JOINT-LIFE*/,'SDIS'/*SINGLE-DISAB*/,'SING'/*SINGLE-LIFE*/)
|
||||
OR
|
||||
/*DEBT PROTECTION*/
|
||||
UPPER(ASA.BALCATCD) IN ('DJD'/*DEBT-PRO-JOINT-DISAB*/,'DJL'/*DEBT-PRO-JOINT-LIFE*/,'DJLD'/*DEBT-PRO-JOINT-LIFE-DISAB*/,'DSD'/*DEBT-PRO-SINGLE-DISAB*/,'DSL'/*DEBT-PRO-SINGLE-LIFE*/,'DSLD'/*DEBT-PRO-SINGLE-LIFE-DISAB*/)
|
||||
)
|
||||
)
|
||||
), CTE_STAGE AS (
|
||||
SELECT LIS.ACCTNBR as ACCOUNTNUMBER,/*FOR TROUBLESHOOTING*/
|
||||
CE.ACCTNBR AS EXCLUSIONS,/*FOR TROUBLESHOOTING*/
|
||||
CAST(SUBSTR(CP.ACCTNBR,-4,4) AS VARCHAR2(4)) AS ACCOUNT,/*RIGHTMOST 4 DIGITS, MAXLENGTH 4*/
|
||||
CAST(
|
||||
CASE
|
||||
WHEN LENGTH(AU.VALUE) IS NULL OR LENGTH(AU.VALUE)>3 THEN '1234'
|
||||
ELSE AU.VALUE
|
||||
END AS VARCHAR2(20)) AS LENDERID,/*LOOK IN USERFIELD MAXLENGTH 20*/
|
||||
CP.OPTOUTCODE,/*MAIL MARKETING, MAXLENGTH 1*/
|
||||
CAST(SUBSTR(COALESCE(CP.FIRSTNAME,CP.ORGNAME),0,20) AS VARCHAR2(20)) AS FIRSTNAME,/*MAXLENGTH 20*/
|
||||
CAST(SUBSTR(CP.MDLINIT,0,1) AS VARCHAR2(1)) AS MIDDLENAME,/*MAXLENGTH 1*/
|
||||
CAST(SUBSTR(COALESCE(CP.LASTNAME,CP.ORGNAME),0,20) AS VARCHAR2(20)) AS LASTNAME,/*MAXLENGTH 20*/
|
||||
CAST(SUBSTR(CP.ADDRESS_1,0,20) AS VARCHAR2(20)) AS ADDRESS1,/*CLEAN UP IN ABOVE CTE, MAXLENGTH 20*/
|
||||
CAST(SUBSTR(CP.ADDRESS_2,0,20) AS VARCHAR2(20)) AS ADDRESS2,/*CLEAN UP IN ABOVE CTE, MAXLENGTH 20*/
|
||||
CAST(SUBSTR(CP.CITY,0,20) AS VARCHAR2(20)) AS CITY,/*CLEAN UP IN ABOVE CTE, MAXLENGTH 20*/
|
||||
CAST(SUBSTR(CP.STATE,0,2) AS VARCHAR2(2)) AS STATE,/*DNA ALLOWS LONGER, MAXLENGTH 2*/
|
||||
CAST(SUBSTR(CP.ZIP,0,9) AS VARCHAR2(9)) AS ZIPCODE, /*MAXLENGTH 9*/
|
||||
CAST(NULL AS VARCHAR2(10)) AS HOMEPHONE, /*NULL IN PREVIOUS VERSION MAXLENGTH 10*/
|
||||
CAST(NULL AS VARCHAR2(10)) AS BUSINESSPHONE, /*NULL IN PREVIOUS VERSION MAXLENGTH 10*/
|
||||
CAST(SUBSTR(PR.PROPID,0,17) AS VARCHAR2(17)) AS VEHICLEVIN, /*DNA ALLOWS LONGER, MAXLENGTH 17*/
|
||||
CAST(
|
||||
CASE
|
||||
WHEN LENGTH(PR.PROPYEARNBR)> 4 THEN NULL
|
||||
ELSE PR.PROPYEARNBR
|
||||
END
|
||||
AS VARCHAR2(4)) AS VEHICLEYEAR, /*DNA ALLOWS LONGER, MAXLENGTH 4, NEEDS TO BE NUMERIC, WHICH DNA IS*/
|
||||
CAST(SUBSTR(PR.PROPMAKE,0,20) AS VARCHAR2(20)) AS VEHICLEMAKE, /*DNA IS SHORTER, MAXLENGTH 20*/
|
||||
CAST(SUBSTR(PR.PROPMODEL,0,20) AS VARCHAR2(20)) AS VEHICLEMODEL, /*DNA IS SHORTER, MAXLENGTH 20*/
|
||||
CAST(NULL AS VARCHAR2(20)) AS VEHICLETRIM,/*NULL IN PREVIOUS VERSION MAXLENGTH 20*/
|
||||
CAST(NULL AS VARCHAR2(40)) AS VEHICLEDESCRIPTION,/*NULL IN PREVIOUS VERSION MAXLENGTH 40*/
|
||||
CAST('R' AS VARCHAR2(1)) AS PRODUCT,/*HARD-CODED IN PREVIOUS VERSION IN PREVIOUS VERSION MAXLENGTH 1*/
|
||||
CAST(NULL AS VARCHAR2(20)) AS SUBPRODUCT,/*NULL IN PREVIOUS VERSION IN PREVIOUS VERSION MAXLENGTH 20*/
|
||||
TO_CHAR(
|
||||
CASE WHEN CE.ACCTNBR IS NOT NULL THEN 0
|
||||
ELSE ROUND(LIS.PAYOFF_VALUE+(LIS.PAYOFF_DAYS*RATE.INTRATE/LIS.DAYS_IN_YEAR*CNB.BALAMT),2)
|
||||
END
|
||||
,'FM999990.00') AS NETPAYOFFAMOUNT,/*PER: KYLE MATHER-IF MOB OR DEBT PROTECTION THEN ZERO. MAXLENGTH 6.2*/
|
||||
TO_CHAR(LIS.EXPIRATION_DATE,'YYYYMMDD') AS GOODUNTILDATE, /*CALCULATED, MAXLENGTH 8*/
|
||||
TO_CHAR(LIS.DATEMAT,'YYYYMMDD') AS MATURITYDATE,
|
||||
CASE
|
||||
WHEN AC.ORIGTERM IS NULL OR AC.CONTRACTDATE IS NULL THEN 0--NO EXAMPLE OF NULL CONTRACT DATE BUT SYSTEM DOES NOT PREVENT IT
|
||||
ELSE ROUND(MONTHS_BETWEEN(AC.CONTRACTDATE+AC.ORIGTERM, AC.CONTRACTDATE))
|
||||
END AS TERMINMONTHS,/*MAXLENGTH2, PER KYLE MATHER SHOULD NOT BE LIMITED TO THIS*/
|
||||
CASE
|
||||
WHEN MONTHS_BETWEEN(LIS.DATEMAT,CDD.DUEDATE)<=0 THEN 0
|
||||
ELSE MONTHS_BETWEEN(LIS.DATEMAT,CDD.DUEDATE)+1
|
||||
END AS MONTHS_LEFT, /*MAXLENGTH 2, PER KYLE MATHER SHOULD NOT BE LIMITED TO THIS*/
|
||||
CAST(NULL AS VARCHAR2(8)) AS NEXTPAYMENTDATE,/*NULL IN PREVIOUS VERSION IN PREVIOUS VERSION MAXLENGTH 8*/
|
||||
TO_CHAR(ROUND(NVL(PMT.PMTAMT,0),2),'FM99990.00') AS MONTHLYPAYMENT, /*MAXLENGTH 5.2*/
|
||||
CAST(NULL AS VARCHAR2(9)) AS GROSSPAYOFF,/*NULL IN PREVIOUS VERSION IN PREVIOUS VERSION MAXLENGTH 6.2*/
|
||||
CAST(NULL AS VARCHAR2(9)) AS SECURITYDEPOSIT,/*NULL IN PREVIOUS VERSION IN PREVIOUS VERSION MAXLENGTH 6.2*/
|
||||
CAST(NULL AS VARCHAR2(9)) AS RESIDUALVALUE,/*NULL IN PREVIOUS VERSION IN PREVIOUS VERSION MAXLENGTH 6.2*/
|
||||
TO_CHAR(ROUND((RATE.INTRATE/LIS.DAYS_IN_YEAR*CNB.BALAMT),2),'FM999990.00') AS DOLLARDAYRATE,/*MAXLENGTH 6.2*/
|
||||
CAST(NULL AS VARCHAR2(9)) AS BALLOONAMOUNT,/*NULL IN PREVIOUS VERSION IN PREVIOUS VERSION MAXLENGTH 6.2*/
|
||||
CAST(
|
||||
CASE
|
||||
WHEN CE.ACCTNBR IS NOT NULL THEN 'Contact lender for payoff'
|
||||
ELSE NULL
|
||||
END
|
||||
AS VARCHAR2(80)) AS PAYOFFMESSAGE,/*MAXLENGTH 80*/
|
||||
CAST(NULL AS VARCHAR2(1)) AS PREAPPROVEDCODE,/*NULL IN PREVIOUS VERSION IN PREVIOUS VERSION MAXLENGTH 1*/
|
||||
CAST(NULL AS VARCHAR2(20)) AS REFERENCENUMBER,/*NULL IN PREVIOUS VERSION IN PREVIOUS VERSION MAXLENGTH 20*/
|
||||
CAST(NULL AS VARCHAR2(8)) AS EXPIRATIONDATE,/*NULL IN PREVIOUS VERSION IN PREVIOUS VERSION MAXLENGTH 8*/
|
||||
CAST(NULL AS VARCHAR2(9)) AS BUYRATE,/*NULL IN PREVIOUS VERSION IN PREVIOUS VERSION MAXLENGTH 2.6*/
|
||||
CAST(NULL AS VARCHAR2(8)) AS ACQUISITIONFEE,/*NULL IN PREVIOUS VERSION IN PREVIOUS VERSION MAXLENGTH 5.2*/
|
||||
CAST(NULL AS VARCHAR2(8)) AS PARTICIPATIONPERCENT/*NULL IN PREVIOUS VERSION IN PREVIOUS VERSION MAXLENGTH 3.2*/
|
||||
FROM CTE_LOANS_IN_SCOPE LIS
|
||||
INNER JOIN OSIBANK.ACCT AC ON AC.ACCTNBR=LIS.ACCTNBR
|
||||
INNER JOIN CTE_PRIMARY CP ON CP.ACCTNBR=LIS.ACCTNBR
|
||||
LEFT JOIN (
|
||||
SELECT PMT.ACCTNBR,
|
||||
SUM(PMT.PMTAMT) AS PMTAMT
|
||||
FROM OSIBANK.ACCTPMTHIST PMT
|
||||
INNER JOIN CTE_DATES CD ON 1=1
|
||||
INNER JOIN OSIBANK.ACCTPMTSUBACCTHIST APSH ON APSH.ACCTNBR=PMT.ACCTNBR AND APSH.PMTNBR=PMT.PMTNBR AND APSH.EFFDATE=PMT.EFFDATE
|
||||
INNER JOIN OSIBANK.ACCTSUBACCT ASA ON ASA.ACCTNBR=APSH.ACCTNBR AND ASA.SUBACCTNBR=APSH.SUBACCTNBR AND ASA.BALCATCD='NOTE' AND ASA.BALTYPCD IN ('OINT','BAL','DUE')
|
||||
WHERE PMT.PMTTYPCD IN ('FB','FBI','FDUE')
|
||||
AND PMT.EFFDATE<=CD.DATE_RUN
|
||||
AND (PMT.INACTIVEDATE>CD.DATE_RUN OR PMT.INACTIVEDATE IS NULL)
|
||||
AND (APSH.INACTIVEDATE>CD.DATE_RUN OR APSH.INACTIVEDATE IS NULL)
|
||||
GROUP BY PMT.ACCTNBR
|
||||
) PMT ON PMT.ACCTNBR=LIS.ACCTNBR
|
||||
LEFT JOIN (
|
||||
SELECT ARH.ACCTNBR,
|
||||
ARH.INTRATE,
|
||||
ROW_NUMBER() OVER (PARTITION BY ARH.ACCTNBR, ARH.SUBACCTNBR ORDER BY ARH.EFFDATE DESC) AS RWN
|
||||
FROM OSIBANK.ACCTRATEHIST ARH
|
||||
INNER JOIN OSIBANK.ACCTSUBACCT ASA ON ASA.ACCTNBR=ARH.ACCTNBR AND ASA.SUBACCTNBR=ARH.SUBACCTNBR AND ASA.BALCATCD='NOTE' AND ASA.BALTYPCD='BAL'
|
||||
INNER JOIN CTE_DATES CD ON 1=1
|
||||
WHERE ARH.EFFDATE<=CD.DATE_RUN AND (ARH.INACTIVEDATE>CD.DATE_RUN OR ARH.INACTIVEDATE IS NULL)
|
||||
) RATE ON RATE.ACCTNBR=LIS.ACCTNBR AND RATE.RWN=1
|
||||
LEFT JOIN OSIBANK.VIEW_LN_CURR_NOTEBAL CNB ON CNB.ACCTNBR=LIS.ACCTNBR
|
||||
LEFT JOIN OSIBANK.ACCTPROP AP ON AP.ACCTNBR=LIS.ACCTNBR
|
||||
LEFT JOIN OSIBANK.PROP PR ON PR.PROPNBR=AP.PROPNBR
|
||||
LEFT JOIN OSIBANK.VIEW_LN_CURR_DUEDATE CDD ON CDD.ACCTNBR=LIS.ACCTNBR
|
||||
LEFT JOIN OSIBANK.ACCTUSERFIELD AU ON AU.ACCTNBR=LIS.ACCTNBR AND AU.USERFIELDCD='DECD'
|
||||
LEFT JOIN CTE_EXCLUSIONS CE ON CE.ACCTNBR=LIS.ACCTNBR
|
||||
) /*MATCH REQUIREMENTS ON SPEC DOCUMENT*/
|
||||
SELECT DISTINCT *
|
||||
FROM CTE_STAGE S
|
||||
WHERE S.ACCOUNT IS NOT NULL
|
||||
AND S.LENDERID IS NOT NULL
|
||||
AND S.FIRSTNAME IS NOT NULL
|
||||
AND S.LASTNAME IS NOT NULL
|
||||
AND S.ADDRESS1 IS NOT NULL
|
||||
AND S.CITY IS NOT NULL
|
||||
/*PER KYLE MATHER INCLUDE RECORDS WITHOUT STATE, REJECT ON DEALERTRACK INGEST SIDE*/
|
||||
AND S.ZIPCODE IS NOT NULL
|
||||
AND S.VEHICLEVIN IS NOT NULL
|
||||
AND S.PRODUCT IS NOT NULL
|
||||
AND S.NETPAYOFFAMOUNT IS NOT NULL
|
||||
AND S.GOODUNTILDATE IS NOT NULL
|
||||
AND S.MATURITYDATE IS NOT NULL
|
||||
/*PER KYLE MATHER INCLUDE LOANS WITH MOB INSURANCE AND/OR DEBT PROTECTION*/
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
SELECT COUNT(1)
|
||||
FROM OSIBANK.ORG
|
||||
WHERE LOWER(ORGNAME) LIKE '%' || :organizationName || '%'
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
SELECT ORGNBR
|
||||
FROM OSIBANK.ORG
|
||||
WHERE LOWER(ORGNAME) LIKE '%' || :organizationName || '%'
|
||||
AND ROWNUM <= :limit
|
||||
+184
@@ -0,0 +1,184 @@
|
||||
With CTE_ActiveAccounts As
|
||||
(
|
||||
Select PE.persnbr
|
||||
,ar.AcctNbr As "OldestRoleActiveAccount"
|
||||
,ar.EFFDATETIME As "OldestRoleActiveDate"
|
||||
,at.ACCTNBR As "OldestTaxActiveAccount"
|
||||
,at.EFFDATETIME As "OldestTaxAccountDate"
|
||||
from pers PE
|
||||
left join
|
||||
(
|
||||
Select A.AcctNbr, ASH.EffDateTime, A.taxrptforpersnbr, row_number() over (partition by A.taxrptforpersnbr order by ASH.EffDateTime asc) rowTaxActive
|
||||
from ACCT A Inner Join ACCTACCTSTATHIST ASH ON A.ACCTNBR = ASH.ACCTNBR
|
||||
Where A.MJACCTTYPCD NOT IN ('EXT', 'RR', 'GL', 'RTMT')
|
||||
And A.CURRMIACCTTYPCD NOT IN ('BAT', 'CASH', 'CLRA', 'DLR', 'GL','SDB')
|
||||
AND NOT EXISTS (select null from ACCTACCTSTATHIST OTA Where OTA.Acctstatcd IN ('CLS', 'CO') and OTA.ACCTNBR = A.Acctnbr)
|
||||
And A.CURRACCTSTATCD NOT IN ('CLS', 'CWB', 'CO')
|
||||
And ASH.ACCTSTATCD IN ('ACT','DORM','IACT')
|
||||
) at on at.taxrptforpersnbr = PE.persnbr And rowTaxActive = 1
|
||||
|
||||
left join
|
||||
(
|
||||
Select AC.AcctNbr, ASH.EffDateTime, ARP.persnbr, row_number() over (partition by ARP.persnbr order by ASH.EffDateTime asc) rowRoleActive
|
||||
from ACCTACCTROLEPERS ARP Join ACCT AC on AC.acctnbr = ARP.acctnbr
|
||||
Join ACCTACCTSTATHIST ASH ON ASH.ACCTNBR = ARP.ACCTNBR
|
||||
Where AC.MJACCTTYPCD NOT IN ('EXT', 'RR', 'GL', 'RTMT')
|
||||
And AC.CURRMIACCTTYPCD NOT IN ('BAT', 'CASH', 'CLRA', 'DLR', 'GL','SDB')
|
||||
AND NOT EXISTS (select null from ACCTACCTSTATHIST ORA Where ORA.Acctstatcd IN ('CLS', 'CO') and ORA.ACCTNBR = AC.Acctnbr)
|
||||
And AC.CURRACCTSTATCD NOT IN ('CLS', 'CWB', 'CO')
|
||||
And ASH.ACCTSTATCD IN ('ACT','DORM','IACT')
|
||||
And ARP.ACCTROLECD IN ('OWN','SIGN','POA')
|
||||
) ar on PE.persnbr = ar.persnbr And rowRoleActive = 1
|
||||
),
|
||||
|
||||
CTE_ActiveClosedAccounts As
|
||||
(
|
||||
|
||||
Select PE.persnbr as "PersonNumber",
|
||||
PUF.Value as "ValueSet",
|
||||
PUF.DateLastMaint,
|
||||
PUF.valueLastUpdatedDate
|
||||
,Case
|
||||
When PUF.valueLastUpdatedDate IS NOT NULL Then 1 Else 0 End As "UserFieldExists"
|
||||
,Case
|
||||
When (ract.AcctNbr IS NOT NULL and aac."OldestTaxActiveAccount" IS NULL) Then ract.EffDateTime
|
||||
When (racr.AcctNbr IS NOT NULL and aac."OldestRoleActiveAccount" IS NULL) Then racr.EffDateTime
|
||||
When (cto.AcctNbr IS NOT NULL and aac."OldestTaxActiveAccount" IS NULL) Then cto.EffDateTime
|
||||
When (cro.AcctNbr IS NOT NULL and aac."OldestRoleActiveAccount" IS NULL) Then cro.EffDateTime
|
||||
When (aac."OldestRoleActiveDate" IS NULL or aac."OldestTaxAccountDate" IS NULL) Then
|
||||
COALESCE(aac."OldestRoleActiveDate", aac."OldestTaxAccountDate") Else
|
||||
LEAST(aac."OldestRoleActiveDate", aac."OldestTaxAccountDate")
|
||||
End As "OldestActiveEffectiveDate"
|
||||
|
||||
,Case
|
||||
When (ct.AcctNbr = ctad.AcctNbr or cr.AcctNbr = crad.AcctNbr) Then Null
|
||||
When (ct.EffDateTime IS NULL or cr.EffDateTime IS NULL) Then
|
||||
COALESCE(ct.EffDateTime, cr.EffDateTime) Else
|
||||
GREATEST(ct.EffDateTime, cr.EffDateTime)
|
||||
End As "RecentClosedEffectiveDate"
|
||||
from pers PE
|
||||
left join CTE_ActiveAccounts aac on aac.PersNbr = PE.persnbr
|
||||
left join
|
||||
(
|
||||
Select A.AcctNbr, ASH.EffDateTime, A.taxrptforpersnbr, row_number() over (partition by A.taxrptforpersnbr order by ASH.EffDateTime desc) rowTaxClosed
|
||||
from ACCT A Inner Join ACCTACCTSTATHIST ASH ON A.ACCTNBR = ASH.ACCTNBR
|
||||
Where A.MJACCTTYPCD NOT IN ('EXT', 'RR', 'GL', 'RTMT')
|
||||
And A.CURRMIACCTTYPCD NOT IN ('BAT', 'CASH', 'CLRA', 'DLR', 'GL','SDB')
|
||||
AND EXISTS (select null from ACCTACCTSTATHIST OTA Where OTA.Acctstatcd IN ('ACT', 'IACT', 'DORM') and OTA.ACCTNBR = A.Acctnbr)
|
||||
And A.CURRACCTSTATCD IN ('CLS', 'CWB')
|
||||
) ct on ct.taxrptforpersnbr = PE.persnbr and rowTaxClosed = 1 and ct.EffDateTime > sysdate - 30 --check if the mostrecentcloseddate account number is less than 30 days old
|
||||
|
||||
left join
|
||||
(
|
||||
Select AC.AcctNbr, ASH.EffDateTime, arp.persnbr, row_number() over (partition by ARP.persnbr order by ASH.EffDateTime desc) rowRoleClosed
|
||||
from ACCTACCTROLEPERS ARP Join ACCT AC on AC.acctnbr = ARP.acctnbr
|
||||
Join ACCTACCTSTATHIST ASH ON ASH.ACCTNBR = ARP.ACCTNBR
|
||||
Where AC.MJACCTTYPCD NOT IN ('EXT', 'RR', 'GL', 'RTMT')
|
||||
And AC.CURRMIACCTTYPCD NOT IN ('BAT', 'CASH', 'CLRA', 'DLR', 'GL','SDB')
|
||||
AND EXISTS (select null from ACCTACCTSTATHIST ORA Where ORA.Acctstatcd IN ('ACT', 'IACT', 'DORM') and ORA.ACCTNBR = AC.Acctnbr )
|
||||
And AC.CURRACCTSTATCD IN ('CLS', 'CWB') and ARP.ACCTROLECD IN ('OWN','SIGN','POA')
|
||||
) cr on PE.persnbr = cr.persnbr and rowRoleClosed = 1 and cr.EffDateTime > sysdate - 30 --check if the mostrecentcloseddate account number is less than 30 days old
|
||||
|
||||
left join
|
||||
(
|
||||
Select A.AcctNbr, ASH.EffDateTime, A.taxrptforpersnbr, row_number() over (partition by A.taxrptforpersnbr order by ASH.EffDateTime desc) rowTaxClosedOldReactivated
|
||||
from ACCT A Inner Join ACCTACCTSTATHIST ASH ON A.ACCTNBR = ASH.ACCTNBR
|
||||
Where A.MJACCTTYPCD NOT IN ('EXT', 'RR', 'GL', 'RTMT')
|
||||
And A.CURRMIACCTTYPCD NOT IN ('BAT', 'CASH', 'CLRA', 'DLR', 'GL','SDB')
|
||||
AND EXISTS (select null from ACCTACCTSTATHIST CRA Where CRA.Acctstatcd IN ('CLS', 'CWB') and CRA.ACCTNBR = A.Acctnbr and CRA.EffDateTime < sysdate - 30)
|
||||
And A.CURRACCTSTATCD IN ('ACT', 'IACT', 'DORM')
|
||||
) cto on cto.taxrptforpersnbr = PE.persnbr and rowTaxClosedOldReactivated = 1 and cto.EffDateTime > sysdate - 30 --check to see if account was reopened after being closed more than 30 days
|
||||
|
||||
left join
|
||||
(
|
||||
Select AC.AcctNbr, ASH.EffDateTime, arp.persnbr, row_number() over (partition by ARP.persnbr order by ASH.EffDateTime desc) rowRoleClosedOldReactivated
|
||||
from ACCTACCTROLEPERS ARP Join ACCT AC on AC.acctnbr = ARP.acctnbr
|
||||
Join ACCTACCTSTATHIST ASH ON ASH.ACCTNBR = ARP.ACCTNBR
|
||||
Where AC.MJACCTTYPCD NOT IN ('EXT', 'RR', 'GL', 'RTMT')
|
||||
And AC.CURRMIACCTTYPCD NOT IN ('BAT', 'CASH', 'CLRA', 'DLR', 'GL','SDB')
|
||||
AND EXISTS (select null from ACCTACCTSTATHIST CRRA Where CRRA.Acctstatcd IN ('CLS', 'CWB') and CRRA.ACCTNBR = AC.Acctnbr and CRRA.EffDateTime < sysdate - 30)
|
||||
And AC.CURRACCTSTATCD IN ('ACT', 'DORM', 'IACT')
|
||||
And ARP.ACCTROLECD IN ('OWN','SIGN','POA')
|
||||
) cro on PE.persnbr = cro.persnbr and rowRoleClosedOldReactivated = 1 and cro.EffDateTime > sysdate - 30 --check to see if account was reopened after being closed more than 30 days
|
||||
|
||||
left join
|
||||
(
|
||||
Select A.AcctNbr, ASH.EffDateTime, A.taxrptforpersnbr, A.CURRACCTSTATCD from ACCT A Inner Join ACCTACCTSTATHIST ASH ON A.ACCTNBR = ASH.ACCTNBR
|
||||
Where A.MJACCTTYPCD NOT IN ('EXT', 'RR', 'GL', 'RTMT')
|
||||
And A.CURRMIACCTTYPCD NOT IN ('BAT', 'CASH', 'CLRA', 'DLR', 'GL','SDB')
|
||||
And (ASH.ACCTSTATCD = 'ACT' Or ASH.ACCTSTATCD = 'DORM' Or ASH.ACCTSTATCD = 'IACT')) ctad on Pe.Persnbr = ctad.taxrptforpersnbr
|
||||
And ct.AcctNbr = ctad.AcctNbr
|
||||
And ctad.EffDateTime > sysdate - 30 --check if mostrecentclosed date has opened in last 30 days
|
||||
|
||||
left join
|
||||
(
|
||||
Select A.AcctNbr, ASH.EffDateTime, A.taxrptforpersnbr, row_number() over (partition by A.taxrptforpersnbr order by ASH.EffDateTime asc) rowTaxClosedNewReactivated
|
||||
from ACCT A Inner Join ACCTACCTSTATHIST ASH ON A.ACCTNBR = ASH.ACCTNBR
|
||||
Where A.MJACCTTYPCD NOT IN ('EXT', 'RR', 'GL', 'RTMT')
|
||||
And A.CURRMIACCTTYPCD NOT IN ('BAT', 'CASH', 'CLRA', 'DLR', 'GL','SDB')
|
||||
AND EXISTS (select null from ACCTACCTSTATHIST CRA Where CRA.Acctstatcd IN ('CLS', 'CWB') and CRA.ACCTNBR = A.Acctnbr and CRA.EffDateTime > sysdate - 30)
|
||||
AND EXISTS (select null from ACCTACCTSTATHIST CRA Where CRA.Acctstatcd IN ('ACT', 'IACT', 'DORM') and CRA.ACCTNBR = A.Acctnbr and CRA.EffDateTime > sysdate - 30)
|
||||
And A.CURRACCTSTATCD IN ('ACT', 'IACT', 'DORM')
|
||||
) ract on ract.taxrptforpersnbr = PE.persnbr and rowTaxClosedNewReactivated = 1 and ract.EffDateTime < sysdate - 30
|
||||
--check if most recent reactivated tax account has closed and reopened in last 30 days take the oldest active date before that
|
||||
|
||||
left join
|
||||
(
|
||||
Select AC.AcctNbr, ASH.EffDateTime, ARP.persnbr from ACCTACCTROLEPERS ARP Inner Join ACCT AC on AC.acctnbr = ARP.acctnbr
|
||||
Inner Join ACCTACCTSTATHIST ASH ON ASH.ACCTNBR = ARP.ACCTNBR
|
||||
Where AC.MJACCTTYPCD NOT IN ('EXT', 'RR', 'GL', 'RTMT')
|
||||
And AC.CURRMIACCTTYPCD NOT IN ('BAT', 'CASH', 'CLRA', 'DLR', 'GL','SDB')
|
||||
And ASH.ACCTSTATCD IN ('ACT','DORM','IACT')
|
||||
And ARP.ACCTROLECD IN ('OWN','SIGN','POA')) crad on Pe.Persnbr = crad.persnbr
|
||||
And cr.AcctNbr = crad.AcctNbr
|
||||
And crad.EffDateTime > sysdate - 30 --check if mostrecentclosed date has opened in last 30 days
|
||||
|
||||
left join
|
||||
(
|
||||
Select AC.AcctNbr, ASH.EffDateTime, arp.persnbr, row_number() over (partition by ARP.persnbr order by ASH.EffDateTime asc) rowRoleClosedNewReactivated
|
||||
from ACCTACCTROLEPERS ARP Join ACCT AC on AC.acctnbr = ARP.acctnbr
|
||||
Join ACCTACCTSTATHIST ASH ON ASH.ACCTNBR = ARP.ACCTNBR
|
||||
Where AC.MJACCTTYPCD NOT IN ('EXT', 'RR', 'GL', 'RTMT')
|
||||
And AC.CURRMIACCTTYPCD NOT IN ('BAT', 'CASH', 'CLRA', 'DLR', 'GL','SDB')
|
||||
AND EXISTS (select null from ACCTACCTSTATHIST CRRA Where CRRA.Acctstatcd IN ('CLS', 'CWB') and CRRA.ACCTNBR = AC.Acctnbr and CRRA.EffDateTime > sysdate - 30)
|
||||
AND EXISTS (select null from ACCTACCTSTATHIST CRRA Where CRRA.Acctstatcd IN ('ACT', 'IACT', 'DORM') and CRRA.ACCTNBR = AC.Acctnbr and CRRA.EffDateTime > sysdate - 30)
|
||||
And AC.CURRACCTSTATCD IN ('ACT', 'DORM', 'IACT')
|
||||
And ARP.ACCTROLECD IN ('OWN','SIGN','POA')
|
||||
) racr on PE.persnbr = racr.persnbr and rowRoleClosedNewReactivated = 1 and racr.EffDateTime < sysdate - 30
|
||||
--check if most recent reactivated role account has closed and reopened in last 30 days take the oldest active date before that
|
||||
|
||||
left join (Select value, valueLastUpdatedDate, persnbr, DateLastMaint from PERSUSERFIELD Where userfieldCD = 'MBRH') PUF on PUF.persnbr = ct.taxrptforpersnbr or PUF.persnbr = cr.persnbr or PUF.persnbr = aac.PersNbr
|
||||
inner join (Select persnbr, purgeyn from pers where purgeyn = 'N') PUR on PUR.persnbr = PE.persnbr
|
||||
|
||||
--option to reset all of them if so don't run this or pass in a date
|
||||
Where PUR.purgeyn = 'N'
|
||||
and (PUF.DateLastMaint > TO_TIMESTAMP(:ResetStartDate, 'MM-DD-YY HH24:MI:SS') and PUF.DateLastMaint < TO_TIMESTAMP(:ResetEndDate, 'MM-DD-YY HH24:MI:SS'))
|
||||
or PUF.valueLastUpdatedDate Is Null
|
||||
or PUF.DateLastMaint < cr.EffDateTime
|
||||
or PUF.DateLastMaint < aac."OldestTaxAccountDate"
|
||||
or PUF.DateLastMaint < aac."OldestRoleActiveDate"
|
||||
or PUF.DateLastMaint < ct.EffDateTime
|
||||
|
||||
--The oldest active or most recent closed is greater than valuelastupdatedate indicating a recent change in account status OR
|
||||
--ValuelastUpdatedate is less than or equal to passed in as current date. This should ensure if a cleanup fails we are not just relying on the value last update date one day prior to today.
|
||||
--A non existant ValuelastUpdatedate is considered to be selected and added as a user value.
|
||||
)
|
||||
Select * from CTE_ActiveClosedAccounts where "PersonNumber" != 5775
|
||||
and "UserFieldExists" = 0
|
||||
Union
|
||||
Select * from CTE_ActiveClosedAccounts where "PersonNumber" != 5775
|
||||
and "UserFieldExists" = 1
|
||||
and "OldestActiveEffectiveDate" < sysdate - 30
|
||||
and "ValueSet" = 'Y'
|
||||
Union
|
||||
Select * from CTE_ActiveClosedAccounts where "PersonNumber" != 5775
|
||||
and "UserFieldExists" = 1
|
||||
and "RecentClosedEffectiveDate" is null
|
||||
and "OldestActiveEffectiveDate" > sysdate - 30
|
||||
and "ValueSet" = 'N'
|
||||
Union
|
||||
Select * from CTE_ActiveClosedAccounts where "PersonNumber" != 5775
|
||||
and "UserFieldExists" = 1
|
||||
and "RecentClosedEffectiveDate" < sysdate - 30
|
||||
and "OldestActiveEffectiveDate" is null
|
||||
and "ValueSet" = 'N'
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
SELECT COUNT(1)
|
||||
FROM OSIBANK.PERS
|
||||
WHERE (LOWER(FIRSTNAME) LIKE '%' || :firstName || '%' OR :firstName IS NULL)
|
||||
AND (LOWER(MDLNAME) LIKE '%' || :middleName || '%' OR :middleName IS NULL)
|
||||
AND (LOWER(LASTNAME) LIKE '%' || :lastName || '%' OR :lastName IS NULL)
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
SELECT PERSNBR
|
||||
FROM OSIBANK.PERS
|
||||
WHERE (LOWER(FIRSTNAME) LIKE '%' || :firstName || '%' OR :firstName IS NULL)
|
||||
AND (LOWER(MDLNAME) LIKE '%' || :middleName || '%' OR :middleName IS NULL)
|
||||
AND (LOWER(LASTNAME) LIKE '%' || :lastName || '%' OR :lastName IS NULL)
|
||||
AND ROWNUM <= :limit
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
SELECT q.QUENBR AS QueueNumber,
|
||||
q.ApplNbr AS ApplicationNumber,
|
||||
q.ParameterCd AS ParameterCode,
|
||||
q.ParameterValue AS ParameterValue,
|
||||
q.DateLastMaint AS DateLastMaint
|
||||
FROM QUEAPPLPARAM q
|
||||
INNER JOIN que ON que.quenbr = q.quenbr
|
||||
WHERE q.APPLNBR in ({ApplicationNumbersHolder})
|
||||
AND que.EffDate = TO_TIMESTAMP(:EffectiveDate, 'YYYY-MM-DD HH24:MI:SS')
|
||||
ORDER BY q.QUENBR DESC
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
/*
|
||||
Query to map SAF UserIDs to a known Core Person and Employee
|
||||
*/
|
||||
SELECT
|
||||
pers.USERID AS SafUserId,
|
||||
prod.PERSNBR AS SafPersNbr,
|
||||
prod.PRODPERSID AS CorePersNbr,
|
||||
addr.TEXT AS EmployeeEmail
|
||||
FROM
|
||||
SAF.PERSUSER pers
|
||||
JOIN SAF.PERSPROD prod ON
|
||||
pers.PERSNBR = PROD.PERSNBR
|
||||
AND prod.PRODNBR = '3'
|
||||
JOIN OSIBANK.PERSADDRUSE paddr ON
|
||||
prod.PRODPERSID = PADDR.PERSNBR
|
||||
JOIN OSIBANK.ADDRLINE addr ON
|
||||
paddr.ADDRNBR = addr.ADDRNBR
|
||||
AND paddr.ADDRUSECD = 'EMPE'
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
select *
|
||||
from (SELECT EXTRTXNDESCNBR AS ExternalDescriptionNumber,
|
||||
EXTRTXNDESCTEXT AS ExternalDescriptionText,
|
||||
DATELASTMAINT AS DateLastMaintained
|
||||
FROM osibank.EXTRTXNDESC
|
||||
WHERE EXTRTXNDESCTEXT LIKE '%State of Wisc - SSI%'
|
||||
AND EXTRTXNDESCTEXT NOT LIKE '%*XXXXX%') t
|
||||
where length(regexp_substr(t.externaldescriptiontext, '\*[0-9]{9}\*')) > 0
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
WITH ABC AS (
|
||||
SELECT
|
||||
to_date(:startDateTime, 'YYYY-MM-DD HH24:MI:SS') AS start_date,
|
||||
to_date(:endDateTime, 'YYYY-MM-DD HH24:MI:SS') AS end_date
|
||||
FROM DUAL
|
||||
), Transactions AS (
|
||||
SELECT r2.ACCTNBR, r2.RTXNNBR, r2.POSTDATE, r.TRANAMT, r.CHECKNBR, r.EXTRTXNDESCNBR, r.INTRRTXNDESCNBR, r.CURRRTXNSTATCD, r.RTXNTYPCD
|
||||
FROM osibank.RTXNSTATHIST r2
|
||||
INNER JOIN osibank.rtxn r ON R.ACCTNBR = R2.ACCTNBR AND R.RTXNNBR = R2.RTXNNBR
|
||||
INNER JOIN ABC D ON r2.ACTDATETIME > D.start_date and r2.ACTDATETIME <= D.end_date
|
||||
WHERE r.TRANAMT != 0 AND ({RtxnTypCdQueryVerifyHolder} IS NULL OR {RtxnTypCdQueryVerifyHolder} = '' OR r.RTXNTYPCD NOT IN ({RtxnTypCdQueryParamHolder}))
|
||||
), AccountSubAccounts AS (
|
||||
SELECT ASA.ACCTNBR, ASA.SUBACCTNBR
|
||||
FROM OSIBANK.AcctSubAcct ASA
|
||||
WHERE ASA.BalCatCd = 'NOTE' AND ASA.BalTypCd = 'BAL'
|
||||
AND EXISTS (SELECT 1 FROM Transactions T WHERE T.ACCTNBR = ASA.ACCTNBR)
|
||||
), MostRecentAccountBalanceHistory AS (
|
||||
SELECT ABH.ACCTNBR,
|
||||
ABH.BALAMT
|
||||
FROM AccountSubAccounts ASA
|
||||
INNER JOIN OSIBANK.ACCTBALHIST ABH ON ASA.ACCTNBR=ABH.ACCTNBR AND ASA.SubAcctNbr = ABH.SubAcctNbr AND ABH.EFFDATE =
|
||||
(SELECT MAX(D.EffDate) AS MA
|
||||
FROM OSIBANK.AcctBalHist D
|
||||
INNER JOIN AccountSubAccounts ASA ON ASA.ACCTNBR=D.ACCTNBR AND ASA.SUBACCTNBR = D.SUBACCTNBR
|
||||
INNER JOIN ABC A ON D.EFFDATE <= A.end_date
|
||||
WHERE D.AcctNbr = abh.AcctNbr
|
||||
AND D.SubAcctNbr = abh.SubAcctNbr
|
||||
)
|
||||
)
|
||||
SELECT T.ACCTNBR as AccountNumber,
|
||||
T.RTXNNBR as TransactionNumber,
|
||||
e.EXTRTXNDESCTEXT as ExternalTransactionDescription,
|
||||
i.INTRTXNDESCTEXT as InternalTransactionDescription,
|
||||
T.TRANAMT as Amount,
|
||||
T.POSTDATE as PostingDate,
|
||||
T.RTXNTYPCD as TransactionCode,
|
||||
abh.BALAMT as CurrentBalance,
|
||||
T.CHECKNBR as CheckNumber,
|
||||
rs.RTXNSTATDESC as CurrRtxnStatCd,
|
||||
r3.RTXNTYPDESC AS TransactionTypeDescription,
|
||||
CASE WHEN T.TRANAMT > 0 THEN 'C' ELSE 'D' END as DebitCredit
|
||||
-- SELECT COUNT(1)
|
||||
FROM Transactions T
|
||||
INNER JOIN osibank.RTXNSTAT rs ON rs.RTXNSTATCD = T.CURRRTXNSTATCD
|
||||
INNER JOIN osibank.RTXNTYP r3 ON r3.RTXNTYPCD = T.RTXNTYPCD
|
||||
INNER JOIN MostRecentAccountBalanceHistory ABH ON ABH.ACCTNBR = T.ACCTNBR
|
||||
LEFT JOIN osibank.EXTRTXNDESC e ON T.EXTRTXNDESCNBR = e.EXTRTXNDESCNBR
|
||||
LEFT JOIN osibank.INTRTXNDESC i ON T.INTRRTXNDESCNBR = i.INTRTXNDESCNBR
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
UPDATE osibank.EXTRTXNDESC
|
||||
SET Extrtxndesctext = :externaldescriptiontext,
|
||||
DATELASTMAINT = SYSDATE
|
||||
WHERE Extrtxndescnbr = :externaldescriptionnumber
|
||||
Reference in New Issue
Block a user