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;