USP_FENXT_POSTEXCEPTIONS
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@POSTTOGLPROCESSID | uniqueidentifier | IN | |
@TABLENAME | nvarchar(128) | IN | |
@EXCEPTIONTABLENAME | nvarchar(128) | IN | |
@EXCEPTIONTABLECOLUMNLIST | nvarchar(2048) | IN |
Definition
Copy
CREATE procedure dbo.USP_FENXT_POSTEXCEPTIONS
(
@POSTTOGLPROCESSID uniqueidentifier,
@TABLENAME sysname,
@EXCEPTIONTABLENAME sysname,
@EXCEPTIONTABLECOLUMNLIST nvarchar(2048)
)
as
declare @SEQ int;
declare @LEN int;
declare @START int;
declare @PDACCOUNTSYSTEMID uniqueidentifier = (select PDACCOUNTSYSTEMID from dbo.POSTTOGLPROCESS where ID = @POSTTOGLPROCESSID);
create table #tempCheckFENXT
(
JOURNALENTRYID uniqueidentifier,
PDACCOUNTSYSTEMID uniqueidentifier,
ACCOUNTNUMBER nvarchar(100),
UIPROJECTID nvarchar(20),
ERRORMSG nvarchar(255)
)
select
@SEQ = SEQUENCE,
@LEN = LENGTH
from dbo.PDACCOUNTSTRUCTURE
where PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID
and ISPROJECTSEGMENT = 1;
select
@START = sum(LENGTH)+sum(case SEPARATORCODE when 6 then 0 else 1 end)
from PDACCOUNTSTRUCTURE
where PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID
and SEQUENCE < @SEQ;
declare @sqlstring nvarchar(max) =
'insert into #tempCheckFENXT
(
JOURNALENTRYID,
PDACCOUNTSYSTEMID,
ACCOUNTNUMBER,
UIPROJECTID
)
select
JournalEntry.ID,
GLACCOUNT.PDACCOUNTSYSTEMID,
isnull(nullif(ACCOUNTALIAS,''''), stuff(ACCOUNTNUMBER,'+convert(varchar,@START)+','+convert(varchar,@LEN)+'+1,'''')),
DESIGNATIONALTLOOKUPID.ALTLOOKUPID
from ' + @TABLENAME + '
inner join dbo.JOURNALENTRY on '+@TABLENAME+'.GLTRANSACTIONID = JOURNALENTRY.ID
inner join dbo.GLACCOUNT on JOURNALENTRY.GLACCOUNTID = GLACCOUNT.ID
left join dbo.V_FENXTINTEGRATION_MAPPEDDESIGNATION on substring(GLACCOUNT.ACCOUNTNUMBER,'+convert(varchar,@START)+'+1,'+convert(varchar,@LEN)+') = V_FENXTINTEGRATION_MAPPEDDESIGNATION.SHORTDESCRIPTION
and V_FENXTINTEGRATION_MAPPEDDESIGNATION.PDACCOUNTSYSTEMID = ''' + convert(varchar(36),@PDACCOUNTSYSTEMID) + '''
left join dbo.DESIGNATIONALTLOOKUPID on V_FENXTINTEGRATION_MAPPEDDESIGNATION.DESIGNATIONID = DESIGNATIONALTLOOKUPID.DESIGNATIONID and DESIGNATIONALTLOOKUPID.ALTLOOKUPIDTYPECODEID = ''E5837E89-B51A-4BAD-8E06-50D515DC64A2'''
exec (@sqlString);
update #tempCheckFENXT
set ERRORMSG = case
when FENXTACCOUNT.ID is null then 'This account number doesn''t exist in Financial Edge NXT'
when #tempCheckFENXT.UIPROJECTID is null then 'This account requires a project'
when FENXTACCOUNT.PREVENTPOSTINGDATE < convert(date,getdate()) then 'This account number has been closed for posting in Financial Edge NXT'
when FENXTACCOUNT.PROJECTREQUIRED = 1 and FENXTPROJECT.ID is null then 'This account number requires a project for posting in Financial Edge NXT'
when FENXTPROJECT.PREVENTPOSTINGAFTER = 1 and FENXTPROJECT.POSTINGDATE< convert(date,getdate()) then 'The project associated with this account number is closed for posting in Financial Edge NXT'
end
from #tempCheckFENXT
left join dbo.FENXTACCOUNT on #tempCheckFENXT.ACCOUNTNUMBER = FENXTACCOUNT.ACCOUNTNUMBER and #tempCheckFENXT.PDACCOUNTSYSTEMID = FENXTACCOUNT.PDACCOUNTSYSTEMID
left join dbo.FENXTPROJECT on #tempCheckFENXT.UIPROJECTID = FENXTPROJECT.UIPROJECTID and #tempCheckFENXT.PDACCOUNTSYSTEMID = FENXTPROJECT.PDACCOUNTSYSTEMID;
update #tempCheckFENXT
set ERRORMSG = 'Part of a transaction that is invalid according to Financial Edge NXT posting rules. See the ' + JOURNALENTRY.TRANSACTIONTYPE + ' side of this transaction for details.'
from #tempCheckFENXT as temp
inner join dbo.JOURNALENTRY on temp.JournalEntryid = JOURNALENTRY.ID
inner join dbo.JOURNALENTRY as JE2 on JOURNALENTRY.FINANCIALTRANSACTIONLINEITEMID = JE2.FINANCIALTRANSACTIONLINEITEMID and JOURNALENTRY.ID != JE2.ID
inner join #tempCheckFENXT on JE2.ID = #tempCheckFENXT.JOURNALENTRYID
where temp.ERRORMSG is not null
and #tempCheckFENXT.ERRORMSG is null;
set @sqlstring =
'insert into '+@EXCEPTIONTABLENAME+' ('+@EXCEPTIONTABLECOLUMNLIST+')
select
FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID,
JOURNALENTRY.ID,
JOURNALENTRY.TRANSACTIONTYPE,
JOURNALENTRY.TRANSACTIONTYPECODE, FINANCIALTRANSACTIONLINEITEM.POSTDATE,
GLACCOUNT.ACCOUNTNUMBER,
'''',
JOURNALENTRY.BASEAMOUNT,
JOURNALENTRY.COMMENT,
#tempCheckFENXT.ERRORMSG,
CURRENCYSET.BASECURRENCYID,
BASECURRENCY.ISO4217,
isnull(BASERATE.RATE,0),
JOURNALENTRY.TRANSACTIONAMOUNT,
JOURNALENTRY.TRANSACTIONCURRENCYID,
TRANSACTIONCURRENCY.ISO4217,
JOURNALENTRY.ORGAMOUNT,
isnull(ORGANIZATIONRATE.RATE,0)
from #tempCheckFENXT
inner join dbo.JOURNALENTRY on #tempCheckFENXT.JOURNALENTRYID = JOURNALENTRY.ID
inner join dbo.FINANCIALTRANSACTIONLINEITEM on JOURNALENTRY.FINANCIALTRANSACTIONLINEITEMID = FINANCIALTRANSACTIONLINEITEM.ID
inner join dbo.GLACCOUNT on JOURNALENTRY.GLACCOUNTID = GLACCOUNT.ID
inner join dbo.PDACCOUNTSYSTEM on GLACCOUNT.PDACCOUNTSYSTEMID = PDACCOUNTSYSTEM.ID
inner join dbo.CURRENCYSET on PDACCOUNTSYSTEM.CURRENCYSETID = CURRENCYSET.ID
inner join dbo.CURRENCY as BASECURRENCY on CURRENCYSET.BASECURRENCYID = BASECURRENCY.ID
inner join dbo.JOURNALENTRY_EXT on JOURNALENTRY.ID = JOURNALENTRY_EXT.ID
left join dbo.CURRENCYEXCHANGERATE as BASERATE on JOURNALENTRY_EXT.PRECALCBASEEXCHANGERATEID = BASERATE.ID
left join dbo.CURRENCY as TRANSACTIONCURRENCY on JOURNALENTRY.TRANSACTIONCURRENCYID = TRANSACTIONCURRENCY.ID
left join dbo.CURRENCYEXCHANGERATE as ORGANIZATIONRATE on JOURNALENTRY_EXT.PRECALCORGANIZATIONEXCHANGERATEID = ORGANIZATIONRATE.ID
where #tempCheckFENXT.ERRORMSG is not null;'
exec (@sqlstring);
drop table #tempCheckFENXT;