USP_DATAFORMTEMPLATE_ADD_RECURRINGGIFTINSTALLMENTSKIP

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier INOUT
@INSTALLMENTCONTEXT nvarchar(36) IN
@CHANGEAGENTID uniqueidentifier IN
@INSTALLMENTDATE datetime IN
@INSTALLMENTS xml IN
@SKIPPEDINSTALLMENTS tinyint IN
@SKIPREASONID uniqueidentifier IN

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_ADD_RECURRINGGIFTINSTALLMENTSKIP
(
     @ID uniqueidentifier = null output,
     @INSTALLMENTCONTEXT nvarchar(36),
     @CHANGEAGENTID uniqueidentifier = null,
     @INSTALLMENTDATE datetime = null,   
     @INSTALLMENTS xml = null,
     @SKIPPEDINSTALLMENTS tinyint = 1,  
     @SKIPREASONID uniqueidentifier = null
)    
as

set nocount on;

if @ID is null
    set @ID = newid()

if @CHANGEAGENTID is null  
    exec dbo.USP_CHANGEAGENT_GETORCREATECHANGEAGENT @CHANGEAGENTID output

declare @CURRENTDATE datetime
set @CURRENTDATE = getdate()

-- parse
declare @REVENUEID uniqueidentifier = cast(substring(@INSTALLMENTCONTEXT,1,36) as uniqueidentifier);    
set @INSTALLMENTDATE = cast(substring(@INSTALLMENTCONTEXT,38,10) as date);  
declare @INSTALLMENTID uniqueidentifier = null
if len(@INSTALLMENTCONTEXT) > 48
  set @INSTALLMENTID = cast(substring(@INSTALLMENTCONTEXT,49,36) as uniqueidentifier);  

-- use the date of the last (newest) future installment to be skipped to create all other future expected installments that will be skipped
declare @NEWESTINSTALLMENTDATE date;

select @NEWESTINSTALLMENTDATE = max(T.c.value('(DATE)[1]', 'date'))
from @INSTALLMENTS.nodes('/INSTALLMENTS/ITEM') T(c)

begin try
  -- add the installments to be skipped to the write-off table
  exec dbo.USP_RECURRINGGIFT_ADDSKIPANDWRITEOFF
        @ID output,
        @REVENUEID,
        @CHANGEAGENTID,
        @CURRENTDATE,
        null,
        @SKIPREASONID,
        0,
        @INSTALLMENTS,
        @NEWESTINSTALLMENTDATE,
        1

end try
begin catch
    exec dbo.USP_RAISE_ERROR
    return 1
end catch

return 0