USP_PLANNEDGIFTADDITION_VALIDATESPLITS

Procedure for validating splits from a planned gift addition.

Parameters

Parameter Parameter Type Mode Description
@SPLITS xml IN
@PLANNEDGIFTADDITIONAMOUNT money IN

Definition

Copy


create procedure dbo.USP_PLANNEDGIFTADDITION_VALIDATESPLITS
(
  @SPLITS xml,
  @PLANNEDGIFTADDITIONAMOUNT money
)
as
  set nocount on;

  if @SPLITS is null
  begin
    raiserror('Please enter at least one designation.', 13, 1); 
    return 1
  end

  declare @SUM money;
  declare @NONNULL_DESIGSPLITCOUNT int;
  declare @DISTINCTDESIGSPLITCOUNT int;
  declare @TOTALSPLITCOUNT int;

  declare @SPLITSTABLE table
  (
    AMOUNT money,
    DESIGNATIONID uniqueidentifier
  );

  insert into @SPLITSTABLE
  (
  AMOUNT,
  DESIGNATIONID
  )
  select
    AMOUNT,
    DESIGNATIONID
  from
    dbo.UFN_PLANNEDGIFTADDITION_GETDESIGNATIONS_FROMITEMLISTXML(@SPLITS);

  select 
    @SUM = sum(AMOUNT),
    @TOTALSPLITCOUNT = count(*),
    @DISTINCTDESIGSPLITCOUNT = count(distinct DESIGNATIONID),
    @NONNULL_DESIGSPLITCOUNT = count(DESIGNATIONID)
  from
    @SPLITSTABLE;

  if @SUM <> @PLANNEDGIFTADDITIONAMOUNT
  begin
    raiserror('The total amount must equal the sum of the designations.', 13, 2);
    return 2;
  end

  if @TOTALSPLITCOUNT = 0
  begin
    raiserror('Please enter at least one designation.', 13, 3);
    return 3;
  end

  if @NONNULL_DESIGSPLITCOUNT <> @TOTALSPLITCOUNT
  begin
    raiserror('Every distribution must have a designation.', 13, 4);
    return 4;
  end

  if @TOTALSPLITCOUNT <> @DISTINCTDESIGSPLITCOUNT
  begin
    raiserror('Duplicate designations cannot be specified.', 13, 5);
    return 5;
  end

  return 0