UFN_REVENUEUPDATEBATCH_GETSOLICITORSXML

Extracts the solicitors and puts it in the correct xml format

Return

Return Type
xml

Parameters

Parameter Parameter Type Mode Description
@BATCHREVENUEID uniqueidentifier IN
@APPLICATIONSOLICITORS xml IN

Definition

Copy


CREATE function dbo.UFN_REVENUEUPDATEBATCH_GETSOLICITORSXML
(
    @BATCHREVENUEID uniqueidentifier,
    @APPLICATIONSOLICITORS xml
)
returns xml
with execute as caller
as begin
    declare @APPLICATIONID uniqueidentifier
    declare @APPLICATIONCODE tinyint
    declare @DESIGNATIONID uniqueidentifier
    declare @DECLINESGIFTAID bit
   declare @SPONSORSHIPID uniqueidentifier
    declare @SOLICITORS xml
    declare @SOLICITORSTABLE table
    (
     APPLICATIONCODE tinyint,
     DESIGNATIONID uniqueidentifier,
     APPLICATIONID uniqueidentifier,
     SOLICITORS xml,
     DECLINESGIFTAID bit,
    SPONSORSHIPID uniqueidentifier
    )
    declare @SOLICITOR table
    (
        ID uniqueidentifier,
        CONSTITUENTID uniqueidentifier,
        AMOUNT money, 
        SEQUENCE integer,
        APPLICATIONID uniqueidentifier,
        REVENUESOLICITORID uniqueidentifier,
        APPLICATIONCODE tinyint,
        DESIGNATIONID uniqueidentifier,
        DECLINESGIFTAID bit,
      SPONSORSHIPID uniqueidentifier
    )

    insert into @SOLICITORSTABLE(APPLICATIONCODE, DESIGNATIONID, APPLICATIONID, SOLICITORS, DECLINESGIFTAID, SPONSORSHIPID)
    select T.c.value('(ADDITIONALAPPLICATIONTYPECODE)[1]','tinyint') as APPLICATIONCODE,
           T.c.value('(ADDITIONALAPPLICATIONDESIGNATIONID)[1]','uniqueidentifier') as DESIGNATIONID,
           T.c.value('(APPLICATIONID)[1]','uniqueidentifier') as APPLICATIONID,
           case when T.c.exist('./SOLICITORS/ITEM') = 1 then T.c.query('(SOLICITORS)[1]') else null end as SOLICITORS,
           T.c.value('(ADDITIONALAPPLICATIONDECLINESGIFTAID)[1]','bit') as DECLINESGIFTAID,
         T.c.value('(ADDITIONALAPPLICATIONSPONSORSHIPID)[1]','uniqueidentifier') as SPONSORSHIPID
    from @APPLICATIONSOLICITORS.nodes('/APPLICATIONSOLICITORS/ITEM') T(c)

    declare SOLICITORSCURSOR cursor local fast_forward for
    select ST.APPLICATIONCODE, ST.DESIGNATIONID, ST.APPLICATIONID, ST.SOLICITORS, ST.DECLINESGIFTAID, ST.SPONSORSHIPID
    from @SOLICITORSTABLE ST

    open SOLICITORSCURSOR

    fetch next from SOLICITORSCURSOR into @APPLICATIONCODE, @DESIGNATIONID, @APPLICATIONID, @SOLICITORS, @DECLINESGIFTAID, @SPONSORSHIPID
    while @@FETCH_STATUS = 0
    begin
        insert into @SOLICITOR (ID, CONSTITUENTID, AMOUNT, SEQUENCE, REVENUESOLICITORID, APPLICATIONID, APPLICATIONCODE, DESIGNATIONID, DECLINESGIFTAID, SPONSORSHIPID)
        select T.c.value('(ID)[1]','uniqueidentifier') as 'ID'
        T.c.value('(CONSTITUENTID)[1]','uniqueidentifier') as 'CONSTITUENTID',
        T.c.value('(AMOUNT)[1]','money') as 'AMOUNT',
        T.c.value('(SEQUENCE)[1]','integer') as 'SEQUENCE',
        T.c.value('(REVENUESOLICITORID)[1]','uniqueidentifier') as 'REVENUESOLICITORID',
        @APPLICATIONID as APPLICATIONID,
        @APPLICATIONCODE as APPLICATIONCODE,
        @DESIGNATIONID as DESIGNATIONID,
        @DECLINESGIFTAID,
      @SPONSORSHIPID
        from @SOLICITORS.nodes('/SOLICITORS/ITEM') T(c);

        fetch next from SOLICITORSCURSOR into @APPLICATIONCODE, @DESIGNATIONID, @APPLICATIONID, @SOLICITORS, @DECLINESGIFTAID, @SPONSORSHIPID
    end

    close SOLICITORSCURSOR    
    deallocate SOLICITORSCURSOR

    set @SOLICITORS =
    (
      select ID, CONSTITUENTID, AMOUNT, SEQUENCE, REVENUESOLICITORID, APPLICATIONCODE, DESIGNATIONID, APPLICATIONID, DECLINESGIFTAID, SPONSORSHIPID
      from @SOLICITOR
      for xml raw('ITEM'),type,elements,root('SOLICITORS'),binary base64
    );

    return @SOLICITORS
end