USP_POSTTOGLPROCESS_SUMMARIZE
Returns posting
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | |
@TEMPTABLE | nvarchar(255) | IN |
Definition
Copy
CREATE proc dbo.USP_POSTTOGLPROCESS_SUMMARIZE
(@ID uniqueidentifier,
@TEMPTABLE nvarchar(255)
)
as
set nocount on
declare @WORKTABLE table
(
GLTRANSACTIONID uniqueidentifier,
ACCOUNTSTRING nvarchar(100),
POSTDATE datetime,
TRANTYPE nvarchar(1),
DEBITCREDIT nvarchar(1),
AMOUNT money,
JOURNAL nvarchar(255),
REFERENCE nvarchar(255),
BATCH uniqueidentifier,
PROJECT nvarchar(100)
)
declare @REVENUEPOSTMETHOD tinyint
declare @REVENUEREFERENCE nvarchar(255)
declare @CASHPOSTMETHOD tinyint
declare @CASHREFERENCE nvarchar(255)
declare @RECEIVABLEPOSTMETHOD tinyint
declare @RECEIVABLEREFERENCE nvarchar(255)
declare @SUMMARIZEDATE tinyint
declare @SUMMARIZEDATESQL nvarchar(20)
declare @DEPOSITSUMMARIZED nvarchar(20) = 'Summarized Deposit'
declare @BENEFITSUMMARIZED nvarchar(20) = 'Summarized Benefits'
select
@REVENUEPOSTMETHOD=REVENUEPOSTMETHODCODE, @REVENUEREFERENCE=isnull(nullif(REVENUEREFERENCE,''),'Summarized Revenue'),
@CASHPOSTMETHOD=CASHPOSTMETHODCODE, @CASHREFERENCE=isnull(nullif(CASHREFERENCE,''),'Summarized Cash'),
@RECEIVABLEPOSTMETHOD=ARPOSTMETHODCODE, @RECEIVABLEREFERENCE=isnull(nullif(ARREFERENCE,''),'Summarized Receivables'),
@SUMMARIZEDATE=SUMMARIZECODE from POSTTOGLPROCESSDETAIL where id = @ID
if @REVENUEPOSTMETHOD = 0 and @CASHPOSTMETHOD = 0 and @RECEIVABLEPOSTMETHOD = 0
set @SUMMARIZEDATE = 0
if @SUMMARIZEDATE = 0 -- by Post Date
begin
if @REVENUEPOSTMETHOD = 0 -- Detail
insert into @WORKTABLE (GLTRANSACTIONID,ACCOUNTSTRING,POSTDATE,TRANTYPE,DEBITCREDIT,AMOUNT,JOURNAL,REFERENCE,BATCH,PROJECT)
select a.GLTRANSACTIONID,b.ACCOUNT,isnull(adj.postdate, isnull(f.postdate, b.postdate)),'R',case d.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,b.AMOUNT,JOURNAL,left(CASE WHEN a.ISREVERSAL = 0 THEN '' ELSE 'Reversal - ' END + b.REFERENCE, 255),BATCHID,b.PROJECT
from #Pegadog as a
join dbo.GLTRANSACTION as b on a.GLTRANSACTIONID = b.ID
join dbo.REVENUEGLDISTRIBUTION as c on c.GLTRANSACTIONID = b.ID
join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on c.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BANKACCOUNTDEPOSITPAYMENT as e on e.ID = c.REVENUEID
left outer join dbo.BANKACCOUNTTRANSACTION f on f.ID = e.DEPOSITID
left outer join dbo.ADJUSTMENT adj on adj.REVENUEID = c.REVENUEID and adj.POSTSTATUSCODE = 1
where a.ISREVERSAL = 0 and d.TRANSACTIONTYPECODE = 1 and ((d.REVENUETRANSACTIONTYPECODE = 0 and d.APPLICATIONCODE in (0,1,3,4,5,6,7,11))
or (d.REVENUETRANSACTIONTYPECODE = 1 and d.APPLICATIONCODE = 0)
--or (d.REVENUETRANSACTIONTYPECODE = 4 and d.APPLICATIONCODE = 0)
or (d.REVENUETRANSACTIONTYPECODE = 201 and d.APPLICATIONCODE = 201))
union all
select a.GLTRANSACTIONID,b.ACCOUNT,isnull(adj.postdate, b.postdate),'R',case d.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,b.AMOUNT,JOURNAL,left(CASE WHEN a.ISREVERSAL = 0 THEN '' ELSE 'Reversal - ' END + b.REFERENCE, 255) ,BATCHID,b.PROJECT
from #Pegadog as a
join dbo.GLTRANSACTION as b on a.GLTRANSACTIONID = b.ID
join dbo.BENEFITGLDISTRIBUTION as c on c.GLTRANSACTIONID = b.ID
join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on c.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BENEFITADJUSTMENT adj on adj.REVENUEID = c.REVENUEID and adj.POSTSTATUSCODE = 1
where a.ISREVERSAL = 0
else
if @REVENUEPOSTMETHOD = 1 -- Summary
insert into @WORKTABLE (GLTRANSACTIONID,ACCOUNTSTRING,POSTDATE,TRANTYPE,DEBITCREDIT,AMOUNT,JOURNAL,REFERENCE,BATCH,PROJECT)
select '99999999-9999-9999-9999-999999999999', b.ACCOUNT,
isnull(adj.postdate, isnull(f.postdate, isnull(h.postdate, b.postdate))),
'R',case b.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,
sum(b.AMOUNT),JOURNAL,@REVENUEREFERENCE,null,''
from #Pegadog as a
left outer join dbo.GLTRANSACTION as b on a.GLTRANSACTIONID = b.ID
left outer join dbo.REVENUEGLDISTRIBUTION as c on c.GLTRANSACTIONID = b.ID
left outer join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on c.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BANKACCOUNTDEPOSITPAYMENT as e on e.ID = c.REVENUEID
left outer join dbo.BANKACCOUNTDEPOSITCORRECTIONGLDISTRIBUTION as j on j.GLTRANSACTIONID = b.ID
left outer join dbo.BANKACCOUNTDEPOSITCORRECTION as k on k.ID = j.BANKACCOUNTDEPOSITCORRECTIONID
left outer join dbo.BANKACCOUNTTRANSACTION f on f.ID = e.DEPOSITID or f.ID = k.DEPOSITID
left outer join dbo.ADJUSTMENT adj on adj.REVENUEID = c.REVENUEID and adj.POSTSTATUSCODE = 1
left outer join dbo.BANKACCOUNTTRANSACTIONGLDISTRIBUTION as g on g.GLTRANSACTIONID = b.ID
left outer join dbo.BANKACCOUNTTRANSACTION as h on h.ID = g.BANKACCOUNTTRANSACTIONID
where a.ISREVERSAL = 0 and b.TRANSACTIONTYPECODE = 1 and (((d.REVENUETRANSACTIONTYPECODE = 0 and d.APPLICATIONCODE in (0,1,3,4,5,6,7,11))
or (d.REVENUETRANSACTIONTYPECODE = 1 and d.APPLICATIONCODE = 0)
--or (d.REVENUETRANSACTIONTYPECODE = 4 and d.APPLICATIONCODE = 0)
or (d.REVENUETRANSACTIONTYPECODE = 201 and d.APPLICATIONCODE = 201))
or h.ID is not null or k.ID is not null)
group by b.ACCOUNT,isnull(adj.postdate, isnull(f.postdate, isnull(h.postdate, b.postdate))),b.TRANSACTIONTYPECODE,JOURNAL
union all
select '99999999-9999-9999-9999-999999999999', b.ACCOUNT,
isnull(adj.postdate, b.postdate),
'R',case b.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,
sum(b.AMOUNT),JOURNAL,@BENEFITSUMMARIZED,null,''
from #Pegadog as a
join dbo.GLTRANSACTION as b on a.GLTRANSACTIONID = b.ID
join dbo.BENEFITGLDISTRIBUTION as c on c.GLTRANSACTIONID = b.ID
join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on c.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BENEFITADJUSTMENT adj on adj.REVENUEID = c.REVENUEID and adj.POSTSTATUSCODE = 1
where a.ISREVERSAL = 0
group by b.ACCOUNT,isnull(adj.postdate,b.postdate),b.TRANSACTIONTYPECODE,JOURNAL
else -- Summary by application type
insert into @WORKTABLE (GLTRANSACTIONID,ACCOUNTSTRING,POSTDATE,TRANTYPE,DEBITCREDIT,AMOUNT,JOURNAL,REFERENCE,BATCH,PROJECT)
select '99999999-9999-9999-9999-999999999999', b.ACCOUNT,
isnull(adj.postdate, isnull(f.postdate, isnull(h.postdate, b.postdate))),
'R',case d.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,
sum(b.AMOUNT),JOURNAL,
@REVENUEREFERENCE + case when d.APPLICATION is null then '' else ' - ' + d.APPLICATION end
,null,''
from #Pegadog as a
left outer join dbo.GLTRANSACTION as b on a.GLTRANSACTIONID = b.ID
left outer join dbo.REVENUEGLDISTRIBUTION as c on c.GLTRANSACTIONID = b.ID
left outer join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on c.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BANKACCOUNTDEPOSITPAYMENT as e on e.ID = c.REVENUEID
left outer join dbo.BANKACCOUNTDEPOSITCORRECTIONGLDISTRIBUTION as j on j.GLTRANSACTIONID = b.ID
left outer join dbo.BANKACCOUNTDEPOSITCORRECTION as k on k.ID = j.BANKACCOUNTDEPOSITCORRECTIONID
left outer join dbo.BANKACCOUNTTRANSACTION f on f.ID = e.DEPOSITID or f.ID = k.DEPOSITID
left outer join dbo.ADJUSTMENT adj on adj.REVENUEID = c.REVENUEID and adj.POSTSTATUSCODE = 1
left outer join dbo.BANKACCOUNTTRANSACTIONGLDISTRIBUTION as g on g.GLTRANSACTIONID = b.ID
left outer join dbo.BANKACCOUNTTRANSACTION as h on h.ID = g.BANKACCOUNTTRANSACTIONID
where a.ISREVERSAL = 0 and b.TRANSACTIONTYPECODE = 1 and (((d.REVENUETRANSACTIONTYPECODE = 0 and d.APPLICATIONCODE in (0,1,3,4,5,6,7,11))
or (d.REVENUETRANSACTIONTYPECODE = 1 and d.APPLICATIONCODE = 0)
--or (d.REVENUETRANSACTIONTYPECODE = 4 and d.APPLICATIONCODE = 0)
or (d.REVENUETRANSACTIONTYPECODE = 201 and d.APPLICATIONCODE = 201))
or h.ID is not null or k.ID is not null)
group by b.ACCOUNT,isnull(adj.postdate, isnull(f.postdate, isnull(h.postdate, b.postdate))),d.TRANSACTIONTYPECODE,d.APPLICATION,JOURNAL
union all
select '99999999-9999-9999-9999-999999999999', b.ACCOUNT,
isnull(adj.postdate, b.postdate),
'R',case d.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,
sum(b.AMOUNT),JOURNAL,
@BENEFITSUMMARIZED
,null,''
from #Pegadog as a
join dbo.GLTRANSACTION as b on a.GLTRANSACTIONID = b.ID
join dbo.BENEFITGLDISTRIBUTION as c on c.GLTRANSACTIONID = b.ID
join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on c.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BENEFITADJUSTMENT adj on adj.REVENUEID = c.REVENUEID and adj.POSTSTATUSCODE = 1
where a.ISREVERSAL = 0
group by b.ACCOUNT,isnull(adj.postdate, b.postdate),d.TRANSACTIONTYPECODE,JOURNAL
update #Pegadog set ISUSED = 1 where GLTRANSACTIONID in ((select a.GLTRANSACTIONID from #Pegadog as a
left outer join dbo.GLTRANSACTION as b on a.GLTRANSACTIONID = b.ID
left outer join dbo.REVENUEGLDISTRIBUTION as c on c.GLTRANSACTIONID = b.ID
left outer join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on c.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BANKACCOUNTTRANSACTIONGLDISTRIBUTION as g on g.GLTRANSACTIONID = b.ID and @REVENUEPOSTMETHOD != 0
left outer join dbo.BANKACCOUNTTRANSACTION as h on h.ID = g.BANKACCOUNTTRANSACTIONID and @REVENUEPOSTMETHOD != 0
left outer join dbo.BANKACCOUNTDEPOSITCORRECTIONGLDISTRIBUTION as j on j.GLTRANSACTIONID = b.ID and @REVENUEPOSTMETHOD != 0
left outer join dbo.BANKACCOUNTDEPOSITCORRECTION as k on k.ID = j.BANKACCOUNTDEPOSITCORRECTIONID and @REVENUEPOSTMETHOD != 0
where a.ISREVERSAL = 0 and b.TRANSACTIONTYPECODE = 1 and (((d.REVENUETRANSACTIONTYPECODE = 0 and d.APPLICATIONCODE in (0,1,3,4,5,6,7,11))
or (d.REVENUETRANSACTIONTYPECODE = 1 and d.APPLICATIONCODE = 0)
or (d.REVENUETRANSACTIONTYPECODE = 201 and d.APPLICATIONCODE = 201))
or h.ID is not null or k.ID is not null))
union all
(select a.GLTRANSACTIONID from #Pegadog as a
inner join dbo.BENEFITGLDISTRIBUTION as c on c.GLTRANSACTIONID = a.GLTRANSACTIONID
where a.ISREVERSAL = 0 ))
if @CASHPOSTMETHOD = 0 -- Detail
insert into @WORKTABLE (GLTRANSACTIONID,ACCOUNTSTRING,POSTDATE,TRANTYPE,DEBITCREDIT,AMOUNT,JOURNAL,REFERENCE,BATCH,PROJECT)
select a.GLTRANSACTIONID,b.ACCOUNT,isnull(adj.postdate, isnull(f.postdate, b.postdate)),'R',case d.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,b.AMOUNT,JOURNAL,left(CASE WHEN a.ISREVERSAL = 0 THEN '' ELSE 'Reversal - ' END + b.REFERENCE, 255),BATCHID,b.PROJECT
from #Pegadog as a
join dbo.GLTRANSACTION as b on a.GLTRANSACTIONID = b.ID
join dbo.REVENUEGLDISTRIBUTION as c on c.GLTRANSACTIONID = b.ID
join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on c.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BANKACCOUNTDEPOSITPAYMENT as e on e.ID = c.REVENUEID
left outer join dbo.BANKACCOUNTTRANSACTION f on f.ID = e.DEPOSITID
left outer join dbo.ADJUSTMENT adj on adj.REVENUEID = c.REVENUEID and adj.POSTSTATUSCODE = 1
where a.ISREVERSAL = 0 and ((d.REVENUETRANSACTIONTYPECODE = 0 and d.APPLICATIONCODE in (0,1,2,3,4,5,6,7,8,11) and d.TRANSACTIONTYPECODE = 0)
or (d.REVENUETRANSACTIONTYPECODE = 200 and d.APPLICATIONCODE = 200)
or (d.REVENUETRANSACTIONTYPECODE = 201 and d.APPLICATIONCODE = 201 and d.TRANSACTIONTYPECODE = 0))
else
if @CASHPOSTMETHOD = 1 -- Summary
insert into @WORKTABLE (GLTRANSACTIONID,ACCOUNTSTRING,POSTDATE,TRANTYPE,DEBITCREDIT,AMOUNT,JOURNAL,REFERENCE,BATCH,PROJECT)
select '99999999-9999-9999-9999-999999999999', b.ACCOUNT,
isnull(adj.postdate, isnull(f.postdate, isnull(h.postdate,b.postdate))), 'R',case b.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,
sum(b.AMOUNT),JOURNAL,@CASHREFERENCE,null,''
from #Pegadog as a
left outer join dbo.GLTRANSACTION as b on a.GLTRANSACTIONID = b.ID
left outer join dbo.REVENUEGLDISTRIBUTION as c on c.GLTRANSACTIONID = b.ID
left outer join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on c.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BANKACCOUNTDEPOSITPAYMENT as e on e.ID = c.REVENUEID
left outer join dbo.BANKACCOUNTDEPOSITCORRECTIONGLDISTRIBUTION as j on j.GLTRANSACTIONID = b.ID
left outer join dbo.BANKACCOUNTDEPOSITCORRECTION as k on k.ID = j.BANKACCOUNTDEPOSITCORRECTIONID
left outer join dbo.BANKACCOUNTTRANSACTION f on f.ID = e.DEPOSITID or f.ID = k.DEPOSITID
left outer join dbo.ADJUSTMENT adj on adj.REVENUEID = c.REVENUEID and adj.POSTSTATUSCODE = 1
left outer join dbo.BANKACCOUNTTRANSACTIONGLDISTRIBUTION as g on g.GLTRANSACTIONID = b.ID
left outer join dbo.BANKACCOUNTTRANSACTION as h on h.ID = g.BANKACCOUNTTRANSACTIONID
where a.ISREVERSAL = 0 and (((d.REVENUETRANSACTIONTYPECODE = 0 and d.APPLICATIONCODE in (0,1,2,3,4,5,6,7,8,11) and d.TRANSACTIONTYPECODE = 0)
or (d.REVENUETRANSACTIONTYPECODE = 200 and d.APPLICATIONCODE = 200)
or (d.REVENUETRANSACTIONTYPECODE = 201 and d.APPLICATIONCODE = 201 and d.TRANSACTIONTYPECODE = 0))
or ((h.ID is not null or k.ID is not null) and b.TRANSACTIONTYPECODE = 0))
group by b.ACCOUNT,isnull(adj.postdate, isnull(f.postdate, isnull(h.postdate,b.postdate))),b.TRANSACTIONTYPECODE,JOURNAL
else -- Summary by deposit
insert into @WORKTABLE (GLTRANSACTIONID,ACCOUNTSTRING,POSTDATE,TRANTYPE,DEBITCREDIT,AMOUNT,JOURNAL,REFERENCE,BATCH,PROJECT)
select '99999999-9999-9999-9999-999999999999', b.ACCOUNT,
isnull(adj.postdate, isnull(f.postdate, isnull(h.postdate, b.postdate))), 'R',case b.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,
sum(b.AMOUNT),JOURNAL,
case when e.DEPOSITID IS null then @CASHREFERENCE else @DEPOSITSUMMARIZED + ' - ' + dbo.UFN_BANKACCOUNT_GETDEPOSITNAME(e.DEPOSITID)end ,
null,''
from #Pegadog as a
left outer join dbo.GLTRANSACTION as b on a.GLTRANSACTIONID = b.ID
left outer join dbo.REVENUEGLDISTRIBUTION as c on c.GLTRANSACTIONID = b.ID
left outer join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on c.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BANKACCOUNTDEPOSITPAYMENT as e on c.REVENUEID = e.ID
left outer join dbo.BANKACCOUNTDEPOSITCORRECTIONGLDISTRIBUTION as j on j.GLTRANSACTIONID = b.ID
left outer join dbo.BANKACCOUNTDEPOSITCORRECTION as k on k.ID = j.BANKACCOUNTDEPOSITCORRECTIONID
left outer join dbo.BANKACCOUNTTRANSACTION f on f.ID = e.DEPOSITID or f.ID = k.DEPOSITID
left outer join dbo.ADJUSTMENT adj on adj.REVENUEID = c.REVENUEID and adj.POSTSTATUSCODE = 1
left outer join dbo.BANKACCOUNTTRANSACTIONGLDISTRIBUTION as g on g.GLTRANSACTIONID = b.ID
left outer join dbo.BANKACCOUNTTRANSACTION as h on h.ID = g.BANKACCOUNTTRANSACTIONID
where a.ISREVERSAL = 0 and (((d.REVENUETRANSACTIONTYPECODE = 0 and d.APPLICATIONCODE in (0,1,2,3,4,5,6,7,8,11) and d.TRANSACTIONTYPECODE = 0)
or (d.REVENUETRANSACTIONTYPECODE = 200 and d.APPLICATIONCODE = 200)
or (d.REVENUETRANSACTIONTYPECODE = 201 and d.APPLICATIONCODE = 201 and d.TRANSACTIONTYPECODE = 0))
or ((h.ID is not null or k.ID is not null) and b.TRANSACTIONTYPECODE = 0))
group by b.ACCOUNT,isnull(adj.postdate, isnull(f.postdate, isnull(h.postdate, b.postdate))),b.TRANSACTIONTYPECODE,JOURNAL,e.DEPOSITID
update #Pegadog set ISUSED = 1 where GLTRANSACTIONID in (select a.GLTRANSACTIONID from #Pegadog as a
left outer join dbo.GLTRANSACTION as b on a.GLTRANSACTIONID = b.ID
left outer join dbo.REVENUEGLDISTRIBUTION as c on c.GLTRANSACTIONID = b.ID
left outer join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on c.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BANKACCOUNTTRANSACTIONGLDISTRIBUTION as g on g.GLTRANSACTIONID = b.ID and @CASHPOSTMETHOD != 0
left outer join dbo.BANKACCOUNTTRANSACTION as h on h.ID = g.BANKACCOUNTTRANSACTIONID and @CASHPOSTMETHOD != 0
left outer join dbo.BANKACCOUNTDEPOSITCORRECTIONGLDISTRIBUTION as j on j.GLTRANSACTIONID = b.ID and @CASHPOSTMETHOD != 0
left outer join dbo.BANKACCOUNTDEPOSITCORRECTION as k on k.ID = j.BANKACCOUNTDEPOSITCORRECTIONID and @CASHPOSTMETHOD != 0
where a.ISREVERSAL = 0 and (((d.REVENUETRANSACTIONTYPECODE = 0 and d.APPLICATIONCODE in (0,1,2,3,4,5,6,7,8,11) and d.TRANSACTIONTYPECODE = 0)
or (d.REVENUETRANSACTIONTYPECODE = 200 and d.APPLICATIONCODE = 200)
or (d.REVENUETRANSACTIONTYPECODE = 201 and d.APPLICATIONCODE = 201 and d.TRANSACTIONTYPECODE = 0)))
or ((h.ID is not null or k.ID is not null) and b.TRANSACTIONTYPECODE = 0))
if @RECEIVABLEPOSTMETHOD = 0 -- Detail
insert into @WORKTABLE (GLTRANSACTIONID,ACCOUNTSTRING,POSTDATE,TRANTYPE,DEBITCREDIT,AMOUNT,JOURNAL,REFERENCE,BATCH,PROJECT)
select a.GLTRANSACTIONID,b.ACCOUNT,isnull(adj.postdate, isnull(f.postdate, b.postdate)),'R',case d.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,b.AMOUNT,JOURNAL,left(CASE WHEN a.ISREVERSAL = 0 THEN '' ELSE 'Reversal - ' END + b.REFERENCE, 255),BATCHID,b.PROJECT
from #Pegadog as a
join dbo.GLTRANSACTION as b on a.GLTRANSACTIONID = b.ID
join dbo.REVENUEGLDISTRIBUTION as c on c.GLTRANSACTIONID = b.ID
join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on c.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BANKACCOUNTDEPOSITPAYMENT as e on c.REVENUEID = e.ID
left outer join dbo.BANKACCOUNTTRANSACTION f on f.ID = e.DEPOSITID
left outer join dbo.ADJUSTMENT adj on adj.REVENUEID = c.REVENUEID and adj.POSTSTATUSCODE = 1
where a.ISREVERSAL = 0 and ((d.REVENUETRANSACTIONTYPECODE = 1 and d.APPLICATIONCODE = 0 and d.TRANSACTIONTYPECODE = 0 )
--or (d.REVENUETRANSACTIONTYPECODE = 4 and d.APPLICATIONCODE = 0 and d.TRANSACTIONTYPECODE = 0 )
or (d.REVENUETRANSACTIONTYPECODE = 5 and d.APPLICATIONCODE in (0,9,5) and d.TRANSACTIONTYPECODE = 0)
or (d.REVENUETRANSACTIONTYPECODE = 0 and d.APPLICATIONCODE in (2,8,10) and d.TRANSACTIONTYPECODE = 1)
or (d.REVENUETRANSACTIONTYPECODE = 1 and d.APPLICATIONCODE = 0 and d.TRANSACTIONTYPECODE = 1 and PAYMENTMETHODCODE = 205))
else -- Summary
insert into @WORKTABLE (GLTRANSACTIONID,ACCOUNTSTRING,POSTDATE,TRANTYPE,DEBITCREDIT,AMOUNT,JOURNAL,REFERENCE,BATCH,PROJECT)
select '99999999-9999-9999-9999-999999999999', b.ACCOUNT,
isnull(adj.postdate, isnull(f.postdate, b.postdate)),
'R',case d.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,
sum(b.AMOUNT),JOURNAL,@RECEIVABLEREFERENCE,null,''
from #Pegadog as a
join dbo.GLTRANSACTION as b on a.GLTRANSACTIONID = b.ID
join dbo.REVENUEGLDISTRIBUTION as c on c.GLTRANSACTIONID = b.ID
join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on c.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BANKACCOUNTDEPOSITPAYMENT as e on c.REVENUEID = e.ID
left outer join dbo.BANKACCOUNTTRANSACTION f on f.ID = e.DEPOSITID
left outer join dbo.ADJUSTMENT adj on adj.REVENUEID = c.REVENUEID and adj.POSTSTATUSCODE = 1
where a.ISREVERSAL = 0 and ((d.REVENUETRANSACTIONTYPECODE = 1 and d.APPLICATIONCODE = 0 and d.TRANSACTIONTYPECODE = 0 )
--or (d.REVENUETRANSACTIONTYPECODE = 4 and d.APPLICATIONCODE = 0 and d.TRANSACTIONTYPECODE = 0 )
or (d.REVENUETRANSACTIONTYPECODE = 5 and d.APPLICATIONCODE in (0,9,5) and d.TRANSACTIONTYPECODE = 0)
or (d.REVENUETRANSACTIONTYPECODE = 0 and d.APPLICATIONCODE in (2,8,10) and d.TRANSACTIONTYPECODE = 1)
or (d.REVENUETRANSACTIONTYPECODE = 1 and d.APPLICATIONCODE = 0 and d.TRANSACTIONTYPECODE = 1 and PAYMENTMETHODCODE = 205))
group by b.ACCOUNT,isnull(adj.postdate, isnull(f.postdate, b.postdate)),d.TRANSACTIONTYPECODE,JOURNAL
update #Pegadog set ISUSED = 1 where GLTRANSACTIONID in (select a.GLTRANSACTIONID from #Pegadog as a
join dbo.GLTRANSACTION as b on a.GLTRANSACTIONID = b.ID
join dbo.REVENUEGLDISTRIBUTION as c on c.GLTRANSACTIONID = b.ID
join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on c.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
where a.ISREVERSAL = 0 and ((d.REVENUETRANSACTIONTYPECODE = 1 and d.APPLICATIONCODE = 0 and d.TRANSACTIONTYPECODE = 0 )
--or (d.REVENUETRANSACTIONTYPECODE = 4 and d.APPLICATIONCODE = 0 and d.TRANSACTIONTYPECODE = 0 )
or (d.REVENUETRANSACTIONTYPECODE = 5 and d.APPLICATIONCODE in (0,9,5) and d.TRANSACTIONTYPECODE = 0)
or (d.REVENUETRANSACTIONTYPECODE = 0 and d.APPLICATIONCODE in (2,8,10) and d.TRANSACTIONTYPECODE = 1)
or (d.REVENUETRANSACTIONTYPECODE = 1 and d.APPLICATIONCODE = 0 and d.TRANSACTIONTYPECODE = 1 and PAYMENTMETHODCODE = 205)))
end
else -- by Fiscal Period
begin
if @REVENUEPOSTMETHOD = 0 -- Detail
insert into @WORKTABLE (GLTRANSACTIONID,ACCOUNTSTRING,POSTDATE,TRANTYPE,DEBITCREDIT,AMOUNT,JOURNAL,REFERENCE,BATCH,PROJECT)
select a.GLTRANSACTIONID,b.ACCOUNT,
isnull(adj.postdate, isnull(f.postdate, b.postdate)),
'R',case d.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,b.AMOUNT,JOURNAL,left(CASE WHEN a.ISREVERSAL = 0 THEN '' ELSE 'Reversal - ' END + b.REFERENCE, 255),BATCHID,b.PROJECT
from #Pegadog as a
join dbo.GLTRANSACTION as b on a.GLTRANSACTIONID = b.ID
join dbo.REVENUEGLDISTRIBUTION as c on c.GLTRANSACTIONID = b.ID
join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on c.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BANKACCOUNTDEPOSITPAYMENT as e on c.REVENUEID = e.ID
left outer join dbo.BANKACCOUNTTRANSACTION f on f.ID = e.DEPOSITID
left outer join dbo.ADJUSTMENT adj on adj.REVENUEID = c.REVENUEID and adj.POSTSTATUSCODE = 1
where a.ISREVERSAL = 0 and d.TRANSACTIONTYPECODE = 1 and ((d.REVENUETRANSACTIONTYPECODE = 0 and d.APPLICATIONCODE in (0,1,3,4,5,6,7,11))
or (d.REVENUETRANSACTIONTYPECODE = 1 and d.APPLICATIONCODE = 0)
--or (d.REVENUETRANSACTIONTYPECODE = 4 and d.APPLICATIONCODE = 0)
or (d.REVENUETRANSACTIONTYPECODE = 201 and d.APPLICATIONCODE = 201))
union all
select a.GLTRANSACTIONID,b.ACCOUNT,isnull(adj.postdate, b.postdate),'R',case d.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,b.AMOUNT,JOURNAL,left(CASE WHEN a.ISREVERSAL = 0 THEN '' ELSE 'Reversal - ' END + b.REFERENCE, 255),BATCHID,b.PROJECT
from #Pegadog as a
join dbo.GLTRANSACTION as b on a.GLTRANSACTIONID = b.ID
join dbo.BENEFITGLDISTRIBUTION as c on c.GLTRANSACTIONID = b.ID
join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on c.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BENEFITADJUSTMENT adj on adj.REVENUEID = c.REVENUEID and adj.POSTSTATUSCODE = 1
where a.ISREVERSAL = 0
else
if @REVENUEPOSTMETHOD = 1 -- Summary
insert into @WORKTABLE (GLTRANSACTIONID,ACCOUNTSTRING,POSTDATE,TRANTYPE,DEBITCREDIT,AMOUNT,JOURNAL,REFERENCE,BATCH,PROJECT)
select '99999999-9999-9999-9999-999999999999', b.ACCOUNT,
e.enddate as POSTDATE,
'R',case b.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,
sum(b.AMOUNT),JOURNAL,
@REVENUEREFERENCE
,null,''
from #Pegadog as a
left outer join dbo.GLTRANSACTION as b on a.GLTRANSACTIONID = b.ID
left outer join dbo.REVENUEGLDISTRIBUTION as c on c.GLTRANSACTIONID = b.ID
left outer join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on c.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BANKACCOUNTDEPOSITPAYMENT as f on c.REVENUEID = f.ID
left outer join dbo.BANKACCOUNTDEPOSITCORRECTIONGLDISTRIBUTION as j on j.GLTRANSACTIONID = b.ID
left outer join dbo.BANKACCOUNTDEPOSITCORRECTION as k on k.ID = j.BANKACCOUNTDEPOSITCORRECTIONID
left outer join dbo.BANKACCOUNTTRANSACTION g on g.ID = f.DEPOSITID or g.ID = k.DEPOSITID
left outer join dbo.ADJUSTMENT adj on adj.REVENUEID = c.REVENUEID and adj.POSTSTATUSCODE = 1
left outer join dbo.BANKACCOUNTTRANSACTIONGLDISTRIBUTION as h on h.GLTRANSACTIONID = b.ID
left outer join dbo.BANKACCOUNTTRANSACTION as i on i.ID = h.BANKACCOUNTTRANSACTIONID
join dbo.GLFISCALPERIOD as e on isnull(adj.postdate, isnull(g.postdate, isnull(i.postdate, b.postdate))) between e.STARTDATE and e.ENDDATE
where a.ISREVERSAL = 0 and b.TRANSACTIONTYPECODE = 1 and (((d.REVENUETRANSACTIONTYPECODE = 0 and d.APPLICATIONCODE in (0,1,3,4,5,6,7,11))
or (d.REVENUETRANSACTIONTYPECODE = 1 and d.APPLICATIONCODE = 0)
--or (d.REVENUETRANSACTIONTYPECODE = 4 and d.APPLICATIONCODE = 0)
or (d.REVENUETRANSACTIONTYPECODE = 201 and d.APPLICATIONCODE = 201))
or i.ID is not null or k.ID is not null)
group by b.ACCOUNT,e.enddate,b.TRANSACTIONTYPECODE,JOURNAL
union all
select '99999999-9999-9999-9999-999999999999', b.ACCOUNT,
e.enddate as POSTDATE,
'R',case b.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,
sum(b.AMOUNT),JOURNAL,@BENEFITSUMMARIZED,null,''
from #Pegadog as a
join dbo.GLTRANSACTION as b on a.GLTRANSACTIONID = b.ID
join dbo.BENEFITGLDISTRIBUTION as c on c.GLTRANSACTIONID = b.ID
join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on c.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BENEFITADJUSTMENT adj on adj.REVENUEID = c.REVENUEID and adj.POSTSTATUSCODE = 1
join dbo.GLFISCALPERIOD as e on isnull(adj.postdate, b.postdate) between e.STARTDATE and e.ENDDATE
where a.ISREVERSAL = 0
group by b.ACCOUNT,e.enddate,b.TRANSACTIONTYPECODE,JOURNAL
else -- Summary by application type
insert into @WORKTABLE (GLTRANSACTIONID,ACCOUNTSTRING,POSTDATE,TRANTYPE,DEBITCREDIT,AMOUNT,JOURNAL,REFERENCE,BATCH,PROJECT)
select '99999999-9999-9999-9999-999999999999', b.ACCOUNT,
e.enddate as POSTDATE,
'R',case b.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,
sum(b.AMOUNT),JOURNAL,
@REVENUEREFERENCE + case when d.APPLICATION is null then '' else ' - ' + d.APPLICATION end
,null,''
from #Pegadog as a
left outer join dbo.GLTRANSACTION as b on a.GLTRANSACTIONID = b.ID
left outer join dbo.REVENUEGLDISTRIBUTION as c on c.GLTRANSACTIONID = b.ID
left outer join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on c.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BANKACCOUNTDEPOSITPAYMENT as f on c.REVENUEID = f.ID
left outer join dbo.BANKACCOUNTDEPOSITCORRECTIONGLDISTRIBUTION as j on j.GLTRANSACTIONID = b.ID
left outer join dbo.BANKACCOUNTDEPOSITCORRECTION as k on k.ID = j.BANKACCOUNTDEPOSITCORRECTIONID
left outer join dbo.BANKACCOUNTTRANSACTION g on g.ID = f.DEPOSITID or g.ID = k.DEPOSITID
left outer join dbo.ADJUSTMENT adj on adj.REVENUEID = c.REVENUEID and adj.POSTSTATUSCODE = 1
left outer join dbo.BANKACCOUNTTRANSACTIONGLDISTRIBUTION as h on h.GLTRANSACTIONID = b.ID
left outer join dbo.BANKACCOUNTTRANSACTION as i on i.ID = h.BANKACCOUNTTRANSACTIONID
join dbo.GLFISCALPERIOD as e on isnull(adj.postdate, isnull(g.postdate, isnull(i.postdate, b.postdate))) between e.STARTDATE and e.ENDDATE
where a.ISREVERSAL = 0 and b.TRANSACTIONTYPECODE = 1 and (((d.REVENUETRANSACTIONTYPECODE = 0 and d.APPLICATIONCODE in (0,1,3,4,5,6,7,11))
or (d.REVENUETRANSACTIONTYPECODE = 1 and d.APPLICATIONCODE = 0)
--or (d.REVENUETRANSACTIONTYPECODE = 4 and d.APPLICATIONCODE = 0)
or (d.REVENUETRANSACTIONTYPECODE = 201 and d.APPLICATIONCODE = 201))
or i.ID is not null or k.ID is not null)
group by b.ACCOUNT,e.enddate,b.TRANSACTIONTYPECODE,d.APPLICATION,JOURNAL
union all
select '99999999-9999-9999-9999-999999999999', b.ACCOUNT,
e.enddate as POSTDATE,
'R',case b.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,
sum(b.AMOUNT),JOURNAL,@BENEFITSUMMARIZED
,null,''
from #Pegadog as a
join dbo.GLTRANSACTION as b on a.GLTRANSACTIONID = b.ID
join dbo.BENEFITGLDISTRIBUTION as c on c.GLTRANSACTIONID = b.ID
join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on c.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BENEFITADJUSTMENT adj on adj.REVENUEID = c.REVENUEID and adj.POSTSTATUSCODE = 1
join dbo.GLFISCALPERIOD as e on isnull(adj.postdate, b.postdate) between e.STARTDATE and e.ENDDATE
where a.ISREVERSAL = 0
group by b.ACCOUNT,e.enddate,b.TRANSACTIONTYPECODE,JOURNAL
update #Pegadog set ISUSED = 1 where GLTRANSACTIONID in ((select a.GLTRANSACTIONID from #Pegadog as a
left outer join dbo.GLTRANSACTION as b on a.GLTRANSACTIONID = b.ID
left outer join dbo.REVENUEGLDISTRIBUTION as c on c.GLTRANSACTIONID = b.ID
left outer join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on c.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BANKACCOUNTTRANSACTIONGLDISTRIBUTION as h on h.GLTRANSACTIONID = b.ID and @REVENUEPOSTMETHOD != 0
left outer join dbo.BANKACCOUNTTRANSACTION as i on i.ID = h.BANKACCOUNTTRANSACTIONID and @REVENUEPOSTMETHOD != 0
left outer join dbo.BANKACCOUNTDEPOSITCORRECTIONGLDISTRIBUTION as j on j.GLTRANSACTIONID = b.ID and @REVENUEPOSTMETHOD != 0
left outer join dbo.BANKACCOUNTDEPOSITCORRECTION as k on k.ID = j.BANKACCOUNTDEPOSITCORRECTIONID and @REVENUEPOSTMETHOD != 0
where a.ISREVERSAL = 0 and b.TRANSACTIONTYPECODE = 1 and (((d.REVENUETRANSACTIONTYPECODE = 0 and d.APPLICATIONCODE in (0,1,3,4,5,6,7,11))
or (d.REVENUETRANSACTIONTYPECODE = 1 and d.APPLICATIONCODE = 0)
--or (d.REVENUETRANSACTIONTYPECODE = 4 and d.APPLICATIONCODE = 0)
or (d.REVENUETRANSACTIONTYPECODE = 201 and d.APPLICATIONCODE = 201)))
or i.ID is not null or k.ID is not null)
union all
(select a.GLTRANSACTIONID from #Pegadog as a
inner join dbo.BENEFITGLDISTRIBUTION as c on c.GLTRANSACTIONID = a.GLTRANSACTIONID
where a.ISREVERSAL = 0 ))
if @CASHPOSTMETHOD = 0 -- Detail
insert into @WORKTABLE (GLTRANSACTIONID,ACCOUNTSTRING,POSTDATE,TRANTYPE,DEBITCREDIT,AMOUNT,JOURNAL,REFERENCE,BATCH,PROJECT)
select a.GLTRANSACTIONID,b.ACCOUNT,
isnull(adj.postdate, isnull(f.postdate, b.postdate)),
'R',case d.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,b.AMOUNT,JOURNAL,left(CASE WHEN a.ISREVERSAL = 0 THEN '' ELSE 'Reversal - ' END + b.REFERENCE, 255),BATCHID,b.PROJECT
from #Pegadog as a
join dbo.GLTRANSACTION as b on a.GLTRANSACTIONID = b.ID
join dbo.REVENUEGLDISTRIBUTION as c on c.GLTRANSACTIONID = b.ID
join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on c.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BANKACCOUNTDEPOSITPAYMENT as e on c.REVENUEID = e.ID
left outer join dbo.BANKACCOUNTTRANSACTION f on f.ID = e.DEPOSITID
left outer join dbo.ADJUSTMENT adj on adj.REVENUEID = c.REVENUEID and adj.POSTSTATUSCODE = 1
where a.ISREVERSAL = 0 and ((d.REVENUETRANSACTIONTYPECODE = 0 and d.APPLICATIONCODE in (0,1,2,3,4,5,6,7,8,11) and d.TRANSACTIONTYPECODE = 0)
or (d.REVENUETRANSACTIONTYPECODE = 200 and d.APPLICATIONCODE = 200)
or (d.REVENUETRANSACTIONTYPECODE = 201 and d.APPLICATIONCODE = 201 and d.TRANSACTIONTYPECODE = 0))
else
if @CASHPOSTMETHOD = 1 -- Summary
insert into @WORKTABLE (GLTRANSACTIONID,ACCOUNTSTRING,POSTDATE,TRANTYPE,DEBITCREDIT,AMOUNT,JOURNAL,REFERENCE,BATCH,PROJECT)
select '99999999-9999-9999-9999-999999999999', b.ACCOUNT,
e.enddate as POSTDATE,
'R',case b.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,
sum(b.AMOUNT),JOURNAL,@CASHREFERENCE,null,''
from #Pegadog as a
left outer join dbo.GLTRANSACTION as b on a.GLTRANSACTIONID = b.ID
left outer join dbo.REVENUEGLDISTRIBUTION as c on c.GLTRANSACTIONID = b.ID
left outer join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on c.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BANKACCOUNTDEPOSITPAYMENT as f on c.REVENUEID = f.ID
left outer join dbo.BANKACCOUNTDEPOSITCORRECTIONGLDISTRIBUTION as j on j.GLTRANSACTIONID = b.ID
left outer join dbo.BANKACCOUNTDEPOSITCORRECTION as k on k.ID = j.BANKACCOUNTDEPOSITCORRECTIONID
left outer join dbo.BANKACCOUNTTRANSACTION g on g.ID = f.DEPOSITID or g.ID = k.DEPOSITID
left outer join dbo.ADJUSTMENT adj on adj.REVENUEID = c.REVENUEID and adj.POSTSTATUSCODE = 1
left outer join dbo.BANKACCOUNTTRANSACTIONGLDISTRIBUTION as h on h.GLTRANSACTIONID = b.ID
left outer join dbo.BANKACCOUNTTRANSACTION as i on i.ID = h.BANKACCOUNTTRANSACTIONID
join dbo.GLFISCALPERIOD as e on isnull(adj.postdate, isnull(g.postdate, isnull(i.postdate, b.postdate))) between e.STARTDATE and e.ENDDATE
where a.ISREVERSAL = 0 and (((d.REVENUETRANSACTIONTYPECODE = 0 and d.APPLICATIONCODE in (0,1,2,3,4,5,6,7,8,11) and d.TRANSACTIONTYPECODE = 0)
or (d.REVENUETRANSACTIONTYPECODE = 200 and d.APPLICATIONCODE = 200)
or (d.REVENUETRANSACTIONTYPECODE = 201 and d.APPLICATIONCODE = 201 and d.TRANSACTIONTYPECODE = 0))
or ((i.ID is not null or k.ID is not null) and b.TRANSACTIONTYPECODE = 0))
group by b.ACCOUNT,e.enddate,b.TRANSACTIONTYPECODE,JOURNAL
else -- Summary by deposit
insert into @WORKTABLE (GLTRANSACTIONID,ACCOUNTSTRING,POSTDATE,TRANTYPE,DEBITCREDIT,AMOUNT,JOURNAL,REFERENCE,BATCH,PROJECT)
select '99999999-9999-9999-9999-999999999999', b.ACCOUNT,
e.enddate as POSTDATE,
'R',case b.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,
sum(b.AMOUNT),JOURNAL,
case when f.DEPOSITID IS null then @CASHREFERENCE else @DEPOSITSUMMARIZED + ' - ' + dbo.UFN_BANKACCOUNT_GETDEPOSITNAME(f.DEPOSITID)end ,
null,''
from #Pegadog as a
left outer join dbo.GLTRANSACTION as b on a.GLTRANSACTIONID = b.ID
left outer join dbo.REVENUEGLDISTRIBUTION as c on c.GLTRANSACTIONID = b.ID
left outer join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on c.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BANKACCOUNTDEPOSITPAYMENT as f on c.REVENUEID = f.ID
left outer join dbo.BANKACCOUNTDEPOSITCORRECTIONGLDISTRIBUTION as j on j.GLTRANSACTIONID = b.ID
left outer join dbo.BANKACCOUNTDEPOSITCORRECTION as k on k.ID = j.BANKACCOUNTDEPOSITCORRECTIONID
left outer join dbo.BANKACCOUNTTRANSACTION g on g.ID = f.DEPOSITID or g.ID = k.DEPOSITID
left outer join dbo.ADJUSTMENT adj on adj.REVENUEID = c.REVENUEID and adj.POSTSTATUSCODE = 1
left outer join dbo.BANKACCOUNTTRANSACTIONGLDISTRIBUTION as h on h.GLTRANSACTIONID = b.ID
left outer join dbo.BANKACCOUNTTRANSACTION as i on i.ID = h.BANKACCOUNTTRANSACTIONID
join dbo.GLFISCALPERIOD as e on isnull(adj.postdate, isnull(g.postdate, isnull(i.postdate, b.postdate))) between e.STARTDATE and e.ENDDATE
where a.ISREVERSAL = 0 and (((d.REVENUETRANSACTIONTYPECODE = 0 and d.APPLICATIONCODE in (0,1,2,3,4,5,6,7,8,11) and d.TRANSACTIONTYPECODE = 0)
or (d.REVENUETRANSACTIONTYPECODE = 200 and d.APPLICATIONCODE = 200)
or (d.REVENUETRANSACTIONTYPECODE = 201 and d.APPLICATIONCODE = 201 and d.TRANSACTIONTYPECODE = 0))
or ((i.ID is not null or k.ID is not null) and b.TRANSACTIONTYPECODE = 0))
group by b.ACCOUNT,e.enddate,b.TRANSACTIONTYPECODE,JOURNAL,f.DEPOSITID
update #Pegadog set ISUSED = 1 where GLTRANSACTIONID in (select a.GLTRANSACTIONID from #Pegadog as a
left outer join dbo.GLTRANSACTION as b on a.GLTRANSACTIONID = b.ID
left outer join dbo.REVENUEGLDISTRIBUTION as c on c.GLTRANSACTIONID = b.ID
left outer join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on c.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BANKACCOUNTTRANSACTIONGLDISTRIBUTION as h on h.GLTRANSACTIONID = b.ID and @CASHPOSTMETHOD != 0
left outer join dbo.BANKACCOUNTTRANSACTION as i on i.ID = h.BANKACCOUNTTRANSACTIONID and @CASHPOSTMETHOD != 0
left outer join dbo.BANKACCOUNTDEPOSITCORRECTIONGLDISTRIBUTION as j on j.GLTRANSACTIONID = b.ID and @CASHPOSTMETHOD != 0
left outer join dbo.BANKACCOUNTDEPOSITCORRECTION as k on k.ID = j.BANKACCOUNTDEPOSITCORRECTIONID and @CASHPOSTMETHOD != 0
where a.ISREVERSAL = 0 and (((d.REVENUETRANSACTIONTYPECODE = 0 and d.APPLICATIONCODE in (0,1,2,3,4,5,6,7,8,11) and d.TRANSACTIONTYPECODE = 0)
or (d.REVENUETRANSACTIONTYPECODE = 200 and d.APPLICATIONCODE = 200)
or (d.REVENUETRANSACTIONTYPECODE = 201 and d.APPLICATIONCODE = 201 and d.TRANSACTIONTYPECODE = 0)))
or ((i.ID is not null or k.ID is not null) and b.TRANSACTIONTYPECODE = 0))
if @RECEIVABLEPOSTMETHOD = 0 -- Detail
insert into @WORKTABLE (GLTRANSACTIONID,ACCOUNTSTRING,POSTDATE,TRANTYPE,DEBITCREDIT,AMOUNT,JOURNAL,REFERENCE,BATCH,PROJECT)
select a.GLTRANSACTIONID,b.ACCOUNT,
isnull(adj.postdate, isnull(f.postdate, b.postdate)),
'R',case d.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,b.AMOUNT,JOURNAL,left(CASE WHEN a.ISREVERSAL = 0 THEN '' ELSE 'Reversal - ' END + b.REFERENCE, 255),BATCHID,b.PROJECT
from #Pegadog as a
join dbo.GLTRANSACTION as b on a.GLTRANSACTIONID = b.ID
join dbo.REVENUEGLDISTRIBUTION as c on c.GLTRANSACTIONID = b.ID
join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on c.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BANKACCOUNTDEPOSITPAYMENT as e on c.REVENUEID = e.ID
left outer join dbo.BANKACCOUNTTRANSACTION f on f.ID = e.DEPOSITID
left outer join dbo.ADJUSTMENT adj on adj.REVENUEID = c.REVENUEID and adj.POSTSTATUSCODE = 1
where a.ISREVERSAL = 0 and ((d.REVENUETRANSACTIONTYPECODE = 1 and d.APPLICATIONCODE = 0 and d.TRANSACTIONTYPECODE = 0 )
--or (d.REVENUETRANSACTIONTYPECODE = 4 and d.APPLICATIONCODE = 0 and d.TRANSACTIONTYPECODE = 0 )
or (d.REVENUETRANSACTIONTYPECODE = 5 and d.APPLICATIONCODE in (0,9,5) and d.TRANSACTIONTYPECODE = 0)
or (d.REVENUETRANSACTIONTYPECODE = 0 and d.APPLICATIONCODE in (2,8,10) and d.TRANSACTIONTYPECODE = 1)
or (d.REVENUETRANSACTIONTYPECODE = 1 and d.APPLICATIONCODE = 0 and d.TRANSACTIONTYPECODE = 1 and PAYMENTMETHODCODE = 205))
else -- Summary
insert into @WORKTABLE (GLTRANSACTIONID,ACCOUNTSTRING,POSTDATE,TRANTYPE,DEBITCREDIT,AMOUNT,JOURNAL,REFERENCE,BATCH,PROJECT)
select '99999999-9999-9999-9999-999999999999', b.ACCOUNT,
e.enddate as POSTDATE,
'R',case d.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,
sum(b.AMOUNT),JOURNAL,@RECEIVABLEREFERENCE,null,''
from #Pegadog as a
join dbo.GLTRANSACTION as b on a.GLTRANSACTIONID = b.ID
join dbo.REVENUEGLDISTRIBUTION as c on c.GLTRANSACTIONID = b.ID
join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on c.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BANKACCOUNTDEPOSITPAYMENT as f on c.REVENUEID = f.ID
left outer join dbo.BANKACCOUNTTRANSACTION g on g.ID = f.DEPOSITID
left outer join dbo.ADJUSTMENT adj on adj.REVENUEID = c.REVENUEID and adj.POSTSTATUSCODE = 1
join dbo.GLFISCALPERIOD as e on isnull(adj.postdate, isnull(g.postdate, b.postdate)) between e.STARTDATE and e.ENDDATE
where a.ISREVERSAL = 0 and ((d.REVENUETRANSACTIONTYPECODE = 1 and d.APPLICATIONCODE = 0 and d.TRANSACTIONTYPECODE = 0 )
--or (d.REVENUETRANSACTIONTYPECODE = 4 and d.APPLICATIONCODE = 0 and d.TRANSACTIONTYPECODE = 0 )
or (d.REVENUETRANSACTIONTYPECODE = 5 and d.APPLICATIONCODE in (0,9,5) and d.TRANSACTIONTYPECODE = 0)
or (d.REVENUETRANSACTIONTYPECODE = 0 and d.APPLICATIONCODE in (2,8,10) and d.TRANSACTIONTYPECODE = 1)
or (d.REVENUETRANSACTIONTYPECODE = 1 and d.APPLICATIONCODE = 0 and d.TRANSACTIONTYPECODE = 1 and PAYMENTMETHODCODE = 205))
group by b.ACCOUNT,e.enddate,d.TRANSACTIONTYPECODE,d.APPLICATIONCODE,JOURNAL
update #Pegadog set ISUSED = 1 where GLTRANSACTIONID in (select a.GLTRANSACTIONID from #Pegadog as a
join dbo.GLTRANSACTION as b on a.GLTRANSACTIONID = b.ID
join dbo.REVENUEGLDISTRIBUTION as c on c.GLTRANSACTIONID = b.ID
join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on c.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
where a.ISREVERSAL = 0 and ((d.REVENUETRANSACTIONTYPECODE = 1 and d.APPLICATIONCODE = 0 and d.TRANSACTIONTYPECODE = 0 )
--or (d.REVENUETRANSACTIONTYPECODE = 4 and d.APPLICATIONCODE = 0 and d.TRANSACTIONTYPECODE = 0 )
or (d.REVENUETRANSACTIONTYPECODE = 5 and d.APPLICATIONCODE in (0,9,5) and d.TRANSACTIONTYPECODE = 0)
or (d.REVENUETRANSACTIONTYPECODE = 0 and d.APPLICATIONCODE in (2,8,10) and d.TRANSACTIONTYPECODE = 1)
or (d.REVENUETRANSACTIONTYPECODE = 1 and d.APPLICATIONCODE = 0 and d.TRANSACTIONTYPECODE = 1 and PAYMENTMETHODCODE = 205)))
end
insert into @WORKTABLE (GLTRANSACTIONID,ACCOUNTSTRING,POSTDATE,TRANTYPE,DEBITCREDIT,AMOUNT,JOURNAL,REFERENCE,BATCH,PROJECT)
select a.GLTRANSACTIONID,b.ACCOUNT,
CASE WHEN (@SUMMARIZEDATE != 0) THEN i.enddate ELSE isnull(adj.postdate, isnull(f.postdate, isnull(h.postdate, b.postdate))) END,
'R',case b.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,b.AMOUNT,JOURNAL,
case when a.ISREVERSAL = 0 then b.REFERENCE else 'Reversal' + ' - ' + b.REFERENCE end,
BATCHID,b.PROJECT
from #Pegadog as a join dbo.GLTRANSACTION as b on a.GLTRANSACTIONID = b.ID
left outer join dbo.REVENUEGLDISTRIBUTION as c on c.GLTRANSACTIONID = b.ID
left outer join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on c.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BANKACCOUNTDEPOSITPAYMENT as e on c.REVENUEID = e.ID
left outer join dbo.BANKACCOUNTTRANSACTION f on f.ID = e.DEPOSITID
left outer join dbo.BANKACCOUNTTRANSACTIONGLDISTRIBUTION g on g.GLTRANSACTIONID = b.ID
left outer join dbo.BANKACCOUNTTRANSACTION h on h.ID = g.BANKACCOUNTTRANSACTIONID
left outer join dbo.ADJUSTMENT adj on adj.REVENUEID = c.REVENUEID and adj.POSTSTATUSCODE = 1
left outer join dbo.GLFISCALPERIOD as i on (@SUMMARIZEDATE != 0) and (isnull(adj.postdate, isnull(f.postdate, isnull(h.postdate, b.postdate))) between i.STARTDATE and i.ENDDATE)
where ISUSED = 0
select GLTRANSACTIONID,ACCOUNTSTRING,POSTDATE,TRANTYPE,DEBITCREDIT,AMOUNT,JOURNAL,REFERENCE,BATCH,''--PROJECT
from
@WORKTABLE order by ACCOUNTSTRING