UFN_PDCOMPOSITESEGMENTMAPPINGENTRY_VALIDMAPPING_2

Returns 1 if the PDCOMPOSITESEGMENT record is unique, 0 otherwise if it is a duplicate of another record.

Return

Return Type
bit

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@PDCOMPOSITESEGMENTMAPPINGID uniqueidentifier IN
@DATECHANGED datetime IN

Definition

Copy

CREATE function dbo.UFN_PDCOMPOSITESEGMENTMAPPINGENTRY_VALIDMAPPING_2 (
  @ID uniqueidentifier
  ,@PDCOMPOSITESEGMENTMAPPINGID uniqueidentifier
  ,@DATECHANGED datetime
  )
returns bit
  with execute as caller
as
begin
  declare @Valid bit = 1
  declare @PDACCOUNTSYSTEMID uniqueidentifier

  select @PDACCOUNTSYSTEMID = b.PDACCOUNTSYSTEMID
  from PDCOMPOSITESEGMENTMAPPING as a
  inner join PDACCOUNTSTRUCTURE as b on a.PDACCOUNTSTRUCTUREID = b.ID
  where a.ID = @PDCOMPOSITESEGMENTMAPPINGID

  declare @NumTables tinyint
  declare @NumTablesProcessed tinyint
  declare @NumTablesMatched tinyint

  select @NumTables = count(distinct a.ID)
  from PDCOMPOSITESEGMENTTABLELIST as a
  inner join PDCOMPOSITESEGMENTMAPPING as b on a.PDCOMPOSITESEGMENTID = b.PDCOMPOSITESEGMENTID
  inner join PDCOMPOSITESEGMENTMAPPINGENTRY as c on c.PDCOMPOSITESEGMENTMAPPINGID = b.ID
  where b.ID = @PDCOMPOSITESEGMENTMAPPINGID

  select @NumTablesProcessed = count(ID)
  from PDCOMPOSITESEGMENTMAPPINGENTRY
  where PDCOMPOSITESEGMENTMAPPINGID = @PDCOMPOSITESEGMENTMAPPINGID

  if @NumTablesProcessed = @NumTables
  begin
    declare @COMPOSITESEGMENTKEY nvarchar(144)

    set @COMPOSITESEGMENTKEY = dbo.UFN_PDCOMPOSITESEGMENTMAPPING_KEY(@PDCOMPOSITESEGMENTMAPPINGID)

    if exists (
        select top 1 1
        from dbo.PDCOMPOSITESEGMENTMAPPING
        inner join dbo.PDACCOUNTSTRUCTURE on PDCOMPOSITESEGMENTMAPPING.PDACCOUNTSTRUCTUREID = PDACCOUNTSTRUCTURE.ID
        where PDCOMPOSITESEGMENTMAPPING.ID != @PDCOMPOSITESEGMENTMAPPINGID
          and PDACCOUNTSTRUCTURE.PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID
          and case 
            when len(COALESCE(COMPOSITESEGMENTKEY, '')) = 0
              then dbo.UFN_PDCOMPOSITESEGMENTMAPPING_KEY(PDCOMPOSITESEGMENTMAPPING.ID)
            else COMPOSITESEGMENTKEY
            end = @COMPOSITESEGMENTKEY
          and PDCOMPOSITESEGMENTID in (
            select PDCOMPOSITESEGMENTID
            from PDCOMPOSITESEGMENTMAPPING as MAPPING
            inner join PDACCOUNTSTRUCTURE as STRUCT on MAPPING.PDACCOUNTSTRUCTUREID = STRUCT.ID
            where MAPPING.ID = @PDCOMPOSITESEGMENTMAPPINGID
              and STRUCT.PDACCOUNTSYSTEMID = @PDACCOUNTSYSTEMID
            )
        )
      set @Valid = 0
  end

  return @Valid
end