USP_DATAFORMTEMPLATE_EDIT_PDACCOUNTSTRUCTURE2
The save procedure used by the edit dataform template "Account Structure Edit Form 2".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | The input ID parameter indicating the ID of the record being edited. |
@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 |
@SEPARATORCODE | tinyint | IN | Separator |
@PDACCOUNTSYSTEMID | uniqueidentifier | IN | |
@ISPROJECTSEGMENT | bit | IN | Associate this segment with 'Project' |
@PDACCOUNTTABLESAVAILABLEFORSEGMENTID | uniqueidentifier | IN | Calculated using |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_PDACCOUNTSTRUCTURE2 (
@ID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier = null,
@DESCRIPTION nvarchar(100),
@SEQUENCE int,
@LENGTH tinyint,
@SEPARATORCODE tinyint,
@PDACCOUNTSYSTEMID uniqueidentifier,
@ISPROJECTSEGMENT bit,
@PDACCOUNTTABLESAVAILABLEFORSEGMENTID uniqueidentifier
)
as
set nocount on;
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output
declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()
if @SEPARATORCODE is null
set @SEPARATORCODE = 1
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;
declare @PDACCOUNTTABLESAVAILABLEFORSEGMENTCHANGED bit = 0;
if @PDACCOUNTTABLESAVAILABLEFORSEGMENTID != (select PDACCOUNTTABLESAVAILABLEFORSEGMENTID from PDACCOUNTSTRUCTURE where ID = @ID)
set @PDACCOUNTTABLESAVAILABLEFORSEGMENTCHANGED = 1
if @PDACCOUNTTABLESAVAILABLEFORSEGMENTCHANGED = 1
begin
-- remove existing mappings
delete from dbo.PDCOMPOSITESEGMENTMAPPING where PDACCOUNTSTRUCTUREID = @ID;
delete from dbo.PDACCOUNTSEGMENTMAPPING where PDACCOUNTSTRUCTUREID = @ID;
end
-- handle updating the data
declare @ISCONSTANTVALUE bit = 0
if @PDACCOUNTTABLESAVAILABLEFORSEGMENTID = '1BA6F27F-8454-4FC4-A830-3FDA8CD35D04'
set @ISCONSTANTVALUE = 1
declare @SEGMENTTYPE tinyint;
Select @SEGMENTTYPE = case when ISCODETABLE < 3 then 3 else 4 end from PDACCOUNTTABLESAVAILABLEFORSEGMENT where ID = @PDACCOUNTTABLESAVAILABLEFORSEGMENTID
update dbo.PDACCOUNTSTRUCTURE set
[DESCRIPTION] = @DESCRIPTION,
SEQUENCE = @SEQUENCE,
SEGMENTSEQUENCE = @SEQUENCE,
LENGTH = @LENGTH,
SEPARATORCODE = @SEPARATORCODE,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CURRENTDATE,
PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID,
ISPROJECTSEGMENT = @ISPROJECTSEGMENT
,PDACCOUNTTABLESAVAILABLEFORSEGMENTID = case ELEMENTDEFINITIONCODE when 1 then PDACCOUNTTABLESAVAILABLEFORSEGMENTID else @PDACCOUNTTABLESAVAILABLEFORSEGMENTID end
,ISCONSTANTVALUE = @ISCONSTANTVALUE
,SEGMENTTYPE = case ELEMENTDEFINITIONCODE when 1 then 1 else @SEGMENTTYPE end
where ID = @ID
end try
begin catch
exec dbo.USP_RAISE_ERROR
return 1
end catch
return 0;