USP_DATAFORMTEMPLATE_ADD_PURPOSEANDDESIGNATION_PRELOAD

Parameters

Parameter Parameter Type Mode Description
@INITIALPARENTDESIGNATIONID uniqueidentifier IN
@CURRENTAPPUSERID uniqueidentifier IN
@PARENTDESIGNATIONID uniqueidentifier INOUT
@SITEREQUIRED bit INOUT
@BASECURRENCYID uniqueidentifier INOUT
@PURPOSELOCATION tinyint INOUT
@PARENTDESIGNATIONPATH nvarchar(512) INOUT
@PARENTDESIGNATIONLOOKUPID nvarchar(412) INOUT
@DESIGNATIONHASGLMAPPING bit INOUT
@PURPOSEHASGLMAPPING bit INOUT
@SYSTEMSEGMENTMAPPINGS xml INOUT
@SITEID uniqueidentifier INOUT

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_PURPOSEANDDESIGNATION_PRELOAD (
  @INITIALPARENTDESIGNATIONID uniqueidentifier
  ,@CURRENTAPPUSERID uniqueidentifier
  ,@PARENTDESIGNATIONID uniqueidentifier = null output
  ,@SITEREQUIRED bit = null output
  ,@BASECURRENCYID uniqueidentifier = null output
  ,@PURPOSELOCATION tinyint = null output
  ,@PARENTDESIGNATIONPATH nvarchar(512) = null output
  ,@PARENTDESIGNATIONLOOKUPID nvarchar(412) = null output
  ,@DESIGNATIONHASGLMAPPING bit = null output
  ,@PURPOSEHASGLMAPPING bit = null output
  ,@SYSTEMSEGMENTMAPPINGS xml = null output
  ,@SITEID uniqueidentifier = null output
  )
as
begin
  declare @EMPTYGUID uniqueidentifier = '00000000-0000-0000-0000-000000000000';
  declare @FROMTASKGUID uniqueidentifier = '00000000-0000-0000-0000-000000000001';
  declare @FROMPURPOSESEARCHGUID uniqueidentifier = '00000000-0000-0000-0000-000000000002';

  select @SITEREQUIRED = dbo.UFN_SITEREQUIREDFORUSER(@CURRENTAPPUSERID)
    ,@SITEID = dbo.UFN_APPUSER_DEFAULTSITEFORUSER(@CURRENTAPPUSERID)
    ,@BASECURRENCYID = (
      select CURRENCYSET.BASECURRENCYID
      from dbo.CURRENCYSET
      where ID = dbo.UFN_CURRENCYSET_GETAPPUSERCURRENCYSET(@CURRENTAPPUSERID)
      );

  if nullif(nullif(nullif(@INITIALPARENTDESIGNATIONID, @FROMPURPOSESEARCHGUID), @FROMTASKGUID), @EMPTYGUID) is not null
  begin
    set @PARENTDESIGNATIONID = @INITIALPARENTDESIGNATIONID
    set @PURPOSELOCATION = 1

    select @PARENTDESIGNATIONPATH = [NAME]
      ,@PARENTDESIGNATIONLOOKUPID = case 
        when SYSTEMGENERATED = 0
          then USERID
        else null
        end
    from dbo.DESIGNATION
    where ID = @INITIALPARENTDESIGNATIONID
  end

  if @INITIALPARENTDESIGNATIONID = @FROMTASKGUID or @INITIALPARENTDESIGNATIONID = @FROMPURPOSESEARCHGUID
    set @PARENTDESIGNATIONID = @INITIALPARENTDESIGNATIONID

  if exists (
      select top 1 1
      from dbo.PDACCOUNTSTRUCTURE STRUCT
      where STRUCT.PDACCOUNTSYSTEMID in (
          select T1.ID
          from dbo.UFN_PDACCOUNTSYSTEM_GETSYSTEMIDSFORUSER(@CURRENTAPPUSERID) T1
          )
        and (
          STRUCT.PDACCOUNTTABLESAVAILABLEFORSEGMENTID = '2B1E041E-8FA3-4301-A5DB-E6531E9C3CED'
          or (
            (
              select count(PDACCOUNTTABLESAVAILABLEFORSEGMENT.TABLEID)
              from dbo.PDCOMPOSITESEGMENT
              inner join dbo.PDCOMPOSITESEGMENTTABLELIST on PDCOMPOSITESEGMENT.ID = PDCOMPOSITESEGMENTTABLELIST.PDCOMPOSITESEGMENTID
              inner join dbo.PDACCOUNTTABLESAVAILABLEFORSEGMENT on PDCOMPOSITESEGMENTTABLELIST.PDACCOUNTTABLESAVAILABLEFORSEGMENTID = PDACCOUNTTABLESAVAILABLEFORSEGMENT.ID
              where PDCOMPOSITESEGMENT.ID = STRUCT.PDACCOUNTTABLESAVAILABLEFORSEGMENTID
                and PDACCOUNTTABLESAVAILABLEFORSEGMENT.TABLEID in (
                  'AEBA8FD5-42B6-4D37-93EB-8916BEC1385A'
                  ,'13BD89C4-47B3-48FF-9044-4F07D0D0664D'
                  )
              ) = 1
            and exists (
              select top 1 1
              from dbo.PDCOMPOSITESEGMENT
              inner join dbo.PDCOMPOSITESEGMENTTABLELIST on PDCOMPOSITESEGMENT.ID = PDCOMPOSITESEGMENTTABLELIST.PDCOMPOSITESEGMENTID
              inner join dbo.PDACCOUNTTABLESAVAILABLEFORSEGMENT on PDCOMPOSITESEGMENTTABLELIST.PDACCOUNTTABLESAVAILABLEFORSEGMENTID = PDACCOUNTTABLESAVAILABLEFORSEGMENT.ID
              where PDCOMPOSITESEGMENT.ID = STRUCT.PDACCOUNTTABLESAVAILABLEFORSEGMENTID
                and PDACCOUNTTABLESAVAILABLEFORSEGMENT.TABLEID = 'AEBA8FD5-42B6-4D37-93EB-8916BEC1385A'
              )
            )
          )
      )
    set @DESIGNATIONHASGLMAPPING = 1

  if exists (
      select top 1 1
      from dbo.PDACCOUNTSTRUCTURE STRUCT
      where STRUCT.PDACCOUNTSYSTEMID in (
          select T1.ID
          from dbo.UFN_PDACCOUNTSYSTEM_GETSYSTEMIDSFORUSER(@CURRENTAPPUSERID) T1
          )
        and (
          STRUCT.PDACCOUNTTABLESAVAILABLEFORSEGMENTID = '4C4A084F-597C-4CDE-BFB6-F1730397A01A'
          or (
            (
              select count(PDACCOUNTTABLESAVAILABLEFORSEGMENT.TABLEID)
              from dbo.PDCOMPOSITESEGMENT
              inner join dbo.PDCOMPOSITESEGMENTTABLELIST on PDCOMPOSITESEGMENT.ID = PDCOMPOSITESEGMENTTABLELIST.PDCOMPOSITESEGMENTID
              inner join dbo.PDACCOUNTTABLESAVAILABLEFORSEGMENT on PDCOMPOSITESEGMENTTABLELIST.PDACCOUNTTABLESAVAILABLEFORSEGMENTID = PDACCOUNTTABLESAVAILABLEFORSEGMENT.ID
              where PDCOMPOSITESEGMENT.ID = STRUCT.PDACCOUNTTABLESAVAILABLEFORSEGMENTID
                and PDACCOUNTTABLESAVAILABLEFORSEGMENT.TABLEID in (
                  'AEBA8FD5-42B6-4D37-93EB-8916BEC1385A'
                  ,'13BD89C4-47B3-48FF-9044-4F07D0D0664D'
                  )
              ) = 1
            and exists (
              select top 1 1
              from dbo.PDCOMPOSITESEGMENT
              inner join dbo.PDCOMPOSITESEGMENTTABLELIST on PDCOMPOSITESEGMENT.ID = PDCOMPOSITESEGMENTTABLELIST.PDCOMPOSITESEGMENTID
              inner join dbo.PDACCOUNTTABLESAVAILABLEFORSEGMENT on PDCOMPOSITESEGMENTTABLELIST.PDACCOUNTTABLESAVAILABLEFORSEGMENTID = PDACCOUNTTABLESAVAILABLEFORSEGMENT.ID
              where PDCOMPOSITESEGMENT.ID = STRUCT.PDACCOUNTTABLESAVAILABLEFORSEGMENTID
                and PDACCOUNTTABLESAVAILABLEFORSEGMENT.TABLEID = '13BD89C4-47B3-48FF-9044-4F07D0D0664D'
              )
            )
          )
      )
    set @PURPOSEHASGLMAPPING = 1
  set @SYSTEMSEGMENTMAPPINGS = (
      select GLSYS.ID PDACCOUNTSYSTEMID
        ,GLSYS.name PDACCOUNTSYSTEMNAME
        ,(
          select GLSYS.ID PDACCOUNTSYSTEMID
            ,GLSYS.name PDACCOUNTSYSTEMNAME
            ,STRUCT.ID PDACCOUNTSTRUCTUREID
            ,STRUCT.DESCRIPTION + ':' PDACCOUNTSTRUCTURENAME
            ,STRUCT.PDACCOUNTTABLESAVAILABLEFORSEGMENTID
            ,cast(null as uniqueidentifier) PDACCOUNTSEGMENTVALUEID
          from dbo.PDACCOUNTSTRUCTURE STRUCT
          where STRUCT.PDACCOUNTSYSTEMID = GLSYS.ID
            and PDACCOUNTTABLESAVAILABLEFORSEGMENTID in (
              '2B1E041E-8FA3-4301-A5DB-E6531E9C3CED'
              ,'4C4A084F-597C-4CDE-BFB6-F1730397A01A'
              )
          order by STRUCT.PDACCOUNTTABLESAVAILABLEFORSEGMENTID
            ,STRUCT.SEGMENTSEQUENCE
          for xml raw('ITEM')
            ,type
            ,elements
            ,root('SEGMENTMAPPINGS')
            ,binary BASE64
          )
        ,(
          select STRUCT.ID PDACCOUNTSTRUCTUREID
            ,STRUCT.PDACCOUNTTABLESAVAILABLEFORSEGMENTID PDCOMPOSITESEGMENTID
            ,STRUCT.DESCRIPTION + ':' PDACCOUNTSTRUCTURENAME
            ,TABLE1.PDACCOUNTTABLESAVAILABLEFORSEGMENTID TABLE1ID
            ,(
              select FRIENDLYTABLENAME
              from dbo.PDACCOUNTTABLESAVAILABLEFORSEGMENT as a
              inner join dbo.PDCOMPOSITESEGMENTTABLELIST as b on a.ID = b.PDACCOUNTTABLESAVAILABLEFORSEGMENTID
              where SEQUENCE = 1
                and b.PDCOMPOSITESEGMENTID = PDCOMPOSITESEGMENT.ID
              ) TABLE1FRIENDLYNAME
            ,dbo.UFN_PDCOMPOSITESEGMENTMAPPING_USESIMPLE(TABLE1.PDACCOUNTTABLESAVAILABLEFORSEGMENTID) TABLE1SHOWSIMPLE
            ,TABLE2.PDACCOUNTTABLESAVAILABLEFORSEGMENTID TABLE2ID
            ,(
              select FRIENDLYTABLENAME
              from dbo.PDACCOUNTTABLESAVAILABLEFORSEGMENT as a
              inner join dbo.PDCOMPOSITESEGMENTTABLELIST as b on a.ID = b.PDACCOUNTTABLESAVAILABLEFORSEGMENTID
              where SEQUENCE = 2
                and b.PDCOMPOSITESEGMENTID = PDCOMPOSITESEGMENT.ID
              ) TABLE2FRIENDLYNAME
            ,dbo.UFN_PDCOMPOSITESEGMENTMAPPING_USESIMPLE(TABLE2.PDACCOUNTTABLESAVAILABLEFORSEGMENTID) TABLE2SHOWSIMPLE
            ,TABLE3.PDACCOUNTTABLESAVAILABLEFORSEGMENTID TABLE3ID
            ,isnull((
                select FRIENDLYTABLENAME
                from dbo.PDACCOUNTTABLESAVAILABLEFORSEGMENT as a
                inner join dbo.PDCOMPOSITESEGMENTTABLELIST as b on a.ID = b.PDACCOUNTTABLESAVAILABLEFORSEGMENTID
                where SEQUENCE = 3
                  and b.PDCOMPOSITESEGMENTID = PDCOMPOSITESEGMENT.ID
                ), 'EMPTY') TABLE3FRIENDLYNAME
            ,dbo.UFN_PDCOMPOSITESEGMENTMAPPING_USESIMPLE(TABLE3.PDACCOUNTTABLESAVAILABLEFORSEGMENTID) TABLE3SHOWSIMPLE
            ,TABLE4.PDACCOUNTTABLESAVAILABLEFORSEGMENTID TABLE4ID
            ,isnull((
                select FRIENDLYTABLENAME
                from dbo.PDACCOUNTTABLESAVAILABLEFORSEGMENT as a
                inner join dbo.PDCOMPOSITESEGMENTTABLELIST as b on a.ID = b.PDACCOUNTTABLESAVAILABLEFORSEGMENTID
                where SEQUENCE = 4
                  and b.PDCOMPOSITESEGMENTID = PDCOMPOSITESEGMENT.ID
                ), 'EMPTY') TABLE4FRIENDLYNAME
            ,dbo.UFN_PDCOMPOSITESEGMENTMAPPING_USESIMPLE(TABLE4.PDACCOUNTTABLESAVAILABLEFORSEGMENTID) TABLE4SHOWSIMPLE
          from dbo.PDACCOUNTSTRUCTURE STRUCT
          inner join dbo.PDCOMPOSITESEGMENT on STRUCT.PDACCOUNTTABLESAVAILABLEFORSEGMENTID = PDCOMPOSITESEGMENT.ID
          left join dbo.PDCOMPOSITESEGMENTTABLELIST TABLE1 on TABLE1.SEQUENCE = 1
            and TABLE1.PDCOMPOSITESEGMENTID = PDCOMPOSITESEGMENT.ID
          left join dbo.PDCOMPOSITESEGMENTTABLELIST TABLE2 on TABLE2.SEQUENCE = 2
            and TABLE2.PDCOMPOSITESEGMENTID = PDCOMPOSITESEGMENT.ID
          left join dbo.PDCOMPOSITESEGMENTTABLELIST TABLE3 on TABLE3.SEQUENCE = 3
            and TABLE3.PDCOMPOSITESEGMENTID = PDCOMPOSITESEGMENT.ID
          left join dbo.PDCOMPOSITESEGMENTTABLELIST TABLE4 on TABLE4.SEQUENCE = 4
            and TABLE4.PDCOMPOSITESEGMENTID = PDCOMPOSITESEGMENT.ID
          where STRUCT.PDACCOUNTSYSTEMID = GLSYS.ID
            and (
              select count(PDACCOUNTTABLESAVAILABLEFORSEGMENT.TABLEID)
              from dbo.PDCOMPOSITESEGMENT
              inner join dbo.PDCOMPOSITESEGMENTTABLELIST on PDCOMPOSITESEGMENT.ID = PDCOMPOSITESEGMENTTABLELIST.PDCOMPOSITESEGMENTID
              inner join dbo.PDACCOUNTTABLESAVAILABLEFORSEGMENT on PDCOMPOSITESEGMENTTABLELIST.PDACCOUNTTABLESAVAILABLEFORSEGMENTID = PDACCOUNTTABLESAVAILABLEFORSEGMENT.ID
              where PDCOMPOSITESEGMENT.ID = STRUCT.PDACCOUNTTABLESAVAILABLEFORSEGMENTID
                and PDACCOUNTTABLESAVAILABLEFORSEGMENT.TABLEID in (
                  'AEBA8FD5-42B6-4D37-93EB-8916BEC1385A'
                  ,'13BD89C4-47B3-48FF-9044-4F07D0D0664D'
                  )
              ) = 1
          order by STRUCT.ID
          for xml raw('ITEM')
            ,type
            ,elements
            ,root('COMPOSITESEGMENTMAPPINGS')
            ,binary BASE64
          )
      from dbo.PDACCOUNTSYSTEM GLSYS
      where GLSYS.ID in (
          select T1.ID
          from dbo.UFN_PDACCOUNTSYSTEM_GETSYSTEMIDSFORUSER(@CURRENTAPPUSERID) T1
          )
      order by GLSYS.name
      for xml raw('ITEM')
        ,type
        ,elements
        ,root('SYSTEMSEGMENTMAPPINGS')
        ,binary BASE64
      )
  set @SYSTEMSEGMENTMAPPINGS = isnull(@SYSTEMSEGMENTMAPPINGS, '<SYSTEMSEGMENTMAPPINGS></SYSTEMSEGMENTMAPPINGS>')
end