USP_REVENUEBATCH_VALIDATEADDITIONALAPPLICATIONS
Validates additional applications for a batch row.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@ADDITIONALAPPLICATIONSSTREAM | xml | IN | |
@REVENUEBATCHTYPECODE | tinyint | IN | |
@PAYMENTMETHODCODE | tinyint | IN | |
@CATEGORYCODEID | uniqueidentifier | IN | |
@ISORGANIZATION | bit | IN |
Definition
Copy
CREATE procedure dbo.USP_REVENUEBATCH_VALIDATEADDITIONALAPPLICATIONS
(
@ADDITIONALAPPLICATIONSSTREAM xml,
@REVENUEBATCHTYPECODE tinyint,
@PAYMENTMETHODCODE tinyint,
@CATEGORYCODEID uniqueidentifier,
@ISORGANIZATION bit
)
as
set nocount on;
if @ADDITIONALAPPLICATIONSSTREAM is null
return 0;
declare @APPLICATIONSTABLE table
(
TYPECODE tinyint,
APPLIED money,
DESIGNATIONID uniqueidentifier,
OTHERTYPECODEID uniqueidentifier,
DECLINESGIFTAID bit,
SPONSORSHIPID uniqueidentifier
);
insert into @APPLICATIONSTABLE(TYPECODE, APPLIED, DESIGNATIONID, OTHERTYPECODEID, DECLINESGIFTAID,SPONSORSHIPID)
select
TYPECODE,
APPLIED,
DESIGNATIONID,
OTHERTYPECODEID,
DECLINESGIFTAID,
SPONSORSHIPID
from dbo.UFN_REVENUEBATCH_GETADDITIONALAPPLICATIONS_FROMITEMLISTXML(@ADDITIONALAPPLICATIONSSTREAM)
declare STREAMSCURSOR cursor local fast_forward for
select TYPECODE, APPLIED, DESIGNATIONID, OTHERTYPECODEID from @APPLICATIONSTABLE;
declare @TYPECODE tinyint;
declare @APPLIED money;
declare @DESIGNATIONID uniqueidentifier;
declare @OTHERTYPECODEID uniqueidentifier;
open STREAMSCURSOR;
fetch next from STREAMSCURSOR into @TYPECODE, @APPLIED, @DESIGNATIONID, @OTHERTYPECODEID;
while @@FETCH_STATUS = 0
begin
--If an amount has been applied to a commitment, validate the GL mappings.
if @APPLIED > 0
begin
if @TYPECODE is null
begin
raiserror('Application type is required.', 13, 2);
return 2;
end
if @TYPECODE = 1
begin
if @OTHERTYPECODEID is null
begin
raiserror('Other type is required if the application is Other.', 13, 2);
return 2;
end
end
else if @TYPECODE = 2
if @ISORGANIZATION = 0
begin
raiserror('Only organizations can add unapplied matching gift payments.', 13, 2);
return 2;
end
if @DESIGNATIONID is null
begin
raiserror('Please enter at least one designation.', 13, 2);
return 2;
end
if exists(select top 1 ID from dbo.designation where ID=@DESIGNATIONID and ISACTIVE=0)
begin
raiserror('BBERR_CANNOTPAYINACTIVEDESIGNATIONS : Revenue cannot be added to inactive designations.', 13, 2);
return 2;
end
exec dbo.USP_DESIGNATION_VALIDATEGLMAPPINGS @DESIGNATIONID, @REVENUEBATCHTYPECODE, @PAYMENTMETHODCODE, 0, 0, @CATEGORYCODEID;
end
fetch next from STREAMSCURSOR into @TYPECODE, @APPLIED, @DESIGNATIONID, @OTHERTYPECODEID;
end
--When a cursor is used, it should be explicitly closed/deallocated in case of blocking or USP running long
close STREAMSCURSOR;
deallocate STREAMSCURSOR;
if (select count(distinct cast(DECLINESGIFTAID as nvarchar(1)) + cast(TYPECODE as nvarchar(1)) + cast(DESIGNATIONID as nvarchar(36)) + cast(isnull(SPONSORSHIPID,'00000000-0000-0000-0000-000000000000') as nvarchar(36))) from @APPLICATIONSTABLE) <
(select count(cast(DECLINESGIFTAID as nvarchar(1)) + cast(TYPECODE as nvarchar(1)) + cast(DESIGNATIONID as nvarchar(36)) + cast(isnull(SPONSORSHIPID,'00000000-0000-0000-0000-000000000000') as nvarchar(36))) from @APPLICATIONSTABLE)
begin
raiserror('Duplicate designations cannot be specified for the same application type.', 13, 2);
return 2;
end
return 0;