USP_DATAFORMTEMPLATE_EDIT_REVENUEGLDISTRIBUTION
The save procedure used by the edit dataform template "Revenue GL Distribution Edit Form".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | The input ID parameter indicating the ID of the record being edited. |
@GLDISTRIBUTION | xml | IN | Revenue GL distribution |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_REVENUEGLDISTRIBUTION
(
@ID uniqueidentifier,
@GLDISTRIBUTION xml,
@CHANGEAGENTID uniqueidentifier = null
)
as
begin try
set nocount on;
--validate post status
if exists (select 1 from dbo.FINANCIALTRANSACTION FT where FT.ID = @ID and FT.POSTSTATUSCODE = 2)
raiserror('You cannot edit a posted gift', 13, 1)
if (dbo.UFN_GLDISTRIBUTION_ACCOUNTEXISTS_2(@GLDISTRIBUTION,@ID) = 0)
raiserror('One or more of the edited accounts do not exist.', 13, 1)
if (select count(*) from UFN_REVENUE_GETGLDISTRIBUTION_FROMITEMLISTXML(@GLDISTRIBUTION)) = 0
raiserror('At least one GL distribution is required.', 13, 1)
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @POSTDATE datetime;
declare @TRANSACTIONCURRENCYID uniqueidentifier;
declare @BASECURRENCYID uniqueidentifier;
declare @BASEEXCHANGERATEID uniqueidentifier;
declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
declare @DEPOSITBASEEXCHANGERATEID uniqueidentifier;
declare @DEPOSITORGANIZATIONEXCHANGERATEID uniqueidentifier;
select
@POSTDATE = FINANCIALTRANSACTION.POSTDATE,
@TRANSACTIONCURRENCYID = FINANCIALTRANSACTION.TRANSACTIONCURRENCYID,
--BASECURRENCYID value calculation taken from REVENUE view
@BASECURRENCYID = case when FINANCIALTRANSACTION.DELETEDON is null then isnull(REVENUE_EXT.NONPOSTABLEBASECURRENCYID, V.BASECURRENCYID) else null end,
@BASEEXCHANGERATEID = FINANCIALTRANSACTION.BASEEXCHANGERATEID,
@ORGANIZATIONEXCHANGERATEID = FINANCIALTRANSACTION.ORGEXCHANGERATEID,
@DEPOSITBASEEXCHANGERATEID = case when isnull(BA.TRANSACTIONCURRENCYID, newid()) = FINANCIALTRANSACTION.TRANSACTIONCURRENCYID then T.BASEEXCHANGERATEID else FINANCIALTRANSACTION.BASEEXCHANGERATEID end,
@DEPOSITORGANIZATIONEXCHANGERATEID = case when isnull(BA.TRANSACTIONCURRENCYID, newid()) = FINANCIALTRANSACTION.TRANSACTIONCURRENCYID then T.ORGANIZATIONEXCHANGERATEID else FINANCIALTRANSACTION.ORGEXCHANGERATEID end
from dbo.FINANCIALTRANSACTION
inner join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
left outer join dbo.BANKACCOUNTDEPOSITPAYMENT DP on DP.ID = FINANCIALTRANSACTION.ID
left outer join dbo.BANKACCOUNTTRANSACTION T on T.ID = DP.DEPOSITID
left outer join dbo.BANKACCOUNT BA on BA.ID = T.BANKACCOUNTID
left outer join dbo.V_BASECURRENCYFORFINANCIALTRANSACTION_I V with (noexpand) on FINANCIALTRANSACTION.ID = V.FINANCIALTRANSACTIONID
where FINANCIALTRANSACTION.ID = @ID;
--Set the currency values in the GLDISTRIBUTION collection.
select @GLDISTRIBUTION = dbo.UFN_GLDISTRIBUTION_CONVERTAMOUNTSINXML
(
@GLDISTRIBUTION,
@BASECURRENCYID,
@DEPOSITORGANIZATIONEXCHANGERATEID,
@TRANSACTIONCURRENCYID,
@DEPOSITBASEEXCHANGERATEID,
@ORGANIZATIONEXCHANGERATEID,
@BASEEXCHANGERATEID
)
exec dbo.USP_REVENUE_GETGLDISTRIBUTION_CUSTOMUPDATEFROMXML_2 @ID, @GLDISTRIBUTION, @POSTDATE, @CHANGEAGENTID;
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;