USP_DONORCHALLENGEENCUMBERED_VALIDATEAMOUNT
Validates an amount is acceptable for the given donor challenge.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@AMOUNT | money | IN | |
@DONORCHALLENGEID | uniqueidentifier | IN | |
@DONORCHALLENGEENCUMBEREDID | uniqueidentifier | IN | |
@RESERVED | bit | IN |
Definition
Copy
CREATE procedure dbo.USP_DONORCHALLENGEENCUMBERED_VALIDATEAMOUNT
(
@AMOUNT money = 0,
@DONORCHALLENGEID uniqueidentifier = null,
@DONORCHALLENGEENCUMBEREDID uniqueidentifier = null,
@RESERVED bit = 0
)
as
set nocount on;
declare @PREVIOUSAMOUNT money = 0;
--If the fund is already encumbered and reserved the amount must be > 0
if (@DONORCHALLENGEENCUMBEREDID is not null) or (@RESERVED = 1)
begin
if @DONORCHALLENGEENCUMBEREDID is not null
select
@DONORCHALLENGEID = DONORCHALLENGEID,
@AMOUNT = case when STATUSTYPECODE = 2 then AMOUNT else @AMOUNT end,
@PREVIOUSAMOUNT = case when STATUSTYPECODE = 2 then 0 else AMOUNT end,
@RESERVED = case when METHODTYPECODE = 2 then 1 else 0 end
from
dbo.DONORCHALLENGEENCUMBERED
where
ID = @DONORCHALLENGEENCUMBEREDID
if (@RESERVED = 1) and (@AMOUNT = 0)
begin
raiserror('BBERR_DONORCHALLENGEENCUMBERED_AMOUNTGREATERTHANZERO', 13, 1);
return 1;
end
end
declare @TOTALFUNDS money = 0;
declare @MATCHEDFUNDS money = 0;
declare @ENCUMBEREDFUNDS money = 0;
select
@TOTALFUNDS = case when TYPECODE = 1 then MATCHTHRESHOLD else TOTALFUNDS end
from
dbo.DONORCHALLENGE
where
ID = @DONORCHALLENGEID
set @MATCHEDFUNDS = dbo.UFN_DONORCHALLENGE_MATCHEDAMOUNT(@DONORCHALLENGEID);
set @ENCUMBEREDFUNDS = dbo.UFN_DONORCHALLENGE_ENCUMBEREDAMOUNT(@DONORCHALLENGEID);
set @ENCUMBEREDFUNDS = @ENCUMBEREDFUNDS - @PREVIOUSAMOUNT;
--Can't encumber an amount larger than our remaining funds
if @AMOUNT > (@TOTALFUNDS - @ENCUMBEREDFUNDS - @MATCHEDFUNDS)
begin
raiserror('BBERR_DONORCHALLENGEENCUMBERED_AMOUNTEXCEEDSAVAILABLEFUNDS', 13, 1);
return 1;
end
return 0;