USP_MEMBERSHIPDUESBATCH_VALIDATE_SOLICITCODES

Parameters

Parameter Parameter Type Mode Description
@SOLICITCODES xml IN

Definition

Copy


create procedure dbo.USP_MEMBERSHIPDUESBATCH_VALIDATE_SOLICITCODES
(
  @SOLICITCODES xml
)
as
begin
  if @SOLICITCODES is not null
  begin
    declare @SOLICITCODESTABLE table
    (
      [ID] uniqueidentifier,
      [SOLICITCODEID] [uniqueidentifier] NOT NULL,
      [STARTDATE] [datetime] NULL,
      [ENDDATE] [datetime] NULL
    );

    insert into @SOLICITCODESTABLE
    (
      ID,
      SOLICITCODEID,
      STARTDATE,
      ENDDATE
    )
    select
      case when ID is null then newid() else ID end,
      SOLICITCODEID,
      STARTDATE,
      ENDDATE
    from dbo.UFN_MEMBERSHIPDUESBATCH_GETSOLICITCODES_FROMITEMLISTXML(@SOLICITCODES);

    -- Check for solicit codes whose end date is before the start date

    if exists (select 1 from @SOLICITCODESTABLE where STARTDATE is not null and STARTDATE > ENDDATE)
      raiserror('BBERR_SOLICITCODES_STARTENDDATE', 13, 1);

    -- Check for records with the same solicit code and overlapping dates

    if exists (
      select 1
      from @SOLICITCODESTABLE SOLICITCODEONE
      inner join @SOLICITCODESTABLE SOLICITCODETWO on SOLICITCODEONE.ID <> SOLICITCODETWO.ID and SOLICITCODEONE.SOLICITCODEID = SOLICITCODETWO.SOLICITCODEID and
        dbo.UFN_DATES_AREDATESOVERLAPPING(SOLICITCODEONE.STARTDATE, SOLICITCODEONE.ENDDATE, SOLICITCODETWO.STARTDATE, SOLICITCODETWO.ENDDATE) = 1
      )
      raiserror('BBERR_SOLICITCODES_NOOVERLAPPINGDATES', 13, 1);
  end
end