USP_FENXT_SYNCHRONIZE_ACCOUNTS
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@PDACCOUNTSYSTEMID | uniqueidentifier | IN | |
@CHANGEAGENTID | uniqueidentifier | IN | |
@LASTUPDATETIME | datetime | IN | |
@ROWSAFFECTED | int | INOUT |
Definition
Copy
CREATE procedure dbo.USP_FENXT_SYNCHRONIZE_ACCOUNTS
(
@PDACCOUNTSYSTEMID uniqueidentifier = null,
@CHANGEAGENTID uniqueidentifier = null,
@LASTUPDATETIME datetime = '17530101',
@ROWSAFFECTED int output
)
as
set @ROWSAFFECTED = 0;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
--Accounts that are currently not active that had their PREVENTPOSTINGDATE removed
update dbo.GLACCOUNT
set ACTIVE = 1,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = getdate()
from dbo.GLACCOUNT
inner join
(select
distinct PDACCOUNTSYSTEM.ID as PDACCOUNTSYSTEMID,
isnull(PDACCOUNTSTRUCTURE.LENGTH+1,0) as LENGTH,
isnull((select sum(LENGTH) + sum(case SEPARATORCODE when 6 then 0 else 1 end)
from dbo.PDACCOUNTSTRUCTURE as STRUCT2
where PDACCOUNTSTRUCTURE.PDACCOUNTSYSTEMID = STRUCT2.PDACCOUNTSYSTEMID
and PDACCOUNTSTRUCTURE.SEQUENCE > STRUCT2.SEQUENCE),0)+1 as STARTPOS,
SEQUENCE,
(select max(SEQUENCE) as MAXSEQ from dbo.PDACCOUNTSTRUCTURE as STRUCT3 where PDACCOUNTSTRUCTURE.PDACCOUNTSYSTEMID = STRUCT3.PDACCOUNTSYSTEMID) as MAXSEQ,
isnull(PDACCOUNTSTRUCTURE.ISPROJECTSEGMENT, 0) as ISPROJECTSEGMENT
from dbo.PDACCOUNTSYSTEM
left join dbo.PDACCOUNTSTRUCTURE on PDACCOUNTSYSTEM.ID = PDACCOUNTSTRUCTURE.PDACCOUNTSYSTEMID and PDACCOUNTSTRUCTURE.ISPROJECTSEGMENT = 1) as V1
on GLACCOUNT.PDACCOUNTSYSTEMID = V1.PDACCOUNTSYSTEMID
inner join dbo.FENXTACCOUNT
on isnull(nullif(GLACCOUNT.ACCOUNTALIAS,''),stuff(GLACCOUNT.ACCOUNTNUMBER,case when V1.ISPROJECTSEGMENT = 0 then V1.STARTPOS when V1.ISPROJECTSEGMENT = 1 and V1.STARTPOS = 1 then 1 else V1.STARTPOS - 1 end, V1.LENGTH,'')) = FENXTACCOUNT.ACCOUNTNUMBER
where dbo.FENXTACCOUNT.DATEMODIFIED > @LASTUPDATETIME
and FENXTACCOUNT.PREVENTPOSTINGDATE is null
and GLACCOUNT.ACTIVE = 0
and GLACCOUNT.PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID;
select @ROWSAFFECTED += @@ROWCOUNT;
--Deactivate active accounts with PREVENTPOSTINGDATE <= today
update dbo.GLACCOUNT
set ACTIVE = 0,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = getdate()
from dbo.GLACCOUNT
inner join
(select
distinct PDACCOUNTSYSTEM.ID as PDACCOUNTSYSTEMID,
isnull(PDACCOUNTSTRUCTURE.LENGTH+1,0) as LENGTH,
isnull((select sum(LENGTH) + sum(case SEPARATORCODE when 6 then 0 else 1 end)
from dbo.PDACCOUNTSTRUCTURE as STRUCT2
where PDACCOUNTSTRUCTURE.PDACCOUNTSYSTEMID = STRUCT2.PDACCOUNTSYSTEMID
and PDACCOUNTSTRUCTURE.SEQUENCE > STRUCT2.SEQUENCE),0)+1 as STARTPOS,
SEQUENCE,
(select max(SEQUENCE) as MAXSEQ from dbo.PDACCOUNTSTRUCTURE as STRUCT3 where PDACCOUNTSTRUCTURE.PDACCOUNTSYSTEMID = STRUCT3.PDACCOUNTSYSTEMID) as MAXSEQ,
isnull(PDACCOUNTSTRUCTURE.ISPROJECTSEGMENT, 0) as ISPROJECTSEGMENT
from dbo.PDACCOUNTSYSTEM
left join dbo.PDACCOUNTSTRUCTURE
on PDACCOUNTSYSTEM.ID = PDACCOUNTSTRUCTURE.PDACCOUNTSYSTEMID and PDACCOUNTSTRUCTURE.ISPROJECTSEGMENT = 1) as V1
on GLACCOUNT.PDACCOUNTSYSTEMID = V1.PDACCOUNTSYSTEMID
inner join FENXTACCOUNT on isnull(nullif(GLACCOUNT.ACCOUNTALIAS,''),stuff(GLACCOUNT.ACCOUNTNUMBER,case when V1.ISPROJECTSEGMENT = 0 then V1.STARTPOS when V1.ISPROJECTSEGMENT = 1 and V1.STARTPOS = 1 then 1 else V1.STARTPOS - 1 end, V1.LENGTH,'')) = FENXTACCOUNT.ACCOUNTNUMBER
where FENXTACCOUNT.PREVENTPOSTINGDATE < dateadd(d,1,convert(date,getdate()))
and GLACCOUNT.ACTIVE = 1
and GLACCOUNT.PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID;
select @ROWSAFFECTED += @@ROWCOUNT;