USP_DATAFORMTEMPLATE_EDIT_GLACCOUNTSEQUENCE

The save procedure used by the edit dataform template "Account Sequence Edit Form".

Parameters

Parameter Parameter Type Mode Description
@CHANGEAGENTID uniqueidentifier IN Input parameter indicating the ID of the change agent invoking the procedure.
@ACCOUNTSEQUENCE xml IN Accounting Sequence

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_GLACCOUNTSEQUENCE (
    @CHANGEAGENTID uniqueidentifier = null,
    @ACCOUNTSEQUENCE xml

)
as

    set nocount on;

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

    declare @CURRENTDATE datetime
    set @CURRENTDATE = getdate()

    begin try
        -- handle updating the data

        exec dbo.USP_ACCOUNTSEQUENCE_UPDATEFROMXML @ACCOUNTSEQUENCE, @CHANGEAGENTID;

    -- update account strings to match new sequence

    declare @Segments table (LEDGERACCOUNTID uniqueidentifier, SEGMENTSEQUENCE tinyint, SHORTID nvarchar(100))
    insert into @Segments (LEDGERACCOUNTID, SEGMENTSEQUENCE, SHORTID)
    select unPvt.ID, PDACCOUNTSTRUCTURE.SEGMENTSEQUENCE, PDACCOUNTSEGMENTVALUE.SHORTDESCRIPTION
      from
    (select ID, DATAELEMENT1ID, DATAELEMENT2ID, DATAELEMENT3ID, DATAELEMENT4ID, DATAELEMENT5ID, DATAELEMENT6ID, DATAELEMENT7ID, DATAELEMENT8ID, DATAELEMENT9ID, DATAELEMENT10ID,
        DATAELEMENT11ID, DATAELEMENT12ID, DATAELEMENT13ID, DATAELEMENT14ID, DATAELEMENT15ID, DATAELEMENT16ID, DATAELEMENT17ID, DATAELEMENT18ID, DATAELEMENT19ID, DATAELEMENT20ID,
        DATAELEMENT21ID, DATAELEMENT22ID, DATAELEMENT23ID, DATAELEMENT24ID, DATAELEMENT25ID, DATAELEMENT26ID, DATAELEMENT27ID, DATAELEMENT28ID, DATAELEMENT29ID, DATAELEMENT30ID
    from dbo.GLACCOUNT) p
    unpivot
    (DATAELEMENTID for dColumn in
        (DATAELEMENT1ID, DATAELEMENT2ID, DATAELEMENT3ID, DATAELEMENT4ID, DATAELEMENT5ID, DATAELEMENT6ID, DATAELEMENT7ID, DATAELEMENT8ID, DATAELEMENT9ID, DATAELEMENT10ID,
        DATAELEMENT11ID, DATAELEMENT12ID, DATAELEMENT13ID, DATAELEMENT14ID, DATAELEMENT15ID, DATAELEMENT16ID, DATAELEMENT17ID, DATAELEMENT18ID, DATAELEMENT19ID, DATAELEMENT20ID,
        DATAELEMENT21ID, DATAELEMENT22ID, DATAELEMENT23ID, DATAELEMENT24ID, DATAELEMENT25ID, DATAELEMENT26ID, DATAELEMENT27ID, DATAELEMENT28ID, DATAELEMENT29ID, DATAELEMENT30ID)) as unPvt
    inner join dbo.PDACCOUNTSEGMENTVALUE ON unPvt.DATAELEMENTID = PDACCOUNTSEGMENTVALUE.ID    
    inner join dbo.PDACCOUNTSTRUCTURE ON PDACCOUNTSEGMENTVALUE.PDACCOUNTSTRUCTUREID = PDACCOUNTSTRUCTURE.ID

    declare @SEPARATOR nvarchar(1);
    select top 1 @SEPARATOR = SEPARATOR from dbo.PDACCOUNTSTRUCTURE;
    update dbo.GLACCOUNT
    set ACCOUNTSTRING =
        substring((select isnull(SHORTID+@SEPARATOR,'')
      from @Segments S
      where S.LEDGERACCOUNTID = ID
      order by S.SEGMENTSEQUENCE
      for xml path(''), type).value('.','nvarchar(130)'), 1, len((select isnull(SHORTID+@SEPARATOR,'')
      from @Segments S
      where S.LEDGERACCOUNTID = ID
      order by S.SEGMENTSEQUENCE
      for xml path(''), type).value('.','nvarchar(130)'))-1)      
end try
    begin catch
        exec dbo.USP_RAISE_ERROR
        return 1
    end catch
return 0;