USP_REVENUEUPDATEBATCH_ADDRECOGNITIONSANDSOLICITORS

Add recognitions and solicitors for an update revenue batch row that are linked to splits.

Parameters

Parameter Parameter Type Mode Description
@BATCHREVENUEID uniqueidentifier IN
@APPLICATIONRECOGNITIONS xml IN
@APPLICATIONSOLICITORS xml IN
@SPLITS xml IN
@APPLICATIONTYPECODE tinyint IN
@CHANGEAGENTID uniqueidentifier IN
@CURRENTDATE datetime IN
@REVENUERECOGNITIONIDS xml IN
@BEFORESAVE bit IN

Definition

Copy


CREATE procedure dbo.USP_REVENUEUPDATEBATCH_ADDRECOGNITIONSANDSOLICITORS
(
  @BATCHREVENUEID uniqueidentifier,
  @APPLICATIONRECOGNITIONS xml,
  @APPLICATIONSOLICITORS xml,
  @SPLITS xml,
  @APPLICATIONTYPECODE tinyint,
  @CHANGEAGENTID uniqueidentifier,
  @CURRENTDATE datetime,
  @REVENUERECOGNITIONIDS xml = null, -- Deprecated

  @BEFORESAVE bit = null -- Deprecated

)
as
begin
    declare @ADDITIONALAPPLICATIONTABLE table
  (
    TYPECODE tinyint,
    DESIGNATIONID uniqueidentifier,
    REVENUESPLITID uniqueidentifier,
    DECLINESGIFTAID bit,
    SPONSORSHIPID uniqueidentifier
  )

  if @SPLITS is not null                     
    insert into @ADDITIONALAPPLICATIONTABLE(TYPECODE, DESIGNATIONID, REVENUESPLITID, DECLINESGIFTAID,SPONSORSHIPID)
    select 
    @APPLICATIONTYPECODE TYPECODE, 
    T.c.value('(DESIGNATIONID)[1]','uniqueidentifier') DESIGNATIONID,
    T.c.value('(REVENUESPLITID)[1]','uniqueidentifier') REVENUESPLITID,
    T.c.value('(DECLINESGIFTAID)[1]','bit') DECLINESGIFTAID,
    T.c.value('(SPONSORSHIPID)[1]','uniqueidentifier') SPONSORSHIPID
    from @SPLITS.nodes('/SPLITS/ITEM') T(c)       

    union all

    select T.c.value('(TYPECODE)[1]','tinyint') TYPECODE, 
    T.c.value('(DESIGNATIONID)[1]','uniqueidentifier') DESIGNATIONID,
    T.c.value('(REVENUESPLITID)[1]','uniqueidentifier') REVENUESPLITID,
    T.c.value('(DECLINESGIFTAID)[1]','bit') DECLINESGIFTAID,
    T.c.value('(SPONSORSHIPID)[1]','uniqueidentifier') SPONSORSHIPID
    from @SPLITS.nodes('/ADDITIONALAPPLICATIONSSTREAM/ITEM') T(c)  


  if @APPLICATIONRECOGNITIONS is not null
  begin
  with CTE_APPLICATIONRECOGNITIONS as
  (
    select
      T.c.value('(APPLICATIONID)[1]','uniqueidentifier') as APPLICATIONID,
      T.c.value('(ADDITIONALAPPLICATIONTYPECODE)[1]','tinyint') as ADDITIONALAPPLICATIONTYPECODE,
      T.c.value('(ADDITIONALAPPLICATIONDESIGNATIONID)[1]','uniqueidentifier') as DESIGNATIONID,
      T.c.value('(ADDITIONALAPPLICATIONDECLINESGIFTAID)[1]','bit') as DECLINESGIFTAID,
      coalesce(T.c.value('(ADDITIONALAPPLICATIONSPONSORSHIPID)[1]','uniqueidentifier'),'00000000-0000-0000-0000-000000000000') as SPONSORSHIPID,
      case when T.c.exist('./RECOGNITIONS/ITEM') = 1 then convert(xml,T.c.query('RECOGNITIONS[1]')) else null end as RECOGNITIONS
    from @APPLICATIONRECOGNITIONS.nodes('/APPLICATIONRECOGNITIONS/ITEM') T(c)
  ),
  CTE_RECOGNITIONS as
  (
    select CTE_APPLICATIONRECOGNITIONS.*, T.c.value('(CONSTITUENTID)[1]','uniqueidentifier') As CONSTITUENTID,
    T.c.value('(AMOUNT)[1]','money') As AMOUNT,
    T.c.value('(EFFECTIVEDATE)[1]','datetime') As EFFECTIVEDATE,
    T.c.value('(REVENUERECOGNITIONTYPECODEID)[1]','uniqueidentifier') As REVENUERECOGNITIONTYPECODEID,
    T.c.value('(REVENUERECOGNITIONID)[1]','uniqueidentifier') As REVENUERECOGNITIONID,
    T.c.value('(RECOGNITIONCREDITFKID)[1]','uniqueidentifier') As RECOGNITIONCREDITFKID,
    coalesce(T.c.value('(DONORCHALLENGERECOGNITIONTYPECODE)[1]','tinyint'), 0) As DONORCHALLENGERECOGNITIONTYPECODE,
    T.c.value('(DESIGNATIONID)[1]','uniqueidentifier') As RECDESIGNATIONID            
    from CTE_APPLICATIONRECOGNITIONS
    cross apply 
    RECOGNITIONS.nodes('/RECOGNITIONS/ITEM') T(c)
  )
  insert into dbo.BATCHREVENUERECOGNITION
  (
    BATCHREVENUEID, AMOUNT, CONSTITUENTID,
    EFFECTIVEDATE, ID, REVENUERECOGNITIONTYPECODEID,
    ADDITIONALAPPLICATIONTYPECODE, ADDITIONALAPPLICATIONDESIGNATIONID, ADDEDBYID,
    CHANGEDBYID, DATEADDED, DATECHANGED,
    REVENUERECOGNITIONID, APPLICATIONID, ADDITIONALAPPLICATIONDECLINESGIFTAID,
    RECOGNITIONCREDITFKID, DONORCHALLENGERECOGNITIONTYPECODE, RECOGNITIONCREDITDESIGNATIONID,ADDITIONALAPPLICATIONSPONSORSHIPID
  )         
  select
  @BATCHREVENUEID,
  AMOUNT,
  CONSTITUENTID,
  EFFECTIVEDATE, 
  newid() ID, 
  REVENUERECOGNITIONTYPECODEID, 
  CTE_RECOGNITIONS.ADDITIONALAPPLICATIONTYPECODE,
  AAT.DESIGNATIONID,@CHANGEAGENTID,
  @CHANGEAGENTID,
  @CURRENTDATE, @CURRENTDATE,
  REVENUERECOGNITIONID,
  CTE_RECOGNITIONS.APPLICATIONID,
  coalesce(AAT.DECLINESGIFTAID, 0),
  RECOGNITIONCREDITFKID,
  DONORCHALLENGERECOGNITIONTYPECODE,
  RECDESIGNATIONID,
  AAT.SPONSORSHIPID
  from CTE_RECOGNITIONS inner join 
  @ADDITIONALAPPLICATIONTABLE AAT on 
  (
    AAT.DESIGNATIONID = CTE_RECOGNITIONS.DESIGNATIONID and
    AAT.DECLINESGIFTAID = CTE_RECOGNITIONS.DECLINESGIFTAID and
    AAT.TYPECODE = CTE_RECOGNITIONS.ADDITIONALAPPLICATIONTYPECODE and 
    coalesce(AAT.SPONSORSHIPID,'00000000-0000-0000-0000-000000000000') = CTE_RECOGNITIONS.SPONSORSHIPID  and
    CTE_RECOGNITIONS.APPLICATIONID is NULL
  ) 

  union all

  select
  @BATCHREVENUEID,
  AMOUNT,
  CONSTITUENTID,
  EFFECTIVEDATE, 
  newid() ID, 
  REVENUERECOGNITIONTYPECODEID, 
  CTE_RECOGNITIONS.ADDITIONALAPPLICATIONTYPECODE,
  AAT.DESIGNATIONID,@CHANGEAGENTID,
  @CHANGEAGENTID,
  @CURRENTDATE, @CURRENTDATE,
  REVENUERECOGNITIONID,
  CTE_RECOGNITIONS.APPLICATIONID,
  coalesce(AAT.DECLINESGIFTAID, 0),
  RECOGNITIONCREDITFKID,
  DONORCHALLENGERECOGNITIONTYPECODE,
  RECDESIGNATIONID,
  AAT.SPONSORSHIPID
  from CTE_RECOGNITIONS inner join 
  @ADDITIONALAPPLICATIONTABLE AAT on
  AAT.REVENUESPLITID = CTE_RECOGNITIONS.APPLICATIONID
  where AAT.REVENUESPLITID is NOT NULL

  end

  if @APPLICATIONSOLICITORS is not null
  begin
    with CTE_APPLICATIONSOLICITORS as
    (
      select
      T.c.value('(ADDITIONALAPPLICATIONTYPECODE)[1]','tinyint') as ADDITIONALAPPLICATIONTYPECODE,
      T.c.value('(ADDITIONALAPPLICATIONDESIGNATIONID)[1]','uniqueidentifier') as ADDITIONALAPPLICATIONDESIGNATIONID,
      case when T.c.exist('./SOLICITORS/ITEM') = 1 then convert(xml,T.c.query('SOLICITORS[1]')) else null end as SOLICITORS,
      T.c.value('(ADDITIONALAPPLICATIONDECLINESGIFTAID)[1]','bit') as DECLINESGIFTAID,
      coalesce(T.c.value('(ADDITIONALAPPLICATIONSPONSORSHIPID)[1]','uniqueidentifier'),'00000000-0000-0000-0000-000000000000') as SPONSORSHIPID
      from @APPLICATIONSOLICITORS.nodes('/APPLICATIONSOLICITORS/ITEM') T(c)
    ),
      CTE_SOLICITORS as
    (
      select CTE_APPLICATIONSOLICITORS.*
      T.c.value('(CONSTITUENTID)[1]','uniqueidentifier') As CONSTITUENTID,
      T.c.value('(AMOUNT)[1]','money') As AMOUNT,
      T.c.value('(REVENUESOLICITORID)[1]','uniqueidentifier') As REVENUESOLICITORID
      from CTE_APPLICATIONSOLICITORS
      cross apply 
      SOLICITORS.nodes('/SOLICITORS/ITEM') T(c)
    )
    insert into dbo.BATCHREVENUESOLICITOR
    (
      BATCHREVENUEID, AMOUNT, CONSTITUENTID, ID, ADDITIONALAPPLICATIONTYPECODE, 
      ADDITIONALAPPLICATIONDESIGNATIONID, ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED, REVENUESOLICITORID,
      ADDITIONALAPPLICATIONDECLINESGIFTAID, ADDITIONALAPPLICATIONSPONSORSHIPID
    )
    select  @BATCHREVENUEID
    AMOUNT, 
    CONSTITUENTID, 
    newid() ID, 
    CTE_SOLICITORS.ADDITIONALAPPLICATIONTYPECODE,
    CTE_SOLICITORS.ADDITIONALAPPLICATIONDESIGNATIONID,
    @CHANGEAGENTID, @CHANGEAGENTID, @CURRENTDATE, @CURRENTDATE,
    REVENUESOLICITORID, 
    coalesce(AAT.DECLINESGIFTAID, 0), 
    AAT.SPONSORSHIPID
    from CTE_SOLICITORS
    inner join @ADDITIONALAPPLICATIONTABLE AAT on 
    AAT.DESIGNATIONID = CTE_SOLICITORS.ADDITIONALAPPLICATIONDESIGNATIONID and 
    AAT.DECLINESGIFTAID = CTE_SOLICITORS.DECLINESGIFTAID and 
    AAT.TYPECODE = CTE_SOLICITORS.ADDITIONALAPPLICATIONTYPECODE and
    coalesce(AAT.SPONSORSHIPID,'00000000-0000-0000-0000-000000000000') = CTE_SOLICITORS.SPONSORSHIPID

  end

return 0;      
end