UFN_POSTTOGLPROCESS_SUMMARIZEWITHGLACCOUNTID
Returns of table of summarized or detail post records based on the post parameter set ID
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@InRecords | UDT_GENERICIDANDBIT | IN | |
@ID | uniqueidentifier | IN |
Definition
Copy
CREATE function dbo.UFN_POSTTOGLPROCESS_SUMMARIZEWITHGLACCOUNTID(@InRecords UDT_GENERICIDANDBIT readonly, @ID uniqueidentifier)
returns @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),
GLACCOUNTID uniqueidentifier,
BASECURRENCYID uniqueidentifier,
ORGANIZATIONAMOUNT money,
DUMMYCOL integer identity(1,1),
primary key(GLTRANSACTIONID, DUMMYCOL)
)
with execute as caller
as
begin
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'
declare @BASECURRENCYID uniqueidentifier;
declare @REVALUATIONGAINLOSSPOSTMETHOD tinyint;
declare @REVALUATIONGAINLOSSREFERENCE nvarchar(255);
select
@REVENUEPOSTMETHOD = POSTTOGLPROCESSDETAIL.REVENUEPOSTMETHODCODE,
@REVENUEREFERENCE = isnull(nullif(POSTTOGLPROCESSDETAIL.REVENUEREFERENCE,''),'Summarized Revenue'),
@CASHPOSTMETHOD = POSTTOGLPROCESSDETAIL.CASHPOSTMETHODCODE,
@CASHREFERENCE = isnull(nullif(POSTTOGLPROCESSDETAIL.CASHREFERENCE,''),'Summarized Cash'),
@RECEIVABLEPOSTMETHOD = POSTTOGLPROCESSDETAIL.ARPOSTMETHODCODE,
@RECEIVABLEREFERENCE = isnull(nullif(POSTTOGLPROCESSDETAIL.ARREFERENCE,''),'Summarized Receivables'),
@SUMMARIZEDATE = POSTTOGLPROCESSDETAIL.SUMMARIZECODE,
@BASECURRENCYID = coalesce(CURRENCYSET.BASECURRENCYID, dbo.UFN_CURRENCY_GETORGANIZATIONCURRENCY()),
@REVALUATIONGAINLOSSPOSTMETHOD = POSTTOGLPROCESSDETAIL.REVALUATIONGAINLOSSPOSTMETHODCODE,
@REVALUATIONGAINLOSSREFERENCE = isnull(nullif(POSTTOGLPROCESSDETAIL.REVALUATIONGAINLOSSREFERENCE,''),'Summarized Revaluation Gain/Loss')
from
dbo.POSTTOGLPROCESSDETAIL
left join dbo.POSTTOGLPROCESS on POSTTOGLPROCESSDETAIL.ID = POSTTOGLPROCESS.ID
left join dbo.PDACCOUNTSYSTEM ON POSTTOGLPROCESS.PDACCOUNTSYSTEMID = PDACCOUNTSYSTEM.ID
left join dbo.CURRENCYSET ON PDACCOUNTSYSTEM.CURRENCYSETID = CURRENCYSET.ID
where
POSTTOGLPROCESSDETAIL.ID = @ID;
if @REVENUEPOSTMETHOD = 0 and @CASHPOSTMETHOD = 0 and @RECEIVABLEPOSTMETHOD = 0 and @REVALUATIONGAINLOSSPOSTMETHOD = 0
set @SUMMARIZEDATE = 0
declare @PD2 table (GLTRANSACTIONID uniqueidentifier primary key, ACCOUNT nvarchar(100), ISREVERSAL bit, POSTDATE datetime, TRANSACTIONTYPECODE tinyint,
AMOUNT money, JOURNAL nvarchar(255), PROJECT nvarchar(100), GLACCOUNTID uniqueidentifier, ORGAMOUNT money, FINANCIALTRANSACTIONLINEITEMID uniqueidentifier, GLPAYMENTMETHODREVENUETYPEMAPPINGID uniqueidentifier,
BATCHID uniqueidentifier, COMMENT nvarchar(255), FINANCIALTRANSACTIONID uniqueidentifier, TABLENAMECODE tinyint, ISUSED bit,
CREDITPAYMENTID uniqueidentifier, CREDITITEMID uniqueidentifier)
insert into @PD2 (GLTRANSACTIONID, ACCOUNT, ISREVERSAL, POSTDATE, TRANSACTIONTYPECODE, AMOUNT, JOURNAL, PROJECT, GLACCOUNTID, ORGAMOUNT,
GLPAYMENTMETHODREVENUETYPEMAPPINGID, BATCHID, COMMENT, FINANCIALTRANSACTIONID, TABLENAMECODE, ISUSED, CREDITPAYMENTID, CREDITITEMID)
select InRecs.ID, GLACCOUNT.ACCOUNTNUMBER, InRecs.Flag, JOURNALENTRY.POSTDATE, JOURNALENTRY.TRANSACTIONTYPECODE, JOURNALENTRY.BASEAMOUNT, JOURNALENTRY_EXT.JOURNAL,
JOURNALENTRY_EXT.PROJECT, JOURNALENTRY.GLACCOUNTID, JOURNALENTRY.ORGAMOUNT, JOURNALENTRY_EXT.GLPAYMENTMETHODREVENUETYPEMAPPINGID, JOURNALENTRY.BATCHID, JOURNALENTRY.COMMENT,
FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID, JOURNALENTRY_EXT.TABLENAMECODE, 0, JOURNALENTRY_EXT.CREDITPAYMENTID, JOURNALENTRY_EXT.CREDITITEMID
from @InRecords InRecs inner join dbo.JOURNALENTRY on InRecs.ID = JOURNALENTRY.ID
inner join dbo.JOURNALENTRY_EXT on InRecs.ID = JOURNALENTRY_EXT.ID
inner join dbo.GLACCOUNT on JOURNALENTRY.GLACCOUNTID = GLACCOUNT.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM on JOURNALENTRY.FINANCIALTRANSACTIONLINEITEMID = FINANCIALTRANSACTIONLINEITEM.ID
option (recompile)
if @SUMMARIZEDATE = 0 -- by Post Date
begin
if @REVENUEPOSTMETHOD = 0 -- Detail
insert into @WORKTABLE (GLTRANSACTIONID,ACCOUNTSTRING,POSTDATE,TRANTYPE,DEBITCREDIT,AMOUNT,JOURNAL,REFERENCE,BATCH,PROJECT,GLACCOUNTID,BASECURRENCYID,ORGANIZATIONAMOUNT)
select PD.GLTRANSACTIONID, PD.ACCOUNT, coalesce(ADJUSTMENT.POSTDATE, JE2.POSTDATE, PD.POSTDATE), 'R',
case PD.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end, PD.AMOUNT, PD.JOURNAL,
left(PD.COMMENT,255), PD.BATCHID, PD.PROJECT, PD.GLACCOUNTID, @BASECURRENCYID, PD.ORGAMOUNT
from @PD2 PD inner join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING on PD.GLPAYMENTMETHODREVENUETYPEMAPPINGID = GLPAYMENTMETHODREVENUETYPEMAPPING.ID
left join dbo.BANKACCOUNTDEPOSITPAYMENT on PD.FINANCIALTRANSACTIONID = BANKACCOUNTDEPOSITPAYMENT.ID
left join dbo.JOURNALENTRY JE2 on BANKACCOUNTDEPOSITPAYMENT.DEPOSITID = JE2.ID
left join dbo.ADJUSTMENT on PD.FINANCIALTRANSACTIONID = ADJUSTMENT.REVENUEID and ADJUSTMENT.POSTSTATUSCODE = 1
left join dbo.BENEFITADJUSTMENT ON PD.FINANCIALTRANSACTIONID = BENEFITADJUSTMENT.ID and BENEFITADJUSTMENT.POSTSTATUSCODE = 1
where PD.ISREVERSAL = 0
and (
(
PD.TRANSACTIONTYPECODE = 1
and PD.TABLENAMECODE = 1
and (
(GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 0 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE in (0,1,3,4,5,6,7,11,13,18,19))
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 1 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 0) --Pledge transaction, gift application
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 15 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE in (0,5,18)) --Membership installment transaction; gift, membership, addon application
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 201 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 201)
)
)
or PD.TABLENAMECODE = 5
)
union
select PD.GLTRANSACTIONID, PD.ACCOUNT, PD.POSTDATE, 'R',
case PD.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end, PD.AMOUNT, PD.JOURNAL,
left(case PD.IsReversal when 0 then '' else 'Reversal - ' end + PD.COMMENT,255), PD.BATCHID, PD.PROJECT, PD.GLACCOUNTID, @BASECURRENCYID, PD.ORGAMOUNT
from @PD2 PD left join dbo.CREDITPAYMENT as REFUND on PD.CREDITPAYMENTID = REFUND.ID
left join dbo.FINANCIALTRANSACTIONLINEITEM as DISCOUNT on PD.CREDITITEMID = DISCOUNT.ID
where PD.TABLENAMECODE = 6
and (
(DISCOUNT.TYPECODE = 5 and PD.TRANSACTIONTYPECODE = 1)
or (REFUND.ID is not null and PD.TRANSACTIONTYPECODE = 0)
)
option (recompile)
else
if @REVENUEPOSTMETHOD = 1 -- Summary
begin
insert into @WORKTABLE (GLTRANSACTIONID,ACCOUNTSTRING,POSTDATE,TRANTYPE,DEBITCREDIT,AMOUNT,JOURNAL,REFERENCE,BATCH,PROJECT,GLACCOUNTID,BASECURRENCYID,ORGANIZATIONAMOUNT)
select '99999999-9999-9999-9999-999999999999', V1.ACCOUNT, V1.POSTDATE, 'R', case when V1.TRANSACTIONTYPECODE = 1 THEN 'C' ELSE 'D' END, sum(V1.AMOUNT), V1.JOURNAL, @REVENUEREFERENCE, null, '', V1.GLACCOUNTID, @BASECURRENCYID, sum(V1.ORGAMOUNT)
from
(
select PD.GLTRANSACTIONID, PD.ACCOUNT, coalesce(ADJUSTMENT.POSTDATE, BANKACCOUNTTRANSACTION.POSTDATE,PD.POSTDATE) as PostDate, PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING on PD.GLPAYMENTMETHODREVENUETYPEMAPPINGID = GLPAYMENTMETHODREVENUETYPEMAPPING.ID
left join dbo.ADJUSTMENT on PD.FINANCIALTRANSACTIONID = ADJUSTMENT.REVENUEID and ADJUSTMENT.POSTSTATUSCODE = 1
left join dbo.BANKACCOUNTDEPOSITPAYMENT on PD.FINANCIALTRANSACTIONID = BANKACCOUNTDEPOSITPAYMENT.ID
left join dbo.BANKACCOUNTTRANSACTION on BANKACCOUNTDEPOSITPAYMENT.DEPOSITID = BANKACCOUNTTRANSACTION.ID
where PD.ISREVERSAL = 0
and PD.TRANSACTIONTYPECODE = 1
and PD.TABLENAMECODE = 1
and (
(GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 0 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE in (0,1,3,4,5,6,7,11,13,18,19))
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 1 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 0) --Pledge transaction, gift application
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 201 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 201) --Non-bookable pledge
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 15 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE in (0,5,18)) --Membership installment transaction; gift, membership, addon application
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 5)
)
union
select PD.GLTRANSACTIONID, PD.ACCOUNT, PD.POSTDATE, PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD left join dbo.CREDITPAYMENT as REFUND on PD.CREDITPAYMENTID = REFUND.ID
left join dbo.FINANCIALTRANSACTIONLINEITEM as DISCOUNT on PD.CREDITITEMID = DISCOUNT.ID
where PD.TABLENAMECODE = 6
and (
(DISCOUNT.TYPECODE = 5 and PD.TRANSACTIONTYPECODE = 1)
or (REFUND.ID is not null and PD.TRANSACTIONTYPECODE = 0)
)
union --all
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(BANKACCOUNTTRANSACTION.POSTDATE, PD.POSTDATE), PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.BANKACCOUNTTRANSACTION on PD.FINANCIALTRANSACTIONID = BANKACCOUNTTRANSACTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 4
and (
(BANKACCOUNTTRANSACTION.TRANSACTIONTYPECODE in (16, 33) and PD.TRANSACTIONTYPECODE = 1)
or (BANKACCOUNTTRANSACTION.TRANSACTIONTYPECODE in (17, 32) and PD.TRANSACTIONTYPECODE = 0)
)
union --all
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(BANKACCOUNTTRANSACTION.POSTDATE, PD.POSTDATE), PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.BANKACCOUNTDEPOSITCORRECTION on PD.FINANCIALTRANSACTIONID = BANKACCOUNTDEPOSITCORRECTION.ID
left join dbo.BANKACCOUNTTRANSACTION on BANKACCOUNTDEPOSITCORRECTION.DEPOSITID = BANKACCOUNTTRANSACTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 3
and (
(BANKACCOUNTDEPOSITCORRECTION.CORRECTIONTYPECODE in (1, 3) and PD.TRANSACTIONTYPECODE = 1)
or (BANKACCOUNTDEPOSITCORRECTION.CORRECTIONTYPECODE in (0, 2) and PD.TRANSACTIONTYPECODE = 0)
)
) V1
group by V1.ACCOUNT, V1.PostDate, V1.JOURNAL, V1.TRANSACTIONTYPECODE, V1.GLACCOUNTID
option (recompile)
insert into @WORKTABLE (GLTRANSACTIONID,ACCOUNTSTRING,POSTDATE,TRANTYPE,DEBITCREDIT,AMOUNT,JOURNAL,REFERENCE,BATCH,PROJECT,GLACCOUNTID,BASECURRENCYID,ORGANIZATIONAMOUNT)
select
'99999999-9999-9999-9999-999999999999', V1.Account,
V1.Postdate, 'R', case V1.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,
sum(V1.AMOUNT), V1.JOURNAL, @BENEFITSUMMARIZED, null, '', V1.GLACCOUNTID,@BASECURRENCYID,sum(V1.ORGAMOUNT)
from (
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(adj.POSTDATE, PD.POSTDATE) as Postdate, PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD
inner join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING on
PD.GLPAYMENTMETHODREVENUETYPEMAPPINGID = GLPAYMENTMETHODREVENUETYPEMAPPING.ID
left outer join dbo.BENEFITADJUSTMENT adj on PD.FINANCIALTRANSACTIONID = adj.REVENUEID and adj.POSTSTATUSCODE = 1
where PD.IsReversal = 0
and PD.TABLENAMECODE = 5
) V1
group by V1.ACCOUNT ,V1.Postdate, V1.TRANSACTIONTYPECODE, V1.JOURNAL, V1.GLACCOUNTID
option (recompile)
end
else if @REVENUEPOSTMETHOD = 2 -- Summary by application type
begin
insert into @WORKTABLE (GLTRANSACTIONID,ACCOUNTSTRING,POSTDATE,TRANTYPE,DEBITCREDIT,AMOUNT,JOURNAL,REFERENCE,BATCH,PROJECT,GLACCOUNTID,BASECURRENCYID,ORGANIZATIONAMOUNT)
select '99999999-9999-9999-9999-999999999999', V1.ACCOUNT, V1.PostDate, 'R', case when V1.TRANSACTIONTYPECODE = 1 then 'C' else 'D' end, sum(V1.AMOUNT), V1.JOURNAL, @REVENUEREFERENCE+' - '+V1.APPLICATION, null, '',V1.GLACCOUNTID, @BASECURRENCYID,sum(V1.ORGAMOUNT)
from
(
select PD.GLTRANSACTIONID, PD.ACCOUNT, coalesce(ADJUSTMENT.POSTDATE, BANKACCOUNTTRANSACTION.POSTDATE, PD.POSTDATE) as PostDate, PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATION, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD
inner join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING on PD.GLPAYMENTMETHODREVENUETYPEMAPPINGID = GLPAYMENTMETHODREVENUETYPEMAPPING.ID
left join dbo.ADJUSTMENT on PD.FINANCIALTRANSACTIONID = ADJUSTMENT.REVENUEID and ADJUSTMENT.POSTSTATUSCODE = 1
left join dbo.BANKACCOUNTDEPOSITPAYMENT on PD.FINANCIALTRANSACTIONID = BANKACCOUNTDEPOSITPAYMENT.ID
left join dbo.BANKACCOUNTTRANSACTION on BANKACCOUNTDEPOSITPAYMENT.DEPOSITID = BANKACCOUNTTRANSACTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 1
and PD.TRANSACTIONTYPECODE = 1
and (
(GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 0 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE in (0,1,3,4,5,6,7,11,13,18,19))
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 1 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 0) --Pledge transaction, gift application
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 201 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 201) --Non-bookable pledge
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 15 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE in (0,5,18)) --Membership installment transaction; gift, membership, addon application
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 5)
)
union
select PD.GLTRANSACTIONID, PD.ACCOUNT, PD.POSTDATE, PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, CREDIT.[TYPE] APPLICATION, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD left join dbo.CREDITPAYMENT as REFUND on PD.CREDITPAYMENTID = REFUND.ID
left join dbo.FINANCIALTRANSACTIONLINEITEM as DISCOUNT on PD.CREDITITEMID = DISCOUNT.ID
left join dbo.CREDITITEM_EXT EXT on EXT.ID = DISCOUNT.ID
left join dbo.CREDIT on EXT.CREDITID = CREDIT.ID or REFUND.CREDITID = CREDIT.ID
where PD.TABLENAMECODE = 6
and (
(DISCOUNT.TYPECODE = 5 and PD.TRANSACTIONTYPECODE = 1)
or (REFUND.ID is not null and PD.TRANSACTIONTYPECODE = 0)
)
union --all
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(BANKACCOUNTTRANSACTION.POSTDATE, PD.POSTDATE), PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, BANKACCOUNTTRANSACTION.TRANSACTIONTYPE, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.BANKACCOUNTTRANSACTION on PD.FINANCIALTRANSACTIONID = BANKACCOUNTTRANSACTION.ID
left join dbo.JOURNALENTRY_EXT on PD.GLTRANSACTIONID = JOURNALENTRY_EXT.ID and JOURNALENTRY_EXT.TABLENAMECODE = 1 --Not sure about this
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 4
and ((BANKACCOUNTTRANSACTION.TRANSACTIONTYPECODE in (16, 33) and PD.TRANSACTIONTYPECODE = 1) or (BANKACCOUNTTRANSACTION.TRANSACTIONTYPECODE in (17, 32) and PD.TRANSACTIONTYPECODE = 0))
union --all
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(BANKACCOUNTTRANSACTION.POSTDATE, PD.POSTDATE), PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, BANKACCOUNTDEPOSITCORRECTION.CORRECTIONTYPE, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.BANKACCOUNTDEPOSITCORRECTION on PD.FINANCIALTRANSACTIONID = BANKACCOUNTDEPOSITCORRECTION.ID
left join dbo.BANKACCOUNTTRANSACTION on BANKACCOUNTDEPOSITCORRECTION.DEPOSITID = BANKACCOUNTTRANSACTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 3
and ((BANKACCOUNTDEPOSITCORRECTION.CORRECTIONTYPECODE in (1, 3) and PD.TRANSACTIONTYPECODE = 1) or (BANKACCOUNTDEPOSITCORRECTION.CORRECTIONTYPECODE in (0, 2) and PD.TRANSACTIONTYPECODE = 0))
) V1
group by V1.ACCOUNT, V1.PostDate, V1.JOURNAL, V1.APPLICATION, V1.TRANSACTIONTYPECODE, V1.GLACCOUNTID
option (recompile)
insert into @WORKTABLE (GLTRANSACTIONID, ACCOUNTSTRING, POSTDATE, TRANTYPE, DEBITCREDIT, AMOUNT, JOURNAL, REFERENCE, BATCH, PROJECT,GLACCOUNTID,BASECURRENCYID,ORGANIZATIONAMOUNT)
select '99999999-9999-9999-9999-999999999999', V1.Account, V1.Postdate,'R',case V1.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,
sum(V1.AMOUNT),V1.JOURNAL,@BENEFITSUMMARIZED,null,'',V1.GLACCOUNTID, @BASECURRENCYID, sum(V1.ORGAMOUNT)
from (
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(adj.POSTDATE, PD.POSTDATE) as Postdate, PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD
inner join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING on PD.GLPAYMENTMETHODREVENUETYPEMAPPINGID = GLPAYMENTMETHODREVENUETYPEMAPPING.ID
left outer join dbo.BENEFITADJUSTMENT adj on PD.FINANCIALTRANSACTIONID = adj.REVENUEID and adj.POSTSTATUSCODE = 1
where PD.IsReversal = 0
and PD.TABLENAMECODE = 5
) V1
group by V1.ACCOUNT ,V1.Postdate, V1.TRANSACTIONTYPECODE, V1.JOURNAL, V1.GLACCOUNTID
option (recompile)
end
else -- Summary by deposit
begin
insert into @WORKTABLE (GLTRANSACTIONID,ACCOUNTSTRING,POSTDATE,TRANTYPE,DEBITCREDIT,AMOUNT,JOURNAL,REFERENCE,BATCH,PROJECT,GLACCOUNTID,BASECURRENCYID,ORGANIZATIONAMOUNT)
select '99999999-9999-9999-9999-999999999999', V1.ACCOUNT, V1.POSTDATE, 'R', case when V1.TRANSACTIONTYPECODE = 1 THEN 'C' ELSE 'D' END, sum(V1.AMOUNT), V1.JOURNAL,
case when (V1.DEPOSITID IS null or @REVENUEREFERENCE != 'Summarized Revenue') then @REVENUEREFERENCE else @DEPOSITSUMMARIZED + ' - ' + Cast(BAT.TRANSACTIONNUMBER as nvarchar(10)) + ' - ' + BA.ACCOUNTNAME end, null, '', V1.GLACCOUNTID, @BASECURRENCYID, sum(V1.ORGAMOUNT)
from
(
select PD.GLTRANSACTIONID, PD.ACCOUNT, coalesce(ADJUSTMENT.POSTDATE, BANKACCOUNTTRANSACTION.POSTDATE,PD.POSTDATE) as PostDate, PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, PD.GLACCOUNTID, PD.ORGAMOUNT, BANKACCOUNTTRANSACTION.ID [DEPOSITID]
from @PD2 as PD inner join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING on PD.GLPAYMENTMETHODREVENUETYPEMAPPINGID = GLPAYMENTMETHODREVENUETYPEMAPPING.ID
left join dbo.ADJUSTMENT on PD.FINANCIALTRANSACTIONID = ADJUSTMENT.REVENUEID and ADJUSTMENT.POSTSTATUSCODE = 1
left join dbo.BANKACCOUNTDEPOSITPAYMENT on PD.FINANCIALTRANSACTIONID = BANKACCOUNTDEPOSITPAYMENT.ID
left join dbo.BANKACCOUNTTRANSACTION on BANKACCOUNTDEPOSITPAYMENT.DEPOSITID = BANKACCOUNTTRANSACTION.ID
where PD.ISREVERSAL = 0
and PD.TRANSACTIONTYPECODE = 1
and PD.TABLENAMECODE = 1
and (
(GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 0 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE in (0,1,3,4,5,6,7,11,13,18,19))
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 1 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 0) --Pledge transaction, gift application
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 201 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 201) --Non-bookable pledge
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 15 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE in (0,5,18)) --Membership installment transaction; gift, membership, addon application
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 5)
)
union
select PD.GLTRANSACTIONID, PD.ACCOUNT, PD.POSTDATE, PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, PD.GLACCOUNTID, PD.ORGAMOUNT, BADP.DEPOSITID
from @PD2 as PD left join dbo.CREDITPAYMENT as REFUND on PD.CREDITPAYMENTID = REFUND.ID
left join dbo.FINANCIALTRANSACTIONLINEITEM as DISCOUNT on PD.CREDITITEMID = DISCOUNT.ID
left join dbo.BANKACCOUNTDEPOSITPAYMENT BADP on PD.FINANCIALTRANSACTIONID = BADP.ID
where PD.TABLENAMECODE = 6
and (
(DISCOUNT.TYPECODE = 5 and PD.TRANSACTIONTYPECODE = 1)
or (REFUND.ID is not null and PD.TRANSACTIONTYPECODE = 0)
)
union --all
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(BANKACCOUNTTRANSACTION.POSTDATE, PD.POSTDATE), PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, PD.GLACCOUNTID, PD.ORGAMOUNT, BANKACCOUNTTRANSACTION.ID [DEPOSITID]
from @PD2 as PD inner join dbo.BANKACCOUNTTRANSACTION on PD.FINANCIALTRANSACTIONID = BANKACCOUNTTRANSACTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 4
and (
(BANKACCOUNTTRANSACTION.TRANSACTIONTYPECODE in (16, 33) and PD.TRANSACTIONTYPECODE = 1)
or (BANKACCOUNTTRANSACTION.TRANSACTIONTYPECODE in (17, 32) and PD.TRANSACTIONTYPECODE = 0)
)
union --all
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(BANKACCOUNTTRANSACTION.POSTDATE, PD.POSTDATE), PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, PD.GLACCOUNTID, PD.ORGAMOUNT, BANKACCOUNTTRANSACTION.ID [DEPOSITID]
from @PD2 as PD inner join dbo.BANKACCOUNTDEPOSITCORRECTION on PD.FINANCIALTRANSACTIONID = BANKACCOUNTDEPOSITCORRECTION.ID
left join dbo.BANKACCOUNTTRANSACTION on BANKACCOUNTDEPOSITCORRECTION.DEPOSITID = BANKACCOUNTTRANSACTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 3
and (
(BANKACCOUNTDEPOSITCORRECTION.CORRECTIONTYPECODE in (1, 3) and PD.TRANSACTIONTYPECODE = 1)
or (BANKACCOUNTDEPOSITCORRECTION.CORRECTIONTYPECODE in (0, 2) and PD.TRANSACTIONTYPECODE = 0)
)
) V1
left join dbo.BANKACCOUNTTRANSACTION BAT on BAT.ID = V1.DEPOSITID
left join dbo.BANKACCOUNT BA ON BAT.BANKACCOUNTID = BA.ID
group by V1.DEPOSITID, V1.ACCOUNT, V1.PostDate, V1.JOURNAL, V1.TRANSACTIONTYPECODE, V1.GLACCOUNTID, BAT.TRANSACTIONNUMBER, BA.ACCOUNTNAME
option (recompile)
insert into @WORKTABLE (GLTRANSACTIONID,ACCOUNTSTRING,POSTDATE,TRANTYPE,DEBITCREDIT,AMOUNT,JOURNAL,REFERENCE,BATCH,PROJECT,GLACCOUNTID,BASECURRENCYID,ORGANIZATIONAMOUNT)
select '99999999-9999-9999-9999-999999999999', V1.Account,
V1.Postdate, 'R', case V1.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,
sum(V1.AMOUNT), V1.JOURNAL, @BENEFITSUMMARIZED, null, '', V1.GLACCOUNTID,@BASECURRENCYID,sum(V1.ORGAMOUNT)
from
(
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(adj.POSTDATE, PD.POSTDATE) as Postdate, PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, PD.GLACCOUNTID, PD.ORGAMOUNT
from
@PD2 as PD inner join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING on PD.GLPAYMENTMETHODREVENUETYPEMAPPINGID = GLPAYMENTMETHODREVENUETYPEMAPPING.ID
left outer join dbo.BENEFITADJUSTMENT adj on PD.FINANCIALTRANSACTIONID = adj.REVENUEID and adj.POSTSTATUSCODE = 1
where PD.IsReversal = 0
and PD.TABLENAMECODE = 5
) V1
group by V1.ACCOUNT ,V1.Postdate, V1.TRANSACTIONTYPECODE, V1.JOURNAL, V1.GLACCOUNTID
option (recompile)
end
update @PD2 set ISUSED = 1
from @PD2 tv1 inner join
(
select PD.GLTRANSACTIONID
from @PD2 as PD inner join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING on PD.GLPAYMENTMETHODREVENUETYPEMAPPINGID = GLPAYMENTMETHODREVENUETYPEMAPPING.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 1
and PD.TRANSACTIONTYPECODE = 1
and (
(GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 0 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE in (0,1,3,4,5,6,7,11,13,18,19))
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 1 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 0) --Pledge transaction, gift application
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 201 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 201) --Non-bookable pledge
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 15 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE in (0,5,18)) --Membership installment transaction; gift, membership, addon application
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 5 and @REVENUEPOSTMETHOD != 0)
)
union all
select PD.GLTRANSACTIONID
from @PD2 as PD inner join dbo.BANKACCOUNTTRANSACTION on PD.FINANCIALTRANSACTIONID = BANKACCOUNTTRANSACTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 4
and ((BANKACCOUNTTRANSACTION.TRANSACTIONTYPECODE in (16, 33) and PD.TRANSACTIONTYPECODE = 1) or (BANKACCOUNTTRANSACTION.TRANSACTIONTYPECODE in (17, 32) and PD.TRANSACTIONTYPECODE = 0))
and @REVENUEPOSTMETHOD != 0
union all
select PD.GLTRANSACTIONID
from @PD2 as PD inner join dbo.BANKACCOUNTDEPOSITCORRECTION on PD.FINANCIALTRANSACTIONID = BANKACCOUNTDEPOSITCORRECTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 3
and ((BANKACCOUNTDEPOSITCORRECTION.CORRECTIONTYPECODE in (1, 3) and PD.TRANSACTIONTYPECODE = 1) or (BANKACCOUNTDEPOSITCORRECTION.CORRECTIONTYPECODE in (0, 2) and PD.TRANSACTIONTYPECODE = 0))
and @REVENUEPOSTMETHOD != 0
union all
select PD.GLTRANSACTIONID
from @PD2 as PD
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 5
union all
select PD.GLTRANSACTIONID
from @PD2 as PD left join dbo.CREDITPAYMENT as REFUND on PD.CREDITPAYMENTID = REFUND.ID
left join dbo.FINANCIALTRANSACTIONLINEITEM as DISCOUNT on PD.CREDITITEMID = DISCOUNT.ID
where PD.TABLENAMECODE = 6
and (
(DISCOUNT.TYPECODE = 5 and PD.TRANSACTIONTYPECODE = 1)
or (REFUND.ID is not null and PD.TRANSACTIONTYPECODE = 0)
)
) V1 on tv1.GLTRANSACTIONID = V1.GLTRANSACTIONID
option (recompile)
if @CASHPOSTMETHOD = 0 -- Detail
insert into @WORKTABLE (GLTRANSACTIONID, ACCOUNTSTRING, POSTDATE, TRANTYPE, DEBITCREDIT, AMOUNT, JOURNAL, REFERENCE, BATCH, PROJECT, GLACCOUNTID, BASECURRENCYID, ORGANIZATIONAMOUNT)
select PD.GLTRANSACTIONID, PD.ACCOUNT, coalesce(adj.POSTDATE, f.POSTDATE, PD.POSTDATE), 'R', case PD.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end, PD.AMOUNT, JOURNAL, left(PD.COMMENT, 255), PD.BATCHID, PD.PROJECT, PD.GLACCOUNTID, @BASECURRENCYID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on PD.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BANKACCOUNTDEPOSITPAYMENT as e on PD.FINANCIALTRANSACTIONID = e.ID
left outer join dbo.BANKACCOUNTTRANSACTION f on f.ID = e.DEPOSITID
left outer join dbo.ADJUSTMENT adj on PD.FINANCIALTRANSACTIONID = adj.REVENUEID and adj.POSTSTATUSCODE = 1
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 1
and (
(
d.REVENUETRANSACTIONTYPECODE = 0
and d.APPLICATIONCODE in (0,1,2,3,4,5,6,7,8,10,11,13,18,19,203)
and PD.TRANSACTIONTYPECODE = 0
and (
d.REVENUESPLITTYPECODE <> 19 /* Unearned revenue */
or d.TRANSACTIONTYPECODE = 0 /* Debit */
)
)
or (d.REVENUETRANSACTIONTYPECODE = 200 and d.APPLICATIONCODE = 200)
or (
d.REVENUETRANSACTIONTYPECODE = 201
and d.APPLICATIONCODE = 201
and PD.TRANSACTIONTYPECODE = 0
and (d.REVENUESPLITTYPECODE <> 19 or d.TRANSACTIONTYPECODE = 0)
)
)
union
select PD.GLTRANSACTIONID, PD.ACCOUNT, PD.POSTDATE, 'R', case PD.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end, PD.AMOUNT, PD.JOURNAL, left(PD.COMMENT,255), PD.BATCHID, PD.PROJECT, PD.GLACCOUNTID, @BASECURRENCYID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.BANKACCOUNTTRANSACTION on PD.FINANCIALTRANSACTIONID = BANKACCOUNTTRANSACTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 4
and ((BANKACCOUNTTRANSACTION.TRANSACTIONTYPECODE in (17,32) and PD.TRANSACTIONTYPECODE = 1) or (BANKACCOUNTTRANSACTION.TRANSACTIONTYPECODE in (16,33) and PD.TRANSACTIONTYPECODE = 0))
union
select PD.GLTRANSACTIONID, PD.ACCOUNT, PD.POSTDATE, 'R', case PD.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end, PD.AMOUNT, PD.JOURNAL, left(PD.COMMENT,255), PD.BATCHID, PD.PROJECT, PD.GLACCOUNTID, @BASECURRENCYID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.BANKACCOUNTDEPOSITCORRECTION on PD.FINANCIALTRANSACTIONID = BANKACCOUNTDEPOSITCORRECTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 3
and ((BANKACCOUNTDEPOSITCORRECTION.CORRECTIONTYPECODE in (0,2) and PD.TRANSACTIONTYPECODE = 1) or (BANKACCOUNTDEPOSITCORRECTION.CORRECTIONTYPECODE in (1,3) and PD.TRANSACTIONTYPECODE = 0))
union
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(BAT.POSTDATE, PD.POSTDATE), 'R', 'C', PD.AMOUNT, PD.JOURNAL, left(PD.COMMENT,255), PD.BATCHID, PD.PROJECT, PD.GLACCOUNTID, @BASECURRENCYID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.CREDITPAYMENT as REFUND on PD.CREDITPAYMENTID = REFUND.ID
left join dbo.BANKACCOUNTDEPOSITCREDITPAYMENT on REFUND.ID = BANKACCOUNTDEPOSITCREDITPAYMENT.ID
left join dbo.BANKACCOUNTTRANSACTION BAT on BANKACCOUNTDEPOSITCREDITPAYMENT.DEPOSITID = BAT.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 6
and PD.TRANSACTIONTYPECODE = 1
option (recompile)
else if @CASHPOSTMETHOD = 1 -- Summary
begin
insert into @WORKTABLE (GLTRANSACTIONID, ACCOUNTSTRING, POSTDATE, TRANTYPE, DEBITCREDIT, AMOUNT, JOURNAL, REFERENCE, BATCH, PROJECT, GLACCOUNTID, BASECURRENCYID, ORGANIZATIONAMOUNT)
select '99999999-9999-9999-9999-999999999999', V1.ACCOUNT, V1.PostDate, 'R', case V1.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,
sum(V1.AMOUNT), V1.JOURNAL, @CASHREFERENCE, null, '',V1.GLACCOUNTID, @BASECURRENCYID, sum(V1.ORGAMOUNT)
from
(
select PD.GLTRANSACTIONID, PD.ACCOUNT, coalesce(ADJUSTMENT.POSTDATE, BANKACCOUNTTRANSACTION.POSTDATE, PD.POSTDATE) as PostDate, PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING on PD.GLPAYMENTMETHODREVENUETYPEMAPPINGID = GLPAYMENTMETHODREVENUETYPEMAPPING.ID
left join dbo.ADJUSTMENT on PD.FINANCIALTRANSACTIONID = ADJUSTMENT.REVENUEID and ADJUSTMENT.POSTSTATUSCODE = 1
left join dbo.BANKACCOUNTDEPOSITPAYMENT on PD.FINANCIALTRANSACTIONID = BANKACCOUNTDEPOSITPAYMENT.ID
left join dbo.BANKACCOUNTTRANSACTION on BANKACCOUNTDEPOSITPAYMENT.DEPOSITID = BANKACCOUNTTRANSACTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 1
and (
(
GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 0
and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE in (0,1,2,3,4,5,6,7,8,11,13,18,19,203)
and PD.TRANSACTIONTYPECODE = 0
)
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 200 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 200)
or (
GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 201 and
GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 201 and
PD.TRANSACTIONTYPECODE = 0
)
or (
GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 0
and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 10
and PD.TRANSACTIONTYPECODE = 0
and (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUESPLITTYPECODE <> 19 OR GLPAYMENTMETHODREVENUETYPEMAPPING.TRANSACTIONTYPECODE = 0)
)
)
union
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(BANKACCOUNTTRANSACTION.POSTDATE, PD.POSTDATE) , PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.BANKACCOUNTTRANSACTION on PD.FINANCIALTRANSACTIONID = BANKACCOUNTTRANSACTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 4
and ((BANKACCOUNTTRANSACTION.TRANSACTIONTYPECODE in (17, 32) and PD.TRANSACTIONTYPECODE = 1) or (BANKACCOUNTTRANSACTION.TRANSACTIONTYPECODE in (16, 33) and PD.TRANSACTIONTYPECODE = 0))
union
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(BANKACCOUNTTRANSACTION.POSTDATE, PD.POSTDATE), PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.BANKACCOUNTDEPOSITCORRECTION on PD.FINANCIALTRANSACTIONID = BANKACCOUNTDEPOSITCORRECTION.ID
left join dbo.BANKACCOUNTTRANSACTION on BANKACCOUNTDEPOSITCORRECTION.DEPOSITID = BANKACCOUNTTRANSACTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 3
and ((BANKACCOUNTDEPOSITCORRECTION.CORRECTIONTYPECODE in (0, 2) and PD.TRANSACTIONTYPECODE = 1) or (BANKACCOUNTDEPOSITCORRECTION.CORRECTIONTYPECODE in (1, 3) and PD.TRANSACTIONTYPECODE = 0))
union
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(BAT.POSTDATE, PD.POSTDATE), PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.CREDITPAYMENT as REFUND on PD.CREDITPAYMENTID = REFUND.ID
left join dbo.BANKACCOUNTDEPOSITCREDITPAYMENT on REFUND.ID = BANKACCOUNTDEPOSITCREDITPAYMENT.ID
left join dbo.BANKACCOUNTTRANSACTION as BAT on BANKACCOUNTDEPOSITCREDITPAYMENT.DEPOSITID = BAT.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 6
and PD.TRANSACTIONTYPECODE = 1
) V1
group by V1.ACCOUNT, V1.PostDate, V1.TRANSACTIONTYPECODE, V1.JOURNAL, V1.GLACCOUNTID
option (recompile)
end
else -- Summary by deposit
begin
insert into @WORKTABLE (GLTRANSACTIONID, ACCOUNTSTRING, POSTDATE, TRANTYPE, DEBITCREDIT, AMOUNT, JOURNAL, REFERENCE, BATCH, PROJECT, GLACCOUNTID, BASECURRENCYID, ORGANIZATIONAMOUNT)
select '99999999-9999-9999-9999-999999999999', V1.ACCOUNT, V1.PostDate, 'R', case V1.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,
sum(V1.AMOUNT), V1.JOURNAL,
case when (V1.DEPOSITID IS null or @CASHREFERENCE != 'Summarized Cash') then @CASHREFERENCE else @DEPOSITSUMMARIZED + ' - ' + Cast(BAT.TRANSACTIONNUMBER as nvarchar(10)) + ' - ' + BA.ACCOUNTNAME end, null, '', V1.GLACCOUNTID, @BASECURRENCYID, sum(V1.ORGAMOUNT)
from
(
select PD.GLTRANSACTIONID, PD.ACCOUNT, coalesce(ADJUSTMENT.POSTDATE, BANKACCOUNTTRANSACTION.POSTDATE,PD.POSTDATE) as PostDate, PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, BANKACCOUNTDEPOSITPAYMENT.DEPOSITID, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING on PD.GLPAYMENTMETHODREVENUETYPEMAPPINGID = GLPAYMENTMETHODREVENUETYPEMAPPING.id
left join dbo.ADJUSTMENT on PD.FINANCIALTRANSACTIONID = ADJUSTMENT.REVENUEID and ADJUSTMENT.POSTSTATUSCODE = 1
left join dbo.BANKACCOUNTDEPOSITPAYMENT on PD.FINANCIALTRANSACTIONID = BANKACCOUNTDEPOSITPAYMENT.ID
left join dbo.BANKACCOUNTTRANSACTION on BANKACCOUNTDEPOSITPAYMENT.DEPOSITID = BANKACCOUNTTRANSACTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 1
and (
(
GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 0
and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE in (0,1,2,3,4,5,6,7,8,10,11,13,18,19,203)
and PD.TRANSACTIONTYPECODE = 0
and (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUESPLITTYPECODE <> 19 or GLPAYMENTMETHODREVENUETYPEMAPPING.TRANSACTIONTYPECODE = 0)
)
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 200 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 200)
or (
GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 201
and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 201
and PD.TRANSACTIONTYPECODE = 0
and (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUESPLITTYPECODE <> 19 OR GLPAYMENTMETHODREVENUETYPEMAPPING.TRANSACTIONTYPECODE = 0)
)
)
union
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(BANKACCOUNTTRANSACTION.POSTDATE, PD.POSTDATE), PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, null, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.BANKACCOUNTTRANSACTION on PD.FINANCIALTRANSACTIONID = BANKACCOUNTTRANSACTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 4
and ((BANKACCOUNTTRANSACTION.TRANSACTIONTYPECODE in (17, 32) and PD.TRANSACTIONTYPECODE = 1) or (BANKACCOUNTTRANSACTION.TRANSACTIONTYPECODE in (16, 33) and PD.TRANSACTIONTYPECODE = 0))
union
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(BANKACCOUNTTRANSACTION.POSTDATE, PD.POSTDATE), PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, BANKACCOUNTDEPOSITCORRECTION.DEPOSITID, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.BANKACCOUNTDEPOSITCORRECTION on PD.FINANCIALTRANSACTIONID = BANKACCOUNTDEPOSITCORRECTION.ID
left join dbo.BANKACCOUNTTRANSACTION on BANKACCOUNTDEPOSITCORRECTION.DEPOSITID = BANKACCOUNTTRANSACTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 3
and ((BANKACCOUNTDEPOSITCORRECTION.CORRECTIONTYPECODE in (0, 2) and PD.TRANSACTIONTYPECODE = 1) or (BANKACCOUNTDEPOSITCORRECTION.CORRECTIONTYPECODE in (1, 3) and PD.TRANSACTIONTYPECODE = 0))
union
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(BAT.POSTDATE, PD.POSTDATE), PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, BAT.ID, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.CREDITPAYMENT as REFUND ON PD.CREDITPAYMENTID = REFUND.ID
left join dbo.BANKACCOUNTDEPOSITCREDITPAYMENT on REFUND.ID = BANKACCOUNTDEPOSITCREDITPAYMENT.ID
left join dbo.BANKACCOUNTTRANSACTION as BAT ON BANKACCOUNTDEPOSITCREDITPAYMENT.DEPOSITID = BAT.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 6
and PD.TRANSACTIONTYPECODE = 1
) V1
left join dbo.BANKACCOUNTTRANSACTION BAT on BAT.ID = V1.DEPOSITID
left join dbo.BANKACCOUNT BA on BA.ID = BAT.BANKACCOUNTID
group by V1.ACCOUNT, V1.PostDate, V1.JOURNAL, V1.DEPOSITID, V1.TRANSACTIONTYPECODE, V1.GLACCOUNTID, BAT.TRANSACTIONNUMBER, BA.ACCOUNTNAME
option (recompile)
end
update @PD2 set ISUSED = 1
from @PD2 tv1 inner join
(
select PD.GLTRANSACTIONID
from @PD2 as PD inner join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING on PD.GLPAYMENTMETHODREVENUETYPEMAPPINGID = GLPAYMENTMETHODREVENUETYPEMAPPING.id
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 1
and (
(
GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 0
and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE in (0,1,2,3,4,5,6,7,8,11,13,18,19,203)
and PD.TRANSACTIONTYPECODE = 0
)
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 200 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 200)
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 201 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 201 and PD.TRANSACTIONTYPECODE = 0)
or (
GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 0
and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 10
and (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUESPLITTYPECODE <> 19 OR GLPAYMENTMETHODREVENUETYPEMAPPING.TRANSACTIONTYPECODE = 0)
)
)
union all
select PD.GLTRANSACTIONID
from @PD2 as PD inner join dbo.BANKACCOUNTTRANSACTION on PD.FINANCIALTRANSACTIONID = BANKACCOUNTTRANSACTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 4
and ((BANKACCOUNTTRANSACTION.TRANSACTIONTYPECODE in (17, 32) and PD.TRANSACTIONTYPECODE = 1) or (BANKACCOUNTTRANSACTION.TRANSACTIONTYPECODE in (16, 33) and PD.TRANSACTIONTYPECODE = 0))
union all
select PD.GLTRANSACTIONID
from @PD2 as PD inner join dbo.BANKACCOUNTDEPOSITCORRECTION on PD.FINANCIALTRANSACTIONID = BANKACCOUNTDEPOSITCORRECTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 3
and ((BANKACCOUNTDEPOSITCORRECTION.CORRECTIONTYPECODE in (0, 2) and PD.TRANSACTIONTYPECODE = 1) or (BANKACCOUNTDEPOSITCORRECTION.CORRECTIONTYPECODE in (1, 3) and PD.TRANSACTIONTYPECODE = 0))
union all
select PD.GLTRANSACTIONID
from @PD2 as PD inner join dbo.CREDITPAYMENT as REFUND on PD.CREDITPAYMENTID = REFUND.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 6
and PD.TRANSACTIONTYPECODE = 1
) V1 on tv1.GLTRANSACTIONID = V1.GLTRANSACTIONID
option (recompile)
if @RECEIVABLEPOSTMETHOD = 0 -- Detail
insert into @WORKTABLE (GLTRANSACTIONID, ACCOUNTSTRING, POSTDATE, TRANTYPE, DEBITCREDIT, AMOUNT, JOURNAL, REFERENCE, BATCH, PROJECT, GLACCOUNTID, BASECURRENCYID, ORGANIZATIONAMOUNT)
select PD.GLTRANSACTIONID, PD.ACCOUNT, coalesce(adj.POSTDATE, f.POSTDATE, PD.POSTDATE),'R',case PD.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end, PD.AMOUNT, JOURNAL, left(PD.COMMENT, 255), PD.BATCHID, PD.PROJECT, PD.GLACCOUNTID, @BASECURRENCYID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on PD.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BANKACCOUNTDEPOSITPAYMENT as e on PD.FINANCIALTRANSACTIONID = e.ID
left outer join dbo.BANKACCOUNTTRANSACTION f on f.ID = e.DEPOSITID
left outer join dbo.ADJUSTMENT adj on PD.FINANCIALTRANSACTIONID = adj.REVENUEID and adj.POSTSTATUSCODE = 1
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 1
and (
(d.REVENUETRANSACTIONTYPECODE = 1 and d.APPLICATIONCODE = 0 and PD.TRANSACTIONTYPECODE = 0) --Pledge transaction, gift application, debit mapping type
or (d.REVENUETRANSACTIONTYPECODE = 15 and d.APPLICATIONCODE in (0,5,18) and PD.TRANSACTIONTYPECODE = 0) --Membership installment plan transaction; gift, membership, add-on application; debit
or (d.REVENUETRANSACTIONTYPECODE = 5 and d.APPLICATIONCODE in (0,9,5,1,16,18) and PD.TRANSACTIONTYPECODE = 0)
or (d.REVENUETRANSACTIONTYPECODE = 0 and d.APPLICATIONCODE in (2,8,10,203) and PD.TRANSACTIONTYPECODE = 1 and d.REVENUESPLITTYPECODE <> 19) --AR Payments: Pledge, Grant Award, Order, Membership Installment Plan Credit Transactions | Not liability (split)
or (d.REVENUETRANSACTIONTYPECODE = 1 and d.APPLICATIONCODE = 0 and PD.TRANSACTIONTYPECODE = 1 and PAYMENTMETHODCODE = 205)
)
union
select PD.GLTRANSACTIONID, PD.ACCOUNT, PD.POSTDATE, 'R', case PD.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end, PD.AMOUNT, JOURNAL, left(PD.COMMENT, 255), PD.BATCHID, PD.PROJECT, PD.GLACCOUNTID, @BASECURRENCYID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.FINANCIALTRANSACTIONLINEITEM as DISCOUNT on PD.CREDITITEMID = DISCOUNT.ID and DISCOUNT.TYPECODE = 5
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 6
and PD.TRANSACTIONTYPECODE = 0
option (recompile)
else -- Summary
begin
insert into @WORKTABLE (GLTRANSACTIONID, ACCOUNTSTRING, POSTDATE, TRANTYPE, DEBITCREDIT, AMOUNT, JOURNAL, REFERENCE, BATCH, PROJECT, BASECURRENCYID, GLACCOUNTID, ORGANIZATIONAMOUNT)
select '99999999-9999-9999-9999-999999999999', V1.ACCOUNT, V1.postdate, 'R', case V1.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,
sum(V1.AMOUNT),V1.JOURNAL,@RECEIVABLEREFERENCE,null,'', @BASECURRENCYID, V1.GLACCOUNTID, sum(V1.ORGAMOUNT)
from
(
select PD.GLTRANSACTIONID, PD.ACCOUNT, coalesce(ADJUSTMENT.POSTDATE, BANKACCOUNTTRANSACTION.POSTDATE, PD.POSTDATE) as PostDate, PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING on PD.GLPAYMENTMETHODREVENUETYPEMAPPINGID = GLPAYMENTMETHODREVENUETYPEMAPPING.ID
left join dbo.BANKACCOUNTDEPOSITPAYMENT on PD.FINANCIALTRANSACTIONID = BANKACCOUNTDEPOSITPAYMENT.ID
left join dbo.BANKACCOUNTTRANSACTION on BANKACCOUNTDEPOSITPAYMENT.DEPOSITID = BANKACCOUNTTRANSACTION.ID
left join dbo.ADJUSTMENT on PD.FINANCIALTRANSACTIONID = ADJUSTMENT.REVENUEID and ADJUSTMENT.POSTSTATUSCODE = 1
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 1
and (
(--Pledge transaction, gift application, debit mapping type
GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 1
and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 0
and PD.TRANSACTIONTYPECODE = 0
)
or ( --Membership installment plan transaction; gift, membership, add-on application; debit
GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 15
and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE in (0,5,18)
and PD.TRANSACTIONTYPECODE = 0
)
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 5 and PD.TRANSACTIONTYPECODE = 0)
or ( --AR Payments: Pledge, Grant Award, Order, Membership Installment Plan Credit Transactions
GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 0
and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE in (2,8,10,203)
and PD.TRANSACTIONTYPECODE = 1
and GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUESPLITTYPECODE <> 19 --Liability
)
or (
GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 1
and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 0
and PD.TRANSACTIONTYPECODE = 1
and PAYMENTMETHODCODE = 205
)
)
union
select PD.GLTRANSACTIONID, PD.ACCOUNT, PD.POSTDATE, PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.FINANCIALTRANSACTIONLINEITEM as DISCOUNT on PD.CREDITITEMID = DISCOUNT.ID and DISCOUNT.TYPECODE = 5
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 6
and PD.TRANSACTIONTYPECODE = 0
) V1
group by V1.ACCOUNT, V1.postdate, V1.TRANSACTIONTYPECODE, V1.JOURNAL, V1.GLACCOUNTID
option (recompile)
end
update @PD2 set ISUSED = 1
from @PD2 tv1 inner join
(
select PD.GLTRANSACTIONID
from @PD2 as PD inner join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING on PD.GLPAYMENTMETHODREVENUETYPEMAPPINGID = GLPAYMENTMETHODREVENUETYPEMAPPING.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 1
and (
(--Pledge transaction, gift application, debit mapping type
GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 1
and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 0
and PD.TRANSACTIONTYPECODE = 0
)
or ( --Membership installment plan transaction; gift, membership, add-on application; debit
GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 15
and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE in (0,5,18)
and PD.TRANSACTIONTYPECODE = 0
)
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 5 and PD.TRANSACTIONTYPECODE = 0)
or ( --AR Payments: Pledge, Grant Award, Order, Membership Installment Plan Credit Transactions
GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 0
and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE in (2,8,10,203)
and PD.TRANSACTIONTYPECODE = 1
and GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUESPLITTYPECODE <> 19 --Liability
)
or (
GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 1
and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 0
and PD.TRANSACTIONTYPECODE = 1
and PAYMENTMETHODCODE = 205
)
)
union
select PD.GLTRANSACTIONID
from @PD2 as PD inner join dbo.FINANCIALTRANSACTIONLINEITEM as DISCOUNT on PD.CREDITITEMID = DISCOUNT.ID and DISCOUNT.TYPECODE = 5
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 6
and PD.TRANSACTIONTYPECODE = 0
) V1 on tv1.GLTRANSACTIONID = V1.GLTRANSACTIONID
option (recompile)
--Revaluation gain/loss
if @REVALUATIONGAINLOSSPOSTMETHOD = 0 -- Detail
begin
insert into @WORKTABLE
(GLTRANSACTIONID, ACCOUNTSTRING, POSTDATE, TRANTYPE, DEBITCREDIT, AMOUNT, JOURNAL, REFERENCE, BATCH, PROJECT, GLACCOUNTID, BASECURRENCYID, ORGANIZATIONAMOUNT)
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(adj.POSTDATE, PD.POSTDATE), 'R', case PD.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,
PD.AMOUNT, JOURNAL, left(PD.COMMENT, 255), PD.BATCHID, PD.PROJECT, PD.GLACCOUNTID, @BASECURRENCYID, PD.ORGAMOUNT
from @PD2 as PD left outer join dbo.UNREALIZEDGAINLOSSADJUSTMENT adj on PD.FINANCIALTRANSACTIONID = adj.REVENUEID and adj.POSTSTATUSCODE = 1
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 14
option (recompile)
end
else -- Revaluation Gain/Loss Summary
begin
insert into @WORKTABLE
(GLTRANSACTIONID, ACCOUNTSTRING, POSTDATE, TRANTYPE, DEBITCREDIT, AMOUNT, JOURNAL, REFERENCE, BATCH, PROJECT, GLACCOUNTID, BASECURRENCYID, ORGANIZATIONAMOUNT)
select '99999999-9999-9999-9999-999999999999', V1.ACCOUNT, V1.POSTDATE, 'R', case V1.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,
sum(V1.AMOUNT), V1.JOURNAL, @REVALUATIONGAINLOSSREFERENCE, null, '', V1.GLACCOUNTID, @BASECURRENCYID, sum(V1.ORGAMOUNT)
from (
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(UNREALIZEDGAINLOSSADJUSTMENT.POSTDATE, PD.POSTDATE) as PostDate,
PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD left join dbo.UNREALIZEDGAINLOSSADJUSTMENT on PD.FINANCIALTRANSACTIONID = UNREALIZEDGAINLOSSADJUSTMENT.REVENUEID and UNREALIZEDGAINLOSSADJUSTMENT.POSTSTATUSCODE = 1
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 14
) V1
group by V1.ACCOUNT, V1.postdate, V1.TRANSACTIONTYPECODE, V1.JOURNAL, V1.GLACCOUNTID
option (recompile)
end
update @PD2
set ISUSED = 1
from @PD2 tv1
inner join (
select PD.GLTRANSACTIONID
from @PD2 as PD
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 14
) V1 on tv1.GLTRANSACTIONID = V1.GLTRANSACTIONID
option (recompile)
insert into @WORKTABLE (GLTRANSACTIONID, ACCOUNTSTRING, POSTDATE, TRANTYPE, DEBITCREDIT, AMOUNT, JOURNAL, REFERENCE, BATCH, PROJECT, GLACCOUNTID, BASECURRENCYID, ORGANIZATIONAMOUNT)
select V1.GLTRANSACTIONID, V1.ACCOUNT, COALESCE(ADJUSTMENT.POSTDATE, GIFTFEEADJUSTMENT.POSTDATE, BANKACCOUNTTRANSACTION.POSTDATE, BAT2.POSTDATE, UNREALIZEDGAINLOSSADJUSTMENT.POSTDATE, V1.POSTDATE),
'R', case V1.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end, V1.AMOUNT, V1.JOURNAL, left(case when V1.ISREVERSAL = 0 then V1.COMMENT else 'Reversal' + ' - ' + V1.COMMENT end, 255),
V1.BATCHID, V1.PROJECT, V1.GLACCOUNTID, @BASECURRENCYID, V1.ORGAMOUNT
from (
select distinct PD.GLTRANSACTIONID, PD.ACCOUNT, PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, PD.ISREVERSAL, PD.COMMENT, PD.BATCHID, PD.PROJECT, PD.ORGAMOUNT, PD.FINANCIALTRANSACTIONID, PD.POSTDATE, PD.GLACCOUNTID
from @PD2 as PD where ISUSED = 0
) V1
left join dbo.JOURNALENTRY_EXT as JE1 on V1.GLTRANSACTIONID = JE1.ID and JE1.TABLENAMECODE = 1
left join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING on JE1.GLPAYMENTMETHODREVENUETYPEMAPPINGID = GLPAYMENTMETHODREVENUETYPEMAPPING.ID
left join dbo.BANKACCOUNTDEPOSITPAYMENT on V1.FINANCIALTRANSACTIONID = BANKACCOUNTDEPOSITPAYMENT.ID
left join dbo.FINANCIALTRANSACTION as BANKACCOUNTTRANSACTION on BANKACCOUNTDEPOSITPAYMENT.DEPOSITID = BANKACCOUNTTRANSACTION.ID
left join dbo.ADJUSTMENT on V1.FINANCIALTRANSACTIONID = ADJUSTMENT.REVENUEID and ADJUSTMENT.POSTSTATUSCODE = 1
left join dbo.FINANCIALTRANSACTION as BAT2 on V1.FINANCIALTRANSACTIONID = BAT2.ID and BAT2.POSTSTATUSCODE = 1
left join dbo.UNREALIZEDGAINLOSSADJUSTMENT on V1.FINANCIALTRANSACTIONID = UNREALIZEDGAINLOSSADJUSTMENT.REVENUEID and UNREALIZEDGAINLOSSADJUSTMENT.POSTSTATUSCODE = 1
left join dbo.BENEFITADJUSTMENT ON v1.FINANCIALTRANSACTIONID = BENEFITADJUSTMENT.REVENUEID and BENEFITADJUSTMENT.POSTSTATUSCODE = 1
left join dbo.GIFTFEEADJUSTMENT ON v1.FINANCIALTRANSACTIONID = GIFTFEEADJUSTMENT.REVENUEID and GIFTFEEADJUSTMENT.POSTSTATUSCODE = 1
option (recompile)
end -- if @SUMMARIZEDATE = 0
else -- by Fiscal Period
begin
if @REVENUEPOSTMETHOD = 0 -- Detail
begin
insert into @WORKTABLE (GLTRANSACTIONID ,ACCOUNTSTRING, POSTDATE, TRANTYPE, DEBITCREDIT, AMOUNT, JOURNAL, REFERENCE, BATCH, PROJECT, GLACCOUNTID, BASECURRENCYID,ORGANIZATIONAMOUNT)
select PD.GLTRANSACTIONID,PD.ACCOUNT, coalesce(adj.POSTDATE, f.POSTDATE, PD.POSTDATE),
'R',case PD.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end, PD.AMOUNT, JOURNAL, left(PD.COMMENT, 255),PD.BATCHID, PD.PROJECT, PD.GLACCOUNTID, @BASECURRENCYID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on PD.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BANKACCOUNTDEPOSITPAYMENT as e on PD.FINANCIALTRANSACTIONID = e.ID
left outer join dbo.BANKACCOUNTTRANSACTION f on f.ID = e.DEPOSITID
left outer join dbo.ADJUSTMENT adj on PD.FINANCIALTRANSACTIONID = adj.REVENUEID and adj.POSTSTATUSCODE = 1
where PD.ISREVERSAL = 0
and PD.TRANSACTIONTYPECODE = 1
and PD.TABLENAMECODE = 1
and (
(d.REVENUETRANSACTIONTYPECODE = 0 and d.APPLICATIONCODE in (0,1,3,4,5,6,7,11,13,18,19))
or (d.REVENUETRANSACTIONTYPECODE = 1 and d.APPLICATIONCODE = 0) --Pledge transaction, gift application
or (d.REVENUETRANSACTIONTYPECODE = 201 and d.APPLICATIONCODE = 201) --Non-bookable pledges
or (d.REVENUETRANSACTIONTYPECODE = 15 and d.APPLICATIONCODE in (0,5,18)) --Membership installment transaction; gift, membership, addon application
)
union
select PD.GLTRANSACTIONID, PD.ACCOUNT, PD.POSTDATE, 'R', case PD.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end, PD.AMOUNT, JOURNAL, left(case PD.IsReversal when 0 then '' else 'Reversal - ' end + PD.COMMENT, 255), PD.BATCHID, PD.PROJECT, PD.GLACCOUNTID, @BASECURRENCYID, PD.ORGAMOUNT
from @PD2 as PD left join dbo.CREDITPAYMENT as REFUND on PD.CREDITPAYMENTID = REFUND.ID
left join dbo.FINANCIALTRANSACTIONLINEITEM as DISCOUNT on PD.CREDITITEMID = DISCOUNT.ID
where PD.TABLENAMECODE = 6
and (
(DISCOUNT.TYPECODE = 5 and PD.TRANSACTIONTYPECODE = 1)
or (REFUND.ID is not null and PD.TRANSACTIONTYPECODE = 0)
)
union all
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(adj.POSTDATE, PD.POSTDATE), 'R', case PD.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end, PD.AMOUNT, JOURNAL, left(PD.COMMENT, 255), PD.BATCHID, PD.PROJECT, PD.GLACCOUNTID, @BASECURRENCYID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on PD.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BENEFITADJUSTMENT adj on PD.FINANCIALTRANSACTIONID = adj.REVENUEID and adj.POSTSTATUSCODE = 1
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 5
option (recompile)
end
else
if @REVENUEPOSTMETHOD = 1 -- Summary
begin
insert into @WORKTABLE (GLTRANSACTIONID, ACCOUNTSTRING, POSTDATE, TRANTYPE, DEBITCREDIT, AMOUNT, JOURNAL, REFERENCE, BATCH, PROJECT, GLACCOUNTID, BASECURRENCYID, ORGANIZATIONAMOUNT)
select '99999999-9999-9999-9999-999999999999', V1.Account, GLFISCALPERIOD.ENDDATE, 'R', case when V1.TRANSACTIONTYPECODE = 1 THEN 'C' else 'D' end, sum(V1.AMOUNT), V1.JOURNAL, @REVENUEREFERENCE, null, '', V1.GLACCOUNTID, @BASECURRENCYID, sum(V1.ORGAMOUNT)
from
(
select PD.GLTRANSACTIONID, PD.ACCOUNT, coalesce(ADJUSTMENT.POSTDATE, BANKACCOUNTTRANSACTION.POSTDATE, PD.POSTDATE) as PostDate, PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING on PD.GLPAYMENTMETHODREVENUETYPEMAPPINGID = GLPAYMENTMETHODREVENUETYPEMAPPING.id
left join dbo.ADJUSTMENT on PD.FINANCIALTRANSACTIONID = ADJUSTMENT.REVENUEID and ADJUSTMENT.POSTSTATUSCODE = 1
left join dbo.BANKACCOUNTDEPOSITPAYMENT on PD.FINANCIALTRANSACTIONID = BANKACCOUNTDEPOSITPAYMENT.ID
left join dbo.BANKACCOUNTTRANSACTION on BANKACCOUNTDEPOSITPAYMENT.DEPOSITID = BANKACCOUNTTRANSACTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 1
and PD.TRANSACTIONTYPECODE = 1
--Firebird branch has GLTransaction.PostStatusCode = 1 here. It's not in the detail section above and is implied by inclusion in @InRecords
and (
(GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 0 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE in (0,1,3,4,5,6,7,11,13,18,19))
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 1 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 0)
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 201 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 201)
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 15 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE in (0,5,18)) --Membership installment transaction; gift, membership, addon application
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 5)
)
union
select PD.GLTRANSACTIONID, PD.ACCOUNT, PD.POSTDATE, PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD left join dbo.CREDITPAYMENT as REFUND on PD.CREDITPAYMENTID = REFUND.ID
left join dbo.FINANCIALTRANSACTIONLINEITEM as DISCOUNT on PD.CREDITITEMID = DISCOUNT.ID
where PD.TABLENAMECODE = 6
and (
(DISCOUNT.TYPECODE = 5 and PD.TRANSACTIONTYPECODE = 1)
or (REFUND.ID is not null and PD.TRANSACTIONTYPECODE = 0)
)
union --all
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(BANKACCOUNTTRANSACTION.POSTDATE, PD.POSTDATE), PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.BANKACCOUNTTRANSACTION on PD.FINANCIALTRANSACTIONID = BANKACCOUNTTRANSACTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 4
and ((BANKACCOUNTTRANSACTION.TRANSACTIONTYPECODE in (16, 33) and PD.TRANSACTIONTYPECODE = 1) or (BANKACCOUNTTRANSACTION.TRANSACTIONTYPECODE in (17, 32) and PD.TRANSACTIONTYPECODE = 0))
union --all
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(BANKACCOUNTTRANSACTION.POSTDATE, PD.POSTDATE), PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.BANKACCOUNTDEPOSITCORRECTION on PD.FINANCIALTRANSACTIONID = BANKACCOUNTDEPOSITCORRECTION.ID
left join dbo.BANKACCOUNTTRANSACTION on BANKACCOUNTDEPOSITCORRECTION.DEPOSITID = BANKACCOUNTTRANSACTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 3
and ((BANKACCOUNTDEPOSITCORRECTION.CORRECTIONTYPECODE in (1, 3) and PD.TRANSACTIONTYPECODE = 1) or (BANKACCOUNTDEPOSITCORRECTION.CORRECTIONTYPECODE in (0, 2) and PD.TRANSACTIONTYPECODE = 0))
) V1 inner join dbo.GLFISCALPERIOD on cast(V1.PostDate as date) between GLFISCALPERIOD.STARTDATE and GLFISCALPERIOD.ENDDATE
group by V1.ACCOUNT, GLFISCALPERIOD.ENDDATE, V1.JOURNAL, V1.TRANSACTIONTYPECODE, V1.GLACCOUNTID
option (recompile)
insert into @WORKTABLE (GLTRANSACTIONID, ACCOUNTSTRING, POSTDATE, TRANTYPE, DEBITCREDIT, AMOUNT, JOURNAL, REFERENCE, BATCH, PROJECT, GLACCOUNTID, BASECURRENCYID, ORGANIZATIONAMOUNT)
select '99999999-9999-9999-9999-999999999999', V1.ACCOUNT,
GLFISCALPERIOD.ENDDATE, 'R', case V1.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,
sum(V1.AMOUNT), V1.JOURNAL, @BENEFITSUMMARIZED, null, '', V1.GLACCOUNTID, @BASECURRENCYID, sum(V1.ORGAMOUNT)
from
(
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(adj.POSTDATE, PD.POSTDATE) as Postdate, PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on PD.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BENEFITADJUSTMENT adj on PD.FINANCIALTRANSACTIONID = adj.REVENUEID and adj.POSTSTATUSCODE = 1
where PD.IsReversal = 0
and PD.TABLENAMECODE = 5
) V1 inner join dbo.GLFISCALPERIOD on cast(V1.PostDate as date) between GLFISCALPERIOD.STARTDATE and GLFISCALPERIOD.ENDDATE
group by V1.ACCOUNT, GLFISCALPERIOD.ENDDATE, V1.TRANSACTIONTYPECODE, V1.JOURNAL, V1.GLACCOUNTID
option (recompile)
end
else if @REVENUEPOSTMETHOD = 2 -- Summary by application type
begin
insert into @WORKTABLE (GLTRANSACTIONID, ACCOUNTSTRING, POSTDATE, TRANTYPE, DEBITCREDIT, AMOUNT, JOURNAL, REFERENCE, BATCH,PROJECT, GLACCOUNTID, BASECURRENCYID, ORGANIZATIONAMOUNT)
select '99999999-9999-9999-9999-999999999999', V1.ACCOUNT, GLFISCALPERIOD.ENDDATE, 'R', case when V1.TRANSACTIONTYPECODE = 1 then 'C' else 'D' end, sum(V1.AMOUNT), V1.JOURNAL, @REVENUEREFERENCE+' - '+V1.APPLICATION, null, '', V1.GLACCOUNTID, @BASECURRENCYID, sum(V1.ORGAMOUNT)
from
(
select PD.GLTRANSACTIONID, PD.ACCOUNT, coalesce(ADJUSTMENT.POSTDATE, BANKACCOUNTTRANSACTION.POSTDATE, PD.POSTDATE) as PostDate, PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATION, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING on PD.GLPAYMENTMETHODREVENUETYPEMAPPINGID = GLPAYMENTMETHODREVENUETYPEMAPPING.id
left join dbo.ADJUSTMENT on PD.FINANCIALTRANSACTIONID = ADJUSTMENT.REVENUEID and ADJUSTMENT.POSTSTATUSCODE = 1
left join dbo.BANKACCOUNTDEPOSITPAYMENT on PD.FINANCIALTRANSACTIONID = BANKACCOUNTDEPOSITPAYMENT.ID
left join dbo.BANKACCOUNTTRANSACTION on BANKACCOUNTDEPOSITPAYMENT.DEPOSITID = BANKACCOUNTTRANSACTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 1
and PD.TRANSACTIONTYPECODE = 1
and (
(GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 0 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE in (0,1,3,4,5,6,7,11,13,18,19))
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 1 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 0)
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 201 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 201)
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 15 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE in (0,5,18)) --Membership installment transaction; gift, membership, addon application
or GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 5
)
union
select PD.GLTRANSACTIONID, PD.ACCOUNT, PD.POSTDATE, PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, CREDIT.[TYPE] APPLICATION, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD left join dbo.CREDITPAYMENT as REFUND on PD.CREDITPAYMENTID = REFUND.ID
left join dbo.FINANCIALTRANSACTIONLINEITEM as DISCOUNT on PD.CREDITITEMID = DISCOUNT.ID
left join dbo.CREDITITEM_EXT EXT on EXT.ID = DISCOUNT.ID
left join dbo.CREDIT on EXT.CREDITID = CREDIT.ID or REFUND.CREDITID = CREDIT.ID
where PD.TABLENAMECODE = 6
and (
(DISCOUNT.TYPECODE = 5 and PD.TRANSACTIONTYPECODE = 1)
or (REFUND.ID is not null and PD.TRANSACTIONTYPECODE = 0)
)
union --all
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(BANKACCOUNTTRANSACTION.POSTDATE, PD.POSTDATE) , PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, BANKACCOUNTTRANSACTION.TRANSACTIONTYPE, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.BANKACCOUNTTRANSACTION on PD.FINANCIALTRANSACTIONID = BANKACCOUNTTRANSACTION.ID
left join dbo.JOURNALENTRY_EXT ON PD.GLTRANSACTIONID = JOURNALENTRY_EXT.ID and JOURNALENTRY_EXT.TABLENAMECODE = 1
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 4
and ((BANKACCOUNTTRANSACTION.TRANSACTIONTYPECODE in (16, 33) and PD.TRANSACTIONTYPECODE = 1) or (BANKACCOUNTTRANSACTION.TRANSACTIONTYPECODE in (17, 32) and PD.TRANSACTIONTYPECODE = 0))
union --all
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(BANKACCOUNTTRANSACTION.POSTDATE, PD.POSTDATE), PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, BANKACCOUNTDEPOSITCORRECTION.CORRECTIONTYPE, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.BANKACCOUNTDEPOSITCORRECTION on PD.FINANCIALTRANSACTIONID = BANKACCOUNTDEPOSITCORRECTION.ID
left join dbo.BANKACCOUNTTRANSACTION on BANKACCOUNTDEPOSITCORRECTION.DEPOSITID = BANKACCOUNTTRANSACTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 3
and ((BANKACCOUNTDEPOSITCORRECTION.CORRECTIONTYPECODE in (1, 3) and PD.TRANSACTIONTYPECODE = 1) or (BANKACCOUNTDEPOSITCORRECTION.CORRECTIONTYPECODE in (0, 2) and PD.TRANSACTIONTYPECODE = 0))
) V1 inner join dbo.GLFISCALPERIOD on cast(V1.PostDate as date) between GLFISCALPERIOD.STARTDATE and GLFISCALPERIOD.ENDDATE
group by V1.ACCOUNT, GLFISCALPERIOD.ENDDATE, V1.JOURNAL, V1.APPLICATION, V1.TRANSACTIONTYPECODE, V1.GLACCOUNTID
option (recompile)
insert into @WORKTABLE (GLTRANSACTIONID, ACCOUNTSTRING, POSTDATE, TRANTYPE, DEBITCREDIT, AMOUNT, JOURNAL, REFERENCE, BATCH, PROJECT, GLACCOUNTID, BASECURRENCYID, ORGANIZATIONAMOUNT)
select '99999999-9999-9999-9999-999999999999', V1.Account,
GLFISCALPERIOD.ENDDATE, 'R', case V1.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,
sum(V1.AMOUNT), V1.JOURNAL, @BENEFITSUMMARIZED, null, '', V1.GLACCOUNTID, @BASECURRENCYID, sum(V1.ORGAMOUNT)
from
(
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(adj.POSTDATE, PD.POSTDATE) as Postdate, PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, d.APPLICATION, PD.GLACCOUNTID, PD.ORGAMOUNT
from
@PD2 as PD inner join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on PD.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BENEFITADJUSTMENT adj on PD.FINANCIALTRANSACTIONID = adj.REVENUEID and adj.POSTSTATUSCODE = 1
where PD.IsReversal = 0
and PD.TABLENAMECODE = 5
) V1 inner join dbo.GLFISCALPERIOD on cast(V1.PostDate as date) between GLFISCALPERIOD.STARTDATE and GLFISCALPERIOD.ENDDATE
group by V1.ACCOUNT, GLFISCALPERIOD.ENDDATE, V1.TRANSACTIONTYPECODE, V1.JOURNAL, V1.GLACCOUNTID
option (recompile)
end
else -- Summary by deposit
begin
insert into @WORKTABLE (GLTRANSACTIONID, ACCOUNTSTRING, POSTDATE, TRANTYPE, DEBITCREDIT, AMOUNT, JOURNAL, REFERENCE, BATCH, PROJECT, GLACCOUNTID, BASECURRENCYID, ORGANIZATIONAMOUNT)
select '99999999-9999-9999-9999-999999999999', V1.Account, GLFISCALPERIOD.ENDDATE, 'R', case when V1.TRANSACTIONTYPECODE = 1 THEN 'C' else 'D' end, sum(V1.AMOUNT), V1.JOURNAL,
case when (V1.DEPOSITID IS null or @REVENUEREFERENCE != 'Summarized Revenue') then @REVENUEREFERENCE else @DEPOSITSUMMARIZED + ' - ' + Cast(BAT.TRANSACTIONNUMBER as nvarchar(10)) + ' - ' + BA.ACCOUNTNAME end, null, '', V1.GLACCOUNTID, @BASECURRENCYID, sum(V1.ORGAMOUNT)
from
(
select PD.GLTRANSACTIONID, PD.ACCOUNT, coalesce(ADJUSTMENT.POSTDATE, BANKACCOUNTTRANSACTION.POSTDATE, PD.POSTDATE) as PostDate, PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, PD.GLACCOUNTID, PD.ORGAMOUNT, BANKACCOUNTDEPOSITPAYMENT.DEPOSITID
from @PD2 as PD inner join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING on PD.GLPAYMENTMETHODREVENUETYPEMAPPINGID = GLPAYMENTMETHODREVENUETYPEMAPPING.id
left join dbo.ADJUSTMENT on PD.FINANCIALTRANSACTIONID = ADJUSTMENT.REVENUEID and ADJUSTMENT.POSTSTATUSCODE = 1
left join dbo.BANKACCOUNTDEPOSITPAYMENT on PD.FINANCIALTRANSACTIONID = BANKACCOUNTDEPOSITPAYMENT.ID
left join dbo.BANKACCOUNTTRANSACTION on BANKACCOUNTDEPOSITPAYMENT.DEPOSITID = BANKACCOUNTTRANSACTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 1
and PD.TRANSACTIONTYPECODE = 1
--Firebird branch has GLTransaction.PostStatusCode = 1 here. It's not in the detail section above and is implied by inclusion in @InRecords
and (
(GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 0 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE in (0,1,3,4,5,6,7,11,13,18,19))
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 1 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 0)
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 201 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 201)
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 15 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE in (0,5,18)) --Membership installment transaction; gift, membership, addon application
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 5)
)
union
select PD.GLTRANSACTIONID, PD.ACCOUNT, PD.POSTDATE, PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, PD.GLACCOUNTID, PD.ORGAMOUNT, BADP.DEPOSITID
from @PD2 as PD left join dbo.CREDITPAYMENT as REFUND on PD.CREDITPAYMENTID = REFUND.ID
left join dbo.FINANCIALTRANSACTIONLINEITEM as DISCOUNT on PD.CREDITITEMID = DISCOUNT.ID
left join dbo.BANKACCOUNTDEPOSITPAYMENT BADP on BADP.ID = PD.FINANCIALTRANSACTIONID
where PD.TABLENAMECODE = 6
and (
(DISCOUNT.TYPECODE = 5 and PD.TRANSACTIONTYPECODE = 1)
or (REFUND.ID is not null and PD.TRANSACTIONTYPECODE = 0)
)
union --all
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(BANKACCOUNTTRANSACTION.POSTDATE, PD.POSTDATE), PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, PD.GLACCOUNTID, PD.ORGAMOUNT, BANKACCOUNTTRANSACTION.ID [DEPOSITID]
from @PD2 as PD inner join dbo.BANKACCOUNTTRANSACTION on PD.FINANCIALTRANSACTIONID = BANKACCOUNTTRANSACTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 4
and ((BANKACCOUNTTRANSACTION.TRANSACTIONTYPECODE in (16, 33) and PD.TRANSACTIONTYPECODE = 1) or (BANKACCOUNTTRANSACTION.TRANSACTIONTYPECODE in (17, 32) and PD.TRANSACTIONTYPECODE = 0))
union --all
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(BANKACCOUNTTRANSACTION.POSTDATE, PD.POSTDATE), PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, PD.GLACCOUNTID, PD.ORGAMOUNT, BANKACCOUNTTRANSACTION.ID [DEPOSITID]
from @PD2 as PD inner join dbo.BANKACCOUNTDEPOSITCORRECTION on PD.FINANCIALTRANSACTIONID = BANKACCOUNTDEPOSITCORRECTION.ID
left join dbo.BANKACCOUNTTRANSACTION on BANKACCOUNTDEPOSITCORRECTION.DEPOSITID = BANKACCOUNTTRANSACTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 3
and ((BANKACCOUNTDEPOSITCORRECTION.CORRECTIONTYPECODE in (1, 3) and PD.TRANSACTIONTYPECODE = 1) or (BANKACCOUNTDEPOSITCORRECTION.CORRECTIONTYPECODE in (0, 2) and PD.TRANSACTIONTYPECODE = 0))
) V1 inner join dbo.GLFISCALPERIOD on cast(V1.PostDate as date) between GLFISCALPERIOD.STARTDATE and GLFISCALPERIOD.ENDDATE
left join dbo.BANKACCOUNTTRANSACTION BAT on V1.DEPOSITID = BAT.ID
left join dbo.BANKACCOUNT BA on BAT.BANKACCOUNTID = BA.ID
group by V1.DEPOSITID, V1.ACCOUNT, GLFISCALPERIOD.ENDDATE, V1.JOURNAL, V1.TRANSACTIONTYPECODE, V1.GLACCOUNTID, BAT.TRANSACTIONNUMBER, BA.ACCOUNTNAME
option (recompile)
insert into @WORKTABLE (GLTRANSACTIONID, ACCOUNTSTRING, POSTDATE, TRANTYPE, DEBITCREDIT, AMOUNT, JOURNAL, REFERENCE, BATCH, PROJECT, GLACCOUNTID, BASECURRENCYID, ORGANIZATIONAMOUNT)
select '99999999-9999-9999-9999-999999999999', V1.ACCOUNT,
GLFISCALPERIOD.ENDDATE, 'R', case V1.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,
sum(V1.AMOUNT), V1.JOURNAL, @BENEFITSUMMARIZED, null, '', V1.GLACCOUNTID, @BASECURRENCYID, sum(V1.ORGAMOUNT)
from (
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(adj.POSTDATE, PD.POSTDATE) as Postdate, PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on PD.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BENEFITADJUSTMENT adj on PD.FINANCIALTRANSACTIONID = adj.REVENUEID and adj.POSTSTATUSCODE = 1
where PD.IsReversal = 0
and PD.TABLENAMECODE = 5
) V1 inner join dbo.GLFISCALPERIOD on cast(V1.PostDate as date) between GLFISCALPERIOD.STARTDATE and GLFISCALPERIOD.ENDDATE
group by V1.ACCOUNT, GLFISCALPERIOD.ENDDATE, V1.TRANSACTIONTYPECODE, V1.JOURNAL, V1.GLACCOUNTID
option (recompile)
end
update @PD2 set ISUSED = 1
from @PD2 tv1 inner join
(
select PD.GLTRANSACTIONID
from @PD2 as PD inner join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING on PD.GLPAYMENTMETHODREVENUETYPEMAPPINGID = GLPAYMENTMETHODREVENUETYPEMAPPING.ID
where PD.ISREVERSAL = 0
and PD.TRANSACTIONTYPECODE = 1
and PD.TABLENAMECODE = 1
and (
(GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 0 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE in (0,1,3,4,5,6,7,11,13,18,19))
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 1 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 0)
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 201 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 201)
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 15 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE in (0,5,18)) --Membership installment transaction; gift, membership, addon application
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 5 and @REVENUEPOSTMETHOD != 0)
)
union all
select PD.GLTRANSACTIONID
from @PD2 as PD inner join dbo.BANKACCOUNTTRANSACTION on PD.FINANCIALTRANSACTIONID = BANKACCOUNTTRANSACTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 4
and ((BANKACCOUNTTRANSACTION.TRANSACTIONTYPECODE in (16, 33) and PD.TRANSACTIONTYPECODE = 1) or (BANKACCOUNTTRANSACTION.TRANSACTIONTYPECODE in (17, 32) and PD.TRANSACTIONTYPECODE = 0))
and @REVENUEPOSTMETHOD != 0
union all
select PD.GLTRANSACTIONID
from @PD2 as PD inner join dbo.BANKACCOUNTDEPOSITCORRECTION on PD.FINANCIALTRANSACTIONID = BANKACCOUNTDEPOSITCORRECTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 3
and ((BANKACCOUNTDEPOSITCORRECTION.CORRECTIONTYPECODE in (1, 3) and PD.TRANSACTIONTYPECODE = 1) or (BANKACCOUNTDEPOSITCORRECTION.CORRECTIONTYPECODE in (0, 2) and PD.TRANSACTIONTYPECODE = 0))
and @REVENUEPOSTMETHOD != 0
union all
select PD.GLTRANSACTIONID
from @PD2 as PD
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 5
union all
select PD.GLTRANSACTIONID
from @PD2 as PD left join dbo.CREDITPAYMENT as REFUND on PD.CREDITPAYMENTID = REFUND.ID
left join dbo.FINANCIALTRANSACTIONLINEITEM as DISCOUNT on PD.CREDITITEMID = DISCOUNT.ID
where PD.TABLENAMECODE = 6
and (
(DISCOUNT.TYPECODE = 5 and PD.TRANSACTIONTYPECODE = 1)
or (REFUND.ID is not null and PD.TRANSACTIONTYPECODE = 0)
)
) V1 on tv1.GLTransactionID = V1.GLTRANSACTIONID
option (recompile)
if @CASHPOSTMETHOD = 0 -- Detail
begin
insert into @WORKTABLE (GLTRANSACTIONID, ACCOUNTSTRING, POSTDATE, TRANTYPE, DEBITCREDIT, AMOUNT, JOURNAL, REFERENCE, BATCH, PROJECT, GLACCOUNTID, BASECURRENCYID, ORGANIZATIONAMOUNT)
select PD.GLTRANSACTIONID, PD.ACCOUNT, coalesce(adj.POSTDATE, f.POSTDATE, PD.POSTDATE),
'R',case PD.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end, PD.AMOUNT, JOURNAL, left(PD.COMMENT, 255), PD.BATCHID, PD.PROJECT, PD.GLACCOUNTID, @BASECURRENCYID, PD.ORGAMOUNT
from @PD2 as PD
inner join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on PD.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BANKACCOUNTDEPOSITPAYMENT as e on PD.FINANCIALTRANSACTIONID = e.ID
left outer join dbo.BANKACCOUNTTRANSACTION f on f.ID = e.DEPOSITID
left outer join dbo.ADJUSTMENT adj on PD.FINANCIALTRANSACTIONID = adj.REVENUEID and adj.POSTSTATUSCODE = 1
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 1
and (
(
d.REVENUETRANSACTIONTYPECODE = 0
and d.APPLICATIONCODE in (0,1,2,3,4,5,6,7,8,10,11,13,18,19,203)
and PD.TRANSACTIONTYPECODE = 0
and (
d.REVENUESPLITTYPECODE <> 19 /* Unearned revenue */
or d.TRANSACTIONTYPECODE = 0 /* Debit */
)
)
or (d.REVENUETRANSACTIONTYPECODE = 200 and d.APPLICATIONCODE = 200)
or (
d.REVENUETRANSACTIONTYPECODE = 201
and d.APPLICATIONCODE = 201
and PD.TRANSACTIONTYPECODE = 0
and (d.REVENUESPLITTYPECODE <> 19 OR d.TRANSACTIONTYPECODE = 0)
)
)
union
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(bat.POSTDATE, PD.POSTDATE), 'R', 'C', PD.AMOUNT, PD.JOURNAL, left(PD.COMMENT,255), PD.BATCHID, PD.PROJECT, PD.GLACCOUNTID, @BASECURRENCYID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.CREDITPAYMENT as REFUND on PD.CREDITPAYMENTID = REFUND.ID
left join dbo.BANKACCOUNTDEPOSITCREDITPAYMENT on REFUND.ID = BANKACCOUNTDEPOSITCREDITPAYMENT.DEPOSITID
left join dbo.BANKACCOUNTTRANSACTION as BAT on BANKACCOUNTDEPOSITCREDITPAYMENT.DEPOSITID = BAT.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 6
and PD.TRANSACTIONTYPECODE = 1
option (recompile)
end
else
if @CASHPOSTMETHOD = 1 -- Summary
begin
insert into @WORKTABLE (GLTRANSACTIONID, ACCOUNTSTRING, POSTDATE, TRANTYPE, DEBITCREDIT, AMOUNT, JOURNAL, REFERENCE, BATCH, PROJECT, GLACCOUNTID, BASECURRENCYID, ORGANIZATIONAMOUNT)
select '99999999-9999-9999-9999-999999999999', V1.Account, GLFISCALPERIOD.EndDate, 'R', case V1.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,
sum(V1.AMOUNT), V1.JOURNAL, @CASHREFERENCE, null, '', V1.GLACCOUNTID, @BASECURRENCYID, sum(V1.ORGAMOUNT)
from
(
select PD.GLTRANSACTIONID, PD.ACCOUNT, coalesce(ADJUSTMENT.POSTDATE, BANKACCOUNTTRANSACTION.POSTDATE, PD.POSTDATE) as PostDate, PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING on PD.GLPAYMENTMETHODREVENUETYPEMAPPINGID = GLPAYMENTMETHODREVENUETYPEMAPPING.ID
left join dbo.ADJUSTMENT on PD.FINANCIALTRANSACTIONID = ADJUSTMENT.REVENUEID and ADJUSTMENT.POSTSTATUSCODE = 1
left join dbo.BANKACCOUNTDEPOSITPAYMENT on PD.FINANCIALTRANSACTIONID = BANKACCOUNTDEPOSITPAYMENT.ID
left join dbo.BANKACCOUNTTRANSACTION on BANKACCOUNTDEPOSITPAYMENT.DEPOSITID = BANKACCOUNTTRANSACTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 1
and (
(
GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 0 and
GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE in (0,1,2,3,4,5,6,7,8,11,13,18,19,203) and
PD.TRANSACTIONTYPECODE = 0
)
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 200 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 200)
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 201 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 201 and PD.TRANSACTIONTYPECODE = 0)
or (
GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 0
and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 10
and PD.TRANSACTIONTYPECODE = 0
and (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUESPLITTYPECODE <> 19 or GLPAYMENTMETHODREVENUETYPEMAPPING.TRANSACTIONTYPECODE = 0)
)
)
union
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(BANKACCOUNTTRANSACTION.POSTDATE, PD.POSTDATE) , PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.BANKACCOUNTTRANSACTION on PD.FINANCIALTRANSACTIONID = BANKACCOUNTTRANSACTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 4
and ((BANKACCOUNTTRANSACTION.TRANSACTIONTYPECODE in (17, 32) and PD.TRANSACTIONTYPECODE = 1) or (BANKACCOUNTTRANSACTION.TRANSACTIONTYPECODE in (16, 33) and PD.TRANSACTIONTYPECODE = 0))
union
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(BANKACCOUNTTRANSACTION.POSTDATE, PD.POSTDATE), PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.BANKACCOUNTDEPOSITCORRECTION on PD.FINANCIALTRANSACTIONID = BANKACCOUNTDEPOSITCORRECTION.ID
left join dbo.BANKACCOUNTTRANSACTION on BANKACCOUNTDEPOSITCORRECTION.DEPOSITID = BANKACCOUNTTRANSACTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 3
and ((BANKACCOUNTDEPOSITCORRECTION.CORRECTIONTYPECODE in (0, 2) and PD.TRANSACTIONTYPECODE = 1) or (BANKACCOUNTDEPOSITCORRECTION.CORRECTIONTYPECODE in (1, 3) and PD.TRANSACTIONTYPECODE = 0))
union
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(BAT.POSTDATE, PD.POSTDATE), PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.CREDITPAYMENT as REFUND on PD.CREDITPAYMENTID = REFUND.ID
left join dbo.BANKACCOUNTDEPOSITCREDITPAYMENT on REFUND.ID = BANKACCOUNTDEPOSITCREDITPAYMENT.ID
left join dbo.BANKACCOUNTTRANSACTION as BAT on BANKACCOUNTDEPOSITCREDITPAYMENT.DEPOSITID = BAT.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 6
and PD.TRANSACTIONTYPECODE = 1
) V1 inner join dbo.GLFISCALPERIOD on cast(V1.PostDate as date) between GLFISCALPERIOD.STARTDATE and GLFISCALPERIOD.ENDDATE
group by V1.ACCOUNT, GLFISCALPERIOD.ENDDATE, V1.TRANSACTIONTYPECODE, V1.JOURNAL, V1.GLACCOUNTID
option (recompile)
end
else -- Summary by deposit
begin
insert into @WORKTABLE (GLTRANSACTIONID, ACCOUNTSTRING, POSTDATE, TRANTYPE, DEBITCREDIT, AMOUNT, JOURNAL, REFERENCE, BATCH, PROJECT, GLACCOUNTID, BASECURRENCYID, ORGANIZATIONAMOUNT)
select '99999999-9999-9999-9999-999999999999', V1.Account, GLFISCALPERIOD.ENDDATE, 'R', case V1.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,
sum(V1.AMOUNT), V1.JOURNAL,
case when (V1.DEPOSITID IS null or @CASHREFERENCE != 'Summarized Cash') then @CASHREFERENCE else @DEPOSITSUMMARIZED + ' - ' + Cast(BAT.TRANSACTIONNUMBER as nvarchar(10)) + ' - ' + BA.ACCOUNTNAME end, null, '', V1.GLACCOUNTID, @BASECURRENCYID, sum(V1.ORGAMOUNT)
from
(
select PD.GLTRANSACTIONID, PD.ACCOUNT, coalesce(ADJUSTMENT.POSTDATE, BANKACCOUNTTRANSACTION.POSTDATE, PD.POSTDATE) as PostDate, PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, BANKACCOUNTDEPOSITPAYMENT.DEPOSITID, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING on PD.GLPAYMENTMETHODREVENUETYPEMAPPINGID = GLPAYMENTMETHODREVENUETYPEMAPPING.id
left join dbo.ADJUSTMENT on PD.FINANCIALTRANSACTIONID = ADJUSTMENT.REVENUEID and ADJUSTMENT.POSTSTATUSCODE = 1
left join dbo.BANKACCOUNTDEPOSITPAYMENT on PD.FINANCIALTRANSACTIONID = BANKACCOUNTDEPOSITPAYMENT.ID
left join dbo.BANKACCOUNTTRANSACTION on BANKACCOUNTDEPOSITPAYMENT.DEPOSITID = BANKACCOUNTTRANSACTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 1
and (
(
GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 0
and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE in (0,1,2,3,4,5,6,7,8,11,13,18,19,203)
and PD.TRANSACTIONTYPECODE = 0
)
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 200 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 200)
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 201 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 201 and PD.TRANSACTIONTYPECODE = 0)
or (
GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 0
and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 10
and PD.TRANSACTIONTYPECODE = 0
and (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUESPLITTYPECODE <> 19 or GLPAYMENTMETHODREVENUETYPEMAPPING.TRANSACTIONTYPECODE = 0)
)
)
union
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(BANKACCOUNTTRANSACTION.POSTDATE, PD.POSTDATE), PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, null, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.BANKACCOUNTTRANSACTION on PD.FINANCIALTRANSACTIONID = BANKACCOUNTTRANSACTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 4
and
((BANKACCOUNTTRANSACTION.TRANSACTIONTYPECODE in (17, 32) and PD.TRANSACTIONTYPECODE = 1) or (BANKACCOUNTTRANSACTION.TRANSACTIONTYPECODE in (16, 33) and PD.TRANSACTIONTYPECODE = 0))
union
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(BANKACCOUNTTRANSACTION.POSTDATE, PD.POSTDATE), PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, BANKACCOUNTDEPOSITCORRECTION.DEPOSITID, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.BANKACCOUNTDEPOSITCORRECTION on PD.FINANCIALTRANSACTIONID = BANKACCOUNTDEPOSITCORRECTION.ID
left join dbo.BANKACCOUNTTRANSACTION on BANKACCOUNTDEPOSITCORRECTION.DEPOSITID = BANKACCOUNTTRANSACTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 3
and ((BANKACCOUNTDEPOSITCORRECTION.CORRECTIONTYPECODE in (0, 2) and PD.TRANSACTIONTYPECODE = 1) or (BANKACCOUNTDEPOSITCORRECTION.CORRECTIONTYPECODE in (1, 3) and PD.TRANSACTIONTYPECODE = 0))
union
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(BAT.POSTDATE, PD.POSTDATE), PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, BAT.ID, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.CREDITPAYMENT as REFUND on PD.CREDITPAYMENTID = REFUND.ID
left join dbo.BANKACCOUNTDEPOSITCREDITPAYMENT on REFUND.ID = BANKACCOUNTDEPOSITCREDITPAYMENT.ID
left join dbo.BANKACCOUNTTRANSACTION as BAT ON BANKACCOUNTDEPOSITCREDITPAYMENT.DEPOSITID = BAT.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 6
and PD.TRANSACTIONTYPECODE = 1
) V1 inner join dbo.GLFISCALPERIOD on cast(V1.PostDate as date) between GLFISCALPERIOD.STARTDATE and GLFISCALPERIOD.ENDDATE
left join dbo.BANKACCOUNTTRANSACTION BAT on V1.DEPOSITID = BAT.ID
left join dbo.BANKACCOUNT BA on BAT.BANKACCOUNTID = BA.ID
group by V1.ACCOUNT, GLFISCALPERIOD.ENDDATE, V1.JOURNAL, V1.DEPOSITID, V1.TRANSACTIONTYPECODE, V1.GLACCOUNTID, BAT.TRANSACTIONNUMBER, BA.ACCOUNTNAME
option (recompile)
end
update @PD2 set ISUSED = 1
from @PD2 tv1 inner join
(
select PD.GLTRANSACTIONID
from @PD2 as PD inner join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING on PD.GLPAYMENTMETHODREVENUETYPEMAPPINGID = GLPAYMENTMETHODREVENUETYPEMAPPING.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 1
and (
(
GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 0
and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE in (0,1,2,3,4,5,6,7,8,11,13,18,19,203)
and PD.TRANSACTIONTYPECODE = 0
)
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 200 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 200)
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 201 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 201 and PD.TRANSACTIONTYPECODE = 0)
or (
GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 0
and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 10
and (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUESPLITTYPECODE <> 19 or GLPAYMENTMETHODREVENUETYPEMAPPING.TRANSACTIONTYPECODE = 0)
)
)
union all
select PD.GLTRANSACTIONID
from @PD2 as PD inner join dbo.BANKACCOUNTTRANSACTION on PD.FINANCIALTRANSACTIONID = BANKACCOUNTTRANSACTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 4
and ((BANKACCOUNTTRANSACTION.TRANSACTIONTYPECODE in (17, 32) and PD.TRANSACTIONTYPECODE = 1) or (BANKACCOUNTTRANSACTION.TRANSACTIONTYPECODE in (16, 33) and PD.TRANSACTIONTYPECODE = 0))
and @CASHPOSTMETHOD != 0
union all
select PD.GLTRANSACTIONID
from @PD2 as PD inner join dbo.BANKACCOUNTDEPOSITCORRECTION on PD.FINANCIALTRANSACTIONID = BANKACCOUNTDEPOSITCORRECTION.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 3
and ((BANKACCOUNTDEPOSITCORRECTION.CORRECTIONTYPECODE in (0, 2) and PD.TRANSACTIONTYPECODE = 1) or (BANKACCOUNTDEPOSITCORRECTION.CORRECTIONTYPECODE in (1, 3) and PD.TRANSACTIONTYPECODE = 0))
and @CASHPOSTMETHOD != 0
union all
select PD.GLTRANSACTIONID
from @PD2 as PD inner join dbo.CREDITPAYMENT as REFUND on PD.CREDITPAYMENTID = REFUND.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 6
and PD.TRANSACTIONTYPECODE = 1
) V1 on tv1.GLTRANSACTIONID = V1.GLTRANSACTIONID
option (recompile)
if @RECEIVABLEPOSTMETHOD = 0 -- Detail
begin
insert into @WORKTABLE (GLTRANSACTIONID, ACCOUNTSTRING, POSTDATE, TRANTYPE, DEBITCREDIT, AMOUNT, JOURNAL, REFERENCE, BATCH, PROJECT, GLACCOUNTID, BASECURRENCYID, ORGANIZATIONAMOUNT)
select PD.GLTRANSACTIONID, PD.ACCOUNT, coalesce(adj.POSTDATE, f.POSTDATE, PD.POSTDATE),
'R', case PD.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end, PD.AMOUNT, JOURNAL, left(PD.COMMENT, 255), PD.BATCHID, PD.PROJECT, PD.GLACCOUNTID, @BASECURRENCYID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING as d on PD.GLPAYMENTMETHODREVENUETYPEMAPPINGID = d.ID
left outer join dbo.BANKACCOUNTDEPOSITPAYMENT as e on PD.FINANCIALTRANSACTIONID = e.ID
left outer join dbo.BANKACCOUNTTRANSACTION f on f.ID = e.DEPOSITID
left outer join dbo.ADJUSTMENT adj on PD.FINANCIALTRANSACTIONID = adj.REVENUEID and adj.POSTSTATUSCODE = 1
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 1
and (
(d.REVENUETRANSACTIONTYPECODE = 1 and d.APPLICATIONCODE = 0 and PD.TRANSACTIONTYPECODE = 0)
or (d.REVENUETRANSACTIONTYPECODE = 15 and d.APPLICATIONCODE in (0,5,18) and PD.TRANSACTIONTYPECODE = 0) --Membership installment plan transaction; gift, membership, add-on application; debit
or (d.REVENUETRANSACTIONTYPECODE = 5 and d.APPLICATIONCODE in (0,9,5,1,16,18) and PD.TRANSACTIONTYPECODE = 0)
or (d.REVENUETRANSACTIONTYPECODE = 0 and d.APPLICATIONCODE in (2,8,10,203) and PD.TRANSACTIONTYPECODE = 1 and d.REVENUESPLITTYPECODE <> 19)
or (d.REVENUETRANSACTIONTYPECODE = 1 and d.APPLICATIONCODE = 0 and PD.TRANSACTIONTYPECODE = 1 and PAYMENTMETHODCODE = 205)
)
union
select PD.GLTRANSACTIONID, PD.ACCOUNT, PD.POSTDATE, 'R', case PD.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end, PD.AMOUNT, PD.JOURNAL, left(PD.COMMENT, 255),PD.BATCHID, PD.PROJECT, PD.GLACCOUNTID, @BASECURRENCYID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.FINANCIALTRANSACTIONLINEITEM as DISCOUNT on PD.CREDITITEMID = DISCOUNT.ID and DISCOUNT.TYPECODE = 5
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 6
and PD.TRANSACTIONTYPECODE = 0
option (recompile)
end
else -- Summary
begin
insert into @WORKTABLE (GLTRANSACTIONID, ACCOUNTSTRING, POSTDATE, TRANTYPE, DEBITCREDIT ,AMOUNT, JOURNAL, REFERENCE, BATCH, PROJECT, GLACCOUNTID, BASECURRENCYID, ORGANIZATIONAMOUNT)
select '99999999-9999-9999-9999-999999999999', V1.ACCOUNT,
GLFISCALPERIOD.ENDDATE,
'R', case V1.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,
sum(V1.AMOUNT), V1.JOURNAL ,@RECEIVABLEREFERENCE, null, '', V1.GLACCOUNTID, @BASECURRENCYID, sum(V1.ORGAMOUNT)
from
(
select PD.GLTRANSACTIONID, PD.ACCOUNT, coalesce(ADJUSTMENT.POSTDATE, BANKACCOUNTTRANSACTION.POSTDATE, PD.POSTDATE) as PostDate, PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING on PD.GLPAYMENTMETHODREVENUETYPEMAPPINGID = GLPAYMENTMETHODREVENUETYPEMAPPING.ID
left join dbo.BANKACCOUNTDEPOSITPAYMENT on PD.FINANCIALTRANSACTIONID = BANKACCOUNTDEPOSITPAYMENT.ID
left join dbo.BANKACCOUNTTRANSACTION on BANKACCOUNTDEPOSITPAYMENT.DEPOSITID = BANKACCOUNTTRANSACTION.ID
left join dbo.ADJUSTMENT on PD.FINANCIALTRANSACTIONID = ADJUSTMENT.REVENUEID and ADJUSTMENT.POSTSTATUSCODE = 1
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 1
and (
(GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 1 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 0 and PD.TRANSACTIONTYPECODE = 0)
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 5 and PD.TRANSACTIONTYPECODE = 0)
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 15 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE in (0,5,18) and PD.TRANSACTIONTYPECODE = 0) --Membership installment plan transaction; gift, membership, add-on application; debit
or (
GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 0
and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE in (2,8,10,203)
and PD.TRANSACTIONTYPECODE = 1
and GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUESPLITTYPECODE <> 19
)
or (
GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 1
and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 0
and PD.TRANSACTIONTYPECODE = 1
and PAYMENTMETHODCODE = 205
)
)
union
select PD.GLTRANSACTIONID, PD.ACCOUNT, PD.POSTDATE, PD.TRANSACTIONTYPECODE, PD.AMOUNT, PD.JOURNAL, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD inner join dbo.FINANCIALTRANSACTIONLINEITEM as DISCOUNT on PD.CREDITITEMID = DISCOUNT.ID and DISCOUNT.TYPECODE = 5
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 6
and PD.TRANSACTIONTYPECODE = 0
) V1 inner join dbo.GLFISCALPERIOD on cast(V1.PostDate as date) between GLFISCALPERIOD.STARTDATE and GLFISCALPERIOD.ENDDATE
group by V1.ACCOUNT, GLFISCALPERIOD.ENDDATE, V1.TRANSACTIONTYPECODE, V1.JOURNAL, V1.GLACCOUNTID
option (recompile)
end
update @PD2 set ISUSED = 1
from @PD2 tv1 inner join
(
select PD.GLTRANSACTIONID
from @PD2 as PD inner join dbo.GLPAYMENTMETHODREVENUETYPEMAPPING on PD.GLPAYMENTMETHODREVENUETYPEMAPPINGID = GLPAYMENTMETHODREVENUETYPEMAPPING.ID
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 1
and (
(GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 1 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 0 and PD.TRANSACTIONTYPECODE = 0)
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 15 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE in (0,5,18) and PD.TRANSACTIONTYPECODE = 0) --Membership installment plan transaction; gift, membership, add-on application; debit
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 5 and PD.TRANSACTIONTYPECODE = 0)
or (
GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 0
and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE in (0,2,8,203)
and PD.TRANSACTIONTYPECODE = 1
and GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUESPLITTYPECODE <> 19
)
or (GLPAYMENTMETHODREVENUETYPEMAPPING.REVENUETRANSACTIONTYPECODE = 1 and GLPAYMENTMETHODREVENUETYPEMAPPING.APPLICATIONCODE = 0 and PD.TRANSACTIONTYPECODE = 1 and PAYMENTMETHODCODE = 205)
)
union
select PD.GLTRANSACTIONID
from @PD2 as PD inner join dbo.FINANCIALTRANSACTIONLINEITEM as DISCOUNT on PD.CREDITITEMID = DISCOUNT.ID and DISCOUNT.TYPECODE = 5
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 6
and PD.TRANSACTIONTYPECODE = 0
) V1 on tv1.GLTRANSACTIONID = V1.GLTRANSACTIONID
option (recompile)
--Revaluation Gain/Loss
if @REVALUATIONGAINLOSSPOSTMETHOD = 0 -- Detail
begin
insert into @WORKTABLE
(GLTRANSACTIONID, ACCOUNTSTRING, POSTDATE, TRANTYPE, DEBITCREDIT, AMOUNT, JOURNAL, REFERENCE, BATCH, PROJECT, GLACCOUNTID, BASECURRENCYID, ORGANIZATIONAMOUNT)
select PD.GLTRANSACTIONID, PD.ACCOUNT, isnull(adj.POSTDATE, PD.POSTDATE), 'R', case PD.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,
PD.AMOUNT, JOURNAL, left(PD.COMMENT, 255),
PD.BATCHID, PD.PROJECT, PD.GLACCOUNTID, @BASECURRENCYID, PD.ORGAMOUNT
from @PD2 as PD left outer join dbo.UNREALIZEDGAINLOSSADJUSTMENT adj on PD.FINANCIALTRANSACTIONID = adj.REVENUEID and adj.POSTSTATUSCODE = 1
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 14
option (recompile)
end
else -- Revaluation Gain/Loss Summary
begin
insert into @WORKTABLE
(GLTRANSACTIONID, ACCOUNTSTRING, POSTDATE, TRANTYPE, DEBITCREDIT, AMOUNT, JOURNAL, REFERENCE, BATCH, PROJECT, GLACCOUNTID, BASECURRENCYID, ORGANIZATIONAMOUNT)
select '99999999-9999-9999-9999-999999999999', V1.ACCOUNT, GLFISCALPERIOD.ENDDATE, 'R', case V1.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end,
sum(V1.AMOUNT), V1.JOURNAL, @REVALUATIONGAINLOSSREFERENCE, null, '', V1.GLACCOUNTID, @BASECURRENCYID, sum(V1.ORGAMOUNT)
from (
select PD.GLTRANSACTIONID, PD.ACCOUNT, coalesce(UNREALIZEDGAINLOSSADJUSTMENT.POSTDATE, PD.POSTDATE) as PostDate, PD.TRANSACTIONTYPECODE,
PD.AMOUNT, PD.JOURNAL, PD.GLACCOUNTID, PD.ORGAMOUNT
from @PD2 as PD left join dbo.UNREALIZEDGAINLOSSADJUSTMENT on PD.FINANCIALTRANSACTIONID = UNREALIZEDGAINLOSSADJUSTMENT.REVENUEID and UNREALIZEDGAINLOSSADJUSTMENT.POSTSTATUSCODE = 1
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 14
) V1 inner join dbo.GLFISCALPERIOD on cast(V1.PostDate as date) between GLFISCALPERIOD.STARTDATE and GLFISCALPERIOD.ENDDATE
group by V1.ACCOUNT, GLFISCALPERIOD.ENDDATE, V1.TRANSACTIONTYPECODE, V1.JOURNAL, V1.GLACCOUNTID
option (recompile)
end
update @PD2
set ISUSED = 1
from @PD2 tv1
inner join
(
select PD.GLTRANSACTIONID
from @PD2 as PD
where PD.ISREVERSAL = 0
and PD.TABLENAMECODE = 14
) V1 on tv1.GLTRANSACTIONID = V1.GLTRANSACTIONID
option (recompile)
insert into @WORKTABLE (GLTRANSACTIONID, ACCOUNTSTRING, POSTDATE, TRANTYPE, DEBITCREDIT, AMOUNT ,JOURNAL, REFERENCE, BATCH, PROJECT, GLACCOUNTID, BASECURRENCYID, ORGANIZATIONAMOUNT)
select V1.GLTRANSACTIONID, V1.ACCOUNT, cast(coalesce(ADJUSTMENT.POSTDATE, BANKACCOUNTTRANSACTION.POSTDATE, BAT2.POSTDATE, UNREALIZEDGAINLOSSADJUSTMENT.POSTDATE, V1.POSTDATE) as date),
'R', case V1.TRANSACTIONTYPECODE when 0 then 'D' else 'C' end, V1.AMOUNT, V1.JOURNAL,
left(case when V1.ISREVERSAL = 0 then V1.COMMENT else 'Reversal' + ' - ' + V1.COMMENT end, 255),
V1.BATCHID, V1.PROJECT, V1.GLACCOUNTID, @BASECURRENCYID, V1.ORGAMOUNT
from
(
select distinct GLTRANSACTIONID, ACCOUNT, TRANSACTIONTYPECODE, AMOUNT, JOURNAL, ISREVERSAL, COMMENT, BATCHID, PROJECT, ORGAMOUNT, FINANCIALTRANSACTIONID, POSTDATE, GLACCOUNTID from @PD2 where ISUSED = 0
) V1
left join dbo.JOURNALENTRY_EXT as JE1 on V1.GLTRANSACTIONID = JE1.ID and JE1.TABLENAMECODE = 1
left join dbo.BANKACCOUNTDEPOSITPAYMENT on V1.FINANCIALTRANSACTIONID = BANKACCOUNTDEPOSITPAYMENT.ID
left join dbo.FINANCIALTRANSACTION as BANKACCOUNTTRANSACTION on BANKACCOUNTDEPOSITPAYMENT.DEPOSITID = BANKACCOUNTTRANSACTION.ID
left join dbo.ADJUSTMENT on V1.FINANCIALTRANSACTIONID = ADJUSTMENT.REVENUEID and ADJUSTMENT.POSTSTATUSCODE = 1
left join dbo.FINANCIALTRANSACTION as BAT2 on V1.FINANCIALTRANSACTIONID = BAT2.ID and BAT2.POSTSTATUSCODE = 1
left join dbo.UNREALIZEDGAINLOSSADJUSTMENT on V1.FINANCIALTRANSACTIONID = UNREALIZEDGAINLOSSADJUSTMENT.REVENUEID AND UNREALIZEDGAINLOSSADJUSTMENT.POSTSTATUSCODE = 1
option (recompile)
end
return
end