USP_DATAFORMTEMPLATE_VIEW_GIFTFEEGLMAPPINGCALCULATE
The load procedure used by the view dataform template "Gift Fee GL Distribution Calculate Mapping View"
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. |
@CALCULATIONS | xml | INOUT | Calculations |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_GIFTFEEGLMAPPINGCALCULATE
(
@ID uniqueidentifier,
@DATALOADED bit = 0 output,
@CALCULATIONS xml = null output
)
as
set nocount on
set @DATALOADED = 0;
declare @ACCOUNTID uniqueidentifier
select @ACCOUNTID = T1.ID from dbo.GLACCOUNT T1
inner join dbo.GLTRANSACTION T2 on T2.GLACCOUNTID = T1.ID
inner join dbo.GIFTFEEGLDISTRIBUTION T3 on T3.GLTRANSACTIONID = T2.ID
where T3.ID = @ID
declare @ttable table (SEGMENTNAME nvarchar(100), SHORTDESCRIPTION nvarchar(30), SEGMENTVALUE nvarchar(max), SEQUENCE int)
declare @ttable2 table (SEGMENTNAME nvarchar(100), SHORTDESCRIPTION nvarchar(30), SEGMENTVALUE nvarchar(512), SEQUENCE int, RowNum int)
insert into @ttable2 (SEGMENTNAME, SHORTDESCRIPTION, SEGMENTVALUE, SEQUENCE, RowNum)
select
T4.DESCRIPTION as SEGMENTNAME,
T2.SHORTDESCRIPTION,
case SEGMENTTYPE
when 1 then dbo.UFN_PDACCOUNTCODEMAP_GETGIFTFEEDESCRIPTION(@ID)
when 2 then 'Unrestricted'
when 3 then case t4.ISCONSTANTVALUE when 1 then '<Constant Value>' else T3.LONGDESCRIPTION end
when 4 then T5.NAME
end as SEGMENTVALUE,
T4.SEQUENCE, row_number() over (order by SEQUENCE)
from dbo.PDACCOUNTSEGMENT T1
inner join dbo.PDACCOUNTSTRUCTURE T4 on T1.PDACCOUNTSTRUCTUREID = T4.ID
left join dbo.PDACCOUNTSEGMENTVALUE T2 on T1.PDACCOUNTSEGMENTVALUEID = T2.ID
left join dbo.PDACCOUNTSEGMENTMAPPING T3 on T3.PDACCOUNTSEGMENTVALUEID = T2.ID
left join dbo.PDCOMPOSITESEGMENTMAPPING T5 on T5.PDACCOUNTSEGMENTVALUEID = T2.ID
where T1.GLACCOUNTID = @ACCOUNTID
if exists (select SEQUENCE from @ttable2 group by SEQUENCE having count(*) > 1)
begin
declare @csv nvarchar(max)
declare @counter int = 0
declare @oldSegName nvarchar(512)=''
declare @oldShortDesc nvarchar(30)=''
declare @oldSEQ int=0
while @counter < (select count(*) from @ttable2)
begin
set @counter+=1
if (select SEQUENCE from @ttable2 where RowNum = @counter) != @oldSEQ
begin
if @oldSEQ > 0
insert into @ttable (SEGMENTNAME, SHORTDESCRIPTION, SEGMENTVALUE, SEQUENCE)
values (@oldSegName, @oldShortDesc, @csv, @oldSEQ)
select @oldSEQ = SEQUENCE, @oldShortDesc = SHORTDESCRIPTION, @oldSegName = SEGMENTNAME, @csv = SEGMENTVALUE from @ttable2 where RowNum = @counter
end
else
select @csv = @csv + ', ' + SEGMENTVALUE from @ttable2 where RowNum = @counter
end
insert into @ttable (SEGMENTNAME, SHORTDESCRIPTION, SEGMENTVALUE, SEQUENCE)
values (@oldSegName, @oldShortDesc, @csv, @oldSEQ)
end
else
insert into @ttable(SEGMENTNAME, SHORTDESCRIPTION, SEGMENTVALUE, SEQUENCE)
select SEGMENTNAME, SHORTDESCRIPTION, SEGMENTVALUE, SEQUENCE from @ttable2
set @CALCULATIONS =
(
select
SEGMENTNAME,
SHORTDESCRIPTION + N' - ' + SEGMENTVALUE as SEGMENTVALUE, SEQUENCE
from @ttable
order by SEQUENCE
for xml raw('ITEM'),elements,type,root('CALCULATIONS'),binary base64
)
if @CALCULATIONS is not null
set @DATALOADED = 1
return 0