USP_DATAFORMTEMPLATE_EDITLOAD_REVENUE_INSTALLMENTS_2

Parameters

Parameter Parameter Type Mode Description
@ID uniqueidentifier IN
@DATALOADED bit INOUT
@AMOUNT money INOUT
@RESCHEDULEBALANCE money INOUT
@PLEDGEDATE datetime INOUT
@LASTPAYMENTSEQUENCE int INOUT
@FREQUENCYCODE tinyint INOUT
@NUMBEROFINSTALLMENTS int INOUT
@STARTDATE datetime INOUT
@INSTALLMENTS xml INOUT
@TSLONG bigint INOUT
@SPLITS xml INOUT
@SINGLEDESIGNATIONID uniqueidentifier INOUT
@TRANSACTIONTYPECODE tinyint INOUT
@LASTUNPAIDROW int INOUT
@TRANSACTIONCURRENCYID uniqueidentifier INOUT
@ISMEMBERSHIPPLEDGE bit INOUT
@TRANSACTIONHASDESIGNATIONS bit INOUT
@HASPOSTEDPAYMENTS bit INOUT
@HASPOSTEDWRITEOFFS bit INOUT
@HASPAYMENTS bit INOUT
@ADJPAYMENT_DATE datetime INOUT
@ADJPAYMENT_POSTDATE datetime INOUT
@ADJPAYMENT_REASONCODEID uniqueidentifier INOUT
@ADJPAYMENT_DETAILS nvarchar(255) INOUT
@BENEFITVALUE money INOUT
@INSTALLMENTAMOUNT money INOUT
@ORIGINALINSTALLMENTAMOUNT money INOUT
@ISPOSTED bit INOUT
@ISGRANTAWARD bit INOUT
@TOTALAMOUNTWRITTENOFF money INOUT

Definition

Copy

CREATE procedure dbo.USP_DATAFORMTEMPLATE_EDITLOAD_REVENUE_INSTALLMENTS_2 (
  @ID uniqueidentifier
  ,@DATALOADED bit = 0 output
  ,@AMOUNT money = null output
  ,@RESCHEDULEBALANCE money = null output
  ,@PLEDGEDATE datetime = null output
  ,@LASTPAYMENTSEQUENCE int = null output
  ,@FREQUENCYCODE tinyint = null output
  ,@NUMBEROFINSTALLMENTS int = null output
  ,@STARTDATE datetime = null output
  ,@INSTALLMENTS xml = null output
  ,@TSLONG bigint = 0 output
  ,@SPLITS xml = null output
  ,@SINGLEDESIGNATIONID uniqueidentifier = null output
  ,@TRANSACTIONTYPECODE tinyint = null output
  ,@LASTUNPAIDROW int = null output
  ,@TRANSACTIONCURRENCYID uniqueidentifier = null output
  ,@ISMEMBERSHIPPLEDGE bit = null output
  ,@TRANSACTIONHASDESIGNATIONS bit = null output
  ,@HASPOSTEDPAYMENTS bit = null output
  ,@HASPOSTEDWRITEOFFS bit = null output
  ,@HASPAYMENTS bit = null output
  ,@ADJPAYMENT_DATE datetime = null output
  ,@ADJPAYMENT_POSTDATE datetime = null output
  ,@ADJPAYMENT_REASONCODEID uniqueidentifier = null output
  ,@ADJPAYMENT_DETAILS nvarchar(255) = null output
  ,@BENEFITVALUE money = null output
  ,@INSTALLMENTAMOUNT money = null output
  ,@ORIGINALINSTALLMENTAMOUNT money = null output
  ,@ISPOSTED bit = null output
  ,@ISGRANTAWARD bit = null output
  ,@TOTALAMOUNTWRITTENOFF money = null output
  )
as
begin
  set nocount on;
  set @DATALOADED = 0;
  set @TSLONG = 0;

  select @DATALOADED = 1
    ,@AMOUNT = FINANCIALTRANSACTION.TRANSACTIONAMOUNT
    ,@PLEDGEDATE = cast(FINANCIALTRANSACTION.date as datetime)
    ,@FREQUENCYCODE = REVENUESCHEDULE.FREQUENCYCODE
    ,@NUMBEROFINSTALLMENTS = REVENUESCHEDULE.NUMBEROFINSTALLMENTS
    ,@TRANSACTIONTYPECODE = FINANCIALTRANSACTION.TYPECODE
    ,@TRANSACTIONCURRENCYID = FINANCIALTRANSACTION.TRANSACTIONCURRENCYID
    ,@ISPOSTED = case FINANCIALTRANSACTION.POSTSTATUSCODE when 2 then 1 else 0 end
    ,@ISGRANTAWARD = case FINANCIALTRANSACTION.TYPECODE when 6 then 1 else 0 end
    ,@ISMEMBERSHIPPLEDGE = case when FINANCIALTRANSACTION.TYPECODE = 15 then 1 else 0 end
  from dbo.FINANCIALTRANSACTION
  inner join dbo.REVENUE_EXT on FINANCIALTRANSACTION.ID = REVENUE_EXT.ID
  inner join dbo.REVENUESCHEDULE on FINANCIALTRANSACTION.ID = REVENUESCHEDULE.ID
  where FINANCIALTRANSACTION.ID = @ID
    and FINANCIALTRANSACTION.DELETEDON is null;

  select @INSTALLMENTAMOUNT = PLEDGEINSTALLMENTOPTION.INSTALLMENTAMOUNT
  from dbo.FINANCIALTRANSACTION
  left outer join dbo.PLEDGEINSTALLMENTOPTION on FINANCIALTRANSACTION.ID = PLEDGEINSTALLMENTOPTION.ID 
  where FINANCIALTRANSACTION.ID = @ID and FINANCIALTRANSACTION.DELETEDON is null

  set @ORIGINALINSTALLMENTAMOUNT = @INSTALLMENTAMOUNT;

  select @TOTALAMOUNTWRITTENOFF = isnull(SUM(I.AMOUNTWRITTENOFF) ,0)
    from dbo.UFN_INSTALLMENT_GETINFO_BULK() I
    where I.REVENUEID = @ID


  if @DATALOADED = 1
  begin
    set @TRANSACTIONHASDESIGNATIONS = dbo.UFN_FINANCIALTRANSACTION_HASDESIGNATIONS(@ID)
    set @HASPAYMENTS = dbo.UFN_PLEDGE_PAYMENTSEXIST(@ID);

    if @HASPAYMENTS = 0
      set @HASPOSTEDPAYMENTS = 0 --if there are no payments, then there can't be posted payments
    else
      set @HASPOSTEDPAYMENTS = dbo.UFN_REVENUE_HASPOSTEDPAYMENTS(@ID)

    set @HASPOSTEDWRITEOFFS = dbo.UFN_REVENUE_HASPOSTEDWRITEOFFS(@ID);

    --Find the first and last installment that have a full balance/no payments
    select @RESCHEDULEBALANCE = COALESCE(SUM(INSTALLMENT.BALANCE), 0)
      ,@STARTDATE = COALESCE(MIN(INSTALLMENT.date), @PLEDGEDATE)
      ,@LASTPAYMENTSEQUENCE = COALESCE(MAX(INSTALLMENT.SEQUENCE), 0)
      ,@NUMBEROFINSTALLMENTS = COUNT(INSTALLMENT.ID)
    from dbo.UFN_INSTALLMENT_GETINSTALLMENTS_2(@ID) INSTALLMENT
    where INSTALLMENT.BALANCE > 0;

    set @LASTUNPAIDROW = @LASTPAYMENTSEQUENCE;
    set @INSTALLMENTS = (
        select I.ID
          ,I.[DATE]
          ,I.TRANSACTIONAMOUNT AMOUNT
          ,I. TRANSACTIONRECEIPTAMOUNT as RECEIPTAMOUNT
          ,(I.TRANSACTIONAMOUNT - (I.AMOUNTPAID + I.AMOUNTWRITTENOFF)) as BALANCE
     ,(I.AMOUNTPAID + I.AMOUNTWRITTENOFF) as APPLIED
          ,I.SEQUENCE
          ,I.PAYMENTCOUNT
          ,I.WRITEOFFCOUNT
          ,I.AMOUNTWRITTENOFF
          ,(
            select SPLITINFO.ID
              ,SPLITINFO.DESIGNATIONID
              ,SPLITINFO.TRANSACTIONAMOUNT AMOUNT
              ,(SPLITINFO.AMOUNTPAID + SPLITINFO.AMOUNTWRITTENOFF) APPLIED
              ,SPLITINFO.TRANSACTIONCURRENCYID
              ,SPLITINFO.REVENUESPLITID
              ,SPLITINFO.PAYMENTCOUNT
              ,SPLITINFO.WRITEOFFCOUNT
              ,(
                select SPLITPAYMENT.ID
                      ,SPLITPAYMENT.AMOUNT
                      ,I.REVENUEID as TRANSACTIONID
                      ,SPLITINFO.REVENUESPLITID as LINEITEMID
                from dbo.INSTALLMENTSPLITPAYMENT SPLITPAYMENT
                where SPLITPAYMENT.INSTALLMENTSPLITID = SPLITINFO.ID
                for xml raw('ITEM')
                  ,type
                  ,elements
                  ,binary BASE64
               ) as INSTALLMENTSPLITPAYMENTS
              ,(
                select SPLITWRITEOFF.ID
                      ,SPLITWRITEOFF.AMOUNT
                      ,I.REVENUEID as TRANSACTIONID
                      ,SPLITINFO.REVENUESPLITID as LINEITEMID
                from dbo.INSTALLMENTSPLITWRITEOFF SPLITWRITEOFF
                where SPLITWRITEOFF.INSTALLMENTSPLITID = SPLITINFO.ID
                for xml raw('ITEM')
                  ,type
                  ,elements
                  ,binary BASE64
               ) as INSTALLMENTSPLITWRITEOFFS
            from dbo.UFN_INSTALLMENT_GETINSTALLMENTSPLITINFO_BULK() SPLITINFO
            left join dbo.DESIGNATION on DESIGNATION.ID = SPLITINFO.DESIGNATIONID
            where SPLITINFO.INSTALLMENTID = I.ID
            order by DESIGNATION.VANITYNAME
            for xml raw('ITEM')
              ,type
              ,elements
              ,binary BASE64
            ) as INSTALLMENTSPLITS
          ,I.BASECURRENCYID
          ,I.ORGANIZATIONAMOUNT
          ,I.ORGANIZATIONEXCHANGERATEID
          ,I.TRANSACTIONCURRENCYID
          ,I.BASEEXCHANGERATEID
        from dbo.UFN_INSTALLMENT_GETINFO_BULK() I
        where I.REVENUEID = @ID
        order by I.[DATE]
        for xml raw('ITEM')
          ,type
          ,elements
          ,root('INSTALLMENTS')
          ,binary BASE64
        );
    set @SPLITS = (
        select SPLIT.ID
          ,SPLIT.DESIGNATIONID
          ,SPLIT.TRANSACTIONAMOUNT as AMOUNT
          ,SPLIT.TRANSACTIONCURRENCYID
        from dbo.UFN_REVENUE_GETSPLITS_2(@ID) SPLIT
        for xml raw('ITEM')
          ,type
          ,elements
          ,root('SPLITS')
          ,binary BASE64
        );
  end

  if @INSTALLMENTS is not null
    select @TSLONG = max(TSLONG)
    from dbo.INSTALLMENT
    where INSTALLMENT.REVENUEID = @ID;
  else
    set @TSLONG = 0;

  select
    @BENEFITVALUE = sum(REVENUEBENEFIT.TOTALVALUE)
  from dbo.REVENUEBENEFIT
  where REVENUEBENEFIT.REVENUEID = @ID

  return 0;
end