USP_POSTGENERIC
Post procedure for all post processes
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@CHANGEAGENTID | uniqueidentifier | IN | |
@GLPOSTPROCESSID | uniqueidentifier | IN | |
@SUMMARIZEBYDATECRITERIA | tinyint | IN | |
@FINANCIALBATCHID | uniqueidentifier | IN | |
@GLPOSTPROCESSSTATUSID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure [dbo].[USP_POSTGENERIC]
( @CHANGEAGENTID as uniqueidentifier
,@GLPOSTPROCESSID as uniqueidentifier
,@SUMMARIZEBYDATECRITERIA as tinyint = 1 --0 = Day, 1=Fiscal Period
,@FINANCIALBATCHID as uniqueidentifier = null
,@GLPOSTPROCESSSTATUSID as uniqueidentifier = null
)
as
set nocount on
--declare @WorkTable table (ID uniqueidentifier, CLASSCODE tinyint, JOURNALCODEID uniqueidentifier, AMOUNT money, TRANSACTIONAMOUNT money, ORGANIZATIONAMOUNT money, TRANSACTIONTYPECODE smallint, POSTDATE datetime, GLACCOUNTID uniqueidentifier, DATEFROM datetime, ORIGID uniqueidentifier, PRIMARY KEY clustered (TRANSACTIONTYPECODE,POSTDATE,GLACCOUNTID, ORIGID) )
declare @CHANGEDATE datetime = getdate()
if @FINANCIALBATCHID is null
select @FINANCIALBATCHID = newid()
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
create table #WorkTable (ID uniqueidentifier, CLASSCODE tinyint, JOURNALCODEID uniqueidentifier, BASEAMOUNT money, TRANSACTIONAMOUNT money, ORGANIZATIONAMOUNT money, TRANSACTIONTYPECODE smallint, POSTDATE datetime, GLACCOUNTID uniqueidentifier, DATEFROM datetime, ORIGID uniqueidentifier, PRIMARY KEY clustered (TRANSACTIONTYPECODE,POSTDATE,GLACCOUNTID,ORIGID));
insert into dbo.FINANCIALBATCH(ID, COMMITTED, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, GLPOSTPROCESSSTATUSID)
values
(@FINANCIALBATCHID, 0, @CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE, @GLPOSTPROCESSSTATUSID);
with CTE
as
(select JOURNALENTRY.CLASSCODE, JOURNALENTRY.JOURNALCODEID, JOURNALENTRY.BASEAMOUNT, JOURNALENTRY.TRANSACTIONAMOUNT, JOURNALENTRY.ORGAMOUNT, JOURNALENTRY.TRANSACTIONTYPECODE,
case @SUMMARIZEBYDATECRITERIA
when 1 then GLFISCALPERIOD.ENDDATE
when 0 then FINANCIALTRANSACTIONLINEITEM.POSTDATE
end as DateEnd,
JOURNALENTRY.GLACCOUNTID,
case @SUMMARIZEBYDATECRITERIA
when 1 then GLFISCALPERIOD.STARTDATE
when 0 then FINANCIALTRANSACTIONLINEITEM.POSTDATE
end as DateStart,
case GLPOSTPROCESSPOSTMETHOD.POSTMETHODCODE
when 1 then JOURNALENTRY.ID
when 2 then FINANCIALTRANSACTION.ID
when 3 then '00000000-0000-0000-0000-000000000000'
end as SumDetGroupingCol
from dbo.JOURNALENTRY
inner join #JOURNALENTRIESTOPOST on JOURNALENTRY.ID = #JOURNALENTRIESTOPOST.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM on JOURNALENTRY.FINANCIALTRANSACTIONLINEITEMID = FINANCIALTRANSACTIONLINEITEM.ID
inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
inner join dbo.FINANCIALSYSTEMTRANSACTIONTYPE on FINANCIALTRANSACTION.TYPECODE = FINANCIALSYSTEMTRANSACTIONTYPE.TYPECODE
inner join dbo.GLPOSTPROCESSPOSTMETHOD on FINANCIALSYSTEMTRANSACTIONTYPE.ID = GLPOSTPROCESSPOSTMETHOD.FINANCIALSYSTEMTRANSACTIONTYPEID AND GLPOSTPROCESSPOSTMETHOD.GLPOSTPROCESSID = @GLPOSTPROCESSID AND JOURNALENTRY.TRANSACTIONTYPECODE = GLPOSTPROCESSPOSTMETHOD.TRANSACTIONTYPECODE
inner join dbo.GLFISCALPERIOD on FINANCIALTRANSACTIONLINEITEM.POSTDATE between GLFISCALPERIOD.STARTDATE and GLFISCALPERIOD.ENDDATE and GLFISCALPERIOD.CLOSED = 0
where FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE = 1
and JOURNALENTRY.GLACCOUNTID is not null)
insert into #WorkTable (ID, CLASSCODE, JOURNALCODEID, BASEAMOUNT, TRANSACTIONAMOUNT, ORGANIZATIONAMOUNT, TRANSACTIONTYPECODE, POSTDATE, GLACCOUNTID, DATEFROM, ORIGID)
select newid(), CLASSCODE, JOURNALCODEID, sum(BASEAMOUNT), sum(TRANSACTIONAMOUNT), sum(ORGANIZATIONAMOUNT), TRANSACTIONTYPECODE,
DateEnd, GLACCOUNTID, DateStart, SumDetGroupingCol
from CTE
group by TRANSACTIONTYPECODE, CLASSCODE, JOURNALCODEID, DateEnd, GLACCOUNTID, DateStart, SumDetGroupingCol
begin tran
begin try
insert into dbo.JournalEntry(ID, CLASSCODE, JOURNALCODEID, SEQUENCE, BASEAMOUNT, TRANSACTIONAMOUNT, ORGAMOUNT, TRANSACTIONTYPECODE, POSTDATE,
ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, GLACCOUNTID, FINANCIALBATCHID)
select ID, CLASSCODE, JOURNALCODEID, row_number() over (order by TRANSACTIONTYPECODE, POSTDATE), BASEAMOUNT, TRANSACTIONAMOUNT, ORGANIZATIONAMOUNT, TRANSACTIONTYPECODE, POSTDATE,
@CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE, GLACCOUNTID, @FINANCIALBATCHID
from #WorkTable
update dbo.JournalEntry
set SummaryID = TV1.ID,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CHANGEDATE
from dbo.JOURNALENTRY
inner join #JOURNALENTRIESTOPOST on JOURNALENTRY.ID = #JOURNALENTRIESTOPOST.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM on JOURNALENTRY.FINANCIALTRANSACTIONLINEITEMID = FINANCIALTRANSACTIONLINEITEM.ID
inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
inner join dbo.FINANCIALSYSTEMTRANSACTIONTYPE on FINANCIALTRANSACTION.TYPECODE = FINANCIALSYSTEMTRANSACTIONTYPE.TYPECODE
inner join dbo.GLPOSTPROCESSPOSTMETHOD on FINANCIALSYSTEMTRANSACTIONTYPE.ID = GLPOSTPROCESSPOSTMETHOD.FINANCIALSYSTEMTRANSACTIONTYPEID AND GLPOSTPROCESSPOSTMETHOD.GLPOSTPROCESSID = @GLPOSTPROCESSID AND JOURNALENTRY.TRANSACTIONTYPECODE = GLPOSTPROCESSPOSTMETHOD.TRANSACTIONTYPECODE
inner join #WorkTable TV1 on JOURNALENTRY.TRANSACTIONTYPECODE = TV1.TRANSACTIONTYPECODE
and JOURNALENTRY.GLACCOUNTID= TV1.GLACCOUNTID
and FINANCIALTRANSACTIONLINEITEM.POSTDATE between TV1.DATEFROM and TV1.POSTDATE
and case GLPOSTPROCESSPOSTMETHOD.POSTMETHODCODE
when 1 then JOURNALENTRY.ID
when 2 then FINANCIALTRANSACTION.ID
when 3 then JOURNALENTRY.ID
end = case GLPOSTPROCESSPOSTMETHOD.POSTMETHODCODE
when 1 then TV1.ORIGID
when 2 then TV1.ORIGID
when 3 then JOURNALENTRY.ID
end
where FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE = 1
and JOURNALENTRY.GLACCOUNTID is not null
update dbo.FINANCIALTRANSACTIONLINEITEM
set
POSTSTATUSCODE = 2,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CHANGEDATE
from dbo.JOURNALENTRY
inner join #JOURNALENTRIESTOPOST on JOURNALENTRY.ID = #JOURNALENTRIESTOPOST.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM on JOURNALENTRY.FINANCIALTRANSACTIONLINEITEMID = FINANCIALTRANSACTIONLINEITEM.ID
inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
inner join dbo.FINANCIALSYSTEMTRANSACTIONTYPE on FINANCIALTRANSACTION.TYPECODE = FINANCIALSYSTEMTRANSACTIONTYPE.TYPECODE
inner join dbo.GLPOSTPROCESSPOSTMETHOD on FINANCIALSYSTEMTRANSACTIONTYPE.ID = GLPOSTPROCESSPOSTMETHOD.FINANCIALSYSTEMTRANSACTIONTYPEID AND GLPOSTPROCESSPOSTMETHOD.GLPOSTPROCESSID = @GLPOSTPROCESSID AND JOURNALENTRY.TRANSACTIONTYPECODE = GLPOSTPROCESSPOSTMETHOD.TRANSACTIONTYPECODE
inner join #WorkTable TV1 on JOURNALENTRY.TRANSACTIONTYPECODE = TV1.TRANSACTIONTYPECODE
and JOURNALENTRY.GLACCOUNTID = TV1.GLACCOUNTID
and FINANCIALTRANSACTIONLINEITEM.POSTDATE between TV1.DATEFROM and TV1.POSTDATE
and case GLPOSTPROCESSPOSTMETHOD.POSTMETHODCODE
when 1 then JOURNALENTRY.ID
when 2 then FINANCIALTRANSACTION.ID
when 3 then JOURNALENTRY.ID
end = case GLPOSTPROCESSPOSTMETHOD.POSTMETHODCODE
when 1 then TV1.ORIGID
when 2 then TV1.ORIGID
when 3 then JOURNALENTRY.ID
end
where FINANCIALTRANSACTIONLINEITEM.POSTSTATUSCODE = 1
and JOURNALENTRY.GLACCOUNTID is not null
update dbo.FINANCIALTRANSACTION
set
POSTSTATUSCODE = 2,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CHANGEDATE
from dbo.JOURNALENTRY
inner join #JOURNALENTRIESTOPOST on JOURNALENTRY.ID = #JOURNALENTRIESTOPOST.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM on JOURNALENTRY.FINANCIALTRANSACTIONLINEITEMID = FINANCIALTRANSACTIONLINEITEM.ID
inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
inner join dbo.FINANCIALSYSTEMTRANSACTIONTYPE on FINANCIALTRANSACTION.TYPECODE = FINANCIALSYSTEMTRANSACTIONTYPE.TYPECODE
inner join dbo.GLPOSTPROCESSPOSTMETHOD on FINANCIALSYSTEMTRANSACTIONTYPE.ID = GLPOSTPROCESSPOSTMETHOD.FINANCIALSYSTEMTRANSACTIONTYPEID AND GLPOSTPROCESSPOSTMETHOD.GLPOSTPROCESSID = @GLPOSTPROCESSID AND JOURNALENTRY.TRANSACTIONTYPECODE = GLPOSTPROCESSPOSTMETHOD.TRANSACTIONTYPECODE
inner join #WorkTable TV1 on JOURNALENTRY.TRANSACTIONTYPECODE = TV1.TRANSACTIONTYPECODE
and JOURNALENTRY.GLACCOUNTID = TV1.GLACCOUNTID
and FINANCIALTRANSACTIONLINEITEM.POSTDATE between TV1.DATEFROM and TV1.POSTDATE
and case GLPOSTPROCESSPOSTMETHOD.POSTMETHODCODE
when 1 then JOURNALENTRY.ID
when 2 then FINANCIALTRANSACTION.ID
when 3 then JOURNALENTRY.ID
end = case GLPOSTPROCESSPOSTMETHOD.POSTMETHODCODE
when 1 then TV1.ORIGID
when 2 then TV1.ORIGID
when 3 then JOURNALENTRY.ID
end
where FINANCIALTRANSACTION.POSTSTATUSCODE = 1
and JOURNALENTRY.GLACCOUNTID is not null
end try
begin catch
if @@trancount > 0
rollback
end catch
if @@trancount > 0
commit
select count(*) from #JOURNALENTRIESTOPOST