USP_REVENUE_GETSPLITS_2_CUSTOMADDFROMXML

Adds gift splits from XML including the revenue categories.

Parameters

Parameter Parameter Type Mode Description
@REVENUEID uniqueidentifier IN
@XML xml IN
@CHANGEAGENTID uniqueidentifier IN
@CHANGEDATE datetime IN

Definition

Copy


            CREATE procedure dbo.USP_REVENUE_GETSPLITS_2_CUSTOMADDFROMXML
            (
                @REVENUEID uniqueidentifier,
                @XML xml,
                @CHANGEAGENTID uniqueidentifier = null,
                @CHANGEDATE datetime = null
            )

            as

            set nocount on;

            if @CHANGEAGENTID is null
                exec USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output

            declare @ORGANIZATIONCURRENCYID uniqueidentifier; 
            select @ORGANIZATIONCURRENCYID=ID from dbo.CURRENCY where ISORGANIZATIONCURRENCY = 1;

            if @CHANGEDATE is null
                set @CHANGEDATE = getdate()

            -- build a temporary table containing the values from the XML

            declare @TempTbl table (
               [AMOUNT] money,
               [APPLICATIONCODE] tinyint,
               [BASECURRENCYID] uniqueidentifier,
               [BASEEXCHANGERATEID] uniqueidentifier,
               [CATEGORYCODEID] uniqueidentifier,
               [DESIGNATIONID] uniqueidentifier,
               [ID] uniqueidentifier,
               [ORGANIZATIONAMOUNT] money,
               [ORGANIZATIONEXCHANGERATEID] uniqueidentifier,
               [TRANSACTIONAMOUNT] money,
               [TRANSACTIONCURRENCYID] uniqueidentifier,
               [TYPECODE] tinyint)

            insert into @TempTbl select 
                [AMOUNT],
                [APPLICATIONCODE],
                [BASECURRENCYID],
                [BASEEXCHANGERATEID],
                [CATEGORYCODEID],
                [DESIGNATIONID],
                [ID],
                [ORGANIZATIONAMOUNT],
                [ORGANIZATIONEXCHANGERATEID],
                [TRANSACTIONAMOUNT],
                [TRANSACTIONCURRENCYID],
                [TYPECODE]
            from dbo.UFN_REVENUE_GETSPLITS_2_FROMITEMLISTXML(@XML)

            update @TempTbl set ID = newid() where (ID is null) or (ID = '00000000-0000-0000-0000-000000000000');

            if @@Error <> 0
                return 1;

            insert into [FINANCIALTRANSACTIONLINEITEM](
               ID
              ,FINANCIALTRANSACTIONID
              ,TRANSACTIONAMOUNT
              ,VISIBLE
              ,DESCRIPTION
              ,SEQUENCE
              ,TYPECODE
              ,POSTDATE
              ,POSTSTATUSCODE
              ,BASEAMOUNT
              ,ORGAMOUNT
              -- Boilerplate

              ,ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
            )
            select 
               temp.ID
              ,@REVENUEID              
              ,temp.TRANSACTIONAMOUNT
              ,1 VISIBLE
              ,'' DESCRIPTION
              ,row_number() over (partition by @REVENUEID order by @REVENUEID)
              ,0 TYPECODE
              ,case FT.POSTSTATUSCODE when 3 then FT.DATE else FT.POSTDATE end
              ,case FT.POSTSTATUSCODE when 3 then 3 else 1 end
              ,coalesce(AMOUNT,0)
              ,case when 
                ORGANIZATIONEXCHANGERATEID is null
                  and (BASECURRENCYID is null or BASECURRENCYID = @ORGANIZATIONCURRENCYID
                  and temp.BASEEXCHANGERATEID is null
                  and (temp.TRANSACTIONCURRENCYID is null or temp.TRANSACTIONCURRENCYID = @ORGANIZATIONCURRENCYID)
                  and (
                  isnull(ORGANIZATIONAMOUNT,0) <> isnull(AMOUNT,0)
                  or isnull(temp.TRANSACTIONAMOUNT,0) <> isnull(AMOUNT,0)
                  or isnull(AMOUNT,0) = 0
                  )
                then isnull(AMOUNT,0
                else coalesce(ORGANIZATIONAMOUNT,AMOUNT,0
               end
              ,@CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE
            from @TempTbl as [temp]
                 inner join dbo.FINANCIALTRANSACTION as FT on @REVENUEID = FT.ID

            insert into dbo.REVENUESPLIT_EXT(
          ID
              ,DESIGNATIONID
              ,TYPECODE
              ,APPLICATIONCODE
              ,OVERRIDEBUSINESSUNITS              
              -- boilerplate

              ,ADDEDBYID, CHANGEDBYID, DATEADDED, DATECHANGED
            )
            select
               ID
              ,DESIGNATIONID
              ,isnull(TYPECODE,0)
              ,isnull(APPLICATIONCODE,0)
              ,0 OVERRIDEBUSINESSUNITS
              ,@CHANGEAGENTID, @CHANGEAGENTID, @CHANGEDATE, @CHANGEDATE              
            from @TempTbl as [temp]

            -- insert new revenue categories

            insert into [REVENUECATEGORY] 
                ([ID], 
                [GLREVENUECATEGORYMAPPINGID],    
                ADDEDBYID, 
                CHANGEDBYID, 
                DATEADDED, 
                DATECHANGED)
            select ID, 
                [CATEGORYCODEID],
                @CHANGEAGENTID
                @CHANGEAGENTID
                @CHANGEDATE
                @CHANGEDATE
            from @TempTbl as [temp]
            where (not [temp].[CATEGORYCODEID] is null)

            if @@Error <> 0
                return 2;

            return 0;