USP_GETGIFTAIDSPLITSTOCACHE

Parameters

Parameter Parameter Type Mode Description
@REVENUEID uniqueidentifier IN
@ORGANIZATIONCURRENCYID uniqueidentifier IN
@DELETEDIDSXML xml IN
@DELETEDANDCHANGEDSPLITSINFOXML xml INOUT

Definition

Copy


            create procedure USP_GETGIFTAIDSPLITSTOCACHE
                (@REVENUEID uniqueidentifier,
                @ORGANIZATIONCURRENCYID uniqueidentifier,
                @DELETEDIDSXML xml,
                @DELETEDANDCHANGEDSPLITSINFOXML xml output)
            as
                declare  @DELETEDANDCHANGEDSPLITSINFO table
                    (REVENUESPLITID uniqueidentifier,
                    CONSTITUENTID uniqueidentifier,
                    TAXCLAIMNUMBER nvarchar(10),
                    CHARITYCLAIMREFERENCENUMBER nvarchar(20),
                    GIFTDATE datetime,
                    GIFTAMOUNT money,
                    BASETAXCLAIMAMOUNT money, 
                    TRANSITIONALTAXCLAIMAMOUNT money, 
                    INCLUDETRANSITIONALAMOUNTCODE tinyint
                    CLAIMEDASSPONSORSHIP bit,
                    TRANSACTIONBASETAXCLAIMAMOUNT money,
                    TRANSACTIONCURRENCYID uniqueidentifier,
                    TRANSACTIONTRANSITIONALTAXCLAIMAMOUNT money,
                    ORGANIZATIONBASETAXCLAIMAMOUNT money,
                    ORGANIZATIONEXCHANGERATEID uniqueidentifier,
                    ORGANIZATIONTRANSITIONALTAXCLAIMAMOUNT money,
                    BASECURRENCYID uniqueidentifier,
                    BASEEXCHANGERATEID uniqueidentifier,
                    TRANSACTIONGIFTAMOUNT money,
                    ORGANIZATIONGIFTAMOUNT money,
                    ISSPONSORSHIP bit,
                    ISDELETED bit,
                    BASERATE numeric(30,6),
                    TRANSITIONALRATE numeric(30,6),
                    AMOUNTTOSUM money)

                --Gift Aid is for UK only

                declare @PRODUCTISUK bit = dbo.UFN_INSTALLEDPRODUCTS_PRODUCTIS('9568A6C2-F7AA-45fd-8F54-21FE9654EE2D');
                declare @GBPCURRENCYID uniqueidentifier = (select CURRENCY.ID from dbo.CURRENCY where CURRENCY.ISO4217 = 'GBP');

                if @PRODUCTISUK = 1
        begin

                    declare @DELETEDIDS table (ID uniqueidentifier);
                    insert into @DELETEDIDS(ID)
                         select T.c.value('(ID)[1]', 'uniqueidentifier') as ID
                         from @DELETEDIDSXML.nodes('/DELETEDIDS/ITEM') T(c);

                    --We need to cache the deleted/changed split information in order potentially refund it later in this SP after the splits have been

                    --actually deleted or updated. We have to wait until after the new splits are created (to calculate CCRN) in order determine if the deleted/changed splits should be refunded.


                    insert into @DELETEDANDCHANGEDSPLITSINFO
                        select
                            FINANCIALTRANSACTIONLINEITEM.ID,
                            FINANCIALTRANSACTION.CONSTITUENTID,
                            REVENUESPLITGIFTAID.TAXCLAIMNUMBER,
                            REVENUESPLITGIFTAID.CHARITYCLAIMREFERENCENUMBER,
                            cast(FINANCIALTRANSACTION.DATE as datetime) as DATE,
                            FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT,
                            REVENUESPLITGIFTAID.BASETAXCLAIMAMOUNT,
                            REVENUESPLITGIFTAID.TRANSITIONALTAXCLAIMAMOUNT,
                    REVENUESPLITGIFTAID.INCLUDETRANSITIONALAMOUNTCODE,
                    REVENUESPLITGIFTAID.CLAIMEDASSPONSORSHIP,
                    REVENUESPLITGIFTAID.TRANSACTIONBASETAXCLAIMAMOUNT,
                    REVENUESPLITGIFTAID.TRANSACTIONCURRENCYID,
                    REVENUESPLITGIFTAID.TRANSACTIONTRANSITIONALTAXCLAIMAMOUNT,
                    REVENUESPLITGIFTAID.ORGANIZATIONBASETAXCLAIMAMOUNT,
                    REVENUESPLITGIFTAID.ORGANIZATIONEXCHANGERATEID,
                    REVENUESPLITGIFTAID.ORGANIZATIONTRANSITIONALTAXCLAIMAMOUNT,
                    REVENUESPLITGIFTAID.BASECURRENCYID,
                    REVENUESPLITGIFTAID.BASEEXCHANGERATEID,
                    FINANCIALTRANSACTIONLINEITEM.TRANSACTIONAMOUNT,
                    FINANCIALTRANSACTIONLINEITEM.ORGAMOUNT,
                    REVENUESPLITGIFTAID.ISSPONSORSHIP,
                    1,
                    REVENUESPLITGIFTAID.BASERATE,
                    REVENUESPLITGIFTAID.TRANSITIONALRATE,
                    case when @ORGANIZATIONCURRENCYID = @GBPCURRENCYID then FINANCIALTRANSACTIONLINEITEM.ORGAMOUNT
                      when FINANCIALTRANSACTION.TRANSACTIONCURRENCYID = @GBPCURRENCYID then FINANCIALTRANSACTIONLINEITEM.TRANSACTIONAMOUNT
                      when REVENUESPLITGIFTAID.BASECURRENCYID =  @GBPCURRENCYID then FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT
                      else 0
                    end as AMOUNTTOSUM
                from @DELETEDIDS DELETEDIDS
                  inner join dbo.FINANCIALTRANSACTIONLINEITEM on DELETEDIDS.ID = FINANCIALTRANSACTIONLINEITEM.ID
                  inner join dbo.REVENUESPLIT_EXT on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLIT_EXT.ID
                  inner join dbo.REVENUESPLITGIFTAID on FINANCIALTRANSACTIONLINEITEM.ID = REVENUESPLITGIFTAID.ID
                  inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = FINANCIALTRANSACTION.ID
                where
                  coalesce(REVENUESPLITGIFTAID.TAXCLAIMNUMBER, '') <> ''
                  and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null
                  and FINANCIALTRANSACTIONLINEITEM.TYPECODE <> 1
                  and FINANCIALTRANSACTION.DELETEDON is null;

              insert into @DELETEDANDCHANGEDSPLITSINFO
                select
                      FINANCIALTRANSACTIONLINEITEM.ID,
                      FINANCIALTRANSACTION.CONSTITUENTID,
                      REVENUESPLITGIFTAID.TAXCLAIMNUMBER,
                      REVENUESPLITGIFTAID.CHARITYCLAIMREFERENCENUMBER,
                      cast(FINANCIALTRANSACTION.DATE as datetime) as DATE,
                      FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT,
                      REVENUESPLITGIFTAID.BASETAXCLAIMAMOUNT,
                      REVENUESPLITGIFTAID.TRANSITIONALTAXCLAIMAMOUNT,
                      REVENUESPLITGIFTAID.INCLUDETRANSITIONALAMOUNTCODE,
                      REVENUESPLITGIFTAID.CLAIMEDASSPONSORSHIP,
                      REVENUESPLITGIFTAID.TRANSACTIONBASETAXCLAIMAMOUNT,
                      REVENUESPLITGIFTAID.TRANSACTIONCURRENCYID,
                      REVENUESPLITGIFTAID.TRANSACTIONTRANSITIONALTAXCLAIMAMOUNT,
                      REVENUESPLITGIFTAID.ORGANIZATIONBASETAXCLAIMAMOUNT,
                      REVENUESPLITGIFTAID.ORGANIZATIONEXCHANGERATEID,
                      REVENUESPLITGIFTAID.ORGANIZATIONTRANSITIONALTAXCLAIMAMOUNT,
                      REVENUESPLITGIFTAID.BASECURRENCYID,
                      REVENUESPLITGIFTAID.BASEEXCHANGERATEID,
                      FINANCIALTRANSACTIONLINEITEM.TRANSACTIONAMOUNT,
                      FINANCIALTRANSACTIONLINEITEM.ORGAMOUNT,
                      REVENUESPLITGIFTAID.ISSPONSORSHIP,
                      0,
                      REVENUESPLITGIFTAID.BASERATE,
                      REVENUESPLITGIFTAID.TRANSITIONALRATE,
                    case when @ORGANIZATIONCURRENCYID = @GBPCURRENCYID then FINANCIALTRANSACTIONLINEITEM.ORGAMOUNT
                      when FINANCIALTRANSACTION.TRANSACTIONCURRENCYID = @GBPCURRENCYID then FINANCIALTRANSACTIONLINEITEM.TRANSACTIONAMOUNT
                      when REVENUESPLITGIFTAID.BASECURRENCYID =  @GBPCURRENCYID then FINANCIALTRANSACTIONLINEITEM.BASEAMOUNT
                      else 0
                    end as AMOUNTTOSUM
              from dbo.FINANCIALTRANSACTIONLINEITEM 
                inner join dbo.REVENUESPLITGIFTAID on REVENUESPLITGIFTAID.ID = FINANCIALTRANSACTIONLINEITEM.ID
                inner join dbo.FINANCIALTRANSACTION on FINANCIALTRANSACTION.ID = FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID
                where FINANCIALTRANSACTIONLINEITEM.FINANCIALTRANSACTIONID = @REVENUEID
                  and FINANCIALTRANSACTIONLINEITEM.ID not in (select REVENUESPLITID from @DELETEDANDCHANGEDSPLITSINFO)
                  and coalesce(REVENUESPLITGIFTAID.TAXCLAIMNUMBER, '') <> ''
                  and FINANCIALTRANSACTIONLINEITEM.DELETEDON is null
                  and FINANCIALTRANSACTIONLINEITEM.TYPECODE <> 1
                  and FINANCIALTRANSACTION.DELETEDON is null;

          set @DELETEDANDCHANGEDSPLITSINFOXML = (    select
                    REVENUESPLITID,
                    CONSTITUENTID,
                    TAXCLAIMNUMBER,
                    CHARITYCLAIMREFERENCENUMBER,
                    GIFTDATE,
                    GIFTAMOUNT,
                    BASETAXCLAIMAMOUNT, 
                    TRANSITIONALTAXCLAIMAMOUNT, 
                    INCLUDETRANSITIONALAMOUNTCODE, 
                    CLAIMEDASSPONSORSHIP,
                    TRANSACTIONBASETAXCLAIMAMOUNT,
                    TRANSACTIONCURRENCYID,
                    TRANSACTIONTRANSITIONALTAXCLAIMAMOUNT,
                    ORGANIZATIONBASETAXCLAIMAMOUNT,
                    ORGANIZATIONEXCHANGERATEID,
                    ORGANIZATIONTRANSITIONALTAXCLAIMAMOUNT,
                    BASECURRENCYID,
                    BASEEXCHANGERATEID,
                    TRANSACTIONGIFTAMOUNT,
                    ORGANIZATIONGIFTAMOUNT,
                    ISSPONSORSHIP,
                    ISDELETED,
                    BASERATE,
                    TRANSITIONALRATE,
                    AMOUNTTOSUM 
                from @DELETEDANDCHANGEDSPLITSINFO 
                for xml raw('ITEM'),type,elements,root('DELETEDANDCHANGEDSPLITSINFO'),BINARY BASE64);

       end;