UFN_REVENUESPLITINFORMATION_ALL

Return

Return Type
table

Parameters

Parameter Parameter Type Mode Description
@REVENUEID uniqueidentifier IN
@INFORMATIONSOURCECODE tinyint IN
@CURRENTAPPUSERID uniqueidentifier IN

Definition

Copy


            CREATE function dbo.UFN_REVENUESPLITINFORMATION_ALL
            (
                @REVENUEID uniqueidentifier,
                @INFORMATIONSOURCECODE tinyint, -- 0 is the revenue table, 1 is the batch revenue table

                @CURRENTAPPUSERID uniqueidentifier = null
            )
            returns @RETVAL table
                (
                    ID uniqueidentifier,
                    REVENUEID uniqueidentifier,
                    DESIGNATIONID uniqueidentifier,
                    EVENTID uniqueidentifier,
                    PROGRAMID uniqueidentifier,
                    CATEGORYCODEID uniqueidentifier,
                    MEMBERSHIPLEVELID uniqueidentifier,
                    ORDERMEMBERSHIPLEVELID uniqueidentifier,
                    ORDERMERCHANDISEPRODUCTINSTANCEID uniqueidentifier,
                    ORDERMERCHANDISEDEPARTMENTID uniqueidentifier,
                    ORDEREVENTID uniqueidentifier,
                    ORDERPROGRAMID uniqueidentifier,
                    ORDERFEEID uniqueidentifier,
                    ORDERTAXID uniqueidentifier,
                    ORDEREVENTLOCATIONID uniqueidentifier,
                    ORDERRESOURCECATEGORYCODEID uniqueidentifier,
                    AMOUNT money,
                    TYPECODE tinyint,
                    APPLICATIONCODE tinyint,
                    BASECURRENCYID uniqueidentifier,
                    ORGANIZATIONAMOUNT money,
                    ORGANIZATIONEXCHANGERATEID uniqueidentifier,
                    TRANSACTIONAMOUNT money,
                    TRANSACTIONCURRENCYID uniqueidentifier,
                    BASEEXCHANGERATEID uniqueidentifier,
                    OVERRIDEBUSINESSUNITS bit,
                    REVENUESPLITBUSINESSUNITOVERRIDECODEID uniqueidentifier
                )
            as begin
                if @INFORMATIONSOURCECODE = 0
                    insert into @RETVAL
                    (
                        ID,
                        REVENUEID,
                        DESIGNATIONID,
                        EVENTID,
                        PROGRAMID,
                        CATEGORYCODEID,
                        MEMBERSHIPLEVELID,
                        ORDERMEMBERSHIPLEVELID,
                        ORDERMERCHANDISEPRODUCTINSTANCEID,
                        ORDERMERCHANDISEDEPARTMENTID,
                        ORDEREVENTID,
                        ORDERPROGRAMID,
                        ORDERFEEID,
                        ORDERTAXID,
                        ORDEREVENTLOCATIONID,
                        ORDERRESOURCECATEGORYCODEID,
                        AMOUNT,
                        TYPECODE,
                        APPLICATIONCODE,
                        BASECURRENCYID,
                        ORGANIZATIONAMOUNT,
                        ORGANIZATIONEXCHANGERATEID,
                        TRANSACTIONAMOUNT,
                        TRANSACTIONCURRENCYID,
                        BASEEXCHANGERATEID,
                        OVERRIDEBUSINESSUNITS,
                        REVENUESPLITBUSINESSUNITOVERRIDECODEID
                    )
                    select REVENUESPLIT.ID,
                            REVENUESPLIT.REVENUEID,
                            REVENUESPLIT.DESIGNATIONID,
                            REGISTRANT.EVENTID,
                            EVENT.PROGRAMID,
                            REVENUECATEGORY.GLREVENUECATEGORYMAPPINGID,
                            MEMBERSHIPTRANSACTION.MEMBERSHIPLEVELID,
                            REVENUESPLITORDER.MEMBERSHIPLEVELID,
                            REVENUESPLITORDER.MERCHANDISEPRODUCTINSTANCEID,
                            MERCHANDISEPRODUCT.MERCHANDISEDEPARTMENTID,
                            REVENUESPLITORDER.EVENTID,
                            REVENUESPLITORDER.PROGRAMID,
                            REVENUESPLITORDER.FEEID,
                            REVENUESPLITORDER.TAXID,
                            REVENUESPLITORDER.EVENTLOCATIONID,
                            RESOURCE.RESOURCECATEGORYCODEID,
                            REVENUESPLIT.AMOUNT,
                            REVENUESPLIT.TYPECODE,
                            REVENUESPLIT.APPLICATIONCODE,
                            REVENUESPLIT.BASECURRENCYID,
                            REVENUESPLIT.ORGANIZATIONAMOUNT,
                            REVENUESPLIT.ORGANIZATIONEXCHANGERATEID,
                            REVENUESPLIT.TRANSACTIONAMOUNT,
                            REVENUESPLIT.TRANSACTIONCURRENCYID,
                            REVENUESPLIT.BASEEXCHANGERATEID,
                            REVENUESPLIT.OVERRIDEBUSINESSUNITS,
                            REVENUESPLIT.REVENUESPLITBUSINESSUNITOVERRIDECODEID
                    from dbo.REVENUESPLIT
                        left outer join dbo.REVENUESPLITORDER
                            on REVENUESPLITORDER.ID = REVENUESPLIT.ID
                        left outer join dbo.EVENT as ORDEREVENT
                            on ORDEREVENT.ID = REVENUESPLITORDER.EVENTID
                        left outer join dbo.MERCHANDISEPRODUCTINSTANCE 
                            on MERCHANDISEPRODUCTINSTANCE.ID = REVENUESPLITORDER.MERCHANDISEPRODUCTINSTANCEID
                        left outer join dbo.MERCHANDISEPRODUCT 
                            on MERCHANDISEPRODUCT.ID = MERCHANDISEPRODUCTINSTANCE.MERCHANDISEPRODUCTID
                        left outer join dbo.REVENUECATEGORY
                            on REVENUECATEGORY.ID = REVENUESPLIT.ID
                        left outer join dbo.MEMBERSHIPTRANSACTION
                            on MEMBERSHIPTRANSACTION.REVENUESPLITID = REVENUESPLIT.ID
                        left outer join dbo.EVENTREGISTRANTPAYMENT
                            on EVENTREGISTRANTPAYMENT.PAYMENTID = REVENUESPLIT.ID
                        left outer join dbo.REGISTRANT
                            on REGISTRANT.ID = EVENTREGISTRANTPAYMENT.REGISTRANTID
                        left outer join dbo.EVENT
                            on EVENT.ID = REGISTRANT.EVENTID
                        left outer join dbo.RESOURCE
                            on RESOURCE.ID = REVENUESPLITORDER.RESOURCEID
                    where REVENUESPLIT.REVENUEID = @REVENUEID

                else if @INFORMATIONSOURCECODE = 1
                begin

                     --Revenue Basic stores data in the splits table

                     declare @isRevenueBasic bit = 0
                     if exists(select 1 from dbo.BATCHREVENUE 
                               inner join dbo.BATCH  on BATCHREVENUE.BATCHID = BATCH.ID
                               inner join dbo.BATCHTEMPLATE on BATCHTEMPLATE.ID = BATCH.BATCHTEMPLATEID
                               where BATCHREVENUE.ID = @REVENUEID and BATCHTEMPLATE.BATCHTYPECATALOGID = '1a6ca8f4-5444-4db1-a2b0-72efe6219df2') -- Revenue Basic Batch Type ID

                       set @isRevenueBasic = 1;


                     if (@isRevenueBasic = 1 or (select TYPECODE from dbo.BATCHREVENUE where ID = @REVENUEID) <> 0)
                     begin

                       insert into @RETVAL
                        (
                            ID,
                            REVENUEID,
                            DESIGNATIONID,
                            EVENTID,
                            PROGRAMID,
                            CATEGORYCODEID,
                            MEMBERSHIPLEVELID,
                            ORDERMEMBERSHIPLEVELID,
                            ORDERMERCHANDISEPRODUCTINSTANCEID,
                            ORDEREVENTID,
                            ORDERRESOURCECATEGORYCODEID,
                            AMOUNT,
                       TYPECODE,
                            APPLICATIONCODE,
                            BASECURRENCYID,
                            ORGANIZATIONAMOUNT,
                            ORGANIZATIONEXCHANGERATEID,
                            TRANSACTIONAMOUNT,
                            TRANSACTIONCURRENCYID,
                            BASEEXCHANGERATEID,
                            OVERRIDEBUSINESSUNITS,
                            REVENUESPLITBUSINESSUNITOVERRIDECODEID
                        )
                        select APPLICATIONS.ID,
                                @REVENUEID,
                                APPLICATIONS.DESIGNATIONID,
                                null,
                                null,
                                (select GLREVENUECATEGORYMAPPINGID
                                  from BATCHREVENUE
                                  where ID = @REVENUEID),
                                null,
                                null,
                                null,
                                null,
                                null,
                                APPLICATIONS.AMOUNT,
                                APPLICATIONS.TYPECODE,
                                0,
                                null,
                                null,
                                null,
                                null,
                                null,
                                null,
                                0,
                                null
                        from dbo.UFN_REVENUEBATCH_GETSPLITS(@REVENUEID) as APPLICATIONS
                    end
                    else
                    begin

                      -- Get the additional applications

                      insert into @RETVAL
                      (
                          ID,
                          REVENUEID,
                          DESIGNATIONID,
                          EVENTID,
                          PROGRAMID,
                          CATEGORYCODEID,
                          MEMBERSHIPLEVELID,
                          ORDERMEMBERSHIPLEVELID,
                          ORDERMERCHANDISEPRODUCTINSTANCEID,
                          ORDEREVENTID,
                          ORDERRESOURCECATEGORYCODEID,
                          AMOUNT,
                          TYPECODE,
                          APPLICATIONCODE,
                          BASECURRENCYID,
                          ORGANIZATIONAMOUNT,
                          ORGANIZATIONEXCHANGERATEID,
                          TRANSACTIONAMOUNT,
                          TRANSACTIONCURRENCYID,
                          BASEEXCHANGERATEID,
                          OVERRIDEBUSINESSUNITS,
                          REVENUESPLITBUSINESSUNITOVERRIDECODEID
                      )
                      select ID,
                              @REVENUEID,
                              DESIGNATIONID,
                              null,
                              null,
                              CATEGORYCODEID,
                              null,
                              null,
                              null,
                              null,
                              null,
                              APPLIED,
                              case TYPECODE 
                                  when 0 then 0 
                                  when 1 then 4 
                                  when 2 then 0 
                                  when 3 then 9 
                              end,
                              case TYPECODE 
                                  when 0 then 0 
                                  when 1 then 4 
                                  when 2 then 7  
                                  when 3 then 0 
                              end,
                              null,
                              null,
                              null,
                              null,
                              null,
                              null,
                              null,
                              null
                      from dbo.UFN_REVENUEBATCH_GETADDITIONALAPPLICATIONS(@REVENUEID) as ADDITIONALAPPLICATIONS

                      -- Get the revenue streams


                      insert into @RETVAL
                        (
                           ID,
                           REVENUEID,
                           DESIGNATIONID,
                           EVENTID,
                           PROGRAMID,
                           CATEGORYCODEID,
                           MEMBERSHIPLEVELID,
                           ORDERMEMBERSHIPLEVELID,
                           ORDERMERCHANDISEPRODUCTINSTANCEID,
                           ORDERMERCHANDISEDEPARTMENTID,
                           ORDEREVENTID,
                           ORDERPROGRAMID,
                           ORDERFEEID,
                           ORDERTAXID,
                           ORDEREVENTLOCATIONID,
                           ORDERRESOURCECATEGORYCODEID,
                           AMOUNT,
                           TYPECODE,
                           APPLICATIONCODE,
                           BASECURRENCYID,
                           ORGANIZATIONAMOUNT,
                           ORGANIZATIONEXCHANGERATEID,
                           TRANSACTIONAMOUNT,
                           TRANSACTIONCURRENCYID,
                           BASEEXCHANGERATEID,
                           OVERRIDEBUSINESSUNITS,
                           REVENUESPLITBUSINESSUNITOVERRIDECODEID
                        )
                      select APPLICATIONSWITHCHILDREN.ID,
                        @REVENUEID,
                        case when (APPLICATIONSWITHCHILDREN.TYPECODE = 1) and 
                                (not APPLICATIONSWITHCHILDREN.PLEDGES is null)  then 
                          -- When this is a pledge payment we need to get the designation from the pledge

                          --  grab the designation from the first split.

                          (select top 1 T.c.value('(DESIGNATIONID)[1]','uniqueidentifier')
                          from APPLICATIONSWITHCHILDREN.PLEDGES.nodes('(((/ITEM)[1]/SPLITS)[1]/ITEM)[1]') T(c))
                        else
                          case when (APPLICATIONSWITHCHILDREN.TYPECODE = 1) then 
                            (select top 1 DESIGNATIONID from REVENUESPLIT T1 join BATCHREVENUEAPPLICATION T2 on T1.REVENUEID = T2.REVENUEID where T2.BATCHREVENUEID = @REVENUEID and T2.ID = APPLICATIONSWITHCHILDREN.ID)                            
                          when (APPLICATIONSWITHCHILDREN.TYPECODE in (2, 3, 4, 6, 9)) then
                            (select top 1 RS.DESIGNATIONID
                             from FINANCIALTRANSACTIONLINEITEM LI inner join
                             REVENUESPLIT_EXT RS on LI.ID = RS.ID                  
                             where LI.FINANCIALTRANSACTIONID = APPLICATIONSWITHCHILDREN.APPLICATIONID) 
                          else
                            null
                          end
                        end,
                        isnull(REGISTRANT.EVENTID, BATCHREVENUEREGISTRANT.EVENTID),
                        isnull(REGISTRANTEVENT.PROGRAMID, BATCHREVENUEREGISTRANTEVENT.PROGRAMID),
                        APPLICATIONSWITHCHILDREN.CATEGORYCODEID,
                        BATCHREVENUEAPPLICATIONMEMBERSHIP.MEMBERSHIPID,
                        null,
                        null,
                        null,
                        null,
                        null,
                        null,
                        null,
                        null,
                        null,
                        APPLICATIONSWITHCHILDREN.APPLIED,
                        case APPLICATIONSWITHCHILDREN.TYPECODE
                          when 6 then 1
                          when 5 then 2
                          when 3 then 9
                          when 1 then 0
                          when 2 then 0 -- Recurring gift payment, should be marked as a payment

                          when 10 then 0 -- Donor challenge payment, should be marked as a payment

                          -- TODO: Other types

                        end,
                        case APPLICATIONSWITHCHILDREN.TYPECODE
                          when 1 then 2 --Pledge Payment

                          when 3 then 7 --MGPledge Payment

                          when 2 then 3 --Recurring Gift Payment

                          when 6 then 1 --Event Registration Payment

                          when 4 then 6 --Planned gift

                          when 5 then 5 --Membership

                          when 9 then 8 --Grant Award Payment

                          when 10 then 13 --Donor challenge payment

                          else 99
                        end,
                        null,
                        null,
                        null,
                        null,
                        null,
                        null,
                        null,
                        null
                  from dbo.UFN_REVENUEBATCH_GETAPPLICATIONSWITHCHILDREN(@REVENUEID) as APPLICATIONSWITHCHILDREN
                     left outer join dbo.REGISTRANT
                        on APPLICATIONSWITHCHILDREN.APPLICATIONID = REGISTRANT.ID
                     left outer join dbo.BATCHREVENUEREGISTRANT
                        on APPLICATIONSWITHCHILDREN.APPLICATIONID = BATCHREVENUEREGISTRANT.ID
                     left outer join dbo.EVENT as REGISTRANTEVENT
                        on REGISTRANT.EVENTID = REGISTRANTEVENT.ID
                     left outer join dbo.EVENT as BATCHREVENUEREGISTRANTEVENT
                        on BATCHREVENUEREGISTRANT.EVENTID = BATCHREVENUEREGISTRANTEVENT.ID
                     left outer join dbo.BATCHREVENUEAPPLICATIONMEMBERSHIP
                        on BATCHREVENUEAPPLICATIONMEMBERSHIP.ID = APPLICATIONSWITHCHILDREN.APPLICATIONID
                  where APPLICATIONSWITHCHILDREN.APPLIED > 0




                -- Collections are not sync with single payment so try and pull information from the batch revenue row

                if not exists(select 1 from @RETVAL
                begin

                  declare @SINGLEAPPLICATIONID uniqueidentifier;
                  declare @APPLICATIONTYPECODE tinyint;
                  select   
                      @SINGLEAPPLICATIONID = SINGLEAPPLICATIONID,
                      @APPLICATIONTYPECODE = APPLICATIONTYPECODE
                  from dbo.UFN_REVENUEBATCH_GETSINGLEAPPLICATIONINFO(@REVENUEID);

                  if @SINGLEAPPLICATIONID is not null                  
                    insert into @RETVAL
                    (
                      ID,
                      REVENUEID,
                      DESIGNATIONID,
                      EVENTID,
                      PROGRAMID,
                      CATEGORYCODEID,
                      MEMBERSHIPLEVELID,
                      ORDERMEMBERSHIPLEVELID,
                      ORDERMERCHANDISEPRODUCTINSTANCEID,
                      ORDERMERCHANDISEDEPARTMENTID,
                      ORDEREVENTID,
                      ORDERPROGRAMID,
                      ORDERFEEID,
                      ORDERTAXID,
                      ORDEREVENTLOCATIONID,
                      ORDERRESOURCECATEGORYCODEID,
                      AMOUNT,
                      TYPECODE,
                      APPLICATIONCODE,
                      BASECURRENCYID,
       ORGANIZATIONAMOUNT,
                      ORGANIZATIONEXCHANGERATEID,
                      TRANSACTIONAMOUNT,
                      TRANSACTIONCURRENCYID,
                      BASEEXCHANGERATEID,
                      OVERRIDEBUSINESSUNITS,
                      REVENUESPLITBUSINESSUNITOVERRIDECODEID
                    )
                    select REVENUESPLIT.ID,
                          REVENUESPLIT.REVENUEID,
                          REVENUESPLIT.DESIGNATIONID,
                          REGISTRANT.EVENTID,
                          EVENT.PROGRAMID,
                          REVENUECATEGORY.GLREVENUECATEGORYMAPPINGID,
                          MEMBERSHIPTRANSACTION.MEMBERSHIPLEVELID,
                          REVENUESPLITORDER.MEMBERSHIPLEVELID,
                          REVENUESPLITORDER.MERCHANDISEPRODUCTINSTANCEID,
                          MERCHANDISEPRODUCT.MERCHANDISEDEPARTMENTID,
                          REVENUESPLITORDER.EVENTID,
                          REVENUESPLITORDER.PROGRAMID,
                          REVENUESPLITORDER.FEEID,
                          REVENUESPLITORDER.TAXID,
                          REVENUESPLITORDER.EVENTLOCATIONID,
                          RESOURCE.RESOURCECATEGORYCODEID,
                          REVENUESPLIT.AMOUNT,
                          REVENUESPLIT.TYPECODE,
                          case @APPLICATIONTYPECODE
                              when 5 then 2 -- pledge payment

                              when 4 then 3 -- recurring gift payment

                              when 8 then 7 -- matching gift payment

                              when 6 then 6 -- planned gift payment

                              when 10 then 13 -- Donor challenge payment

                              when 1 then 3 -- sponsorship payment

                              when 2 then 5 -- membership payment

                              when 3 then 10 -- order payment

                              when 9 then 8 -- grant award payment

                          else 0 end as APPLICATIONCODE,
                          REVENUESPLIT.BASECURRENCYID,
                          REVENUESPLIT.ORGANIZATIONAMOUNT,
                          REVENUESPLIT.ORGANIZATIONEXCHANGERATEID,
                          REVENUESPLIT.TRANSACTIONAMOUNT,
                          REVENUESPLIT.TRANSACTIONCURRENCYID,
                          REVENUESPLIT.BASEEXCHANGERATEID,
                          REVENUESPLIT.OVERRIDEBUSINESSUNITS,
                          REVENUESPLIT.REVENUESPLITBUSINESSUNITOVERRIDECODEID
                    from dbo.REVENUESPLIT
                      left outer join dbo.REVENUESPLITORDER
                          on REVENUESPLITORDER.ID = REVENUESPLIT.ID
                      left outer join dbo.EVENT as ORDEREVENT
                          on ORDEREVENT.ID = REVENUESPLITORDER.EVENTID
                      left outer join dbo.MERCHANDISEPRODUCTINSTANCE 
                          on MERCHANDISEPRODUCTINSTANCE.ID = REVENUESPLITORDER.MERCHANDISEPRODUCTINSTANCEID
                      left outer join dbo.MERCHANDISEPRODUCT 
                          on MERCHANDISEPRODUCT.ID = MERCHANDISEPRODUCTINSTANCE.MERCHANDISEPRODUCTID
                      left outer join dbo.REVENUECATEGORY
                          on REVENUECATEGORY.ID = REVENUESPLIT.ID
                      left outer join dbo.MEMBERSHIPTRANSACTION
                          on MEMBERSHIPTRANSACTION.REVENUESPLITID = REVENUESPLIT.ID
                      left outer join dbo.EVENTREGISTRANTPAYMENT
                          on EVENTREGISTRANTPAYMENT.PAYMENTID = REVENUESPLIT.ID
                      left outer join dbo.REGISTRANT
                          on REGISTRANT.ID = EVENTREGISTRANTPAYMENT.REGISTRANTID
                      left outer join dbo.EVENT
                          on EVENT.ID = REGISTRANT.EVENTID
                      left outer join dbo.RESOURCE
                          on RESOURCE.ID = REVENUESPLITORDER.RESOURCEID
                      where REVENUESPLIT.REVENUEID = @SINGLEAPPLICATIONID                        
                end                                        
               end
             end
          return;
         end