USP_DATAFORMTEMPLATE_EDIT_REVENUEPAYMENT2
The save procedure used by the edit dataform template "Revenue Payment Edit Form 2".
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ID | uniqueidentifier | IN | The input ID parameter indicating the ID of the record being edited. |
@CURRENTAPPUSERID | uniqueidentifier | IN | Input parameter indicating the ID of the current user. |
@CHANGEAGENTID | uniqueidentifier | IN | Input parameter indicating the ID of the change agent invoking the procedure. |
@DATE | datetime | IN | Date |
@PAYMENTMETHODCODE | tinyint | IN | Payment method |
@OTHERPAYMENTMETHODCODEID | uniqueidentifier | IN | Other method |
@CHECKDATE | UDT_FUZZYDATE | IN | Check date |
@CHECKNUMBER | nvarchar(20) | IN | Check number |
@REFERENCEDATE | UDT_FUZZYDATE | IN | Reference date |
@REFERENCENUMBER | nvarchar(20) | IN | Reference number |
@CARDHOLDERNAME | nvarchar(255) | IN | Cardholder name |
@CREDITCARDNUMBER | nvarchar(4) | IN | Card number |
@CREDITTYPECODEID | uniqueidentifier | IN | Card type |
@AUTHORIZATIONCODE | nvarchar(20) | IN | Authorization code |
@EXPIRESON | UDT_FUZZYDATE | IN | Expires on |
@ISSUER | nvarchar(100) | IN | Issuer |
@NUMBEROFUNITS | decimal(20, 3) | IN | Number of units |
@SYMBOL | nvarchar(25) | IN | Symbol |
@MEDIANPRICE | decimal(19, 4) | IN | Median price |
@GIFTINKINDSUBTYPECODEID | uniqueidentifier | IN | Subtype |
@PROPERTYSUBTYPECODEID | uniqueidentifier | IN | Subtype |
@CONSTITUENTACCOUNTID | uniqueidentifier | IN | Account |
@POSTSTATUSCODE | tinyint | IN | Post status |
@POSTDATE | datetime | IN | Post date |
@GIVENANONYMOUSLY | bit | IN | Payment is anonymous |
@DONOTRECEIPT | bit | IN | Do not receipt |
Definition
Copy
CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDIT_REVENUEPAYMENT2
(
@ID uniqueidentifier,
@CURRENTAPPUSERID uniqueidentifier,
@CHANGEAGENTID uniqueidentifier,
@DATE datetime,
@PAYMENTMETHODCODE tinyint,
@OTHERPAYMENTMETHODCODEID uniqueidentifier,
@CHECKDATE dbo.UDT_FUZZYDATE,
@CHECKNUMBER nvarchar(20),
@REFERENCEDATE dbo.UDT_FUZZYDATE,
@REFERENCENUMBER nvarchar(20),
@CARDHOLDERNAME nvarchar(255),
@CREDITCARDNUMBER nvarchar(4),
@CREDITTYPECODEID uniqueidentifier,
@AUTHORIZATIONCODE nvarchar(20),
@EXPIRESON dbo.UDT_FUZZYDATE,
@ISSUER nvarchar(100),
@NUMBEROFUNITS decimal(20,3),
@SYMBOL nvarchar(25),
@MEDIANPRICE decimal(19,4),
@GIFTINKINDSUBTYPECODEID uniqueidentifier,
@PROPERTYSUBTYPECODEID uniqueidentifier,
@CONSTITUENTACCOUNTID uniqueidentifier,
@POSTSTATUSCODE tinyint,
@POSTDATE datetime,
@GIVENANONYMOUSLY bit,
@DONOTRECEIPT bit
)
as
set nocount on;
declare @CHANGEDATE datetime;
declare @TYPECODE tinyint;
begin try
set @CHANGEDATE = getdate();
if @CHANGEAGENTID is null
exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output;
/* Validate payment information */
--IS THE REVENUE POSTED?
if (select count(REVENUE.ID) from dbo.REVENUE
inner join dbo.REVENUEPOSTED on REVENUEPOSTED.ID = REVENUE.ID
where REVENUE.ID = @ID) > 0
raiserror('You cannot edit a posted gift.', 13, 1)
if @POSTSTATUSCODE = 0
raiserror('You cannot edit a gift to post it.', 13, 1)
select @TYPECODE = TRANSACTIONTYPECODE
from dbo.REVENUE
where ID = @ID;
-- if the payment method has changed, clear any user-defined gl distributions for this revenue record
if exists (select ID from dbo.REVENUEGLDISTRIBUTION where REVENUEID = @ID)
begin
-- check to see if amount has changed
if (select count(REVENUEPAYMENTMETHOD.ID) from dbo.REVENUEPAYMENTMETHOD where REVENUEID = @ID and PAYMENTMETHODCODE = @PAYMENTMETHODCODE) = 0
begin
--Clear GL
--Cache CONTEXT INFO
declare @contextCache varbinary(128);
set @contextCache = CONTEXT_INFO();
if not @CHANGEAGENTID is null
set CONTEXT_INFO @CHANGEAGENTID;
delete from dbo.REVENUEGLDISTRIBUTION where REVENUEID = @ID;
--Restore CONTEXT_INFO
if not @contextCache is null
set CONTEXT_INFO @contextCache;
end
end
exec dbo.USP_REVENUEPAYMENT_EDIT @ID, @CURRENTAPPUSERID, @CHANGEAGENTID, @DATE,
@PAYMENTMETHODCODE, @CHECKDATE, @CHECKNUMBER, @REFERENCEDATE, @REFERENCENUMBER,
@CARDHOLDERNAME, @CREDITCARDNUMBER, @CREDITTYPECODEID, @AUTHORIZATIONCODE, @EXPIRESON,
@ISSUER, @NUMBEROFUNITS, @SYMBOL, @MEDIANPRICE, @GIFTINKINDSUBTYPECODEID,
@PROPERTYSUBTYPECODEID, @CONSTITUENTACCOUNTID, @GIVENANONYMOUSLY, @DONOTRECEIPT, @CHANGEDATE, @OTHERPAYMENTMETHODCODEID;
/*JamesWill 2007/03/23 Only run this update if POSTDATE or DONOTPOST actually changed to avoid unnecessary rows in the audit table.
Also, add CHANGEDBYID and DATECHANGED to the update statement */
declare @OLDPOSTDATE datetime;
declare @OLDDONOTPOST bit;
declare @DONOTPOST bit;
select @DONOTPOST = case when @POSTSTATUSCODE = 2 then 1 else 0 end;
select top 1 @OLDPOSTDATE = POSTDATE, @OLDDONOTPOST = DONOTPOST from dbo.REVENUE where ID = @ID;
if @OLDPOSTDATE <> @POSTDATE or @OLDDONOTPOST <> @DONOTPOST
update dbo.REVENUE
set POSTDATE = @POSTDATE,
DONOTPOST = case when @POSTSTATUSCODE = 2 then 1 else 0 end,
CHANGEDBYID = @CHANGEAGENTID,
DATECHANGED = @CHANGEDATE
where ID = @ID;
end try
begin catch
exec dbo.USP_RAISE_ERROR;
end catch
return 0;