USP_DATAFORMTEMPLATE_ADD_PDACCOUNTSTRUCTURE2

The save procedure used by the add dataform template "Account Structure Add Form 2".

Parameters

Parameter Parameter Type Mode Description
@SYSTEMID uniqueidentifier IN Input parameter indicating the context ID for the record being added.
@ID uniqueidentifier INOUT The output parameter indicating the ID of the record added.
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@DESCRIPTION nvarchar(100) IN Segment name
@SEQUENCE int IN Sequence
@LENGTH tinyint IN Length
@PDACCOUNTTABLESAVAILABLEFORSEGMENTID uniqueidentifier IN Calculated using
@SEGMENTTYPE tinyint IN Segment type
@SEPARATORCODE tinyint IN Separator
@PDACCOUNTSYSTEMID uniqueidentifier IN
@ISPROJECTSEGMENT bit IN Associate this segment with 'Project'
@FENXT bit IN

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_PDACCOUNTSTRUCTURE2
(
    @SYSTEMID uniqueidentifier,
    @ID uniqueidentifier = null output,
    @CHANGEAGENTID uniqueidentifier = null,
    @DESCRIPTION nvarchar(100) = null,
    @SEQUENCE int = 0,
    @LENGTH tinyint = 0,
    @PDACCOUNTTABLESAVAILABLEFORSEGMENTID uniqueidentifier = null,
    @SEGMENTTYPE tinyint = 3,
    @SEPARATORCODE tinyint = 1,
    @PDACCOUNTSYSTEMID uniqueidentifier  = null,
    @ISPROJECTSEGMENT bit = 0,
    @FENXT bit = 0
)
as

set nocount on;

if @ID is null
    set @ID = newid()

if @CHANGEAGENTID is null  
    exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output

declare @CURRENTDATE datetime
declare @ISCONSTANTVALUE bit = 0

set @CURRENTDATE = getdate()
select
    @SEQUENCE = dbo.UFN_PDACCOUNTSTRUCTURE_GETTABLENUMBER()
select
    @SEQUENCE = count(ID) from dbo.PDACCOUNTSTRUCTURE
where
    PDACCOUNTSYSTEMID=@PDACCOUNTSYSTEMID
set
    @SEQUENCE = @SEQUENCE + 1    

select
    @SEGMENTTYPE = case when ISCODETABLE < 3 then 3 else 4 end 
from
    PDACCOUNTTABLESAVAILABLEFORSEGMENT
where
    ID = @PDACCOUNTTABLESAVAILABLEFORSEGMENTID

if @SEPARATORCODE is null 
    set @SEPARATORCODE = 1

declare @MAXCOLUMN int;
select
    @MAXCOLUMN = isnull(max(SEGMENTCOLUMN) + 1,1)
from
    dbo.PDACCOUNTSTRUCTURE;    

begin try
    -- Only one system can be set to default.

    if @ISPROJECTSEGMENT = 1 
        update dbo.PDACCOUNTSTRUCTURE set ISPROJECTSEGMENT = 0 where ISPROJECTSEGMENT = 1 and PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID;

    if @PDACCOUNTTABLESAVAILABLEFORSEGMENTID = '1BA6F27F-8454-4FC4-A830-3FDA8CD35D04'
        set @ISCONSTANTVALUE = 1


    -- handle inserting the data

    insert into dbo.PDACCOUNTSTRUCTURE
        (ID, DESCRIPTION, SEQUENCE, LENGTH, PDACCOUNTTABLESAVAILABLEFORSEGMENTID,  SEGMENTTYPE, SEPARATORCODE, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, PDACCOUNTSYSTEMID, ISPROJECTSEGMENT, ISCONSTANTVALUE,SEGMENTCOLUMN, SEGMENTSEQUENCE)
    values
        (@ID, @DESCRIPTION, @SEQUENCE, @LENGTH, @PDACCOUNTTABLESAVAILABLEFORSEGMENTID,@SEGMENTTYPE,@SEPARATORCODE, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE, @SYSTEMID, @ISPROJECTSEGMENT, @ISCONSTANTVALUE,@MAXCOLUMN, @SEQUENCE)

end try

begin catch
    exec dbo.USP_RAISE_ERROR
    return 1
end catch

return 0