USP_MAPPINGERROR_REVENUE_RECREATEDISTRIBUTION
Recreate the distribution for a payment if using holding account.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@REVENUEID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@CURRENTDATE | datetime | IN | |
@PROCESSID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_MAPPINGERROR_REVENUE_RECREATEDISTRIBUTION
(
@REVENUEID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@CURRENTDATE datetime = null,
@PROCESSID uniqueidentifier = null
) as
begin
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
if @CURRENTDATE is null
set @CURRENTDATE = getdate();
declare @DEFAULTGLACCOUNTID uniqueidentifier;
declare @DEPOSITID uniqueidentifier;
declare @HASDEFAULT as bit = 0;
declare @REVENUESPLITID uniqueidentifier;
declare @ORIGINALID uniqueidentifier = @REVENUEID;
select @REVENUEID = isnull(S.REVENUEID, @REVENUEID)
from dbo.SALESORDER S where S.ID = @REVENUEID
select @DEFAULTGLACCOUNTID = S.DEFAULTGLACCOUNTID
from dbo.PDACCOUNTSYSTEM S
inner join dbo.FINANCIALTRANSACTION on S.ID = FINANCIALTRANSACTION.PDACCOUNTSYSTEMID
where FINANCIALTRANSACTION.ID = @REVENUEID;
select @DEPOSITID = DEPOSITID
from dbo.BANKACCOUNTDEPOSITPAYMENT
where ID = @REVENUEID;
if @DEFAULTGLACCOUNTID is not null
begin
-- Use underlying tables from REVENUEGLDISTRIBUTION for performance reasons
if exists(select 1
from dbo.JOURNALENTRY
inner join dbo.FINANCIALTRANSACTIONLINEITEM on JOURNALENTRY.FINANCIALTRANSACTIONLINEITEMID = FINANCIALTRANSACTIONLINEITEM.ID
inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
inner join dbo.JOURNALENTRY_EXT on JOURNALENTRY.ID = JOURNALENTRY_EXT.ID and JOURNALENTRY_EXT.TABLENAMECODE = 1
inner join dbo.GLTRANSACTION on JOURNALENTRY.ID = GLTRANSACTION.ID
where FINANCIALTRANSACTION.DELETEDON is null
and FINANCIALTRANSACTION.ID = @REVENUEID and GLTRANSACTION.GLACCOUNTID = @DEFAULTGLACCOUNTID and GLTRANSACTION.POSTSTATUSCODE = 1)
begin
delete from dbo.GLTRANSACTION where ID in (select
JOURNALENTRY.ID as GLTRANSACTIONID
from dbo.JOURNALENTRY
inner join dbo.FINANCIALTRANSACTIONLINEITEM on JOURNALENTRY.FINANCIALTRANSACTIONLINEITEMID = FINANCIALTRANSACTIONLINEITEM.ID
inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
inner join dbo.JOURNALENTRY_EXT on JOURNALENTRY.ID = JOURNALENTRY_EXT.ID and JOURNALENTRY_EXT.TABLENAMECODE = 1
where FINANCIALTRANSACTION.DELETEDON is null and JOURNALENTRY_EXT.OUTDATED = 0 and FINANCIALTRANSACTION.ID = @REVENUEID) and POSTSTATUSCODE >= 1;
delete JOURNALENTRY from dbo.JOURNALENTRY
inner join dbo.FINANCIALTRANSACTIONLINEITEM FTLI on JOURNALENTRY.FINANCIALTRANSACTIONLINEITEMID = FTLI.ID
inner join dbo.FINANCIALTRANSACTION FT on FTLI.FINANCIALTRANSACTIONID = FT.ID
inner join dbo.JOURNALENTRY_EXT on JOURNALENTRY.ID = JOURNALENTRY_EXT.ID
where FTLI.POSTSTATUSCODE != 2 and FTLI.TYPECODE != 1
and JOURNALENTRY_EXT.DISTRIBUTIONTABLEID in (select
JOURNALENTRY_EXT.GLTRANSACTIONID
from dbo.JOURNALENTRY
inner join dbo.FINANCIALTRANSACTIONLINEITEM on JOURNALENTRY.FINANCIALTRANSACTIONLINEITEMID = FINANCIALTRANSACTIONLINEITEM.ID
inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
inner join dbo.JOURNALENTRY_EXT on JOURNALENTRY.ID = JOURNALENTRY_EXT.ID and JOURNALENTRY_EXT.TABLENAMECODE = 1
where FINANCIALTRANSACTION.DELETEDON is null and JOURNALENTRY_EXT.OUTDATED = 0 and FINANCIALTRANSACTION.ID = @REVENUEID);
exec dbo.USP_SAVE_REVENUEGLDISTRIBUTION @REVENUEID, @CHANGEAGENTID, @CURRENTDATE;
set @HASDEFAULT = 1;
end
if exists(select 1
from dbo.STOCKSALEGLDISTRIBUTION D
inner join dbo.GLTRANSACTION T on D.GLTRANSACTIONID = T.ID
where D.REVENUEID = @REVENUEID and T.GLACCOUNTID = @DEFAULTGLACCOUNTID and T.POSTSTATUSCODE = 1)
begin
delete from dbo.GLTRANSACTION where ID in (select GLTRANSACTIONID from dbo.STOCKSALEGLDISTRIBUTION where REVENUEID = @REVENUEID and OUTDATED = 0) and POSTSTATUSCODE >= 1;
delete from dbo.STOCKSALEGLDISTRIBUTION where REVENUEID = @REVENUEID and OUTDATED = 0;
exec dbo.USP_SAVE_STOCKDETAILGLDISTRIBUTION @REVENUEID, @CHANGEAGENTID, @CURRENTDATE;
end
if exists(select 1
from dbo.GIFTINKINDSALEGLDISTRIBUTION D
inner join dbo.GLTRANSACTION T on D.GLTRANSACTIONID = T.ID
where D.REVENUEID = @REVENUEID and T.GLACCOUNTID = @DEFAULTGLACCOUNTID and T.POSTSTATUSCODE = 1)
begin
delete from dbo.GLTRANSACTION where ID in (select GLTRANSACTIONID from dbo.GIFTINKINDSALEGLDISTRIBUTION where REVENUEID = @REVENUEID and OUTDATED = 0) and POSTSTATUSCODE >= 1;
delete from dbo.GIFTINKINDSALEGLDISTRIBUTION where REVENUEID = @REVENUEID and OUTDATED = 0;
exec dbo.USP_SAVE_GIFTINKINDPAYMENTMETHODDETAILGLDISTRIBUTION @REVENUEID, @CHANGEAGENTID, @CURRENTDATE;
end
if exists(select 1
from dbo.PROPERTYDETAILGLDISTRIBUTION D
inner join dbo.GLTRANSACTION T on D.GLTRANSACTIONID = T.ID
where D.REVENUEID = @REVENUEID and T.GLACCOUNTID = @DEFAULTGLACCOUNTID and T.POSTSTATUSCODE = 1)
begin
delete from dbo.GLTRANSACTION where ID in (select GLTRANSACTIONID from dbo.PROPERTYDETAILGLDISTRIBUTION where REVENUEID = @REVENUEID and OUTDATED = 0) and POSTSTATUSCODE >= 1;
delete from dbo.PROPERTYDETAILGLDISTRIBUTION where REVENUEID = @REVENUEID and OUTDATED = 0;
exec dbo.USP_SAVE_PROPERTYDETAILGLDISTRIBUTION @REVENUEID, @CHANGEAGENTID, @CURRENTDATE;
end
if exists(select 1
from dbo.BENEFITGLDISTRIBUTION D
inner join dbo.GLTRANSACTION T on D.GLTRANSACTIONID = T.ID
inner join dbo.FINANCIALTRANSACTION FT on FT.ID = D.REVENUEID
where D.REVENUEID = @REVENUEID and T.GLACCOUNTID = @DEFAULTGLACCOUNTID and T.POSTSTATUSCODE = 1 and FT.TYPECODE = 0)
begin
delete from dbo.GLTRANSACTION where ID in (select GLTRANSACTIONID from dbo.BENEFITGLDISTRIBUTION where REVENUEID = @REVENUEID and OUTDATED = 0) and POSTSTATUSCODE >= 1;
delete from dbo.BENEFITGLDISTRIBUTION where REVENUEID = @REVENUEID and OUTDATED = 0;
exec dbo.USP_SAVE_PAYMENT_BENEFITGLDISTRIBUTION @REVENUEID, @CHANGEAGENTID, @CURRENTDATE;
end
if exists(select 1
from dbo.BENEFITGLDISTRIBUTION D
inner join dbo.GLTRANSACTION T on D.GLTRANSACTIONID = T.ID
inner join dbo.FINANCIALTRANSACTION FT on FT.ID = D.REVENUEID
where D.REVENUEID = @REVENUEID and T.GLACCOUNTID = @DEFAULTGLACCOUNTID and T.POSTSTATUSCODE = 1 and FT.TYPECODE = 5)
begin
delete from dbo.GLTRANSACTION where ID in (select GLTRANSACTIONID from dbo.BENEFITGLDISTRIBUTION where REVENUEID = @REVENUEID and OUTDATED = 0) and POSTSTATUSCODE >= 1;
delete from dbo.BENEFITGLDISTRIBUTION where REVENUEID = @REVENUEID and OUTDATED = 0;
exec dbo.USP_SAVE_BENEFITGLDISTRIBUTION_SALESORDER @REVENUEID, @CHANGEAGENTID, @CURRENTDATE;
end
if exists(select 1
from dbo.BENEFITGLDISTRIBUTION D
inner join dbo.GLTRANSACTION T on D.GLTRANSACTIONID = T.ID
inner join dbo.FINANCIALTRANSACTION FT on FT.ID = D.REVENUEID
where D.REVENUEID = @REVENUEID and T.GLACCOUNTID = @DEFAULTGLACCOUNTID and T.POSTSTATUSCODE = 1 and FT.TYPECODE = 1)
begin
delete from dbo.GLTRANSACTION where ID in (select GLTRANSACTIONID from dbo.BENEFITGLDISTRIBUTION where REVENUEID = @REVENUEID and OUTDATED = 0) and POSTSTATUSCODE >= 1;
delete from dbo.BENEFITGLDISTRIBUTION where REVENUEID = @REVENUEID and OUTDATED = 0;
exec dbo.USP_SAVE_BENEFITGLDISTRIBUTION_FINANCIALTRANSACTION @REVENUEID, @CHANGEAGENTID, @CURRENTDATE;
end
if exists(select 1
from dbo.GIFTFEEGLDISTRIBUTION D
inner join dbo.GLTRANSACTION T on D.GLTRANSACTIONID = T.ID
where D.REVENUEID = @REVENUEID and T.GLACCOUNTID = @DEFAULTGLACCOUNTID and T.POSTSTATUSCODE = 1)
begin
delete from dbo.GLTRANSACTION where ID in (select D.GLTRANSACTIONID from dbo.GIFTFEEGLDISTRIBUTION D where D.REVENUEID = @REVENUEID and D.OUTDATED = 0) and POSTSTATUSCODE >= 1;
delete from dbo.GIFTFEEGLDISTRIBUTION where REVENUEID = @REVENUEID and OUTDATED = 0;
exec dbo.USP_SAVE_GIFTFEEGLDISTRIBUTION @REVENUEID, @CHANGEAGENTID, @CURRENTDATE;
end
if exists(select 1
from dbo.UNREALIZEDGAINLOSSGLDISTRIBUTION D
inner join dbo.GLTRANSACTION T on D.GLTRANSACTIONID = T.ID
where D.REVENUEID = @REVENUEID and T.GLACCOUNTID = @DEFAULTGLACCOUNTID and T.POSTSTATUSCODE = 1)
begin
delete from dbo.GLTRANSACTION where ID in (select D.GLTRANSACTIONID from dbo.UNREALIZEDGAINLOSSGLDISTRIBUTION D where D.REVENUEID = @REVENUEID and D.OUTDATED = 0) and POSTSTATUSCODE >= 1;
delete from dbo.UNREALIZEDGAINLOSSGLDISTRIBUTION where REVENUEID = @REVENUEID and OUTDATED = 0;
exec dbo.USP_SAVE_UNREALIZEDGAINLOSSGLDISTRIBUTION @REVENUEID, @CHANGEAGENTID, @CURRENTDATE;
end
if exists(select 1
from dbo.WRITEOFFGLDISTRIBUTION D
inner join dbo.GLTRANSACTION T on D.GLTRANSACTIONID = T.ID
where D.REVENUEID = @REVENUEID and T.GLACCOUNTID = @DEFAULTGLACCOUNTID and T.POSTSTATUSCODE = 1)
begin
-- Map by reason code
if dbo.UFN_VALID_BASICGL_INSTALLED() = 1
begin
-- Using a table to support redistributing across multiple write-offs, e.g. editing a pledge designation
declare @WRITEOFFIDTABLE UDT_GENERICID;
insert into @WRITEOFFIDTABLE
select D.WRITEOFFID
from dbo.WRITEOFFGLDISTRIBUTION D
inner join dbo.GLTRANSACTION T on D.GLTRANSACTIONID = T.ID
where D.REVENUEID = @REVENUEID and T.GLACCOUNTID = @DEFAULTGLACCOUNTID and T.POSTSTATUSCODE = 1
group by WRITEOFFID
end
delete from dbo.GLTRANSACTION where ID in (select D.GLTRANSACTIONID from dbo.WRITEOFFGLDISTRIBUTION D where D.REVENUEID = @REVENUEID and D.OUTDATED = 0) and POSTSTATUSCODE >= 1;
delete from dbo.WRITEOFFGLDISTRIBUTION where REVENUEID = @REVENUEID and OUTDATED = 0;
if dbo.UFN_VALID_BASICGL_INSTALLED() = 1 -- Map by reason code
exec dbo.USP_SAVE_PLEDGEWRITEOFFGLDISTRIBUTION @REVENUEID, @WRITEOFFIDTABLE, @CHANGEAGENTID, @CURRENTDATE
else
exec dbo.USP_SAVE_WRITEOFFGLDISTRIBUTION @REVENUEID, @CHANGEAGENTID, @CURRENTDATE;
end
if exists(select 1
from dbo.PLANNEDGIFTPAYOUTGLDISTRIBUTION D
inner join dbo.GLTRANSACTION T on D.GLTRANSACTIONID = T.ID
where D.REVENUEID = @REVENUEID and T.GLACCOUNTID = @DEFAULTGLACCOUNTID and T.POSTSTATUSCODE = 1)
begin
delete from dbo.GLTRANSACTION where ID in (select D.GLTRANSACTIONID from dbo.PLANNEDGIFTPAYOUTGLDISTRIBUTION D where D.REVENUEID = @REVENUEID and D.OUTDATED = 0) and POSTSTATUSCODE >= 1;
delete from dbo.PLANNEDGIFTPAYOUTGLDISTRIBUTION where REVENUEID = @REVENUEID and OUTDATED = 0;
declare @PLANNEDGIFTPAYOUTID uniqueidentifier;
select @PLANNEDGIFTPAYOUTID = ID from dbo.PLANNEDGIFTPAYOUT where REVENUEID = @REVENUEID;
exec dbo.USP_SAVE_PLANNEDGIFTPAYOUTGLDISTRIBUTION @REVENUEID, @PLANNEDGIFTPAYOUTID, @CHANGEAGENTID, @CURRENTDATE;
end
if exists(select 1
from dbo.GIFTAIDGLDISTRIBUTION D
inner join dbo.GLTRANSACTION T on D.GLTRANSACTIONID = T.ID
where D.REVENUEID = @REVENUEID and T.GLACCOUNTID = @DEFAULTGLACCOUNTID and T.POSTSTATUSCODE = 1)
begin
declare revenueSplitCursor cursor local fast_forward for
select R.ID from dbo.REVENUESPLIT R where R.REVENUEID = @REVENUEID;
open revenueSplitCursor;
fetch next from revenueSplitCursor into @REVENUESPLITID;
while @@FETCH_STATUS = 0
begin
if exists(select 1
from dbo.GIFTAIDGLDISTRIBUTION D
inner join dbo.GLTRANSACTION T on D.GLTRANSACTIONID = T.ID
where D.REVENUESPLITGIFTAIDID = @REVENUESPLITID and T.GLACCOUNTID = @DEFAULTGLACCOUNTID and T.POSTSTATUSCODE = 1)
begin
delete from dbo.GLTRANSACTION where ID in (select D.GLTRANSACTIONID from dbo.GIFTAIDGLDISTRIBUTION D where D.REVENUESPLITGIFTAIDID = @REVENUESPLITID and D.OUTDATED = 0) and POSTSTATUSCODE >= 1;
delete from dbo.GIFTAIDGLDISTRIBUTION where REVENUESPLITGIFTAIDID = @REVENUESPLITID and OUTDATED = 0;
exec dbo.USP_SAVE_GIFTAIDGLDISTRIBUTION @REVENUESPLITID, @CHANGEAGENTID, @CURRENTDATE;
end
fetch next from revenueSplitCursor into @REVENUESPLITID;
end
close revenueSplitCursor;
deallocate revenueSplitCursor;
end
if exists(select 1
from dbo.CREDITGLDISTRIBUTION D
inner join dbo.GLTRANSACTION T on D.GLTRANSACTIONID = T.ID
where D.REVENUEID = @REVENUEID and T.GLACCOUNTID = @DEFAULTGLACCOUNTID and T.POSTSTATUSCODE = 1)
begin
declare creditCursor cursor local fast_forward for
select C.ID from dbo.CREDIT C inner join dbo.SALESORDER S on S.ID = C.SALESORDERID where S.REVENUEID = @REVENUEID and C.TYPECODE = 1;
open creditCursor;
fetch next from creditCursor into @REVENUESPLITID;
while @@FETCH_STATUS = 0
begin
if exists(select 1
from dbo.CREDITGLDISTRIBUTION D
inner join dbo.GLTRANSACTION T on D.GLTRANSACTIONID = T.ID
inner join dbo.CREDITITEM I on D.CREDITITEMID = I.ID
where I.CREDITID = @REVENUESPLITID and T.GLACCOUNTID = @DEFAULTGLACCOUNTID)
begin
delete from dbo.GLTRANSACTION where ID in (select D.GLTRANSACTIONID from dbo.CREDITGLDISTRIBUTION D inner join dbo.CREDITITEM I on D.CREDITITEMID = I.ID where I.CREDITID = @REVENUESPLITID and D.OUTDATED = 0) and POSTSTATUSCODE >= 1;
delete from dbo.CREDITGLDISTRIBUTION where CREDITITEMID in (select ID from dbo.CREDITITEM where CREDITID = @REVENUESPLITID) and OUTDATED = 0;
exec dbo.USP_SALESORDER_CREATEDISCOUNTGLDISTRIBUTION @REVENUESPLITID, @CHANGEAGENTID, @CURRENTDATE;
end
fetch next from creditCursor into @REVENUESPLITID;
end
close creditCursor;
deallocate creditCursor;
end
if exists(select 1
from dbo.AUCTIONPURCHASEGLDISTRIBUTION D
inner join dbo.GLTRANSACTION T on D.GLTRANSACTIONID = T.ID
where D.REVENUEID = @REVENUEID or D.REVENUEPURCHASEID = @REVENUEID and T.GLACCOUNTID = @DEFAULTGLACCOUNTID and T.POSTSTATUSCODE = 1)
begin
select TOP 1 @REVENUEID = D.REVENUEPURCHASEID from AUCTIONPURCHASEGLDISTRIBUTION D where D.REVENUEID = @REVENUEID or D.REVENUEPURCHASEID = @REVENUEID;
delete from dbo.GLTRANSACTION where ID in (select D.GLTRANSACTIONID from dbo.AUCTIONPURCHASEGLDISTRIBUTION D where D.REVENUEPURCHASEID = @REVENUEID and D.OUTDATED = 0) and POSTSTATUSCODE >= 1;
delete from dbo.AUCTIONPURCHASEGLDISTRIBUTION where REVENUEPURCHASEID = @REVENUEID and OUTDATED = 0;
exec dbo.USP_SAVE_AUCTIONPURCHASEGLDISTRIBUTION @REVENUEID, @CHANGEAGENTID, @CURRENTDATE;
set @HASDEFAULT = 1;
end
if @HASDEFAULT = 1 and @DEPOSITID is not null
exec dbo.USP_BANKACCOUNTDEPOSIT_OVERWRITEPAYMENTDEBITACCOUNTS @REVENUEID, @DEPOSITID, @CHANGEAGENTID, @CURRENTDATE;
end
if exists(
select 1
from dbo.GLACCOUNTMAPPINGERROR
where
TRANSACTIONID = @ORIGINALID
and DELETED = 0
and ERRORMESSAGE in (
select E.ERRORMESSAGE
from dbo.GLACCOUNTMAPPINGERROR E
where
E.TRANSACTIONID = @ORIGINALID
and E.GLACCOUNTMAPPINGERRORUPDATEPROCESSID = @PROCESSID
)
)
return 0
else
return 1
end