USP_REVENUEBATCH_VALIDATEAPPLICATIONRECOGNITIONS

Validate application recognitions.

Parameters

Parameter Parameter Type Mode Description
@APPLICATIONRECOGNITIONS xml IN
@SPLITS xml IN
@APPLICATIONTYPECODE tinyint IN
@ADDITIONALAPPLICATIONS xml IN
@BATCHROWID uniqueidentifier IN

Definition

Copy


      CREATE procedure dbo.USP_REVENUEBATCH_VALIDATEAPPLICATIONRECOGNITIONS
      (
                @APPLICATIONRECOGNITIONS xml,
        @SPLITS xml,
        @APPLICATIONTYPECODE tinyint,
        @ADDITIONALAPPLICATIONS xml,
        @BATCHROWID uniqueidentifier = null
      )
      as
      begin
        declare @RECOGNITIONS xml
        declare @CONSTITUENTID uniqueidentifier
        declare @AMOUNT money

        declare @ADDITIONALAPPLICATIONTABLE table
        (
          TYPECODE tinyint,
          DESIGNATIONID uniqueidentifier
        )

        if not @APPLICATIONRECOGNITIONS is null
        begin
          if not @SPLITS is null
            insert into @ADDITIONALAPPLICATIONTABLE(TYPECODE, DESIGNATIONID)
            select @APPLICATIONTYPECODE, T.c.value('(DESIGNATIONID)[1]','uniqueidentifier') DESIGNATIONID
            from @SPLITS.nodes('/SPLITS/ITEM') T(c)
          else if not @ADDITIONALAPPLICATIONS is null
            insert into @ADDITIONALAPPLICATIONTABLE(TYPECODE, DESIGNATIONID)
            select T.c.value('(TYPECODE)[1]','tinyint') TYPECODE, T.c.value('(DESIGNATIONID)[1]','uniqueidentifier') DESIGNATIONID
            from @ADDITIONALAPPLICATIONS.nodes('/ADDITIONALAPPLICATIONSSTREAM/ITEM') T(c)

          declare RECOGNITIONSCURSOR cursor local fast_forward for 
          select
            case when T.c.exist('./RECOGNITIONS/ITEM') = 1 then T.c.query('(RECOGNITIONS)[1]') else null end as RECOGNITIONS
          from @APPLICATIONRECOGNITIONS.nodes('/APPLICATIONRECOGNITIONS/ITEM') T(c)
          inner join @ADDITIONALAPPLICATIONTABLE AAT on AAT.DESIGNATIONID = T.c.value('(ADDITIONALAPPLICATIONDESIGNATIONID)[1]','uniqueidentifier')
            and AAT.TYPECODE = T.c.value('(ADDITIONALAPPLICATIONTYPECODE)[1]','tinyint')

          open RECOGNITIONSCURSOR

          fetch next from RECOGNITIONSCURSOR into @RECOGNITIONS

          while @@FETCH_STATUS = 0
          begin
            declare RECOGNITIONSCONSTITUENTCURSOR cursor local fast_forward for
            select T.c.value('(CONSTITUENTID)[1]','uniqueidentifier') as CONSTITUENTID,
            T.c.value('(AMOUNT)[1]','money') AS 'AMOUNT'
            from @RECOGNITIONS.nodes('RECOGNITIONS/ITM') T(c)

            open RECOGNITIONSCONSTITUENTCURSOR
            fetch next from RECOGNITIONSCONSTITUENTCURSOR into @CONSTITUENTID,@AMOUNT
            while @@FETCH_STATUS = 0
            begin
                        if not exists(select ID from dbo.CONSTITUENT where ID = @CONSTITUENTID)
                            exec dbo.USP_REVENUEBATCH_VALIDATENEWCONSTITUENT @REVENUEBATCHCONSTITUENTID = @CONSTITUENTID, @ISDONOR = 0, @BATCHROWID = @BATCHROWID;

                --Validate that the amount is non-negative

                if @AMOUNT < 0
                  raiserror('BBERR_RECOGNITIONNEGATIVE',13,1)

              fetch next from RECOGNITIONSCONSTITUENTCURSOR into @CONSTITUENTID
            end

            close RECOGNITIONSCONSTITUENTCURSOR
            deallocate RECOGNITIONSCONSTITUENTCURSOR
            fetch next from RECOGNITIONSCURSOR into @RECOGNITIONS
          end

          close RECOGNITIONSCURSOR
          deallocate RECOGNITIONSCURSOR
        end
      end