USP_MEMBERSHIPDUESBATCH_VALIDATE_PLEDGE
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@DATE | datetime | IN | |
@AMOUNT | money | IN | |
@FREQUENCYCODE | tinyint | IN | |
@STARTDATE | datetime | IN | |
@NUMBEROFINSTALLMENTS | int | IN | |
@INSTALLMENTS | xml | IN |
Definition
Copy
CREATE procedure dbo.USP_MEMBERSHIPDUESBATCH_VALIDATE_PLEDGE
(
@DATE datetime,
@AMOUNT money,
@FREQUENCYCODE tinyint,
@STARTDATE datetime,
@NUMBEROFINSTALLMENTS integer,
@INSTALLMENTS xml
)
as
begin
if @NUMBEROFINSTALLMENTS > 150
raiserror('BBERR_NUMINSTALLMENTS',13,1);
if @FREQUENCYCODE not in (0,1,2,3,4,5,7,8)
raiserror('BBERR_PLEDGEFREQUENCIESNOTSUPPORTED', 13, 1);
if @STARTDATE < @DATE
raiserror('BBERR_STARTDATEBEFOREPLEDGEDATE', 13, 1);
if @AMOUNT <= 0
raiserror('BBERR_MEMBERSHIPDUESBATCH_ZEROPLEDGEAMOUNT', 13, 1);
-- Validate installments if the frequency is irregular
if @FREQUENCYCODE = 4
begin
declare @INSTALLMENTS_TABLE table
(
ID uniqueidentifier primary key,
AMOUNT money,
RECEIPTAMOUNT money,
DATE datetime,
SEQUENCE int
)
insert into @INSTALLMENTS_TABLE (ID, AMOUNT, RECEIPTAMOUNT, DATE, SEQUENCE)
select coalesce(ID, newID()), AMOUNT, RECEIPTAMOUNT, DATE, SEQUENCE from dbo.UFN_REVENUEBATCH_GETINSTALLMENTS_FROMITEMLISTXML(@INSTALLMENTS)
if (select count(*) from @INSTALLMENTS_TABLE) < 1
raiserror('BBERR_IRREGULARINSTALLMENTCOUNT', 13, 1);
if dbo.UFN_INSTALLMENT_DATESOVERLAP(@INSTALLMENTS) = 1
raiserror('BBERR_DATESOVERLAP',13,1);
if exists(select ID from @INSTALLMENTS_TABLE where AMOUNT < 0)
raiserror('BBERR_INSTALLMENTAMOUNTGREATERTHANZERO', 13, 1);
declare @REVENUEDATELASTTIME as datetime
select @REVENUEDATELASTTIME = dbo.UFN_DATE_GETLATESTTIME(@DATE)
--The "GETLATESTTIME" date function has been inlined here for performance (the part with "dateadd(ms, -003...")...
if exists(select ID from @INSTALLMENTS_TABLE where @REVENUEDATELASTTIME > dateadd(ms, -003, dateadd(d, 1, cast(cast([DATE] as date) as datetime))))
raiserror('BBERR_INSTALLMENTBEFOREINSTALLMENTPLANDATE', 13, 1);
if (select coalesce(sum(AMOUNT), 0) from @INSTALLMENTS_TABLE) <> @AMOUNT
begin
raiserror('BBERR_INSTALLMENTAMOUNTSUMGREATERTHANINSTALLMENTPLAN', 13, 1);
end
end
end