USP_DATAFORMTEMPLATE_VIEW_ACCOUNTINGELEMENTRELATIONSHIPDETAILS
The load procedure used by the view dataform template "Accounting Element Relationship Detail View Form"
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | The input ID parameter used to load the fields defined on the form. |
@DATALOADED | bit | INOUT | Output parameter indicating whether or not data was actually loaded. |
@RELATIONSHIPID | nvarchar(60) | INOUT | Relationship ID |
@DESCRIPTION | nvarchar(60) | INOUT | Relationship description |
@BASEELEMENTNAME | nvarchar(60) | INOUT | Relationship basis |
@RESTRICTION | nvarchar(60) | INOUT | Restrict\Allow |
@DATAELEMENTS | xml | INOUT | Data elements |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_ACCOUNTINGELEMENTRELATIONSHIPDETAILS
(
@ID uniqueidentifier,
@DATALOADED bit = 0 output,
@RELATIONSHIPID nvarchar(60) = null output,
@DESCRIPTION nvarchar(60) = null output,
@BASEELEMENTNAME nvarchar(60) = null output,
@RESTRICTION nvarchar(60) = null output,
@DATAELEMENTS xml= null output
) with execute as owner
as
set nocount on;
set @DATALOADED = 0;
select @DATALOADED = 1,
@RELATIONSHIPID = ACCOUNTINGELEMENTRELATIONSHIP.RELATIONSHIPID,
@DESCRIPTION = ACCOUNTINGELEMENTRELATIONSHIP.DESCRIPTION, @BASEELEMENTNAME = PDACCOUNTSTRUCTURE.DESCRIPTION,
@RESTRICTION = ACCOUNTINGELEMENTRELATIONSHIP.RESTRICTION
from dbo.ACCOUNTINGELEMENTRELATIONSHIP
inner join dbo.PDACCOUNTSTRUCTURE on ACCOUNTINGELEMENTRELATIONSHIP.BASEELEMENTACCOUNTSTRUCTUREID =
PDACCOUNTSTRUCTURE.ID
where ACCOUNTINGELEMENTRELATIONSHIP.ID = @ID
declare @SEQUENCE int, @MAXSEQUENCE int;
Select @SEQUENCE = MIN(SEGMENTCOLUMN), @MAXSEQUENCE = Max(SEGMENTCOLUMN) from dbo.PDACCOUNTSTRUCTURE
create table #ELEMENTS (ACCOUNTSTRUCTUREID uniqueidentifier, SELECTEDELEMENTS nvarchar(max) collate DATABASE_DEFAULT);
with ACCOUNTSTEMP(ID, SELECTEDELEMENTS) as (select distinct null,
(SUBSTRING((select distinct (', ' + LA.ACCOUNTSTRING)
from dbo.ACCOUNTINGELEMENTRELATIONSHIPDETAIL AERD
inner join dbo.GLACCOUNT LA on LA.ID = AERD.ACCOUNTID
where AERD.ACCOUNTINGELEMENTRELATIONSHIPID = @ID and AERD.ACCOUNTID is not null
order by ', ' + LA.ACCOUNTSTRING
for xml PATH( '' )),3,105)) AS SELECTEDELEMENTS)
insert into #ELEMENTS select ID,SELECTEDELEMENTS from ACCOUNTSTEMP where SELECTEDELEMENTS is not null;
with BASEELEMENTSTEMP(ID,SELECTEDELEMENTS) as (select distinct ASR.ID,
(SUBSTRING((select distinct (', ' + DE.SHORTDESCRIPTION)
from dbo.ACCOUNTINGELEMENTRELATIONSHIPDETAIL AERD
inner join dbo.PDACCOUNTSEGMENTVALUE DE on DE.ID = AERD.BASEELEMENTID
where AERD.ACCOUNTINGELEMENTRELATIONSHIPID = @ID
order by ', ' + DE.SHORTDESCRIPTION
for xml PATH( '' )),3,105)) AS SELECTEDELEMENTS
from PDACCOUNTSTRUCTURE ASR inner join ACCOUNTINGELEMENTRELATIONSHIP AER
on ASR.ID = AER.BASEELEMENTACCOUNTSTRUCTUREID and
AER.ID = @ID)
insert into #ELEMENTS select ID,SELECTEDELEMENTS from BASEELEMENTSTEMP where SELECTEDELEMENTS is not null;
While @SEQUENCE <= @MAXSEQUENCE
begin
declare @SQL nvarchar(max)
set @SQL = N'with DETAILS(ID,SELECTEDELEMENTS) as (select ASR.ID, (substring((SELECT DISTINCT ( '', '' + DE.SHORTDESCRIPTION )
from dbo.ACCOUNTINGELEMENTRELATIONSHIPDETAIL AERD
inner join dbo.PDACCOUNTSEGMENTVALUE DE on DE.ID = AERD.DATAELEMENT' + CAST(@SEQUENCE AS NVARCHAR(3)) + 'ID
where AERD.ACCOUNTINGELEMENTRELATIONSHIPID = @ID and AERD.ACCOUNTID is null
ORDER BY '', '' + DE.SHORTDESCRIPTION
for xml PATH( '''' )),3,105)) AS SELECTEDELEMENTS
from dbo.PDACCOUNTSTRUCTURE ASR where SEGMENTCOLUMN=' + CAST(@SEQUENCE AS NVARCHAR(3)) + '
and ASR.ID <> (select BASEELEMENTACCOUNTSTRUCTUREID from ACCOUNTINGELEMENTRELATIONSHIP where ID = @ID))
insert into #ELEMENTS select ID,SELECTEDELEMENTS from DETAILS where SELECTEDELEMENTS is not null';
exec sp_executesql @SQL, N'@ID uniqueidentifier', @ID = @ID
set @SEQUENCE = @SEQUENCE + 1
end
set @DATAELEMENTS =
(select coalesce(ASR.ID,newid()) as ID, coalesce(ASR.DESCRIPTION,'Account') as NAME,
case when len(EM.SELECTEDELEMENTS) > 100 then substring(EM.SELECTEDELEMENTS, 0, 100) + '...' else EM.SELECTEDELEMENTS end as SELECTEDELEMENTS
from #ELEMENTS EM
left join dbo.PDACCOUNTSTRUCTURE ASR on ASR.ID = EM.ACCOUNTSTRUCTUREID
for xml raw('ITEM'),type,elements,root('DATAELEMENTS'),BINARY BASE64)
drop table #ELEMENTS;
return 0;