Past Due balances for MSO PIDs - used to identify PIDs with a past due before sending out rebate reports
--This will give the balance of a PID as of the 1st of the current month.
SELECT BGM.CustomerID
,BGM.GroupID
,bg.Name
,wc.com
,wc.rte_wh
INTO #Pids
FROM accounting_11.dbo.buyinggroupmember BGM
LEFT JOIN accounting_11.dbo.BuyingGroup BG --Used to identify which MSO
ON BGM.GroupID = BG.GroupID
JOIN crm_10.dbo.weekly_cust WC
ON wc.pid = bgm.CustomerID
ORDER BY GroupID
DROP TABLE #TempAging
DROP TABLE #AgingSummary
/*****************************beginning OF AGING**********************************************************************************/
CREATE TABLE #tempaging
(
[type] [VARCHAR](20) NOT NULL
,[typeid] [SMALLINT] NOT NULL
,[id] [BIGINT] NOT NULL
,[payterm] [VARCHAR](20) NULL
,[customerid] [BIGINT] NOT NULL
,[rpid] [BIGINT] NULL
,[date] [SMALLDATETIME] NOT NULL
,[amount] [DECIMAL](8, 2) NOT NULL
,[balance] [DECIMAL](8, 2) NOT NULL
,[ref] [VARCHAR](30) NULL
,[companyid] [SMALLINT] NOT NULL
)
------------------------------------------------------------------------------------------
-----SALESORDERS --delete from #tempaging
INSERT INTO #tempaging
SELECT t.[type]
,t.[typeid]
,t.[id]
,t.payterm
,t.customerid
,t.rpid
,t.[date]
,t.amount
,t.balance
,t.ref
,t.companyid
FROM (
-- sos and unconverted credit sos
SELECT CASE
WHEN s.aramt >= 0 THEN 'SO'
ELSE 'Credit'
END AS [type]
,5 [typeid]
,s.so [id]
,s.payterms [payterm]
,s.pid customerid
,s.rpid
,s.saledate [date]
,s.aramt [amount]
,s.aramt - Isnull(Sum(pa.amountallocated), 0) [balance]
,s.po ref
,sc.collectorcompanyid companyid
FROM salesandquotes_10.dbo.som s (nolock)
INNER JOIN accounting_11.dbo.salescollector sc (nolock)
ON sc.so = s.so
AND sc.sotypeid = 1
INNER JOIN #Pids c (nolock)
ON c.customerid = s.pid
--inner join wizmo2005_10.dbo.payterms pt (nolock) on pt.paytermid=c.paytermid
LEFT JOIN accounting_11.dbo.paymentallocation pa (nolock)
ON pa.entitytypeid = 5
AND pa.entityid = s.so
AND pa.isvalid = 1
AND dateallocated < CAST((YEAR(DATEADD(Year,0,GETDATE()))) as VARCHAR(4)) + '-' + CAST(MONTH(DATEADD(Day,0,GETDATE())) AS VARCHAR(2)) + + '-01'
WHERE saledate BETWEEN CAST((YEAR(DATEADD(Year,-2,GETDATE()))) as VARCHAR(4)) + '-' + CAST(MONTH(DATEADD(Day,0,GETDATE())) AS VARCHAR(2)) + + '-01' AND
CAST((YEAR(DATEADD(Year,0,GETDATE()))) as VARCHAR(4)) + '-' + CAST(MONTH(DATEADD(Day,0,GETDATE())) AS VARCHAR(2)) + + '-01'
AND NOT EXISTS (SELECT paymentid
FROM accounting_11.dbo.payment (nolock)
WHERE paymenttypeid = 4
AND authnumber = CONVERT(VARCHAR, s.so)
AND isvalid = 1)
GROUP BY s.so
,s.payterms
,s.pid
,s.rpid
,s.saledate
,s.aramt
,s.po
,sc.collectorcompanyid
HAVING ( s.aramt - Isnull(Sum(pa.amountallocated), 0) ) <> 0) t;
-------CREDITS
INSERT INTO #tempaging
SELECT t.[type]
,t.[typeid]
,t.[id]
,t.payterm
,t.customerid
,t.rpid
,t.[date]
,t.amount
,t.balance
,t.ref
,t.companyid
FROM (
-- credits
SELECT 'Credit' [type]
,5 typeid
,s.so [id]
,s.payterms [payterm]
,p.customerid
,p.rpid
,p.datecreated [date]
,-p.amount [amount]
,-( p.amount - Isnull(Sum(pa.amountallocated), 0) ) [balance]
,s.po ref
,sc.collectorcompanyid companyid
FROM accounting_11.dbo.payment p (nolock)
INNER JOIN salesandquotes_10.dbo.som s (nolock)
ON s.so = p.authnumber
INNER JOIN accounting_11.dbo.salescollector sc (nolock)
ON sc.so = s.so
AND sc.sotypeid = 1
INNER JOIN #Pids c (nolock)
ON c.customerid = s.pid
--inner join wizmo2005_10.dbo.payterms pt (nolock) on pt.paytermid=c.paytermid
LEFT JOIN accounting_11.dbo.paymentallocation pa (nolock)
ON pa.paymentid = p.paymentid
AND pa.isvalid = 1
AND pa.dateallocated < CAST((YEAR(DATEADD(Year,0,GETDATE()))) as VARCHAR(4)) + '-' + CAST(MONTH(DATEADD(Day,0,GETDATE())) AS VARCHAR(2)) + + '-01'
WHERE p.paymenttypeid = 4
AND p.isvalid = 1
AND p.datecreated BETWEEN CAST((YEAR(DATEADD(Year,-2,GETDATE()))) as VARCHAR(4)) + '-' + CAST(MONTH(DATEADD(Day,0,GETDATE())) AS VARCHAR(2)) + + '-01' AND
CAST((YEAR(DATEADD(Year,0,GETDATE()))) as VARCHAR(4)) + '-' + CAST(MONTH(DATEADD(Day,0,GETDATE())) AS VARCHAR(2)) + + '-01'
GROUP BY s.so
,s.payterms
,p.customerid
,p.rpid
,p.datecreated
,p.amount
,s.po
,sc.collectorcompanyid
HAVING ( p.amount - Isnull(Sum(pa.amountallocated), 0) ) <> 0) t;
----------------------------------------------------------------------------------------
CREATE CLUSTERED INDEX [ix_tempaging_customerid]
ON [#tempaging]([customerid])
WITH FILLFACTOR=75 ON [primary]
INSERT INTO #tempaging
SELECT t.[type]
,t.[typeid]
,t.[id]
,t.payterm
,t.customerid
,t.rpid
,t.[date]
,t.amount
,t.balance
,t.ref
,t.companyid
FROM (
-- fees
SELECT ft.description [type]
,7 typeid
,f.feeid [id]
,NULL [payterm]
,f.customerid
,f.rpid
,f.datecreated [date]
,f.amount
,f.amount - Isnull(Sum(pa.amountallocated), 0) [balance]
,CONVERT(VARCHAR, f.feeid) ref
,f.companyid
FROM accounting_11.dbo.fee f (nolock)
INNER JOIN accounting_11.dbo.feetype ft (nolock)
ON f.feetypeid = ft.feetypeid
INNER JOIN #Pids c (nolock)
ON c.customerid = f.customerid
--and c.customertypeid<>57
--inner join wizmo2005_10.dbo.payterms pt (nolock) on pt.paytermid=c.paytermid
LEFT JOIN accounting_11.dbo.paymentallocation pa
ON pa.entitytypeid = 7
AND pa.entityid = f.feeid
AND pa.isvalid = 1
AND pa.dateallocated < GETDATE()
WHERE Isnull(f.rpid, 0) = 0
AND f.datecreated BETWEEN CAST((YEAR(DATEADD(Year,-2,GETDATE()))) as VARCHAR(4)) + '-' + CAST(MONTH(DATEADD(Day,0,GETDATE())) AS VARCHAR(2)) + + '-01' AND
CAST((YEAR(DATEADD(Year,0,GETDATE()))) as VARCHAR(4)) + '-' + CAST(MONTH(DATEADD(Day,0,GETDATE())) AS VARCHAR(2)) + + '-01'
GROUP BY ft.description
,f.feeid
,f.customerid
,f.rpid
,f.datecreated
,f.amount
,f.companyid
HAVING ( f.amount - Isnull(Sum(pa.amountallocated), 0) ) <> 0
UNION ALL
-- overpayments
SELECT ptype.description [type]
,2 typeid
,p.paymentid [id]
,NULL payterm
,p.customerid
,p.rpid
,p.datecreated [date]
,-p.amount amount
,-( p.amount - Isnull(Sum(pa.amountallocated), 0) ) balance
,Isnull(p.authnumber, '') ref
,p.companyid
FROM accounting_11.dbo.payment p (nolock)
INNER JOIN accounting_11.dbo.paymenttype ptype (nolock)
ON p.paymenttypeid = ptype.paymenttypeid
INNER JOIN #Pids c (nolock)
ON c.customerid = p.customerid
--and c.customertypeid <> 57
--inner join wizmo2005_10.dbo.payterms pt (nolock) on pt.paytermid=c.paytermid
LEFT JOIN accounting_11.dbo.paymentallocation pa (nolock)
ON pa.paymentid = p.paymentid
AND pa.isvalid = 1
AND pa.dateallocated < GETDATE()
WHERE p.paymenttypeid IN ( 1, 3, 9, 12 )
AND p.isvalid = 1
AND Isnull(p.whse, 0) <> 34
AND Isnull(p.rpid, 0) = 0
AND p.datecreated BETWEEN CAST((YEAR(DATEADD(Year,-2,GETDATE()))) as VARCHAR(4)) + '-' + CAST(MONTH(DATEADD(Day,0,GETDATE())) AS VARCHAR(2)) + + '-01' AND
CAST((YEAR(DATEADD(Year,0,GETDATE()))) as VARCHAR(4)) + '-' + CAST(MONTH(DATEADD(Day,0,GETDATE())) AS VARCHAR(2)) + + '-01'
AND ( EXISTS (SELECT customerid
FROM #tempaging
WHERE customerid = p.customerid) )
GROUP BY ptype.description
,p.paymentid
,p.customerid
,p.rpid
,p.datecreated
,p.amount
,p.authnumber
,p.companyid
HAVING ( p.amount - Isnull(Sum(pa.amountallocated), 0) ) <> 0) t;
DROP TABLE #AgingSummary
SELECT customerid
,Sum(ta.amount) AS TotalAmount
,Sum(CASE
WHEN balance = amount AND Datediff(day, [date], CAST((YEAR(DATEADD(Year,0,GETDATE()))) as VARCHAR(4)) + '-' + CAST(MONTH(DATEADD(Day,0,GETDATE())) AS VARCHAR(2)) + + '-01' ) <= 30 THEN balance
ELSE 0
END) Balance_30
,Sum(CASE
WHEN balance = amount AND Datediff(day, [date], CAST((YEAR(DATEADD(Year,0,GETDATE()))) as VARCHAR(4)) + '-' + CAST(MONTH(DATEADD(Day,0,GETDATE())) AS VARCHAR(2)) + + '-01' ) BETWEEN 31 AND 60 THEN balance
ELSE 0
END) Balance_31_60
,Sum(CASE
WHEN balance = amount AND Datediff(day, [date], CAST((YEAR(DATEADD(Year,0,GETDATE()))) as VARCHAR(4)) + '-' + CAST(MONTH(DATEADD(Day,0,GETDATE())) AS VARCHAR(2)) + + '-01' ) BETWEEN 61 AND 90 THEN balance
ELSE 0
END) Balance_61_90
,Sum(CASE
WHEN balance = amount AND Datediff(day, [date], CAST((YEAR(DATEADD(Year,0,GETDATE()))) as VARCHAR(4)) + '-' + CAST(MONTH(DATEADD(Day,0,GETDATE())) AS VARCHAR(2)) + + '-01' ) > 90 THEN balance
ELSE 0
END) Balance_91Plus
--totalSO = SUM(CASE WHEN ta.TYPE = 'so' THEN Amount ELSE 0 END),
--totalSOBalance = SUM(CASE WHEN ta.TYPE = 'so' THEN Balance ELSE 0 END),
--totalFinanceCharge = SUM(CASE WHEN ta.TYPE = 'so' THEN Amount ELSE 0 END),
--totalFinanceCHargeBalance = SUM(CASE WHEN ta.TYPE = 'so' THEN Balance ELSE 0 END),
INTO #agingsummary
FROM #tempaging ta
GROUP BY customerid