USP_REVENUEBATCH_VALIDATERECOGNITIONS
Validate recognitions on a revenue batch row.
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@RECOGNITIONS | xml | IN | |
@BATCHROWID | uniqueidentifier | IN |
Definition
Copy
CREATE procedure dbo.USP_REVENUEBATCH_VALIDATERECOGNITIONS
(
@RECOGNITIONS xml,
@BATCHROWID uniqueidentifier = null
)
as
set nocount on;
if not @RECOGNITIONS is null
begin
declare @REC table
(
ID uniqueidentifier,
CONSTITUENTID uniqueidentifier,
AMOUNT money,
EFFECTIVEDATE datetime,
REVENUERECOGNITIONTYPECODEID uniqueidentifier
);
insert into @REC(ID, CONSTITUENTID, AMOUNT, EFFECTIVEDATE, REVENUERECOGNITIONTYPECODEID)
select
T.c.value('(ID)[1]','uniqueidentifier') AS 'ID',
T.c.value('(CONSTITUENTID)[1]','uniqueidentifier') AS 'CONSTITUENTID',
T.c.value('(AMOUNT)[1]','money') AS 'AMOUNT',
T.c.value('(EFFECTIVEDATE)[1]','datetime') AS 'EFFECTIVEDATE',
T.c.value('(REVENUERECOGNITIONTYPECODEID)[1]','uniqueidentifier') AS 'REVENUERECOGNITIONTYPECODEID'
from @RECOGNITIONS.nodes('/RECOGNITIONS/ITEM') T(c);
declare REC_CURSOR cursor local fast_forward for
select CONSTITUENTID, AMOUNT, EFFECTIVEDATE, REVENUERECOGNITIONTYPECODEID from @REC;
open REC_CURSOR;
declare @CONSTITUENTID uniqueidentifier;
declare @AMOUNT money;
declare @EFFECTIVEDATE datetime;
declare @REVENUERECOGNITIONTYPECODEID uniqueidentifier;
fetch next from REC_CURSOR into @CONSTITUENTID, @AMOUNT, @EFFECTIVEDATE, @REVENUERECOGNITIONTYPECODEID;
while @@FETCH_STATUS = 0
begin
--Validate the constituent if it's going to be created
if not exists(select ID from dbo.CONSTITUENT where ID = @CONSTITUENTID)
exec dbo.USP_REVENUEBATCH_VALIDATENEWCONSTITUENT @REVENUEBATCHCONSTITUENTID = @CONSTITUENTID, @ISDONOR = 0, @BATCHROWID = @BATCHROWID;
--Validate that the amount is non-negative
if @AMOUNT < 0
raiserror('BBERR_RECOGNITIONNEGATIVE',13,1)
fetch next from REC_CURSOR into @CONSTITUENTID, @AMOUNT, @EFFECTIVEDATE, @REVENUERECOGNITIONTYPECODEID;
end
--When a cursor is used, it should be explicitly closed/deallocated in case of blocking or USP running long
close REC_CURSOR;
deallocate REC_CURSOR;
end