USP_DATAFORMTEMPLATE_EDIT_GIFTFEEGLDISTRIBUTION
The save procedure used by the edit dataform template "Gift Fee 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 | Gift fee 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_GIFTFEEGLDISTRIBUTION
(
@ID uniqueidentifier,
@GLDISTRIBUTION xml,
@CHANGEAGENTID uniqueidentifier = null
)
as
set nocount on;
begin try
-- GLPAYMENTMETHODREVENUETYPEMAPPINGID is required on GIFTFEEGLDISTRIBUTION but only appears in the UI if LegacyGL is unlocked.
-- Gift Fee GL specs are only available for BasicGL so, for new distribution rows, following the example of
-- BenefitGLDistribution.Edit.xml when LegacyGL is locked of defaulting GLPAYMENTMETHODREVENUETYPEMAPPINGID
-- to the first debit GLPAYMENTMETHODREVENUETYPEMAPPINGID found for the revenue
-- (this occurs in that specs UIModel class)
declare @DEFAULTMAPPINGID uniqueidentifier
select top 1 @DEFAULTMAPPINGID = GLPAYMENTMETHODREVENUETYPEMAPPINGID
from dbo.UFN_REVENUE_GETGIFTFEEGLDISTRIBUTION(@ID)
set @GLDISTRIBUTION = ( select
ID,
coalesce(GLPAYMENTMETHODREVENUETYPEMAPPINGID, @DEFAULTMAPPINGID) as GLPAYMENTMETHODREVENUETYPEMAPPINGID,
TRANSACTIONTYPECODE,
ACCOUNT,
AMOUNT,
REFERENCE,
TRANSACTIONCURRENCYID
from dbo.UFN_REVENUE_GETGIFTFEEGLDISTRIBUTION_FROMITEMLISTXML(@GLDISTRIBUTION)
for xml raw('ITEM'),type,elements,root('GLDISTRIBUTION'),BINARY BASE64)
--validate post status
if exists ( select 1 from dbo.REVENUEPOSTED where REVENUEPOSTED.ID = @ID)
raiserror('BBERR_CANNOTEDITPOSTEDGIFTFEESDISTRIBUTION', 13, 1)
if (dbo.UFN_GLDISTRIBUTION_DEBITSEQUALCREDITS(@GLDISTRIBUTION) = 0)
raiserror('BBERR_SUMOFCREDITSMUSTEQUALSUMOFDEBITS', 13, 1)
if (dbo.UFN_GLDISTRIBUTION_ACCOUNTEXISTS_2(@GLDISTRIBUTION, @ID) = 0)
raiserror('BBERR_ACCOUNTDOESNOTEXIST', 13, 1)
declare @DISTRIBUTIONSUM money;
select @DISTRIBUTIONSUM = sum(AMOUNT)
from dbo.UFN_REVENUE_GETGIFTFEEGLDISTRIBUTION_FROMITEMLISTXML(@GLDISTRIBUTION)
where TRANSACTIONTYPECODE = 0;
if @DISTRIBUTIONSUM <> coalesce(( select sum(REVENUESPLITGIFTFEE.TRANSACTIONAMOUNT) from dbo.REVENUESPLITGIFTFEE
inner join dbo.REVENUESPLIT on REVENUESPLITGIFTFEE.ID = REVENUESPLIT.ID
where
REVENUESPLIT.REVENUEID = @ID), 0)
raiserror('BBERR_DISTRIBUTIONAMOUNTMUSTEQUALGIFTFEESAMOUNT', 13, 1);
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
declare @POSTDATE datetime;
select @POSTDATE = POSTDATE from dbo.REVENUE where ID = @ID;
declare @TRANSACTIONCURRENCYID uniqueidentifier;
declare @BASECURRENCYID uniqueidentifier;
declare @BASEEXCHANGERATEID uniqueidentifier;
declare @ORGANIZATIONEXCHANGERATEID uniqueidentifier;
declare @DEPOSITBASEEXCHANGERATEID uniqueidentifier;
declare @DEPOSITORGANIZATIONEXCHANGERATEID uniqueidentifier;
select
@TRANSACTIONCURRENCYID = REVENUE.TRANSACTIONCURRENCYID,
@BASECURRENCYID = REVENUE.BASECURRENCYID,
@BASEEXCHANGERATEID = REVENUE.BASEEXCHANGERATEID,
@ORGANIZATIONEXCHANGERATEID = REVENUE.ORGANIZATIONEXCHANGERATEID,
@DEPOSITBASEEXCHANGERATEID = case
when isnull(BA.TRANSACTIONCURRENCYID, NEWID()) = REVENUE.TRANSACTIONCURRENCYID then T.BASEEXCHANGERATEID
else REVENUE.BASEEXCHANGERATEID
end,
@DEPOSITORGANIZATIONEXCHANGERATEID = case
when isnull(BA.TRANSACTIONCURRENCYID, NEWID()) = REVENUE.TRANSACTIONCURRENCYID then T.ORGANIZATIONEXCHANGERATEID
else REVENUE.ORGANIZATIONEXCHANGERATEID
end
from
dbo.REVENUE
left outer join
dbo.BANKACCOUNTDEPOSITPAYMENT DP on DP.ID = REVENUE.ID
left outer join
dbo.BANKACCOUNTTRANSACTION T on T.ID = DP.DEPOSITID
left outer join
dbo.BANKACCOUNT BA on BA.ID = T.BANKACCOUNTID
where
REVENUE.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_GETGIFTFEEGLDISTRIBUTION_CUSTOMUPDATEFROMXML_2 @ID, @GLDISTRIBUTION, @POSTDATE, @CHANGEAGENTID;
end try
begin catch
exec dbo.USP_RAISE_ERROR;
return 1;
end catch
return 0;