USP_REVENUEBATCH_ADDPAYMENTRECOGNITIONSANDSOLICITORS

Parameters

Parameter Parameter Type Mode Description
@BATCHREVENUEID uniqueidentifier IN
@APPLICATIONRECOGNITIONS xml IN
@APPLICATIONSOLICITORS xml IN
@REVENUESTREAMS xml IN
@CHANGEAGENTID uniqueidentifier IN
@CURRENTDATE datetime IN

Definition

Copy


      CREATE procedure dbo.USP_REVENUEBATCH_ADDPAYMENTRECOGNITIONSANDSOLICITORS
      (
        @BATCHREVENUEID uniqueidentifier,
        @APPLICATIONRECOGNITIONS xml,
        @APPLICATIONSOLICITORS xml,
        @REVENUESTREAMS xml,
        @CHANGEAGENTID uniqueidentifier,
        @CURRENTDATE datetime
      )
      as
      begin
        declare @APPLICATIONID uniqueidentifier
        declare @ADDITIONALAPPLICATIONDESIGNATIONID uniqueidentifier
        declare @RECOGNITIONS xml
        declare @SOLICITORS xml

        declare @APPLICATIONTABLE table
        (        
          APPLICATIONID uniqueidentifier
        )

        if @REVENUESTREAMS is not null
          insert into @APPLICATIONTABLE(APPLICATIONID)
          select T.c.value('(REVENUESPLITID)[1]','uniqueidentifier') as APPLICATIONID
          from @REVENUESTREAMS.nodes('/REVENUESTREAMS/ITEM') T(c)

          insert into @APPLICATIONTABLE(APPLICATIONID)
          select T.c.value('(APPLICATIONID)[1]','uniqueidentifier') as APPLICATIONID
          from @REVENUESTREAMS.nodes('/REVENUESTREAMS/ITEM') T(c) 
          where T.c.value('(REVENUESPLITID)[1]','uniqueidentifier') is null

        if @APPLICATIONRECOGNITIONS is not null
        begin
          declare RECOGNITIONSCURSOR cursor local fast_forward for 
          select
            T.c.value('(APPLICATIONID)[1]','uniqueidentifier') as APPLICATIONID,
            T.c.value('(ADDITIONALAPPLICATIONDESIGNATIONID)[1]','uniqueidentifier') as ADDITIONALAPPLICATIONDESIGNATIONID,
            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 @APPLICATIONTABLE AAT on AAT.APPLICATIONID = T.c.value('(APPLICATIONID)[1]','uniqueidentifier')
          and AAT.APPLICATIONID is not null

          open RECOGNITIONSCURSOR

          fetch next from RECOGNITIONSCURSOR into @APPLICATIONID, @ADDITIONALAPPLICATIONDESIGNATIONID, @RECOGNITIONS

          while @@FETCH_STATUS = 0
          begin
            insert into dbo.BATCHREVENUERECOGNITION(BATCHREVENUEID, AMOUNT, CONSTITUENTID, EFFECTIVEDATE, ID, REVENUERECOGNITIONTYPECODEID,
                                                  APPLICATIONID, ADDITIONALAPPLICATIONDESIGNATIONID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, REVENUERECOGNITIONID,
                                                RECOGNITIONCREDITFKID, DONORCHALLENGERECOGNITIONTYPECODE, RECOGNITIONCREDITDESIGNATIONID)
            select @BATCHREVENUEID, T.c.value('(AMOUNT)[1]','money'), T.c.value('(CONSTITUENTID)[1]','uniqueidentifier'), T.c.value('(EFFECTIVEDATE)[1]','datetime'), newid() ID, T.c.value('(REVENUERECOGNITIONTYPECODEID)[1]','uniqueidentifier'), 
                    @APPLICATIONID, @ADDITIONALAPPLICATIONDESIGNATIONID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE, T.c.value('(REVENUERECOGNITIONID)[1]','uniqueidentifier'),
                    T.c.value('(RECOGNITIONCREDITFKID)[1]','uniqueidentifier'),
                    coalesce(T.c.value('(DONORCHALLENGERECOGNITIONTYPECODE)[1]','tinyint'), 0),
                    T.c.value('(DESIGNATIONID)[1]','uniqueidentifier'
                    from @RECOGNITIONS.nodes('/RECOGNITIONS/ITEM') T(c)
                    where  T.c.value('(AMOUNT)[1]','money') <> 0.0
                    or (
                    T.c.value('(AMOUNT)[1]', 'money') = 0.0
                    and not exists (
                        select 1
                        from dbo.BATCHREVENUERECOGNITION
                        where
                                CONSTITUENTID = T.c.value('(CONSTITUENTID)[1]', 'uniqueidentifier')
                                and AMOUNT <> 0.00
                     )
                    );

            fetch next from RECOGNITIONSCURSOR into @APPLICATIONID, @ADDITIONALAPPLICATIONDESIGNATIONID, @RECOGNITIONS
          end

          close RECOGNITIONSCURSOR
          deallocate RECOGNITIONSCURSOR
        end   

        if @APPLICATIONSOLICITORS is not null
        begin
          declare SOLICITORSCURSOR cursor local fast_forward for 
          select
            T.c.value('(APPLICATIONID)[1]','uniqueidentifier') as APPLICATIONID,
            T.c.value('(ADDITIONALAPPLICATIONDESIGNATIONID)[1]','uniqueidentifier') as ADDITIONALAPPLICATIONDESIGNATIONID,
            case when T.c.exist('./SOLICITORS/ITEM') = 1 then T.c.query('(SOLICITORS)[1]') else null end as SOLICITORS
          from @APPLICATIONSOLICITORS.nodes('/APPLICATIONSOLICITORS/ITEM') T(c)
          inner join @APPLICATIONTABLE AAT on AAT.APPLICATIONID = T.c.value('(APPLICATIONID)[1]','uniqueidentifier')
          and AAT.APPLICATIONID is not null

          open SOLICITORSCURSOR

          fetch next from SOLICITORSCURSOR into @APPLICATIONID, @ADDITIONALAPPLICATIONDESIGNATIONID, @SOLICITORS

          while @@FETCH_STATUS = 0
          begin
            insert into dbo.BATCHREVENUESOLICITOR(BATCHREVENUEID, AMOUNT, CONSTITUENTID, ID, APPLICATIONID, ADDITIONALAPPLICATIONDESIGNATIONID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, REVENUESOLICITORID)
            select @BATCHREVENUEID, T.c.value('(AMOUNT)[1]','money'), T.c.value('(CONSTITUENTID)[1]','uniqueidentifier'), newid() ID, @APPLICATIONID, @ADDITIONALAPPLICATIONDESIGNATIONID, @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE, T.c.value('(REVENUESOLICITORID)[1]','uniqueidentifier'
            from @SOLICITORS.nodes('/SOLICITORS/ITEM') T(c)

            fetch next from SOLICITORSCURSOR into @APPLICATIONID, @ADDITIONALAPPLICATIONDESIGNATIONID, @SOLICITORS
          end

          close SOLICITORSCURSOR
          deallocate SOLICITORSCURSOR
        end   

        return 0;
      end